Merge LegionWA submodule into main
This commit is contained in:
1
LegionWA/.gitignore
vendored
Normal file
1
LegionWA/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.vscode
|
42
LegionWA/AutoQuest/Event.lua
Normal file
42
LegionWA/AutoQuest/Event.lua
Normal file
@@ -0,0 +1,42 @@
|
||||
-- QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW
|
||||
function(e)
|
||||
if e == "QUEST_POI_UPDATE" then
|
||||
CloseGossip()
|
||||
elseif e == "QUEST_DETAIL" then
|
||||
AcceptQuest()
|
||||
elseif e == "QUEST_COMPLETE" then
|
||||
if GetNumQuestChoices() <= 1 then
|
||||
GetQuestReward(1)
|
||||
end
|
||||
elseif e == "GOSSIP_SHOW" then
|
||||
local quests = GetNumGossipAvailableQuests()
|
||||
local completedQuests = GetNumGossipActiveQuests()
|
||||
local options = GetNumGossipOptions()
|
||||
if completedQuests > 0 and options == 0 then
|
||||
for i = 1, completedQuests do
|
||||
SelectGossipActiveQuest(i)
|
||||
end
|
||||
end
|
||||
if quests > 0 and options == 0 then
|
||||
SelectGossipAvailableQuest(1)
|
||||
end
|
||||
if options == 1 and quests + completedQuests == 0 then
|
||||
SelectGossipOption(1)
|
||||
end
|
||||
elseif e == "QUEST_GREETING" then
|
||||
local quests = GetNumGossipAvailableQuests()
|
||||
local completedQuests = GetNumGossipActiveQuests()
|
||||
if completedQuests > 0 then
|
||||
for i = 1, completedQuests do
|
||||
SelectActiveQuest(1)
|
||||
end
|
||||
end
|
||||
if quests > 0 then
|
||||
SelectAvailableQuest(1)
|
||||
end
|
||||
elseif e == "QUEST_PROGRESS" then
|
||||
if IsQuestCompletable(i) then
|
||||
CompleteQuest()
|
||||
end
|
||||
end
|
||||
end
|
1
LegionWA/AutoQuest/Export
Normal file
1
LegionWA/AutoQuest/Export
Normal file
File diff suppressed because one or more lines are too long
4
LegionWA/BagBoEGlow/Event.lua
Normal file
4
LegionWA/BagBoEGlow/Event.lua
Normal file
@@ -0,0 +1,4 @@
|
||||
-- BAG_UPDATE
|
||||
function(e)
|
||||
aura_env.update()
|
||||
end
|
23
LegionWA/BagBoEGlow/Init.lua
Normal file
23
LegionWA/BagBoEGlow/Init.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
local function getItemLink(container, slot) return select(7, GetContainerItemInfo(container, slot)) or "" end
|
||||
local function getBindType(container, slot) return select(14, GetItemInfo(getItemLink(container, slot))) or 0 end
|
||||
local function isBoe(container, slot) return getBindType(container, slot) == 1 end
|
||||
|
||||
local showGlow = function(container, slot)
|
||||
ActionButton_ShowOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot])
|
||||
end
|
||||
local hideGlow = function(container, slot)
|
||||
ActionButton_HideOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot])
|
||||
end
|
||||
|
||||
aura_env.update = function()
|
||||
for container = 0, 4 do
|
||||
for slot = 1, GetContainerNumSlots(container) do
|
||||
print(C_Item.IsBound(ItemLocation:CreateFromBagAndSlot(container, slot)))
|
||||
if isBoe(container, slot) then
|
||||
showGlow(container, slot)
|
||||
else
|
||||
hideGlow(container, slot)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
18
LegionWA/BagBoEGlow/README
Normal file
18
LegionWA/BagBoEGlow/README
Normal file
@@ -0,0 +1,18 @@
|
||||
Haven't found a way of determining whether an item is soulbound or not without tooltip scanning which I don't want to do
|
||||
|
||||
local cTip = CreateFrame("GameTooltip","PrivTooltip",nil,"GameTooltipTemplate")
|
||||
local function IsSoulbound(bag, slot)
|
||||
cTip:SetOwner(UIParent, "ANCHOR_NONE")
|
||||
cTip:SetBagItem(bag, slot)
|
||||
cTip:Show()
|
||||
for i = 1,cTip:NumLines() do
|
||||
if(_G[name.."TooltipTextLeft"..i]:GetText()==ITEM_SOULBOUND) then
|
||||
cTip:Hide()
|
||||
return true
|
||||
end
|
||||
end
|
||||
cTip:Hide()
|
||||
return false
|
||||
end
|
||||
|
||||
Some guy says this is good
|
20
LegionWA/CDs/Color.lua
Normal file
20
LegionWA/CDs/Color.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
function(progress, r1, g1, b1, a1, r2, g2, b2, a2)
|
||||
-- if aura_env.state.IsActive then
|
||||
-- ActionButton_ShowOverlayGlow(aura_env.region.icon)
|
||||
-- else
|
||||
-- ActionButton_HideOverlayGlow(aura_env.region.icon)
|
||||
-- end
|
||||
|
||||
if aura_env.statee.IsActive then
|
||||
aura_env.region.icon:SetDesaturated(false)
|
||||
return r1, g1, b1, a1
|
||||
end
|
||||
|
||||
if aura_env.IsOnCooldown then
|
||||
aura_env.region.icon:SetDesaturated(true)
|
||||
return r1, g1, b1, a1
|
||||
end
|
||||
|
||||
aura_env.region.icon:SetDesaturated(false)
|
||||
return r2, g2, b2, 0.6
|
||||
end
|
4
LegionWA/CDs/Event.lua
Normal file
4
LegionWA/CDs/Event.lua
Normal file
@@ -0,0 +1,4 @@
|
||||
function(allstates)
|
||||
aura_env.HandleEvent(allstates)
|
||||
return true
|
||||
end
|
94
LegionWA/CDs/Init.lua
Normal file
94
LegionWA/CDs/Init.lua
Normal file
@@ -0,0 +1,94 @@
|
||||
local CooldownType = {
|
||||
New = function(self)
|
||||
local o = {}
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
return o
|
||||
end,
|
||||
}
|
||||
|
||||
local NullType = CooldownType:New()
|
||||
NullType.GetActiveInfo = function(self) return false, 0, 0 end
|
||||
local TotemType = CooldownType:New()
|
||||
TotemType.GetActiveInfo = function(self)
|
||||
for i = 1, 4 do
|
||||
local present, name, start, duration = GetTotemInfo(i)
|
||||
if present and name == self.name then return true, start, duration end
|
||||
end
|
||||
return false, 0, 0
|
||||
end
|
||||
|
||||
local Cooldown = {
|
||||
New = function(self, type, spellid, keybind)
|
||||
local o = {
|
||||
["type"] = type,
|
||||
["spellid"] = spellid,
|
||||
["name"] = GetSpellInfo(spellid),
|
||||
["icon"] = GetSpellTexture(spellid),
|
||||
["keybind"] = keybind,
|
||||
}
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
return o
|
||||
end,
|
||||
|
||||
GetCooldownInfo = function(self)
|
||||
local start, duration = GetSpellCooldown(self.spellid)
|
||||
return start > 0 and duration > aura_env.gcdThreshold, start, duration
|
||||
end,
|
||||
|
||||
GetActiveInfo = function(self) return self.type:GetActiveInfo() end,
|
||||
}
|
||||
|
||||
aura_env.cooldowns = {
|
||||
[5394] = Cooldown:New(TotemType, 5394, "C"), -- Healing Stream Totem
|
||||
[2484] = Cooldown:New(TotemType, 2484, "SY"), -- Earthbind Totem
|
||||
[8143] = Cooldown:New(TotemType, 8143, "S5"), -- Tremor Totem
|
||||
[8177] = Cooldown:New(TotemType, 8177, "5"), -- Grounding Totem
|
||||
[108273] = Cooldown:New(TotemType, 108273, "S4"), -- Windwalk Totem
|
||||
[108270] = Cooldown:New(TotemType, 108270, "SF"), -- Stone Bulwark Totem
|
||||
}
|
||||
aura_env.gcdThreshold = 1.5
|
||||
|
||||
aura_env.Update = function(allstates, cd)
|
||||
local state = allstates[cd.spellid] or {}
|
||||
|
||||
state.IsOnCooldown = cd:GetCooldownInfo()
|
||||
state.IsActive = cd:GetActiveInfo()
|
||||
state.Keybind = cd.keybind
|
||||
|
||||
if state.IsOnCooldown and not state.IsActive then
|
||||
local _, start, duration = cd:GetCooldownInfo()
|
||||
state.progressType = "timed"
|
||||
state.duration = duration
|
||||
state.expirationTime = start + duration
|
||||
elseif state.IsOnCooldown and state.IsActive then
|
||||
local _, start, duration = cd:GetActiveInfo()
|
||||
state.progressType = "timed"
|
||||
state.duration = duration
|
||||
state.expirationTime = start + duration
|
||||
end
|
||||
|
||||
state.changed = true
|
||||
state.show = true
|
||||
state.name = cd.name
|
||||
state.icon = cd.icon
|
||||
state.spellid = cd.spellid
|
||||
allstates[cd.spellid] = state
|
||||
end
|
||||
|
||||
aura_env.UpdateAll = function(allstates)
|
||||
for _, v in pairs(aura_env.cooldowns) do
|
||||
aura_env.Update(allstates, v)
|
||||
end
|
||||
end
|
||||
|
||||
aura_env.HandleEvent = function(allstates)
|
||||
-- TODO: Handle events better
|
||||
-- On cooldown begin -> trigger update on relevant spell
|
||||
-- On totem die -> same
|
||||
-- On buff remove
|
||||
-- On debuff remove
|
||||
-- On... Whatever else might happen
|
||||
aura_env.UpdateAll(allstates)
|
||||
end
|
5
LegionWA/CooldownAlert/Event.lua
Normal file
5
LegionWA/CooldownAlert/Event.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
-- ACTIONBAR_UPDATE_COOLDOWN
|
||||
function(allstates, e)
|
||||
aura_env.processEvent(allstates)
|
||||
return true
|
||||
end
|
1
LegionWA/CooldownAlert/Export
Normal file
1
LegionWA/CooldownAlert/Export
Normal file
@@ -0,0 +1 @@
|
||||
dWunqaGiksXNukknksWPiHEffjYSOsDlsXUKcdJq1XeOLrI8mLsMgfX1irTnLs9nbW4ukY5uvyEuKKUNu0(OijoOaAHckEOsHjQu1ffuAJQkYhjuAKcqNuvPvssVKIe1mPOKBsrsTtcPFkOAOuu0sje9uHMkvCvksvBLIu6RuKkRLIe6TekUlHWEL8xvjdgDyIwSsr1JPWKj4Yk2mvYNvfJwv1Pf1QvkkEnfvZMs3MuA3I8BLmCP0YPQNlvtxLRtQ2UG8DLkJxvrDEvPwpfj49uu4(uuQ9dxblNkklN6QyVIk1q5gbvstqL188HjBVTrWpQO2kkurHYPIp(1UkgWWf5xtXWf1jqZQIc5(MrpzC5qtfLwBfLgxo044ZppJ3uVeMsunbfVI9wPXuIkEf7J1LzUYPRIMvy)Ktf)N8Z)vF6dXfpab)WKpu(JaeGT2(JTlxAmz7kAxsHYPIN0oPtPYPIA1TxUCQRUkEs7KUYPIA1TxUCQRUk6x2PCQOwD7LlN6QRIczxUYg627D5urT62lxo1vxf9sJPCQOwD7LlN6QRI50JFP3wovuRU9YLtD1vX2qTN0oPRCQOwD7LlN6QRIUKgxELkNkQv3E5YPU6QOEFEzyL9ET51vrzkRvEtfMk6NN8k58UDQOW7KuB24XV0BR485wzsyeQWuXZNFEgF5uX()Ax4Pk2)x7cpfOXLdn1vXSqf3yTScRDPaTJ)eRFP3wXC6gFsAnTJVNxPs0TQ4USW9xFYeLfFRTfpyacGjBsztcAIjLlnMOCft6AD85NNX3lrdwXCkFV6N0FJqjAW6QOr5uIgSCQ4nF(c(Pv6IztHPenakvrPXLdno(8ZZ4n1lHPevtqXRO04YRuVCQyoLVYPIcRxg69BPTctfn073sBfL6E5RjfQX5LgMpcX2XA7GnbndOccccQK4kfGGUb1Obuvx4z0oPdQGGGGkTTYbyl3GA0aUXk1hdV8YReubbbbvs8pusCLCdQrdyyFpGlxGoV9qfeeeuPGBTTYk5guJgWaktcGlxG3)aAM(1ng3YdvqqqWTc(Xwk7guJgWadnPNXVz7GX)8yfGkiiiOYBTT4I7guJgW4FEScGlxG3)akY8Z)nl9oubbbbdkUjM4guJgWaktcGlxGFYpJWslubbbbdQSYbnrz3GA0agO3qMgqNL3pPdQGGGGBs5TCdQrdyaLA1oEWLlqv9(LngOccccU9hMiUBqnAadOmjaUCbgLg(SRSXavqqqWTcUjLf3nOgnGb6fM0bUFCnjHXdvqqqWnT92k)HBqnAafRU0lKLjWLlWatg5jDGMY50thQGGGGkjUjIhCtUb1Obmm2P3ZPhWLlWy7yT7KEHC6bQMnuTldPfmBSs7Z9wR89EDV8YReytqXBycuTldPf8XqyVUxE5vcSjyWgkdvOk19YxtkuJDlV57LNeSjOzy2q11YdAUBWE7yTFfaZjWwz23vqQ7LVMuOgNxAy(ieBhRTRiOWcQGGGGsDV81Kc1y3YB(E5jftVDS2VcIaSjOzavqqqqqqqq)ifEd2e886JBOcccccccc(l7B8l9pthSjOlPTpUHkiiiOzdvqqqWSlqXoxSDS2n(L(NPRqVDS2VckcE)tcQGGGGGGGGsDV81Kc1y3YB(E5jftVDS2VcIOXVSVXV0)mDWMGNxFGkiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiAy8l9pthSjyFSJXPqq3GIDUy7yTB8l9ptxHE7yTFfuurOccccojbOojbOcvPUx(AsHA06xgtVh2qt6aBc6spzC5vsbP12p5nDfHkiiiORLh0C3G92XA)kaMtGTYSVRGu3lFnPqnoV0W8ri2owBxrqHfubbbbbbbb1ObmGYKGDa7TJ12b3LVFqJFP)z6qfeeeeeee0UmKwWCxKJu4nubbbbbbbbZUavqQ7LVMuOg7wEZ3lpPy6TJ1(vqen(L9n(L(NPRi49pjOccccccccccccAxgslOXV0)mDWMG9XogNcbDdk25ITJ1UXV0)mDf6TJ1(vqrfHkiiiiiiiiiiiy2fOcg)s)Z0bnvaL6E5RjfQXUL389YtkME7yTFferdJFP)z6kcE)tcQGGGGGGGGGGGGGGGG5UihPWBWMGNxFGkiiiiiiiiiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiAy8l9pthSjOXV0)mDOcccccccccccco2(avqqqqqqqqqqqqqqqWCxKJu4nytqxsBFGkiiiiiiiiiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiAy8l9pthSjOXV0)mDOccccccccccccojbOcccccccco2(avqqqqqqqqqqqWCxKJu4nytW(yhJtbLCdk25ITJ1UXAzfw7sk0BhR9RGIkcAQc(yiSx3lV8kbvqqqqqqqWjjavOcvqqqqqqqWSlqfsRduQ7LVMuOg7wEZ3lpPy6TJ1(vqen8Ju4nOmjaM7ICKcVve8(NeubbbbbbbbbbbbTldPfmBSsGnb7JDmof2YnOyNl2ow73KRLc92XA)kOOIqfeeeeeeeeeeeuAT9tEtxm92XA)kicWMGMbubbbbbbbbbbbbbbbb7)RDGnbpV(4gQGGGGGGGGGGGGGGGGg)Y0Zia2e886JBOccccccccccccccccMtcZNbBck25CYAhfu0nubbbbbbbbbbbbbbbb9tF5pWMGNxFCdvOccccccccccccccccMnwjWMGzJvYnuHkiiiiiiiiiiiiiiiyRF94NE35D7a2e00CzTJGPXnubbbbbbbbbbbbbbbbNp3M9YlVsozTdytqXoNtw7OGIGMsGzJvAFU3ALV3R7LxELCdvqqqqqqqqqqqqqqqqbDV8YReytWSXkTp3BTY3719YlVsUHkiiiiiiiiiiiiiiiOu)wbmlmGnbpV(4gQGGGGGGGGGGGGMnubbbbbbbbNKauHkiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiA4hPWBWMG5UihPWBOccccojbOojH6QRI385lyytYn3oc1MxrzkRvE5vQCQORCk3)lNkEVBNk26N(CvS1p95QOlPWuxDv885NNXxov8E3ov0qVFlTvCcnPRxXa3W5B4IgMaf5ltVzUpqNW(AJWd3S2hUPt0kAO3VL2kQrdyGB48nCrdtGI8LP3m3hOtyFTr4HBw7d30jkuDPNmU8kPG0A7N8MUBWrrOcccck19YxtkuJw)Yy69WgAsNcsRTFYB6kcvqqqq)C6(e451hOojHk2)x7cpvX()Ax4PanUCOPIg)JH5vCcnPRIg69BP919UDQy)K3O3kiVPUk(p5N)RenOsBQI2LuOCQ4jTt6uQCQOwD7LlN6QRIN0oPRCQOwD7LlN6QRIczxUYg627D5urT62lxo1vxf9sJPCQOwD7LlN6QRI(LDkNkQv3E5YPU6QyBO2tAN0vovuRU9YLtD1vXC6XV0BlNkQv3E5YPU6QOlPXLxPYPIA1TxUCQRU6QyoDJpjTM2X3ZRuj6wvui33m6jJlhAQO0AR4JDTRctf9ZtELCE3ovmBSsvmPR1XNFEgFVenyf3LfU)s0GkTPkMfQ4gRLvyTlfOD8xfnw2LVCkrnPev8gkxxD1vXqLObnrPG1vf
|
72
LegionWA/CooldownAlert/Init.lua
Normal file
72
LegionWA/CooldownAlert/Init.lua
Normal file
@@ -0,0 +1,72 @@
|
||||
aura_env.trackedSpells = {
|
||||
20271, -- Judgement
|
||||
26573, -- Consecration
|
||||
209202, -- Eye of Tyr
|
||||
213652, -- Hand of the Protector
|
||||
31935, -- Avenger's Shield
|
||||
53600, -- Shield of the Righteous
|
||||
1044, -- Hand of Freedom
|
||||
155145, -- Arcane Torrent
|
||||
853, -- Hammer of Justice
|
||||
6940, -- Hand of Sacrifice
|
||||
31850, -- Ardent Defender
|
||||
86659, -- Guardian of Ancient Kings
|
||||
204018, -- Blessing of Spellwarding
|
||||
--
|
||||
108416, -- Dark Pact
|
||||
196447, -- Channel Demonfire
|
||||
104773, -- Unending Resolve
|
||||
196586, -- Dimensional Rift
|
||||
}
|
||||
local iconDisplayDuration = 0.4
|
||||
local gcdDuration = 1.5
|
||||
|
||||
aura_env.cache = {}
|
||||
for k, spellId in pairs(aura_env.trackedSpells) do
|
||||
aura_env.cache[spellId] = {
|
||||
ready = true,
|
||||
hasCharges = false,
|
||||
}
|
||||
if GetSpellCharges(spellId) then
|
||||
aura_env.cache[spellId].hasCharges = true
|
||||
aura_env.cache[spellId].charges = select(1, GetSpellCharges(spellId))
|
||||
end
|
||||
end
|
||||
|
||||
aura_env.processEvent = function(allstates)
|
||||
for k, spellId in pairs(aura_env.trackedSpells) do
|
||||
-- Handle spells with charges
|
||||
local isReady
|
||||
if aura_env.cache[spellId].hasCharges then
|
||||
local charges = select(1, GetSpellCharges(spellId))
|
||||
if charges > aura_env.cache[spellId].charges then
|
||||
isReady = true
|
||||
aura_env.cache[spellId].charges = charges
|
||||
else
|
||||
isReady = false
|
||||
aura_env.cache[spellId].charges = charges
|
||||
end
|
||||
else
|
||||
isReady = select(2, GetSpellCooldown(spellId)) < gcdDuration
|
||||
end
|
||||
|
||||
if not aura_env.cache[spellId].ready and isReady then
|
||||
local icon = select(3, GetSpellInfo(spellId))
|
||||
allstates[spellId] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
index = GetTime(),
|
||||
resort = true,
|
||||
|
||||
icon = icon,
|
||||
|
||||
progressType = "timed",
|
||||
expirationTime = GetTime() + iconDisplayDuration,
|
||||
duration = iconDisplayDuration,
|
||||
autoHide = true,
|
||||
}
|
||||
end
|
||||
|
||||
aura_env.cache[spellId].ready = isReady
|
||||
end
|
||||
end
|
28
LegionWA/DebuffAlert/Event.lua
Normal file
28
LegionWA/DebuffAlert/Event.lua
Normal file
@@ -0,0 +1,28 @@
|
||||
-- COMBAT_LOG_EVENT_UNFILTERED
|
||||
function(allstates, e, ...)
|
||||
local iconDisplayDuration = 0.5
|
||||
|
||||
local se = select(2, ...)
|
||||
if (se ~= "SPELL_AURA_APPLIED") then return end
|
||||
local target = select(9, ...)
|
||||
if (target ~= UnitName("player")) then return end
|
||||
local auraType = select(15, ...)
|
||||
if (auraType ~= "DEBUFF") then return end
|
||||
local spellId = select(12, ...)
|
||||
print(select(3, GetSpellInfo(spellId)))
|
||||
allstates[spellId] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
index = GetTime(),
|
||||
resort = true,
|
||||
|
||||
icon = select(3, GetSpellInfo(spellId)),
|
||||
name = select(13, ...),
|
||||
|
||||
progressType = "timed",
|
||||
expirationTime = GetTime() + iconDisplayDuration,
|
||||
duration = iconDisplayDuration,
|
||||
autoHide = true,
|
||||
}
|
||||
return true
|
||||
end
|
1
LegionWA/DruidEnergyBar/Export
Normal file
1
LegionWA/DruidEnergyBar/Export
Normal file
File diff suppressed because one or more lines are too long
5
LegionWA/HealerRaidDanger/color.lua
Normal file
5
LegionWA/HealerRaidDanger/color.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
-- DevTools_Dump(aura_env.region)
|
||||
-- aura_env.region:SetParent(aura_env.state.frame)
|
||||
aura_env.region:ClearAllPoints()
|
||||
aura_env.region:SetPoint("TOPLEFT", aura_env.statee.frame.AuraWatch, "TOPLEFT", 0, 0)
|
||||
aura_env.region:Show()
|
27
LegionWA/HealerRaidDanger/init.lua
Normal file
27
LegionWA/HealerRaidDanger/init.lua
Normal file
@@ -0,0 +1,27 @@
|
||||
local raidFrames = ElvUF_Raid
|
||||
local group1, group2, group3, group4, group5, group6 = raidFrames:GetChildren()
|
||||
local groups = { group1, group2, group3, group4, group5, group6 }
|
||||
aura_env.players = {}
|
||||
for _, group in ipairs(groups) do
|
||||
local playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 = group:GetChildren()
|
||||
local playerFrames = { playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 }
|
||||
|
||||
for _, player in ipairs(playerFrames) do
|
||||
if player.Name:IsVisible() then aura_env.players[#aura_env.players + 1] = player end
|
||||
end
|
||||
end
|
||||
|
||||
local specs = {
|
||||
-- We can't get unit spec..........
|
||||
-- Best we can do is class
|
||||
-- That fucking sucks
|
||||
}
|
||||
|
||||
aura_env.Player = {
|
||||
new = function(self, player)
|
||||
setmetatable({}, self)
|
||||
self.frame = nil
|
||||
self.danger = 0
|
||||
return self
|
||||
end,
|
||||
}
|
22
LegionWA/HealerRaidDanger/tsu.lua
Normal file
22
LegionWA/HealerRaidDanger/tsu.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
-- TSU
|
||||
function(allstates, e)
|
||||
if aura_env.players == nil then
|
||||
aura_env.players = {}
|
||||
end
|
||||
|
||||
for _,player in ipairs(aura_env.players) do
|
||||
allstates[player.Name:GetText()] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
name = 0.13,
|
||||
frame = player,
|
||||
icon = player.RaidIcon,
|
||||
progressType = "static",
|
||||
value = 1,
|
||||
total = 1,
|
||||
autoHide = true,
|
||||
resort = true,
|
||||
}
|
||||
end
|
||||
return true
|
||||
end
|
7
LegionWA/NearbyPlayers/Event.lua
Normal file
7
LegionWA/NearbyPlayers/Event.lua
Normal file
@@ -0,0 +1,7 @@
|
||||
-- COMBAT_LOG_EVENT_UNFILTERED
|
||||
function(allstates, e, ...)
|
||||
local caster = select(6, ...)
|
||||
local target = select(10, ...)
|
||||
|
||||
aura_env.processEvent(allstates, caster, target)
|
||||
end
|
83
LegionWA/NearbyPlayers/Init.lua
Normal file
83
LegionWA/NearbyPlayers/Init.lua
Normal file
@@ -0,0 +1,83 @@
|
||||
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
|
||||
if not WeakAurasSaved.Cyka.Cache then WeakAurasSaved.Cyka.Cache = {} end
|
||||
if not WeakAurasSaved.Cyka.Cache.PlayerInfo then WeakAurasSaved.Cyka.Cache.PlayerInfo = {} end
|
||||
|
||||
local allianceRaces = {
|
||||
"Draenai",
|
||||
"Dwarf",
|
||||
"Gnome",
|
||||
"Human",
|
||||
"Night Elf",
|
||||
"Worgen",
|
||||
}
|
||||
|
||||
PlayerController = {
|
||||
nearbyPlayers = {},
|
||||
addPlayer = function(self, name) self.nearbyPlayers[name] = Player:New(name) end,
|
||||
getPlayers = function(self) end,
|
||||
process = function(guid)
|
||||
if self.nearbyPlayers[guid] == nil then
|
||||
self.addPlayer(guid)
|
||||
else
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
Player = {
|
||||
guid = nil,
|
||||
lastSighted = nil,
|
||||
info = nil,
|
||||
update = function(self) self.lastSighted = GetTime() end,
|
||||
getFormatted = function(self)
|
||||
-- Color by class
|
||||
-- Format time
|
||||
return info.name .. " " .. self.lastSighted
|
||||
end,
|
||||
}
|
||||
PlayerInfo = {
|
||||
class = nil,
|
||||
race = nil,
|
||||
name = nil,
|
||||
isHostile = nil,
|
||||
}
|
||||
|
||||
function Player:New(guid)
|
||||
o = {}
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
|
||||
o.guid = guid or ""
|
||||
o.lastSighted = GetTime()
|
||||
o.info = PlayerInfo:New(guid)
|
||||
|
||||
return o
|
||||
end
|
||||
function PlayerInfo:New(guid)
|
||||
o = {}
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
|
||||
local info
|
||||
if WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] then
|
||||
info = WeakAurasSaved.Cyka.Cache.PlayerInfo[guid]
|
||||
else
|
||||
info = GetPlayerInfoByGUID(guid)
|
||||
WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] = {
|
||||
class = info.class,
|
||||
race = info.race,
|
||||
name = info.name,
|
||||
isHostile = allianceRaces[race] ~= nil,
|
||||
}
|
||||
end
|
||||
o.class = info.class or ""
|
||||
o.race = info.race or ""
|
||||
o.name = info.name or ""
|
||||
o.isHostile = info.isHostile or true
|
||||
|
||||
return o
|
||||
end
|
||||
|
||||
aura_env.processEvent = function(caster, target)
|
||||
PlayerController:process(caster)
|
||||
PlayerController:process(target)
|
||||
end
|
8
LegionWA/SoTR Counter/Event.lua
Normal file
8
LegionWA/SoTR Counter/Event.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
-- SPELL_UPDATE_CHARGES
|
||||
function(e)
|
||||
local charges = aura_env.getCharges()
|
||||
if (charges ~= aura_env.currentCharges) then
|
||||
aura_env.currentCharges = charges
|
||||
return true
|
||||
end
|
||||
end
|
1
LegionWA/SoTR Counter/Export
Normal file
1
LegionWA/SoTR Counter/Export
Normal file
@@ -0,0 +1 @@
|
||||
diuwfaqjvsQrPeoLs0RuiXSak1TOGDbOgMkXXiPLrWZuPMgqUMsABa8ncvJJICoOQUhG4GuuTqvs5HqPjQsQUOc1grcFeQIrcu1jbkzLuOxQscZKIYnvjr7Kq(jqLHIeTuGINs1uv0vbK2QkjzVs)fjnyqhwPEmetMexwyZk4Zi1OPuNMOvRqQMnKUnLSBe)wKHdflNupxfth11f12HkFhQsJxH48ekRxHKMVcPSFvDv7SUvDL6kDwpLzujjQpbpyH9kahqNMbwIgxxrEg9mbHL4I6Bu06kYdg0TyZyeU(vJuhjF4K1mgHRpKjiSmrwS8n(Wh(WhQdoRjpCN1BQbbhW0bJ1ERPJZILVXGOuFJWsCXulPPd9vMuIkYG6L6i5dNSMXimqXOS5OEGliC9ncltKtN1Lej3zDLevK8Htw9A1rYhozvFN1BQbbhW0bJ1ERPJZdbYdhYeewMilw(gF4dF4d1bN1KhEc0aHxOc2pepb7ycuuS2BnDCwSEd4YLLlFJbrPC56schAYg9Qc9rMiv0D9tGoqzss46yhlAogm1zTKMo0DwNfdtuhjF4KvDLSEZYeP(fGVRJKpCYQUbdp0PCSzMrfOuEDZNJPIf8Mdg8m2FJdzccltKfXY34dF4dFiAczJ(qe7TMoopeipCN1BQbbhW0bJ1ERPJZILVXh(Wh(q5WdxGyV10X5H)ObKhUZ6n1GGdyKSwhegR9wthNLpKTdYB8Hp8Hp8Hp8HpCN1BQbbhWizToimw7TMoopeipeXERPJZB8Hp8Hp8Hp8HpuhCwtEiRZXB8Hp8HpmikVXGOuhjF4Kfvwmmr9axq46h7eEbhP(XoHxWrmhHL4I6bUGWN6oLJnZmQaLYRB(CmvSG3CWGNXEDK8HtwuTLkrDwAfkLRJrNO1X5qPoqKhzIurxQpKiCDSjIsqoHYdVwcv5Hlgb7Cuww3oK02CPWKjaaab4ca8faa62eOlDWaO16OPTsN15nAqyHoRBLrzzNLlxN3ObH7SUvgLLDwUCDf5WGejJYI1zDRmkl7SC566ns0zDRmkl7SC566eA0zDRmkl7SC56yWHH3ObH7SUvgLLDwUCDjHwNYy6SUvgLLDwUC9HncltKoRBLrzzNLlxU(qIWUCuJksW0L66GwMitXWe15yeUUuPUBlduLhMgEiBhpemsABos5ZdXMYeo01XRuHTlfIlasC8nbc0ft34VkU4a6GbqaQJKqt6oRi1sbavtQGuvfwVfwVbii0bdR3vKqPaGQjvqQQcR3cR3aee6GH17k6Uuaq1KkivvH1BH1BaccDWW6DfbQuScAvqae(IlCVcWKQGPoyy9UCDs2AQL00H(urQ13eP1MLjsN1hKe5XUZ6SyyI6y0Xj46y0Xj46dBLOC5Y1p1faEfyvbdQRgOXheaaiQ4xhxfPcsqTCl
|
3
LegionWA/SoTR Counter/Init.lua
Normal file
3
LegionWA/SoTR Counter/Init.lua
Normal file
@@ -0,0 +1,3 @@
|
||||
aura_env.getCharges = function() return select(1, GetSpellCharges(53600)) end
|
||||
|
||||
aura_env.currentCharges = 0
|
3
LegionWA/SoTR Counter/Text.lua
Normal file
3
LegionWA/SoTR Counter/Text.lua
Normal file
@@ -0,0 +1,3 @@
|
||||
function()
|
||||
return aura_env.getCharges()
|
||||
end
|
1
LegionWA/SoTR Texture/Export
Normal file
1
LegionWA/SoTR Texture/Export
Normal file
@@ -0,0 +1 @@
|
||||
diuSiaGirLUevLyuQqoLkOzjfLBjv1UubgMk6yuQLjvEgQyAk4AsPTPs6BiyCsHZrv19qO6GiKfsvP8qvkmrujLlkQWgvjojQK0krLAMQq5MOsStf6NuvmurfTuPipvyQiDvvkARQq1xrLunxek7L8xvknyuoSIwSuu9yrzYi6YkTzk5ZuLrdWPv1QPQu9AQkPzlXTrv7MIFlYWb0YPYZbA6qxxsBxQY3fvz8IQ68QuTEujX(bTSfvbOIUdApWURVDBFp)dxVMz7xbVcsfKIQWTEFYqVdCv45svGk28bonKlPAUI3GRZmlhFDGFYOrokMz43BPU3ZBDCjrUA8ub4wSYz6nOcFZhk1hUCSCCHQ4jvea(TqczjlidbSqwtVhaCtvqfMkp19EERduJ2kU7JLf4IAKt7PIsAskQcCwwd2jQc(AbFrfkubolRbfvbFTGVOcfQWLkROk4Rf8fvOqfKVL1Nvl4DrvWxl4lQqHkCZSvuf81c(IkuOI345svGIQGVwWxuHcvaShqCwwdkQc(AbFrfkuH1md)Kruf81c(IkuOIk4EBwzccQMluOImr1OTOkiFqGL5D6MpQWxYuKvbXepDZhvyvnz4NmhDiKBidYGmiZTy1zGS(GBzZWJSj0mi7MMhjQ6MhLlWY8(6YTzq2S6M3UMEhy9gsIQU5r5ga(TqczjlidbSqwtVhaCtvWCp8WdHSdoaYY1xYfY9AivmZWV3sDVN364sIC1yF7tfzvqmXt38XBcKCIRIT3AqfZm8tgqrv8Mhfvbz62SkiM4LVPiRcIjEfZQBE7A6DG1BijQ6MqgXHmRQjd)K5OJDXm53dHCdzqgKbzwjhK9qgXHm7MbzdNqgzcYnKbzqgKbzqgKbzLu2SazMj)czehYUP5rIQU5r5cSmVVUCBgK9hc5gYGmidYGmidYGS3cYoYm5xiJ4ehYo2fZKFpeYqaRbYnKbzqgKbzqgKbzqgKbzqMBXQZazpKBidYGmidYGmidYwdjKBidYGmiBnKqUxdPqHkEdUoZSC81b(jJg5OaDVN36evbiGuE(yuaciLNpgIYWV3QWm5xqr1OTIaWVfsilzbziGfYA69aGBQckuOcGUKNBbbZPBZEWpz04PcRKbvKJ8b6wqW8M3vayFpaOU4)8KGT)UocTd2(T5Cvw9hAOOKMKIQaNL1GDIQGVwWxuHcvGZYAqrvWxl4lQqHkiFlRpRwW7IQGVwWxuHcv4MzROk4Rf8fvOqfUuzfvbFTGVOcfQaypG4SSguuf81c(IkuOI345svGIQGVwWxuHcvynZWpzevbFTGVOcfkuHvYGXZvwnYPtHB9(KHEh4Qa38rfGBXkNP3GkUrogP5OjfpPIWhAtCTMuK3tIa0Lbc2deoB0om0124COHS6pCvb5d67vtg(9wfZsrHPYtDVN36a1OTI384TG40HlPgTfQXorvyLCRNlvnK3ivsor1OTU04QDJRTCgohA5CDGqdz1VLJg5Olni063)qxJZHR2NngiiR(Tx14GgppOvOIzg(9wQ798whxsKRg7BFQ4n46mZYXxh4NmAKJc09EERtufGas55JrbiGuE(yikd)ERcZKFbfvJ2kca)wiHSKfKHawiRP3daUPkOqHk6ToWpz0yNca77ba1L2Ho7gTdNT(B9F2E2kR(ddkkPjPOkWzznyNOk4Rf8fvOqf4SSguuf81c(IkuOcY3Y6ZQf8UOk4Rf8fvOqfUz2kQc(AbFrfkuHlvwrvWxl4lQqHka2diolRbfvbFTGVOcfQ4nEUufOOk4Rf8fvOqfwZm8tgrvWxl4lQqHcvKLkjNOcvyLCRNlvnK0nFS6wfCvdUoRz2smIijtgqIX13PVsu1nbjwot5ToIQUjixwYFsmIQUjiXiQ6M2nu4wVpzO3bUka6sEUfee38XQBvyQ8u375ToqnARiVNebOXHZtfKpOVxnz43BvmlffnFM5REUu1qEJuj5evJ26YqBND31ZgNDCi4NG)oz1VLJg70LH2o7URNno74qWpb)DYQFlhnYrxgA7S7UE24SJdb)e83jR(TC04GUqO7SLWvB7oBce8tWUtw9BBfQ4jve(qBsrMlb8276cHbcT(j0YPH9aN2ZUbz1VLJqHk6Pr7HoBHsa
|
6
LegionWA/SoTR Texture/Init.lua
Normal file
6
LegionWA/SoTR Texture/Init.lua
Normal file
@@ -0,0 +1,6 @@
|
||||
aura_env.findAura = function(LFname)
|
||||
for i = 1, 40 do
|
||||
local name = UnitAura("player", i)
|
||||
if name == LFname then return i end
|
||||
end
|
||||
end
|
3
LegionWA/SoTR Texture/Text.lua
Normal file
3
LegionWA/SoTR Texture/Text.lua
Normal file
@@ -0,0 +1,3 @@
|
||||
function()
|
||||
return -select(17, UnitAura("player", aura_env.findAura("Shield of the Righteous"))) .. "%"
|
||||
end
|
Reference in New Issue
Block a user