Tumble files around a bit
This commit is contained in:
@@ -1,58 +0,0 @@
|
||||
--Guess attack speed by taking entire data set and comparing 2 - 4 intervals then storing the n into seperate array and incrementing it
|
||||
--Attack speed with most counts in latter array is the best guess by m%
|
||||
--Correct this by repeating step on exit combat maybe?
|
||||
--Look at tolerances as well
|
||||
|
||||
local dataSet2s = {
|
||||
[1] = 540390408.9506,
|
||||
[2] = 540392394.9163,
|
||||
[3] = 540394398.5326,
|
||||
[4] = 540396409.5288,
|
||||
[5] = 540398396.6414,
|
||||
[6] = 540400397.0754,
|
||||
[7] = 540402384.8113,
|
||||
[8] = 540404385.3304,
|
||||
[9] = 540406398.99,
|
||||
[10] = 540408386.472,
|
||||
[11] = 540410386.9851,
|
||||
[12] = 540412374.8497,
|
||||
[13] = 540414375.1427,
|
||||
[14] = 540416373.0995,
|
||||
[15] = 540418376.9931,
|
||||
[16] = 540420390.6971,
|
||||
}
|
||||
local dataSet1p5s = {
|
||||
[1] = 541651364.1916,
|
||||
[2] = 541652857.9058,
|
||||
[3] = 541654365.8491,
|
||||
[4] = 541655858.3292,
|
||||
[5] = 541657352.4962,
|
||||
[6] = 541658846.2963,
|
||||
[7] = 541660354.015,
|
||||
[8] = 541661847.0112,
|
||||
[9] = 541663340.6759,
|
||||
[10] = 541664861.3772,
|
||||
[11] = 541666354.9449,
|
||||
[12] = 541667848.8308,
|
||||
[13] = 541669343.2332,
|
||||
[14] = 541670849.9777,
|
||||
[15] = 541672344.0613,
|
||||
[16] = 541673851.2346,
|
||||
}
|
||||
local tolerance = 50
|
||||
local tempAverages = {}
|
||||
-- rounds .5 to 0 or 1; want to round to .5 or .2 or alike
|
||||
for k, v in ipairs(dataSet1p5s) do
|
||||
if k > 1 then
|
||||
local tempAvg = (dataSet1p5s[k] - dataSet1p5s[k - 1])
|
||||
print(
|
||||
((math.floor(tempAvg / 1000) - (tempAvg / 1000)) * 1000),
|
||||
(math.ceil(tempAvg / 1000) - (tempAvg / 1000)) * 1000
|
||||
)
|
||||
if not tempAverages[tempAvg] then tempAverages[tempAvg] = 0 end
|
||||
tempAverages[tempAvg] = tempAverages[tempAvg] + 1
|
||||
end
|
||||
end
|
||||
for k, v in pairs(tempAverages) do
|
||||
print(k, v)
|
||||
end
|
||||
Submodule Complete Projects/Legion/RaiderSA deleted from 7a3f912549
@@ -1,11 +0,0 @@
|
||||
|
||||
|
||||
local Button = CreateFrame("Button", "MyButton", UIParent, "UIPanelButtonTemplate")
|
||||
Button:SetWidth(150)
|
||||
Button:SetHeight(25)
|
||||
Button:SetPoint("TOP")
|
||||
Button:SetText("Dance")
|
||||
Button:RegisterForClicks("AnyUp")
|
||||
Button:SetScript("OnClick", function()
|
||||
DoEmote("dance", UnitName("target"))
|
||||
end )
|
||||
@@ -1,38 +0,0 @@
|
||||
EVERY FRAME
|
||||
function()
|
||||
local function range (val, min, max, max2)
|
||||
val = 1 - (((max - val) / (max - min)) * max2)
|
||||
return val
|
||||
end
|
||||
local pX = UnitPosition("player") or 0
|
||||
local pY = select(2,UnitPosition("player")) or 0
|
||||
local tX = UnitPosition("Alurielle") or 0
|
||||
local tY = select(2,UnitPosition("Alurielle")) or 0
|
||||
local X = pX - tX
|
||||
local Y = pY - tY
|
||||
local playerFace = GetPlayerFacing() or 0
|
||||
local playerA = math.floor(playerFace * 100)
|
||||
playerA = range(playerA, 0, 630, 360) - 1
|
||||
playerA = - playerA
|
||||
playerA = playerA - 90
|
||||
if playerA < 0 then playerA = playerA + 360 end
|
||||
aura_env.hyp = math.sqrt((math.abs(X^2)) + (math.abs(Y^2)))
|
||||
aura_env.angle = math.deg(math.atan2(X,Y))
|
||||
if aura_env.angle < 0 then aura_env.angle = aura_env.angle + 360 end
|
||||
aura_env.angle = aura_env.angle - playerA
|
||||
end
|
||||
|
||||
DISPLAY
|
||||
function()
|
||||
local pX = UnitPosition("player") or 0
|
||||
local pY = select(2,UnitPosition("player")) or 0
|
||||
local tX = UnitPosition("Alurielle") or 0
|
||||
local tY = select(2,UnitPosition("Alurielle")) or 0
|
||||
local X = pX - tX
|
||||
local Y = pY - tY
|
||||
local hyp = math.floor(math.sqrt((math.abs(X^2)) + (math.abs(Y^2))))
|
||||
return hyp
|
||||
end
|
||||
|
||||
INIT
|
||||
aura_env.angle = 0
|
||||
@@ -1,31 +0,0 @@
|
||||
EVERY FRAME
|
||||
function()
|
||||
local function range (val, min, max, max2)
|
||||
val = 1 - (((max - val) / (max - min)) * max2)
|
||||
return val
|
||||
end
|
||||
local pX = UnitPosition("player") or 0
|
||||
local pY = select(2,UnitPosition("player")) or 0
|
||||
local tX = UnitPosition("Alurielle") or 0
|
||||
local tY = select(2,UnitPosition("Alurielle")) or 0
|
||||
local X = pX - tX
|
||||
local Y = pY - tY
|
||||
local playerFace = GetPlayerFacing() or 0
|
||||
local playerA = math.floor(playerFace * 100)
|
||||
playerA = range(playerA, 0, 630, 360) - 1
|
||||
playerA = - playerA
|
||||
playerA = playerA - 90
|
||||
if playerA < 0 then playerA = playerA + 360 end
|
||||
aura_env.hyp = math.sqrt((math.abs(X^2)) + (math.abs(Y^2)))
|
||||
aura_env.angle = math.deg(math.atan2(X,Y))
|
||||
if aura_env.angle < 0 then aura_env.angle = aura_env.angle + 360 end
|
||||
aura_env.angle = aura_env.angle - playerA
|
||||
end
|
||||
|
||||
ANIMATION
|
||||
function()
|
||||
return - aura_env.angle
|
||||
end
|
||||
|
||||
INIT
|
||||
aura_env.angle = 0
|
||||
1
LegionWA/.gitignore
vendored
1
LegionWA/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
.vscode
|
||||
@@ -1 +0,0 @@
|
||||
/dump getmetatable(LFGListApplicationViewerScrollFrameButton3.Member1.Name)
|
||||
@@ -1,24 +0,0 @@
|
||||
--MODEL_TEST
|
||||
function()
|
||||
frame:SetAlpha(1);
|
||||
frame:SetFrameStrata("DIALOG");
|
||||
local model = CreateFrame("PlayerModel", "QCP", QCQuestTitleFrame);
|
||||
model:SetFrameStrata("DIALOG");
|
||||
model:SetUnit("TARGET");
|
||||
model:ClearModel();
|
||||
model:SetPortraitZoom(0.3);
|
||||
model:SetPosition(-1.6, 0, 0);
|
||||
model:SetScale(0.8);
|
||||
model:SetFacing(-(math.pi / -26))
|
||||
model:SetAlpha(1);
|
||||
model:SetScript("OnAnimStarted", function() model:SetAnimation(60); end);
|
||||
model:SetScript("OnAnimFinished", function() model:SetAnimation(60); end);
|
||||
model:SetAllPoints(frame);
|
||||
model:RegisterEvent("PLAYER_TARGET_CHANGED");
|
||||
model:RegisterEvent("UNIT_PORTRAIT_UPDATE");
|
||||
model:RegisterEvent("UNIT_MODEL_CHANGED");
|
||||
model:SetScript("OnEvent", TargetPortrait_EventHandler);
|
||||
--yeet_env.region:SetSequenceTime(120)
|
||||
--aura_env.region:SetOffsetAnim(120)
|
||||
return true
|
||||
end
|
||||
@@ -1,19 +0,0 @@
|
||||
local array = { 13, 14, 52, 63, 764, 12342, 143, 2, 54, 63, 25, 15 }
|
||||
local sortedarray = { 0 }
|
||||
|
||||
for ka, va in ipairs(array) do
|
||||
for j = 1, #sortedarray do
|
||||
if va > sortedarray[j] then
|
||||
if sortedarray[j] > 0 then
|
||||
for i = #sortedarray, j, -1 do
|
||||
sortedarray[i + 1] = sortedarray[i]
|
||||
end
|
||||
end
|
||||
sortedarray[j] = va
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for k, v in ipairs(sortedarray) do
|
||||
print(k, v)
|
||||
end
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
dye0taqicOfPcDjcGrbGtPsAvkQOzPs0Tae7sO4xkQWWuPoMQyzcQNrGMMkQRHuABeQ6BQeACkQ05aOCpvcoOa1crQ8qaPjcqLlsOSrfvnsHsDsbPvQImtck3eGStL6NkkgQIslvOKNsAQsCva1xjuzUcK9s9xKQgmrhgvlwf8yKmzGUSuBwv6ZkYOjKtJYQja9AKIzlYTvv7wj)wHHlKJdqvlh0ZL00HUUO2ob57cIXlGZluTEcQ2pI9Jlw5Uy0A1A4yemMlA9Bf0kOlw5uitOUazttneqdW2BG8CBTdeXxGnOPZA8zEFRn6nqcFFBf2tSXQepQTobh5iR1o9o7GTqR0ntPmdGeMyZxSYaTkqbkqbkqbkqbkqbkqRGSQaMxuitO2kpLSUY)cKnn1WQ3pwtdoOlwrEQxOlw)5eYCXOrRujET6I1kBnLARXg4DrSyz0AU20tL41QveMBRqov7I1FoHmxmA0AKqrip1l0fR)CczUy0O1xofYglxS(ZjK5IrJwHJu7I1FoHmxmA0ki79LrLtyCxS(ZjK5IrJgnALYfVFCXAnIdPrCmquK3HT(ow48j(u16maxewOBXSEGdb6inGU4Dyp)CbS7NWcgo89zXpxAd)iE)ceAp7TGE(5cy3pHfmC47ZIFU0g(r8(fi0sRrRPbh0fRip1l0fR)CczUy0O1Aut5I1kBnLAVFS(ZjK5I3pMoVdB6mA0AU20tL41QPZkKt1Uy9NtiZfJgTgjueYt9cDX6pNqMlgnA9LtHSXYfR)CczUy0OvQeVwDXALTMsT1yd8UiwSS(ZjK5I1zdwybd4cDB6mA0ki79LrLtyCxS(ZjK5IrJwHJu7I1FoHmxmA0OvypXgRs8O2kpd5h4qRvKtrt1hSYwmKEQXpk1yd69JvSdGzyBvSKqahkrUhWVvSdGZpwO1GHmEIi3CiCeI1ddiydN59T2O3NTwJ4qAmDwr2VHZpwOvXceb7AneECR1ioKgGosdOlE)49T3H9(2Bb9(2O1ddiydPJtrdiCezvhjgOvQCfh)shaT(MxuiBSa4k5ersKejrcBmdxe5rIKijsIKijsIKijsIKijsI8irgtmejWlgo7iKgcWXOepEdpELCQxGw5uitOUazttneqdW2BG8CBfKvJs84LoakS(fTkauwriBAQHUyfJh1wPYvC8TsLR44tVigyBfz)g0kvUIJp9y8O2Af5yUATfQxy1kW7ql0p7mItSyzLkxXXhWLHCKnwwFZlkKnwaCLCIijsIKitdkEIi)re5fiYphffZNhaG7ljsGxmC2rineGJrjE8gE86vICoiYphffZNhaGNljsGxmC2rineq8aaCmkXJ3WJxVsKZjr(CFtorKejrsKPbfprK1OoL28FtKxGibEXqGYRiBnf66DaWXOepEdpELCIijsIKizVeznQtPn)3e5fUarEmy2Vbjsv0apsKOOErK)iI8ce5pIibcrs7nr2lqYjIKijsIe2ygUiYF0Lp33xIWCto1lqRu5ko(B(VT(MxuiBSa4k5ersKejrMgu8er(JiYlqKFokkMppaa3xsKaVy4SJqAiahJs84n841Re5CqKFokkMppaapxsKaVy4SJqAiG4ba4yuIhVHhVELiNtI85(MCIijsIKiHnMHlISIq2AkM3b8ZraokaX8E8sI8hDLCQxGwPYvC8T(MxuiBSa4k5ersKejrcBmdxejcZn5uVajNiNiNiNiNSsjQPOXAocKJTrRi73qLj827WNTwJ4qAkDamdBRHUWg(YP6GcgeCMvniX1CAcod51GaudY4bv6ayg21GuaFMdB6fNig2wr2VH(GvK9B48j(u16maxewOBXSEGtrdiCeb0rAaDX7hVV9oS33ElO33EF27hJwzGwJDEHnKiXUIejkITMSUY)cKnn1WQ3pwXoaQmH3Eh(Svg1y5dwpmGGnumWP2kDjMWfohcsKavehjs6YhoKARHWarrE)ay0A9Wac2qLj827WwpmGGneOJ0a6I3pEF7DyVV9wqVV9(S3pgTYbbziBS4j6riBAQHvxmAf7a48j(u16maxewOBXScYQrjE8shaJfBseAvawwbzvbmVOqMqTvEkz9fY)TIqoY9(S1dCkAMGJ8ceOJ0a6I3N9(2OvrnBse6D4BRhgqWgg6Q2O3pg9oSlwRrCinIJbII8oS13XcNpXNQwNb4IWcDlM1dCiqhPb0fVF88NPfWEaSBAP9o85hXdyxu8(fi0E27WEEXh(r8xuqbf)TGHVy4WpN9lqOvqVf0ZpxANRGck4ZnTNP95IZDUI3VaHwb9(S33XqRrRPbh0fRip1l0fR)CczUy0O1Aut5I1kBnLAVFS(ZjK5I3pMoVdB6mA0ki79LrLtyCxS(ZjK5IrJwHCQ2fR)CczUy0O1xofYglxS(ZjK5IrJwJekc5PEHUy9NtiZfJgTchP2fR)CczUy0O1CTPNkXRvtNvQeVwDXALTMsT1yd8UiwSS(ZjK5I1zdwybd4cDB6mA0OvypXgRs8O2kpd5h4qRvKtrt1hSYwmKEQXpk1yd69JvSdGzyBvSKqahkrUhWVvSdGZpwOvXceb7AneECRhgqWgoZ7BTrVpBTgXH0y6SISFdNFSqRIfic21Ai84wpmGGnm0vTrVFSEyabBiDCkAaHJiR6iXaTsLR44x6aO138IczJfaxjNisIKijsyJz4IipsKejrsKejrsKejrsKejrsKhjYyIHibEXWzhH0qaogL4XB4XRKt9c0kNczc1fiBAQHaAa2EdKNBRGSAuIhV0bqH1VOvbGYkczttn0fRy8O2kvUIJVvQCfhF6fXaBRi73GwPYvC8PhJh1wRihZvRTq9cRwbEhAH(zNrCIflRu5ko(aUmKJSXY6BErHSXcGRKtejrsKezAqXte5pIiVar(5OOy(8aaCFjrc8IHZocPHaCmkXJ3WJxVsKZbr(5OOy(8aa8Cjrc8IHZocPHaIhaGJrjE8gE86vICojYN7BYjIKijsIe2ygUiYF0Lp33xIWCto1lqRu5ko(B(VT(MxuiBSa4k5ersKejrMgu8er(JiYlqKFokkMppaa3xsKaVy4SJqAiahJs84n841Re5CqKFokkMppaapxsKaVy4SJqAiG4ba4yuIhVHhVELiNtI85(MCIijsIKiHnMHlISIq2AkM3b8ZraokaX8E8sI8hDLCQxGwPYvC8T(MxuiBSa4k5ersKejrcBmdxejcZn5uVajNiNiNiNiNSsjQPOXAocKJTrRyha9bRCqqgYglEIEeYMMAy1fJwzuJLpyfz)g6dwr2VHZN4tvRZaCryHUfZ6bofnGWreqhPb0fVF8(27WEF7TGEF79zVFmAvuZMeHEh(2AnIdPbOJ0a6I3pEF7DyVV9wqVVnADL)fiBAQHvVFSIDauzcV9o8zRhgqWgA6SEyabBOyGtTv6smHlCoeKibQiosK0LpCi1wdHbII8(bWO16HbeSHkt4T3HTcYQcyErHmHAR8uYkd0ASZlSHej2vKirrS1erkOvSdGZN4tvRZaCryHUfZkiRgL4XlDamwSjrOvbyzfz)gQmH3Eh(S1xi)3kc5i3BbTEyabBiqhPb0fVF8(27WEF7TGEF79zVFmA9aNIMj4iVab6inGU49zVVnATgXH0u6ayg2wdDHn8Lt1bfmi4mRAqIR50eCgYRbbOgKXdQ0bWmSRbPa(mh20lormSn6TGUynWmVV1g9giHP1kd0ASZlSHej2vKirrS1er(yf2tSXQepQTIDamdBRuJ0a6I3N9(XOvofYeQlq20udb0aS9gip3wXoaMHT1qxydF5uDqbdcow1GexZPj4mKxdA2rinm4mKxbudY4bfCgYRbfCgYV4zRGSQaMxuitO2kpLSIq20udDXkgpQTwroMRwPYvC8PhJh1wRihZvR5vluVqR8moSsLR44tVigyBfz)g0kLOMIgR5iqo2wZ1M(8IHMoJwFH8FRiKJCVpBnegikYBATUY)cKnn1WQ3pwf1SjrO30EBnn4GUyf5PEHUy9NtiZfJgTsL41QlwRS1uQTgBG3fXILrR5AtpvIxRMoRqov7I1FoHmxmA0AKqrip1l0fR)CczUy0O1xofYglxS(ZjK5IrJwHJu7I1FoHmxmA0ki79LrLtyCxS(ZjK5IrJgn69zxScYQcyErHmHAR8uYkd0ASZlSHej2vKirrS1erg2kSNyJvjEuBf7ayg2wPgPb0fVp79JrRCkKjuxGSPPgcOby7nqEUTIDamdBRHUWg(YP6GcgeCSQbjUMttWziVg0SJqAyWziVcOgKXdk4mKxdk4mKFXZwdmZ7BTrVP92kczttn0fRy8O2Af5yUAnVAH6fALNXHvQCfhF6X4rT1kYXC1kvUIJp9IyGTvK9BqRuIAkASMJa5yBnxB6ZlgA6mA9fY)TIqoY9(S1qyGOiVP16k)lq20udRE)yvuZMeHEt7T10Gd6IvKN6f6I1FoHmxmA0kvIxRUyTYwtP2ASbExelwgTMRn9ujETA6SchP2fR)CczUy0O1iHIqEQxOlw)5eYCXOrRVCkKnwUy9NtiZfJgTc5uTlw)5eYCXOrRGS3xgvoHXDX6pNqMlgnA0OrRc59Z5WpgTb
|
||||
dye0taqicOfPcDjcGrbGtPsAvkQOzPs0Tae7sO4xkQWWuPoMQyzcQNrGMMkQRHuABeQ6BQeACkQ05aOCpvcoOa1crQ8qaPjcqLlsOSrfvnsHsDsbPvQImtck3eGStL6NkkgQIslvOKNsAQsCva1xjuzUcK9s9xKQgmrhgvlwf8yKmzGUSuBwv6ZkYOjKtJYQja9AKIzlYTvv7wj)wHHlKJdqvlh0ZL00HUUO2ob57cIXlGZluTEcQ2pI9Jlw5Uy0A1A4yemMlA9Bf0kOlw5uitOUazttneqdW2BG8CBTdeXxGnOPZA8zEFRn6nqcFFBf2tSXQepQTobh5iR1o9o7GTqR0ntPmdGeMyZxSYaTkqbkqbkqbkqbkqbkqRGSQaMxuitO2kpLSUY)cKnn1WQ3pwtdoOlwrEQxOlw)5eYCXOrRujET6I1kBnLARXg4DrSyz0AU20tL41QveMBRqov7I1FoHmxmA0AKqrip1l0fR)CczUy0O1xofYglxS(ZjK5IrJwHJu7I1FoHmxmA0ki79LrLtyCxS(ZjK5IrJgnALYfVFCXAnIdPrCmquK3HT(ow48j(u16maxewOBXSEGdb6inGU4Dyp)CbS7NWcgo89zXpxAd)iE)ceAp7TGE(5cy3pHfmC47ZIFU0g(r8(fi0sRrRPbh0fRip1l0fR)CczUy0O1Aut5I1kBnLAVFS(ZjK5I3pMoVdB6mA0AU20tL41QPZkKt1Uy9NtiZfJgTgjueYt9cDX6pNqMlgnA9LtHSXYfR)CczUy0OvQeVwDXALTMsT1yd8UiwSS(ZjK5I1zdwybd4cDB6mA0ki79LrLtyCxS(ZjK5IrJwHJu7I1FoHmxmA0OvypXgRs8O2kpd5h4qRvKtrt1hSYwmKEQXpk1yd69JvSdGzyBvSKqahkrUhWVvSdGZpwO1GHmEIi3CiCeI1ddiydN59T2O3NTwJ4qAmDwr2VHZpwOvXceb7AneECR1ioKgGosdOlE)49T3H9(2Bb9(2O1ddiydPJtrdiCezvhjgOvQCfh)shaT(MxuiBSa4k5ersKejrcBmdxe5rIKijsIKijsIKijsIKijsI8irgtmejWlgo7iKgcWXOepEdpELCQxGw5uitOUazttneqdW2BG8CBfKvJs84LoakS(fTkauwriBAQHUyfJh1wPYvC8TsLR44tVigyBfz)g0kvUIJp9y8O2Af5yUATfQxy1kW7ql0p7mItSyzLkxXXhWLHCKnwwFZlkKnwaCLCIijsIKitdkEIi)re5fiYphffZNhaG7ljsGxmC2rineGJrjE8gE86vICoiYphffZNhaGNljsGxmC2rineq8aaCmkXJ3WJxVsKZjr(CFtorKejrsKPbfprK1OoL28FtKxGibEXqGYRiBnf66DaWXOepEdpELCIijsIKizVeznQtPn)3e5fUarEmy2Vbjsv0apsKOOErK)iI8ce5pIibcrs7nr2lqYjIKijsIe2ygUiYF0Lp33xIWCto1lqRu5ko(B(VT(MxuiBSa4k5ersKejrMgu8er(JiYlqKFokkMppaa3xsKaVy4SJqAiahJs84n841Re5CqKFokkMppaapxsKaVy4SJqAiG4ba4yuIhVHhVELiNtI85(MCIijsIKiHnMHlISIq2AkM3b8ZraokaX8E8sI8hDLCQxGwPYvC8T(MxuiBSa4k5ersKejrcBmdxejcZn5uVajNiNiNiNiNSsjQPOXAocKJTrRi73qLj827WNTwJ4qAkDamdBRHUWg(YP6GcgeCMvniX1CAcod51GaudY4bv6ayg21GuaFMdB6fNig2wr2VH(GvK9B48j(u16maxewOBXSEGtrdiCeb0rAaDX7hVV9oS33ElO33EF27hJwzGwJDEHnKiXUIejkITMSUY)cKnn1WQ3pwXoaQmH3Eh(Svg1y5dwpmGGnumWP2kDjMWfohcsKavehjs6YhoKARHWarrE)ay0A9Wac2qLj827WwpmGGneOJ0a6I3pEF7DyVV9wqVV9(S3pgTYbbziBS4j6riBAQHvxmAf7a48j(u16maxewOBXScYQrjE8shaJfBseAvawwbzvbmVOqMqTvEkz9fY)TIqoY9(S1dCkAMGJ8ceOJ0a6I3N9(2OvrnBse6D4BRhgqWgg6Q2O3pg9oSlwRrCinIJbII8oS13XcNpXNQwNb4IWcDlM1dCiqhPb0fVF88NPfWEaSBAP9o85hXdyxu8(fi0E27WEEXh(r8xuqbf)TGHVy4WpN9lqOvqVf0ZpxANRGck4ZnTNP95IZDUI3VaHwb9(S33XqRrRPbh0fRip1l0fR)CczUy0O1Aut5I1kBnLAVFS(ZjK5I3pMoVdB6mA0ki79LrLtyCxS(ZjK5IrJwHCQ2fR)CczUy0O1xofYglxS(ZjK5IrJwJekc5PEHUy9NtiZfJgTchP2fR)CczUy0O1CTPNkXRvtNvQeVwDXALTMsT1yd8UiwSS(ZjK5I1zdwybd4cDB6mA0OvypXgRs8O2kpd5h4qRvKtrt1hSYwmKEQXpk1yd69JvSdGzyBvSKqahkrUhWVvSdGZpwOvXceb7AneECRhgqWgoZ7BTrVpBTgXH0y6SISFdNFSqRIfic21Ai84wpmGGnm0vTrVFSEyabBiDCkAaHJiR6iXaTsLR44x6aO138IczJfaxjNisIKijsyJz4IipsKejrsKejrsKejrsKejrsKhjYyIHibEXWzhH0qaogL4XB4XRKt9c0kNczc1fiBAQHaAa2EdKNBRGSAuIhV0bqH1VOvbGYkczttn0fRy8O2kvUIJVvQCfhF6fXaBRi73GwPYvC8PhJh1wRihZvRTq9cRwbEhAH(zNrCIflRu5ko(aUmKJSXY6BErHSXcGRKtejrsKezAqXte5pIiVar(5OOy(8aaCFjrc8IHZocPHaCmkXJ3WJxVsKZbr(5OOy(8aa8Cjrc8IHZocPHaIhaGJrjE8gE86vICojYN7BYjIKijsIe2ygUiYF0Lp33xIWCto1lqRu5ko(B(VT(MxuiBSa4k5ersKejrMgu8er(JiYlqKFokkMppaa3xsKaVy4SJqAiahJs84n841Re5CqKFokkMppaapxsKaVy4SJqAiG4ba4yuIhVHhVELiNtI85(MCIijsIKiHnMHlISIq2AkM3b8ZraokaX8E8sI8hDLCQxGwPYvC8T(MxuiBSa4k5ersKejrcBmdxejcZn5uVajNiNiNiNiNSsjQPOXAocKJTrRyha9bRCqqgYglEIEeYMMAy1fJwzuJLpyfz)g6dwr2VHZN4tvRZaCryHUfZ6bofnGWreqhPb0fVF8(27WEF7TGEF79zVFmAvuZMeHEh(2AnIdPbOJ0a6I3pEF7DyVV9wqVVnADL)fiBAQHvVFSIDauzcV9o8zRhgqWgA6SEyabBOyGtTv6smHlCoeKibQiosK0LpCi1wdHbII8(bWO16HbeSHkt4T3HTcYQcyErHmHAR8uYkd0ASZlSHej2vKirrS1erkOvSdGZN4tvRZaCryHUfZkiRgL4XlDamwSjrOvbyzfz)gQmH3Eh(S1xi)3kc5i3BbTEyabBiqhPb0fVF8(27WEF7TGEF79zVFmA9aNIMj4iVab6inGU49zVVnATgXH0u6ayg2wdDHn8Lt1bfmi4mRAqIR50eCgYRbbOgKXdQ0bWmSRbPa(mh20lormSn6TGUynWmVV1g9giHP1kd0ASZlSHej2vKirrS1er(yf2tSXQepQTIDamdBRuJ0a6I3N9(XOvofYeQlq20udb0aS9gip3wXoaMHT1qxydF5uDqbdcow1GexZPj4mKxdA2rinm4mKxbudY4bfCgYRbfCgYV4zRGSQaMxuitO2kpLSIq20udDXkgpQTwroMRwPYvC8PhJh1wRihZvR5vluVqR8moSsLR44tVigyBfz)g0kLOMIgR5iqo2wZ1M(8IHMoJwFH8FRiKJCVpBnegikYBATUY)cKnn1WQ3pwf1SjrO30EBnn4GUyf5PEHUy9NtiZfJgTsL41QlwRS1uQTgBG3fXILrR5AtpvIxRMoRqov7I1FoHmxmA0AKqrip1l0fR)CczUy0O1xofYglxS(ZjK5IrJwHJu7I1FoHmxmA0ki79LrLtyCxS(ZjK5IrJgn69zxScYQcyErHmHAR8uYkd0ASZlSHej2vKirrS1erg2kSNyJvjEuBf7ayg2wPgPb0fVp79JrRCkKjuxGSPPgcOby7nqEUTIDamdBRHUWg(YP6GcgeCSQbjUMttWziVg0SJqAyWziVcOgKXdk4mKxdk4mKFXZwdmZ7BTrVP92kczttn0fRy8O2Af5yUAnVAH6fALNXHvQCfhF6X4rT1kYXC1kvUIJp9IyGTvK9BqRuIAkASMJa5yBnxB6ZlgA6mA9fY)TIqoY9(S1qyGOiVP16k)lq20udRE)yvuZMeHEt7T10Gd6IvKN6f6I1FoHmxmA0kvIxRUyTYwtP2ASbExelwgTMRn9ujETA6SchP2fR)CczUy0O1iHIqEQxOlw)5eYCXOrRVCkKnwUy9NtiZfJgTc5uTlw)5eYCXOrRGS3xgvoHXDX6pNqMlgnA0OrRc59Z5WpgTb
|
||||
File diff suppressed because one or more lines are too long
@@ -1,239 +1,239 @@
|
||||
--UPDATE_BIND_TABLE UPDATE_BINDS UPDATE_BAR_TABLE UPDATE_BARS DELETE_SET LIST_SETS
|
||||
--[[
|
||||
UPDATE_BIND_TABLE saves current binds
|
||||
UPDATE_BINDS restores saved binds
|
||||
UPDATE_BAR_TABLE saves current bar layout also supports sets
|
||||
UPDATE_BARS restores bar layout; defaults to the "default" set
|
||||
DELETE_SET deletes a specified set
|
||||
LIST_SETS lists all sets
|
||||
DELETE and LIST only work for bar layouts
|
||||
|
||||
|
||||
|
||||
/run WeakAuras.ScanEvents("UPDATE_BINDS")
|
||||
/run WeakAuras.ScanEvents("UPDATE_BIND_TABLE")
|
||||
|
||||
]]
|
||||
function(e, ...)
|
||||
if InCombatLockdown() ~= 1 then
|
||||
if e == "UPDATE_BIND_TABLE" then
|
||||
if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end
|
||||
if not WeakAurasSaved.CustomTrash.BindTableTwo then WeakAurasSaved.CustomTrash.BindTableTwo = {} end
|
||||
for i = 1, GetNumBindings() do
|
||||
local comm, bind, bind2 = GetBinding(i)
|
||||
if comm and bind2 and not WeakAurasSaved.CustomTrash.BindTableTwo[comm] then
|
||||
print("Adding", comm, "with bind", bind2, "to bind table")
|
||||
WeakAurasSaved.CustomTrash.BindTableTwo[comm] = {}
|
||||
WeakAurasSaved.CustomTrash.BindTableTwo[comm].bind = bind2
|
||||
WeakAurasSaved.CustomTrash.BindTableTwo[comm].index = i
|
||||
end
|
||||
if comm and not bind2 and WeakAurasSaved.CustomTrash.BindTableTwo[comm] then
|
||||
print("Removing", comm, "with no bind from the bind table")
|
||||
WeakAurasSaved.CustomTrash.BindTableTwo[comm] = nil
|
||||
end
|
||||
end
|
||||
elseif e == "UPDATE_BINDS" then
|
||||
for k, v in pairs(WeakAurasSaved.CustomTrash.BindTableTwo) do
|
||||
local command, bind, bind2 = GetBinding(v.index)
|
||||
if bind2 ~= v.bind then
|
||||
--The key should be aura_env.keyBinds[command] but the key is bind2
|
||||
print("Key", command, "has bind", bind2, "but should have", v.bind)
|
||||
if bind2 then SetBinding(bind2) end
|
||||
if v.bind then SetBinding(v.bind, command) end
|
||||
end
|
||||
end
|
||||
SaveBindings(1)
|
||||
elseif e == "UPDATE_BAR_TABLE" then
|
||||
local arg2 = "default"
|
||||
if ... then arg2 = ... end
|
||||
if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end
|
||||
if not WeakAurasSaved.CustomTrash.BarTable then WeakAurasSaved.CustomTrash.BarTable = {} end
|
||||
if not WeakAurasSaved.CustomTrash.BarTable[arg2] then WeakAurasSaved.CustomTrash.BarTable[arg2] = {} end
|
||||
for i = 1, 72 do
|
||||
PickupAction(i)
|
||||
if GetCursorInfo() then
|
||||
local type = GetCursorInfo()
|
||||
local id, name = nil, nil
|
||||
if not type then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = nil end
|
||||
if type == "spell" then
|
||||
id = select(4, GetCursorInfo())
|
||||
elseif type == "mount" then
|
||||
id = select(2, GetCursorInfo())
|
||||
elseif type == "macro" then
|
||||
id = select(2, GetCursorInfo())
|
||||
name = select(1, GetMacroInfo(id))
|
||||
elseif type == "item" then
|
||||
id = select(2, GetCursorInfo())
|
||||
elseif type == "equipmentset" then
|
||||
name = select(2, GetCursorInfo())
|
||||
end --elseif end
|
||||
if not WeakAurasSaved.CustomTrash.BarTable[arg2][i] then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = {} end
|
||||
if id ~= WeakAurasSaved.CustomTrash.BarTable[arg2][i].id or type ~= WeakAurasSaved.CustomTrash.BarTable[arg2][i].type then
|
||||
WeakAurasSaved.CustomTrash.BarTable[arg2][i].type = type
|
||||
WeakAurasSaved.CustomTrash.BarTable[arg2][i].id = id
|
||||
WeakAurasSaved.CustomTrash.BarTable[arg2][i].name = name
|
||||
if not name then
|
||||
print("Adding", type, "by id", id, "on slot", i, "to the table")
|
||||
elseif name then
|
||||
print("Adding", type, "by id", id, "and name", name, "on slot", i, "to the table")
|
||||
end
|
||||
end
|
||||
end
|
||||
PickupAction(i)
|
||||
end
|
||||
elseif e == "UPDATE_BARS" then
|
||||
local arg2 = "default"
|
||||
if ... then arg2 = ... end
|
||||
for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable[arg2]) do
|
||||
if v.type == "spell" then
|
||||
if GetCursorInfo() then ClearCursor() end
|
||||
PickupAction(k)
|
||||
if GetCursorInfo() then
|
||||
local id = select(4, GetCursorInfo())
|
||||
if id ~= v.id then
|
||||
ClearCursor()
|
||||
PickupSpell(v.id)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
PickupAction(k)
|
||||
else
|
||||
ClearCursor()
|
||||
PickupSpell(v.id)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
elseif v.type == "mount" then
|
||||
local mid, mindex
|
||||
--Looking for mount in mount journal
|
||||
for i = 1, C_MountJournal.GetNumMounts() do
|
||||
mid = select(12, C_MountJournal.GetDisplayedMountInfo(i))
|
||||
local ishave = select(11, C_MountJournal.GetDisplayedMountInfo(i))
|
||||
if mid == v.id then
|
||||
mindex = i
|
||||
break
|
||||
end
|
||||
if ishave == false then
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
--Checking what's on the bar
|
||||
if GetCursorInfo() then ClearCursor() end
|
||||
PickupAction(k)
|
||||
if GetCursorInfo() then
|
||||
local id = select(2, GetCursorInfo())
|
||||
if id ~= v.id and mindex then
|
||||
ClearCursor()
|
||||
C_MountJournal.Pickup(mindex)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
PickupAction(k)
|
||||
elseif not GetCursorInfo() and mindex then
|
||||
ClearCursor()
|
||||
C_MountJournal.Pickup(mindex)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
elseif v.type == "macro" then
|
||||
if GetCursorInfo() then ClearCursor() end
|
||||
PickupAction(k)
|
||||
if GetCursorInfo() then
|
||||
local id = select(2, GetCursorInfo())
|
||||
local name = select(1, GetMacroInfo(id))
|
||||
if id ~= v.id or name ~= v.name then
|
||||
ClearCursor()
|
||||
PickupMacro(v.id)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
PickupAction(k)
|
||||
else
|
||||
ClearCursor()
|
||||
local name = GetMacroInfo(v.id)
|
||||
if name == v.name then
|
||||
PickupMacro(v.id)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
end
|
||||
elseif v.type == "equipmentset" then
|
||||
if GetCursorInfo() then ClearCursor() end
|
||||
local eqindex
|
||||
for i = 1, GetNumEquipmentSets() do
|
||||
local nam = GetEquipmentSetInfo(i)
|
||||
if nam == v.name then
|
||||
eqindex = i
|
||||
break
|
||||
end
|
||||
end
|
||||
if eqindex then
|
||||
PickupAction(k)
|
||||
if GetCursorInfo() then
|
||||
local name = select(2, GetCursorInfo())
|
||||
if name ~= v.name then
|
||||
ClearCursor()
|
||||
PickupEquipmentSet(eqindex)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
PickupAction(k)
|
||||
else
|
||||
ClearCursor()
|
||||
PickupEquipmentSet(eqindex)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
end
|
||||
elseif v.type == "item" then
|
||||
if GetCursorInfo() then ClearCursor() end
|
||||
local ios, jos
|
||||
for i = 0, 4 do
|
||||
for j = 1, GetContainerNumSlots(i) do
|
||||
local link = select(7, GetContainerItemInfo(i, j))
|
||||
if link then
|
||||
local id = link:match("item:(%d+):")
|
||||
if id then
|
||||
id = tonumber(id)
|
||||
if id == v.id then
|
||||
ios = i
|
||||
jos = j
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if ios and jos then
|
||||
PickupAction(k)
|
||||
if GetCursorInfo() then
|
||||
local id = select(2, GetCursorInfo())
|
||||
if id ~= v.id then
|
||||
ClearCursor()
|
||||
PickupContainerItem(ios, jos)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
PickupAction(k)
|
||||
else
|
||||
ClearCursor()
|
||||
PickupContainerItem(ios, jos)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
end
|
||||
end --elseif end
|
||||
end
|
||||
elseif e == "DELETE_SET" then
|
||||
local arg2 = ...
|
||||
if arg2 and WeakAurasSaved.CustomTrash.BarTable[arg2] then
|
||||
WeakAurasSaved.CustomTrash.BarTable[arg2] = nil
|
||||
end
|
||||
elseif e == "LIST_SETS" then
|
||||
for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable) do
|
||||
print(k)
|
||||
end
|
||||
end --elseif end
|
||||
end
|
||||
end
|
||||
--UPDATE_BIND_TABLE UPDATE_BINDS UPDATE_BAR_TABLE UPDATE_BARS DELETE_SET LIST_SETS
|
||||
--[[
|
||||
UPDATE_BIND_TABLE saves current binds
|
||||
UPDATE_BINDS restores saved binds
|
||||
UPDATE_BAR_TABLE saves current bar layout also supports sets
|
||||
UPDATE_BARS restores bar layout; defaults to the "default" set
|
||||
DELETE_SET deletes a specified set
|
||||
LIST_SETS lists all sets
|
||||
DELETE and LIST only work for bar layouts
|
||||
|
||||
|
||||
|
||||
/run WeakAuras.ScanEvents("UPDATE_BINDS")
|
||||
/run WeakAuras.ScanEvents("UPDATE_BIND_TABLE")
|
||||
|
||||
]]
|
||||
function(e, ...)
|
||||
if InCombatLockdown() ~= 1 then
|
||||
if e == "UPDATE_BIND_TABLE" then
|
||||
if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end
|
||||
if not WeakAurasSaved.CustomTrash.BindTableTwo then WeakAurasSaved.CustomTrash.BindTableTwo = {} end
|
||||
for i = 1, GetNumBindings() do
|
||||
local comm, bind, bind2 = GetBinding(i)
|
||||
if comm and bind2 and not WeakAurasSaved.CustomTrash.BindTableTwo[comm] then
|
||||
print("Adding", comm, "with bind", bind2, "to bind table")
|
||||
WeakAurasSaved.CustomTrash.BindTableTwo[comm] = {}
|
||||
WeakAurasSaved.CustomTrash.BindTableTwo[comm].bind = bind2
|
||||
WeakAurasSaved.CustomTrash.BindTableTwo[comm].index = i
|
||||
end
|
||||
if comm and not bind2 and WeakAurasSaved.CustomTrash.BindTableTwo[comm] then
|
||||
print("Removing", comm, "with no bind from the bind table")
|
||||
WeakAurasSaved.CustomTrash.BindTableTwo[comm] = nil
|
||||
end
|
||||
end
|
||||
elseif e == "UPDATE_BINDS" then
|
||||
for k, v in pairs(WeakAurasSaved.CustomTrash.BindTableTwo) do
|
||||
local command, bind, bind2 = GetBinding(v.index)
|
||||
if bind2 ~= v.bind then
|
||||
--The key should be aura_env.keyBinds[command] but the key is bind2
|
||||
print("Key", command, "has bind", bind2, "but should have", v.bind)
|
||||
if bind2 then SetBinding(bind2) end
|
||||
if v.bind then SetBinding(v.bind, command) end
|
||||
end
|
||||
end
|
||||
SaveBindings(1)
|
||||
elseif e == "UPDATE_BAR_TABLE" then
|
||||
local arg2 = "default"
|
||||
if ... then arg2 = ... end
|
||||
if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end
|
||||
if not WeakAurasSaved.CustomTrash.BarTable then WeakAurasSaved.CustomTrash.BarTable = {} end
|
||||
if not WeakAurasSaved.CustomTrash.BarTable[arg2] then WeakAurasSaved.CustomTrash.BarTable[arg2] = {} end
|
||||
for i = 1, 72 do
|
||||
PickupAction(i)
|
||||
if GetCursorInfo() then
|
||||
local type = GetCursorInfo()
|
||||
local id, name = nil, nil
|
||||
if not type then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = nil end
|
||||
if type == "spell" then
|
||||
id = select(4, GetCursorInfo())
|
||||
elseif type == "mount" then
|
||||
id = select(2, GetCursorInfo())
|
||||
elseif type == "macro" then
|
||||
id = select(2, GetCursorInfo())
|
||||
name = select(1, GetMacroInfo(id))
|
||||
elseif type == "item" then
|
||||
id = select(2, GetCursorInfo())
|
||||
elseif type == "equipmentset" then
|
||||
name = select(2, GetCursorInfo())
|
||||
end --elseif end
|
||||
if not WeakAurasSaved.CustomTrash.BarTable[arg2][i] then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = {} end
|
||||
if id ~= WeakAurasSaved.CustomTrash.BarTable[arg2][i].id or type ~= WeakAurasSaved.CustomTrash.BarTable[arg2][i].type then
|
||||
WeakAurasSaved.CustomTrash.BarTable[arg2][i].type = type
|
||||
WeakAurasSaved.CustomTrash.BarTable[arg2][i].id = id
|
||||
WeakAurasSaved.CustomTrash.BarTable[arg2][i].name = name
|
||||
if not name then
|
||||
print("Adding", type, "by id", id, "on slot", i, "to the table")
|
||||
elseif name then
|
||||
print("Adding", type, "by id", id, "and name", name, "on slot", i, "to the table")
|
||||
end
|
||||
end
|
||||
end
|
||||
PickupAction(i)
|
||||
end
|
||||
elseif e == "UPDATE_BARS" then
|
||||
local arg2 = "default"
|
||||
if ... then arg2 = ... end
|
||||
for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable[arg2]) do
|
||||
if v.type == "spell" then
|
||||
if GetCursorInfo() then ClearCursor() end
|
||||
PickupAction(k)
|
||||
if GetCursorInfo() then
|
||||
local id = select(4, GetCursorInfo())
|
||||
if id ~= v.id then
|
||||
ClearCursor()
|
||||
PickupSpell(v.id)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
PickupAction(k)
|
||||
else
|
||||
ClearCursor()
|
||||
PickupSpell(v.id)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
elseif v.type == "mount" then
|
||||
local mid, mindex
|
||||
--Looking for mount in mount journal
|
||||
for i = 1, C_MountJournal.GetNumMounts() do
|
||||
mid = select(12, C_MountJournal.GetDisplayedMountInfo(i))
|
||||
local ishave = select(11, C_MountJournal.GetDisplayedMountInfo(i))
|
||||
if mid == v.id then
|
||||
mindex = i
|
||||
break
|
||||
end
|
||||
if ishave == false then
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
--Checking what's on the bar
|
||||
if GetCursorInfo() then ClearCursor() end
|
||||
PickupAction(k)
|
||||
if GetCursorInfo() then
|
||||
local id = select(2, GetCursorInfo())
|
||||
if id ~= v.id and mindex then
|
||||
ClearCursor()
|
||||
C_MountJournal.Pickup(mindex)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
PickupAction(k)
|
||||
elseif not GetCursorInfo() and mindex then
|
||||
ClearCursor()
|
||||
C_MountJournal.Pickup(mindex)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
elseif v.type == "macro" then
|
||||
if GetCursorInfo() then ClearCursor() end
|
||||
PickupAction(k)
|
||||
if GetCursorInfo() then
|
||||
local id = select(2, GetCursorInfo())
|
||||
local name = select(1, GetMacroInfo(id))
|
||||
if id ~= v.id or name ~= v.name then
|
||||
ClearCursor()
|
||||
PickupMacro(v.id)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
PickupAction(k)
|
||||
else
|
||||
ClearCursor()
|
||||
local name = GetMacroInfo(v.id)
|
||||
if name == v.name then
|
||||
PickupMacro(v.id)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
end
|
||||
elseif v.type == "equipmentset" then
|
||||
if GetCursorInfo() then ClearCursor() end
|
||||
local eqindex
|
||||
for i = 1, GetNumEquipmentSets() do
|
||||
local nam = GetEquipmentSetInfo(i)
|
||||
if nam == v.name then
|
||||
eqindex = i
|
||||
break
|
||||
end
|
||||
end
|
||||
if eqindex then
|
||||
PickupAction(k)
|
||||
if GetCursorInfo() then
|
||||
local name = select(2, GetCursorInfo())
|
||||
if name ~= v.name then
|
||||
ClearCursor()
|
||||
PickupEquipmentSet(eqindex)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
PickupAction(k)
|
||||
else
|
||||
ClearCursor()
|
||||
PickupEquipmentSet(eqindex)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
end
|
||||
elseif v.type == "item" then
|
||||
if GetCursorInfo() then ClearCursor() end
|
||||
local ios, jos
|
||||
for i = 0, 4 do
|
||||
for j = 1, GetContainerNumSlots(i) do
|
||||
local link = select(7, GetContainerItemInfo(i, j))
|
||||
if link then
|
||||
local id = link:match("item:(%d+):")
|
||||
if id then
|
||||
id = tonumber(id)
|
||||
if id == v.id then
|
||||
ios = i
|
||||
jos = j
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if ios and jos then
|
||||
PickupAction(k)
|
||||
if GetCursorInfo() then
|
||||
local id = select(2, GetCursorInfo())
|
||||
if id ~= v.id then
|
||||
ClearCursor()
|
||||
PickupContainerItem(ios, jos)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
PickupAction(k)
|
||||
else
|
||||
ClearCursor()
|
||||
PickupContainerItem(ios, jos)
|
||||
PickupAction(k)
|
||||
ClearCursor()
|
||||
end
|
||||
end
|
||||
end --elseif end
|
||||
end
|
||||
elseif e == "DELETE_SET" then
|
||||
local arg2 = ...
|
||||
if arg2 and WeakAurasSaved.CustomTrash.BarTable[arg2] then
|
||||
WeakAurasSaved.CustomTrash.BarTable[arg2] = nil
|
||||
end
|
||||
elseif e == "LIST_SETS" then
|
||||
for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable) do
|
||||
print(k)
|
||||
end
|
||||
end --elseif end
|
||||
end
|
||||
end
|
||||
@@ -1,19 +1,19 @@
|
||||
function()
|
||||
results = C_AuctionHouse.GetBrowseResults()
|
||||
-- DevTools_Dump(results)
|
||||
for k,v in ipairs(results) do
|
||||
local itemID = v.itemKey.itemID
|
||||
local itemName = GetItemInfo(itemID)
|
||||
if aura_env.sellPriceThresholds[itemID] then
|
||||
if v.minPrice > aura_env.sellPriceThresholds[itemID] then
|
||||
print(itemName, "too expensive")
|
||||
SendChatMessage("POKE", "WHISPER", nil, UnitName("player"))
|
||||
end
|
||||
elseif aura_env.buyPriceThresholds[itemID] then
|
||||
if v.minPrice < aura_env.buyPriceThresholds[itemID] then
|
||||
print(itemName, "too cheap")
|
||||
SendChatMessage("POKE", "WHISPER", nil, UnitName("player"))
|
||||
end
|
||||
end
|
||||
end
|
||||
function()
|
||||
results = C_AuctionHouse.GetBrowseResults()
|
||||
-- DevTools_Dump(results)
|
||||
for k,v in ipairs(results) do
|
||||
local itemID = v.itemKey.itemID
|
||||
local itemName = GetItemInfo(itemID)
|
||||
if aura_env.sellPriceThresholds[itemID] then
|
||||
if v.minPrice > aura_env.sellPriceThresholds[itemID] then
|
||||
print(itemName, "too expensive")
|
||||
SendChatMessage("POKE", "WHISPER", nil, UnitName("player"))
|
||||
end
|
||||
elseif aura_env.buyPriceThresholds[itemID] then
|
||||
if v.minPrice < aura_env.buyPriceThresholds[itemID] then
|
||||
print(itemName, "too cheap")
|
||||
SendChatMessage("POKE", "WHISPER", nil, UnitName("player"))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,6 +1,6 @@
|
||||
function()
|
||||
if not aura_env.last or aura_env.last < GetTime() - aura_env.throttleTime then
|
||||
aura_env.last = GetTime()
|
||||
AuctionHouseFrame.SearchBar.FavoritesSearchButton:Click()
|
||||
end
|
||||
function()
|
||||
if not aura_env.last or aura_env.last < GetTime() - aura_env.throttleTime then
|
||||
aura_env.last = GetTime()
|
||||
AuctionHouseFrame.SearchBar.FavoritesSearchButton:Click()
|
||||
end
|
||||
end
|
||||
@@ -1,17 +1,17 @@
|
||||
aura_env.throttleTime = 10
|
||||
|
||||
aura_env.sellPriceThresholds = {
|
||||
[168446] = 5000 * 100 * 100, -- Accord of Critical Strike
|
||||
[168447] = 5000 * 100 * 100, -- Accord of Haste
|
||||
[168448] = 5000 * 100 * 100, -- Accord of Mastery
|
||||
[168449] = 5000 * 100 * 100, -- Accord of Versatility
|
||||
[168592] = 4500 * 100 * 100, -- Oceanic Restoration
|
||||
[168496] = 4500 * 100 * 100, -- Force Multiplier
|
||||
[168593] = 4500 * 100 * 100, -- Machinist's Brilliance
|
||||
[168598] = 4500 * 100 * 100, -- Naga Hide
|
||||
}
|
||||
|
||||
aura_env.buyPriceThresholds = {
|
||||
[152576] = 5 * 100 * 100, -- Tidesrpay Linen
|
||||
[152877] = 500 * 100 * 100, -- Veiled Crystal
|
||||
}
|
||||
aura_env.throttleTime = 10
|
||||
|
||||
aura_env.sellPriceThresholds = {
|
||||
[168446] = 5000 * 100 * 100, -- Accord of Critical Strike
|
||||
[168447] = 5000 * 100 * 100, -- Accord of Haste
|
||||
[168448] = 5000 * 100 * 100, -- Accord of Mastery
|
||||
[168449] = 5000 * 100 * 100, -- Accord of Versatility
|
||||
[168592] = 4500 * 100 * 100, -- Oceanic Restoration
|
||||
[168496] = 4500 * 100 * 100, -- Force Multiplier
|
||||
[168593] = 4500 * 100 * 100, -- Machinist's Brilliance
|
||||
[168598] = 4500 * 100 * 100, -- Naga Hide
|
||||
}
|
||||
|
||||
aura_env.buyPriceThresholds = {
|
||||
[152576] = 5 * 100 * 100, -- Tidesrpay Linen
|
||||
[152877] = 500 * 100 * 100, -- Veiled Crystal
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
/run AuctionHouseFrame.SearchBar.FavoritesSearchButton:Click()
|
||||
|
||||
/run AuctionHouseFrame.SearchBar.FavoritesSearchButton:Click()
|
||||
|
||||
/dump C_AuctionHouse.GetBrowseResults()
|
||||
@@ -1,3 +1,3 @@
|
||||
function(progress)
|
||||
return aura_env.Display.color.r, aura_env.Display.color.g, aura_env.Display.color.b, 1
|
||||
end
|
||||
function(progress)
|
||||
return aura_env.Display.color.r, aura_env.Display.color.g, aura_env.Display.color.b, 1
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
function()
|
||||
local current, max = aura_env.ShieldManager.GetStats()
|
||||
return current, max, 1
|
||||
function()
|
||||
local current, max = aura_env.ShieldManager.GetStats()
|
||||
return current, max, 1
|
||||
end
|
||||
@@ -1,8 +1,8 @@
|
||||
-- TICKER_500
|
||||
function()
|
||||
for _, shield in pairs(aura_env.Shields) do
|
||||
shield:Update()
|
||||
end
|
||||
aura_env.Display.Update()
|
||||
return true
|
||||
-- TICKER_500
|
||||
function()
|
||||
for _, shield in pairs(aura_env.Shields) do
|
||||
shield:Update()
|
||||
end
|
||||
aura_env.Display.Update()
|
||||
return true
|
||||
end
|
||||
@@ -1,28 +1,28 @@
|
||||
---@param table table
|
||||
---@param depth number?
|
||||
function DumpTable(table, depth)
|
||||
if depth == nil then depth = 0 end
|
||||
if depth > 200 then
|
||||
print("Error: Depth > 200 in dumpTable()")
|
||||
return
|
||||
end
|
||||
for k, v in pairs(table) do
|
||||
if type(v) == "table" then
|
||||
print(string.rep(" ", depth) .. k .. ":")
|
||||
DumpTable(v, depth + 1)
|
||||
else
|
||||
print(string.rep(" ", depth) .. k .. ": ", v)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local colorer = Colorer.new()
|
||||
|
||||
local value = 1.21
|
||||
local rgb = colorer:Interpolate(value)
|
||||
|
||||
for i = 1, 150 do
|
||||
local value = i / 100
|
||||
local rgb = colorer:Interpolate(value)
|
||||
print(value, rgb.r, rgb.g, rgb.b)
|
||||
end
|
||||
---@param table table
|
||||
---@param depth number?
|
||||
function DumpTable(table, depth)
|
||||
if depth == nil then depth = 0 end
|
||||
if depth > 200 then
|
||||
print("Error: Depth > 200 in dumpTable()")
|
||||
return
|
||||
end
|
||||
for k, v in pairs(table) do
|
||||
if type(v) == "table" then
|
||||
print(string.rep(" ", depth) .. k .. ":")
|
||||
DumpTable(v, depth + 1)
|
||||
else
|
||||
print(string.rep(" ", depth) .. k .. ": ", v)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local colorer = Colorer.new()
|
||||
|
||||
local value = 1.21
|
||||
local rgb = colorer:Interpolate(value)
|
||||
|
||||
for i = 1, 150 do
|
||||
local value = i / 100
|
||||
local rgb = colorer:Interpolate(value)
|
||||
print(value, rgb.r, rgb.g, rgb.b)
|
||||
end
|
||||
@@ -1,3 +1,3 @@
|
||||
function()
|
||||
return aura_env.Display.current, aura_env.Display.max, aura_env.Display.ofHp
|
||||
function()
|
||||
return aura_env.Display.current, aura_env.Display.max, aura_env.Display.ofHp
|
||||
end
|
||||
@@ -1,5 +1,5 @@
|
||||
--- PLAYER_TARGET_CHANGED
|
||||
--- Deprecated in favor of Heimdall.AchievementSniffer
|
||||
--function(allstates)
|
||||
-- aura_env.TryInspect()
|
||||
--end
|
||||
--- PLAYER_TARGET_CHANGED
|
||||
--- Deprecated in favor of Heimdall.AchievementSniffer
|
||||
--function(allstates)
|
||||
-- aura_env.TryInspect()
|
||||
--end
|
||||
@@ -1,16 +1,16 @@
|
||||
--- INSPECT_ACHIEVEMENT_READY
|
||||
--- Deprecated in favor of Heimdall.AchievementSniffer
|
||||
--function()
|
||||
-- local targetGuid = UnitGUID("target")
|
||||
-- if not targetGuid then return end
|
||||
-- if not string.match(targetGuid, "Player") then return end
|
||||
-- local targetName = UnitName("target")
|
||||
--
|
||||
-- local should = false
|
||||
-- if not WeakAurasSaved.Cyka.AchievementSniffer[targetName] then should = true end
|
||||
-- if WeakAurasSaved.Cyka.AchievementSniffer2[targetName] then should = false end
|
||||
-- if aura_env.config.rescan then should = true end
|
||||
-- if not should then return end
|
||||
--
|
||||
-- aura_env.Scan(targetName)
|
||||
--end
|
||||
--- INSPECT_ACHIEVEMENT_READY
|
||||
--- Deprecated in favor of Heimdall.AchievementSniffer
|
||||
--function()
|
||||
-- local targetGuid = UnitGUID("target")
|
||||
-- if not targetGuid then return end
|
||||
-- if not string.match(targetGuid, "Player") then return end
|
||||
-- local targetName = UnitName("target")
|
||||
--
|
||||
-- local should = false
|
||||
-- if not WeakAurasSaved.Cyka.AchievementSniffer[targetName] then should = true end
|
||||
-- if WeakAurasSaved.Cyka.AchievementSniffer2[targetName] then should = false end
|
||||
-- if aura_env.config.rescan then should = true end
|
||||
-- if not should then return end
|
||||
--
|
||||
-- aura_env.Scan(targetName)
|
||||
--end
|
||||
@@ -1,4 +1,4 @@
|
||||
-- TICKER_500
|
||||
function()
|
||||
aura_env.TryInspect()
|
||||
-- TICKER_500
|
||||
function()
|
||||
aura_env.TryInspect()
|
||||
end
|
||||
@@ -1,32 +1,32 @@
|
||||
--- TICKER_200
|
||||
function(allstates)
|
||||
for i = 0, 40 do
|
||||
local unit = "nameplate" .. i
|
||||
if UnitIsPlayer(unit) then
|
||||
local name = UnitName(unit)
|
||||
local seen = false
|
||||
if not Heimdall_Achievements then return end
|
||||
if not Heimdall_Achievements.players then return end
|
||||
if not Heimdall_Achievements.alreadySeen then return end
|
||||
|
||||
if Heimdall_Achievements.players[name] then seen = true end
|
||||
if Heimdall_Achievements.alreadySeen[name] then seen = true end
|
||||
|
||||
allstates[unit] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
name = name,
|
||||
unit = unit,
|
||||
seen = seen,
|
||||
}
|
||||
else
|
||||
allstates[unit] = {
|
||||
show = false,
|
||||
changed = true,
|
||||
seen = false,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
--- TICKER_200
|
||||
function(allstates)
|
||||
for i = 0, 40 do
|
||||
local unit = "nameplate" .. i
|
||||
if UnitIsPlayer(unit) then
|
||||
local name = UnitName(unit)
|
||||
local seen = false
|
||||
if not Heimdall_Achievements then return end
|
||||
if not Heimdall_Achievements.players then return end
|
||||
if not Heimdall_Achievements.alreadySeen then return end
|
||||
|
||||
if Heimdall_Achievements.players[name] then seen = true end
|
||||
if Heimdall_Achievements.alreadySeen[name] then seen = true end
|
||||
|
||||
allstates[unit] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
name = name,
|
||||
unit = unit,
|
||||
seen = seen,
|
||||
}
|
||||
else
|
||||
allstates[unit] = {
|
||||
show = false,
|
||||
changed = true,
|
||||
seen = false,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
seen = "bool",
|
||||
{
|
||||
seen = "bool",
|
||||
}
|
||||
@@ -1,135 +1,135 @@
|
||||
main achievement frame is AchievementFrame
|
||||
The tabs are
|
||||
AchievementFrameTab1 2 3
|
||||
First is "Achievements", 2nd guild and 3rd statistics
|
||||
Statistics might also be useful but that would be hard to tell, for now
|
||||
|
||||
AchievementFrame > AchievementFrameComparison
|
||||
The comparison frame is AchievementFrameComparisonContainer (N/A)
|
||||
Scroll buttons are AchievementFrameComparisonContainerScrollBarScrollDownButton (scrollDown) and AchievementFrameComparisonContainerScrollBarScrollUpButton (scrollUp)
|
||||
|
||||
The actual individual achievement data is in
|
||||
AchievementFrameComparisonContainerScrollChild (ScrollChild) (not a typo)
|
||||
It has achievements listed as:
|
||||
AchievementFrameComparisonContainerButton1 .. 10
|
||||
Always seems to be 10
|
||||
Scrolling should move 1 new into the view and 1 old out of view
|
||||
|
||||
The buttons themselves represent one row (one achievement)
|
||||
Our achievement is found in
|
||||
AchievementFrameComparisonContainerButton1Player (player)
|
||||
AchievementFrameComparisonContainerButton1Friend (friend)
|
||||
Ours has names while friend has no names
|
||||
So we will have to use names from Player and dates from Friend
|
||||
|
||||
Name, title, is under AchievementFrameComparisonContainerButton1PlayerLabel (label)
|
||||
Friend date achieved is under AchievementFrameComparisonContainerButton1FriendStatus (status)
|
||||
|
||||
We can also get achievement ID from the button frame
|
||||
AchievementFrameComparisonContainerButton1P under the "id" property
|
||||
|
||||
Categories are under
|
||||
AchievementFrameCategories (N/A) > AchievementFrameCategoriesContainer (N/A)
|
||||
|
||||
Structure is the same as AchievementFrameComparisonContainer
|
||||
We have scroll child and scroll up/down
|
||||
Although there's no scrolling so I'm not sure what we scroll
|
||||
Not true - the buttons are categories to be expanded into
|
||||
And clicking one does expand
|
||||
So after we click we have to recalculate their positions
|
||||
|
||||
In AchievementFrameCategoriesContainer we have many buttons which correspond to categories
|
||||
The best way of browsing them that I can see is reading the title of each
|
||||
Since we are only interested in a few
|
||||
AchievementFrameCategoriesContainerButton1 .. n
|
||||
|
||||
The title is the same structure as the achievement title
|
||||
AchievementFrameCategoriesContainerButton1Label (label)
|
||||
Under each button of course
|
||||
|
||||
We can also get the category ID and name from the button frame
|
||||
AchievementFrameCategoriesContainerButton1
|
||||
Under "categoryID" and "name"
|
||||
|
||||
|
||||
[11:20 PM] [Virag's DT]: 23:20:04 INSPECT_ACHIEVEMENT_READY - (2) table: 000001AF07021540
|
||||
Fires when the achievement frame is ready
|
||||
Argument #2 is the GUID of the player
|
||||
None is fired when the frame is closed...
|
||||
I guess we'll have to check each frame we go over
|
||||
|
||||
See
|
||||
canInspect = CanInspect("unit", showError)
|
||||
Arguments:
|
||||
unit - A unit to inspect (string, unitID)
|
||||
showError - True to fire a UI_ERROR_MESSAGE event (causing the default UI to display an error message) if the unit cannot be inspected; otherwise false (boolean)
|
||||
Returns:
|
||||
canInspect - 1 if the unit can be inspected; otherwise nil (1nil)
|
||||
|
||||
Actually nevermind, this seems much easier and simpler:
|
||||
completed, month, day, year = GetAchievementComparisonInfo(achievementID)
|
||||
completed
|
||||
boolean - Returns true/false depending on whether the unit has completed the achievement or not.
|
||||
month
|
||||
number - Month in which the unit has completed the achievement. Returns nil if completed is false.
|
||||
day
|
||||
number - Day of the month in which the unit has completed the achievement. Returns nil if completed is false.
|
||||
year
|
||||
number - Year (two digits, 21st century is assumed) in which the unit has completed the achievement. Returns nil if completed is false.
|
||||
Only accurate after the after SetAchievementComparisonUnit is called and the INSPECT_ACHIEVEMENT_READY event has fired.
|
||||
|
||||
success = SetAchievementComparisonUnit(unit)
|
||||
success
|
||||
boolean - Returns true/false depending on whether the unit is valid.
|
||||
-> INSPECT_ACHIEVEMENT_READY
|
||||
|
||||
522 -- Somebody Likes Me
|
||||
523 -- 5 Exalted Reputations
|
||||
524 -- 10 Exalted Reputations
|
||||
521 -- 15 Exalted Reputations
|
||||
520 -- 20 Exalted Reputations
|
||||
519 -- 25 Exalted Reputations
|
||||
518 -- 30 Exalted Reputations
|
||||
1556 -- 25 Fish
|
||||
1557 -- 50 Fish
|
||||
1558 -- 100 Fish
|
||||
238 -- An Honorable Kill
|
||||
513 -- 100 Honorable Kills
|
||||
515 -- 500 Honorable Kills
|
||||
516 -- 1000 Honorable Kills
|
||||
512 -- 5000 Honorable Kills
|
||||
509 -- 10000 Honorable Kills
|
||||
239 -- 25000 Honorable Kills
|
||||
503 -- 50 Quests Completed
|
||||
504 -- 100 Quests Completed
|
||||
505 -- 250 Quests Completed
|
||||
506 -- 500 Quests Completed
|
||||
507 -- 1000 Quests Completed
|
||||
1017 -- Can I Keep Him?
|
||||
15 -- Plenty of Pets
|
||||
1248 -- Plethora of Pets
|
||||
1250 -- Shop Smart, Shop Pet...Smart
|
||||
2516 -- Lil' Game Hunter
|
||||
5876 -- Petting Zoo
|
||||
11188 -- Broken Isles Explorer
|
||||
11190 -- Broken Isles Pathfinder, Part One
|
||||
11157 -- Loremaster of Legion
|
||||
10763 -- Azsuna Matata
|
||||
10790 -- Vrykul Story, Bro
|
||||
11124 -- Good Suramaritan
|
||||
10059 -- Ain't No Mountain High Enough
|
||||
10698 -- That's Val'sharah Folks!
|
||||
10672 -- Broken Isles Diplomat
|
||||
10665 -- Explore Azsuna
|
||||
10666 -- Explore Val'sharah
|
||||
10667 -- Explore Highmountain
|
||||
10668 -- Explore Stormheim
|
||||
10669 -- Explore Suramar
|
||||
12069 -- Explore Argus
|
||||
2141 -- Stable Keeper
|
||||
2142 -- Filling Up The Barn
|
||||
2143 -- Leading the Cavalry
|
||||
7382 -- Dynamic Duo
|
||||
7383 -- Terrific Trio
|
||||
7384 -- Quintessential Quintet
|
||||
main achievement frame is AchievementFrame
|
||||
The tabs are
|
||||
AchievementFrameTab1 2 3
|
||||
First is "Achievements", 2nd guild and 3rd statistics
|
||||
Statistics might also be useful but that would be hard to tell, for now
|
||||
|
||||
AchievementFrame > AchievementFrameComparison
|
||||
The comparison frame is AchievementFrameComparisonContainer (N/A)
|
||||
Scroll buttons are AchievementFrameComparisonContainerScrollBarScrollDownButton (scrollDown) and AchievementFrameComparisonContainerScrollBarScrollUpButton (scrollUp)
|
||||
|
||||
The actual individual achievement data is in
|
||||
AchievementFrameComparisonContainerScrollChild (ScrollChild) (not a typo)
|
||||
It has achievements listed as:
|
||||
AchievementFrameComparisonContainerButton1 .. 10
|
||||
Always seems to be 10
|
||||
Scrolling should move 1 new into the view and 1 old out of view
|
||||
|
||||
The buttons themselves represent one row (one achievement)
|
||||
Our achievement is found in
|
||||
AchievementFrameComparisonContainerButton1Player (player)
|
||||
AchievementFrameComparisonContainerButton1Friend (friend)
|
||||
Ours has names while friend has no names
|
||||
So we will have to use names from Player and dates from Friend
|
||||
|
||||
Name, title, is under AchievementFrameComparisonContainerButton1PlayerLabel (label)
|
||||
Friend date achieved is under AchievementFrameComparisonContainerButton1FriendStatus (status)
|
||||
|
||||
We can also get achievement ID from the button frame
|
||||
AchievementFrameComparisonContainerButton1P under the "id" property
|
||||
|
||||
Categories are under
|
||||
AchievementFrameCategories (N/A) > AchievementFrameCategoriesContainer (N/A)
|
||||
|
||||
Structure is the same as AchievementFrameComparisonContainer
|
||||
We have scroll child and scroll up/down
|
||||
Although there's no scrolling so I'm not sure what we scroll
|
||||
Not true - the buttons are categories to be expanded into
|
||||
And clicking one does expand
|
||||
So after we click we have to recalculate their positions
|
||||
|
||||
In AchievementFrameCategoriesContainer we have many buttons which correspond to categories
|
||||
The best way of browsing them that I can see is reading the title of each
|
||||
Since we are only interested in a few
|
||||
AchievementFrameCategoriesContainerButton1 .. n
|
||||
|
||||
The title is the same structure as the achievement title
|
||||
AchievementFrameCategoriesContainerButton1Label (label)
|
||||
Under each button of course
|
||||
|
||||
We can also get the category ID and name from the button frame
|
||||
AchievementFrameCategoriesContainerButton1
|
||||
Under "categoryID" and "name"
|
||||
|
||||
|
||||
[11:20 PM] [Virag's DT]: 23:20:04 INSPECT_ACHIEVEMENT_READY - (2) table: 000001AF07021540
|
||||
Fires when the achievement frame is ready
|
||||
Argument #2 is the GUID of the player
|
||||
None is fired when the frame is closed...
|
||||
I guess we'll have to check each frame we go over
|
||||
|
||||
See
|
||||
canInspect = CanInspect("unit", showError)
|
||||
Arguments:
|
||||
unit - A unit to inspect (string, unitID)
|
||||
showError - True to fire a UI_ERROR_MESSAGE event (causing the default UI to display an error message) if the unit cannot be inspected; otherwise false (boolean)
|
||||
Returns:
|
||||
canInspect - 1 if the unit can be inspected; otherwise nil (1nil)
|
||||
|
||||
Actually nevermind, this seems much easier and simpler:
|
||||
completed, month, day, year = GetAchievementComparisonInfo(achievementID)
|
||||
completed
|
||||
boolean - Returns true/false depending on whether the unit has completed the achievement or not.
|
||||
month
|
||||
number - Month in which the unit has completed the achievement. Returns nil if completed is false.
|
||||
day
|
||||
number - Day of the month in which the unit has completed the achievement. Returns nil if completed is false.
|
||||
year
|
||||
number - Year (two digits, 21st century is assumed) in which the unit has completed the achievement. Returns nil if completed is false.
|
||||
Only accurate after the after SetAchievementComparisonUnit is called and the INSPECT_ACHIEVEMENT_READY event has fired.
|
||||
|
||||
success = SetAchievementComparisonUnit(unit)
|
||||
success
|
||||
boolean - Returns true/false depending on whether the unit is valid.
|
||||
-> INSPECT_ACHIEVEMENT_READY
|
||||
|
||||
522 -- Somebody Likes Me
|
||||
523 -- 5 Exalted Reputations
|
||||
524 -- 10 Exalted Reputations
|
||||
521 -- 15 Exalted Reputations
|
||||
520 -- 20 Exalted Reputations
|
||||
519 -- 25 Exalted Reputations
|
||||
518 -- 30 Exalted Reputations
|
||||
1556 -- 25 Fish
|
||||
1557 -- 50 Fish
|
||||
1558 -- 100 Fish
|
||||
238 -- An Honorable Kill
|
||||
513 -- 100 Honorable Kills
|
||||
515 -- 500 Honorable Kills
|
||||
516 -- 1000 Honorable Kills
|
||||
512 -- 5000 Honorable Kills
|
||||
509 -- 10000 Honorable Kills
|
||||
239 -- 25000 Honorable Kills
|
||||
503 -- 50 Quests Completed
|
||||
504 -- 100 Quests Completed
|
||||
505 -- 250 Quests Completed
|
||||
506 -- 500 Quests Completed
|
||||
507 -- 1000 Quests Completed
|
||||
1017 -- Can I Keep Him?
|
||||
15 -- Plenty of Pets
|
||||
1248 -- Plethora of Pets
|
||||
1250 -- Shop Smart, Shop Pet...Smart
|
||||
2516 -- Lil' Game Hunter
|
||||
5876 -- Petting Zoo
|
||||
11188 -- Broken Isles Explorer
|
||||
11190 -- Broken Isles Pathfinder, Part One
|
||||
11157 -- Loremaster of Legion
|
||||
10763 -- Azsuna Matata
|
||||
10790 -- Vrykul Story, Bro
|
||||
11124 -- Good Suramaritan
|
||||
10059 -- Ain't No Mountain High Enough
|
||||
10698 -- That's Val'sharah Folks!
|
||||
10672 -- Broken Isles Diplomat
|
||||
10665 -- Explore Azsuna
|
||||
10666 -- Explore Val'sharah
|
||||
10667 -- Explore Highmountain
|
||||
10668 -- Explore Stormheim
|
||||
10669 -- Explore Suramar
|
||||
12069 -- Explore Argus
|
||||
2141 -- Stable Keeper
|
||||
2142 -- Filling Up The Barn
|
||||
2143 -- Leading the Cavalry
|
||||
7382 -- Dynamic Duo
|
||||
7383 -- Terrific Trio
|
||||
7384 -- Quintessential Quintet
|
||||
245 -- That Takes Class
|
||||
@@ -1,223 +1,223 @@
|
||||
---@class aura_env
|
||||
---@field achievements table<number, string>
|
||||
---@field Scan fun(playerName: string)
|
||||
---@field TryInspect fun()
|
||||
|
||||
---@class WeakAurasSaved
|
||||
---@field Cyka table<string, table<string, table<number, string>>>
|
||||
|
||||
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
|
||||
if not WeakAurasSaved.Cyka.AchievementSniffer then WeakAurasSaved.Cyka.AchievementSniffer = {} end
|
||||
if not WeakAurasSaved.Cyka.AchievementSniffer2 then WeakAurasSaved.Cyka.AchievementSniffer2 = {} end
|
||||
for k, v in pairs(WeakAurasSaved.Cyka.AchievementSniffer2) do
|
||||
if WeakAurasSaved.Cyka.AchievementSniffer[k] then WeakAurasSaved.Cyka.AchievementSniffer[k] = nil end
|
||||
end
|
||||
|
||||
aura_env.achievements = {
|
||||
15,
|
||||
153,
|
||||
245,
|
||||
506,
|
||||
507,
|
||||
513,
|
||||
524,
|
||||
648,
|
||||
649,
|
||||
651,
|
||||
655,
|
||||
657,
|
||||
660,
|
||||
661,
|
||||
667,
|
||||
668,
|
||||
669,
|
||||
671,
|
||||
676,
|
||||
678,
|
||||
681,
|
||||
682,
|
||||
697,
|
||||
777,
|
||||
958,
|
||||
974,
|
||||
975,
|
||||
1017,
|
||||
1266,
|
||||
1556,
|
||||
1557,
|
||||
1558,
|
||||
1576,
|
||||
2078,
|
||||
2141,
|
||||
2200,
|
||||
4477,
|
||||
4478,
|
||||
4624,
|
||||
4914,
|
||||
4958,
|
||||
4960,
|
||||
5455,
|
||||
5456,
|
||||
5749,
|
||||
5752,
|
||||
6456,
|
||||
6460,
|
||||
6753,
|
||||
6757,
|
||||
6758,
|
||||
6835,
|
||||
7382,
|
||||
7383,
|
||||
7384,
|
||||
7437,
|
||||
7948,
|
||||
8929,
|
||||
8952,
|
||||
8956,
|
||||
8966,
|
||||
8967,
|
||||
8969,
|
||||
8978,
|
||||
8979,
|
||||
8980,
|
||||
8981,
|
||||
8982,
|
||||
8983,
|
||||
9017,
|
||||
9038,
|
||||
9132,
|
||||
9493,
|
||||
9507,
|
||||
10059,
|
||||
10079,
|
||||
10278,
|
||||
10460,
|
||||
10581,
|
||||
10585,
|
||||
10595,
|
||||
10597,
|
||||
10617,
|
||||
10657,
|
||||
10666,
|
||||
10667,
|
||||
10668,
|
||||
10672,
|
||||
10682,
|
||||
10684,
|
||||
10688,
|
||||
10689,
|
||||
10692,
|
||||
10693,
|
||||
10698,
|
||||
10706,
|
||||
10746,
|
||||
10755,
|
||||
10756,
|
||||
10763,
|
||||
10772,
|
||||
10775,
|
||||
10790,
|
||||
10800,
|
||||
10818,
|
||||
10819,
|
||||
10820,
|
||||
10875,
|
||||
10994,
|
||||
11124,
|
||||
11126,
|
||||
11127,
|
||||
11128,
|
||||
11153,
|
||||
11157,
|
||||
11164,
|
||||
11188,
|
||||
11189,
|
||||
11190,
|
||||
11214,
|
||||
11220,
|
||||
11298,
|
||||
11338,
|
||||
11394,
|
||||
11446,
|
||||
11473,
|
||||
11545,
|
||||
11559,
|
||||
11610,
|
||||
11611,
|
||||
11653,
|
||||
11657,
|
||||
11658,
|
||||
11659,
|
||||
11660,
|
||||
11674,
|
||||
11773,
|
||||
11787,
|
||||
11789,
|
||||
11790,
|
||||
11796,
|
||||
11992,
|
||||
11993,
|
||||
11994,
|
||||
11995,
|
||||
11996,
|
||||
11997,
|
||||
11998,
|
||||
11999,
|
||||
12000,
|
||||
12001,
|
||||
12008,
|
||||
12015,
|
||||
12020,
|
||||
12026,
|
||||
12028,
|
||||
12030,
|
||||
12072,
|
||||
12074,
|
||||
12085,
|
||||
12086,
|
||||
12103,
|
||||
12110,
|
||||
12445,
|
||||
12447,
|
||||
12448,
|
||||
}
|
||||
|
||||
aura_env.TryInspect = function()
|
||||
local targetPlayer = UnitIsPlayer("target")
|
||||
if not targetPlayer then return end
|
||||
local targetName = UnitName("target")
|
||||
|
||||
local should = false
|
||||
if not WeakAurasSaved.Cyka.AchievementSniffer[targetName] then should = true end
|
||||
if WeakAurasSaved.Cyka.AchievementSniffer2[targetName] then should = false end
|
||||
if aura_env.config.rescan then should = true end
|
||||
if not should then return end
|
||||
|
||||
local canInspect = CheckInteractDistance("target", 1)
|
||||
if canInspect then SetAchievementComparisonUnit("target") end
|
||||
end
|
||||
|
||||
---@param playerName string
|
||||
aura_env.Scan = function(playerName)
|
||||
WeakAurasSaved.Cyka.AchievementSniffer[playerName] = {}
|
||||
for i, aid in ipairs(aura_env.achievements) do
|
||||
local completed, month, day, year = GetAchievementComparisonInfo(aid)
|
||||
if completed then
|
||||
---@type string
|
||||
local yearstr = "" .. year
|
||||
if year < 100 then yearstr = "20" .. year end
|
||||
|
||||
local date = string.format("%04d-%02d-%02d", yearstr, month, day)
|
||||
|
||||
local data = {
|
||||
id = aid,
|
||||
date = date,
|
||||
completed = completed,
|
||||
}
|
||||
WeakAurasSaved.Cyka.AchievementSniffer[playerName][aid] = data
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--/run WeakAurasSaved.Cyka.AchievementSniffer = {}
|
||||
--/dump WeakAurasSaved.Cyka.AchievementSniffer["Pinkleta"]
|
||||
---@class aura_env
|
||||
---@field achievements table<number, string>
|
||||
---@field Scan fun(playerName: string)
|
||||
---@field TryInspect fun()
|
||||
|
||||
---@class WeakAurasSaved
|
||||
---@field Cyka table<string, table<string, table<number, string>>>
|
||||
|
||||
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
|
||||
if not WeakAurasSaved.Cyka.AchievementSniffer then WeakAurasSaved.Cyka.AchievementSniffer = {} end
|
||||
if not WeakAurasSaved.Cyka.AchievementSniffer2 then WeakAurasSaved.Cyka.AchievementSniffer2 = {} end
|
||||
for k, v in pairs(WeakAurasSaved.Cyka.AchievementSniffer2) do
|
||||
if WeakAurasSaved.Cyka.AchievementSniffer[k] then WeakAurasSaved.Cyka.AchievementSniffer[k] = nil end
|
||||
end
|
||||
|
||||
aura_env.achievements = {
|
||||
15,
|
||||
153,
|
||||
245,
|
||||
506,
|
||||
507,
|
||||
513,
|
||||
524,
|
||||
648,
|
||||
649,
|
||||
651,
|
||||
655,
|
||||
657,
|
||||
660,
|
||||
661,
|
||||
667,
|
||||
668,
|
||||
669,
|
||||
671,
|
||||
676,
|
||||
678,
|
||||
681,
|
||||
682,
|
||||
697,
|
||||
777,
|
||||
958,
|
||||
974,
|
||||
975,
|
||||
1017,
|
||||
1266,
|
||||
1556,
|
||||
1557,
|
||||
1558,
|
||||
1576,
|
||||
2078,
|
||||
2141,
|
||||
2200,
|
||||
4477,
|
||||
4478,
|
||||
4624,
|
||||
4914,
|
||||
4958,
|
||||
4960,
|
||||
5455,
|
||||
5456,
|
||||
5749,
|
||||
5752,
|
||||
6456,
|
||||
6460,
|
||||
6753,
|
||||
6757,
|
||||
6758,
|
||||
6835,
|
||||
7382,
|
||||
7383,
|
||||
7384,
|
||||
7437,
|
||||
7948,
|
||||
8929,
|
||||
8952,
|
||||
8956,
|
||||
8966,
|
||||
8967,
|
||||
8969,
|
||||
8978,
|
||||
8979,
|
||||
8980,
|
||||
8981,
|
||||
8982,
|
||||
8983,
|
||||
9017,
|
||||
9038,
|
||||
9132,
|
||||
9493,
|
||||
9507,
|
||||
10059,
|
||||
10079,
|
||||
10278,
|
||||
10460,
|
||||
10581,
|
||||
10585,
|
||||
10595,
|
||||
10597,
|
||||
10617,
|
||||
10657,
|
||||
10666,
|
||||
10667,
|
||||
10668,
|
||||
10672,
|
||||
10682,
|
||||
10684,
|
||||
10688,
|
||||
10689,
|
||||
10692,
|
||||
10693,
|
||||
10698,
|
||||
10706,
|
||||
10746,
|
||||
10755,
|
||||
10756,
|
||||
10763,
|
||||
10772,
|
||||
10775,
|
||||
10790,
|
||||
10800,
|
||||
10818,
|
||||
10819,
|
||||
10820,
|
||||
10875,
|
||||
10994,
|
||||
11124,
|
||||
11126,
|
||||
11127,
|
||||
11128,
|
||||
11153,
|
||||
11157,
|
||||
11164,
|
||||
11188,
|
||||
11189,
|
||||
11190,
|
||||
11214,
|
||||
11220,
|
||||
11298,
|
||||
11338,
|
||||
11394,
|
||||
11446,
|
||||
11473,
|
||||
11545,
|
||||
11559,
|
||||
11610,
|
||||
11611,
|
||||
11653,
|
||||
11657,
|
||||
11658,
|
||||
11659,
|
||||
11660,
|
||||
11674,
|
||||
11773,
|
||||
11787,
|
||||
11789,
|
||||
11790,
|
||||
11796,
|
||||
11992,
|
||||
11993,
|
||||
11994,
|
||||
11995,
|
||||
11996,
|
||||
11997,
|
||||
11998,
|
||||
11999,
|
||||
12000,
|
||||
12001,
|
||||
12008,
|
||||
12015,
|
||||
12020,
|
||||
12026,
|
||||
12028,
|
||||
12030,
|
||||
12072,
|
||||
12074,
|
||||
12085,
|
||||
12086,
|
||||
12103,
|
||||
12110,
|
||||
12445,
|
||||
12447,
|
||||
12448,
|
||||
}
|
||||
|
||||
aura_env.TryInspect = function()
|
||||
local targetPlayer = UnitIsPlayer("target")
|
||||
if not targetPlayer then return end
|
||||
local targetName = UnitName("target")
|
||||
|
||||
local should = false
|
||||
if not WeakAurasSaved.Cyka.AchievementSniffer[targetName] then should = true end
|
||||
if WeakAurasSaved.Cyka.AchievementSniffer2[targetName] then should = false end
|
||||
if aura_env.config.rescan then should = true end
|
||||
if not should then return end
|
||||
|
||||
local canInspect = CheckInteractDistance("target", 1)
|
||||
if canInspect then SetAchievementComparisonUnit("target") end
|
||||
end
|
||||
|
||||
---@param playerName string
|
||||
aura_env.Scan = function(playerName)
|
||||
WeakAurasSaved.Cyka.AchievementSniffer[playerName] = {}
|
||||
for i, aid in ipairs(aura_env.achievements) do
|
||||
local completed, month, day, year = GetAchievementComparisonInfo(aid)
|
||||
if completed then
|
||||
---@type string
|
||||
local yearstr = "" .. year
|
||||
if year < 100 then yearstr = "20" .. year end
|
||||
|
||||
local date = string.format("%04d-%02d-%02d", yearstr, month, day)
|
||||
|
||||
local data = {
|
||||
id = aid,
|
||||
date = date,
|
||||
completed = completed,
|
||||
}
|
||||
WeakAurasSaved.Cyka.AchievementSniffer[playerName][aid] = data
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--/run WeakAurasSaved.Cyka.AchievementSniffer = {}
|
||||
--/dump WeakAurasSaved.Cyka.AchievementSniffer["Pinkleta"]
|
||||
@@ -1,7 +1,7 @@
|
||||
local year = 20
|
||||
local month = 7
|
||||
local day = 12
|
||||
|
||||
if year < 100 then year = "20" .. year end
|
||||
|
||||
print(string.format("%4d-%02d-%02d", year, month, day))
|
||||
local year = 20
|
||||
local month = 7
|
||||
local day = 12
|
||||
|
||||
if year < 100 then year = "20" .. year end
|
||||
|
||||
print(string.format("%4d-%02d-%02d", year, month, day))
|
||||
@@ -1,318 +1,318 @@
|
||||
--UPDATE_MOUSEOVER_UNIT PLAYER_TARGET_CHANGED
|
||||
function()
|
||||
if not UnitExists("target") and UnitExists("mouseover") and UnitIsPlayer("mouseover") then
|
||||
aura_env.output = "Boss RF NM HC Myth" .. "\n"
|
||||
bossKills =
|
||||
{
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
}
|
||||
SetAchievementComparisonUnit("mouseover")
|
||||
end
|
||||
if not UnitExists("mouseover") and UnitExists("target") and UnitIsPlayer("target") then
|
||||
aura_env.output = "Boss RF NM HC Myth" .. "\n"
|
||||
bossKills =
|
||||
{
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
}
|
||||
SetAchievementComparisonUnit("target")
|
||||
end
|
||||
end
|
||||
|
||||
--INSPECT_ACHIEVEMENT_READY
|
||||
function()
|
||||
aura_env.output = "Boss RF NM HC Myth" .. "\n"
|
||||
for k,v in ipairs(aura_env.TOS) do
|
||||
if GetComparisonStatistic(aura_env.TOS[k][1]) ~= "--" or GetComparisonStatistic(aura_env.TOS[k][2]) ~= "--" or GetComparisonStatistic(aura_env.TOS[k][3]) ~= "--" or GetComparisonStatistic(aura_env.TOS[k][4]) ~= "--" then
|
||||
local bossname = select(2, GetAchievementInfo(aura_env.TOS[k][1]))
|
||||
bossname = bossname:match("[a-zA-Z' ]*kills")
|
||||
bossname = bossname:gsub(" kills", "")
|
||||
aura_env.output = aura_env.output .. bossname .. "\n"
|
||||
if GetComparisonStatistic(aura_env.TOS[k][1]) ~= "--" then
|
||||
bossKills[k][1] = GetComparisonStatistic(aura_env.TOS[k][1])
|
||||
end
|
||||
if GetComparisonStatistic(aura_env.TOS[k][2]) ~= "--" then
|
||||
bossKills[k][2] = GetComparisonStatistic(aura_env.TOS[k][2])
|
||||
end
|
||||
if GetComparisonStatistic(aura_env.TOS[k][3]) ~= "--" then
|
||||
bossKills[k][3] = GetComparisonStatistic(aura_env.TOS[k][3])
|
||||
end
|
||||
if GetComparisonStatistic(aura_env.TOS[k][4]) ~= "--" then
|
||||
bossKills[k][4] = GetComparisonStatistic(aura_env.TOS[k][4])
|
||||
end
|
||||
end
|
||||
end
|
||||
ClearAchievementComparisonUnit()
|
||||
end
|
||||
|
||||
--WEAKAURA 2 DISPLAY -- RF BOSSES
|
||||
function()
|
||||
local output = ""
|
||||
for k,v in ipairs(bossKills) do
|
||||
if tonumber(bossKills[k][1]) > 0 then
|
||||
output = output .. bossKills[k][1] .. "\n"
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
--WEAKAURA 2 DISPLAY -- NM BOSSES
|
||||
function()
|
||||
local output = ""
|
||||
for k,v in ipairs(bossKills) do
|
||||
if tonumber(bossKills[k][2]) > 0 then
|
||||
output = output .. bossKills[k][2] .. "\n"
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
--WEAKAURA 2 DISPLAY -- HC BOSSES
|
||||
function()
|
||||
local output = ""
|
||||
for k,v in ipairs(bossKills) do
|
||||
if tonumber(bossKills[k][3]) > 0 then
|
||||
output = output .. bossKills[k][3] .. "\n"
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
--WEAKAURA 2 DISPLAY -- Myth BOSSES
|
||||
function()
|
||||
local output = ""
|
||||
for k,v in ipairs(bossKills) do
|
||||
if tonumber(bossKills[k][4]) > 0 then
|
||||
output = output .. bossKills[k][4] .. "\n"
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.TOS =
|
||||
{
|
||||
{ --Goroth
|
||||
11877, -- [1]
|
||||
11878, -- [2]
|
||||
11879, -- [3]
|
||||
11880, -- [4]
|
||||
}, -- [1]
|
||||
{ --Inquisition
|
||||
11881, -- [1]
|
||||
11882, -- [2]
|
||||
11883, -- [3]
|
||||
11884, -- [4]
|
||||
}, -- [2]
|
||||
{ --Harjatan
|
||||
11885, -- [1]
|
||||
11886, -- [2]
|
||||
11887, -- [3]
|
||||
11888, -- [4]
|
||||
}, -- [3]
|
||||
{ --Sisters
|
||||
11889, -- [1]
|
||||
11890, -- [2]
|
||||
11891, -- [3]
|
||||
11892, -- [4]
|
||||
}, -- [4]
|
||||
{ --Mistress
|
||||
11893, -- [1]
|
||||
11894, -- [2]
|
||||
11895, -- [3]
|
||||
11896, -- [4]
|
||||
}, -- [5]
|
||||
{ --Host
|
||||
11897, -- [1]
|
||||
11898, -- [2]
|
||||
11899, -- [3]
|
||||
11900, -- [4]
|
||||
}, -- [6]
|
||||
{ --Maiden
|
||||
11901, -- [1]
|
||||
11902, -- [2]
|
||||
11903, -- [3]
|
||||
11904, -- [4]
|
||||
}, -- [7]
|
||||
{ --Avatar
|
||||
11905, -- [1]
|
||||
11906, -- [2]
|
||||
11907, -- [3]
|
||||
11908, -- [4]
|
||||
}, -- [8]
|
||||
{ --Kil'jaeden
|
||||
11909, -- [1]
|
||||
11910, -- [2]
|
||||
11911, -- [3]
|
||||
11912, -- [4]
|
||||
}, -- [9]
|
||||
}
|
||||
aura_env.NH =
|
||||
{
|
||||
{ --Skorp
|
||||
10940, -- [1]
|
||||
10941, -- [2]
|
||||
10942, -- [3]
|
||||
10943, -- [4]
|
||||
}, -- [1]
|
||||
{ --Anomaly
|
||||
10944, -- [1]
|
||||
10945, -- [2]
|
||||
10946, -- [3]
|
||||
10947, -- [4]
|
||||
}, -- [2]
|
||||
{ --Trilliax
|
||||
10948, -- [1]
|
||||
10949, -- [2]
|
||||
10950, -- [3]
|
||||
10951, -- [4]
|
||||
}, -- [3]
|
||||
{ --Aluriel
|
||||
10952, -- [1]
|
||||
10953, -- [2]
|
||||
10954, -- [3]
|
||||
10955, -- [4]
|
||||
}, -- [4]
|
||||
{ --Augur
|
||||
10956, -- [1]
|
||||
10957, -- [2]
|
||||
10959, -- [3]
|
||||
10960, -- [4]
|
||||
}, -- [5]
|
||||
{ --Botanist
|
||||
10961, -- [1]
|
||||
10962, -- [2]
|
||||
10963, -- [3]
|
||||
10964, -- [4]
|
||||
}, -- [6]
|
||||
{ --Tich
|
||||
10965, -- [1]
|
||||
10966, -- [2]
|
||||
10967, -- [3]
|
||||
10968, -- [4]
|
||||
}, -- [7]
|
||||
{ --Krosus
|
||||
10969, -- [1]
|
||||
10970, -- [2]
|
||||
10971, -- [3]
|
||||
10972, -- [4]
|
||||
}, -- [8]
|
||||
{ --Elisande
|
||||
10973, -- [1]
|
||||
10974, -- [2]
|
||||
10975, -- [3]
|
||||
10976, -- [4]
|
||||
}, -- [9]
|
||||
{ --Gul'dan
|
||||
10977, -- [1]
|
||||
10978, -- [2]
|
||||
10979, -- [3]
|
||||
10980, -- [4]
|
||||
}, -- [10]
|
||||
}
|
||||
--UPDATE_MOUSEOVER_UNIT PLAYER_TARGET_CHANGED
|
||||
function()
|
||||
if not UnitExists("target") and UnitExists("mouseover") and UnitIsPlayer("mouseover") then
|
||||
aura_env.output = "Boss RF NM HC Myth" .. "\n"
|
||||
bossKills =
|
||||
{
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
}
|
||||
SetAchievementComparisonUnit("mouseover")
|
||||
end
|
||||
if not UnitExists("mouseover") and UnitExists("target") and UnitIsPlayer("target") then
|
||||
aura_env.output = "Boss RF NM HC Myth" .. "\n"
|
||||
bossKills =
|
||||
{
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
{
|
||||
[1] = 0,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
[4] = 0
|
||||
},
|
||||
}
|
||||
SetAchievementComparisonUnit("target")
|
||||
end
|
||||
end
|
||||
|
||||
--INSPECT_ACHIEVEMENT_READY
|
||||
function()
|
||||
aura_env.output = "Boss RF NM HC Myth" .. "\n"
|
||||
for k,v in ipairs(aura_env.TOS) do
|
||||
if GetComparisonStatistic(aura_env.TOS[k][1]) ~= "--" or GetComparisonStatistic(aura_env.TOS[k][2]) ~= "--" or GetComparisonStatistic(aura_env.TOS[k][3]) ~= "--" or GetComparisonStatistic(aura_env.TOS[k][4]) ~= "--" then
|
||||
local bossname = select(2, GetAchievementInfo(aura_env.TOS[k][1]))
|
||||
bossname = bossname:match("[a-zA-Z' ]*kills")
|
||||
bossname = bossname:gsub(" kills", "")
|
||||
aura_env.output = aura_env.output .. bossname .. "\n"
|
||||
if GetComparisonStatistic(aura_env.TOS[k][1]) ~= "--" then
|
||||
bossKills[k][1] = GetComparisonStatistic(aura_env.TOS[k][1])
|
||||
end
|
||||
if GetComparisonStatistic(aura_env.TOS[k][2]) ~= "--" then
|
||||
bossKills[k][2] = GetComparisonStatistic(aura_env.TOS[k][2])
|
||||
end
|
||||
if GetComparisonStatistic(aura_env.TOS[k][3]) ~= "--" then
|
||||
bossKills[k][3] = GetComparisonStatistic(aura_env.TOS[k][3])
|
||||
end
|
||||
if GetComparisonStatistic(aura_env.TOS[k][4]) ~= "--" then
|
||||
bossKills[k][4] = GetComparisonStatistic(aura_env.TOS[k][4])
|
||||
end
|
||||
end
|
||||
end
|
||||
ClearAchievementComparisonUnit()
|
||||
end
|
||||
|
||||
--WEAKAURA 2 DISPLAY -- RF BOSSES
|
||||
function()
|
||||
local output = ""
|
||||
for k,v in ipairs(bossKills) do
|
||||
if tonumber(bossKills[k][1]) > 0 then
|
||||
output = output .. bossKills[k][1] .. "\n"
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
--WEAKAURA 2 DISPLAY -- NM BOSSES
|
||||
function()
|
||||
local output = ""
|
||||
for k,v in ipairs(bossKills) do
|
||||
if tonumber(bossKills[k][2]) > 0 then
|
||||
output = output .. bossKills[k][2] .. "\n"
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
--WEAKAURA 2 DISPLAY -- HC BOSSES
|
||||
function()
|
||||
local output = ""
|
||||
for k,v in ipairs(bossKills) do
|
||||
if tonumber(bossKills[k][3]) > 0 then
|
||||
output = output .. bossKills[k][3] .. "\n"
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
--WEAKAURA 2 DISPLAY -- Myth BOSSES
|
||||
function()
|
||||
local output = ""
|
||||
for k,v in ipairs(bossKills) do
|
||||
if tonumber(bossKills[k][4]) > 0 then
|
||||
output = output .. bossKills[k][4] .. "\n"
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.TOS =
|
||||
{
|
||||
{ --Goroth
|
||||
11877, -- [1]
|
||||
11878, -- [2]
|
||||
11879, -- [3]
|
||||
11880, -- [4]
|
||||
}, -- [1]
|
||||
{ --Inquisition
|
||||
11881, -- [1]
|
||||
11882, -- [2]
|
||||
11883, -- [3]
|
||||
11884, -- [4]
|
||||
}, -- [2]
|
||||
{ --Harjatan
|
||||
11885, -- [1]
|
||||
11886, -- [2]
|
||||
11887, -- [3]
|
||||
11888, -- [4]
|
||||
}, -- [3]
|
||||
{ --Sisters
|
||||
11889, -- [1]
|
||||
11890, -- [2]
|
||||
11891, -- [3]
|
||||
11892, -- [4]
|
||||
}, -- [4]
|
||||
{ --Mistress
|
||||
11893, -- [1]
|
||||
11894, -- [2]
|
||||
11895, -- [3]
|
||||
11896, -- [4]
|
||||
}, -- [5]
|
||||
{ --Host
|
||||
11897, -- [1]
|
||||
11898, -- [2]
|
||||
11899, -- [3]
|
||||
11900, -- [4]
|
||||
}, -- [6]
|
||||
{ --Maiden
|
||||
11901, -- [1]
|
||||
11902, -- [2]
|
||||
11903, -- [3]
|
||||
11904, -- [4]
|
||||
}, -- [7]
|
||||
{ --Avatar
|
||||
11905, -- [1]
|
||||
11906, -- [2]
|
||||
11907, -- [3]
|
||||
11908, -- [4]
|
||||
}, -- [8]
|
||||
{ --Kil'jaeden
|
||||
11909, -- [1]
|
||||
11910, -- [2]
|
||||
11911, -- [3]
|
||||
11912, -- [4]
|
||||
}, -- [9]
|
||||
}
|
||||
aura_env.NH =
|
||||
{
|
||||
{ --Skorp
|
||||
10940, -- [1]
|
||||
10941, -- [2]
|
||||
10942, -- [3]
|
||||
10943, -- [4]
|
||||
}, -- [1]
|
||||
{ --Anomaly
|
||||
10944, -- [1]
|
||||
10945, -- [2]
|
||||
10946, -- [3]
|
||||
10947, -- [4]
|
||||
}, -- [2]
|
||||
{ --Trilliax
|
||||
10948, -- [1]
|
||||
10949, -- [2]
|
||||
10950, -- [3]
|
||||
10951, -- [4]
|
||||
}, -- [3]
|
||||
{ --Aluriel
|
||||
10952, -- [1]
|
||||
10953, -- [2]
|
||||
10954, -- [3]
|
||||
10955, -- [4]
|
||||
}, -- [4]
|
||||
{ --Augur
|
||||
10956, -- [1]
|
||||
10957, -- [2]
|
||||
10959, -- [3]
|
||||
10960, -- [4]
|
||||
}, -- [5]
|
||||
{ --Botanist
|
||||
10961, -- [1]
|
||||
10962, -- [2]
|
||||
10963, -- [3]
|
||||
10964, -- [4]
|
||||
}, -- [6]
|
||||
{ --Tich
|
||||
10965, -- [1]
|
||||
10966, -- [2]
|
||||
10967, -- [3]
|
||||
10968, -- [4]
|
||||
}, -- [7]
|
||||
{ --Krosus
|
||||
10969, -- [1]
|
||||
10970, -- [2]
|
||||
10971, -- [3]
|
||||
10972, -- [4]
|
||||
}, -- [8]
|
||||
{ --Elisande
|
||||
10973, -- [1]
|
||||
10974, -- [2]
|
||||
10975, -- [3]
|
||||
10976, -- [4]
|
||||
}, -- [9]
|
||||
{ --Gul'dan
|
||||
10977, -- [1]
|
||||
10978, -- [2]
|
||||
10979, -- [3]
|
||||
10980, -- [4]
|
||||
}, -- [10]
|
||||
}
|
||||
aura_env.output = ""
|
||||
@@ -1,9 +1,9 @@
|
||||
function()
|
||||
local seeds = 0
|
||||
for i = 1, 100 do
|
||||
if UnitDebuff("nameplate" .. i, "Seed of Corruption") then
|
||||
seeds = seeds + 1
|
||||
end
|
||||
end
|
||||
return seeds
|
||||
function()
|
||||
local seeds = 0
|
||||
for i = 1, 100 do
|
||||
if UnitDebuff("nameplate" .. i, "Seed of Corruption") then
|
||||
seeds = seeds + 1
|
||||
end
|
||||
end
|
||||
return seeds
|
||||
end
|
||||
@@ -1,14 +1,14 @@
|
||||
-- CHAT_MSG_SYSTEM
|
||||
function(e, msg)
|
||||
if msg == nil then return false end
|
||||
if string.find(msg, "You are now Away") then
|
||||
aura_env.KickTime = time() + 30 * 60
|
||||
aura_env.AfkSince = time()
|
||||
return true
|
||||
end
|
||||
if string.find(msg, "You are no longer Away") then
|
||||
aura_env.KickTime = 0
|
||||
aura_env.AfkSince = 0
|
||||
return false
|
||||
end
|
||||
-- CHAT_MSG_SYSTEM
|
||||
function(e, msg)
|
||||
if msg == nil then return false end
|
||||
if string.find(msg, "You are now Away") then
|
||||
aura_env.KickTime = time() + 30 * 60
|
||||
aura_env.AfkSince = time()
|
||||
return true
|
||||
end
|
||||
if string.find(msg, "You are no longer Away") then
|
||||
aura_env.KickTime = 0
|
||||
aura_env.AfkSince = 0
|
||||
return false
|
||||
end
|
||||
end
|
||||
@@ -1,16 +1,16 @@
|
||||
-- TICKER_500
|
||||
function(e)
|
||||
local timeToKick = aura_env.KickTime - time()
|
||||
if timeToKick > 0 and timeToKick < 10 * 60 then
|
||||
WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg")
|
||||
-- SendChatMessage("QUACK", "WHISPER", nil, UnitName("player"))
|
||||
end
|
||||
|
||||
local rewardClaimed = WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].claimed
|
||||
local onlineTime = WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].onlineTimeInMinutes
|
||||
if rewardClaimed == 0 and onlineTime >= 120 then
|
||||
WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg")
|
||||
end
|
||||
|
||||
return aura_env.KickTime > 0
|
||||
-- TICKER_500
|
||||
function(e)
|
||||
local timeToKick = aura_env.KickTime - time()
|
||||
if timeToKick > 0 and timeToKick < 10 * 60 then
|
||||
WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg")
|
||||
-- SendChatMessage("QUACK", "WHISPER", nil, UnitName("player"))
|
||||
end
|
||||
|
||||
local rewardClaimed = WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].claimed
|
||||
local onlineTime = WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].onlineTimeInMinutes
|
||||
if rewardClaimed == 0 and onlineTime >= 120 then
|
||||
WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg")
|
||||
end
|
||||
|
||||
return aura_env.KickTime > 0
|
||||
end
|
||||
@@ -1,3 +1,3 @@
|
||||
function(e)
|
||||
return math.floor(time() - aura_env.AfkSince), math.floor(aura_env.KickTime - aura_env.AfkSince), 1
|
||||
function(e)
|
||||
return math.floor(time() - aura_env.AfkSince), math.floor(aura_env.KickTime - aura_env.AfkSince), 1
|
||||
end
|
||||
@@ -1,6 +1,6 @@
|
||||
aura_env.KickTime = 0
|
||||
aura_env.AfkSince = 0
|
||||
|
||||
WeakAurasSaved.Cyka.LoginInfo = {
|
||||
[Today] = WeakAurasSaved.Cyka.LoginInfo[Today] or {},
|
||||
}
|
||||
aura_env.KickTime = 0
|
||||
aura_env.AfkSince = 0
|
||||
|
||||
WeakAurasSaved.Cyka.LoginInfo = {
|
||||
[Today] = WeakAurasSaved.Cyka.LoginInfo[Today] or {},
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
function(t)
|
||||
return t[2]
|
||||
function(t)
|
||||
return t[2]
|
||||
end
|
||||
@@ -1,305 +1,305 @@
|
||||
--QUEST_ACCEPTED QUEST_TURNED_IN
|
||||
function(e)
|
||||
for k, v in ipairs(aura_env.questDatabase) do
|
||||
if IsQuestFlaggedCompleted(v) == false then
|
||||
--print(aura_env.TESTCOMPLETION[k])
|
||||
--if aura_env.TESTCOMPLETION[k] == false then
|
||||
--print(k, IsQuestFlaggedCompleted(v))
|
||||
if k < 36 or k > 37 then
|
||||
aura_env.currentQuest = k
|
||||
break
|
||||
elseif (k == 36 and IsQuestFlaggedCompleted(aura_env.questDatabase[37]) == true) or (k == 37 and IsQuestFlaggedCompleted(aura_env.questDatabase[36]) == true) then
|
||||
--elseif (k == 36 and aura_env.TESTCOMPLETION[37] == true) or (k == 37 and aura_env.TESTCOMPLETION[36] == true) then
|
||||
k = 38
|
||||
end
|
||||
end
|
||||
end
|
||||
--print(aura_env.currentQuest)
|
||||
return true
|
||||
end
|
||||
|
||||
--DISPLAY
|
||||
function()
|
||||
if aura_env.currentQuest < 89 then
|
||||
return "Progress: " .. aura_env.currentQuest .. "/" .. #aura_env.questDatabase .. "\nCurrent quest: " .. aura_env.questNames[aura_env.currentQuest] .. "\nNext Quest: " .. aura_env.questNames[aura_env.currentQuest + 1]
|
||||
else
|
||||
return "Progress: " .. aura_env.currentQuest .. "/" .. #aura_env.questDatabase .. "\nCurrent quest: " .. aura_env.questNames[aura_env.currentQuest]
|
||||
end
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.currentQuest = 1
|
||||
aura_env.questDatabase = {
|
||||
[1] = 47835,
|
||||
[2] = 47867,
|
||||
[3] = 47223,
|
||||
[4] = 47224,
|
||||
[5] = 48440,
|
||||
[6] = 46938,
|
||||
[7] = 47589,
|
||||
[8] = 46297,
|
||||
[9] = 48483,
|
||||
[10] = 47627,
|
||||
[11] = 47641,
|
||||
[12] = 46732,
|
||||
[13] = 46816,
|
||||
[14] = 46839,
|
||||
[15] = 46840,
|
||||
[16] = 46841,
|
||||
[17] = 46842,
|
||||
[18] = 46843,
|
||||
[19] = 48500,
|
||||
[20] = 47431,
|
||||
[21] = 46213,
|
||||
[22] = 40238,
|
||||
[23] = 47541,
|
||||
[24] = 47508,
|
||||
[25] = 47771,
|
||||
[26] = 47526,
|
||||
[27] = 47754,
|
||||
[28] = 47652,
|
||||
[29] = 47653,
|
||||
[30] = 47743,
|
||||
[31] = 49143,
|
||||
[32] = 47287,
|
||||
[33] = 48559,
|
||||
[34] = 48199,
|
||||
[35] = 48200,
|
||||
[36] = 48201,
|
||||
[37] = 48202,
|
||||
[38] = 47473,
|
||||
[39] = 47889,
|
||||
[40] = 47890,
|
||||
[41] = 47891,
|
||||
[42] = 47892,
|
||||
[43] = 47986,
|
||||
[44] = 47987,
|
||||
[45] = 47988,
|
||||
[46] = 47991,
|
||||
[47] = 47990,
|
||||
[48] = 47989,
|
||||
[49] = 47992,
|
||||
[50] = 47993,
|
||||
[51] = 47994,
|
||||
[52] = 48081,
|
||||
[53] = 46815,
|
||||
[54] = 46818,
|
||||
[55] = 46834,
|
||||
[56] = 47066,
|
||||
[57] = 46941,
|
||||
[58] = 47686,
|
||||
[59] = 47882,
|
||||
[60] = 47688,
|
||||
[61] = 47883,
|
||||
[62] = 47689,
|
||||
[63] = 47685,
|
||||
[64] = 47687,
|
||||
[65] = 47690,
|
||||
[66] = 48107,
|
||||
[67] = 48461,
|
||||
[68] = 48344,
|
||||
[69] = 47691,
|
||||
[70] = 47854,
|
||||
[71] = 47995,
|
||||
[72] = 47853,
|
||||
[73] = 48345,
|
||||
[74] = 47855,
|
||||
[75] = 47856,
|
||||
[76] = 47416,
|
||||
[77] = 47238,
|
||||
[78] = 40761,
|
||||
[79] = 47101,
|
||||
[80] = 47180,
|
||||
[81] = 47100,
|
||||
[82] = 47183,
|
||||
[83] = 47184,
|
||||
[84] = 47203,
|
||||
[85] = 47217,
|
||||
[86] = 47218,
|
||||
[87] = 47219,
|
||||
[88] = 47220,
|
||||
[89] = 48560,
|
||||
}
|
||||
aura_env.questNames = {
|
||||
[1] = "The Hand of Fate",
|
||||
[2] = "Two If By Sea",
|
||||
[3] = "Light's Exodus",
|
||||
[4] = "The Vindicaar",
|
||||
[5] = "Into the Night",
|
||||
[6] = "Alone in the Abyss",
|
||||
[7] = "Righteous Fury",
|
||||
[8] = "Overwhelming Power",
|
||||
[9] = "A Stranger's Plea",
|
||||
[10] = "Vengeance",
|
||||
[11] = "Sign of Resistance",
|
||||
[12] = "The Prophet's Gambit",
|
||||
[13] = "Rendezvous",
|
||||
[14] = "From Darkness",
|
||||
[15] = "Prisoners No More",
|
||||
[16] = "Threat Reduction",
|
||||
[17] = "A Strike at the Heart",
|
||||
[18] = "Return to the Vindicaar",
|
||||
[19] = "A Moment of Respite",
|
||||
[20] = "Gathering Light",
|
||||
[21] = "Crystals Not Included",
|
||||
[22] = "A Grim Equation",
|
||||
[23] = "The Best Prevention",
|
||||
[24] = "Fire at Will",
|
||||
[25] = "Locating the Longshot",
|
||||
[26] = "Bringing the Big Guns",
|
||||
[27] = "Lightly Roasted",
|
||||
[28] = "The Light Mother",
|
||||
[29] = "Light's Return",
|
||||
[30] = "The Child of Light and Shadow",
|
||||
[31] = "Essence of the Light Mother",
|
||||
[32] = "The Vindicaar Matrix Core",
|
||||
[33] = "An Offering of Light",
|
||||
[34] = "The Burning Heart",
|
||||
[35] = "Securing a Foothold",
|
||||
[36] = "Reinforce Light's Purchase",
|
||||
[37] = "Reinforce the Veiled Den",
|
||||
[38] = "Sizing Up The Opposition",
|
||||
[39] = "The Speaker Calls",
|
||||
[40] = "Visions of Torment",
|
||||
[41] = "Dire News",
|
||||
[42] = "Storming the Citadel",
|
||||
[43] = "Scars of the Past",
|
||||
[44] = "Preventive Measures",
|
||||
[45] = "Chaos Theory",
|
||||
[46] = "Dark Machinations",
|
||||
[47] = "A Touch of Fel",
|
||||
[48] = "Heralds of Apocalypse",
|
||||
[49] = "Dawn of Justice",
|
||||
[50] = "Lord of the Spire",
|
||||
[51] = "Forming a Bond",
|
||||
[52] = "A Floating Ruin",
|
||||
[53] = "Mac'Aree, Jewel of Argus",
|
||||
[54] = "Defenseless and Afraid",
|
||||
[55] = "Khazaduum, First of His Name",
|
||||
[56] = "Consecrating Ground",
|
||||
[57] = "The Path Forward",
|
||||
[58] = "Not-So-Humble Beginnings",
|
||||
[59] = "Conservation of Magic",
|
||||
[60] = "Invasive Species",
|
||||
[61] = "The Longest Vigil",
|
||||
[62] = "Gatekeeper's Challenge: Tenacity",
|
||||
[63] = "Gatekeeper's Challenge: Cunning",
|
||||
[64] = "Gatekeeper's Challenge: Mastery",
|
||||
[65] = "The Defiler's Legacy",
|
||||
[66] = "The Sigil of Awakening",
|
||||
[67] = "Where They Least Expect It",
|
||||
[68] = "We Have a Problem",
|
||||
[69] = "A Non-Prophet Organization",
|
||||
[70] = "Wrath of the Hight Exarch",
|
||||
[71] = "Overt Ops",
|
||||
[72] = "Flanking Maneuvers",
|
||||
[73] = "Talgath's Forces",
|
||||
[74] = "What Might Have Been",
|
||||
[75] = "Across the Universe",
|
||||
[76] = "Shadow of the Triumvirate",
|
||||
[77] = "The Seat of the Triumvirate",
|
||||
[78] = "Whispers from Oronaar",
|
||||
[79] = "Arkhaan's Prayers",
|
||||
[80] = "The Pulsing Madness",
|
||||
[81] = "Arkhaan's Pain",
|
||||
[82] = "Arkhaan's Plan",
|
||||
[83] = "Arkhaan's Peril",
|
||||
[84] = "Throwing Shade",
|
||||
[85] = "Sources of Darkness",
|
||||
[86] = "The Shadowguard Incursion",
|
||||
[87] = "A Vessel Made Ready",
|
||||
[88] = "A Beacon in the Dark",
|
||||
[89] = "An Offering of Shadow",
|
||||
}
|
||||
aura_env.TESTCOMPLETION = {
|
||||
[1] = true,
|
||||
[2] = true,
|
||||
[3] = true,
|
||||
[4] = true,
|
||||
[5] = true,
|
||||
[6] = true,
|
||||
[7] = true,
|
||||
[8] = true,
|
||||
[9] = true,
|
||||
[10] = true,
|
||||
[11] = true,
|
||||
[12] = true,
|
||||
[13] = true,
|
||||
[14] = true,
|
||||
[15] = true,
|
||||
[16] = true,
|
||||
[17] = true,
|
||||
[18] = true,
|
||||
[19] = true,
|
||||
[20] = true,
|
||||
[21] = true,
|
||||
[22] = true,
|
||||
[23] = true,
|
||||
[24] = true,
|
||||
[25] = true,
|
||||
[26] = true,
|
||||
[27] = true,
|
||||
[28] = true,
|
||||
[29] = true,
|
||||
[30] = true,
|
||||
[31] = true,
|
||||
[32] = true,
|
||||
[33] = true,
|
||||
[34] = true,
|
||||
[35] = true,
|
||||
[36] = false,
|
||||
[37] = true,
|
||||
[38] = true,
|
||||
[39] = true,
|
||||
[40] = true,
|
||||
[41] = true,
|
||||
[42] = true,
|
||||
[43] = true,
|
||||
[44] = true,
|
||||
[45] = true,
|
||||
[46] = true,
|
||||
[47] = true,
|
||||
[48] = true,
|
||||
[49] = false,
|
||||
[50] = false,
|
||||
[51] = false,
|
||||
[52] = false,
|
||||
[53] = false,
|
||||
[54] = false,
|
||||
[55] = false,
|
||||
[56] = false,
|
||||
[57] = false,
|
||||
[58] = false,
|
||||
[59] = false,
|
||||
[60] = false,
|
||||
[61] = false,
|
||||
[62] = false,
|
||||
[63] = false,
|
||||
[64] = false,
|
||||
[65] = false,
|
||||
[66] = false,
|
||||
[67] = false,
|
||||
[68] = false,
|
||||
[69] = false,
|
||||
[70] = false,
|
||||
[71] = false,
|
||||
[72] = false,
|
||||
[73] = false,
|
||||
[74] = false,
|
||||
[75] = false,
|
||||
[76] = false,
|
||||
[77] = false,
|
||||
[78] = false,
|
||||
[79] = false,
|
||||
[80] = false,
|
||||
[81] = false,
|
||||
[82] = false,
|
||||
[83] = false,
|
||||
[84] = false,
|
||||
[85] = false,
|
||||
[86] = false,
|
||||
[87] = false,
|
||||
[88] = false,
|
||||
[89] = false,
|
||||
}
|
||||
WeakAuras.ScanEvents("QUEST_TURNED_IN")
|
||||
--QUEST_ACCEPTED QUEST_TURNED_IN
|
||||
function(e)
|
||||
for k, v in ipairs(aura_env.questDatabase) do
|
||||
if IsQuestFlaggedCompleted(v) == false then
|
||||
--print(aura_env.TESTCOMPLETION[k])
|
||||
--if aura_env.TESTCOMPLETION[k] == false then
|
||||
--print(k, IsQuestFlaggedCompleted(v))
|
||||
if k < 36 or k > 37 then
|
||||
aura_env.currentQuest = k
|
||||
break
|
||||
elseif (k == 36 and IsQuestFlaggedCompleted(aura_env.questDatabase[37]) == true) or (k == 37 and IsQuestFlaggedCompleted(aura_env.questDatabase[36]) == true) then
|
||||
--elseif (k == 36 and aura_env.TESTCOMPLETION[37] == true) or (k == 37 and aura_env.TESTCOMPLETION[36] == true) then
|
||||
k = 38
|
||||
end
|
||||
end
|
||||
end
|
||||
--print(aura_env.currentQuest)
|
||||
return true
|
||||
end
|
||||
|
||||
--DISPLAY
|
||||
function()
|
||||
if aura_env.currentQuest < 89 then
|
||||
return "Progress: " .. aura_env.currentQuest .. "/" .. #aura_env.questDatabase .. "\nCurrent quest: " .. aura_env.questNames[aura_env.currentQuest] .. "\nNext Quest: " .. aura_env.questNames[aura_env.currentQuest + 1]
|
||||
else
|
||||
return "Progress: " .. aura_env.currentQuest .. "/" .. #aura_env.questDatabase .. "\nCurrent quest: " .. aura_env.questNames[aura_env.currentQuest]
|
||||
end
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.currentQuest = 1
|
||||
aura_env.questDatabase = {
|
||||
[1] = 47835,
|
||||
[2] = 47867,
|
||||
[3] = 47223,
|
||||
[4] = 47224,
|
||||
[5] = 48440,
|
||||
[6] = 46938,
|
||||
[7] = 47589,
|
||||
[8] = 46297,
|
||||
[9] = 48483,
|
||||
[10] = 47627,
|
||||
[11] = 47641,
|
||||
[12] = 46732,
|
||||
[13] = 46816,
|
||||
[14] = 46839,
|
||||
[15] = 46840,
|
||||
[16] = 46841,
|
||||
[17] = 46842,
|
||||
[18] = 46843,
|
||||
[19] = 48500,
|
||||
[20] = 47431,
|
||||
[21] = 46213,
|
||||
[22] = 40238,
|
||||
[23] = 47541,
|
||||
[24] = 47508,
|
||||
[25] = 47771,
|
||||
[26] = 47526,
|
||||
[27] = 47754,
|
||||
[28] = 47652,
|
||||
[29] = 47653,
|
||||
[30] = 47743,
|
||||
[31] = 49143,
|
||||
[32] = 47287,
|
||||
[33] = 48559,
|
||||
[34] = 48199,
|
||||
[35] = 48200,
|
||||
[36] = 48201,
|
||||
[37] = 48202,
|
||||
[38] = 47473,
|
||||
[39] = 47889,
|
||||
[40] = 47890,
|
||||
[41] = 47891,
|
||||
[42] = 47892,
|
||||
[43] = 47986,
|
||||
[44] = 47987,
|
||||
[45] = 47988,
|
||||
[46] = 47991,
|
||||
[47] = 47990,
|
||||
[48] = 47989,
|
||||
[49] = 47992,
|
||||
[50] = 47993,
|
||||
[51] = 47994,
|
||||
[52] = 48081,
|
||||
[53] = 46815,
|
||||
[54] = 46818,
|
||||
[55] = 46834,
|
||||
[56] = 47066,
|
||||
[57] = 46941,
|
||||
[58] = 47686,
|
||||
[59] = 47882,
|
||||
[60] = 47688,
|
||||
[61] = 47883,
|
||||
[62] = 47689,
|
||||
[63] = 47685,
|
||||
[64] = 47687,
|
||||
[65] = 47690,
|
||||
[66] = 48107,
|
||||
[67] = 48461,
|
||||
[68] = 48344,
|
||||
[69] = 47691,
|
||||
[70] = 47854,
|
||||
[71] = 47995,
|
||||
[72] = 47853,
|
||||
[73] = 48345,
|
||||
[74] = 47855,
|
||||
[75] = 47856,
|
||||
[76] = 47416,
|
||||
[77] = 47238,
|
||||
[78] = 40761,
|
||||
[79] = 47101,
|
||||
[80] = 47180,
|
||||
[81] = 47100,
|
||||
[82] = 47183,
|
||||
[83] = 47184,
|
||||
[84] = 47203,
|
||||
[85] = 47217,
|
||||
[86] = 47218,
|
||||
[87] = 47219,
|
||||
[88] = 47220,
|
||||
[89] = 48560,
|
||||
}
|
||||
aura_env.questNames = {
|
||||
[1] = "The Hand of Fate",
|
||||
[2] = "Two If By Sea",
|
||||
[3] = "Light's Exodus",
|
||||
[4] = "The Vindicaar",
|
||||
[5] = "Into the Night",
|
||||
[6] = "Alone in the Abyss",
|
||||
[7] = "Righteous Fury",
|
||||
[8] = "Overwhelming Power",
|
||||
[9] = "A Stranger's Plea",
|
||||
[10] = "Vengeance",
|
||||
[11] = "Sign of Resistance",
|
||||
[12] = "The Prophet's Gambit",
|
||||
[13] = "Rendezvous",
|
||||
[14] = "From Darkness",
|
||||
[15] = "Prisoners No More",
|
||||
[16] = "Threat Reduction",
|
||||
[17] = "A Strike at the Heart",
|
||||
[18] = "Return to the Vindicaar",
|
||||
[19] = "A Moment of Respite",
|
||||
[20] = "Gathering Light",
|
||||
[21] = "Crystals Not Included",
|
||||
[22] = "A Grim Equation",
|
||||
[23] = "The Best Prevention",
|
||||
[24] = "Fire at Will",
|
||||
[25] = "Locating the Longshot",
|
||||
[26] = "Bringing the Big Guns",
|
||||
[27] = "Lightly Roasted",
|
||||
[28] = "The Light Mother",
|
||||
[29] = "Light's Return",
|
||||
[30] = "The Child of Light and Shadow",
|
||||
[31] = "Essence of the Light Mother",
|
||||
[32] = "The Vindicaar Matrix Core",
|
||||
[33] = "An Offering of Light",
|
||||
[34] = "The Burning Heart",
|
||||
[35] = "Securing a Foothold",
|
||||
[36] = "Reinforce Light's Purchase",
|
||||
[37] = "Reinforce the Veiled Den",
|
||||
[38] = "Sizing Up The Opposition",
|
||||
[39] = "The Speaker Calls",
|
||||
[40] = "Visions of Torment",
|
||||
[41] = "Dire News",
|
||||
[42] = "Storming the Citadel",
|
||||
[43] = "Scars of the Past",
|
||||
[44] = "Preventive Measures",
|
||||
[45] = "Chaos Theory",
|
||||
[46] = "Dark Machinations",
|
||||
[47] = "A Touch of Fel",
|
||||
[48] = "Heralds of Apocalypse",
|
||||
[49] = "Dawn of Justice",
|
||||
[50] = "Lord of the Spire",
|
||||
[51] = "Forming a Bond",
|
||||
[52] = "A Floating Ruin",
|
||||
[53] = "Mac'Aree, Jewel of Argus",
|
||||
[54] = "Defenseless and Afraid",
|
||||
[55] = "Khazaduum, First of His Name",
|
||||
[56] = "Consecrating Ground",
|
||||
[57] = "The Path Forward",
|
||||
[58] = "Not-So-Humble Beginnings",
|
||||
[59] = "Conservation of Magic",
|
||||
[60] = "Invasive Species",
|
||||
[61] = "The Longest Vigil",
|
||||
[62] = "Gatekeeper's Challenge: Tenacity",
|
||||
[63] = "Gatekeeper's Challenge: Cunning",
|
||||
[64] = "Gatekeeper's Challenge: Mastery",
|
||||
[65] = "The Defiler's Legacy",
|
||||
[66] = "The Sigil of Awakening",
|
||||
[67] = "Where They Least Expect It",
|
||||
[68] = "We Have a Problem",
|
||||
[69] = "A Non-Prophet Organization",
|
||||
[70] = "Wrath of the Hight Exarch",
|
||||
[71] = "Overt Ops",
|
||||
[72] = "Flanking Maneuvers",
|
||||
[73] = "Talgath's Forces",
|
||||
[74] = "What Might Have Been",
|
||||
[75] = "Across the Universe",
|
||||
[76] = "Shadow of the Triumvirate",
|
||||
[77] = "The Seat of the Triumvirate",
|
||||
[78] = "Whispers from Oronaar",
|
||||
[79] = "Arkhaan's Prayers",
|
||||
[80] = "The Pulsing Madness",
|
||||
[81] = "Arkhaan's Pain",
|
||||
[82] = "Arkhaan's Plan",
|
||||
[83] = "Arkhaan's Peril",
|
||||
[84] = "Throwing Shade",
|
||||
[85] = "Sources of Darkness",
|
||||
[86] = "The Shadowguard Incursion",
|
||||
[87] = "A Vessel Made Ready",
|
||||
[88] = "A Beacon in the Dark",
|
||||
[89] = "An Offering of Shadow",
|
||||
}
|
||||
aura_env.TESTCOMPLETION = {
|
||||
[1] = true,
|
||||
[2] = true,
|
||||
[3] = true,
|
||||
[4] = true,
|
||||
[5] = true,
|
||||
[6] = true,
|
||||
[7] = true,
|
||||
[8] = true,
|
||||
[9] = true,
|
||||
[10] = true,
|
||||
[11] = true,
|
||||
[12] = true,
|
||||
[13] = true,
|
||||
[14] = true,
|
||||
[15] = true,
|
||||
[16] = true,
|
||||
[17] = true,
|
||||
[18] = true,
|
||||
[19] = true,
|
||||
[20] = true,
|
||||
[21] = true,
|
||||
[22] = true,
|
||||
[23] = true,
|
||||
[24] = true,
|
||||
[25] = true,
|
||||
[26] = true,
|
||||
[27] = true,
|
||||
[28] = true,
|
||||
[29] = true,
|
||||
[30] = true,
|
||||
[31] = true,
|
||||
[32] = true,
|
||||
[33] = true,
|
||||
[34] = true,
|
||||
[35] = true,
|
||||
[36] = false,
|
||||
[37] = true,
|
||||
[38] = true,
|
||||
[39] = true,
|
||||
[40] = true,
|
||||
[41] = true,
|
||||
[42] = true,
|
||||
[43] = true,
|
||||
[44] = true,
|
||||
[45] = true,
|
||||
[46] = true,
|
||||
[47] = true,
|
||||
[48] = true,
|
||||
[49] = false,
|
||||
[50] = false,
|
||||
[51] = false,
|
||||
[52] = false,
|
||||
[53] = false,
|
||||
[54] = false,
|
||||
[55] = false,
|
||||
[56] = false,
|
||||
[57] = false,
|
||||
[58] = false,
|
||||
[59] = false,
|
||||
[60] = false,
|
||||
[61] = false,
|
||||
[62] = false,
|
||||
[63] = false,
|
||||
[64] = false,
|
||||
[65] = false,
|
||||
[66] = false,
|
||||
[67] = false,
|
||||
[68] = false,
|
||||
[69] = false,
|
||||
[70] = false,
|
||||
[71] = false,
|
||||
[72] = false,
|
||||
[73] = false,
|
||||
[74] = false,
|
||||
[75] = false,
|
||||
[76] = false,
|
||||
[77] = false,
|
||||
[78] = false,
|
||||
[79] = false,
|
||||
[80] = false,
|
||||
[81] = false,
|
||||
[82] = false,
|
||||
[83] = false,
|
||||
[84] = false,
|
||||
[85] = false,
|
||||
[86] = false,
|
||||
[87] = false,
|
||||
[88] = false,
|
||||
[89] = false,
|
||||
}
|
||||
WeakAuras.ScanEvents("QUEST_TURNED_IN")
|
||||
@@ -1,26 +1,26 @@
|
||||
--Display every frame for text
|
||||
--Every frame
|
||||
function()
|
||||
print(aura_env.peopleList[aura_env.currentInterrupt])
|
||||
if aura_env.peopleList[aura_env.currentInterrupt] == UnitName("player") then
|
||||
if UnitCastingInfo("Belac") then
|
||||
local sname = UnitCastingInfo("Belac")
|
||||
if sname == "Phangs of Guilt" then
|
||||
return "Interrupt it reeee"
|
||||
end
|
||||
end
|
||||
if UnitDebuff("player", "Belac's Prisoner") or UnitIsDead("player") then --If is in cage
|
||||
local msg = aura_env.messages["Cannot Interrupt"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
aura_env.currentInterrupt = aura_env.currentInterrupt + 1
|
||||
end
|
||||
if GetTime() < aura_env.interruptTime then --If is on cooldown
|
||||
local msg = aura_env.messages["Cannot Interrupt"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
aura_env.currentInterrupt = aura_env.currentInterrupt + 1
|
||||
end
|
||||
return "You're next"
|
||||
end
|
||||
--Display every frame for text
|
||||
--Every frame
|
||||
function()
|
||||
print(aura_env.peopleList[aura_env.currentInterrupt])
|
||||
if aura_env.peopleList[aura_env.currentInterrupt] == UnitName("player") then
|
||||
if UnitCastingInfo("Belac") then
|
||||
local sname = UnitCastingInfo("Belac")
|
||||
if sname == "Phangs of Guilt" then
|
||||
return "Interrupt it reeee"
|
||||
end
|
||||
end
|
||||
if UnitDebuff("player", "Belac's Prisoner") or UnitIsDead("player") then --If is in cage
|
||||
local msg = aura_env.messages["Cannot Interrupt"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
aura_env.currentInterrupt = aura_env.currentInterrupt + 1
|
||||
end
|
||||
if GetTime() < aura_env.interruptTime then --If is on cooldown
|
||||
local msg = aura_env.messages["Cannot Interrupt"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
aura_env.currentInterrupt = aura_env.currentInterrupt + 1
|
||||
end
|
||||
return "You're next"
|
||||
end
|
||||
end
|
||||
@@ -1,40 +1,40 @@
|
||||
aura_env.interruptTime = 0
|
||||
aura_env.interruptCD = 24
|
||||
aura_env.peopleList = {}
|
||||
aura_env.currentInterrupt = 1
|
||||
local playerClass = UnitClass("player")
|
||||
if playerClass == "Hunter" then
|
||||
aura_env.classInterrupt = "Counter Shot" elseif
|
||||
playerClass == "Mage" then
|
||||
aura_env.classInterrupt = "Counterspell" elseif
|
||||
playerClass == "Warlock" then
|
||||
aura.classInterrupt = "Spell Lock"
|
||||
end
|
||||
aura_env.messages =
|
||||
{
|
||||
["Interrupted"] = 9461,
|
||||
["Cannot Interrupt"] = 9462,
|
||||
["Initialized"] = 9451,
|
||||
["Added to interrupt list"], = 9452,
|
||||
["Cycle Interrupt DEBUG"] = 9551
|
||||
}
|
||||
aura_env.encode = function(msg)
|
||||
local date = date()
|
||||
local localtime = date:match("%d%d%/%d%d%/%d%d%s(%d%d%p%d%d%p%d%d)") --15:37:43
|
||||
local hr = localtime:match("(%d%d)")
|
||||
local min = localtime:match("%d%d%p(%d%d)")
|
||||
|
||||
local retmsg = msg - (hr * min)
|
||||
retmsg = tostring(retmsg)
|
||||
return retmsg
|
||||
end
|
||||
aura_env.decode = function(msg)
|
||||
local date = date()
|
||||
local localtime = date:match("%d%d%/%d%d%/%d%d%s(%d%d%p%d%d%p%d%d)") --15:37:43
|
||||
local hr = localtime:match("(%d%d)")
|
||||
local min = localtime:match("%d%d%p(%d%d)")
|
||||
|
||||
tonumber(msg)
|
||||
local retint = msg + (hr * min)
|
||||
return retint
|
||||
aura_env.interruptTime = 0
|
||||
aura_env.interruptCD = 24
|
||||
aura_env.peopleList = {}
|
||||
aura_env.currentInterrupt = 1
|
||||
local playerClass = UnitClass("player")
|
||||
if playerClass == "Hunter" then
|
||||
aura_env.classInterrupt = "Counter Shot" elseif
|
||||
playerClass == "Mage" then
|
||||
aura_env.classInterrupt = "Counterspell" elseif
|
||||
playerClass == "Warlock" then
|
||||
aura.classInterrupt = "Spell Lock"
|
||||
end
|
||||
aura_env.messages =
|
||||
{
|
||||
["Interrupted"] = 9461,
|
||||
["Cannot Interrupt"] = 9462,
|
||||
["Initialized"] = 9451,
|
||||
["Added to interrupt list"], = 9452,
|
||||
["Cycle Interrupt DEBUG"] = 9551
|
||||
}
|
||||
aura_env.encode = function(msg)
|
||||
local date = date()
|
||||
local localtime = date:match("%d%d%/%d%d%/%d%d%s(%d%d%p%d%d%p%d%d)") --15:37:43
|
||||
local hr = localtime:match("(%d%d)")
|
||||
local min = localtime:match("%d%d%p(%d%d)")
|
||||
|
||||
local retmsg = msg - (hr * min)
|
||||
retmsg = tostring(retmsg)
|
||||
return retmsg
|
||||
end
|
||||
aura_env.decode = function(msg)
|
||||
local date = date()
|
||||
local localtime = date:match("%d%d%/%d%d%/%d%d%s(%d%d%p%d%d%p%d%d)") --15:37:43
|
||||
local hr = localtime:match("(%d%d)")
|
||||
local min = localtime:match("%d%d%p(%d%d)")
|
||||
|
||||
tonumber(msg)
|
||||
local retint = msg + (hr * min)
|
||||
return retint
|
||||
end
|
||||
@@ -1,28 +1,28 @@
|
||||
[02:39 PM] [Virags DT]: 14:35:39 UNIT_SPELLCAST_INTERRUPTED - (6) table: 000000004830D3C0 --seems to only work on player
|
||||
[02:39 PM] [Virags DT]: 1 - UNIT_SPELLCAST_INTERRUPTED
|
||||
[02:39 PM] [Virags DT]: 2 - player
|
||||
[02:39 PM] [Virags DT]: 3 - Flash of Light
|
||||
[02:39 PM] [Virags DT]: 5 - 3-5-1-0-19750-00000056B2
|
||||
[02:39 PM] [Virags DT]: 6 - 19750
|
||||
|
||||
|
||||
|
||||
[02:40 PM] [Virags DT]: 14:35:50 COMBAT_LOG_EVENT_UNFILTERED - (18) table: 00000000543D23B0 -- realistically the only important one since the only interrupts are outgoing
|
||||
[02:40 PM] [Virags DT]: 1 - COMBAT_LOG_EVENT_UNFILTERED
|
||||
[02:40 PM] [Virags DT]: 2 - 1549632949.728
|
||||
[02:40 PM] [Virags DT]: 3 - SPELL_INTERRUPT
|
||||
[02:40 PM] [Virags DT]: 4 - false
|
||||
[02:40 PM] [Virags DT]: 5 - Player-5-000AD3B6
|
||||
[02:40 PM] [Virags DT]: 6 - Pinkiepiie
|
||||
[02:40 PM] [Virags DT]: 7 - 1297
|
||||
[02:40 PM] [Virags DT]: 8 - 0
|
||||
[02:40 PM] [Virags DT]: 9 - Player-5-000A70EF
|
||||
[02:40 PM] [Virags DT]: 10 - Lilithiy
|
||||
[02:40 PM] [Virags DT]: 11 - 66888
|
||||
[02:40 PM] [Virags DT]: 12 - 0
|
||||
[02:40 PM] [Virags DT]: 13 - 96231
|
||||
[02:40 PM] [Virags DT]: 14 - Rebuke
|
||||
[02:40 PM] [Virags DT]: 15 - 1
|
||||
[02:40 PM] [Virags DT]: 16 - 116
|
||||
[02:40 PM] [Virags DT]: 17 - Frostbolt
|
||||
[02:39 PM] [Virags DT]: 14:35:39 UNIT_SPELLCAST_INTERRUPTED - (6) table: 000000004830D3C0 --seems to only work on player
|
||||
[02:39 PM] [Virags DT]: 1 - UNIT_SPELLCAST_INTERRUPTED
|
||||
[02:39 PM] [Virags DT]: 2 - player
|
||||
[02:39 PM] [Virags DT]: 3 - Flash of Light
|
||||
[02:39 PM] [Virags DT]: 5 - 3-5-1-0-19750-00000056B2
|
||||
[02:39 PM] [Virags DT]: 6 - 19750
|
||||
|
||||
|
||||
|
||||
[02:40 PM] [Virags DT]: 14:35:50 COMBAT_LOG_EVENT_UNFILTERED - (18) table: 00000000543D23B0 -- realistically the only important one since the only interrupts are outgoing
|
||||
[02:40 PM] [Virags DT]: 1 - COMBAT_LOG_EVENT_UNFILTERED
|
||||
[02:40 PM] [Virags DT]: 2 - 1549632949.728
|
||||
[02:40 PM] [Virags DT]: 3 - SPELL_INTERRUPT
|
||||
[02:40 PM] [Virags DT]: 4 - false
|
||||
[02:40 PM] [Virags DT]: 5 - Player-5-000AD3B6
|
||||
[02:40 PM] [Virags DT]: 6 - Pinkiepiie
|
||||
[02:40 PM] [Virags DT]: 7 - 1297
|
||||
[02:40 PM] [Virags DT]: 8 - 0
|
||||
[02:40 PM] [Virags DT]: 9 - Player-5-000A70EF
|
||||
[02:40 PM] [Virags DT]: 10 - Lilithiy
|
||||
[02:40 PM] [Virags DT]: 11 - 66888
|
||||
[02:40 PM] [Virags DT]: 12 - 0
|
||||
[02:40 PM] [Virags DT]: 13 - 96231
|
||||
[02:40 PM] [Virags DT]: 14 - Rebuke
|
||||
[02:40 PM] [Virags DT]: 15 - 1
|
||||
[02:40 PM] [Virags DT]: 16 - 116
|
||||
[02:40 PM] [Virags DT]: 17 - Frostbolt
|
||||
[02:40 PM] [Virags DT]: 18 - 16
|
||||
@@ -1,18 +1,18 @@
|
||||
--The interrupt detection trigger
|
||||
--COMBAT_LOG_EVENT_UNFILTERED
|
||||
function(...)
|
||||
local subevent = select(3, ...)
|
||||
if subevent == "SPELL_INTERRUPT" then
|
||||
local playerName = select(6, ...)
|
||||
local targetName = select(10, ...)
|
||||
local spellName = select(14, ...)
|
||||
local interruptedSpellName = select(17, ...)
|
||||
if playerName == UnitName("player") and targetName == "Belac" and and interruptedSpellName == "Phangs of Guilt" then
|
||||
local msg = aura_env.messages["Interrupted"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
aura_env.currentInterrupt = aura_env.currentInterrupt + 1
|
||||
aura_env.interruptTime = GetTime() + aura_env.interruptCD
|
||||
end
|
||||
end
|
||||
--The interrupt detection trigger
|
||||
--COMBAT_LOG_EVENT_UNFILTERED
|
||||
function(...)
|
||||
local subevent = select(3, ...)
|
||||
if subevent == "SPELL_INTERRUPT" then
|
||||
local playerName = select(6, ...)
|
||||
local targetName = select(10, ...)
|
||||
local spellName = select(14, ...)
|
||||
local interruptedSpellName = select(17, ...)
|
||||
if playerName == UnitName("player") and targetName == "Belac" and and interruptedSpellName == "Phangs of Guilt" then
|
||||
local msg = aura_env.messages["Interrupted"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
aura_env.currentInterrupt = aura_env.currentInterrupt + 1
|
||||
aura_env.interruptTime = GetTime() + aura_env.interruptCD
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,40 +1,40 @@
|
||||
--The encoding trigger
|
||||
--CHAT_MSG_RAID, CHAT_MSG_RAID_LEADER
|
||||
function(_,msg,sender)
|
||||
local sender = string.match(sender, "%a+")
|
||||
local returnMessage = aura_env.decode(msg)
|
||||
if returnMessage == aura_env.messages["Initialized"] then
|
||||
local isfound = 0
|
||||
for k,v in pairs(aura_env.peopleList) do
|
||||
if v == UnitName("player") then
|
||||
isfound = 1
|
||||
break
|
||||
end
|
||||
end
|
||||
if isfound == 0 then
|
||||
aura_env.peopleList[#aura_env.peopleList + 1] = UnitName("player")
|
||||
end
|
||||
local msg = aura_env.messages["Added to interrupt list"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
end
|
||||
if returnMessage == aura_env.messages["Added to interrupt list"] then
|
||||
local isfound = 0
|
||||
for k,v in pairs(aura_env.peopleList) do
|
||||
if v == sender then
|
||||
isfound = 1
|
||||
break
|
||||
end
|
||||
end
|
||||
if isfound == 0 then
|
||||
aura_env.peopleList[#aura_env.peopleList + 1] = sender
|
||||
end
|
||||
end
|
||||
if returnMessage == aura_env.messages["Interrupted"] then
|
||||
aura_env.currentInterrupt = aura_env.currentInterrupt + 1
|
||||
end
|
||||
if returnMessage == aura_env.messages["Cycle Interrupt DEBUG"] then
|
||||
aura_env.currentInterrupt = aura_env.currentInterrupt + 1
|
||||
end
|
||||
return true
|
||||
--The encoding trigger
|
||||
--CHAT_MSG_RAID, CHAT_MSG_RAID_LEADER
|
||||
function(_,msg,sender)
|
||||
local sender = string.match(sender, "%a+")
|
||||
local returnMessage = aura_env.decode(msg)
|
||||
if returnMessage == aura_env.messages["Initialized"] then
|
||||
local isfound = 0
|
||||
for k,v in pairs(aura_env.peopleList) do
|
||||
if v == UnitName("player") then
|
||||
isfound = 1
|
||||
break
|
||||
end
|
||||
end
|
||||
if isfound == 0 then
|
||||
aura_env.peopleList[#aura_env.peopleList + 1] = UnitName("player")
|
||||
end
|
||||
local msg = aura_env.messages["Added to interrupt list"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
end
|
||||
if returnMessage == aura_env.messages["Added to interrupt list"] then
|
||||
local isfound = 0
|
||||
for k,v in pairs(aura_env.peopleList) do
|
||||
if v == sender then
|
||||
isfound = 1
|
||||
break
|
||||
end
|
||||
end
|
||||
if isfound == 0 then
|
||||
aura_env.peopleList[#aura_env.peopleList + 1] = sender
|
||||
end
|
||||
end
|
||||
if returnMessage == aura_env.messages["Interrupted"] then
|
||||
aura_env.currentInterrupt = aura_env.currentInterrupt + 1
|
||||
end
|
||||
if returnMessage == aura_env.messages["Cycle Interrupt DEBUG"] then
|
||||
aura_env.currentInterrupt = aura_env.currentInterrupt + 1
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -1,15 +1,15 @@
|
||||
--Trigger for raid wide initialization
|
||||
--CHAT_MSG_WHISPER
|
||||
function(_,msg,sender)
|
||||
local sender = string.match(sender, "%a+")
|
||||
if sender == "Pinkiepiie" and msg == "init_the_thing_i_guess_101_?" then
|
||||
local msg = aura_env.messages["Initialized"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
end
|
||||
if sender == "Pinkiepiie" and msg == "cycle_interrupt_debug" then
|
||||
local msg = aura_env.messages["Cycle Interrupt DEBUG"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
end
|
||||
--Trigger for raid wide initialization
|
||||
--CHAT_MSG_WHISPER
|
||||
function(_,msg,sender)
|
||||
local sender = string.match(sender, "%a+")
|
||||
if sender == "Pinkiepiie" and msg == "init_the_thing_i_guess_101_?" then
|
||||
local msg = aura_env.messages["Initialized"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
end
|
||||
if sender == "Pinkiepiie" and msg == "cycle_interrupt_debug" then
|
||||
local msg = aura_env.messages["Cycle Interrupt DEBUG"]
|
||||
local msg = aura_env.encode(msg)
|
||||
SendChatMessage(msg, "RAID")
|
||||
end
|
||||
end
|
||||
@@ -1,56 +1,56 @@
|
||||
--make auto attack speed predictor thing please
|
||||
--COMBAT_LOG_EVENT_UNFILTERED PLAYER_REGEN_DISABLED PLAYER_REGEN_ENABLED
|
||||
function(allstates, e, ...)
|
||||
if e == "COMBAT_LOG_EVENT_UNFILTERED" then
|
||||
local time = debugprofilestop()
|
||||
local subevent = select(2, ...)
|
||||
if subevent == "SWING_DAMAGE" or subevent == "SWING_MISSED" then
|
||||
local source = select(4, ...)
|
||||
local destination = select(9, ...)
|
||||
if source == UnitGUID("target") and destination == UnitName("player") then
|
||||
if #aura_env.swings == aura_env.lines * 2 then
|
||||
for k,v in ipairs(aura_env.swings) do
|
||||
if k > 1 then
|
||||
aura_env.swings[k - 1] = v
|
||||
end
|
||||
end
|
||||
table.remove(aura_env.swings, (aura_env.lines * 2))
|
||||
table.insert(aura_env.swings, time)
|
||||
else
|
||||
table.insert(aura_env.swings, time)
|
||||
end
|
||||
local avgTime = 0
|
||||
for k,v in ipairs(aura_env.swings) do
|
||||
if k > 1 then
|
||||
if avgTime == 0 then
|
||||
avgTime = aura_env.swings[k] - aura_env.swings[k - 1]
|
||||
else
|
||||
avgTime = (avgTime + (aura_env.swings[k] - aura_env.swings[k - 1])) / 2
|
||||
end
|
||||
end
|
||||
end
|
||||
allstates[1] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
progressType = "timed",
|
||||
avgTime = string.format("%.2f", avgTime / 1000),
|
||||
expirationTime = GetTime() + (avgTime / 1000),
|
||||
duration = avgTime / 1000,
|
||||
}
|
||||
print("return true", allstates[1].expirationTime, allstates[1].duration)
|
||||
return true
|
||||
end
|
||||
end
|
||||
elseif e == "PLAYER_REGEN_DISABLED" or e == "PLAYER_REGEN_ENABLED" then
|
||||
aura_env.swings = {}
|
||||
if allstates[1] then
|
||||
allstates[1].show = false
|
||||
allstates[1].changed = true
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.swings = {}
|
||||
--make auto attack speed predictor thing please
|
||||
--COMBAT_LOG_EVENT_UNFILTERED PLAYER_REGEN_DISABLED PLAYER_REGEN_ENABLED
|
||||
function(allstates, e, ...)
|
||||
if e == "COMBAT_LOG_EVENT_UNFILTERED" then
|
||||
local time = debugprofilestop()
|
||||
local subevent = select(2, ...)
|
||||
if subevent == "SWING_DAMAGE" or subevent == "SWING_MISSED" then
|
||||
local source = select(4, ...)
|
||||
local destination = select(9, ...)
|
||||
if source == UnitGUID("target") and destination == UnitName("player") then
|
||||
if #aura_env.swings == aura_env.lines * 2 then
|
||||
for k,v in ipairs(aura_env.swings) do
|
||||
if k > 1 then
|
||||
aura_env.swings[k - 1] = v
|
||||
end
|
||||
end
|
||||
table.remove(aura_env.swings, (aura_env.lines * 2))
|
||||
table.insert(aura_env.swings, time)
|
||||
else
|
||||
table.insert(aura_env.swings, time)
|
||||
end
|
||||
local avgTime = 0
|
||||
for k,v in ipairs(aura_env.swings) do
|
||||
if k > 1 then
|
||||
if avgTime == 0 then
|
||||
avgTime = aura_env.swings[k] - aura_env.swings[k - 1]
|
||||
else
|
||||
avgTime = (avgTime + (aura_env.swings[k] - aura_env.swings[k - 1])) / 2
|
||||
end
|
||||
end
|
||||
end
|
||||
allstates[1] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
progressType = "timed",
|
||||
avgTime = string.format("%.2f", avgTime / 1000),
|
||||
expirationTime = GetTime() + (avgTime / 1000),
|
||||
duration = avgTime / 1000,
|
||||
}
|
||||
print("return true", allstates[1].expirationTime, allstates[1].duration)
|
||||
return true
|
||||
end
|
||||
end
|
||||
elseif e == "PLAYER_REGEN_DISABLED" or e == "PLAYER_REGEN_ENABLED" then
|
||||
aura_env.swings = {}
|
||||
if allstates[1] then
|
||||
allstates[1].show = false
|
||||
allstates[1].changed = true
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.swings = {}
|
||||
aura_env.lines = 2
|
||||
@@ -1,7 +1,7 @@
|
||||
-- CHAT_MSG_LOOT
|
||||
function(allstates, e, msg)
|
||||
if msg:match("You receive loot") then
|
||||
DrawIcon(msg, allstates)
|
||||
return true
|
||||
end
|
||||
end
|
||||
-- CHAT_MSG_LOOT
|
||||
function(allstates, e, msg)
|
||||
if msg:match("You receive loot") then
|
||||
DrawIcon(msg, allstates)
|
||||
return true
|
||||
end
|
||||
end
|
||||
@@ -1,46 +1,46 @@
|
||||
local iconDisplayDuration = 3
|
||||
|
||||
---@alias CItemInfo {name: string, icon: number, quantity: number, color: string}
|
||||
|
||||
---@param msg string
|
||||
---@return CItemInfo, string | nil
|
||||
GetItemInfo = function(msg)
|
||||
local itemInfo = { name = "", icon = 134400, quantity = 0, color = "" }
|
||||
local name = msg:match("h%[(.+)%]")
|
||||
if not name then return itemInfo, "No item name found" end
|
||||
local quantity = msg:match("x(%d+)") or 1
|
||||
itemInfo.name = name
|
||||
itemInfo.quantity = quantity
|
||||
|
||||
if WeakAurasSaved.Cyka.ItemCache[name] then itemInfo.icon = WeakAurasSaved.Cyka.ItemCache[name].icon end
|
||||
local color = msg:match("cff(%w%w%w%w%w%w)") or "ffffff"
|
||||
itemInfo.color = color
|
||||
|
||||
return itemInfo, nil
|
||||
end
|
||||
|
||||
---@param msg string
|
||||
---@param allstates allstates
|
||||
DrawIcon = function(msg, allstates)
|
||||
local info, err = GetItemInfo(msg)
|
||||
if err then
|
||||
print(err)
|
||||
return
|
||||
end
|
||||
|
||||
local formattedName = "\124cff" .. info.color .. "[" .. info.name .. "]\124r x" .. info.quantity
|
||||
allstates[#aura_env.allstates + 1] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
index = GetTime(),
|
||||
resort = true,
|
||||
|
||||
icon = info.icon,
|
||||
name = formattedName,
|
||||
|
||||
progressType = "timed",
|
||||
expirationTime = GetTime() + iconDisplayDuration,
|
||||
duration = iconDisplayDuration,
|
||||
autoHide = true,
|
||||
}
|
||||
end
|
||||
local iconDisplayDuration = 3
|
||||
|
||||
---@alias CItemInfo {name: string, icon: number, quantity: number, color: string}
|
||||
|
||||
---@param msg string
|
||||
---@return CItemInfo, string | nil
|
||||
GetItemInfo = function(msg)
|
||||
local itemInfo = { name = "", icon = 134400, quantity = 0, color = "" }
|
||||
local name = msg:match("h%[(.+)%]")
|
||||
if not name then return itemInfo, "No item name found" end
|
||||
local quantity = msg:match("x(%d+)") or 1
|
||||
itemInfo.name = name
|
||||
itemInfo.quantity = quantity
|
||||
|
||||
if WeakAurasSaved.Cyka.ItemCache[name] then itemInfo.icon = WeakAurasSaved.Cyka.ItemCache[name].icon end
|
||||
local color = msg:match("cff(%w%w%w%w%w%w)") or "ffffff"
|
||||
itemInfo.color = color
|
||||
|
||||
return itemInfo, nil
|
||||
end
|
||||
|
||||
---@param msg string
|
||||
---@param allstates allstates
|
||||
DrawIcon = function(msg, allstates)
|
||||
local info, err = GetItemInfo(msg)
|
||||
if err then
|
||||
print(err)
|
||||
return
|
||||
end
|
||||
|
||||
local formattedName = "\124cff" .. info.color .. "[" .. info.name .. "]\124r x" .. info.quantity
|
||||
allstates[#aura_env.allstates + 1] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
index = GetTime(),
|
||||
resort = true,
|
||||
|
||||
icon = info.icon,
|
||||
name = formattedName,
|
||||
|
||||
progressType = "timed",
|
||||
expirationTime = GetTime() + iconDisplayDuration,
|
||||
duration = iconDisplayDuration,
|
||||
autoHide = true,
|
||||
}
|
||||
end
|
||||
@@ -1,6 +1,6 @@
|
||||
-- LOOT_READY
|
||||
function(e)
|
||||
C_Timer.After(0.1, function()
|
||||
WeakAuras.ScanEvents("DO_AUTOLOOT")
|
||||
end)
|
||||
end
|
||||
-- LOOT_READY
|
||||
function(e)
|
||||
C_Timer.After(0.1, function()
|
||||
WeakAuras.ScanEvents("DO_AUTOLOOT")
|
||||
end)
|
||||
end
|
||||
@@ -1,6 +1,6 @@
|
||||
-- DO_AUTOLOOT
|
||||
function(e)
|
||||
local lootInfo = GetLootInfo()
|
||||
aura_env.FilterService.Run(lootInfo)
|
||||
CloseLoot()
|
||||
end
|
||||
-- DO_AUTOLOOT
|
||||
function(e)
|
||||
local lootInfo = GetLootInfo()
|
||||
aura_env.FilterService.Run(lootInfo)
|
||||
CloseLoot()
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,42 +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
|
||||
-- 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,15 +1,15 @@
|
||||
-- MERCHANT_SHOW
|
||||
function(allstates, e)
|
||||
if (GetMerchantNumItems() > 0) then
|
||||
aura_env.allstates = allstates
|
||||
|
||||
if CanMerchantRepair() == true then RepairAllItems() end
|
||||
|
||||
for container = 0, 4 do
|
||||
for slot = 1, GetContainerNumSlots(container) do
|
||||
aura_env.FilterService.Run(container, slot)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
-- MERCHANT_SHOW
|
||||
function(allstates, e)
|
||||
if (GetMerchantNumItems() > 0) then
|
||||
aura_env.allstates = allstates
|
||||
|
||||
if CanMerchantRepair() == true then RepairAllItems() end
|
||||
|
||||
for container = 0, 4 do
|
||||
for slot = 1, GetContainerNumSlots(container) do
|
||||
aura_env.FilterService.Run(container, slot)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
@@ -1,259 +1,259 @@
|
||||
local debug = false
|
||||
local iconDisplayDuration = 3
|
||||
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemLink(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local link = select(7, GetContainerItemInfo(container, slot))
|
||||
if link == nil then return "", string.format("GetContainerItemInfo returned nil for link (arg 7)") end
|
||||
return link
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemQuantity(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local quantity = select(2, GetContainerItemInfo(container, slot))
|
||||
if quantity == nil then return "", string.format("GetContainerItemInfo returned nil for quantity (arg 2)") end
|
||||
return quantity
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemName(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local name = select(1, GetItemInfo(getItemLink(container, slot)))
|
||||
if name == nil then return "", string.format("GetItemInfo returned nil for name (arg 1)") end
|
||||
return name
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemType(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local type = select(6, GetItemInfo(getItemLink(container, slot)))
|
||||
if type == nil then return "", string.format("GetItemInfo returned nil for type (arg 6)") end
|
||||
return type
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemSubtype(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local subtype = select(7, GetItemInfo(getItemLink(container, slot)))
|
||||
if subtype == nil then return "", string.format("GetItemInfo returned nil for subtype (arg 7)") end
|
||||
return subtype
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemLevel(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local level = select(4, GetItemInfo(getItemLink(container, slot)))
|
||||
if level == nil then return "", string.format("GetItemInfo returned nil for level (arg 4)") end
|
||||
return level
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemValue(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local value = select(11, GetItemInfo(getItemLink(container, slot)))
|
||||
if value == nil then return "", string.format("GetItemInfo returned nil for value (arg 11)") end
|
||||
return value
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemQuality(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local quality = select(3, GetItemInfo(getItemLink(container, slot)))
|
||||
if quality == nil then return "", string.format("GetItemInfo returned nil for quality (arg 3)") end
|
||||
return quality
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemEquipLocation(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local equipLoc = select(9, GetItemInfo(getItemLink(container, slot)))
|
||||
if equipLoc == nil then return "", string.format("GetItemInfo returned nil for equipLoc (arg 9)") end
|
||||
return equipLoc
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemIcon(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local icon = select(10, GetItemInfo(getItemLink(container, slot)))
|
||||
if icon == nil then return "", string.format("GetItemInfo returned nil for icon (arg 10)") end
|
||||
return icon
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getBindType(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local bindType = select(14, GetItemInfo(getItemLink(container, slot)))
|
||||
if bindType == nil then return "", string.format("GetItemInfo returned nil for bindType (arg 14)") end
|
||||
return bindType
|
||||
end
|
||||
|
||||
---@class Filter
|
||||
---@field requires table<string, fun(container:number, slot: number): string|number|boolean> | nil
|
||||
---@field filter fun(container: number, slot: number, provided: table<string, string|number|boolean>): boolean
|
||||
Filter = {
|
||||
---@param requires table<string, fun(container:number, slot: number): string|number|boolean> | nil
|
||||
---@param filter fun(container: number, slot: number, provided: table<string, string|number|boolean>): boolean
|
||||
---@return Filter
|
||||
new = function(requires, filter)
|
||||
local self = setmetatable({}, {
|
||||
__index = Filter,
|
||||
})
|
||||
self.requires = requires
|
||||
self.filter = filter
|
||||
return self
|
||||
end,
|
||||
|
||||
---@param self Filter
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return boolean, string|nil
|
||||
Run = function(self, container, slot)
|
||||
---@type table<string, string|number|boolean>
|
||||
local provided = {}
|
||||
if self.requires then
|
||||
for k, v in pairs(self.requires) do
|
||||
local res, err = v(container, slot)
|
||||
if err then
|
||||
if debug then print(err) end
|
||||
return false, err
|
||||
end
|
||||
provided[k] = res
|
||||
end
|
||||
end
|
||||
local res, err = self.filter(container, slot, provided)
|
||||
if err then
|
||||
if debug then print(err) end
|
||||
end
|
||||
return res, nil
|
||||
end,
|
||||
}
|
||||
|
||||
local grayFilter = Filter.new({
|
||||
["quality"] = getItemQuality,
|
||||
}, function(container, slot, provided)
|
||||
if not aura_env.config.grayFilter then return false end
|
||||
if provided.quality == 0 then return true end
|
||||
return false
|
||||
end)
|
||||
local gearFilter = Filter.new({
|
||||
["ilvl"] = getItemLevel,
|
||||
["bindType"] = getBindType,
|
||||
["type"] = getItemType,
|
||||
["equipLoc"] = getItemEquipLocation,
|
||||
}, function(container, slot, provided)
|
||||
if not aura_env.config.gearFilter then return false end
|
||||
local ilvlThreshold = aura_env.config.gearFilterIlvlFilterThreshold
|
||||
local sellBoe = aura_env.config.gearFilterSellBoe
|
||||
|
||||
if
|
||||
provided.type == "Armor"
|
||||
or provided.type == "Weapon"
|
||||
or provided.equipLoc == "INVTYPE_FINGER"
|
||||
or provided.equipLoc == "INVTYPE_TRINKET"
|
||||
or provided.equipLoc == "INVTYPE_CLOAK"
|
||||
or provided.equipLoc == "INVTYPE_NECK"
|
||||
then
|
||||
if provided.ilvl < ilvlThreshold and (provided.bindType == 1 or sellBoe) then return true end
|
||||
end
|
||||
return false
|
||||
end)
|
||||
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return nil, string|nil
|
||||
local function doSell(container, slot)
|
||||
local itemIcon, err = getItemIcon(container, slot)
|
||||
if err then return nil, string.format("Error getting item icon: %s", err) end
|
||||
local itemName, err = getItemName(container, slot)
|
||||
if err then return nil, string.format("Error getting item name: %s", err) end
|
||||
local itemQuantity, err = getItemQuantity(container, slot)
|
||||
if err then return nil, string.format("Error getting item quantity: %s", err) end
|
||||
local itemQuality, err = getItemQuality(container, slot)
|
||||
if err then return nil, string.format("Error getting item quality: %s", err) end
|
||||
|
||||
local nameWithColor = string.format("%s[%s]\124r", aura_env.qualityColors[itemQuality + 1], itemName)
|
||||
local nameWithQuantity = string.format("%s x%s", nameWithColor, itemQuantity)
|
||||
|
||||
aura_env.allstates[#aura_env.allstates + 1] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
index = GetTime(),
|
||||
resort = true,
|
||||
|
||||
icon = itemIcon,
|
||||
name = nameWithQuantity,
|
||||
amount = itemQuantity,
|
||||
|
||||
progressType = "timed",
|
||||
expirationTime = GetTime() + iconDisplayDuration,
|
||||
duration = iconDisplayDuration,
|
||||
autoHide = true,
|
||||
}
|
||||
|
||||
UseContainerItem(container, slot)
|
||||
return nil, nil
|
||||
end
|
||||
|
||||
---@type table<Filter>
|
||||
local filters = {
|
||||
grayFilter,
|
||||
gearFilter,
|
||||
}
|
||||
|
||||
---@class FilterService
|
||||
aura_env.FilterService = {
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return nil, nil
|
||||
Run = function(container, slot)
|
||||
local itemLink, err = getItemLink(container, slot)
|
||||
if err then return nil, string.format("Err: slot empty (%d-%d) - %s", container, slot, err) end
|
||||
for k, filter in pairs(filters) do
|
||||
local res, err = filter:Run(container, slot)
|
||||
if err then
|
||||
if debug then print(err) end
|
||||
else
|
||||
if res then
|
||||
doSell(container, slot)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
aura_env.qualityColors = {
|
||||
"\124cff9d9d9d", -- Poor
|
||||
"\124cffffffff", -- Common
|
||||
"\124cff1eff00", -- Uncommon
|
||||
"\124cff0070dd", -- Rare
|
||||
"\124cffa335ee", -- Epic
|
||||
"\124cffff8000", -- Legendary
|
||||
"\124cffe6cc80", -- Artifact
|
||||
"\124cff00ccff", -- Heirloom
|
||||
}
|
||||
local debug = false
|
||||
local iconDisplayDuration = 3
|
||||
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemLink(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local link = select(7, GetContainerItemInfo(container, slot))
|
||||
if link == nil then return "", string.format("GetContainerItemInfo returned nil for link (arg 7)") end
|
||||
return link
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemQuantity(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local quantity = select(2, GetContainerItemInfo(container, slot))
|
||||
if quantity == nil then return "", string.format("GetContainerItemInfo returned nil for quantity (arg 2)") end
|
||||
return quantity
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemName(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local name = select(1, GetItemInfo(getItemLink(container, slot)))
|
||||
if name == nil then return "", string.format("GetItemInfo returned nil for name (arg 1)") end
|
||||
return name
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemType(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local type = select(6, GetItemInfo(getItemLink(container, slot)))
|
||||
if type == nil then return "", string.format("GetItemInfo returned nil for type (arg 6)") end
|
||||
return type
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemSubtype(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local subtype = select(7, GetItemInfo(getItemLink(container, slot)))
|
||||
if subtype == nil then return "", string.format("GetItemInfo returned nil for subtype (arg 7)") end
|
||||
return subtype
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemLevel(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local level = select(4, GetItemInfo(getItemLink(container, slot)))
|
||||
if level == nil then return "", string.format("GetItemInfo returned nil for level (arg 4)") end
|
||||
return level
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemValue(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local value = select(11, GetItemInfo(getItemLink(container, slot)))
|
||||
if value == nil then return "", string.format("GetItemInfo returned nil for value (arg 11)") end
|
||||
return value
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemQuality(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local quality = select(3, GetItemInfo(getItemLink(container, slot)))
|
||||
if quality == nil then return "", string.format("GetItemInfo returned nil for quality (arg 3)") end
|
||||
return quality
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemEquipLocation(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local equipLoc = select(9, GetItemInfo(getItemLink(container, slot)))
|
||||
if equipLoc == nil then return "", string.format("GetItemInfo returned nil for equipLoc (arg 9)") end
|
||||
return equipLoc
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getItemIcon(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local icon = select(10, GetItemInfo(getItemLink(container, slot)))
|
||||
if icon == nil then return "", string.format("GetItemInfo returned nil for icon (arg 10)") end
|
||||
return icon
|
||||
end
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return string, string|nil
|
||||
local function getBindType(container, slot)
|
||||
if container == nil then return "", string.format("Container is nil") end
|
||||
if slot == nil then return "", string.format("Slot is nil") end
|
||||
local bindType = select(14, GetItemInfo(getItemLink(container, slot)))
|
||||
if bindType == nil then return "", string.format("GetItemInfo returned nil for bindType (arg 14)") end
|
||||
return bindType
|
||||
end
|
||||
|
||||
---@class Filter
|
||||
---@field requires table<string, fun(container:number, slot: number): string|number|boolean> | nil
|
||||
---@field filter fun(container: number, slot: number, provided: table<string, string|number|boolean>): boolean
|
||||
Filter = {
|
||||
---@param requires table<string, fun(container:number, slot: number): string|number|boolean> | nil
|
||||
---@param filter fun(container: number, slot: number, provided: table<string, string|number|boolean>): boolean
|
||||
---@return Filter
|
||||
new = function(requires, filter)
|
||||
local self = setmetatable({}, {
|
||||
__index = Filter,
|
||||
})
|
||||
self.requires = requires
|
||||
self.filter = filter
|
||||
return self
|
||||
end,
|
||||
|
||||
---@param self Filter
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return boolean, string|nil
|
||||
Run = function(self, container, slot)
|
||||
---@type table<string, string|number|boolean>
|
||||
local provided = {}
|
||||
if self.requires then
|
||||
for k, v in pairs(self.requires) do
|
||||
local res, err = v(container, slot)
|
||||
if err then
|
||||
if debug then print(err) end
|
||||
return false, err
|
||||
end
|
||||
provided[k] = res
|
||||
end
|
||||
end
|
||||
local res, err = self.filter(container, slot, provided)
|
||||
if err then
|
||||
if debug then print(err) end
|
||||
end
|
||||
return res, nil
|
||||
end,
|
||||
}
|
||||
|
||||
local grayFilter = Filter.new({
|
||||
["quality"] = getItemQuality,
|
||||
}, function(container, slot, provided)
|
||||
if not aura_env.config.grayFilter then return false end
|
||||
if provided.quality == 0 then return true end
|
||||
return false
|
||||
end)
|
||||
local gearFilter = Filter.new({
|
||||
["ilvl"] = getItemLevel,
|
||||
["bindType"] = getBindType,
|
||||
["type"] = getItemType,
|
||||
["equipLoc"] = getItemEquipLocation,
|
||||
}, function(container, slot, provided)
|
||||
if not aura_env.config.gearFilter then return false end
|
||||
local ilvlThreshold = aura_env.config.gearFilterIlvlFilterThreshold
|
||||
local sellBoe = aura_env.config.gearFilterSellBoe
|
||||
|
||||
if
|
||||
provided.type == "Armor"
|
||||
or provided.type == "Weapon"
|
||||
or provided.equipLoc == "INVTYPE_FINGER"
|
||||
or provided.equipLoc == "INVTYPE_TRINKET"
|
||||
or provided.equipLoc == "INVTYPE_CLOAK"
|
||||
or provided.equipLoc == "INVTYPE_NECK"
|
||||
then
|
||||
if provided.ilvl < ilvlThreshold and (provided.bindType == 1 or sellBoe) then return true end
|
||||
end
|
||||
return false
|
||||
end)
|
||||
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return nil, string|nil
|
||||
local function doSell(container, slot)
|
||||
local itemIcon, err = getItemIcon(container, slot)
|
||||
if err then return nil, string.format("Error getting item icon: %s", err) end
|
||||
local itemName, err = getItemName(container, slot)
|
||||
if err then return nil, string.format("Error getting item name: %s", err) end
|
||||
local itemQuantity, err = getItemQuantity(container, slot)
|
||||
if err then return nil, string.format("Error getting item quantity: %s", err) end
|
||||
local itemQuality, err = getItemQuality(container, slot)
|
||||
if err then return nil, string.format("Error getting item quality: %s", err) end
|
||||
|
||||
local nameWithColor = string.format("%s[%s]\124r", aura_env.qualityColors[itemQuality + 1], itemName)
|
||||
local nameWithQuantity = string.format("%s x%s", nameWithColor, itemQuantity)
|
||||
|
||||
aura_env.allstates[#aura_env.allstates + 1] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
index = GetTime(),
|
||||
resort = true,
|
||||
|
||||
icon = itemIcon,
|
||||
name = nameWithQuantity,
|
||||
amount = itemQuantity,
|
||||
|
||||
progressType = "timed",
|
||||
expirationTime = GetTime() + iconDisplayDuration,
|
||||
duration = iconDisplayDuration,
|
||||
autoHide = true,
|
||||
}
|
||||
|
||||
UseContainerItem(container, slot)
|
||||
return nil, nil
|
||||
end
|
||||
|
||||
---@type table<Filter>
|
||||
local filters = {
|
||||
grayFilter,
|
||||
gearFilter,
|
||||
}
|
||||
|
||||
---@class FilterService
|
||||
aura_env.FilterService = {
|
||||
---@param container number
|
||||
---@param slot number
|
||||
---@return nil, nil
|
||||
Run = function(container, slot)
|
||||
local itemLink, err = getItemLink(container, slot)
|
||||
if err then return nil, string.format("Err: slot empty (%d-%d) - %s", container, slot, err) end
|
||||
for k, filter in pairs(filters) do
|
||||
local res, err = filter:Run(container, slot)
|
||||
if err then
|
||||
if debug then print(err) end
|
||||
else
|
||||
if res then
|
||||
doSell(container, slot)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
aura_env.qualityColors = {
|
||||
"\124cff9d9d9d", -- Poor
|
||||
"\124cffffffff", -- Common
|
||||
"\124cff1eff00", -- Uncommon
|
||||
"\124cff0070dd", -- Rare
|
||||
"\124cffa335ee", -- Epic
|
||||
"\124cffff8000", -- Legendary
|
||||
"\124cffe6cc80", -- Artifact
|
||||
"\124cff00ccff", -- Heirloom
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,205 +1,205 @@
|
||||
--- LOOT_READY LOOT_OPENED MERCHANT_SHOW QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW SCRAPPING_MACHINE_SHOW MERCHANT_CLOSED EQUIP_BIND_CONFIRM
|
||||
function(e)
|
||||
local aura_env = aura_env
|
||||
if e == "LOOT_READY" or e == "LOOT_OPENED" then --Auto Loot
|
||||
local slot = 1
|
||||
local lootinfo = GetLootInfo()
|
||||
for k, v in pairs(lootinfo) do
|
||||
if v.locked == false then
|
||||
local link = GetLootSlotLink(slot)
|
||||
local looted = false
|
||||
if not link then link = GetLootSlotLink(slot) end
|
||||
if aura_env.filter[1] == true and (v.item:match("%d+ Gold") or v.item:match("%d+ Silver") or v.item:match("%d+ Copper")) then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[2] == true and link:match("Azerite") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[3] == true and v.item:match("War Resources") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[4] == true and v.item:match("Residuum") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[5] == true and v.item:match("Manapearl") then
|
||||
LootSlot(slot)
|
||||
end
|
||||
if link then
|
||||
local icon = v.texture
|
||||
local id = link:match("item:(%d+):")
|
||||
local type = select(6, GetItemInfo(link)) or ""
|
||||
local subtype = select(7, GetItemInfo(link)) or ""
|
||||
local ilvl = select(4, GetItemInfo(link)) or 0
|
||||
local equip = select(9, GetItemInfo(link))
|
||||
if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[14] == true and v.isQuestItem == true then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[15] == true and v.quality == 0 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[21] == true and type == "Tradeskill" and subtype == "Elemental" then
|
||||
LootSlot(slot)
|
||||
else
|
||||
if type == "Weapon" or type == "Armor" then
|
||||
if aura_env.filter[18] == true and aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 and v.quality > 2 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[19] == true and (equip == "INVTYPE_FINGER" or equip == "INVTYPE_TRINKET" or equip == "INVTYPE_CLOAK" or equip == "INVTYPE_NECK") and v.quality > 2 then
|
||||
LootSlot(slot)
|
||||
end
|
||||
elseif aura_env.filter[20] == true and type == "Miscellaneous" then
|
||||
if subtype == "Mount" then
|
||||
LootSlot(slot)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
slot = slot + 1
|
||||
end
|
||||
end
|
||||
--CloseLoot()
|
||||
elseif e == "EQUIP_BIND_CONFIRM" then
|
||||
StaticPopup1Button1:Click()
|
||||
elseif e == "SCRAPPING_MACHINE_SHOW" then
|
||||
for i = 0, 4 do
|
||||
for j = 1, GetContainerNumSlots(i) do
|
||||
local link = select(7, GetContainerItemInfo(i, j))
|
||||
if link then
|
||||
local name = GetItemInfo(link)
|
||||
local rarity = select(3, GetItemInfo(link))
|
||||
local ilvl = select(4, GetItemInfo(link)) or 0
|
||||
local type = select(6, GetItemInfo(link))
|
||||
local equip = select(9, GetItemInfo(link)) or ""
|
||||
local price = select(11, GetItemInfo(link))
|
||||
if aura_env.sellWhitelist[name] ~= 1 then
|
||||
if name and rarity and ilvl and type and equip and price then
|
||||
if (type == "Armor" or type == "Weapon") and rarity <= 3 and aura_env.getequipID(equip) then
|
||||
UseContainerItem(i, j)
|
||||
elseif rarity > 3 and aura_env.getequipID(equip) then
|
||||
if equip ~= "INVTYPE_FINGER" then
|
||||
local eqID = aura_env.getequipID(equip)
|
||||
local elink = GetInventoryItemLink("player", eqID)
|
||||
local eilvl = select(4, GetItemInfo(elink)) or 0
|
||||
if eilvl > ilvl + 5 then
|
||||
print("Scrapping " .. link .. "over " .. eilvl - ilvl .. " ilvl difference from " .. elink)
|
||||
UseContainerItem(i, j)
|
||||
end
|
||||
elseif equip == "INVTYPE_FINGER" then
|
||||
local eqID1, eqID2 = 11, 12
|
||||
local elink1, elink2 = GetInventoryItemLink("player", eqID1), GetInventoryItemLink("player", eqID2)
|
||||
local eilvl1, eilvl2 = select(4, GetItemInfo(elink1)) or 0, select(4, GetItemInfo(elink2)) or 0
|
||||
if eilvl1 > ilvl + 5 then
|
||||
print("Scrapping " .. link .. " over " .. eilvl1 - ilvl .. " ilvl difference from " .. elink1)
|
||||
UseContainerItem(i, j)
|
||||
elseif eilvl2 > ilvl + 5 then
|
||||
print("Scrapping " .. link .. " over " .. eilvl2 - ilvl .. " ilvl difference from " .. elink2)
|
||||
UseContainerItem(i, j)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif e == "MERCHANT_SHOW" then --Sell grey and white wepaon
|
||||
if CanMerchantRepair() == true then RepairAllItems() end
|
||||
local i, j = 0, 1
|
||||
for c = 0, 4 do
|
||||
for s = 1, GetContainerNumSlots(c) do
|
||||
local link = select(7, GetContainerItemInfo(c, s))
|
||||
if link then
|
||||
local name = GetItemInfo(link)
|
||||
local rarity = select(3, GetItemInfo(link))
|
||||
local ilvl = select(4, GetItemInfo(link)) or 0
|
||||
local type = select(6, GetItemInfo(link))
|
||||
local price = select(11, GetItemInfo(link))
|
||||
if price and price > 0 then
|
||||
if aura_env.sellWhitelist[name] ~= 1 then
|
||||
if rarity == 0 then
|
||||
if aura_env.throttleSell == true then
|
||||
aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s}
|
||||
else
|
||||
UseContainerItem(c, s)
|
||||
end
|
||||
elseif (type == "Armor" or type == "Weapon") and ilvl < 200 then
|
||||
if aura_env.throttleSell == true then
|
||||
aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s}
|
||||
else
|
||||
UseContainerItem(c, s)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if aura_env.throttleSell == true then
|
||||
aura_env.ticker = C_Timer.NewTicker(0.05, function()
|
||||
if aura_env.toSell[1] then
|
||||
UseContainerItem(aura_env.toSell[1].c, aura_env.toSell[1].s)
|
||||
table.remove(aura_env.toSell, 1)
|
||||
else
|
||||
aura_env.ticker:Cancel()
|
||||
end
|
||||
if j >= GetContainerNumSlots(i) then i = i + 1
|
||||
j = 1 end
|
||||
if i >= 4 then aura_env.ticker:Cancel() end
|
||||
end)
|
||||
end
|
||||
elseif e == "MERCHANT_CLOSED" then
|
||||
if aura_env.ticker then aura_env.ticker:Cancel() end
|
||||
aura_env.toSell = {}
|
||||
elseif 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 complquests = GetNumGossipActiveQuests()
|
||||
local opt = GetNumGossipOptions()
|
||||
if complquests > 0 and opt == 0 then
|
||||
for i = 1, complquests do
|
||||
SelectGossipActiveQuest(i)
|
||||
end
|
||||
end
|
||||
if quests > 0 and opt == 0 then
|
||||
SelectGossipAvailableQuest(1)
|
||||
end
|
||||
if opt == 1 and quests + complquests == 0 then
|
||||
SelectGossipOption(1)
|
||||
end
|
||||
elseif e == "QUEST_GREETING" then
|
||||
local quests = GetNumGossipAvailableQuests()
|
||||
local complquests = GetNumGossipActiveQuests()
|
||||
if complquests > 0 then
|
||||
for i = 1, complquests do
|
||||
SelectActiveQuest(1)
|
||||
end
|
||||
end
|
||||
if quests > 0 then
|
||||
SelectAvailableQuest(1)
|
||||
end
|
||||
elseif e == "QUEST_PROGRESS" then
|
||||
if IsQuestCompletable(i) then
|
||||
CompleteQuest()
|
||||
end
|
||||
end
|
||||
--- LOOT_READY LOOT_OPENED MERCHANT_SHOW QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW SCRAPPING_MACHINE_SHOW MERCHANT_CLOSED EQUIP_BIND_CONFIRM
|
||||
function(e)
|
||||
local aura_env = aura_env
|
||||
if e == "LOOT_READY" or e == "LOOT_OPENED" then --Auto Loot
|
||||
local slot = 1
|
||||
local lootinfo = GetLootInfo()
|
||||
for k, v in pairs(lootinfo) do
|
||||
if v.locked == false then
|
||||
local link = GetLootSlotLink(slot)
|
||||
local looted = false
|
||||
if not link then link = GetLootSlotLink(slot) end
|
||||
if aura_env.filter[1] == true and (v.item:match("%d+ Gold") or v.item:match("%d+ Silver") or v.item:match("%d+ Copper")) then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[2] == true and link:match("Azerite") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[3] == true and v.item:match("War Resources") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[4] == true and v.item:match("Residuum") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[5] == true and v.item:match("Manapearl") then
|
||||
LootSlot(slot)
|
||||
end
|
||||
if link then
|
||||
local icon = v.texture
|
||||
local id = link:match("item:(%d+):")
|
||||
local type = select(6, GetItemInfo(link)) or ""
|
||||
local subtype = select(7, GetItemInfo(link)) or ""
|
||||
local ilvl = select(4, GetItemInfo(link)) or 0
|
||||
local equip = select(9, GetItemInfo(link))
|
||||
if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[14] == true and v.isQuestItem == true then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[15] == true and v.quality == 0 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[21] == true and type == "Tradeskill" and subtype == "Elemental" then
|
||||
LootSlot(slot)
|
||||
else
|
||||
if type == "Weapon" or type == "Armor" then
|
||||
if aura_env.filter[18] == true and aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 and v.quality > 2 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[19] == true and (equip == "INVTYPE_FINGER" or equip == "INVTYPE_TRINKET" or equip == "INVTYPE_CLOAK" or equip == "INVTYPE_NECK") and v.quality > 2 then
|
||||
LootSlot(slot)
|
||||
end
|
||||
elseif aura_env.filter[20] == true and type == "Miscellaneous" then
|
||||
if subtype == "Mount" then
|
||||
LootSlot(slot)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
slot = slot + 1
|
||||
end
|
||||
end
|
||||
--CloseLoot()
|
||||
elseif e == "EQUIP_BIND_CONFIRM" then
|
||||
StaticPopup1Button1:Click()
|
||||
elseif e == "SCRAPPING_MACHINE_SHOW" then
|
||||
for i = 0, 4 do
|
||||
for j = 1, GetContainerNumSlots(i) do
|
||||
local link = select(7, GetContainerItemInfo(i, j))
|
||||
if link then
|
||||
local name = GetItemInfo(link)
|
||||
local rarity = select(3, GetItemInfo(link))
|
||||
local ilvl = select(4, GetItemInfo(link)) or 0
|
||||
local type = select(6, GetItemInfo(link))
|
||||
local equip = select(9, GetItemInfo(link)) or ""
|
||||
local price = select(11, GetItemInfo(link))
|
||||
if aura_env.sellWhitelist[name] ~= 1 then
|
||||
if name and rarity and ilvl and type and equip and price then
|
||||
if (type == "Armor" or type == "Weapon") and rarity <= 3 and aura_env.getequipID(equip) then
|
||||
UseContainerItem(i, j)
|
||||
elseif rarity > 3 and aura_env.getequipID(equip) then
|
||||
if equip ~= "INVTYPE_FINGER" then
|
||||
local eqID = aura_env.getequipID(equip)
|
||||
local elink = GetInventoryItemLink("player", eqID)
|
||||
local eilvl = select(4, GetItemInfo(elink)) or 0
|
||||
if eilvl > ilvl + 5 then
|
||||
print("Scrapping " .. link .. "over " .. eilvl - ilvl .. " ilvl difference from " .. elink)
|
||||
UseContainerItem(i, j)
|
||||
end
|
||||
elseif equip == "INVTYPE_FINGER" then
|
||||
local eqID1, eqID2 = 11, 12
|
||||
local elink1, elink2 = GetInventoryItemLink("player", eqID1), GetInventoryItemLink("player", eqID2)
|
||||
local eilvl1, eilvl2 = select(4, GetItemInfo(elink1)) or 0, select(4, GetItemInfo(elink2)) or 0
|
||||
if eilvl1 > ilvl + 5 then
|
||||
print("Scrapping " .. link .. " over " .. eilvl1 - ilvl .. " ilvl difference from " .. elink1)
|
||||
UseContainerItem(i, j)
|
||||
elseif eilvl2 > ilvl + 5 then
|
||||
print("Scrapping " .. link .. " over " .. eilvl2 - ilvl .. " ilvl difference from " .. elink2)
|
||||
UseContainerItem(i, j)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif e == "MERCHANT_SHOW" then --Sell grey and white wepaon
|
||||
if CanMerchantRepair() == true then RepairAllItems() end
|
||||
local i, j = 0, 1
|
||||
for c = 0, 4 do
|
||||
for s = 1, GetContainerNumSlots(c) do
|
||||
local link = select(7, GetContainerItemInfo(c, s))
|
||||
if link then
|
||||
local name = GetItemInfo(link)
|
||||
local rarity = select(3, GetItemInfo(link))
|
||||
local ilvl = select(4, GetItemInfo(link)) or 0
|
||||
local type = select(6, GetItemInfo(link))
|
||||
local price = select(11, GetItemInfo(link))
|
||||
if price and price > 0 then
|
||||
if aura_env.sellWhitelist[name] ~= 1 then
|
||||
if rarity == 0 then
|
||||
if aura_env.throttleSell == true then
|
||||
aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s}
|
||||
else
|
||||
UseContainerItem(c, s)
|
||||
end
|
||||
elseif (type == "Armor" or type == "Weapon") and ilvl < 200 then
|
||||
if aura_env.throttleSell == true then
|
||||
aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s}
|
||||
else
|
||||
UseContainerItem(c, s)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if aura_env.throttleSell == true then
|
||||
aura_env.ticker = C_Timer.NewTicker(0.05, function()
|
||||
if aura_env.toSell[1] then
|
||||
UseContainerItem(aura_env.toSell[1].c, aura_env.toSell[1].s)
|
||||
table.remove(aura_env.toSell, 1)
|
||||
else
|
||||
aura_env.ticker:Cancel()
|
||||
end
|
||||
if j >= GetContainerNumSlots(i) then i = i + 1
|
||||
j = 1 end
|
||||
if i >= 4 then aura_env.ticker:Cancel() end
|
||||
end)
|
||||
end
|
||||
elseif e == "MERCHANT_CLOSED" then
|
||||
if aura_env.ticker then aura_env.ticker:Cancel() end
|
||||
aura_env.toSell = {}
|
||||
elseif 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 complquests = GetNumGossipActiveQuests()
|
||||
local opt = GetNumGossipOptions()
|
||||
if complquests > 0 and opt == 0 then
|
||||
for i = 1, complquests do
|
||||
SelectGossipActiveQuest(i)
|
||||
end
|
||||
end
|
||||
if quests > 0 and opt == 0 then
|
||||
SelectGossipAvailableQuest(1)
|
||||
end
|
||||
if opt == 1 and quests + complquests == 0 then
|
||||
SelectGossipOption(1)
|
||||
end
|
||||
elseif e == "QUEST_GREETING" then
|
||||
local quests = GetNumGossipAvailableQuests()
|
||||
local complquests = GetNumGossipActiveQuests()
|
||||
if complquests > 0 then
|
||||
for i = 1, complquests 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,394 +1,394 @@
|
||||
aura_env.debug = true
|
||||
aura_env.filter = {
|
||||
[1] = true, --Gold
|
||||
[2] = true, --Azerite
|
||||
[3] = true, --War resources
|
||||
[4] = true, --Residuum
|
||||
[5] = true, --Manapearls
|
||||
[6] = true, --Mounts
|
||||
[7] = true, --High ilvl
|
||||
[8] = false, --Herbs
|
||||
[9] = true, --Cooking
|
||||
[10] = true, --Cloth
|
||||
[11] = false, --Metal & Stone
|
||||
[12] = true, --Gold filter greys
|
||||
[13] = true, -- >1 && <4 quality items, no gear
|
||||
[14] = true, --Quest items
|
||||
[15] = true, --All greys
|
||||
[16] = true, --Whitelist
|
||||
[17] = true, --Quest items (different filter)
|
||||
[18] = true, --Class aproperiate >2 items
|
||||
[19] = true, --Jewelery >2 quality
|
||||
[20] = true, --Additional mount filter
|
||||
[21] = true, --Tradeskill // Elemental
|
||||
}
|
||||
aura_env.ilvlFilter = 200
|
||||
aura_env.goldFilter = 0.5
|
||||
aura_env.goldFilter = aura_env.goldFilter * 10000
|
||||
aura_env.throttleSell = false
|
||||
|
||||
aura_env.whitelist = {
|
||||
["Pygmy Suckerfish"] = 1,
|
||||
["Drakkari Offerings"] = 1,
|
||||
["Deepcoral Pod"] = 1,
|
||||
["Hardened Spring"] = 1,
|
||||
["Machined Gear Assembly"] = 1,
|
||||
["Tempered Plating"] = 1,
|
||||
["Hefty Glimmershell"] = 1,
|
||||
["Fresh Meat"] = 1,
|
||||
["Wood"] = 1,
|
||||
|
||||
["Gloom Dust"] = 1,
|
||||
["Veiled Crytal"] = 1,
|
||||
["Coalescing Visions"] = 1,
|
||||
["Echoes of Ny'alotha"] = 1,
|
||||
["Corrupted Mementos"] = 1,
|
||||
|
||||
["Blood of Sargeras"] = 1,
|
||||
["Primal Sargerite"] = 1,
|
||||
|
||||
["Chain Ignitercoil"] = 1,
|
||||
["Galvanic Oscillator"] = 1,
|
||||
["Corrupted Memento"] = 1,
|
||||
}
|
||||
aura_env.sellWhitelist = {
|
||||
["Blacksmith Hammer"] = 1,
|
||||
["Endless Tincture of Renewed Combat"] = 1,
|
||||
["Mr. Munchykins"] = 1,
|
||||
["Arclight Spanner"] = 1,
|
||||
["Runeblade of Baron Rivendare"] = 1,
|
||||
}
|
||||
aura_env.toSell = {}
|
||||
aura_env.getequipID = function(equip)
|
||||
if equip == "INVTYPE_HEAD" then
|
||||
return 1
|
||||
elseif equip == "INVTYPE_NECK" then
|
||||
return 2
|
||||
elseif equip == "INVTYPE_SHOULDER" then
|
||||
return 3
|
||||
elseif equip == "INVTYPE_BODY" then
|
||||
return 4
|
||||
elseif equip == "INVTYPE_CHEST" or equip == "INVTYPE_ROBE" then
|
||||
return 5
|
||||
elseif equip == "INVTYPE_WAIST" then
|
||||
return 6
|
||||
elseif equip == "INVTYPE_LEGS" then
|
||||
return 7
|
||||
elseif equip == "INVTYPE_FEET" then
|
||||
return 8
|
||||
elseif equip == "INVTYPE_WRIST" then
|
||||
return 9
|
||||
elseif equip == "INVTYPE_HAND" then
|
||||
return 10
|
||||
elseif equip == "INVTYPE_CLOAK" then
|
||||
return 15
|
||||
elseif equip == "INVTYPE_WEAPON" or equip == "INVTYPE_WEAPONMAINHAND" or equip == "INVTYPE_2HWEAPON" then
|
||||
return 16
|
||||
elseif equip == "INVTYPE_SHIELD" then
|
||||
return 17
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
aura_env.skills = {
|
||||
--Warrior
|
||||
[1] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 1,
|
||||
["Shields"] = 1,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 1,
|
||||
["Bows"] = 1,
|
||||
["Guns"] = 1,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 1,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 1,
|
||||
["Warglaives"] = 1,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 1,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Paladin
|
||||
[2] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 1,
|
||||
["Shields"] = 1,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 1,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 1,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 1,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 0,
|
||||
["Fist Weapons"] = 0,
|
||||
["Daggers"] = 0,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Hunter
|
||||
[3] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 1,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 1,
|
||||
["Bows"] = 1,
|
||||
["Guns"] = 1,
|
||||
["One-Handed Maces"] = 0,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 1,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 1,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Rogue
|
||||
[4] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 1,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 0,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Priest
|
||||
[5] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 1,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 0,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 0,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 0,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 1,
|
||||
},
|
||||
--Death Knight
|
||||
[6] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 1,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 1,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 1,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 1,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 0,
|
||||
["Fist Weapons"] = 0,
|
||||
["Daggers"] = 0,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Shaman
|
||||
[7] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 1,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 1,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 0,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Mage
|
||||
[8] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 1,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 0,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 0,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 0,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 1,
|
||||
},
|
||||
--Warlock
|
||||
[9] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 1,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 0,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 0,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 0,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 1,
|
||||
},
|
||||
--Monk
|
||||
[10] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 1,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 1,
|
||||
["Shields"] = 1,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 0,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Druid
|
||||
[11] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 1,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 0,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 0,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Demon Hunter
|
||||
[12] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 1,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 0,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 1,
|
||||
["Staves"] = 0,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 0,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
}
|
||||
aura_env.debug = true
|
||||
aura_env.filter = {
|
||||
[1] = true, --Gold
|
||||
[2] = true, --Azerite
|
||||
[3] = true, --War resources
|
||||
[4] = true, --Residuum
|
||||
[5] = true, --Manapearls
|
||||
[6] = true, --Mounts
|
||||
[7] = true, --High ilvl
|
||||
[8] = false, --Herbs
|
||||
[9] = true, --Cooking
|
||||
[10] = true, --Cloth
|
||||
[11] = false, --Metal & Stone
|
||||
[12] = true, --Gold filter greys
|
||||
[13] = true, -- >1 && <4 quality items, no gear
|
||||
[14] = true, --Quest items
|
||||
[15] = true, --All greys
|
||||
[16] = true, --Whitelist
|
||||
[17] = true, --Quest items (different filter)
|
||||
[18] = true, --Class aproperiate >2 items
|
||||
[19] = true, --Jewelery >2 quality
|
||||
[20] = true, --Additional mount filter
|
||||
[21] = true, --Tradeskill // Elemental
|
||||
}
|
||||
aura_env.ilvlFilter = 200
|
||||
aura_env.goldFilter = 0.5
|
||||
aura_env.goldFilter = aura_env.goldFilter * 10000
|
||||
aura_env.throttleSell = false
|
||||
|
||||
aura_env.whitelist = {
|
||||
["Pygmy Suckerfish"] = 1,
|
||||
["Drakkari Offerings"] = 1,
|
||||
["Deepcoral Pod"] = 1,
|
||||
["Hardened Spring"] = 1,
|
||||
["Machined Gear Assembly"] = 1,
|
||||
["Tempered Plating"] = 1,
|
||||
["Hefty Glimmershell"] = 1,
|
||||
["Fresh Meat"] = 1,
|
||||
["Wood"] = 1,
|
||||
|
||||
["Gloom Dust"] = 1,
|
||||
["Veiled Crytal"] = 1,
|
||||
["Coalescing Visions"] = 1,
|
||||
["Echoes of Ny'alotha"] = 1,
|
||||
["Corrupted Mementos"] = 1,
|
||||
|
||||
["Blood of Sargeras"] = 1,
|
||||
["Primal Sargerite"] = 1,
|
||||
|
||||
["Chain Ignitercoil"] = 1,
|
||||
["Galvanic Oscillator"] = 1,
|
||||
["Corrupted Memento"] = 1,
|
||||
}
|
||||
aura_env.sellWhitelist = {
|
||||
["Blacksmith Hammer"] = 1,
|
||||
["Endless Tincture of Renewed Combat"] = 1,
|
||||
["Mr. Munchykins"] = 1,
|
||||
["Arclight Spanner"] = 1,
|
||||
["Runeblade of Baron Rivendare"] = 1,
|
||||
}
|
||||
aura_env.toSell = {}
|
||||
aura_env.getequipID = function(equip)
|
||||
if equip == "INVTYPE_HEAD" then
|
||||
return 1
|
||||
elseif equip == "INVTYPE_NECK" then
|
||||
return 2
|
||||
elseif equip == "INVTYPE_SHOULDER" then
|
||||
return 3
|
||||
elseif equip == "INVTYPE_BODY" then
|
||||
return 4
|
||||
elseif equip == "INVTYPE_CHEST" or equip == "INVTYPE_ROBE" then
|
||||
return 5
|
||||
elseif equip == "INVTYPE_WAIST" then
|
||||
return 6
|
||||
elseif equip == "INVTYPE_LEGS" then
|
||||
return 7
|
||||
elseif equip == "INVTYPE_FEET" then
|
||||
return 8
|
||||
elseif equip == "INVTYPE_WRIST" then
|
||||
return 9
|
||||
elseif equip == "INVTYPE_HAND" then
|
||||
return 10
|
||||
elseif equip == "INVTYPE_CLOAK" then
|
||||
return 15
|
||||
elseif equip == "INVTYPE_WEAPON" or equip == "INVTYPE_WEAPONMAINHAND" or equip == "INVTYPE_2HWEAPON" then
|
||||
return 16
|
||||
elseif equip == "INVTYPE_SHIELD" then
|
||||
return 17
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
aura_env.skills = {
|
||||
--Warrior
|
||||
[1] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 1,
|
||||
["Shields"] = 1,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 1,
|
||||
["Bows"] = 1,
|
||||
["Guns"] = 1,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 1,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 1,
|
||||
["Warglaives"] = 1,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 1,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Paladin
|
||||
[2] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 1,
|
||||
["Shields"] = 1,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 1,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 1,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 1,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 0,
|
||||
["Fist Weapons"] = 0,
|
||||
["Daggers"] = 0,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Hunter
|
||||
[3] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 1,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 1,
|
||||
["Bows"] = 1,
|
||||
["Guns"] = 1,
|
||||
["One-Handed Maces"] = 0,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 1,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 1,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Rogue
|
||||
[4] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 1,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 0,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Priest
|
||||
[5] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 1,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 0,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 0,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 0,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 1,
|
||||
},
|
||||
--Death Knight
|
||||
[6] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 1,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 1,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 1,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 1,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 0,
|
||||
["Fist Weapons"] = 0,
|
||||
["Daggers"] = 0,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Shaman
|
||||
[7] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 1,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 1,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 0,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Mage
|
||||
[8] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 1,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 0,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 0,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 0,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 1,
|
||||
},
|
||||
--Warlock
|
||||
[9] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 1,
|
||||
["Leather"] = 0,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 0,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 0,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 0,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 1,
|
||||
},
|
||||
--Monk
|
||||
[10] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 1,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 1,
|
||||
["Shields"] = 1,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 0,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Druid
|
||||
[11] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 1,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 0,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 1,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 1,
|
||||
["One-Handed Swords"] = 0,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 0,
|
||||
["Staves"] = 1,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 1,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
--Demon Hunter
|
||||
[12] = {
|
||||
--Armor Skills
|
||||
["Cloth"] = 0,
|
||||
["Leather"] = 1,
|
||||
["Mail"] = 0,
|
||||
["Plate"] = 0,
|
||||
["Shields"] = 0,
|
||||
--Weapon Skills
|
||||
["One-Handed Axes"] = 1,
|
||||
["Two-Handed Axes"] = 0,
|
||||
["Bows"] = 0,
|
||||
["Guns"] = 0,
|
||||
["One-Handed Maces"] = 0,
|
||||
["Two-Handed Maces"] = 0,
|
||||
["Polearms"] = 0,
|
||||
["One-Handed Swords"] = 1,
|
||||
["Two-Handed Swords"] = 0,
|
||||
["Warglaives"] = 1,
|
||||
["Staves"] = 0,
|
||||
["Fist Weapons"] = 1,
|
||||
["Daggers"] = 0,
|
||||
["Crossbows"] = 0,
|
||||
["Wands"] = 0,
|
||||
},
|
||||
}
|
||||
@@ -1,69 +1,69 @@
|
||||
-- LOOT_READY LOOT_OPENED
|
||||
|
||||
function(e, ...)
|
||||
local slot = 1
|
||||
local lootinfo = GetLootInfo()
|
||||
for k, v in pairs(lootinfo) do
|
||||
if v.locked == false then
|
||||
local link = GetLootSlotLink(slot)
|
||||
if not link then link = GetLootSlotLink(slot) end
|
||||
if aura_env.filter[1] == true and (v.item:match("%d+ Gold") or v.item:match("%d+ Silver") or v.item:match("%d+ Copper")) then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[2] == true and link:match("Azerite") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[3] == true and v.item:match("War Resources") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[4] == true and v.item:match("Residuum") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[5] == true and v.item:match("Manapearl") then
|
||||
LootSlot(slot)
|
||||
end
|
||||
if link then
|
||||
local type = select(6, GetItemInfo(link)) or ""
|
||||
local subtype = select(7, GetItemInfo(link)) or ""
|
||||
local ilvl = select(4, GetItemInfo(link)) or 0
|
||||
local equip = select(9, GetItemInfo(link))
|
||||
if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[14] == true and v.isQuestItem == true then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[15] == true and v.quality == 0 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[21] == true and type == "Tradeskill" and subtype == "Elemental" then
|
||||
LootSlot(slot)
|
||||
else
|
||||
if type == "Weapon" or type == "Armor" then
|
||||
if aura_env.filter[18] == true and aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 and v.quality > 2 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[19] == true and (equip == "INVTYPE_FINGER" or equip == "INVTYPE_TRINKET" or equip == "INVTYPE_CLOAK" or equip == "INVTYPE_NECK") and v.quality > 2 then
|
||||
LootSlot(slot)
|
||||
end
|
||||
elseif aura_env.filter[20] == true and type == "Miscellaneous" then
|
||||
if subtype == "Mount" then
|
||||
LootSlot(slot)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
slot = slot + 1
|
||||
end
|
||||
end
|
||||
-- LOOT_READY LOOT_OPENED
|
||||
|
||||
function(e, ...)
|
||||
local slot = 1
|
||||
local lootinfo = GetLootInfo()
|
||||
for k, v in pairs(lootinfo) do
|
||||
if v.locked == false then
|
||||
local link = GetLootSlotLink(slot)
|
||||
if not link then link = GetLootSlotLink(slot) end
|
||||
if aura_env.filter[1] == true and (v.item:match("%d+ Gold") or v.item:match("%d+ Silver") or v.item:match("%d+ Copper")) then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[2] == true and link:match("Azerite") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[3] == true and v.item:match("War Resources") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[4] == true and v.item:match("Residuum") then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[5] == true and v.item:match("Manapearl") then
|
||||
LootSlot(slot)
|
||||
end
|
||||
if link then
|
||||
local type = select(6, GetItemInfo(link)) or ""
|
||||
local subtype = select(7, GetItemInfo(link)) or ""
|
||||
local ilvl = select(4, GetItemInfo(link)) or 0
|
||||
local equip = select(9, GetItemInfo(link))
|
||||
if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[14] == true and v.isQuestItem == true then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[15] == true and v.quality == 0 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[21] == true and type == "Tradeskill" and subtype == "Elemental" then
|
||||
LootSlot(slot)
|
||||
else
|
||||
if type == "Weapon" or type == "Armor" then
|
||||
if aura_env.filter[18] == true and aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 and v.quality > 2 then
|
||||
LootSlot(slot)
|
||||
elseif aura_env.filter[19] == true and (equip == "INVTYPE_FINGER" or equip == "INVTYPE_TRINKET" or equip == "INVTYPE_CLOAK" or equip == "INVTYPE_NECK") and v.quality > 2 then
|
||||
LootSlot(slot)
|
||||
end
|
||||
elseif aura_env.filter[20] == true and type == "Miscellaneous" then
|
||||
if subtype == "Mount" then
|
||||
LootSlot(slot)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
slot = slot + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,40 +1,40 @@
|
||||
--DISPLAY
|
||||
function()
|
||||
return aura_env.output
|
||||
end
|
||||
|
||||
--Try SPELL_RESSURECT -- RESSURECT event??
|
||||
--UNIT_HEALTH
|
||||
function()
|
||||
local healthP = 0
|
||||
local aliveMembers = GetNumGroupMembers()
|
||||
if IsInRaid("player") == true then
|
||||
for i = 1, GetNumGroupMembers() do
|
||||
if UnitIsDeadOrGhost("raid" .. i) == false and UnitIsConnected("raid" .. i) == true then
|
||||
healthP = healthP + math.floor(UnitHealth("raid" .. i) / UnitHealthMax("raid" .. i) * 10000) / 100
|
||||
end
|
||||
if UnitIsDeadOrGhost("raid" .. i) == true or UnitIsConnected("raid" .. i) == false then
|
||||
aliveMembers = aliveMembers - 1
|
||||
end
|
||||
end
|
||||
else
|
||||
for i = 1, GetNumGroupMembers() - 1 do
|
||||
if UnitIsDeadOrGhost("party" .. i) == false and UnitIsConnected("party" .. i) == true then
|
||||
healthP = healthP + math.floor(UnitHealth("party" .. i) / UnitHealthMax("party" .. i) * 10000) / 100
|
||||
end
|
||||
if UnitIsDeadOrGhost("party" .. i) == true or UnitIsConnected("party" .. i) == false then
|
||||
aliveMembers = aliveMembers - 1
|
||||
end
|
||||
end
|
||||
if UnitIsDeadOrGhost("player") == false and UnitIsConnected("player") == true then
|
||||
healthP = healthP + math.floor(UnitHealth("player") / UnitHealthMax("player") * 10000) / 100
|
||||
end
|
||||
if UnitIsDeadOrGhost("player") == true or UnitIsConnected("player") == false then
|
||||
aliveMembers = aliveMembers - 1
|
||||
end
|
||||
end
|
||||
aura_env.output = math.floor(healthP / aliveMembers * 100) / 100 .. "%%"
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.output = 0
|
||||
--DISPLAY
|
||||
function()
|
||||
return aura_env.output
|
||||
end
|
||||
|
||||
--Try SPELL_RESSURECT -- RESSURECT event??
|
||||
--UNIT_HEALTH
|
||||
function()
|
||||
local healthP = 0
|
||||
local aliveMembers = GetNumGroupMembers()
|
||||
if IsInRaid("player") == true then
|
||||
for i = 1, GetNumGroupMembers() do
|
||||
if UnitIsDeadOrGhost("raid" .. i) == false and UnitIsConnected("raid" .. i) == true then
|
||||
healthP = healthP + math.floor(UnitHealth("raid" .. i) / UnitHealthMax("raid" .. i) * 10000) / 100
|
||||
end
|
||||
if UnitIsDeadOrGhost("raid" .. i) == true or UnitIsConnected("raid" .. i) == false then
|
||||
aliveMembers = aliveMembers - 1
|
||||
end
|
||||
end
|
||||
else
|
||||
for i = 1, GetNumGroupMembers() - 1 do
|
||||
if UnitIsDeadOrGhost("party" .. i) == false and UnitIsConnected("party" .. i) == true then
|
||||
healthP = healthP + math.floor(UnitHealth("party" .. i) / UnitHealthMax("party" .. i) * 10000) / 100
|
||||
end
|
||||
if UnitIsDeadOrGhost("party" .. i) == true or UnitIsConnected("party" .. i) == false then
|
||||
aliveMembers = aliveMembers - 1
|
||||
end
|
||||
end
|
||||
if UnitIsDeadOrGhost("player") == false and UnitIsConnected("player") == true then
|
||||
healthP = healthP + math.floor(UnitHealth("player") / UnitHealthMax("player") * 10000) / 100
|
||||
end
|
||||
if UnitIsDeadOrGhost("player") == true or UnitIsConnected("player") == false then
|
||||
aliveMembers = aliveMembers - 1
|
||||
end
|
||||
end
|
||||
aura_env.output = math.floor(healthP / aliveMembers * 100) / 100 .. "%%"
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.output = 0
|
||||
@@ -1,4 +1,4 @@
|
||||
-- BAG_UPDATE
|
||||
function(e)
|
||||
aura_env.update()
|
||||
-- BAG_UPDATE
|
||||
function(e)
|
||||
aura_env.update()
|
||||
end
|
||||
@@ -1,23 +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
|
||||
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
|
||||
@@ -1,18 +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
|
||||
|
||||
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
|
||||
@@ -1,3 +1,3 @@
|
||||
function()
|
||||
return BattlepassInfo.currentDayOnlineTimeMinutes, 120, 1
|
||||
function()
|
||||
return BattlepassInfo.currentDayOnlineTimeMinutes, 120, 1
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
--- TICKER_10000
|
||||
function()
|
||||
BattlepassInfo()
|
||||
--- TICKER_10000
|
||||
function()
|
||||
BattlepassInfo()
|
||||
end
|
||||
@@ -1,109 +1,109 @@
|
||||
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
|
||||
if not WeakAurasSaved.Cyka.LoginInfo then WeakAurasSaved.Cyka.LoginInfo = {} end
|
||||
|
||||
Today = date("%Y-%m-%d")
|
||||
if not WeakAurasSaved.Cyka.LoginInfo[Today] then WeakAurasSaved.Cyka.LoginInfo[Today] = {} end
|
||||
if not WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")] then
|
||||
WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")] = {
|
||||
onlineTimeInMinutes = 0,
|
||||
claimed = 0,
|
||||
}
|
||||
end
|
||||
|
||||
local greenColor = "|cff00ff00"
|
||||
local noColor = "|r"
|
||||
BattlepassAccountInfo = ""
|
||||
local function UpdateAccountInfo()
|
||||
local ret = {}
|
||||
for char, info in pairs(WeakAurasSaved.Cyka.LoginInfo[Today]) do
|
||||
if info.claimed == 1 then
|
||||
char = string.format("%s%s %d%s", greenColor, char, info.onlineTimeInMinutes, noColor)
|
||||
else
|
||||
char = string.format("%s %d", char, info.onlineTimeInMinutes)
|
||||
end
|
||||
ret[#ret + 1] = char
|
||||
end
|
||||
BattlepassAccountInfo = table.concat(ret, "\n")
|
||||
end
|
||||
|
||||
-- [02:37 PM] Bluepotato
|
||||
-- [02:37 PM] onlineTimeInMinutes=120,
|
||||
-- [02:37 PM] claimed=1
|
||||
-- [02:37 PM] Smolpotato
|
||||
-- [02:37 PM] onlineTimeInMinutes=120,
|
||||
-- [02:37 PM] claimed=1
|
||||
-- [02:37 PM] Thiccpotato
|
||||
-- [02:37 PM] onlineTimeInMinutes=57,
|
||||
-- [02:37 PM] claimed=0
|
||||
|
||||
---@param input string
|
||||
---@param deliminer string
|
||||
---@return table<string>
|
||||
aura_env.Split = function(input, deliminer)
|
||||
local ret = {}
|
||||
for str in string.gmatch(input, "([^" .. deliminer .. "]+)") do
|
||||
table.insert(ret, str)
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
---@class BattlepassInfo
|
||||
---@field week number
|
||||
---@field getRew number
|
||||
---@field dayRewardComplete number
|
||||
---@field lostDay number
|
||||
---@field cost number
|
||||
---@field currentDayOnlineTimeMinutes number
|
||||
---@field currentDayOnlineTimeMilliseconds number
|
||||
BattlepassInfo = {
|
||||
PingApi = function()
|
||||
SendAddonMessage("UIMSG_TO_SERVER", "UIMSG_GET_ONLINETIME_DAY" .. "\t", "WHISPER", UnitName("player"))
|
||||
end,
|
||||
ParseApi = function(msg)
|
||||
local packets = aura_env.Split(msg, ":")
|
||||
if packets[1] ~= "UISMSG_EVT_WEEK_TIME" then return end
|
||||
|
||||
BattlepassInfo.currentDayOnlineTimeMilliseconds = tonumber(packets[2])
|
||||
BattlepassInfo.week = tonumber(packets[3]) + 1
|
||||
BattlepassInfo.getRew = tonumber(packets[4])
|
||||
BattlepassInfo.dayRewardComplete = tonumber(packets[5])
|
||||
BattlepassInfo.lostDay = tonumber(packets[6])
|
||||
BattlepassInfo.cost = tonumber(packets[7])
|
||||
BattlepassInfo.currentDayOnlineTimeMinutes = math.floor(BattlepassInfo.currentDayOnlineTimeMilliseconds / 60000)
|
||||
|
||||
WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].onlineTimeInMinutes =
|
||||
BattlepassInfo.currentDayOnlineTimeMinutes
|
||||
WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].claimed = BattlepassInfo.dayRewardComplete
|
||||
|
||||
if BattlepassInfo.dayRewardComplete == 0 and BattlepassInfo.currentDayOnlineTimeMinutes >= 120 then
|
||||
BattlepassInfo.DoClaim()
|
||||
C_Timer.After(0.2, function() BattlepassInfo.PingApi() end)
|
||||
end
|
||||
|
||||
UpdateAccountInfo()
|
||||
end,
|
||||
DoClaim = function()
|
||||
SendAddonMessage("UIMSG_TO_SERVER", "UIMSG_WEEKLY_REW_GET" .. "\t", "WHISPER", UnitName("player"))
|
||||
WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg")
|
||||
SendChatMessage("YEEE", "WHISPER", nil, UnitName("player"))
|
||||
end,
|
||||
}
|
||||
setmetatable(BattlepassInfo, {
|
||||
__call = BattlepassInfo.PingApi,
|
||||
__index = BattlepassInfo,
|
||||
__tostring = function()
|
||||
local ret = {}
|
||||
for k, v in pairs(BattlepassInfo) do
|
||||
table.insert(ret, k .. ": " .. tostring(v))
|
||||
end
|
||||
return table.concat(ret, "\n")
|
||||
end,
|
||||
})
|
||||
|
||||
for k, v in pairs(BattlepassInfo) do
|
||||
if type(v) == "number" then BattlepassInfo[k] = 0 end
|
||||
end
|
||||
BattlepassInfo()
|
||||
|
||||
-- Claiming rewards works fine
|
||||
-- But the bar does not hide once rewards are claimed
|
||||
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
|
||||
if not WeakAurasSaved.Cyka.LoginInfo then WeakAurasSaved.Cyka.LoginInfo = {} end
|
||||
|
||||
Today = date("%Y-%m-%d")
|
||||
if not WeakAurasSaved.Cyka.LoginInfo[Today] then WeakAurasSaved.Cyka.LoginInfo[Today] = {} end
|
||||
if not WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")] then
|
||||
WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")] = {
|
||||
onlineTimeInMinutes = 0,
|
||||
claimed = 0,
|
||||
}
|
||||
end
|
||||
|
||||
local greenColor = "|cff00ff00"
|
||||
local noColor = "|r"
|
||||
BattlepassAccountInfo = ""
|
||||
local function UpdateAccountInfo()
|
||||
local ret = {}
|
||||
for char, info in pairs(WeakAurasSaved.Cyka.LoginInfo[Today]) do
|
||||
if info.claimed == 1 then
|
||||
char = string.format("%s%s %d%s", greenColor, char, info.onlineTimeInMinutes, noColor)
|
||||
else
|
||||
char = string.format("%s %d", char, info.onlineTimeInMinutes)
|
||||
end
|
||||
ret[#ret + 1] = char
|
||||
end
|
||||
BattlepassAccountInfo = table.concat(ret, "\n")
|
||||
end
|
||||
|
||||
-- [02:37 PM] Bluepotato
|
||||
-- [02:37 PM] onlineTimeInMinutes=120,
|
||||
-- [02:37 PM] claimed=1
|
||||
-- [02:37 PM] Smolpotato
|
||||
-- [02:37 PM] onlineTimeInMinutes=120,
|
||||
-- [02:37 PM] claimed=1
|
||||
-- [02:37 PM] Thiccpotato
|
||||
-- [02:37 PM] onlineTimeInMinutes=57,
|
||||
-- [02:37 PM] claimed=0
|
||||
|
||||
---@param input string
|
||||
---@param deliminer string
|
||||
---@return table<string>
|
||||
aura_env.Split = function(input, deliminer)
|
||||
local ret = {}
|
||||
for str in string.gmatch(input, "([^" .. deliminer .. "]+)") do
|
||||
table.insert(ret, str)
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
---@class BattlepassInfo
|
||||
---@field week number
|
||||
---@field getRew number
|
||||
---@field dayRewardComplete number
|
||||
---@field lostDay number
|
||||
---@field cost number
|
||||
---@field currentDayOnlineTimeMinutes number
|
||||
---@field currentDayOnlineTimeMilliseconds number
|
||||
BattlepassInfo = {
|
||||
PingApi = function()
|
||||
SendAddonMessage("UIMSG_TO_SERVER", "UIMSG_GET_ONLINETIME_DAY" .. "\t", "WHISPER", UnitName("player"))
|
||||
end,
|
||||
ParseApi = function(msg)
|
||||
local packets = aura_env.Split(msg, ":")
|
||||
if packets[1] ~= "UISMSG_EVT_WEEK_TIME" then return end
|
||||
|
||||
BattlepassInfo.currentDayOnlineTimeMilliseconds = tonumber(packets[2])
|
||||
BattlepassInfo.week = tonumber(packets[3]) + 1
|
||||
BattlepassInfo.getRew = tonumber(packets[4])
|
||||
BattlepassInfo.dayRewardComplete = tonumber(packets[5])
|
||||
BattlepassInfo.lostDay = tonumber(packets[6])
|
||||
BattlepassInfo.cost = tonumber(packets[7])
|
||||
BattlepassInfo.currentDayOnlineTimeMinutes = math.floor(BattlepassInfo.currentDayOnlineTimeMilliseconds / 60000)
|
||||
|
||||
WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].onlineTimeInMinutes =
|
||||
BattlepassInfo.currentDayOnlineTimeMinutes
|
||||
WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].claimed = BattlepassInfo.dayRewardComplete
|
||||
|
||||
if BattlepassInfo.dayRewardComplete == 0 and BattlepassInfo.currentDayOnlineTimeMinutes >= 120 then
|
||||
BattlepassInfo.DoClaim()
|
||||
C_Timer.After(0.2, function() BattlepassInfo.PingApi() end)
|
||||
end
|
||||
|
||||
UpdateAccountInfo()
|
||||
end,
|
||||
DoClaim = function()
|
||||
SendAddonMessage("UIMSG_TO_SERVER", "UIMSG_WEEKLY_REW_GET" .. "\t", "WHISPER", UnitName("player"))
|
||||
WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg")
|
||||
SendChatMessage("YEEE", "WHISPER", nil, UnitName("player"))
|
||||
end,
|
||||
}
|
||||
setmetatable(BattlepassInfo, {
|
||||
__call = BattlepassInfo.PingApi,
|
||||
__index = BattlepassInfo,
|
||||
__tostring = function()
|
||||
local ret = {}
|
||||
for k, v in pairs(BattlepassInfo) do
|
||||
table.insert(ret, k .. ": " .. tostring(v))
|
||||
end
|
||||
return table.concat(ret, "\n")
|
||||
end,
|
||||
})
|
||||
|
||||
for k, v in pairs(BattlepassInfo) do
|
||||
if type(v) == "number" then BattlepassInfo[k] = 0 end
|
||||
end
|
||||
BattlepassInfo()
|
||||
|
||||
-- Claiming rewards works fine
|
||||
-- But the bar does not hide once rewards are claimed
|
||||
@@ -1,29 +1,29 @@
|
||||
-- DISPLAY
|
||||
function aa()
|
||||
if UnitDebuff("focus", "Paralytic Poison") then -- application for stun
|
||||
local stacks = select(4, UnitDebuff("focus", "Paralytic Poison"))
|
||||
return stacks
|
||||
end
|
||||
if UnitDebuff("focus", "Partial Paralysis") then return "ROOT'D" end
|
||||
if UnitDebuff("focus", "Paralysis") then return "PLS HELP" end
|
||||
end
|
||||
-- TRIGGER
|
||||
function bb()
|
||||
if
|
||||
UnitDebuff("focus", "Paralytic Poison")
|
||||
or UnitDebuff("focus", "Partial Paralysis")
|
||||
or UnitDebuff("focus", "Paralysis")
|
||||
then -- application for stun
|
||||
return true
|
||||
end
|
||||
end
|
||||
-- UNTRIGGER
|
||||
function cc()
|
||||
if
|
||||
UnitDebuff("focus", "Paralytic Poison") == nil
|
||||
and UnitDebuff("focus", "Partial Paralysis") == nil
|
||||
and UnitDebuff("focus", "Paralysis") == nil
|
||||
then -- application for stun
|
||||
return true
|
||||
end
|
||||
end
|
||||
-- DISPLAY
|
||||
function aa()
|
||||
if UnitDebuff("focus", "Paralytic Poison") then -- application for stun
|
||||
local stacks = select(4, UnitDebuff("focus", "Paralytic Poison"))
|
||||
return stacks
|
||||
end
|
||||
if UnitDebuff("focus", "Partial Paralysis") then return "ROOT'D" end
|
||||
if UnitDebuff("focus", "Paralysis") then return "PLS HELP" end
|
||||
end
|
||||
-- TRIGGER
|
||||
function bb()
|
||||
if
|
||||
UnitDebuff("focus", "Paralytic Poison")
|
||||
or UnitDebuff("focus", "Partial Paralysis")
|
||||
or UnitDebuff("focus", "Paralysis")
|
||||
then -- application for stun
|
||||
return true
|
||||
end
|
||||
end
|
||||
-- UNTRIGGER
|
||||
function cc()
|
||||
if
|
||||
UnitDebuff("focus", "Paralytic Poison") == nil
|
||||
and UnitDebuff("focus", "Partial Paralysis") == nil
|
||||
and UnitDebuff("focus", "Paralysis") == nil
|
||||
then -- application for stun
|
||||
return true
|
||||
end
|
||||
end
|
||||
@@ -1,40 +1,40 @@
|
||||
COMBAT_LOG_EVENT_UNFILTERED
|
||||
function(...)
|
||||
local subevent = select(3, ...)
|
||||
local target = select(10, ...)
|
||||
if subevent == "SWING_DAMAGE" and target == UnitName("player") then
|
||||
local dmg = select(13, ...)
|
||||
local block = select(17, ...) or 0
|
||||
if block > 0 then
|
||||
aura_env.overallBlock = aura_env.overallBlock + block
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
DISPLAY
|
||||
function()
|
||||
local function shorten(val)
|
||||
local function round(var, n)
|
||||
if (n) then
|
||||
var = math.floor((var * 10^n) + 0.5) / (10^n)
|
||||
else
|
||||
var = math.floor(var+0.5)
|
||||
end
|
||||
return var
|
||||
end
|
||||
local n = 2
|
||||
if val < 1e3 then
|
||||
return round(val, n)
|
||||
elseif val > 1e3 and val < 1e6 then
|
||||
return round(val / 1e3, n) .. "k"
|
||||
elseif val > 1e6 and val < 1e9 then
|
||||
return round(val / 1e6, n) .. "M"
|
||||
elseif val > 1e9 then
|
||||
return round(val / 1e9, n) .. "G"
|
||||
end
|
||||
end
|
||||
return shorten(aura_env.overallBlock)
|
||||
end
|
||||
|
||||
INIT
|
||||
COMBAT_LOG_EVENT_UNFILTERED
|
||||
function(...)
|
||||
local subevent = select(3, ...)
|
||||
local target = select(10, ...)
|
||||
if subevent == "SWING_DAMAGE" and target == UnitName("player") then
|
||||
local dmg = select(13, ...)
|
||||
local block = select(17, ...) or 0
|
||||
if block > 0 then
|
||||
aura_env.overallBlock = aura_env.overallBlock + block
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
DISPLAY
|
||||
function()
|
||||
local function shorten(val)
|
||||
local function round(var, n)
|
||||
if (n) then
|
||||
var = math.floor((var * 10^n) + 0.5) / (10^n)
|
||||
else
|
||||
var = math.floor(var+0.5)
|
||||
end
|
||||
return var
|
||||
end
|
||||
local n = 2
|
||||
if val < 1e3 then
|
||||
return round(val, n)
|
||||
elseif val > 1e3 and val < 1e6 then
|
||||
return round(val / 1e3, n) .. "k"
|
||||
elseif val > 1e6 and val < 1e9 then
|
||||
return round(val / 1e6, n) .. "M"
|
||||
elseif val > 1e9 then
|
||||
return round(val / 1e9, n) .. "G"
|
||||
end
|
||||
end
|
||||
return shorten(aura_env.overallBlock)
|
||||
end
|
||||
|
||||
INIT
|
||||
aura_env.overallBlock = 0
|
||||
@@ -1,17 +1,17 @@
|
||||
LOOT_OPENED
|
||||
function()
|
||||
aura_env.lootTime = math.floor(GetTime()) + 300
|
||||
end
|
||||
|
||||
DISPLAY
|
||||
function()
|
||||
local currentTime = math.floor(GetTime())
|
||||
if currentTime > aura_env.lootTime and aura_env.lootTime > 0 then
|
||||
return "FISHING BOAT MOTHERFUCKERS"
|
||||
else
|
||||
return aura_env.lootTime - currentTime
|
||||
end
|
||||
end
|
||||
|
||||
INTI
|
||||
aura_env.lootTime = 0
|
||||
LOOT_OPENED
|
||||
function()
|
||||
aura_env.lootTime = math.floor(GetTime()) + 300
|
||||
end
|
||||
|
||||
DISPLAY
|
||||
function()
|
||||
local currentTime = math.floor(GetTime())
|
||||
if currentTime > aura_env.lootTime and aura_env.lootTime > 0 then
|
||||
return "FISHING BOAT MOTHERFUCKERS"
|
||||
else
|
||||
return aura_env.lootTime - currentTime
|
||||
end
|
||||
end
|
||||
|
||||
INTI
|
||||
aura_env.lootTime = 0
|
||||
@@ -1,275 +1,275 @@
|
||||
--TODO: FIX THE FUCKING THING
|
||||
--I had no idea what I was doing lol
|
||||
|
||||
TRIGGER FOR HP
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
--if UnitName("nameplate" .. i) == bossList[j] then
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
TRIGGER FOR POWER
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
--if UnitName("nameplate" .. i) == bossList[j] then
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
if UnitPower("nameplate" .. i) > 0 then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
TRIGGER FOR CASTBAR
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
if UnitCastingInfo("nameplate" .. i) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
DISPLAY FOR HP
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
--if UnitName("nameplate" .. i) == bossList[j] then
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
aura_env.bossHp = UnitHealth("nameplate" .. i)
|
||||
aura_env.bossMaxHp = UnitHealthMax("nameplate" .. i)
|
||||
aura_env.bossPer = math.floor((aura_env.bossHp / aura_env.bossMaxHp) * 100)
|
||||
output = math.floor(aura_env.bossHp / 1e6) .. "M%/" .. math.floor(aura_env.bossMaxHp / 1e6) .. "M - " .. aura_env.bossPer .. "%%"
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
DISPLAY FOR POWER
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
--if UnitName("nameplate" .. i) == bossList[j] then
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
if UnitPower("nameplate" .. i) > 0 then
|
||||
aura_env.bossPower = UnitPower("nameplate" .. i)
|
||||
aura_env.bossPowerMax = UnitPowerMax("nameplate" .. i)
|
||||
aura_env.bossPer = math.floor((aura_env.bossPower / aura_env.bossPowerMax) * 100)
|
||||
output = aura_env.bossPower .. "%/" .. aura_env.bossPowerMax .. " " .. aura_env.bossPer .. "%%"
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
DISPLAY FOR CASTBAR
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
if UnitCastingInfo("nameplate" .. i) then
|
||||
aura_env.bossCast = UnitCastingInfo("nameplate" .. i)
|
||||
aura_env.castEnd = select(6, UnitCastingInfo("nameplate" .. i))
|
||||
aura_env.castStart = select(5, UnitCastingInfo("nameplate" .. i))
|
||||
output = aura_env.bossCast .. " - " .. math.floor(((aura_env.castEnd - GetTime() * 1000) / 1000) * 100) / 100
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
DURATION FOR HP
|
||||
function()
|
||||
return aura_env.bossHp, aura_env.bossMaxHp, 1
|
||||
end
|
||||
|
||||
DURATION FOR POWER
|
||||
function()
|
||||
return aura_env.bossPower, aura_env.bossPowerMax, 1
|
||||
end
|
||||
|
||||
DURATION FOR CASTBAR
|
||||
function()
|
||||
return aura_env.castEnd - GetTime() * 1000, aura_env.castEnd - aura_env.castStart, 1
|
||||
end
|
||||
|
||||
DISPLAY FOR NAME
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
--if UnitName("nameplate" .. i) == bossList[j] then
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
output = UnitName("nameplate" .. i)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
ANIMATION FOR HP
|
||||
function()
|
||||
local function range (val, min, max, max2)
|
||||
val = 1 - (((max - val) / (max - min)) * max2)
|
||||
return val
|
||||
end
|
||||
local c = aura_env.bossHp / aura_env.bossMaxHp
|
||||
c = 1 - c
|
||||
--c expected as [0, 1]
|
||||
if c > 0.5 then
|
||||
c = 1 - (2 * (c - 0.5))
|
||||
return c, 1, 0, 1
|
||||
else
|
||||
c = c * 2
|
||||
return 1, c, 0, 1
|
||||
end
|
||||
end
|
||||
|
||||
INIT FOR HP
|
||||
aura_env.bossHp = 1
|
||||
aura_env.bossMaxHp = 1
|
||||
aura_env.bossPer = 1
|
||||
|
||||
INIT FOR POWER
|
||||
aura_env.bossPower = 1
|
||||
aura_env.bossPowerMax = 1
|
||||
aura_env.bossPer = 1
|
||||
|
||||
INIT FOR CASTBAR
|
||||
aura_env.castEnd = 0
|
||||
aura_env.castStart = 0
|
||||
aura_env.bossCast = ""
|
||||
--TODO: FIX THE FUCKING THING
|
||||
--I had no idea what I was doing lol
|
||||
|
||||
TRIGGER FOR HP
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
--if UnitName("nameplate" .. i) == bossList[j] then
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
TRIGGER FOR POWER
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
--if UnitName("nameplate" .. i) == bossList[j] then
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
if UnitPower("nameplate" .. i) > 0 then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
TRIGGER FOR CASTBAR
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
if UnitCastingInfo("nameplate" .. i) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
DISPLAY FOR HP
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
--if UnitName("nameplate" .. i) == bossList[j] then
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
aura_env.bossHp = UnitHealth("nameplate" .. i)
|
||||
aura_env.bossMaxHp = UnitHealthMax("nameplate" .. i)
|
||||
aura_env.bossPer = math.floor((aura_env.bossHp / aura_env.bossMaxHp) * 100)
|
||||
output = math.floor(aura_env.bossHp / 1e6) .. "M%/" .. math.floor(aura_env.bossMaxHp / 1e6) .. "M - " .. aura_env.bossPer .. "%%"
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
DISPLAY FOR POWER
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
--if UnitName("nameplate" .. i) == bossList[j] then
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
if UnitPower("nameplate" .. i) > 0 then
|
||||
aura_env.bossPower = UnitPower("nameplate" .. i)
|
||||
aura_env.bossPowerMax = UnitPowerMax("nameplate" .. i)
|
||||
aura_env.bossPer = math.floor((aura_env.bossPower / aura_env.bossPowerMax) * 100)
|
||||
output = aura_env.bossPower .. "%/" .. aura_env.bossPowerMax .. " " .. aura_env.bossPer .. "%%"
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
DISPLAY FOR CASTBAR
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
if UnitCastingInfo("nameplate" .. i) then
|
||||
aura_env.bossCast = UnitCastingInfo("nameplate" .. i)
|
||||
aura_env.castEnd = select(6, UnitCastingInfo("nameplate" .. i))
|
||||
aura_env.castStart = select(5, UnitCastingInfo("nameplate" .. i))
|
||||
output = aura_env.bossCast .. " - " .. math.floor(((aura_env.castEnd - GetTime() * 1000) / 1000) * 100) / 100
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
DURATION FOR HP
|
||||
function()
|
||||
return aura_env.bossHp, aura_env.bossMaxHp, 1
|
||||
end
|
||||
|
||||
DURATION FOR POWER
|
||||
function()
|
||||
return aura_env.bossPower, aura_env.bossPowerMax, 1
|
||||
end
|
||||
|
||||
DURATION FOR CASTBAR
|
||||
function()
|
||||
return aura_env.castEnd - GetTime() * 1000, aura_env.castEnd - aura_env.castStart, 1
|
||||
end
|
||||
|
||||
DISPLAY FOR NAME
|
||||
function()
|
||||
local bossList =
|
||||
{
|
||||
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
|
||||
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
|
||||
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
|
||||
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
|
||||
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
|
||||
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
|
||||
"Ymiron", "Harbaron", "Helya", --MoS
|
||||
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
|
||||
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
|
||||
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
|
||||
}
|
||||
local output = ""
|
||||
|
||||
for i = 1, 40 do
|
||||
for j = 1, table.getn(bossList) do
|
||||
--if UnitName("nameplate" .. i) == bossList[j] then
|
||||
if UnitExists("nameplate" .. i) then
|
||||
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
|
||||
output = UnitName("nameplate" .. i)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
ANIMATION FOR HP
|
||||
function()
|
||||
local function range (val, min, max, max2)
|
||||
val = 1 - (((max - val) / (max - min)) * max2)
|
||||
return val
|
||||
end
|
||||
local c = aura_env.bossHp / aura_env.bossMaxHp
|
||||
c = 1 - c
|
||||
--c expected as [0, 1]
|
||||
if c > 0.5 then
|
||||
c = 1 - (2 * (c - 0.5))
|
||||
return c, 1, 0, 1
|
||||
else
|
||||
c = c * 2
|
||||
return 1, c, 0, 1
|
||||
end
|
||||
end
|
||||
|
||||
INIT FOR HP
|
||||
aura_env.bossHp = 1
|
||||
aura_env.bossMaxHp = 1
|
||||
aura_env.bossPer = 1
|
||||
|
||||
INIT FOR POWER
|
||||
aura_env.bossPower = 1
|
||||
aura_env.bossPowerMax = 1
|
||||
aura_env.bossPer = 1
|
||||
|
||||
INIT FOR CASTBAR
|
||||
aura_env.castEnd = 0
|
||||
aura_env.castStart = 0
|
||||
aura_env.bossCast = ""
|
||||
@@ -1,67 +1,67 @@
|
||||
--GET MAX SHIELD ABSORB AND BAR FOR ABSORB
|
||||
TRIGGER
|
||||
function()
|
||||
local buff = UnitBuff("player", "Bulwark of Order") or ""
|
||||
if buff ~= "" then return true else return false end
|
||||
end
|
||||
|
||||
DURATION
|
||||
function()
|
||||
local shieldAmount = select(17, UnitBuff("player", "Bulwark of Order"))
|
||||
if shieldAmount > aura_env.maxShield then
|
||||
aura_env.maxShield = shieldAmount
|
||||
end
|
||||
return shieldAmount, aura_env.maxShield, 1
|
||||
end
|
||||
|
||||
DISPLAY
|
||||
function()
|
||||
local shield = select(17, UnitBuff("player", "Bulwark of Order")) or 0
|
||||
return math.floor(shield / 1000) .. "k"
|
||||
end
|
||||
|
||||
ANIMATION
|
||||
function()
|
||||
local function range(val, min, max, max2)
|
||||
local val = 1 - (((max - val) / (max - min)) * max2)
|
||||
return val
|
||||
end
|
||||
|
||||
local endTime = select(7, UnitBuff("player", "Bulwark of Order")) * 1000
|
||||
local time = GetTime() * 1000
|
||||
local maxDur = select(6, UnitBuff("player", "Bulwark of Order")) * 1000
|
||||
local duration = endTime - time
|
||||
local c = range(duration, 0, maxDur, 1)
|
||||
--c expected as [0, 1]
|
||||
if c > 0.5 then
|
||||
c = 1 - (2 * (c - 0.5))
|
||||
return c, 1, 0, 1
|
||||
else
|
||||
c = c * 2
|
||||
return 1, c, 0, 1
|
||||
end
|
||||
end
|
||||
|
||||
ON SHOW
|
||||
aura_env.maxShield = 0
|
||||
|
||||
TRIGGER
|
||||
function()
|
||||
local buff = UnitBuff("player", "Bulwark of Order") or ""
|
||||
if buff ~= "" then return true else return false end
|
||||
end
|
||||
|
||||
DURATION
|
||||
function()
|
||||
local shieldAmount = select(17, UnitBuff("player", "Bulwark of Order"))
|
||||
local maxShield = UnitHealth("player") / 5
|
||||
return shieldAmount, maxShield, 1
|
||||
end
|
||||
|
||||
DISPLAY
|
||||
function()
|
||||
local shield = select(17, UnitBuff("player", "Bulwark of Order")) or 0
|
||||
local maxShield = UnitHealth("player") / 5
|
||||
local pp = (shield / maxShield) * 20
|
||||
return string.format("%2.1f", pp)
|
||||
end
|
||||
--GET MAX SHIELD ABSORB AND BAR FOR ABSORB
|
||||
TRIGGER
|
||||
function()
|
||||
local buff = UnitBuff("player", "Bulwark of Order") or ""
|
||||
if buff ~= "" then return true else return false end
|
||||
end
|
||||
|
||||
DURATION
|
||||
function()
|
||||
local shieldAmount = select(17, UnitBuff("player", "Bulwark of Order"))
|
||||
if shieldAmount > aura_env.maxShield then
|
||||
aura_env.maxShield = shieldAmount
|
||||
end
|
||||
return shieldAmount, aura_env.maxShield, 1
|
||||
end
|
||||
|
||||
DISPLAY
|
||||
function()
|
||||
local shield = select(17, UnitBuff("player", "Bulwark of Order")) or 0
|
||||
return math.floor(shield / 1000) .. "k"
|
||||
end
|
||||
|
||||
ANIMATION
|
||||
function()
|
||||
local function range(val, min, max, max2)
|
||||
local val = 1 - (((max - val) / (max - min)) * max2)
|
||||
return val
|
||||
end
|
||||
|
||||
local endTime = select(7, UnitBuff("player", "Bulwark of Order")) * 1000
|
||||
local time = GetTime() * 1000
|
||||
local maxDur = select(6, UnitBuff("player", "Bulwark of Order")) * 1000
|
||||
local duration = endTime - time
|
||||
local c = range(duration, 0, maxDur, 1)
|
||||
--c expected as [0, 1]
|
||||
if c > 0.5 then
|
||||
c = 1 - (2 * (c - 0.5))
|
||||
return c, 1, 0, 1
|
||||
else
|
||||
c = c * 2
|
||||
return 1, c, 0, 1
|
||||
end
|
||||
end
|
||||
|
||||
ON SHOW
|
||||
aura_env.maxShield = 0
|
||||
|
||||
TRIGGER
|
||||
function()
|
||||
local buff = UnitBuff("player", "Bulwark of Order") or ""
|
||||
if buff ~= "" then return true else return false end
|
||||
end
|
||||
|
||||
DURATION
|
||||
function()
|
||||
local shieldAmount = select(17, UnitBuff("player", "Bulwark of Order"))
|
||||
local maxShield = UnitHealth("player") / 5
|
||||
return shieldAmount, maxShield, 1
|
||||
end
|
||||
|
||||
DISPLAY
|
||||
function()
|
||||
local shield = select(17, UnitBuff("player", "Bulwark of Order")) or 0
|
||||
local maxShield = UnitHealth("player") / 5
|
||||
local pp = (shield / maxShield) * 20
|
||||
return string.format("%2.1f", pp)
|
||||
end
|
||||
@@ -1,40 +1,40 @@
|
||||
PLAYER_ENTERING_WORLD
|
||||
function()
|
||||
if aura_env.enabled == 1 then
|
||||
local r = WeakAuras.regions['julijabutton0'].region
|
||||
local b = CreateFrame("Button", "JulijaButton", r, "SecureActionButtonTemplate")
|
||||
if aura_env.type:match("spell") then
|
||||
b:SetAllPoints()
|
||||
b:SetAttribute("unit", aura_env.target)
|
||||
b:SetAttribute("spell", aura_env.name)
|
||||
b:SetAttribute("type", "spell")
|
||||
end
|
||||
if aura_env.type:match("macro") then
|
||||
b:SetAllPoints()
|
||||
b:SetAttribute("macro", aura_env.name)
|
||||
b:SetAttribute("type", "macro")
|
||||
end
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
INIT
|
||||
aura_env.enabled = 0
|
||||
aura_env.target = "player" --UnitID; player, focus, target, partyn (where n is the number in order of the party member), raidn (For more elaborate UnitIDs look up UnitID API Wiki thing; NO DYNAMIC INFO); I don't think it works for macros though.... So I've disabled it for macros
|
||||
aura_env.type = "spell" --"spell" or "macro" CASE SENSITIVE
|
||||
aura_env.name = "Hand of the Protector" --Spell or Macro name CASE SENSITIVE
|
||||
|
||||
if aura_env.enabled == 1 then
|
||||
if not aura_env.type:match("spell") and not aura_env.type:match("macro") then
|
||||
print("|cFFFF0000Error 'type' on julijabutton0")
|
||||
aura_env.enabled = 0
|
||||
end
|
||||
if aura_env.name == "" then
|
||||
print("|cFFFF0000Error 'name' on julijabutton0")
|
||||
end
|
||||
if aura_env.target == "" and not aura_env.type:match("macro") then
|
||||
print("|cFFFF0000Error 'target' on julijabutton0")
|
||||
end
|
||||
end
|
||||
PLAYER_ENTERING_WORLD
|
||||
function()
|
||||
if aura_env.enabled == 1 then
|
||||
local r = WeakAuras.regions['julijabutton0'].region
|
||||
local b = CreateFrame("Button", "JulijaButton", r, "SecureActionButtonTemplate")
|
||||
if aura_env.type:match("spell") then
|
||||
b:SetAllPoints()
|
||||
b:SetAttribute("unit", aura_env.target)
|
||||
b:SetAttribute("spell", aura_env.name)
|
||||
b:SetAttribute("type", "spell")
|
||||
end
|
||||
if aura_env.type:match("macro") then
|
||||
b:SetAllPoints()
|
||||
b:SetAttribute("macro", aura_env.name)
|
||||
b:SetAttribute("type", "macro")
|
||||
end
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
INIT
|
||||
aura_env.enabled = 0
|
||||
aura_env.target = "player" --UnitID; player, focus, target, partyn (where n is the number in order of the party member), raidn (For more elaborate UnitIDs look up UnitID API Wiki thing; NO DYNAMIC INFO); I don't think it works for macros though.... So I've disabled it for macros
|
||||
aura_env.type = "spell" --"spell" or "macro" CASE SENSITIVE
|
||||
aura_env.name = "Hand of the Protector" --Spell or Macro name CASE SENSITIVE
|
||||
|
||||
if aura_env.enabled == 1 then
|
||||
if not aura_env.type:match("spell") and not aura_env.type:match("macro") then
|
||||
print("|cFFFF0000Error 'type' on julijabutton0")
|
||||
aura_env.enabled = 0
|
||||
end
|
||||
if aura_env.name == "" then
|
||||
print("|cFFFF0000Error 'name' on julijabutton0")
|
||||
end
|
||||
if aura_env.target == "" and not aura_env.type:match("macro") then
|
||||
print("|cFFFF0000Error 'target' on julijabutton0")
|
||||
end
|
||||
end
|
||||
@@ -1,16 +1,16 @@
|
||||
--COMBAT_LOG_EVENT_UNFILTERED UNIT_AURA
|
||||
function(e, ...)
|
||||
if e == "COMBAT_LOG_EVENT_UNFILTERED" then
|
||||
local se = select(2, CombatLogGetCurrentEventInfo())
|
||||
local sid = select(12, CombatLogGetCurrentEventInfo())
|
||||
local caster = select(5, CombatLogGetCurrentEventInfo())
|
||||
if caster == UnitName("player") and se == "SPELL_CAST_SUCCESS" and sid == 53595 then
|
||||
WeakAurasSaved.CustomTrash.ProcShit.casts = WeakAurasSaved.CustomTrash.ProcShit.casts + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--DISPLAY
|
||||
function()
|
||||
return WeakAurasSaved.CustomTrash.ProcShit.procs .. " / " .. WeakAurasSaved.CustomTrash.ProcShit.casts .. "\n" .. WeakAurasSaved.CustomTrash.ProcShit.procs / WeakAurasSaved.CustomTrash.ProcShit.casts
|
||||
--COMBAT_LOG_EVENT_UNFILTERED UNIT_AURA
|
||||
function(e, ...)
|
||||
if e == "COMBAT_LOG_EVENT_UNFILTERED" then
|
||||
local se = select(2, CombatLogGetCurrentEventInfo())
|
||||
local sid = select(12, CombatLogGetCurrentEventInfo())
|
||||
local caster = select(5, CombatLogGetCurrentEventInfo())
|
||||
if caster == UnitName("player") and se == "SPELL_CAST_SUCCESS" and sid == 53595 then
|
||||
WeakAurasSaved.CustomTrash.ProcShit.casts = WeakAurasSaved.CustomTrash.ProcShit.casts + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--DISPLAY
|
||||
function()
|
||||
return WeakAurasSaved.CustomTrash.ProcShit.procs .. " / " .. WeakAurasSaved.CustomTrash.ProcShit.casts .. "\n" .. WeakAurasSaved.CustomTrash.ProcShit.procs / WeakAurasSaved.CustomTrash.ProcShit.casts
|
||||
end
|
||||
@@ -1,34 +1,34 @@
|
||||
--Custom text
|
||||
function()
|
||||
output = ""
|
||||
for k, v in pairs(aura_env.elites) do
|
||||
output = output .. aura_env.eliteColor .. k .. " " .. v .. "\124r\n"
|
||||
end
|
||||
for k, v in pairs(aura_env.rares) do
|
||||
output = output .. aura_env.rareColor .. k .. " " .. v .. "\124r\n"
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
--NAME_PLATE_UNIT_ADDED
|
||||
function(e, u)
|
||||
class = UnitClassification(u)
|
||||
-- use date() for time
|
||||
if class == "elite" then
|
||||
aura_env.elites[UnitName(u)] = aura_env.GetTime()
|
||||
return true
|
||||
elseif class == "rare" or class == "rareelite" then
|
||||
aura_env.rares[UnitName(u)] = aura_env.GetTime()
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.elites = {}
|
||||
aura_env.rares = {}
|
||||
aura_env.eliteColor = "\124c" .. "ff3e3e3e"
|
||||
aura_env.rareColor = "\124c" .. "ffffe72e"
|
||||
|
||||
aura_env.GetTime = function()
|
||||
return string.match(date(), "%d%d:%d%d:%d%d")
|
||||
--Custom text
|
||||
function()
|
||||
output = ""
|
||||
for k, v in pairs(aura_env.elites) do
|
||||
output = output .. aura_env.eliteColor .. k .. " " .. v .. "\124r\n"
|
||||
end
|
||||
for k, v in pairs(aura_env.rares) do
|
||||
output = output .. aura_env.rareColor .. k .. " " .. v .. "\124r\n"
|
||||
end
|
||||
return output
|
||||
end
|
||||
|
||||
--NAME_PLATE_UNIT_ADDED
|
||||
function(e, u)
|
||||
class = UnitClassification(u)
|
||||
-- use date() for time
|
||||
if class == "elite" then
|
||||
aura_env.elites[UnitName(u)] = aura_env.GetTime()
|
||||
return true
|
||||
elseif class == "rare" or class == "rareelite" then
|
||||
aura_env.rares[UnitName(u)] = aura_env.GetTime()
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.elites = {}
|
||||
aura_env.rares = {}
|
||||
aura_env.eliteColor = "\124c" .. "ff3e3e3e"
|
||||
aura_env.rareColor = "\124c" .. "ffffe72e"
|
||||
|
||||
aura_env.GetTime = function()
|
||||
return string.match(date(), "%d%d:%d%d:%d%d")
|
||||
endee
|
||||
@@ -1,10 +1,10 @@
|
||||
if not aura_env.region.text then
|
||||
local text = aura_env.region:CreateFontString(nil, aura_env.region)
|
||||
aura_env.region.text = text
|
||||
print("ok!")
|
||||
end
|
||||
aura_env.region.text:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE, MONOCHROME")
|
||||
aura_env.region.text:SetTextColor(0, 1, 0, 0.8)
|
||||
aura_env.region.text:SetPoint("CENTER", aura_env.region, "CENTER", 1, 0)
|
||||
aura_env.region.text:SetText("SW")
|
||||
aura_env.region.text:Show()
|
||||
if not aura_env.region.text then
|
||||
local text = aura_env.region:CreateFontString(nil, aura_env.region)
|
||||
aura_env.region.text = text
|
||||
print("ok!")
|
||||
end
|
||||
aura_env.region.text:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE, MONOCHROME")
|
||||
aura_env.region.text:SetTextColor(0, 1, 0, 0.8)
|
||||
aura_env.region.text:SetPoint("CENTER", aura_env.region, "CENTER", 1, 0)
|
||||
aura_env.region.text:SetText("SW")
|
||||
aura_env.region.text:Show()
|
||||
@@ -1,27 +1,27 @@
|
||||
--NAME_PLATE_UNIT_ADDED NAME_PLATE_UNIT_REMOVED
|
||||
function(e, unit)
|
||||
if e == "NAME_PLATE_UNIT_ADDED" then
|
||||
if aura_env.altlist[UnitName(unit)] then
|
||||
local plate = C_NamePlate.GetNamePlateForUnit(unit)
|
||||
if plate then
|
||||
aura_env.region:SetAnchor("CENTER", plate, "CENTER")
|
||||
aura_env.region:SetOffset(0, 50)
|
||||
aura_env.region:Color(1, 1, 1, 1)
|
||||
return true
|
||||
end
|
||||
end
|
||||
elseif e == "NAME_PLATE_UNIT_REMOVED" then
|
||||
if aura_env.altlist[UnitName(unit)] then
|
||||
aura_env.region:ClearAllPoints()
|
||||
aura_env.region:Color(1, 1, 1, 0)
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.altlist =
|
||||
{
|
||||
["Elna"] = 1,
|
||||
["Melna"] = 1,
|
||||
--NAME_PLATE_UNIT_ADDED NAME_PLATE_UNIT_REMOVED
|
||||
function(e, unit)
|
||||
if e == "NAME_PLATE_UNIT_ADDED" then
|
||||
if aura_env.altlist[UnitName(unit)] then
|
||||
local plate = C_NamePlate.GetNamePlateForUnit(unit)
|
||||
if plate then
|
||||
aura_env.region:SetAnchor("CENTER", plate, "CENTER")
|
||||
aura_env.region:SetOffset(0, 50)
|
||||
aura_env.region:Color(1, 1, 1, 1)
|
||||
return true
|
||||
end
|
||||
end
|
||||
elseif e == "NAME_PLATE_UNIT_REMOVED" then
|
||||
if aura_env.altlist[UnitName(unit)] then
|
||||
aura_env.region:ClearAllPoints()
|
||||
aura_env.region:Color(1, 1, 1, 0)
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--INIT
|
||||
aura_env.altlist =
|
||||
{
|
||||
["Elna"] = 1,
|
||||
["Melna"] = 1,
|
||||
}
|
||||
@@ -1,22 +1,22 @@
|
||||
--TRADE_SHOW
|
||||
function()
|
||||
if UnitName("target") == "Melna" then
|
||||
local items = 0
|
||||
for i = 0, 4 do
|
||||
for j = 1, GetContainerNumSlots(i) do
|
||||
local link = select(7, GetContainerItemInfo(i, j))
|
||||
if link then
|
||||
local type = select(7, GetItemInfo(link))
|
||||
if (type == "Cooking" or type == "Cloth") and items < 6 then
|
||||
UseContainerItem(i, j)
|
||||
items = items + 1
|
||||
elseif items >= 6 then
|
||||
AcceptTrade()
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
AcceptTrade()
|
||||
end
|
||||
--TRADE_SHOW
|
||||
function()
|
||||
if UnitName("target") == "Melna" then
|
||||
local items = 0
|
||||
for i = 0, 4 do
|
||||
for j = 1, GetContainerNumSlots(i) do
|
||||
local link = select(7, GetContainerItemInfo(i, j))
|
||||
if link then
|
||||
local type = select(7, GetItemInfo(link))
|
||||
if (type == "Cooking" or type == "Cloth") and items < 6 then
|
||||
UseContainerItem(i, j)
|
||||
items = items + 1
|
||||
elseif items >= 6 then
|
||||
AcceptTrade()
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
AcceptTrade()
|
||||
end
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user