Move addon to nested directory structure (#21)
This commit is contained in:
parent
cc62280ae5
commit
74a9232d94
3 changed files with 35 additions and 36 deletions
309
ATMe/ATMe.lua
Executable file
309
ATMe/ATMe.lua
Executable file
|
@ -0,0 +1,309 @@
|
|||
local f, ATMe, events = CreateFrame("Frame"), {}, {}
|
||||
|
||||
StaticPopupDialogs["REPAIR_ALERT"] = {
|
||||
text = "Remember to repair your gear",
|
||||
button1 = "Ok",
|
||||
timeout = 10,
|
||||
whileDead = false,
|
||||
hideOnEscape = true,
|
||||
preferredIndex = 3
|
||||
}
|
||||
|
||||
StaticPopupDialogs["GOLIATH_MISSING"] = {
|
||||
text = "Option to repair goliath not found; move closer",
|
||||
button1 = "Ok",
|
||||
OnAccept = function()
|
||||
C_GossipInfo.CloseGossip()
|
||||
end,
|
||||
timeout = 5,
|
||||
whileDead = false,
|
||||
hideOnEscape = true,
|
||||
preferredIndex = 3
|
||||
}
|
||||
|
||||
SLASH_ATME1 = "/ta"
|
||||
|
||||
ATMe.keyItemID = 180653
|
||||
ATMe.taunts = {
|
||||
[56222] = true, -- Dark Command
|
||||
[51399] = true, -- Death Grip
|
||||
[185245] = true, -- Torment
|
||||
[6795] = true, -- Growl
|
||||
[115546] = true, -- Provke
|
||||
[62124] = true, -- Hand of Reckoning
|
||||
[355] = true, -- Taunt
|
||||
|
||||
[1161] = true, -- Challenging Shout
|
||||
[204079] = true -- Final Stand
|
||||
}
|
||||
ATMe.slots = {
|
||||
"HeadSlot", "ShoulderSlot", "ChestSlot", "WristSlot", "HandsSlot",
|
||||
"WaistSlot", "LegsSlot", "FeetSlot", "MainHandSlot", "SecondaryHandSlot"
|
||||
}
|
||||
inspectInitialized = false
|
||||
local InspectFontStrings = {}
|
||||
|
||||
function ATMe.SlashHandler(cmd)
|
||||
if cmd == "frames" then
|
||||
ATMe.moveFrames()
|
||||
end
|
||||
end
|
||||
|
||||
function ATMe.OnEvent(self, event, ...)
|
||||
events[event](self, ...)
|
||||
end
|
||||
|
||||
function GetUnitFromGuid(guid)
|
||||
if UnitGUID("target") == guid then return "target"
|
||||
elseif IsInRaid() then
|
||||
for i = 1, MAX_RAID_MEMBERS do
|
||||
if UnitGUID("raid"..i) == guid then return "raid"..i end
|
||||
end
|
||||
elseif IsInGroup() then
|
||||
for i = 1, MAX_PARTY_MEMBERS do
|
||||
if UnitGUID("party"..i) == guid then return "party"..i end
|
||||
end
|
||||
else return nil end
|
||||
end
|
||||
|
||||
function events:INSPECT_READY(guid)
|
||||
if not inspectInitialized and InspectFrame then
|
||||
InspectFontStrings["itemLevel"] = InspectFrame:CreateFontString(nil, "OVERLAY")
|
||||
InspectFontStrings["itemLevel"]:SetPoint("BOTTOMRIGHT", -5, 5)
|
||||
InspectFontStrings["itemLevel"]:SetFont("Fonts\\FRIZQT__.ttf", 24, "OUTLINE")
|
||||
InspectFontStrings["itemLevel"]:SetTextColor(1, 1, 1)
|
||||
|
||||
inspectInitialized = true
|
||||
end
|
||||
|
||||
|
||||
unit = GetUnitFromGuid(guid)
|
||||
if unit and CanInspect(unit) and inspectInitialized then
|
||||
local itemLevel = C_PaperDollInfo.GetInspectItemLevel(unit)
|
||||
InspectFontStrings["itemLevel"]:SetText(itemLevel)
|
||||
end
|
||||
end
|
||||
|
||||
function events:GOSSIP_SHOW()
|
||||
local isNecroticWake = GetZoneText() == 'The Necrotic Wake'
|
||||
local isSteward = GetUnitName('npc') == 'Steward'
|
||||
|
||||
if isNecroticWake and isSteward then ATMe.activateGoliath() end
|
||||
end
|
||||
|
||||
function events:CHAT_MSG_PARTY_LEADER(message, ...)
|
||||
if message == '!keys' then
|
||||
ATMe.announceKey()
|
||||
end
|
||||
end
|
||||
|
||||
function events:CHAT_MSG_PARTY(message, ...)
|
||||
if message == '!keys' then
|
||||
ATMe.announceKey()
|
||||
end
|
||||
end
|
||||
|
||||
function events:COMBAT_LOG_EVENT_UNFILTERED(...)
|
||||
ATMe.announceTaunts(CombatLogGetCurrentEventInfo())
|
||||
end
|
||||
|
||||
function events:MERCHANT_SHOW(...)
|
||||
-- Sell all gray items
|
||||
ATMe.sellGrayItems()
|
||||
|
||||
-- Repair if we need to and merchant allows it
|
||||
if CanMerchantRepair() and ATMe.needsRepair() then
|
||||
RepairAllItems(CanGuildBankRepair())
|
||||
print("Your items have been repaired")
|
||||
end
|
||||
end
|
||||
|
||||
function events:PLAYER_LOGIN(...)
|
||||
-- found from some forums
|
||||
local b=ActionButton8 _MH=_MH or(b:SetAttribute("*type5","macro")or SecureHandlerWrapScript(b,"PreClick",b,'Z=IsAltKeyDown()and 0 or(Z or 0)%8+1 self:SetAttribute("macrotext5","/wm [nomod]"..Z)'))or 1
|
||||
|
||||
QuickJoinToastButton:Hide()
|
||||
ChatFrameChannelButton:Hide()
|
||||
ChatFrameMenuButton:Hide()
|
||||
ChatFrame1ButtonFrame:Hide()
|
||||
|
||||
-- ChatFrame1.ScrollBar:Hide()
|
||||
-- ChatFrame1.ScrollToBottomButton:Hide()
|
||||
|
||||
ChatFrame1:SetWidth(400)
|
||||
ChatFrame1:SetHeight(150)
|
||||
|
||||
ChatFrame1:ClearAllPoints()
|
||||
ChatFrame1:SetClampRectInsets(0, 0, 0, 0)
|
||||
ChatFrame1:SetPoint("BOTTOMLEFT", UIParent, "BOTTOMLEFT", 0, 0)
|
||||
|
||||
ChatFrame1EditBox:ClearAllPoints()
|
||||
ChatFrame1EditBox:SetPoint("BOTTOMLEFT", ChatFrame1, "TOPLEFT", 0, 0)
|
||||
ChatFrame1EditBox:SetPoint("RIGHT", ChatFrame1, 0, 0)
|
||||
|
||||
ChatFrame1:SetUserPlaced(true)
|
||||
end
|
||||
|
||||
function events:PLAYER_REGEN_DISABLED(...)
|
||||
StopwatchFrame:Show()
|
||||
Stopwatch_Clear()
|
||||
Stopwatch_Play()
|
||||
end
|
||||
|
||||
function events:PLAYER_REGEN_ENABLED(...)
|
||||
Stopwatch_Pause()
|
||||
end
|
||||
|
||||
function events:PLAYER_DEAD(...)
|
||||
Stopwatch_Pause()
|
||||
end
|
||||
|
||||
function events:PLAYER_ROLES_ASSIGNED(...)
|
||||
if ATMe.amTankInParty() then ATMe.markSelfSquare() end
|
||||
end
|
||||
|
||||
function events:PLAYER_UPDATE_RESTING(...)
|
||||
-- Notify that we should repair
|
||||
if ATMe.needsRepair() then StaticPopup_Show("REPAIR_ALERT") end
|
||||
end
|
||||
|
||||
function ATMe.moveFrames()
|
||||
print("Moving frames to ATMe default locations")
|
||||
PlayerFrame:ClearAllPoints()
|
||||
PlayerFrame:SetPoint("CENTER",UIParent,-350,-225)PlayerFrame:SetUserPlaced(true)
|
||||
|
||||
TargetFrame:ClearAllPoints()
|
||||
TargetFrame:SetPoint("CENTER",UIParent,350,-225)TargetFrame:SetUserPlaced(true)
|
||||
|
||||
FocusFrame:ClearAllPoints()
|
||||
FocusFrame:SetPoint("CENTER",UIParent,-350,150)TargetFrame:SetUserPlaced(true)
|
||||
end
|
||||
|
||||
function ATMe.announceKey()
|
||||
for bag = 0, NUM_BAG_SLOTS do
|
||||
for slot = 1, GetContainerNumSlots(bag)do
|
||||
itemID = GetContainerItemID(bag, slot)
|
||||
if GetContainerItemID(bag, slot) == ATMe.keyItemID then
|
||||
local link = GetContainerItemLink(bag, slot)
|
||||
SendChatMessage(link, "PARTY")
|
||||
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ATMe.announceTaunts(...)
|
||||
event = select(2, ...)
|
||||
spellId = select(12, ...)
|
||||
|
||||
if event ~= 'SPELL_CAST_SUCCESS' or ATMe.taunts[spellId] ~= true then
|
||||
return
|
||||
end
|
||||
|
||||
srcName = select(5, ...)
|
||||
destName = select(9, ...)
|
||||
spellName = select(13, ...)
|
||||
|
||||
message = format("|cffFF0000TAUNT:|r %s used %s", srcName, spellName)
|
||||
if destName ~= nil then
|
||||
message = format("%s on %s", message, destName)
|
||||
end
|
||||
|
||||
print(message)
|
||||
end
|
||||
|
||||
function ATMe.activateGoliath()
|
||||
options = C_GossipInfo.GetOptions()
|
||||
|
||||
found = false
|
||||
for k, v in pairs(options) do
|
||||
if v['name'] == 'Can you reactivate this goliath?' then
|
||||
found = true
|
||||
C_GossipInfo.SelectOption(k)
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if not found then StaticPopup_Show("GOLIATH_MISSING") end
|
||||
end
|
||||
|
||||
function ATMe.needsRepair()
|
||||
for slot = 1, #ATMe.slots do
|
||||
local id = GetInventorySlotInfo(ATMe.slots[slot])
|
||||
local cur, max = GetInventoryItemDurability(id)
|
||||
|
||||
if max and cur ~= max then return true end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
function ATMe.sellGrayItems()
|
||||
sellTotal = 0
|
||||
for bag = 0, NUM_BAG_SLOTS do
|
||||
for slot = 1, GetContainerNumSlots(bag) do
|
||||
local _, count, _, quality, _, _, link = GetContainerItemInfo(bag, slot)
|
||||
if quality and quality == 0 then
|
||||
local price = select(11, GetItemInfo(link))
|
||||
sellTotal = sellTotal + (price * count)
|
||||
print("Selling "..count.."x"..link)
|
||||
UseContainerItem(bag, slot)
|
||||
end
|
||||
end
|
||||
end
|
||||
if sellTotal ~= 0 then
|
||||
print("Made "..GetCoinTextureString(sellTotal))
|
||||
end
|
||||
end
|
||||
|
||||
function ATMe.amTankInParty()
|
||||
local isParty = UnitInRaid("player") == nil
|
||||
local isTank = UnitGroupRolesAssigned("player") == "TANK"
|
||||
local notAlreadyMarked = GetRaidTargetIndex("player") == nil
|
||||
|
||||
return isParty and isTank and notAlreadyMarked
|
||||
end
|
||||
|
||||
function ATMe.markSelfSquare()
|
||||
SetRaidTarget("player", 6)
|
||||
end
|
||||
|
||||
-- Register events
|
||||
for event, method in pairs(events) do
|
||||
f:RegisterEvent(event)
|
||||
end
|
||||
f:SetScript("OnEvent", ATMe.OnEvent)
|
||||
|
||||
--[[ hooksecurefunc("TalkingHeadFrame_PlayCurrent", function()
|
||||
TalkingHeadFrame:Hide()
|
||||
end) ]]--
|
||||
|
||||
function PaperDollFrame_SetMovementSpeed(statFrame, unit)
|
||||
statFrame.wasSwimming = nil
|
||||
statFrame.unit = unit
|
||||
MovementSpeed_OnUpdate(statFrame)
|
||||
|
||||
statFrame.onEnterFunc = MovementSpeed_OnEnter
|
||||
statFrame:SetScript("OnUpdate", MovementSpeed_OnUpdate)
|
||||
statFrame:Show()
|
||||
end
|
||||
|
||||
CharacterStatsPane.statsFramePool.resetterFunc =
|
||||
function(pool, frame)
|
||||
frame:SetScript("OnUpdate", nil)
|
||||
frame.onEnterFunc = nil
|
||||
frame.UpdateTooltip = nil
|
||||
FramePool_HideAndClearAnchors(pool, frame)
|
||||
end
|
||||
table.insert(PAPERDOLL_STATCATEGORIES[1].stats, { stat = "MOVESPEED"})
|
||||
|
||||
for i = 1, 7 do
|
||||
local chat = _G["ChatFrame"..i]
|
||||
local font, size = chat:GetFont()
|
||||
chat:SetFont(font, size, "THINOUTLINE")
|
||||
chat:SetShadowOffset(0, 0)
|
||||
chat:SetShadowColor(0, 0, 0, 0)
|
||||
end
|
||||
|
||||
SlashCmdList["ATME"] = ATMe.SlashHandler
|
6
ATMe/ATMe.toc
Executable file
6
ATMe/ATMe.toc
Executable file
|
@ -0,0 +1,6 @@
|
|||
## Interface: 90005
|
||||
## Title: ATMe
|
||||
## Author: Andrew Tomaka
|
||||
## Version: 0.1
|
||||
|
||||
ATMe.lua
|
Loading…
Add table
Add a link
Reference in a new issue