Tumble files around a bit

This commit is contained in:
2025-05-16 10:20:19 +02:00
parent 0e3166a410
commit 003f90126d
1595 changed files with 75381 additions and 70006 deletions

View File

@@ -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

View File

@@ -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 )

View File

@@ -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

View File

@@ -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
View File

@@ -1 +0,0 @@
.vscode

View File

@@ -1 +0,0 @@
/dump getmetatable(LFGListApplicationViewerScrollFrameButton3.Member1.Name)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,239 +1,239 @@
--UPDATE_BIND_TABLE UPDATE_BINDS UPDATE_BAR_TABLE UPDATE_BARS DELETE_SET LIST_SETS --UPDATE_BIND_TABLE UPDATE_BINDS UPDATE_BAR_TABLE UPDATE_BARS DELETE_SET LIST_SETS
--[[ --[[
UPDATE_BIND_TABLE saves current binds UPDATE_BIND_TABLE saves current binds
UPDATE_BINDS restores saved binds UPDATE_BINDS restores saved binds
UPDATE_BAR_TABLE saves current bar layout also supports sets UPDATE_BAR_TABLE saves current bar layout also supports sets
UPDATE_BARS restores bar layout; defaults to the "default" set UPDATE_BARS restores bar layout; defaults to the "default" set
DELETE_SET deletes a specified set DELETE_SET deletes a specified set
LIST_SETS lists all sets LIST_SETS lists all sets
DELETE and LIST only work for bar layouts DELETE and LIST only work for bar layouts
/run WeakAuras.ScanEvents("UPDATE_BINDS") /run WeakAuras.ScanEvents("UPDATE_BINDS")
/run WeakAuras.ScanEvents("UPDATE_BIND_TABLE") /run WeakAuras.ScanEvents("UPDATE_BIND_TABLE")
]] ]]
function(e, ...) function(e, ...)
if InCombatLockdown() ~= 1 then if InCombatLockdown() ~= 1 then
if e == "UPDATE_BIND_TABLE" then if e == "UPDATE_BIND_TABLE" then
if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end
if not WeakAurasSaved.CustomTrash.BindTableTwo then WeakAurasSaved.CustomTrash.BindTableTwo = {} end if not WeakAurasSaved.CustomTrash.BindTableTwo then WeakAurasSaved.CustomTrash.BindTableTwo = {} end
for i = 1, GetNumBindings() do for i = 1, GetNumBindings() do
local comm, bind, bind2 = GetBinding(i) local comm, bind, bind2 = GetBinding(i)
if comm and bind2 and not WeakAurasSaved.CustomTrash.BindTableTwo[comm] then if comm and bind2 and not WeakAurasSaved.CustomTrash.BindTableTwo[comm] then
print("Adding", comm, "with bind", bind2, "to bind table") print("Adding", comm, "with bind", bind2, "to bind table")
WeakAurasSaved.CustomTrash.BindTableTwo[comm] = {} WeakAurasSaved.CustomTrash.BindTableTwo[comm] = {}
WeakAurasSaved.CustomTrash.BindTableTwo[comm].bind = bind2 WeakAurasSaved.CustomTrash.BindTableTwo[comm].bind = bind2
WeakAurasSaved.CustomTrash.BindTableTwo[comm].index = i WeakAurasSaved.CustomTrash.BindTableTwo[comm].index = i
end end
if comm and not bind2 and WeakAurasSaved.CustomTrash.BindTableTwo[comm] then if comm and not bind2 and WeakAurasSaved.CustomTrash.BindTableTwo[comm] then
print("Removing", comm, "with no bind from the bind table") print("Removing", comm, "with no bind from the bind table")
WeakAurasSaved.CustomTrash.BindTableTwo[comm] = nil WeakAurasSaved.CustomTrash.BindTableTwo[comm] = nil
end end
end end
elseif e == "UPDATE_BINDS" then elseif e == "UPDATE_BINDS" then
for k, v in pairs(WeakAurasSaved.CustomTrash.BindTableTwo) do for k, v in pairs(WeakAurasSaved.CustomTrash.BindTableTwo) do
local command, bind, bind2 = GetBinding(v.index) local command, bind, bind2 = GetBinding(v.index)
if bind2 ~= v.bind then if bind2 ~= v.bind then
--The key should be aura_env.keyBinds[command] but the key is bind2 --The key should be aura_env.keyBinds[command] but the key is bind2
print("Key", command, "has bind", bind2, "but should have", v.bind) print("Key", command, "has bind", bind2, "but should have", v.bind)
if bind2 then SetBinding(bind2) end if bind2 then SetBinding(bind2) end
if v.bind then SetBinding(v.bind, command) end if v.bind then SetBinding(v.bind, command) end
end end
end end
SaveBindings(1) SaveBindings(1)
elseif e == "UPDATE_BAR_TABLE" then elseif e == "UPDATE_BAR_TABLE" then
local arg2 = "default" local arg2 = "default"
if ... then arg2 = ... end if ... then arg2 = ... end
if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end
if not WeakAurasSaved.CustomTrash.BarTable then WeakAurasSaved.CustomTrash.BarTable = {} end if not WeakAurasSaved.CustomTrash.BarTable then WeakAurasSaved.CustomTrash.BarTable = {} end
if not WeakAurasSaved.CustomTrash.BarTable[arg2] then WeakAurasSaved.CustomTrash.BarTable[arg2] = {} end if not WeakAurasSaved.CustomTrash.BarTable[arg2] then WeakAurasSaved.CustomTrash.BarTable[arg2] = {} end
for i = 1, 72 do for i = 1, 72 do
PickupAction(i) PickupAction(i)
if GetCursorInfo() then if GetCursorInfo() then
local type = GetCursorInfo() local type = GetCursorInfo()
local id, name = nil, nil local id, name = nil, nil
if not type then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = nil end if not type then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = nil end
if type == "spell" then if type == "spell" then
id = select(4, GetCursorInfo()) id = select(4, GetCursorInfo())
elseif type == "mount" then elseif type == "mount" then
id = select(2, GetCursorInfo()) id = select(2, GetCursorInfo())
elseif type == "macro" then elseif type == "macro" then
id = select(2, GetCursorInfo()) id = select(2, GetCursorInfo())
name = select(1, GetMacroInfo(id)) name = select(1, GetMacroInfo(id))
elseif type == "item" then elseif type == "item" then
id = select(2, GetCursorInfo()) id = select(2, GetCursorInfo())
elseif type == "equipmentset" then elseif type == "equipmentset" then
name = select(2, GetCursorInfo()) name = select(2, GetCursorInfo())
end --elseif end end --elseif end
if not WeakAurasSaved.CustomTrash.BarTable[arg2][i] then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = {} 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 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].type = type
WeakAurasSaved.CustomTrash.BarTable[arg2][i].id = id WeakAurasSaved.CustomTrash.BarTable[arg2][i].id = id
WeakAurasSaved.CustomTrash.BarTable[arg2][i].name = name WeakAurasSaved.CustomTrash.BarTable[arg2][i].name = name
if not name then if not name then
print("Adding", type, "by id", id, "on slot", i, "to the table") print("Adding", type, "by id", id, "on slot", i, "to the table")
elseif name then elseif name then
print("Adding", type, "by id", id, "and name", name, "on slot", i, "to the table") print("Adding", type, "by id", id, "and name", name, "on slot", i, "to the table")
end end
end end
end end
PickupAction(i) PickupAction(i)
end end
elseif e == "UPDATE_BARS" then elseif e == "UPDATE_BARS" then
local arg2 = "default" local arg2 = "default"
if ... then arg2 = ... end if ... then arg2 = ... end
for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable[arg2]) do for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable[arg2]) do
if v.type == "spell" then if v.type == "spell" then
if GetCursorInfo() then ClearCursor() end if GetCursorInfo() then ClearCursor() end
PickupAction(k) PickupAction(k)
if GetCursorInfo() then if GetCursorInfo() then
local id = select(4, GetCursorInfo()) local id = select(4, GetCursorInfo())
if id ~= v.id then if id ~= v.id then
ClearCursor() ClearCursor()
PickupSpell(v.id) PickupSpell(v.id)
PickupAction(k) PickupAction(k)
ClearCursor() ClearCursor()
end end
PickupAction(k) PickupAction(k)
else else
ClearCursor() ClearCursor()
PickupSpell(v.id) PickupSpell(v.id)
PickupAction(k) PickupAction(k)
ClearCursor() ClearCursor()
end end
elseif v.type == "mount" then elseif v.type == "mount" then
local mid, mindex local mid, mindex
--Looking for mount in mount journal --Looking for mount in mount journal
for i = 1, C_MountJournal.GetNumMounts() do for i = 1, C_MountJournal.GetNumMounts() do
mid = select(12, C_MountJournal.GetDisplayedMountInfo(i)) mid = select(12, C_MountJournal.GetDisplayedMountInfo(i))
local ishave = select(11, C_MountJournal.GetDisplayedMountInfo(i)) local ishave = select(11, C_MountJournal.GetDisplayedMountInfo(i))
if mid == v.id then if mid == v.id then
mindex = i mindex = i
break break
end end
if ishave == false then if ishave == false then
break break
end end
end end
--Checking what's on the bar --Checking what's on the bar
if GetCursorInfo() then ClearCursor() end if GetCursorInfo() then ClearCursor() end
PickupAction(k) PickupAction(k)
if GetCursorInfo() then if GetCursorInfo() then
local id = select(2, GetCursorInfo()) local id = select(2, GetCursorInfo())
if id ~= v.id and mindex then if id ~= v.id and mindex then
ClearCursor() ClearCursor()
C_MountJournal.Pickup(mindex) C_MountJournal.Pickup(mindex)
PickupAction(k) PickupAction(k)
ClearCursor() ClearCursor()
end end
PickupAction(k) PickupAction(k)
elseif not GetCursorInfo() and mindex then elseif not GetCursorInfo() and mindex then
ClearCursor() ClearCursor()
C_MountJournal.Pickup(mindex) C_MountJournal.Pickup(mindex)
PickupAction(k) PickupAction(k)
ClearCursor() ClearCursor()
end end
elseif v.type == "macro" then elseif v.type == "macro" then
if GetCursorInfo() then ClearCursor() end if GetCursorInfo() then ClearCursor() end
PickupAction(k) PickupAction(k)
if GetCursorInfo() then if GetCursorInfo() then
local id = select(2, GetCursorInfo()) local id = select(2, GetCursorInfo())
local name = select(1, GetMacroInfo(id)) local name = select(1, GetMacroInfo(id))
if id ~= v.id or name ~= v.name then if id ~= v.id or name ~= v.name then
ClearCursor() ClearCursor()
PickupMacro(v.id) PickupMacro(v.id)
PickupAction(k) PickupAction(k)
ClearCursor() ClearCursor()
end end
PickupAction(k) PickupAction(k)
else else
ClearCursor() ClearCursor()
local name = GetMacroInfo(v.id) local name = GetMacroInfo(v.id)
if name == v.name then if name == v.name then
PickupMacro(v.id) PickupMacro(v.id)
PickupAction(k) PickupAction(k)
ClearCursor() ClearCursor()
end end
end end
elseif v.type == "equipmentset" then elseif v.type == "equipmentset" then
if GetCursorInfo() then ClearCursor() end if GetCursorInfo() then ClearCursor() end
local eqindex local eqindex
for i = 1, GetNumEquipmentSets() do for i = 1, GetNumEquipmentSets() do
local nam = GetEquipmentSetInfo(i) local nam = GetEquipmentSetInfo(i)
if nam == v.name then if nam == v.name then
eqindex = i eqindex = i
break break
end end
end end
if eqindex then if eqindex then
PickupAction(k) PickupAction(k)
if GetCursorInfo() then if GetCursorInfo() then
local name = select(2, GetCursorInfo()) local name = select(2, GetCursorInfo())
if name ~= v.name then if name ~= v.name then
ClearCursor() ClearCursor()
PickupEquipmentSet(eqindex) PickupEquipmentSet(eqindex)
PickupAction(k) PickupAction(k)
ClearCursor() ClearCursor()
end end
PickupAction(k) PickupAction(k)
else else
ClearCursor() ClearCursor()
PickupEquipmentSet(eqindex) PickupEquipmentSet(eqindex)
PickupAction(k) PickupAction(k)
ClearCursor() ClearCursor()
end end
end end
elseif v.type == "item" then elseif v.type == "item" then
if GetCursorInfo() then ClearCursor() end if GetCursorInfo() then ClearCursor() end
local ios, jos local ios, jos
for i = 0, 4 do for i = 0, 4 do
for j = 1, GetContainerNumSlots(i) do for j = 1, GetContainerNumSlots(i) do
local link = select(7, GetContainerItemInfo(i, j)) local link = select(7, GetContainerItemInfo(i, j))
if link then if link then
local id = link:match("item:(%d+):") local id = link:match("item:(%d+):")
if id then if id then
id = tonumber(id) id = tonumber(id)
if id == v.id then if id == v.id then
ios = i ios = i
jos = j jos = j
break break
end end
end end
end end
end end
end end
if ios and jos then if ios and jos then
PickupAction(k) PickupAction(k)
if GetCursorInfo() then if GetCursorInfo() then
local id = select(2, GetCursorInfo()) local id = select(2, GetCursorInfo())
if id ~= v.id then if id ~= v.id then
ClearCursor() ClearCursor()
PickupContainerItem(ios, jos) PickupContainerItem(ios, jos)
PickupAction(k) PickupAction(k)
ClearCursor() ClearCursor()
end end
PickupAction(k) PickupAction(k)
else else
ClearCursor() ClearCursor()
PickupContainerItem(ios, jos) PickupContainerItem(ios, jos)
PickupAction(k) PickupAction(k)
ClearCursor() ClearCursor()
end end
end end
end --elseif end end --elseif end
end end
elseif e == "DELETE_SET" then elseif e == "DELETE_SET" then
local arg2 = ... local arg2 = ...
if arg2 and WeakAurasSaved.CustomTrash.BarTable[arg2] then if arg2 and WeakAurasSaved.CustomTrash.BarTable[arg2] then
WeakAurasSaved.CustomTrash.BarTable[arg2] = nil WeakAurasSaved.CustomTrash.BarTable[arg2] = nil
end end
elseif e == "LIST_SETS" then elseif e == "LIST_SETS" then
for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable) do for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable) do
print(k) print(k)
end end
end --elseif end end --elseif end
end end
end end

View File

@@ -1,19 +1,19 @@
function() function()
results = C_AuctionHouse.GetBrowseResults() results = C_AuctionHouse.GetBrowseResults()
-- DevTools_Dump(results) -- DevTools_Dump(results)
for k,v in ipairs(results) do for k,v in ipairs(results) do
local itemID = v.itemKey.itemID local itemID = v.itemKey.itemID
local itemName = GetItemInfo(itemID) local itemName = GetItemInfo(itemID)
if aura_env.sellPriceThresholds[itemID] then if aura_env.sellPriceThresholds[itemID] then
if v.minPrice > aura_env.sellPriceThresholds[itemID] then if v.minPrice > aura_env.sellPriceThresholds[itemID] then
print(itemName, "too expensive") print(itemName, "too expensive")
SendChatMessage("POKE", "WHISPER", nil, UnitName("player")) SendChatMessage("POKE", "WHISPER", nil, UnitName("player"))
end end
elseif aura_env.buyPriceThresholds[itemID] then elseif aura_env.buyPriceThresholds[itemID] then
if v.minPrice < aura_env.buyPriceThresholds[itemID] then if v.minPrice < aura_env.buyPriceThresholds[itemID] then
print(itemName, "too cheap") print(itemName, "too cheap")
SendChatMessage("POKE", "WHISPER", nil, UnitName("player")) SendChatMessage("POKE", "WHISPER", nil, UnitName("player"))
end end
end end
end end
end end

View File

@@ -1,6 +1,6 @@
function() function()
if not aura_env.last or aura_env.last < GetTime() - aura_env.throttleTime then if not aura_env.last or aura_env.last < GetTime() - aura_env.throttleTime then
aura_env.last = GetTime() aura_env.last = GetTime()
AuctionHouseFrame.SearchBar.FavoritesSearchButton:Click() AuctionHouseFrame.SearchBar.FavoritesSearchButton:Click()
end end
end end

View File

@@ -1,17 +1,17 @@
aura_env.throttleTime = 10 aura_env.throttleTime = 10
aura_env.sellPriceThresholds = { aura_env.sellPriceThresholds = {
[168446] = 5000 * 100 * 100, -- Accord of Critical Strike [168446] = 5000 * 100 * 100, -- Accord of Critical Strike
[168447] = 5000 * 100 * 100, -- Accord of Haste [168447] = 5000 * 100 * 100, -- Accord of Haste
[168448] = 5000 * 100 * 100, -- Accord of Mastery [168448] = 5000 * 100 * 100, -- Accord of Mastery
[168449] = 5000 * 100 * 100, -- Accord of Versatility [168449] = 5000 * 100 * 100, -- Accord of Versatility
[168592] = 4500 * 100 * 100, -- Oceanic Restoration [168592] = 4500 * 100 * 100, -- Oceanic Restoration
[168496] = 4500 * 100 * 100, -- Force Multiplier [168496] = 4500 * 100 * 100, -- Force Multiplier
[168593] = 4500 * 100 * 100, -- Machinist's Brilliance [168593] = 4500 * 100 * 100, -- Machinist's Brilliance
[168598] = 4500 * 100 * 100, -- Naga Hide [168598] = 4500 * 100 * 100, -- Naga Hide
} }
aura_env.buyPriceThresholds = { aura_env.buyPriceThresholds = {
[152576] = 5 * 100 * 100, -- Tidesrpay Linen [152576] = 5 * 100 * 100, -- Tidesrpay Linen
[152877] = 500 * 100 * 100, -- Veiled Crystal [152877] = 500 * 100 * 100, -- Veiled Crystal
} }

View File

@@ -1,3 +1,3 @@
/run AuctionHouseFrame.SearchBar.FavoritesSearchButton:Click() /run AuctionHouseFrame.SearchBar.FavoritesSearchButton:Click()
/dump C_AuctionHouse.GetBrowseResults() /dump C_AuctionHouse.GetBrowseResults()

View File

@@ -1,3 +1,3 @@
function(progress) function(progress)
return aura_env.Display.color.r, aura_env.Display.color.g, aura_env.Display.color.b, 1 return aura_env.Display.color.r, aura_env.Display.color.g, aura_env.Display.color.b, 1
end end

View File

@@ -1,4 +1,4 @@
function() function()
local current, max = aura_env.ShieldManager.GetStats() local current, max = aura_env.ShieldManager.GetStats()
return current, max, 1 return current, max, 1
end end

View File

@@ -1,8 +1,8 @@
-- TICKER_500 -- TICKER_500
function() function()
for _, shield in pairs(aura_env.Shields) do for _, shield in pairs(aura_env.Shields) do
shield:Update() shield:Update()
end end
aura_env.Display.Update() aura_env.Display.Update()
return true return true
end end

View File

@@ -1,28 +1,28 @@
---@param table table ---@param table table
---@param depth number? ---@param depth number?
function DumpTable(table, depth) function DumpTable(table, depth)
if depth == nil then depth = 0 end if depth == nil then depth = 0 end
if depth > 200 then if depth > 200 then
print("Error: Depth > 200 in dumpTable()") print("Error: Depth > 200 in dumpTable()")
return return
end end
for k, v in pairs(table) do for k, v in pairs(table) do
if type(v) == "table" then if type(v) == "table" then
print(string.rep(" ", depth) .. k .. ":") print(string.rep(" ", depth) .. k .. ":")
DumpTable(v, depth + 1) DumpTable(v, depth + 1)
else else
print(string.rep(" ", depth) .. k .. ": ", v) print(string.rep(" ", depth) .. k .. ": ", v)
end end
end end
end end
local colorer = Colorer.new() local colorer = Colorer.new()
local value = 1.21 local value = 1.21
local rgb = colorer:Interpolate(value) local rgb = colorer:Interpolate(value)
for i = 1, 150 do for i = 1, 150 do
local value = i / 100 local value = i / 100
local rgb = colorer:Interpolate(value) local rgb = colorer:Interpolate(value)
print(value, rgb.r, rgb.g, rgb.b) print(value, rgb.r, rgb.g, rgb.b)
end end

View File

@@ -1,3 +1,3 @@
function() function()
return aura_env.Display.current, aura_env.Display.max, aura_env.Display.ofHp return aura_env.Display.current, aura_env.Display.max, aura_env.Display.ofHp
end end

View File

@@ -1,5 +1,5 @@
--- PLAYER_TARGET_CHANGED --- PLAYER_TARGET_CHANGED
--- Deprecated in favor of Heimdall.AchievementSniffer --- Deprecated in favor of Heimdall.AchievementSniffer
--function(allstates) --function(allstates)
-- aura_env.TryInspect() -- aura_env.TryInspect()
--end --end

View File

@@ -1,16 +1,16 @@
--- INSPECT_ACHIEVEMENT_READY --- INSPECT_ACHIEVEMENT_READY
--- Deprecated in favor of Heimdall.AchievementSniffer --- Deprecated in favor of Heimdall.AchievementSniffer
--function() --function()
-- local targetGuid = UnitGUID("target") -- local targetGuid = UnitGUID("target")
-- if not targetGuid then return end -- if not targetGuid then return end
-- if not string.match(targetGuid, "Player") then return end -- if not string.match(targetGuid, "Player") then return end
-- local targetName = UnitName("target") -- local targetName = UnitName("target")
-- --
-- local should = false -- local should = false
-- if not WeakAurasSaved.Cyka.AchievementSniffer[targetName] then should = true end -- if not WeakAurasSaved.Cyka.AchievementSniffer[targetName] then should = true end
-- if WeakAurasSaved.Cyka.AchievementSniffer2[targetName] then should = false end -- if WeakAurasSaved.Cyka.AchievementSniffer2[targetName] then should = false end
-- if aura_env.config.rescan then should = true end -- if aura_env.config.rescan then should = true end
-- if not should then return end -- if not should then return end
-- --
-- aura_env.Scan(targetName) -- aura_env.Scan(targetName)
--end --end

View File

@@ -1,4 +1,4 @@
-- TICKER_500 -- TICKER_500
function() function()
aura_env.TryInspect() aura_env.TryInspect()
end end

View File

@@ -1,32 +1,32 @@
--- TICKER_200 --- TICKER_200
function(allstates) function(allstates)
for i = 0, 40 do for i = 0, 40 do
local unit = "nameplate" .. i local unit = "nameplate" .. i
if UnitIsPlayer(unit) then if UnitIsPlayer(unit) then
local name = UnitName(unit) local name = UnitName(unit)
local seen = false local seen = false
if not Heimdall_Achievements then return end if not Heimdall_Achievements then return end
if not Heimdall_Achievements.players then return end if not Heimdall_Achievements.players then return end
if not Heimdall_Achievements.alreadySeen then return end if not Heimdall_Achievements.alreadySeen then return end
if Heimdall_Achievements.players[name] then seen = true end if Heimdall_Achievements.players[name] then seen = true end
if Heimdall_Achievements.alreadySeen[name] then seen = true end if Heimdall_Achievements.alreadySeen[name] then seen = true end
allstates[unit] = { allstates[unit] = {
show = true, show = true,
changed = true, changed = true,
name = name, name = name,
unit = unit, unit = unit,
seen = seen, seen = seen,
} }
else else
allstates[unit] = { allstates[unit] = {
show = false, show = false,
changed = true, changed = true,
seen = false, seen = false,
} }
end end
end end
return true return true
end end

View File

@@ -1,135 +1,135 @@
main achievement frame is AchievementFrame main achievement frame is AchievementFrame
The tabs are The tabs are
AchievementFrameTab1 2 3 AchievementFrameTab1 2 3
First is "Achievements", 2nd guild and 3rd statistics First is "Achievements", 2nd guild and 3rd statistics
Statistics might also be useful but that would be hard to tell, for now Statistics might also be useful but that would be hard to tell, for now
AchievementFrame > AchievementFrameComparison AchievementFrame > AchievementFrameComparison
The comparison frame is AchievementFrameComparisonContainer (N/A) The comparison frame is AchievementFrameComparisonContainer (N/A)
Scroll buttons are AchievementFrameComparisonContainerScrollBarScrollDownButton (scrollDown) and AchievementFrameComparisonContainerScrollBarScrollUpButton (scrollUp) Scroll buttons are AchievementFrameComparisonContainerScrollBarScrollDownButton (scrollDown) and AchievementFrameComparisonContainerScrollBarScrollUpButton (scrollUp)
The actual individual achievement data is in The actual individual achievement data is in
AchievementFrameComparisonContainerScrollChild (ScrollChild) (not a typo) AchievementFrameComparisonContainerScrollChild (ScrollChild) (not a typo)
It has achievements listed as: It has achievements listed as:
AchievementFrameComparisonContainerButton1 .. 10 AchievementFrameComparisonContainerButton1 .. 10
Always seems to be 10 Always seems to be 10
Scrolling should move 1 new into the view and 1 old out of view Scrolling should move 1 new into the view and 1 old out of view
The buttons themselves represent one row (one achievement) The buttons themselves represent one row (one achievement)
Our achievement is found in Our achievement is found in
AchievementFrameComparisonContainerButton1Player (player) AchievementFrameComparisonContainerButton1Player (player)
AchievementFrameComparisonContainerButton1Friend (friend) AchievementFrameComparisonContainerButton1Friend (friend)
Ours has names while friend has no names Ours has names while friend has no names
So we will have to use names from Player and dates from Friend So we will have to use names from Player and dates from Friend
Name, title, is under AchievementFrameComparisonContainerButton1PlayerLabel (label) Name, title, is under AchievementFrameComparisonContainerButton1PlayerLabel (label)
Friend date achieved is under AchievementFrameComparisonContainerButton1FriendStatus (status) Friend date achieved is under AchievementFrameComparisonContainerButton1FriendStatus (status)
We can also get achievement ID from the button frame We can also get achievement ID from the button frame
AchievementFrameComparisonContainerButton1P under the "id" property AchievementFrameComparisonContainerButton1P under the "id" property
Categories are under Categories are under
AchievementFrameCategories (N/A) > AchievementFrameCategoriesContainer (N/A) AchievementFrameCategories (N/A) > AchievementFrameCategoriesContainer (N/A)
Structure is the same as AchievementFrameComparisonContainer Structure is the same as AchievementFrameComparisonContainer
We have scroll child and scroll up/down We have scroll child and scroll up/down
Although there's no scrolling so I'm not sure what we scroll Although there's no scrolling so I'm not sure what we scroll
Not true - the buttons are categories to be expanded into Not true - the buttons are categories to be expanded into
And clicking one does expand And clicking one does expand
So after we click we have to recalculate their positions So after we click we have to recalculate their positions
In AchievementFrameCategoriesContainer we have many buttons which correspond to categories 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 The best way of browsing them that I can see is reading the title of each
Since we are only interested in a few Since we are only interested in a few
AchievementFrameCategoriesContainerButton1 .. n AchievementFrameCategoriesContainerButton1 .. n
The title is the same structure as the achievement title The title is the same structure as the achievement title
AchievementFrameCategoriesContainerButton1Label (label) AchievementFrameCategoriesContainerButton1Label (label)
Under each button of course Under each button of course
We can also get the category ID and name from the button frame We can also get the category ID and name from the button frame
AchievementFrameCategoriesContainerButton1 AchievementFrameCategoriesContainerButton1
Under "categoryID" and "name" Under "categoryID" and "name"
[11:20 PM] [Virag's DT]: 23:20:04 INSPECT_ACHIEVEMENT_READY - (2) table: 000001AF07021540 [11:20 PM] [Virag's DT]: 23:20:04 INSPECT_ACHIEVEMENT_READY - (2) table: 000001AF07021540
Fires when the achievement frame is ready Fires when the achievement frame is ready
Argument #2 is the GUID of the player Argument #2 is the GUID of the player
None is fired when the frame is closed... None is fired when the frame is closed...
I guess we'll have to check each frame we go over I guess we'll have to check each frame we go over
See See
canInspect = CanInspect("unit", showError) canInspect = CanInspect("unit", showError)
Arguments: Arguments:
unit - A unit to inspect (string, unitID) 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) 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: Returns:
canInspect - 1 if the unit can be inspected; otherwise nil (1nil) canInspect - 1 if the unit can be inspected; otherwise nil (1nil)
Actually nevermind, this seems much easier and simpler: Actually nevermind, this seems much easier and simpler:
completed, month, day, year = GetAchievementComparisonInfo(achievementID) completed, month, day, year = GetAchievementComparisonInfo(achievementID)
completed completed
boolean - Returns true/false depending on whether the unit has completed the achievement or not. boolean - Returns true/false depending on whether the unit has completed the achievement or not.
month month
number - Month in which the unit has completed the achievement. Returns nil if completed is false. number - Month in which the unit has completed the achievement. Returns nil if completed is false.
day day
number - Day of the month in which the unit has completed the achievement. Returns nil if completed is false. number - Day of the month in which the unit has completed the achievement. Returns nil if completed is false.
year year
number - Year (two digits, 21st century is assumed) in which the unit has completed the achievement. Returns nil if completed is false. 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. Only accurate after the after SetAchievementComparisonUnit is called and the INSPECT_ACHIEVEMENT_READY event has fired.
success = SetAchievementComparisonUnit(unit) success = SetAchievementComparisonUnit(unit)
success success
boolean - Returns true/false depending on whether the unit is valid. boolean - Returns true/false depending on whether the unit is valid.
-> INSPECT_ACHIEVEMENT_READY -> INSPECT_ACHIEVEMENT_READY
522 -- Somebody Likes Me 522 -- Somebody Likes Me
523 -- 5 Exalted Reputations 523 -- 5 Exalted Reputations
524 -- 10 Exalted Reputations 524 -- 10 Exalted Reputations
521 -- 15 Exalted Reputations 521 -- 15 Exalted Reputations
520 -- 20 Exalted Reputations 520 -- 20 Exalted Reputations
519 -- 25 Exalted Reputations 519 -- 25 Exalted Reputations
518 -- 30 Exalted Reputations 518 -- 30 Exalted Reputations
1556 -- 25 Fish 1556 -- 25 Fish
1557 -- 50 Fish 1557 -- 50 Fish
1558 -- 100 Fish 1558 -- 100 Fish
238 -- An Honorable Kill 238 -- An Honorable Kill
513 -- 100 Honorable Kills 513 -- 100 Honorable Kills
515 -- 500 Honorable Kills 515 -- 500 Honorable Kills
516 -- 1000 Honorable Kills 516 -- 1000 Honorable Kills
512 -- 5000 Honorable Kills 512 -- 5000 Honorable Kills
509 -- 10000 Honorable Kills 509 -- 10000 Honorable Kills
239 -- 25000 Honorable Kills 239 -- 25000 Honorable Kills
503 -- 50 Quests Completed 503 -- 50 Quests Completed
504 -- 100 Quests Completed 504 -- 100 Quests Completed
505 -- 250 Quests Completed 505 -- 250 Quests Completed
506 -- 500 Quests Completed 506 -- 500 Quests Completed
507 -- 1000 Quests Completed 507 -- 1000 Quests Completed
1017 -- Can I Keep Him? 1017 -- Can I Keep Him?
15 -- Plenty of Pets 15 -- Plenty of Pets
1248 -- Plethora of Pets 1248 -- Plethora of Pets
1250 -- Shop Smart, Shop Pet...Smart 1250 -- Shop Smart, Shop Pet...Smart
2516 -- Lil' Game Hunter 2516 -- Lil' Game Hunter
5876 -- Petting Zoo 5876 -- Petting Zoo
11188 -- Broken Isles Explorer 11188 -- Broken Isles Explorer
11190 -- Broken Isles Pathfinder, Part One 11190 -- Broken Isles Pathfinder, Part One
11157 -- Loremaster of Legion 11157 -- Loremaster of Legion
10763 -- Azsuna Matata 10763 -- Azsuna Matata
10790 -- Vrykul Story, Bro 10790 -- Vrykul Story, Bro
11124 -- Good Suramaritan 11124 -- Good Suramaritan
10059 -- Ain't No Mountain High Enough 10059 -- Ain't No Mountain High Enough
10698 -- That's Val'sharah Folks! 10698 -- That's Val'sharah Folks!
10672 -- Broken Isles Diplomat 10672 -- Broken Isles Diplomat
10665 -- Explore Azsuna 10665 -- Explore Azsuna
10666 -- Explore Val'sharah 10666 -- Explore Val'sharah
10667 -- Explore Highmountain 10667 -- Explore Highmountain
10668 -- Explore Stormheim 10668 -- Explore Stormheim
10669 -- Explore Suramar 10669 -- Explore Suramar
12069 -- Explore Argus 12069 -- Explore Argus
2141 -- Stable Keeper 2141 -- Stable Keeper
2142 -- Filling Up The Barn 2142 -- Filling Up The Barn
2143 -- Leading the Cavalry 2143 -- Leading the Cavalry
7382 -- Dynamic Duo 7382 -- Dynamic Duo
7383 -- Terrific Trio 7383 -- Terrific Trio
7384 -- Quintessential Quintet 7384 -- Quintessential Quintet
245 -- That Takes Class 245 -- That Takes Class

View File

@@ -1,223 +1,223 @@
---@class aura_env ---@class aura_env
---@field achievements table<number, string> ---@field achievements table<number, string>
---@field Scan fun(playerName: string) ---@field Scan fun(playerName: string)
---@field TryInspect fun() ---@field TryInspect fun()
---@class WeakAurasSaved ---@class WeakAurasSaved
---@field Cyka table<string, table<string, table<number, string>>> ---@field Cyka table<string, table<string, table<number, string>>>
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
if not WeakAurasSaved.Cyka.AchievementSniffer then WeakAurasSaved.Cyka.AchievementSniffer = {} end if not WeakAurasSaved.Cyka.AchievementSniffer then WeakAurasSaved.Cyka.AchievementSniffer = {} end
if not WeakAurasSaved.Cyka.AchievementSniffer2 then WeakAurasSaved.Cyka.AchievementSniffer2 = {} end if not WeakAurasSaved.Cyka.AchievementSniffer2 then WeakAurasSaved.Cyka.AchievementSniffer2 = {} end
for k, v in pairs(WeakAurasSaved.Cyka.AchievementSniffer2) do for k, v in pairs(WeakAurasSaved.Cyka.AchievementSniffer2) do
if WeakAurasSaved.Cyka.AchievementSniffer[k] then WeakAurasSaved.Cyka.AchievementSniffer[k] = nil end if WeakAurasSaved.Cyka.AchievementSniffer[k] then WeakAurasSaved.Cyka.AchievementSniffer[k] = nil end
end end
aura_env.achievements = { aura_env.achievements = {
15, 15,
153, 153,
245, 245,
506, 506,
507, 507,
513, 513,
524, 524,
648, 648,
649, 649,
651, 651,
655, 655,
657, 657,
660, 660,
661, 661,
667, 667,
668, 668,
669, 669,
671, 671,
676, 676,
678, 678,
681, 681,
682, 682,
697, 697,
777, 777,
958, 958,
974, 974,
975, 975,
1017, 1017,
1266, 1266,
1556, 1556,
1557, 1557,
1558, 1558,
1576, 1576,
2078, 2078,
2141, 2141,
2200, 2200,
4477, 4477,
4478, 4478,
4624, 4624,
4914, 4914,
4958, 4958,
4960, 4960,
5455, 5455,
5456, 5456,
5749, 5749,
5752, 5752,
6456, 6456,
6460, 6460,
6753, 6753,
6757, 6757,
6758, 6758,
6835, 6835,
7382, 7382,
7383, 7383,
7384, 7384,
7437, 7437,
7948, 7948,
8929, 8929,
8952, 8952,
8956, 8956,
8966, 8966,
8967, 8967,
8969, 8969,
8978, 8978,
8979, 8979,
8980, 8980,
8981, 8981,
8982, 8982,
8983, 8983,
9017, 9017,
9038, 9038,
9132, 9132,
9493, 9493,
9507, 9507,
10059, 10059,
10079, 10079,
10278, 10278,
10460, 10460,
10581, 10581,
10585, 10585,
10595, 10595,
10597, 10597,
10617, 10617,
10657, 10657,
10666, 10666,
10667, 10667,
10668, 10668,
10672, 10672,
10682, 10682,
10684, 10684,
10688, 10688,
10689, 10689,
10692, 10692,
10693, 10693,
10698, 10698,
10706, 10706,
10746, 10746,
10755, 10755,
10756, 10756,
10763, 10763,
10772, 10772,
10775, 10775,
10790, 10790,
10800, 10800,
10818, 10818,
10819, 10819,
10820, 10820,
10875, 10875,
10994, 10994,
11124, 11124,
11126, 11126,
11127, 11127,
11128, 11128,
11153, 11153,
11157, 11157,
11164, 11164,
11188, 11188,
11189, 11189,
11190, 11190,
11214, 11214,
11220, 11220,
11298, 11298,
11338, 11338,
11394, 11394,
11446, 11446,
11473, 11473,
11545, 11545,
11559, 11559,
11610, 11610,
11611, 11611,
11653, 11653,
11657, 11657,
11658, 11658,
11659, 11659,
11660, 11660,
11674, 11674,
11773, 11773,
11787, 11787,
11789, 11789,
11790, 11790,
11796, 11796,
11992, 11992,
11993, 11993,
11994, 11994,
11995, 11995,
11996, 11996,
11997, 11997,
11998, 11998,
11999, 11999,
12000, 12000,
12001, 12001,
12008, 12008,
12015, 12015,
12020, 12020,
12026, 12026,
12028, 12028,
12030, 12030,
12072, 12072,
12074, 12074,
12085, 12085,
12086, 12086,
12103, 12103,
12110, 12110,
12445, 12445,
12447, 12447,
12448, 12448,
} }
aura_env.TryInspect = function() aura_env.TryInspect = function()
local targetPlayer = UnitIsPlayer("target") local targetPlayer = UnitIsPlayer("target")
if not targetPlayer then return end if not targetPlayer then return end
local targetName = UnitName("target") local targetName = UnitName("target")
local should = false local should = false
if not WeakAurasSaved.Cyka.AchievementSniffer[targetName] then should = true end if not WeakAurasSaved.Cyka.AchievementSniffer[targetName] then should = true end
if WeakAurasSaved.Cyka.AchievementSniffer2[targetName] then should = false end if WeakAurasSaved.Cyka.AchievementSniffer2[targetName] then should = false end
if aura_env.config.rescan then should = true end if aura_env.config.rescan then should = true end
if not should then return end if not should then return end
local canInspect = CheckInteractDistance("target", 1) local canInspect = CheckInteractDistance("target", 1)
if canInspect then SetAchievementComparisonUnit("target") end if canInspect then SetAchievementComparisonUnit("target") end
end end
---@param playerName string ---@param playerName string
aura_env.Scan = function(playerName) aura_env.Scan = function(playerName)
WeakAurasSaved.Cyka.AchievementSniffer[playerName] = {} WeakAurasSaved.Cyka.AchievementSniffer[playerName] = {}
for i, aid in ipairs(aura_env.achievements) do for i, aid in ipairs(aura_env.achievements) do
local completed, month, day, year = GetAchievementComparisonInfo(aid) local completed, month, day, year = GetAchievementComparisonInfo(aid)
if completed then if completed then
---@type string ---@type string
local yearstr = "" .. year local yearstr = "" .. year
if year < 100 then yearstr = "20" .. year end if year < 100 then yearstr = "20" .. year end
local date = string.format("%04d-%02d-%02d", yearstr, month, day) local date = string.format("%04d-%02d-%02d", yearstr, month, day)
local data = { local data = {
id = aid, id = aid,
date = date, date = date,
completed = completed, completed = completed,
} }
WeakAurasSaved.Cyka.AchievementSniffer[playerName][aid] = data WeakAurasSaved.Cyka.AchievementSniffer[playerName][aid] = data
end end
end end
end end
--/run WeakAurasSaved.Cyka.AchievementSniffer = {} --/run WeakAurasSaved.Cyka.AchievementSniffer = {}
--/dump WeakAurasSaved.Cyka.AchievementSniffer["Pinkleta"] --/dump WeakAurasSaved.Cyka.AchievementSniffer["Pinkleta"]

View File

@@ -1,7 +1,7 @@
local year = 20 local year = 20
local month = 7 local month = 7
local day = 12 local day = 12
if year < 100 then year = "20" .. year end if year < 100 then year = "20" .. year end
print(string.format("%4d-%02d-%02d", year, month, day)) print(string.format("%4d-%02d-%02d", year, month, day))

View File

@@ -1,318 +1,318 @@
--UPDATE_MOUSEOVER_UNIT PLAYER_TARGET_CHANGED --UPDATE_MOUSEOVER_UNIT PLAYER_TARGET_CHANGED
function() function()
if not UnitExists("target") and UnitExists("mouseover") and UnitIsPlayer("mouseover") then if not UnitExists("target") and UnitExists("mouseover") and UnitIsPlayer("mouseover") then
aura_env.output = "Boss RF NM HC Myth" .. "\n" aura_env.output = "Boss RF NM HC Myth" .. "\n"
bossKills = bossKills =
{ {
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
} }
SetAchievementComparisonUnit("mouseover") SetAchievementComparisonUnit("mouseover")
end end
if not UnitExists("mouseover") and UnitExists("target") and UnitIsPlayer("target") then if not UnitExists("mouseover") and UnitExists("target") and UnitIsPlayer("target") then
aura_env.output = "Boss RF NM HC Myth" .. "\n" aura_env.output = "Boss RF NM HC Myth" .. "\n"
bossKills = bossKills =
{ {
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
{ {
[1] = 0, [1] = 0,
[2] = 0, [2] = 0,
[3] = 0, [3] = 0,
[4] = 0 [4] = 0
}, },
} }
SetAchievementComparisonUnit("target") SetAchievementComparisonUnit("target")
end end
end end
--INSPECT_ACHIEVEMENT_READY --INSPECT_ACHIEVEMENT_READY
function() function()
aura_env.output = "Boss RF NM HC Myth" .. "\n" aura_env.output = "Boss RF NM HC Myth" .. "\n"
for k,v in ipairs(aura_env.TOS) do 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 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])) local bossname = select(2, GetAchievementInfo(aura_env.TOS[k][1]))
bossname = bossname:match("[a-zA-Z' ]*kills") bossname = bossname:match("[a-zA-Z' ]*kills")
bossname = bossname:gsub(" kills", "") bossname = bossname:gsub(" kills", "")
aura_env.output = aura_env.output .. bossname .. "\n" aura_env.output = aura_env.output .. bossname .. "\n"
if GetComparisonStatistic(aura_env.TOS[k][1]) ~= "--" then if GetComparisonStatistic(aura_env.TOS[k][1]) ~= "--" then
bossKills[k][1] = GetComparisonStatistic(aura_env.TOS[k][1]) bossKills[k][1] = GetComparisonStatistic(aura_env.TOS[k][1])
end end
if GetComparisonStatistic(aura_env.TOS[k][2]) ~= "--" then if GetComparisonStatistic(aura_env.TOS[k][2]) ~= "--" then
bossKills[k][2] = GetComparisonStatistic(aura_env.TOS[k][2]) bossKills[k][2] = GetComparisonStatistic(aura_env.TOS[k][2])
end end
if GetComparisonStatistic(aura_env.TOS[k][3]) ~= "--" then if GetComparisonStatistic(aura_env.TOS[k][3]) ~= "--" then
bossKills[k][3] = GetComparisonStatistic(aura_env.TOS[k][3]) bossKills[k][3] = GetComparisonStatistic(aura_env.TOS[k][3])
end end
if GetComparisonStatistic(aura_env.TOS[k][4]) ~= "--" then if GetComparisonStatistic(aura_env.TOS[k][4]) ~= "--" then
bossKills[k][4] = GetComparisonStatistic(aura_env.TOS[k][4]) bossKills[k][4] = GetComparisonStatistic(aura_env.TOS[k][4])
end end
end end
end end
ClearAchievementComparisonUnit() ClearAchievementComparisonUnit()
end end
--WEAKAURA 2 DISPLAY -- RF BOSSES --WEAKAURA 2 DISPLAY -- RF BOSSES
function() function()
local output = "" local output = ""
for k,v in ipairs(bossKills) do for k,v in ipairs(bossKills) do
if tonumber(bossKills[k][1]) > 0 then if tonumber(bossKills[k][1]) > 0 then
output = output .. bossKills[k][1] .. "\n" output = output .. bossKills[k][1] .. "\n"
end end
end end
return output return output
end end
--WEAKAURA 2 DISPLAY -- NM BOSSES --WEAKAURA 2 DISPLAY -- NM BOSSES
function() function()
local output = "" local output = ""
for k,v in ipairs(bossKills) do for k,v in ipairs(bossKills) do
if tonumber(bossKills[k][2]) > 0 then if tonumber(bossKills[k][2]) > 0 then
output = output .. bossKills[k][2] .. "\n" output = output .. bossKills[k][2] .. "\n"
end end
end end
return output return output
end end
--WEAKAURA 2 DISPLAY -- HC BOSSES --WEAKAURA 2 DISPLAY -- HC BOSSES
function() function()
local output = "" local output = ""
for k,v in ipairs(bossKills) do for k,v in ipairs(bossKills) do
if tonumber(bossKills[k][3]) > 0 then if tonumber(bossKills[k][3]) > 0 then
output = output .. bossKills[k][3] .. "\n" output = output .. bossKills[k][3] .. "\n"
end end
end end
return output return output
end end
--WEAKAURA 2 DISPLAY -- Myth BOSSES --WEAKAURA 2 DISPLAY -- Myth BOSSES
function() function()
local output = "" local output = ""
for k,v in ipairs(bossKills) do for k,v in ipairs(bossKills) do
if tonumber(bossKills[k][4]) > 0 then if tonumber(bossKills[k][4]) > 0 then
output = output .. bossKills[k][4] .. "\n" output = output .. bossKills[k][4] .. "\n"
end end
end end
return output return output
end end
--INIT --INIT
aura_env.TOS = aura_env.TOS =
{ {
{ --Goroth { --Goroth
11877, -- [1] 11877, -- [1]
11878, -- [2] 11878, -- [2]
11879, -- [3] 11879, -- [3]
11880, -- [4] 11880, -- [4]
}, -- [1] }, -- [1]
{ --Inquisition { --Inquisition
11881, -- [1] 11881, -- [1]
11882, -- [2] 11882, -- [2]
11883, -- [3] 11883, -- [3]
11884, -- [4] 11884, -- [4]
}, -- [2] }, -- [2]
{ --Harjatan { --Harjatan
11885, -- [1] 11885, -- [1]
11886, -- [2] 11886, -- [2]
11887, -- [3] 11887, -- [3]
11888, -- [4] 11888, -- [4]
}, -- [3] }, -- [3]
{ --Sisters { --Sisters
11889, -- [1] 11889, -- [1]
11890, -- [2] 11890, -- [2]
11891, -- [3] 11891, -- [3]
11892, -- [4] 11892, -- [4]
}, -- [4] }, -- [4]
{ --Mistress { --Mistress
11893, -- [1] 11893, -- [1]
11894, -- [2] 11894, -- [2]
11895, -- [3] 11895, -- [3]
11896, -- [4] 11896, -- [4]
}, -- [5] }, -- [5]
{ --Host { --Host
11897, -- [1] 11897, -- [1]
11898, -- [2] 11898, -- [2]
11899, -- [3] 11899, -- [3]
11900, -- [4] 11900, -- [4]
}, -- [6] }, -- [6]
{ --Maiden { --Maiden
11901, -- [1] 11901, -- [1]
11902, -- [2] 11902, -- [2]
11903, -- [3] 11903, -- [3]
11904, -- [4] 11904, -- [4]
}, -- [7] }, -- [7]
{ --Avatar { --Avatar
11905, -- [1] 11905, -- [1]
11906, -- [2] 11906, -- [2]
11907, -- [3] 11907, -- [3]
11908, -- [4] 11908, -- [4]
}, -- [8] }, -- [8]
{ --Kil'jaeden { --Kil'jaeden
11909, -- [1] 11909, -- [1]
11910, -- [2] 11910, -- [2]
11911, -- [3] 11911, -- [3]
11912, -- [4] 11912, -- [4]
}, -- [9] }, -- [9]
} }
aura_env.NH = aura_env.NH =
{ {
{ --Skorp { --Skorp
10940, -- [1] 10940, -- [1]
10941, -- [2] 10941, -- [2]
10942, -- [3] 10942, -- [3]
10943, -- [4] 10943, -- [4]
}, -- [1] }, -- [1]
{ --Anomaly { --Anomaly
10944, -- [1] 10944, -- [1]
10945, -- [2] 10945, -- [2]
10946, -- [3] 10946, -- [3]
10947, -- [4] 10947, -- [4]
}, -- [2] }, -- [2]
{ --Trilliax { --Trilliax
10948, -- [1] 10948, -- [1]
10949, -- [2] 10949, -- [2]
10950, -- [3] 10950, -- [3]
10951, -- [4] 10951, -- [4]
}, -- [3] }, -- [3]
{ --Aluriel { --Aluriel
10952, -- [1] 10952, -- [1]
10953, -- [2] 10953, -- [2]
10954, -- [3] 10954, -- [3]
10955, -- [4] 10955, -- [4]
}, -- [4] }, -- [4]
{ --Augur { --Augur
10956, -- [1] 10956, -- [1]
10957, -- [2] 10957, -- [2]
10959, -- [3] 10959, -- [3]
10960, -- [4] 10960, -- [4]
}, -- [5] }, -- [5]
{ --Botanist { --Botanist
10961, -- [1] 10961, -- [1]
10962, -- [2] 10962, -- [2]
10963, -- [3] 10963, -- [3]
10964, -- [4] 10964, -- [4]
}, -- [6] }, -- [6]
{ --Tich { --Tich
10965, -- [1] 10965, -- [1]
10966, -- [2] 10966, -- [2]
10967, -- [3] 10967, -- [3]
10968, -- [4] 10968, -- [4]
}, -- [7] }, -- [7]
{ --Krosus { --Krosus
10969, -- [1] 10969, -- [1]
10970, -- [2] 10970, -- [2]
10971, -- [3] 10971, -- [3]
10972, -- [4] 10972, -- [4]
}, -- [8] }, -- [8]
{ --Elisande { --Elisande
10973, -- [1] 10973, -- [1]
10974, -- [2] 10974, -- [2]
10975, -- [3] 10975, -- [3]
10976, -- [4] 10976, -- [4]
}, -- [9] }, -- [9]
{ --Gul'dan { --Gul'dan
10977, -- [1] 10977, -- [1]
10978, -- [2] 10978, -- [2]
10979, -- [3] 10979, -- [3]
10980, -- [4] 10980, -- [4]
}, -- [10] }, -- [10]
} }
aura_env.output = "" aura_env.output = ""

View File

@@ -1,9 +1,9 @@
function() function()
local seeds = 0 local seeds = 0
for i = 1, 100 do for i = 1, 100 do
if UnitDebuff("nameplate" .. i, "Seed of Corruption") then if UnitDebuff("nameplate" .. i, "Seed of Corruption") then
seeds = seeds + 1 seeds = seeds + 1
end end
end end
return seeds return seeds
end end

View File

@@ -1,14 +1,14 @@
-- CHAT_MSG_SYSTEM -- CHAT_MSG_SYSTEM
function(e, msg) function(e, msg)
if msg == nil then return false end if msg == nil then return false end
if string.find(msg, "You are now Away") then if string.find(msg, "You are now Away") then
aura_env.KickTime = time() + 30 * 60 aura_env.KickTime = time() + 30 * 60
aura_env.AfkSince = time() aura_env.AfkSince = time()
return true return true
end end
if string.find(msg, "You are no longer Away") then if string.find(msg, "You are no longer Away") then
aura_env.KickTime = 0 aura_env.KickTime = 0
aura_env.AfkSince = 0 aura_env.AfkSince = 0
return false return false
end end
end end

View File

@@ -1,16 +1,16 @@
-- TICKER_500 -- TICKER_500
function(e) function(e)
local timeToKick = aura_env.KickTime - time() local timeToKick = aura_env.KickTime - time()
if timeToKick > 0 and timeToKick < 10 * 60 then if timeToKick > 0 and timeToKick < 10 * 60 then
WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg") WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg")
-- SendChatMessage("QUACK", "WHISPER", nil, UnitName("player")) -- SendChatMessage("QUACK", "WHISPER", nil, UnitName("player"))
end end
local rewardClaimed = WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].claimed local rewardClaimed = WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].claimed
local onlineTime = WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].onlineTimeInMinutes local onlineTime = WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].onlineTimeInMinutes
if rewardClaimed == 0 and onlineTime >= 120 then if rewardClaimed == 0 and onlineTime >= 120 then
WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg") WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg")
end end
return aura_env.KickTime > 0 return aura_env.KickTime > 0
end end

View File

@@ -1,3 +1,3 @@
function(e) function(e)
return math.floor(time() - aura_env.AfkSince), math.floor(aura_env.KickTime - aura_env.AfkSince), 1 return math.floor(time() - aura_env.AfkSince), math.floor(aura_env.KickTime - aura_env.AfkSince), 1
end end

View File

@@ -1,6 +1,6 @@
aura_env.KickTime = 0 aura_env.KickTime = 0
aura_env.AfkSince = 0 aura_env.AfkSince = 0
WeakAurasSaved.Cyka.LoginInfo = { WeakAurasSaved.Cyka.LoginInfo = {
[Today] = WeakAurasSaved.Cyka.LoginInfo[Today] or {}, [Today] = WeakAurasSaved.Cyka.LoginInfo[Today] or {},
} }

View File

@@ -1,3 +1,3 @@
function(t) function(t)
return t[2] return t[2]
end end

View File

@@ -1,305 +1,305 @@
--QUEST_ACCEPTED QUEST_TURNED_IN --QUEST_ACCEPTED QUEST_TURNED_IN
function(e) function(e)
for k, v in ipairs(aura_env.questDatabase) do for k, v in ipairs(aura_env.questDatabase) do
if IsQuestFlaggedCompleted(v) == false then if IsQuestFlaggedCompleted(v) == false then
--print(aura_env.TESTCOMPLETION[k]) --print(aura_env.TESTCOMPLETION[k])
--if aura_env.TESTCOMPLETION[k] == false then --if aura_env.TESTCOMPLETION[k] == false then
--print(k, IsQuestFlaggedCompleted(v)) --print(k, IsQuestFlaggedCompleted(v))
if k < 36 or k > 37 then if k < 36 or k > 37 then
aura_env.currentQuest = k aura_env.currentQuest = k
break 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 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 --elseif (k == 36 and aura_env.TESTCOMPLETION[37] == true) or (k == 37 and aura_env.TESTCOMPLETION[36] == true) then
k = 38 k = 38
end end
end end
end end
--print(aura_env.currentQuest) --print(aura_env.currentQuest)
return true return true
end end
--DISPLAY --DISPLAY
function() function()
if aura_env.currentQuest < 89 then 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] 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 else
return "Progress: " .. aura_env.currentQuest .. "/" .. #aura_env.questDatabase .. "\nCurrent quest: " .. aura_env.questNames[aura_env.currentQuest] return "Progress: " .. aura_env.currentQuest .. "/" .. #aura_env.questDatabase .. "\nCurrent quest: " .. aura_env.questNames[aura_env.currentQuest]
end end
end end
--INIT --INIT
aura_env.currentQuest = 1 aura_env.currentQuest = 1
aura_env.questDatabase = { aura_env.questDatabase = {
[1] = 47835, [1] = 47835,
[2] = 47867, [2] = 47867,
[3] = 47223, [3] = 47223,
[4] = 47224, [4] = 47224,
[5] = 48440, [5] = 48440,
[6] = 46938, [6] = 46938,
[7] = 47589, [7] = 47589,
[8] = 46297, [8] = 46297,
[9] = 48483, [9] = 48483,
[10] = 47627, [10] = 47627,
[11] = 47641, [11] = 47641,
[12] = 46732, [12] = 46732,
[13] = 46816, [13] = 46816,
[14] = 46839, [14] = 46839,
[15] = 46840, [15] = 46840,
[16] = 46841, [16] = 46841,
[17] = 46842, [17] = 46842,
[18] = 46843, [18] = 46843,
[19] = 48500, [19] = 48500,
[20] = 47431, [20] = 47431,
[21] = 46213, [21] = 46213,
[22] = 40238, [22] = 40238,
[23] = 47541, [23] = 47541,
[24] = 47508, [24] = 47508,
[25] = 47771, [25] = 47771,
[26] = 47526, [26] = 47526,
[27] = 47754, [27] = 47754,
[28] = 47652, [28] = 47652,
[29] = 47653, [29] = 47653,
[30] = 47743, [30] = 47743,
[31] = 49143, [31] = 49143,
[32] = 47287, [32] = 47287,
[33] = 48559, [33] = 48559,
[34] = 48199, [34] = 48199,
[35] = 48200, [35] = 48200,
[36] = 48201, [36] = 48201,
[37] = 48202, [37] = 48202,
[38] = 47473, [38] = 47473,
[39] = 47889, [39] = 47889,
[40] = 47890, [40] = 47890,
[41] = 47891, [41] = 47891,
[42] = 47892, [42] = 47892,
[43] = 47986, [43] = 47986,
[44] = 47987, [44] = 47987,
[45] = 47988, [45] = 47988,
[46] = 47991, [46] = 47991,
[47] = 47990, [47] = 47990,
[48] = 47989, [48] = 47989,
[49] = 47992, [49] = 47992,
[50] = 47993, [50] = 47993,
[51] = 47994, [51] = 47994,
[52] = 48081, [52] = 48081,
[53] = 46815, [53] = 46815,
[54] = 46818, [54] = 46818,
[55] = 46834, [55] = 46834,
[56] = 47066, [56] = 47066,
[57] = 46941, [57] = 46941,
[58] = 47686, [58] = 47686,
[59] = 47882, [59] = 47882,
[60] = 47688, [60] = 47688,
[61] = 47883, [61] = 47883,
[62] = 47689, [62] = 47689,
[63] = 47685, [63] = 47685,
[64] = 47687, [64] = 47687,
[65] = 47690, [65] = 47690,
[66] = 48107, [66] = 48107,
[67] = 48461, [67] = 48461,
[68] = 48344, [68] = 48344,
[69] = 47691, [69] = 47691,
[70] = 47854, [70] = 47854,
[71] = 47995, [71] = 47995,
[72] = 47853, [72] = 47853,
[73] = 48345, [73] = 48345,
[74] = 47855, [74] = 47855,
[75] = 47856, [75] = 47856,
[76] = 47416, [76] = 47416,
[77] = 47238, [77] = 47238,
[78] = 40761, [78] = 40761,
[79] = 47101, [79] = 47101,
[80] = 47180, [80] = 47180,
[81] = 47100, [81] = 47100,
[82] = 47183, [82] = 47183,
[83] = 47184, [83] = 47184,
[84] = 47203, [84] = 47203,
[85] = 47217, [85] = 47217,
[86] = 47218, [86] = 47218,
[87] = 47219, [87] = 47219,
[88] = 47220, [88] = 47220,
[89] = 48560, [89] = 48560,
} }
aura_env.questNames = { aura_env.questNames = {
[1] = "The Hand of Fate", [1] = "The Hand of Fate",
[2] = "Two If By Sea", [2] = "Two If By Sea",
[3] = "Light's Exodus", [3] = "Light's Exodus",
[4] = "The Vindicaar", [4] = "The Vindicaar",
[5] = "Into the Night", [5] = "Into the Night",
[6] = "Alone in the Abyss", [6] = "Alone in the Abyss",
[7] = "Righteous Fury", [7] = "Righteous Fury",
[8] = "Overwhelming Power", [8] = "Overwhelming Power",
[9] = "A Stranger's Plea", [9] = "A Stranger's Plea",
[10] = "Vengeance", [10] = "Vengeance",
[11] = "Sign of Resistance", [11] = "Sign of Resistance",
[12] = "The Prophet's Gambit", [12] = "The Prophet's Gambit",
[13] = "Rendezvous", [13] = "Rendezvous",
[14] = "From Darkness", [14] = "From Darkness",
[15] = "Prisoners No More", [15] = "Prisoners No More",
[16] = "Threat Reduction", [16] = "Threat Reduction",
[17] = "A Strike at the Heart", [17] = "A Strike at the Heart",
[18] = "Return to the Vindicaar", [18] = "Return to the Vindicaar",
[19] = "A Moment of Respite", [19] = "A Moment of Respite",
[20] = "Gathering Light", [20] = "Gathering Light",
[21] = "Crystals Not Included", [21] = "Crystals Not Included",
[22] = "A Grim Equation", [22] = "A Grim Equation",
[23] = "The Best Prevention", [23] = "The Best Prevention",
[24] = "Fire at Will", [24] = "Fire at Will",
[25] = "Locating the Longshot", [25] = "Locating the Longshot",
[26] = "Bringing the Big Guns", [26] = "Bringing the Big Guns",
[27] = "Lightly Roasted", [27] = "Lightly Roasted",
[28] = "The Light Mother", [28] = "The Light Mother",
[29] = "Light's Return", [29] = "Light's Return",
[30] = "The Child of Light and Shadow", [30] = "The Child of Light and Shadow",
[31] = "Essence of the Light Mother", [31] = "Essence of the Light Mother",
[32] = "The Vindicaar Matrix Core", [32] = "The Vindicaar Matrix Core",
[33] = "An Offering of Light", [33] = "An Offering of Light",
[34] = "The Burning Heart", [34] = "The Burning Heart",
[35] = "Securing a Foothold", [35] = "Securing a Foothold",
[36] = "Reinforce Light's Purchase", [36] = "Reinforce Light's Purchase",
[37] = "Reinforce the Veiled Den", [37] = "Reinforce the Veiled Den",
[38] = "Sizing Up The Opposition", [38] = "Sizing Up The Opposition",
[39] = "The Speaker Calls", [39] = "The Speaker Calls",
[40] = "Visions of Torment", [40] = "Visions of Torment",
[41] = "Dire News", [41] = "Dire News",
[42] = "Storming the Citadel", [42] = "Storming the Citadel",
[43] = "Scars of the Past", [43] = "Scars of the Past",
[44] = "Preventive Measures", [44] = "Preventive Measures",
[45] = "Chaos Theory", [45] = "Chaos Theory",
[46] = "Dark Machinations", [46] = "Dark Machinations",
[47] = "A Touch of Fel", [47] = "A Touch of Fel",
[48] = "Heralds of Apocalypse", [48] = "Heralds of Apocalypse",
[49] = "Dawn of Justice", [49] = "Dawn of Justice",
[50] = "Lord of the Spire", [50] = "Lord of the Spire",
[51] = "Forming a Bond", [51] = "Forming a Bond",
[52] = "A Floating Ruin", [52] = "A Floating Ruin",
[53] = "Mac'Aree, Jewel of Argus", [53] = "Mac'Aree, Jewel of Argus",
[54] = "Defenseless and Afraid", [54] = "Defenseless and Afraid",
[55] = "Khazaduum, First of His Name", [55] = "Khazaduum, First of His Name",
[56] = "Consecrating Ground", [56] = "Consecrating Ground",
[57] = "The Path Forward", [57] = "The Path Forward",
[58] = "Not-So-Humble Beginnings", [58] = "Not-So-Humble Beginnings",
[59] = "Conservation of Magic", [59] = "Conservation of Magic",
[60] = "Invasive Species", [60] = "Invasive Species",
[61] = "The Longest Vigil", [61] = "The Longest Vigil",
[62] = "Gatekeeper's Challenge: Tenacity", [62] = "Gatekeeper's Challenge: Tenacity",
[63] = "Gatekeeper's Challenge: Cunning", [63] = "Gatekeeper's Challenge: Cunning",
[64] = "Gatekeeper's Challenge: Mastery", [64] = "Gatekeeper's Challenge: Mastery",
[65] = "The Defiler's Legacy", [65] = "The Defiler's Legacy",
[66] = "The Sigil of Awakening", [66] = "The Sigil of Awakening",
[67] = "Where They Least Expect It", [67] = "Where They Least Expect It",
[68] = "We Have a Problem", [68] = "We Have a Problem",
[69] = "A Non-Prophet Organization", [69] = "A Non-Prophet Organization",
[70] = "Wrath of the Hight Exarch", [70] = "Wrath of the Hight Exarch",
[71] = "Overt Ops", [71] = "Overt Ops",
[72] = "Flanking Maneuvers", [72] = "Flanking Maneuvers",
[73] = "Talgath's Forces", [73] = "Talgath's Forces",
[74] = "What Might Have Been", [74] = "What Might Have Been",
[75] = "Across the Universe", [75] = "Across the Universe",
[76] = "Shadow of the Triumvirate", [76] = "Shadow of the Triumvirate",
[77] = "The Seat of the Triumvirate", [77] = "The Seat of the Triumvirate",
[78] = "Whispers from Oronaar", [78] = "Whispers from Oronaar",
[79] = "Arkhaan's Prayers", [79] = "Arkhaan's Prayers",
[80] = "The Pulsing Madness", [80] = "The Pulsing Madness",
[81] = "Arkhaan's Pain", [81] = "Arkhaan's Pain",
[82] = "Arkhaan's Plan", [82] = "Arkhaan's Plan",
[83] = "Arkhaan's Peril", [83] = "Arkhaan's Peril",
[84] = "Throwing Shade", [84] = "Throwing Shade",
[85] = "Sources of Darkness", [85] = "Sources of Darkness",
[86] = "The Shadowguard Incursion", [86] = "The Shadowguard Incursion",
[87] = "A Vessel Made Ready", [87] = "A Vessel Made Ready",
[88] = "A Beacon in the Dark", [88] = "A Beacon in the Dark",
[89] = "An Offering of Shadow", [89] = "An Offering of Shadow",
} }
aura_env.TESTCOMPLETION = { aura_env.TESTCOMPLETION = {
[1] = true, [1] = true,
[2] = true, [2] = true,
[3] = true, [3] = true,
[4] = true, [4] = true,
[5] = true, [5] = true,
[6] = true, [6] = true,
[7] = true, [7] = true,
[8] = true, [8] = true,
[9] = true, [9] = true,
[10] = true, [10] = true,
[11] = true, [11] = true,
[12] = true, [12] = true,
[13] = true, [13] = true,
[14] = true, [14] = true,
[15] = true, [15] = true,
[16] = true, [16] = true,
[17] = true, [17] = true,
[18] = true, [18] = true,
[19] = true, [19] = true,
[20] = true, [20] = true,
[21] = true, [21] = true,
[22] = true, [22] = true,
[23] = true, [23] = true,
[24] = true, [24] = true,
[25] = true, [25] = true,
[26] = true, [26] = true,
[27] = true, [27] = true,
[28] = true, [28] = true,
[29] = true, [29] = true,
[30] = true, [30] = true,
[31] = true, [31] = true,
[32] = true, [32] = true,
[33] = true, [33] = true,
[34] = true, [34] = true,
[35] = true, [35] = true,
[36] = false, [36] = false,
[37] = true, [37] = true,
[38] = true, [38] = true,
[39] = true, [39] = true,
[40] = true, [40] = true,
[41] = true, [41] = true,
[42] = true, [42] = true,
[43] = true, [43] = true,
[44] = true, [44] = true,
[45] = true, [45] = true,
[46] = true, [46] = true,
[47] = true, [47] = true,
[48] = true, [48] = true,
[49] = false, [49] = false,
[50] = false, [50] = false,
[51] = false, [51] = false,
[52] = false, [52] = false,
[53] = false, [53] = false,
[54] = false, [54] = false,
[55] = false, [55] = false,
[56] = false, [56] = false,
[57] = false, [57] = false,
[58] = false, [58] = false,
[59] = false, [59] = false,
[60] = false, [60] = false,
[61] = false, [61] = false,
[62] = false, [62] = false,
[63] = false, [63] = false,
[64] = false, [64] = false,
[65] = false, [65] = false,
[66] = false, [66] = false,
[67] = false, [67] = false,
[68] = false, [68] = false,
[69] = false, [69] = false,
[70] = false, [70] = false,
[71] = false, [71] = false,
[72] = false, [72] = false,
[73] = false, [73] = false,
[74] = false, [74] = false,
[75] = false, [75] = false,
[76] = false, [76] = false,
[77] = false, [77] = false,
[78] = false, [78] = false,
[79] = false, [79] = false,
[80] = false, [80] = false,
[81] = false, [81] = false,
[82] = false, [82] = false,
[83] = false, [83] = false,
[84] = false, [84] = false,
[85] = false, [85] = false,
[86] = false, [86] = false,
[87] = false, [87] = false,
[88] = false, [88] = false,
[89] = false, [89] = false,
} }
WeakAuras.ScanEvents("QUEST_TURNED_IN") WeakAuras.ScanEvents("QUEST_TURNED_IN")

View File

@@ -1,26 +1,26 @@
--Display every frame for text --Display every frame for text
--Every frame --Every frame
function() function()
print(aura_env.peopleList[aura_env.currentInterrupt]) print(aura_env.peopleList[aura_env.currentInterrupt])
if aura_env.peopleList[aura_env.currentInterrupt] == UnitName("player") then if aura_env.peopleList[aura_env.currentInterrupt] == UnitName("player") then
if UnitCastingInfo("Belac") then if UnitCastingInfo("Belac") then
local sname = UnitCastingInfo("Belac") local sname = UnitCastingInfo("Belac")
if sname == "Phangs of Guilt" then if sname == "Phangs of Guilt" then
return "Interrupt it reeee" return "Interrupt it reeee"
end end
end end
if UnitDebuff("player", "Belac's Prisoner") or UnitIsDead("player") then --If is in cage 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.messages["Cannot Interrupt"]
local msg = aura_env.encode(msg) local msg = aura_env.encode(msg)
SendChatMessage(msg, "RAID") SendChatMessage(msg, "RAID")
aura_env.currentInterrupt = aura_env.currentInterrupt + 1 aura_env.currentInterrupt = aura_env.currentInterrupt + 1
end end
if GetTime() < aura_env.interruptTime then --If is on cooldown if GetTime() < aura_env.interruptTime then --If is on cooldown
local msg = aura_env.messages["Cannot Interrupt"] local msg = aura_env.messages["Cannot Interrupt"]
local msg = aura_env.encode(msg) local msg = aura_env.encode(msg)
SendChatMessage(msg, "RAID") SendChatMessage(msg, "RAID")
aura_env.currentInterrupt = aura_env.currentInterrupt + 1 aura_env.currentInterrupt = aura_env.currentInterrupt + 1
end end
return "You're next" return "You're next"
end end
end end

View File

@@ -1,40 +1,40 @@
aura_env.interruptTime = 0 aura_env.interruptTime = 0
aura_env.interruptCD = 24 aura_env.interruptCD = 24
aura_env.peopleList = {} aura_env.peopleList = {}
aura_env.currentInterrupt = 1 aura_env.currentInterrupt = 1
local playerClass = UnitClass("player") local playerClass = UnitClass("player")
if playerClass == "Hunter" then if playerClass == "Hunter" then
aura_env.classInterrupt = "Counter Shot" elseif aura_env.classInterrupt = "Counter Shot" elseif
playerClass == "Mage" then playerClass == "Mage" then
aura_env.classInterrupt = "Counterspell" elseif aura_env.classInterrupt = "Counterspell" elseif
playerClass == "Warlock" then playerClass == "Warlock" then
aura.classInterrupt = "Spell Lock" aura.classInterrupt = "Spell Lock"
end end
aura_env.messages = aura_env.messages =
{ {
["Interrupted"] = 9461, ["Interrupted"] = 9461,
["Cannot Interrupt"] = 9462, ["Cannot Interrupt"] = 9462,
["Initialized"] = 9451, ["Initialized"] = 9451,
["Added to interrupt list"], = 9452, ["Added to interrupt list"], = 9452,
["Cycle Interrupt DEBUG"] = 9551 ["Cycle Interrupt DEBUG"] = 9551
} }
aura_env.encode = function(msg) aura_env.encode = function(msg)
local date = date() 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 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 hr = localtime:match("(%d%d)")
local min = localtime:match("%d%d%p(%d%d)") local min = localtime:match("%d%d%p(%d%d)")
local retmsg = msg - (hr * min) local retmsg = msg - (hr * min)
retmsg = tostring(retmsg) retmsg = tostring(retmsg)
return retmsg return retmsg
end end
aura_env.decode = function(msg) aura_env.decode = function(msg)
local date = date() 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 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 hr = localtime:match("(%d%d)")
local min = localtime:match("%d%d%p(%d%d)") local min = localtime:match("%d%d%p(%d%d)")
tonumber(msg) tonumber(msg)
local retint = msg + (hr * min) local retint = msg + (hr * min)
return retint return retint
end end

View File

@@ -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]: 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]: 1 - UNIT_SPELLCAST_INTERRUPTED
[02:39 PM] [Virags DT]: 2 - player [02:39 PM] [Virags DT]: 2 - player
[02:39 PM] [Virags DT]: 3 - Flash of Light [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]: 5 - 3-5-1-0-19750-00000056B2
[02:39 PM] [Virags DT]: 6 - 19750 [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]: 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]: 1 - COMBAT_LOG_EVENT_UNFILTERED
[02:40 PM] [Virags DT]: 2 - 1549632949.728 [02:40 PM] [Virags DT]: 2 - 1549632949.728
[02:40 PM] [Virags DT]: 3 - SPELL_INTERRUPT [02:40 PM] [Virags DT]: 3 - SPELL_INTERRUPT
[02:40 PM] [Virags DT]: 4 - false [02:40 PM] [Virags DT]: 4 - false
[02:40 PM] [Virags DT]: 5 - Player-5-000AD3B6 [02:40 PM] [Virags DT]: 5 - Player-5-000AD3B6
[02:40 PM] [Virags DT]: 6 - Pinkiepiie [02:40 PM] [Virags DT]: 6 - Pinkiepiie
[02:40 PM] [Virags DT]: 7 - 1297 [02:40 PM] [Virags DT]: 7 - 1297
[02:40 PM] [Virags DT]: 8 - 0 [02:40 PM] [Virags DT]: 8 - 0
[02:40 PM] [Virags DT]: 9 - Player-5-000A70EF [02:40 PM] [Virags DT]: 9 - Player-5-000A70EF
[02:40 PM] [Virags DT]: 10 - Lilithiy [02:40 PM] [Virags DT]: 10 - Lilithiy
[02:40 PM] [Virags DT]: 11 - 66888 [02:40 PM] [Virags DT]: 11 - 66888
[02:40 PM] [Virags DT]: 12 - 0 [02:40 PM] [Virags DT]: 12 - 0
[02:40 PM] [Virags DT]: 13 - 96231 [02:40 PM] [Virags DT]: 13 - 96231
[02:40 PM] [Virags DT]: 14 - Rebuke [02:40 PM] [Virags DT]: 14 - Rebuke
[02:40 PM] [Virags DT]: 15 - 1 [02:40 PM] [Virags DT]: 15 - 1
[02:40 PM] [Virags DT]: 16 - 116 [02:40 PM] [Virags DT]: 16 - 116
[02:40 PM] [Virags DT]: 17 - Frostbolt [02:40 PM] [Virags DT]: 17 - Frostbolt
[02:40 PM] [Virags DT]: 18 - 16 [02:40 PM] [Virags DT]: 18 - 16

View File

@@ -1,18 +1,18 @@
--The interrupt detection trigger --The interrupt detection trigger
--COMBAT_LOG_EVENT_UNFILTERED --COMBAT_LOG_EVENT_UNFILTERED
function(...) function(...)
local subevent = select(3, ...) local subevent = select(3, ...)
if subevent == "SPELL_INTERRUPT" then if subevent == "SPELL_INTERRUPT" then
local playerName = select(6, ...) local playerName = select(6, ...)
local targetName = select(10, ...) local targetName = select(10, ...)
local spellName = select(14, ...) local spellName = select(14, ...)
local interruptedSpellName = select(17, ...) local interruptedSpellName = select(17, ...)
if playerName == UnitName("player") and targetName == "Belac" and and interruptedSpellName == "Phangs of Guilt" then if playerName == UnitName("player") and targetName == "Belac" and and interruptedSpellName == "Phangs of Guilt" then
local msg = aura_env.messages["Interrupted"] local msg = aura_env.messages["Interrupted"]
local msg = aura_env.encode(msg) local msg = aura_env.encode(msg)
SendChatMessage(msg, "RAID") SendChatMessage(msg, "RAID")
aura_env.currentInterrupt = aura_env.currentInterrupt + 1 aura_env.currentInterrupt = aura_env.currentInterrupt + 1
aura_env.interruptTime = GetTime() + aura_env.interruptCD aura_env.interruptTime = GetTime() + aura_env.interruptCD
end end
end end
end end

View File

@@ -1,40 +1,40 @@
--The encoding trigger --The encoding trigger
--CHAT_MSG_RAID, CHAT_MSG_RAID_LEADER --CHAT_MSG_RAID, CHAT_MSG_RAID_LEADER
function(_,msg,sender) function(_,msg,sender)
local sender = string.match(sender, "%a+") local sender = string.match(sender, "%a+")
local returnMessage = aura_env.decode(msg) local returnMessage = aura_env.decode(msg)
if returnMessage == aura_env.messages["Initialized"] then if returnMessage == aura_env.messages["Initialized"] then
local isfound = 0 local isfound = 0
for k,v in pairs(aura_env.peopleList) do for k,v in pairs(aura_env.peopleList) do
if v == UnitName("player") then if v == UnitName("player") then
isfound = 1 isfound = 1
break break
end end
end end
if isfound == 0 then if isfound == 0 then
aura_env.peopleList[#aura_env.peopleList + 1] = UnitName("player") aura_env.peopleList[#aura_env.peopleList + 1] = UnitName("player")
end end
local msg = aura_env.messages["Added to interrupt list"] local msg = aura_env.messages["Added to interrupt list"]
local msg = aura_env.encode(msg) local msg = aura_env.encode(msg)
SendChatMessage(msg, "RAID") SendChatMessage(msg, "RAID")
end end
if returnMessage == aura_env.messages["Added to interrupt list"] then if returnMessage == aura_env.messages["Added to interrupt list"] then
local isfound = 0 local isfound = 0
for k,v in pairs(aura_env.peopleList) do for k,v in pairs(aura_env.peopleList) do
if v == sender then if v == sender then
isfound = 1 isfound = 1
break break
end end
end end
if isfound == 0 then if isfound == 0 then
aura_env.peopleList[#aura_env.peopleList + 1] = sender aura_env.peopleList[#aura_env.peopleList + 1] = sender
end end
end end
if returnMessage == aura_env.messages["Interrupted"] then if returnMessage == aura_env.messages["Interrupted"] then
aura_env.currentInterrupt = aura_env.currentInterrupt + 1 aura_env.currentInterrupt = aura_env.currentInterrupt + 1
end end
if returnMessage == aura_env.messages["Cycle Interrupt DEBUG"] then if returnMessage == aura_env.messages["Cycle Interrupt DEBUG"] then
aura_env.currentInterrupt = aura_env.currentInterrupt + 1 aura_env.currentInterrupt = aura_env.currentInterrupt + 1
end end
return true return true
end end

View File

@@ -1,15 +1,15 @@
--Trigger for raid wide initialization --Trigger for raid wide initialization
--CHAT_MSG_WHISPER --CHAT_MSG_WHISPER
function(_,msg,sender) function(_,msg,sender)
local sender = string.match(sender, "%a+") local sender = string.match(sender, "%a+")
if sender == "Pinkiepiie" and msg == "init_the_thing_i_guess_101_?" then if sender == "Pinkiepiie" and msg == "init_the_thing_i_guess_101_?" then
local msg = aura_env.messages["Initialized"] local msg = aura_env.messages["Initialized"]
local msg = aura_env.encode(msg) local msg = aura_env.encode(msg)
SendChatMessage(msg, "RAID") SendChatMessage(msg, "RAID")
end end
if sender == "Pinkiepiie" and msg == "cycle_interrupt_debug" then if sender == "Pinkiepiie" and msg == "cycle_interrupt_debug" then
local msg = aura_env.messages["Cycle Interrupt DEBUG"] local msg = aura_env.messages["Cycle Interrupt DEBUG"]
local msg = aura_env.encode(msg) local msg = aura_env.encode(msg)
SendChatMessage(msg, "RAID") SendChatMessage(msg, "RAID")
end end
end end

View File

@@ -1,56 +1,56 @@
--make auto attack speed predictor thing please --make auto attack speed predictor thing please
--COMBAT_LOG_EVENT_UNFILTERED PLAYER_REGEN_DISABLED PLAYER_REGEN_ENABLED --COMBAT_LOG_EVENT_UNFILTERED PLAYER_REGEN_DISABLED PLAYER_REGEN_ENABLED
function(allstates, e, ...) function(allstates, e, ...)
if e == "COMBAT_LOG_EVENT_UNFILTERED" then if e == "COMBAT_LOG_EVENT_UNFILTERED" then
local time = debugprofilestop() local time = debugprofilestop()
local subevent = select(2, ...) local subevent = select(2, ...)
if subevent == "SWING_DAMAGE" or subevent == "SWING_MISSED" then if subevent == "SWING_DAMAGE" or subevent == "SWING_MISSED" then
local source = select(4, ...) local source = select(4, ...)
local destination = select(9, ...) local destination = select(9, ...)
if source == UnitGUID("target") and destination == UnitName("player") then if source == UnitGUID("target") and destination == UnitName("player") then
if #aura_env.swings == aura_env.lines * 2 then if #aura_env.swings == aura_env.lines * 2 then
for k,v in ipairs(aura_env.swings) do for k,v in ipairs(aura_env.swings) do
if k > 1 then if k > 1 then
aura_env.swings[k - 1] = v aura_env.swings[k - 1] = v
end end
end end
table.remove(aura_env.swings, (aura_env.lines * 2)) table.remove(aura_env.swings, (aura_env.lines * 2))
table.insert(aura_env.swings, time) table.insert(aura_env.swings, time)
else else
table.insert(aura_env.swings, time) table.insert(aura_env.swings, time)
end end
local avgTime = 0 local avgTime = 0
for k,v in ipairs(aura_env.swings) do for k,v in ipairs(aura_env.swings) do
if k > 1 then if k > 1 then
if avgTime == 0 then if avgTime == 0 then
avgTime = aura_env.swings[k] - aura_env.swings[k - 1] avgTime = aura_env.swings[k] - aura_env.swings[k - 1]
else else
avgTime = (avgTime + (aura_env.swings[k] - aura_env.swings[k - 1])) / 2 avgTime = (avgTime + (aura_env.swings[k] - aura_env.swings[k - 1])) / 2
end end
end end
end end
allstates[1] = { allstates[1] = {
show = true, show = true,
changed = true, changed = true,
progressType = "timed", progressType = "timed",
avgTime = string.format("%.2f", avgTime / 1000), avgTime = string.format("%.2f", avgTime / 1000),
expirationTime = GetTime() + (avgTime / 1000), expirationTime = GetTime() + (avgTime / 1000),
duration = avgTime / 1000, duration = avgTime / 1000,
} }
print("return true", allstates[1].expirationTime, allstates[1].duration) print("return true", allstates[1].expirationTime, allstates[1].duration)
return true return true
end end
end end
elseif e == "PLAYER_REGEN_DISABLED" or e == "PLAYER_REGEN_ENABLED" then elseif e == "PLAYER_REGEN_DISABLED" or e == "PLAYER_REGEN_ENABLED" then
aura_env.swings = {} aura_env.swings = {}
if allstates[1] then if allstates[1] then
allstates[1].show = false allstates[1].show = false
allstates[1].changed = true allstates[1].changed = true
end end
return true return true
end end
end end
--INIT --INIT
aura_env.swings = {} aura_env.swings = {}
aura_env.lines = 2 aura_env.lines = 2

View File

@@ -1,7 +1,7 @@
-- CHAT_MSG_LOOT -- CHAT_MSG_LOOT
function(allstates, e, msg) function(allstates, e, msg)
if msg:match("You receive loot") then if msg:match("You receive loot") then
DrawIcon(msg, allstates) DrawIcon(msg, allstates)
return true return true
end end
end end

View File

@@ -1,46 +1,46 @@
local iconDisplayDuration = 3 local iconDisplayDuration = 3
---@alias CItemInfo {name: string, icon: number, quantity: number, color: string} ---@alias CItemInfo {name: string, icon: number, quantity: number, color: string}
---@param msg string ---@param msg string
---@return CItemInfo, string | nil ---@return CItemInfo, string | nil
GetItemInfo = function(msg) GetItemInfo = function(msg)
local itemInfo = { name = "", icon = 134400, quantity = 0, color = "" } local itemInfo = { name = "", icon = 134400, quantity = 0, color = "" }
local name = msg:match("h%[(.+)%]") local name = msg:match("h%[(.+)%]")
if not name then return itemInfo, "No item name found" end if not name then return itemInfo, "No item name found" end
local quantity = msg:match("x(%d+)") or 1 local quantity = msg:match("x(%d+)") or 1
itemInfo.name = name itemInfo.name = name
itemInfo.quantity = quantity itemInfo.quantity = quantity
if WeakAurasSaved.Cyka.ItemCache[name] then itemInfo.icon = WeakAurasSaved.Cyka.ItemCache[name].icon end 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" local color = msg:match("cff(%w%w%w%w%w%w)") or "ffffff"
itemInfo.color = color itemInfo.color = color
return itemInfo, nil return itemInfo, nil
end end
---@param msg string ---@param msg string
---@param allstates allstates ---@param allstates allstates
DrawIcon = function(msg, allstates) DrawIcon = function(msg, allstates)
local info, err = GetItemInfo(msg) local info, err = GetItemInfo(msg)
if err then if err then
print(err) print(err)
return return
end end
local formattedName = "\124cff" .. info.color .. "[" .. info.name .. "]\124r x" .. info.quantity local formattedName = "\124cff" .. info.color .. "[" .. info.name .. "]\124r x" .. info.quantity
allstates[#aura_env.allstates + 1] = { allstates[#aura_env.allstates + 1] = {
show = true, show = true,
changed = true, changed = true,
index = GetTime(), index = GetTime(),
resort = true, resort = true,
icon = info.icon, icon = info.icon,
name = formattedName, name = formattedName,
progressType = "timed", progressType = "timed",
expirationTime = GetTime() + iconDisplayDuration, expirationTime = GetTime() + iconDisplayDuration,
duration = iconDisplayDuration, duration = iconDisplayDuration,
autoHide = true, autoHide = true,
} }
end end

View File

@@ -1,6 +1,6 @@
-- LOOT_READY -- LOOT_READY
function(e) function(e)
C_Timer.After(0.1, function() C_Timer.After(0.1, function()
WeakAuras.ScanEvents("DO_AUTOLOOT") WeakAuras.ScanEvents("DO_AUTOLOOT")
end) end)
end end

View File

@@ -1,6 +1,6 @@
-- DO_AUTOLOOT -- DO_AUTOLOOT
function(e) function(e)
local lootInfo = GetLootInfo() local lootInfo = GetLootInfo()
aura_env.FilterService.Run(lootInfo) aura_env.FilterService.Run(lootInfo)
CloseLoot() CloseLoot()
end end

View File

@@ -1,42 +1,42 @@
-- QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW -- QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW
function(e) function(e)
if e == "QUEST_POI_UPDATE" then if e == "QUEST_POI_UPDATE" then
CloseGossip() CloseGossip()
elseif e == "QUEST_DETAIL" then elseif e == "QUEST_DETAIL" then
AcceptQuest() AcceptQuest()
elseif e == "QUEST_COMPLETE" then elseif e == "QUEST_COMPLETE" then
if GetNumQuestChoices() <= 1 then if GetNumQuestChoices() <= 1 then
GetQuestReward(1) GetQuestReward(1)
end end
elseif e == "GOSSIP_SHOW" then elseif e == "GOSSIP_SHOW" then
local quests = GetNumGossipAvailableQuests() local quests = GetNumGossipAvailableQuests()
local completedQuests = GetNumGossipActiveQuests() local completedQuests = GetNumGossipActiveQuests()
local options = GetNumGossipOptions() local options = GetNumGossipOptions()
if completedQuests > 0 and options == 0 then if completedQuests > 0 and options == 0 then
for i = 1, completedQuests do for i = 1, completedQuests do
SelectGossipActiveQuest(i) SelectGossipActiveQuest(i)
end end
end end
if quests > 0 and options == 0 then if quests > 0 and options == 0 then
SelectGossipAvailableQuest(1) SelectGossipAvailableQuest(1)
end end
if options == 1 and quests + completedQuests == 0 then if options == 1 and quests + completedQuests == 0 then
SelectGossipOption(1) SelectGossipOption(1)
end end
elseif e == "QUEST_GREETING" then elseif e == "QUEST_GREETING" then
local quests = GetNumGossipAvailableQuests() local quests = GetNumGossipAvailableQuests()
local completedQuests = GetNumGossipActiveQuests() local completedQuests = GetNumGossipActiveQuests()
if completedQuests > 0 then if completedQuests > 0 then
for i = 1, completedQuests do for i = 1, completedQuests do
SelectActiveQuest(1) SelectActiveQuest(1)
end end
end end
if quests > 0 then if quests > 0 then
SelectAvailableQuest(1) SelectAvailableQuest(1)
end end
elseif e == "QUEST_PROGRESS" then elseif e == "QUEST_PROGRESS" then
if IsQuestCompletable(i) then if IsQuestCompletable(i) then
CompleteQuest() CompleteQuest()
end end
end end
end end

View File

@@ -1,15 +1,15 @@
-- MERCHANT_SHOW -- MERCHANT_SHOW
function(allstates, e) function(allstates, e)
if (GetMerchantNumItems() > 0) then if (GetMerchantNumItems() > 0) then
aura_env.allstates = allstates aura_env.allstates = allstates
if CanMerchantRepair() == true then RepairAllItems() end if CanMerchantRepair() == true then RepairAllItems() end
for container = 0, 4 do for container = 0, 4 do
for slot = 1, GetContainerNumSlots(container) do for slot = 1, GetContainerNumSlots(container) do
aura_env.FilterService.Run(container, slot) aura_env.FilterService.Run(container, slot)
end end
end end
return true return true
end end
end end

View File

@@ -1,259 +1,259 @@
local debug = false local debug = false
local iconDisplayDuration = 3 local iconDisplayDuration = 3
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getItemLink(container, slot) local function getItemLink(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local link = select(7, GetContainerItemInfo(container, slot)) local link = select(7, GetContainerItemInfo(container, slot))
if link == nil then return "", string.format("GetContainerItemInfo returned nil for link (arg 7)") end if link == nil then return "", string.format("GetContainerItemInfo returned nil for link (arg 7)") end
return link return link
end end
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getItemQuantity(container, slot) local function getItemQuantity(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local quantity = select(2, GetContainerItemInfo(container, slot)) local quantity = select(2, GetContainerItemInfo(container, slot))
if quantity == nil then return "", string.format("GetContainerItemInfo returned nil for quantity (arg 2)") end if quantity == nil then return "", string.format("GetContainerItemInfo returned nil for quantity (arg 2)") end
return quantity return quantity
end end
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getItemName(container, slot) local function getItemName(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local name = select(1, GetItemInfo(getItemLink(container, slot))) local name = select(1, GetItemInfo(getItemLink(container, slot)))
if name == nil then return "", string.format("GetItemInfo returned nil for name (arg 1)") end if name == nil then return "", string.format("GetItemInfo returned nil for name (arg 1)") end
return name return name
end end
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getItemType(container, slot) local function getItemType(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local type = select(6, GetItemInfo(getItemLink(container, slot))) local type = select(6, GetItemInfo(getItemLink(container, slot)))
if type == nil then return "", string.format("GetItemInfo returned nil for type (arg 6)") end if type == nil then return "", string.format("GetItemInfo returned nil for type (arg 6)") end
return type return type
end end
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getItemSubtype(container, slot) local function getItemSubtype(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local subtype = select(7, GetItemInfo(getItemLink(container, slot))) local subtype = select(7, GetItemInfo(getItemLink(container, slot)))
if subtype == nil then return "", string.format("GetItemInfo returned nil for subtype (arg 7)") end if subtype == nil then return "", string.format("GetItemInfo returned nil for subtype (arg 7)") end
return subtype return subtype
end end
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getItemLevel(container, slot) local function getItemLevel(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local level = select(4, GetItemInfo(getItemLink(container, slot))) local level = select(4, GetItemInfo(getItemLink(container, slot)))
if level == nil then return "", string.format("GetItemInfo returned nil for level (arg 4)") end if level == nil then return "", string.format("GetItemInfo returned nil for level (arg 4)") end
return level return level
end end
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getItemValue(container, slot) local function getItemValue(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local value = select(11, GetItemInfo(getItemLink(container, slot))) local value = select(11, GetItemInfo(getItemLink(container, slot)))
if value == nil then return "", string.format("GetItemInfo returned nil for value (arg 11)") end if value == nil then return "", string.format("GetItemInfo returned nil for value (arg 11)") end
return value return value
end end
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getItemQuality(container, slot) local function getItemQuality(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local quality = select(3, GetItemInfo(getItemLink(container, slot))) local quality = select(3, GetItemInfo(getItemLink(container, slot)))
if quality == nil then return "", string.format("GetItemInfo returned nil for quality (arg 3)") end if quality == nil then return "", string.format("GetItemInfo returned nil for quality (arg 3)") end
return quality return quality
end end
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getItemEquipLocation(container, slot) local function getItemEquipLocation(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local equipLoc = select(9, GetItemInfo(getItemLink(container, slot))) local equipLoc = select(9, GetItemInfo(getItemLink(container, slot)))
if equipLoc == nil then return "", string.format("GetItemInfo returned nil for equipLoc (arg 9)") end if equipLoc == nil then return "", string.format("GetItemInfo returned nil for equipLoc (arg 9)") end
return equipLoc return equipLoc
end end
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getItemIcon(container, slot) local function getItemIcon(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local icon = select(10, GetItemInfo(getItemLink(container, slot))) local icon = select(10, GetItemInfo(getItemLink(container, slot)))
if icon == nil then return "", string.format("GetItemInfo returned nil for icon (arg 10)") end if icon == nil then return "", string.format("GetItemInfo returned nil for icon (arg 10)") end
return icon return icon
end end
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return string, string|nil ---@return string, string|nil
local function getBindType(container, slot) local function getBindType(container, slot)
if container == nil then return "", string.format("Container is nil") end if container == nil then return "", string.format("Container is nil") end
if slot == nil then return "", string.format("Slot is nil") end if slot == nil then return "", string.format("Slot is nil") end
local bindType = select(14, GetItemInfo(getItemLink(container, slot))) local bindType = select(14, GetItemInfo(getItemLink(container, slot)))
if bindType == nil then return "", string.format("GetItemInfo returned nil for bindType (arg 14)") end if bindType == nil then return "", string.format("GetItemInfo returned nil for bindType (arg 14)") end
return bindType return bindType
end end
---@class Filter ---@class Filter
---@field requires table<string, fun(container:number, slot: number): string|number|boolean> | nil ---@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 ---@field filter fun(container: number, slot: number, provided: table<string, string|number|boolean>): boolean
Filter = { Filter = {
---@param requires table<string, fun(container:number, slot: number): string|number|boolean> | nil ---@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 ---@param filter fun(container: number, slot: number, provided: table<string, string|number|boolean>): boolean
---@return Filter ---@return Filter
new = function(requires, filter) new = function(requires, filter)
local self = setmetatable({}, { local self = setmetatable({}, {
__index = Filter, __index = Filter,
}) })
self.requires = requires self.requires = requires
self.filter = filter self.filter = filter
return self return self
end, end,
---@param self Filter ---@param self Filter
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return boolean, string|nil ---@return boolean, string|nil
Run = function(self, container, slot) Run = function(self, container, slot)
---@type table<string, string|number|boolean> ---@type table<string, string|number|boolean>
local provided = {} local provided = {}
if self.requires then if self.requires then
for k, v in pairs(self.requires) do for k, v in pairs(self.requires) do
local res, err = v(container, slot) local res, err = v(container, slot)
if err then if err then
if debug then print(err) end if debug then print(err) end
return false, err return false, err
end end
provided[k] = res provided[k] = res
end end
end end
local res, err = self.filter(container, slot, provided) local res, err = self.filter(container, slot, provided)
if err then if err then
if debug then print(err) end if debug then print(err) end
end end
return res, nil return res, nil
end, end,
} }
local grayFilter = Filter.new({ local grayFilter = Filter.new({
["quality"] = getItemQuality, ["quality"] = getItemQuality,
}, function(container, slot, provided) }, function(container, slot, provided)
if not aura_env.config.grayFilter then return false end if not aura_env.config.grayFilter then return false end
if provided.quality == 0 then return true end if provided.quality == 0 then return true end
return false return false
end) end)
local gearFilter = Filter.new({ local gearFilter = Filter.new({
["ilvl"] = getItemLevel, ["ilvl"] = getItemLevel,
["bindType"] = getBindType, ["bindType"] = getBindType,
["type"] = getItemType, ["type"] = getItemType,
["equipLoc"] = getItemEquipLocation, ["equipLoc"] = getItemEquipLocation,
}, function(container, slot, provided) }, function(container, slot, provided)
if not aura_env.config.gearFilter then return false end if not aura_env.config.gearFilter then return false end
local ilvlThreshold = aura_env.config.gearFilterIlvlFilterThreshold local ilvlThreshold = aura_env.config.gearFilterIlvlFilterThreshold
local sellBoe = aura_env.config.gearFilterSellBoe local sellBoe = aura_env.config.gearFilterSellBoe
if if
provided.type == "Armor" provided.type == "Armor"
or provided.type == "Weapon" or provided.type == "Weapon"
or provided.equipLoc == "INVTYPE_FINGER" or provided.equipLoc == "INVTYPE_FINGER"
or provided.equipLoc == "INVTYPE_TRINKET" or provided.equipLoc == "INVTYPE_TRINKET"
or provided.equipLoc == "INVTYPE_CLOAK" or provided.equipLoc == "INVTYPE_CLOAK"
or provided.equipLoc == "INVTYPE_NECK" or provided.equipLoc == "INVTYPE_NECK"
then then
if provided.ilvl < ilvlThreshold and (provided.bindType == 1 or sellBoe) then return true end if provided.ilvl < ilvlThreshold and (provided.bindType == 1 or sellBoe) then return true end
end end
return false return false
end) end)
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return nil, string|nil ---@return nil, string|nil
local function doSell(container, slot) local function doSell(container, slot)
local itemIcon, err = getItemIcon(container, slot) local itemIcon, err = getItemIcon(container, slot)
if err then return nil, string.format("Error getting item icon: %s", err) end if err then return nil, string.format("Error getting item icon: %s", err) end
local itemName, err = getItemName(container, slot) local itemName, err = getItemName(container, slot)
if err then return nil, string.format("Error getting item name: %s", err) end if err then return nil, string.format("Error getting item name: %s", err) end
local itemQuantity, err = getItemQuantity(container, slot) local itemQuantity, err = getItemQuantity(container, slot)
if err then return nil, string.format("Error getting item quantity: %s", err) end if err then return nil, string.format("Error getting item quantity: %s", err) end
local itemQuality, err = getItemQuality(container, slot) local itemQuality, err = getItemQuality(container, slot)
if err then return nil, string.format("Error getting item quality: %s", err) end 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 nameWithColor = string.format("%s[%s]\124r", aura_env.qualityColors[itemQuality + 1], itemName)
local nameWithQuantity = string.format("%s x%s", nameWithColor, itemQuantity) local nameWithQuantity = string.format("%s x%s", nameWithColor, itemQuantity)
aura_env.allstates[#aura_env.allstates + 1] = { aura_env.allstates[#aura_env.allstates + 1] = {
show = true, show = true,
changed = true, changed = true,
index = GetTime(), index = GetTime(),
resort = true, resort = true,
icon = itemIcon, icon = itemIcon,
name = nameWithQuantity, name = nameWithQuantity,
amount = itemQuantity, amount = itemQuantity,
progressType = "timed", progressType = "timed",
expirationTime = GetTime() + iconDisplayDuration, expirationTime = GetTime() + iconDisplayDuration,
duration = iconDisplayDuration, duration = iconDisplayDuration,
autoHide = true, autoHide = true,
} }
UseContainerItem(container, slot) UseContainerItem(container, slot)
return nil, nil return nil, nil
end end
---@type table<Filter> ---@type table<Filter>
local filters = { local filters = {
grayFilter, grayFilter,
gearFilter, gearFilter,
} }
---@class FilterService ---@class FilterService
aura_env.FilterService = { aura_env.FilterService = {
---@param container number ---@param container number
---@param slot number ---@param slot number
---@return nil, nil ---@return nil, nil
Run = function(container, slot) Run = function(container, slot)
local itemLink, err = getItemLink(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 if err then return nil, string.format("Err: slot empty (%d-%d) - %s", container, slot, err) end
for k, filter in pairs(filters) do for k, filter in pairs(filters) do
local res, err = filter:Run(container, slot) local res, err = filter:Run(container, slot)
if err then if err then
if debug then print(err) end if debug then print(err) end
else else
if res then if res then
doSell(container, slot) doSell(container, slot)
return return
end end
end end
end end
end, end,
} }
aura_env.qualityColors = { aura_env.qualityColors = {
"\124cff9d9d9d", -- Poor "\124cff9d9d9d", -- Poor
"\124cffffffff", -- Common "\124cffffffff", -- Common
"\124cff1eff00", -- Uncommon "\124cff1eff00", -- Uncommon
"\124cff0070dd", -- Rare "\124cff0070dd", -- Rare
"\124cffa335ee", -- Epic "\124cffa335ee", -- Epic
"\124cffff8000", -- Legendary "\124cffff8000", -- Legendary
"\124cffe6cc80", -- Artifact "\124cffe6cc80", -- Artifact
"\124cff00ccff", -- Heirloom "\124cff00ccff", -- Heirloom
} }

View File

@@ -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 --- 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) function(e)
local aura_env = aura_env local aura_env = aura_env
if e == "LOOT_READY" or e == "LOOT_OPENED" then --Auto Loot if e == "LOOT_READY" or e == "LOOT_OPENED" then --Auto Loot
local slot = 1 local slot = 1
local lootinfo = GetLootInfo() local lootinfo = GetLootInfo()
for k, v in pairs(lootinfo) do for k, v in pairs(lootinfo) do
if v.locked == false then if v.locked == false then
local link = GetLootSlotLink(slot) local link = GetLootSlotLink(slot)
local looted = false local looted = false
if not link then link = GetLootSlotLink(slot) end 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 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) LootSlot(slot)
elseif aura_env.filter[2] == true and link:match("Azerite") then elseif aura_env.filter[2] == true and link:match("Azerite") then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[3] == true and v.item:match("War Resources") then elseif aura_env.filter[3] == true and v.item:match("War Resources") then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[4] == true and v.item:match("Residuum") then elseif aura_env.filter[4] == true and v.item:match("Residuum") then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[5] == true and v.item:match("Manapearl") then elseif aura_env.filter[5] == true and v.item:match("Manapearl") then
LootSlot(slot) LootSlot(slot)
end end
if link then if link then
local icon = v.texture local icon = v.texture
local id = link:match("item:(%d+):") local id = link:match("item:(%d+):")
local type = select(6, GetItemInfo(link)) or "" local type = select(6, GetItemInfo(link)) or ""
local subtype = select(7, GetItemInfo(link)) or "" local subtype = select(7, GetItemInfo(link)) or ""
local ilvl = select(4, GetItemInfo(link)) or 0 local ilvl = select(4, GetItemInfo(link)) or 0
local equip = select(9, GetItemInfo(link)) local equip = select(9, GetItemInfo(link))
if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[14] == true and v.isQuestItem == true then elseif aura_env.filter[14] == true and v.isQuestItem == true then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[15] == true and v.quality == 0 then elseif aura_env.filter[15] == true and v.quality == 0 then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[21] == true and type == "Tradeskill" and subtype == "Elemental" then elseif aura_env.filter[21] == true and type == "Tradeskill" and subtype == "Elemental" then
LootSlot(slot) LootSlot(slot)
else else
if type == "Weapon" or type == "Armor" then 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 if aura_env.filter[18] == true and aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 and v.quality > 2 then
LootSlot(slot) 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 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) LootSlot(slot)
end end
elseif aura_env.filter[20] == true and type == "Miscellaneous" then elseif aura_env.filter[20] == true and type == "Miscellaneous" then
if subtype == "Mount" then if subtype == "Mount" then
LootSlot(slot) LootSlot(slot)
end end
end end
end end
end end
slot = slot + 1 slot = slot + 1
end end
end end
--CloseLoot() --CloseLoot()
elseif e == "EQUIP_BIND_CONFIRM" then elseif e == "EQUIP_BIND_CONFIRM" then
StaticPopup1Button1:Click() StaticPopup1Button1:Click()
elseif e == "SCRAPPING_MACHINE_SHOW" then elseif e == "SCRAPPING_MACHINE_SHOW" then
for i = 0, 4 do for i = 0, 4 do
for j = 1, GetContainerNumSlots(i) do for j = 1, GetContainerNumSlots(i) do
local link = select(7, GetContainerItemInfo(i, j)) local link = select(7, GetContainerItemInfo(i, j))
if link then if link then
local name = GetItemInfo(link) local name = GetItemInfo(link)
local rarity = select(3, GetItemInfo(link)) local rarity = select(3, GetItemInfo(link))
local ilvl = select(4, GetItemInfo(link)) or 0 local ilvl = select(4, GetItemInfo(link)) or 0
local type = select(6, GetItemInfo(link)) local type = select(6, GetItemInfo(link))
local equip = select(9, GetItemInfo(link)) or "" local equip = select(9, GetItemInfo(link)) or ""
local price = select(11, GetItemInfo(link)) local price = select(11, GetItemInfo(link))
if aura_env.sellWhitelist[name] ~= 1 then if aura_env.sellWhitelist[name] ~= 1 then
if name and rarity and ilvl and type and equip and price 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 if (type == "Armor" or type == "Weapon") and rarity <= 3 and aura_env.getequipID(equip) then
UseContainerItem(i, j) UseContainerItem(i, j)
elseif rarity > 3 and aura_env.getequipID(equip) then elseif rarity > 3 and aura_env.getequipID(equip) then
if equip ~= "INVTYPE_FINGER" then if equip ~= "INVTYPE_FINGER" then
local eqID = aura_env.getequipID(equip) local eqID = aura_env.getequipID(equip)
local elink = GetInventoryItemLink("player", eqID) local elink = GetInventoryItemLink("player", eqID)
local eilvl = select(4, GetItemInfo(elink)) or 0 local eilvl = select(4, GetItemInfo(elink)) or 0
if eilvl > ilvl + 5 then if eilvl > ilvl + 5 then
print("Scrapping " .. link .. "over " .. eilvl - ilvl .. " ilvl difference from " .. elink) print("Scrapping " .. link .. "over " .. eilvl - ilvl .. " ilvl difference from " .. elink)
UseContainerItem(i, j) UseContainerItem(i, j)
end end
elseif equip == "INVTYPE_FINGER" then elseif equip == "INVTYPE_FINGER" then
local eqID1, eqID2 = 11, 12 local eqID1, eqID2 = 11, 12
local elink1, elink2 = GetInventoryItemLink("player", eqID1), GetInventoryItemLink("player", eqID2) local elink1, elink2 = GetInventoryItemLink("player", eqID1), GetInventoryItemLink("player", eqID2)
local eilvl1, eilvl2 = select(4, GetItemInfo(elink1)) or 0, select(4, GetItemInfo(elink2)) or 0 local eilvl1, eilvl2 = select(4, GetItemInfo(elink1)) or 0, select(4, GetItemInfo(elink2)) or 0
if eilvl1 > ilvl + 5 then if eilvl1 > ilvl + 5 then
print("Scrapping " .. link .. " over " .. eilvl1 - ilvl .. " ilvl difference from " .. elink1) print("Scrapping " .. link .. " over " .. eilvl1 - ilvl .. " ilvl difference from " .. elink1)
UseContainerItem(i, j) UseContainerItem(i, j)
elseif eilvl2 > ilvl + 5 then elseif eilvl2 > ilvl + 5 then
print("Scrapping " .. link .. " over " .. eilvl2 - ilvl .. " ilvl difference from " .. elink2) print("Scrapping " .. link .. " over " .. eilvl2 - ilvl .. " ilvl difference from " .. elink2)
UseContainerItem(i, j) UseContainerItem(i, j)
end end
end end
end end
end end
end end
end end
end end
end end
elseif e == "MERCHANT_SHOW" then --Sell grey and white wepaon elseif e == "MERCHANT_SHOW" then --Sell grey and white wepaon
if CanMerchantRepair() == true then RepairAllItems() end if CanMerchantRepair() == true then RepairAllItems() end
local i, j = 0, 1 local i, j = 0, 1
for c = 0, 4 do for c = 0, 4 do
for s = 1, GetContainerNumSlots(c) do for s = 1, GetContainerNumSlots(c) do
local link = select(7, GetContainerItemInfo(c, s)) local link = select(7, GetContainerItemInfo(c, s))
if link then if link then
local name = GetItemInfo(link) local name = GetItemInfo(link)
local rarity = select(3, GetItemInfo(link)) local rarity = select(3, GetItemInfo(link))
local ilvl = select(4, GetItemInfo(link)) or 0 local ilvl = select(4, GetItemInfo(link)) or 0
local type = select(6, GetItemInfo(link)) local type = select(6, GetItemInfo(link))
local price = select(11, GetItemInfo(link)) local price = select(11, GetItemInfo(link))
if price and price > 0 then if price and price > 0 then
if aura_env.sellWhitelist[name] ~= 1 then if aura_env.sellWhitelist[name] ~= 1 then
if rarity == 0 then if rarity == 0 then
if aura_env.throttleSell == true then if aura_env.throttleSell == true then
aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s} aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s}
else else
UseContainerItem(c, s) UseContainerItem(c, s)
end end
elseif (type == "Armor" or type == "Weapon") and ilvl < 200 then elseif (type == "Armor" or type == "Weapon") and ilvl < 200 then
if aura_env.throttleSell == true then if aura_env.throttleSell == true then
aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s} aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s}
else else
UseContainerItem(c, s) UseContainerItem(c, s)
end end
end end
end end
end end
end end
end end
end end
if aura_env.throttleSell == true then if aura_env.throttleSell == true then
aura_env.ticker = C_Timer.NewTicker(0.05, function() aura_env.ticker = C_Timer.NewTicker(0.05, function()
if aura_env.toSell[1] then if aura_env.toSell[1] then
UseContainerItem(aura_env.toSell[1].c, aura_env.toSell[1].s) UseContainerItem(aura_env.toSell[1].c, aura_env.toSell[1].s)
table.remove(aura_env.toSell, 1) table.remove(aura_env.toSell, 1)
else else
aura_env.ticker:Cancel() aura_env.ticker:Cancel()
end end
if j >= GetContainerNumSlots(i) then i = i + 1 if j >= GetContainerNumSlots(i) then i = i + 1
j = 1 end j = 1 end
if i >= 4 then aura_env.ticker:Cancel() end if i >= 4 then aura_env.ticker:Cancel() end
end) end)
end end
elseif e == "MERCHANT_CLOSED" then elseif e == "MERCHANT_CLOSED" then
if aura_env.ticker then aura_env.ticker:Cancel() end if aura_env.ticker then aura_env.ticker:Cancel() end
aura_env.toSell = {} aura_env.toSell = {}
elseif e == "QUEST_POI_UPDATE" then elseif e == "QUEST_POI_UPDATE" then
CloseGossip() CloseGossip()
elseif e == "QUEST_DETAIL" then elseif e == "QUEST_DETAIL" then
AcceptQuest() AcceptQuest()
elseif e == "QUEST_COMPLETE" then elseif e == "QUEST_COMPLETE" then
if GetNumQuestChoices() <= 1 then if GetNumQuestChoices() <= 1 then
GetQuestReward(1) GetQuestReward(1)
end end
elseif e == "GOSSIP_SHOW" then elseif e == "GOSSIP_SHOW" then
local quests = GetNumGossipAvailableQuests() local quests = GetNumGossipAvailableQuests()
local complquests = GetNumGossipActiveQuests() local complquests = GetNumGossipActiveQuests()
local opt = GetNumGossipOptions() local opt = GetNumGossipOptions()
if complquests > 0 and opt == 0 then if complquests > 0 and opt == 0 then
for i = 1, complquests do for i = 1, complquests do
SelectGossipActiveQuest(i) SelectGossipActiveQuest(i)
end end
end end
if quests > 0 and opt == 0 then if quests > 0 and opt == 0 then
SelectGossipAvailableQuest(1) SelectGossipAvailableQuest(1)
end end
if opt == 1 and quests + complquests == 0 then if opt == 1 and quests + complquests == 0 then
SelectGossipOption(1) SelectGossipOption(1)
end end
elseif e == "QUEST_GREETING" then elseif e == "QUEST_GREETING" then
local quests = GetNumGossipAvailableQuests() local quests = GetNumGossipAvailableQuests()
local complquests = GetNumGossipActiveQuests() local complquests = GetNumGossipActiveQuests()
if complquests > 0 then if complquests > 0 then
for i = 1, complquests do for i = 1, complquests do
SelectActiveQuest(1) SelectActiveQuest(1)
end end
end end
if quests > 0 then if quests > 0 then
SelectAvailableQuest(1) SelectAvailableQuest(1)
end end
elseif e == "QUEST_PROGRESS" then elseif e == "QUEST_PROGRESS" then
if IsQuestCompletable(i) then if IsQuestCompletable(i) then
CompleteQuest() CompleteQuest()
end end
end end
end end

View File

@@ -1,394 +1,394 @@
aura_env.debug = true aura_env.debug = true
aura_env.filter = { aura_env.filter = {
[1] = true, --Gold [1] = true, --Gold
[2] = true, --Azerite [2] = true, --Azerite
[3] = true, --War resources [3] = true, --War resources
[4] = true, --Residuum [4] = true, --Residuum
[5] = true, --Manapearls [5] = true, --Manapearls
[6] = true, --Mounts [6] = true, --Mounts
[7] = true, --High ilvl [7] = true, --High ilvl
[8] = false, --Herbs [8] = false, --Herbs
[9] = true, --Cooking [9] = true, --Cooking
[10] = true, --Cloth [10] = true, --Cloth
[11] = false, --Metal & Stone [11] = false, --Metal & Stone
[12] = true, --Gold filter greys [12] = true, --Gold filter greys
[13] = true, -- >1 && <4 quality items, no gear [13] = true, -- >1 && <4 quality items, no gear
[14] = true, --Quest items [14] = true, --Quest items
[15] = true, --All greys [15] = true, --All greys
[16] = true, --Whitelist [16] = true, --Whitelist
[17] = true, --Quest items (different filter) [17] = true, --Quest items (different filter)
[18] = true, --Class aproperiate >2 items [18] = true, --Class aproperiate >2 items
[19] = true, --Jewelery >2 quality [19] = true, --Jewelery >2 quality
[20] = true, --Additional mount filter [20] = true, --Additional mount filter
[21] = true, --Tradeskill // Elemental [21] = true, --Tradeskill // Elemental
} }
aura_env.ilvlFilter = 200 aura_env.ilvlFilter = 200
aura_env.goldFilter = 0.5 aura_env.goldFilter = 0.5
aura_env.goldFilter = aura_env.goldFilter * 10000 aura_env.goldFilter = aura_env.goldFilter * 10000
aura_env.throttleSell = false aura_env.throttleSell = false
aura_env.whitelist = { aura_env.whitelist = {
["Pygmy Suckerfish"] = 1, ["Pygmy Suckerfish"] = 1,
["Drakkari Offerings"] = 1, ["Drakkari Offerings"] = 1,
["Deepcoral Pod"] = 1, ["Deepcoral Pod"] = 1,
["Hardened Spring"] = 1, ["Hardened Spring"] = 1,
["Machined Gear Assembly"] = 1, ["Machined Gear Assembly"] = 1,
["Tempered Plating"] = 1, ["Tempered Plating"] = 1,
["Hefty Glimmershell"] = 1, ["Hefty Glimmershell"] = 1,
["Fresh Meat"] = 1, ["Fresh Meat"] = 1,
["Wood"] = 1, ["Wood"] = 1,
["Gloom Dust"] = 1, ["Gloom Dust"] = 1,
["Veiled Crytal"] = 1, ["Veiled Crytal"] = 1,
["Coalescing Visions"] = 1, ["Coalescing Visions"] = 1,
["Echoes of Ny'alotha"] = 1, ["Echoes of Ny'alotha"] = 1,
["Corrupted Mementos"] = 1, ["Corrupted Mementos"] = 1,
["Blood of Sargeras"] = 1, ["Blood of Sargeras"] = 1,
["Primal Sargerite"] = 1, ["Primal Sargerite"] = 1,
["Chain Ignitercoil"] = 1, ["Chain Ignitercoil"] = 1,
["Galvanic Oscillator"] = 1, ["Galvanic Oscillator"] = 1,
["Corrupted Memento"] = 1, ["Corrupted Memento"] = 1,
} }
aura_env.sellWhitelist = { aura_env.sellWhitelist = {
["Blacksmith Hammer"] = 1, ["Blacksmith Hammer"] = 1,
["Endless Tincture of Renewed Combat"] = 1, ["Endless Tincture of Renewed Combat"] = 1,
["Mr. Munchykins"] = 1, ["Mr. Munchykins"] = 1,
["Arclight Spanner"] = 1, ["Arclight Spanner"] = 1,
["Runeblade of Baron Rivendare"] = 1, ["Runeblade of Baron Rivendare"] = 1,
} }
aura_env.toSell = {} aura_env.toSell = {}
aura_env.getequipID = function(equip) aura_env.getequipID = function(equip)
if equip == "INVTYPE_HEAD" then if equip == "INVTYPE_HEAD" then
return 1 return 1
elseif equip == "INVTYPE_NECK" then elseif equip == "INVTYPE_NECK" then
return 2 return 2
elseif equip == "INVTYPE_SHOULDER" then elseif equip == "INVTYPE_SHOULDER" then
return 3 return 3
elseif equip == "INVTYPE_BODY" then elseif equip == "INVTYPE_BODY" then
return 4 return 4
elseif equip == "INVTYPE_CHEST" or equip == "INVTYPE_ROBE" then elseif equip == "INVTYPE_CHEST" or equip == "INVTYPE_ROBE" then
return 5 return 5
elseif equip == "INVTYPE_WAIST" then elseif equip == "INVTYPE_WAIST" then
return 6 return 6
elseif equip == "INVTYPE_LEGS" then elseif equip == "INVTYPE_LEGS" then
return 7 return 7
elseif equip == "INVTYPE_FEET" then elseif equip == "INVTYPE_FEET" then
return 8 return 8
elseif equip == "INVTYPE_WRIST" then elseif equip == "INVTYPE_WRIST" then
return 9 return 9
elseif equip == "INVTYPE_HAND" then elseif equip == "INVTYPE_HAND" then
return 10 return 10
elseif equip == "INVTYPE_CLOAK" then elseif equip == "INVTYPE_CLOAK" then
return 15 return 15
elseif equip == "INVTYPE_WEAPON" or equip == "INVTYPE_WEAPONMAINHAND" or equip == "INVTYPE_2HWEAPON" then elseif equip == "INVTYPE_WEAPON" or equip == "INVTYPE_WEAPONMAINHAND" or equip == "INVTYPE_2HWEAPON" then
return 16 return 16
elseif equip == "INVTYPE_SHIELD" then elseif equip == "INVTYPE_SHIELD" then
return 17 return 17
else else
return nil return nil
end end
end end
aura_env.skills = { aura_env.skills = {
--Warrior --Warrior
[1] = { [1] = {
--Armor Skills --Armor Skills
["Cloth"] = 0, ["Cloth"] = 0,
["Leather"] = 0, ["Leather"] = 0,
["Mail"] = 0, ["Mail"] = 0,
["Plate"] = 1, ["Plate"] = 1,
["Shields"] = 1, ["Shields"] = 1,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 1, ["One-Handed Axes"] = 1,
["Two-Handed Axes"] = 1, ["Two-Handed Axes"] = 1,
["Bows"] = 1, ["Bows"] = 1,
["Guns"] = 1, ["Guns"] = 1,
["One-Handed Maces"] = 1, ["One-Handed Maces"] = 1,
["Two-Handed Maces"] = 1, ["Two-Handed Maces"] = 1,
["Polearms"] = 1, ["Polearms"] = 1,
["One-Handed Swords"] = 1, ["One-Handed Swords"] = 1,
["Two-Handed Swords"] = 1, ["Two-Handed Swords"] = 1,
["Warglaives"] = 1, ["Warglaives"] = 1,
["Staves"] = 1, ["Staves"] = 1,
["Fist Weapons"] = 1, ["Fist Weapons"] = 1,
["Daggers"] = 1, ["Daggers"] = 1,
["Crossbows"] = 1, ["Crossbows"] = 1,
["Wands"] = 0, ["Wands"] = 0,
}, },
--Paladin --Paladin
[2] = { [2] = {
--Armor Skills --Armor Skills
["Cloth"] = 0, ["Cloth"] = 0,
["Leather"] = 0, ["Leather"] = 0,
["Mail"] = 0, ["Mail"] = 0,
["Plate"] = 1, ["Plate"] = 1,
["Shields"] = 1, ["Shields"] = 1,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 1, ["One-Handed Axes"] = 1,
["Two-Handed Axes"] = 1, ["Two-Handed Axes"] = 1,
["Bows"] = 0, ["Bows"] = 0,
["Guns"] = 0, ["Guns"] = 0,
["One-Handed Maces"] = 1, ["One-Handed Maces"] = 1,
["Two-Handed Maces"] = 1, ["Two-Handed Maces"] = 1,
["Polearms"] = 1, ["Polearms"] = 1,
["One-Handed Swords"] = 1, ["One-Handed Swords"] = 1,
["Two-Handed Swords"] = 1, ["Two-Handed Swords"] = 1,
["Warglaives"] = 0, ["Warglaives"] = 0,
["Staves"] = 0, ["Staves"] = 0,
["Fist Weapons"] = 0, ["Fist Weapons"] = 0,
["Daggers"] = 0, ["Daggers"] = 0,
["Crossbows"] = 0, ["Crossbows"] = 0,
["Wands"] = 0, ["Wands"] = 0,
}, },
--Hunter --Hunter
[3] = { [3] = {
--Armor Skills --Armor Skills
["Cloth"] = 0, ["Cloth"] = 0,
["Leather"] = 0, ["Leather"] = 0,
["Mail"] = 1, ["Mail"] = 1,
["Plate"] = 0, ["Plate"] = 0,
["Shields"] = 0, ["Shields"] = 0,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 1, ["One-Handed Axes"] = 1,
["Two-Handed Axes"] = 1, ["Two-Handed Axes"] = 1,
["Bows"] = 1, ["Bows"] = 1,
["Guns"] = 1, ["Guns"] = 1,
["One-Handed Maces"] = 0, ["One-Handed Maces"] = 0,
["Two-Handed Maces"] = 0, ["Two-Handed Maces"] = 0,
["Polearms"] = 1, ["Polearms"] = 1,
["One-Handed Swords"] = 1, ["One-Handed Swords"] = 1,
["Two-Handed Swords"] = 1, ["Two-Handed Swords"] = 1,
["Warglaives"] = 0, ["Warglaives"] = 0,
["Staves"] = 1, ["Staves"] = 1,
["Fist Weapons"] = 1, ["Fist Weapons"] = 1,
["Daggers"] = 1, ["Daggers"] = 1,
["Crossbows"] = 1, ["Crossbows"] = 1,
["Wands"] = 0, ["Wands"] = 0,
}, },
--Rogue --Rogue
[4] = { [4] = {
--Armor Skills --Armor Skills
["Cloth"] = 0, ["Cloth"] = 0,
["Leather"] = 1, ["Leather"] = 1,
["Mail"] = 0, ["Mail"] = 0,
["Plate"] = 0, ["Plate"] = 0,
["Shields"] = 0, ["Shields"] = 0,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 1, ["One-Handed Axes"] = 1,
["Two-Handed Axes"] = 0, ["Two-Handed Axes"] = 0,
["Bows"] = 0, ["Bows"] = 0,
["Guns"] = 0, ["Guns"] = 0,
["One-Handed Maces"] = 1, ["One-Handed Maces"] = 1,
["Two-Handed Maces"] = 0, ["Two-Handed Maces"] = 0,
["Polearms"] = 0, ["Polearms"] = 0,
["One-Handed Swords"] = 1, ["One-Handed Swords"] = 1,
["Two-Handed Swords"] = 0, ["Two-Handed Swords"] = 0,
["Warglaives"] = 0, ["Warglaives"] = 0,
["Staves"] = 0, ["Staves"] = 0,
["Fist Weapons"] = 1, ["Fist Weapons"] = 1,
["Daggers"] = 1, ["Daggers"] = 1,
["Crossbows"] = 0, ["Crossbows"] = 0,
["Wands"] = 0, ["Wands"] = 0,
}, },
--Priest --Priest
[5] = { [5] = {
--Armor Skills --Armor Skills
["Cloth"] = 1, ["Cloth"] = 1,
["Leather"] = 0, ["Leather"] = 0,
["Mail"] = 0, ["Mail"] = 0,
["Plate"] = 0, ["Plate"] = 0,
["Shields"] = 0, ["Shields"] = 0,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 0, ["One-Handed Axes"] = 0,
["Two-Handed Axes"] = 0, ["Two-Handed Axes"] = 0,
["Bows"] = 0, ["Bows"] = 0,
["Guns"] = 0, ["Guns"] = 0,
["One-Handed Maces"] = 1, ["One-Handed Maces"] = 1,
["Two-Handed Maces"] = 0, ["Two-Handed Maces"] = 0,
["Polearms"] = 0, ["Polearms"] = 0,
["One-Handed Swords"] = 0, ["One-Handed Swords"] = 0,
["Two-Handed Swords"] = 0, ["Two-Handed Swords"] = 0,
["Warglaives"] = 0, ["Warglaives"] = 0,
["Staves"] = 1, ["Staves"] = 1,
["Fist Weapons"] = 0, ["Fist Weapons"] = 0,
["Daggers"] = 1, ["Daggers"] = 1,
["Crossbows"] = 0, ["Crossbows"] = 0,
["Wands"] = 1, ["Wands"] = 1,
}, },
--Death Knight --Death Knight
[6] = { [6] = {
--Armor Skills --Armor Skills
["Cloth"] = 0, ["Cloth"] = 0,
["Leather"] = 0, ["Leather"] = 0,
["Mail"] = 0, ["Mail"] = 0,
["Plate"] = 1, ["Plate"] = 1,
["Shields"] = 0, ["Shields"] = 0,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 1, ["One-Handed Axes"] = 1,
["Two-Handed Axes"] = 1, ["Two-Handed Axes"] = 1,
["Bows"] = 0, ["Bows"] = 0,
["Guns"] = 0, ["Guns"] = 0,
["One-Handed Maces"] = 1, ["One-Handed Maces"] = 1,
["Two-Handed Maces"] = 1, ["Two-Handed Maces"] = 1,
["Polearms"] = 1, ["Polearms"] = 1,
["One-Handed Swords"] = 1, ["One-Handed Swords"] = 1,
["Two-Handed Swords"] = 1, ["Two-Handed Swords"] = 1,
["Warglaives"] = 0, ["Warglaives"] = 0,
["Staves"] = 0, ["Staves"] = 0,
["Fist Weapons"] = 0, ["Fist Weapons"] = 0,
["Daggers"] = 0, ["Daggers"] = 0,
["Crossbows"] = 0, ["Crossbows"] = 0,
["Wands"] = 0, ["Wands"] = 0,
}, },
--Shaman --Shaman
[7] = { [7] = {
--Armor Skills --Armor Skills
["Cloth"] = 0, ["Cloth"] = 0,
["Leather"] = 0, ["Leather"] = 0,
["Mail"] = 1, ["Mail"] = 1,
["Plate"] = 0, ["Plate"] = 0,
["Shields"] = 1, ["Shields"] = 1,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 1, ["One-Handed Axes"] = 1,
["Two-Handed Axes"] = 0, ["Two-Handed Axes"] = 0,
["Bows"] = 0, ["Bows"] = 0,
["Guns"] = 0, ["Guns"] = 0,
["One-Handed Maces"] = 1, ["One-Handed Maces"] = 1,
["Two-Handed Maces"] = 0, ["Two-Handed Maces"] = 0,
["Polearms"] = 0, ["Polearms"] = 0,
["One-Handed Swords"] = 0, ["One-Handed Swords"] = 0,
["Two-Handed Swords"] = 0, ["Two-Handed Swords"] = 0,
["Warglaives"] = 0, ["Warglaives"] = 0,
["Staves"] = 1, ["Staves"] = 1,
["Fist Weapons"] = 1, ["Fist Weapons"] = 1,
["Daggers"] = 1, ["Daggers"] = 1,
["Crossbows"] = 0, ["Crossbows"] = 0,
["Wands"] = 0, ["Wands"] = 0,
}, },
--Mage --Mage
[8] = { [8] = {
--Armor Skills --Armor Skills
["Cloth"] = 1, ["Cloth"] = 1,
["Leather"] = 0, ["Leather"] = 0,
["Mail"] = 0, ["Mail"] = 0,
["Plate"] = 0, ["Plate"] = 0,
["Shields"] = 0, ["Shields"] = 0,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 0, ["One-Handed Axes"] = 0,
["Two-Handed Axes"] = 0, ["Two-Handed Axes"] = 0,
["Bows"] = 0, ["Bows"] = 0,
["Guns"] = 0, ["Guns"] = 0,
["One-Handed Maces"] = 0, ["One-Handed Maces"] = 0,
["Two-Handed Maces"] = 0, ["Two-Handed Maces"] = 0,
["Polearms"] = 0, ["Polearms"] = 0,
["One-Handed Swords"] = 1, ["One-Handed Swords"] = 1,
["Two-Handed Swords"] = 0, ["Two-Handed Swords"] = 0,
["Warglaives"] = 0, ["Warglaives"] = 0,
["Staves"] = 1, ["Staves"] = 1,
["Fist Weapons"] = 0, ["Fist Weapons"] = 0,
["Daggers"] = 1, ["Daggers"] = 1,
["Crossbows"] = 0, ["Crossbows"] = 0,
["Wands"] = 1, ["Wands"] = 1,
}, },
--Warlock --Warlock
[9] = { [9] = {
--Armor Skills --Armor Skills
["Cloth"] = 1, ["Cloth"] = 1,
["Leather"] = 0, ["Leather"] = 0,
["Mail"] = 0, ["Mail"] = 0,
["Plate"] = 0, ["Plate"] = 0,
["Shields"] = 0, ["Shields"] = 0,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 0, ["One-Handed Axes"] = 0,
["Two-Handed Axes"] = 0, ["Two-Handed Axes"] = 0,
["Bows"] = 0, ["Bows"] = 0,
["Guns"] = 0, ["Guns"] = 0,
["One-Handed Maces"] = 0, ["One-Handed Maces"] = 0,
["Two-Handed Maces"] = 0, ["Two-Handed Maces"] = 0,
["Polearms"] = 0, ["Polearms"] = 0,
["One-Handed Swords"] = 1, ["One-Handed Swords"] = 1,
["Two-Handed Swords"] = 0, ["Two-Handed Swords"] = 0,
["Warglaives"] = 0, ["Warglaives"] = 0,
["Staves"] = 1, ["Staves"] = 1,
["Fist Weapons"] = 0, ["Fist Weapons"] = 0,
["Daggers"] = 1, ["Daggers"] = 1,
["Crossbows"] = 0, ["Crossbows"] = 0,
["Wands"] = 1, ["Wands"] = 1,
}, },
--Monk --Monk
[10] = { [10] = {
--Armor Skills --Armor Skills
["Cloth"] = 0, ["Cloth"] = 0,
["Leather"] = 1, ["Leather"] = 1,
["Mail"] = 0, ["Mail"] = 0,
["Plate"] = 1, ["Plate"] = 1,
["Shields"] = 1, ["Shields"] = 1,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 1, ["One-Handed Axes"] = 1,
["Two-Handed Axes"] = 0, ["Two-Handed Axes"] = 0,
["Bows"] = 0, ["Bows"] = 0,
["Guns"] = 0, ["Guns"] = 0,
["One-Handed Maces"] = 1, ["One-Handed Maces"] = 1,
["Two-Handed Maces"] = 0, ["Two-Handed Maces"] = 0,
["Polearms"] = 1, ["Polearms"] = 1,
["One-Handed Swords"] = 1, ["One-Handed Swords"] = 1,
["Two-Handed Swords"] = 0, ["Two-Handed Swords"] = 0,
["Warglaives"] = 0, ["Warglaives"] = 0,
["Staves"] = 1, ["Staves"] = 1,
["Fist Weapons"] = 1, ["Fist Weapons"] = 1,
["Daggers"] = 0, ["Daggers"] = 0,
["Crossbows"] = 0, ["Crossbows"] = 0,
["Wands"] = 0, ["Wands"] = 0,
}, },
--Druid --Druid
[11] = { [11] = {
--Armor Skills --Armor Skills
["Cloth"] = 0, ["Cloth"] = 0,
["Leather"] = 1, ["Leather"] = 1,
["Mail"] = 0, ["Mail"] = 0,
["Plate"] = 0, ["Plate"] = 0,
["Shields"] = 0, ["Shields"] = 0,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 0, ["One-Handed Axes"] = 0,
["Two-Handed Axes"] = 0, ["Two-Handed Axes"] = 0,
["Bows"] = 0, ["Bows"] = 0,
["Guns"] = 0, ["Guns"] = 0,
["One-Handed Maces"] = 1, ["One-Handed Maces"] = 1,
["Two-Handed Maces"] = 0, ["Two-Handed Maces"] = 0,
["Polearms"] = 1, ["Polearms"] = 1,
["One-Handed Swords"] = 0, ["One-Handed Swords"] = 0,
["Two-Handed Swords"] = 0, ["Two-Handed Swords"] = 0,
["Warglaives"] = 0, ["Warglaives"] = 0,
["Staves"] = 1, ["Staves"] = 1,
["Fist Weapons"] = 1, ["Fist Weapons"] = 1,
["Daggers"] = 1, ["Daggers"] = 1,
["Crossbows"] = 0, ["Crossbows"] = 0,
["Wands"] = 0, ["Wands"] = 0,
}, },
--Demon Hunter --Demon Hunter
[12] = { [12] = {
--Armor Skills --Armor Skills
["Cloth"] = 0, ["Cloth"] = 0,
["Leather"] = 1, ["Leather"] = 1,
["Mail"] = 0, ["Mail"] = 0,
["Plate"] = 0, ["Plate"] = 0,
["Shields"] = 0, ["Shields"] = 0,
--Weapon Skills --Weapon Skills
["One-Handed Axes"] = 1, ["One-Handed Axes"] = 1,
["Two-Handed Axes"] = 0, ["Two-Handed Axes"] = 0,
["Bows"] = 0, ["Bows"] = 0,
["Guns"] = 0, ["Guns"] = 0,
["One-Handed Maces"] = 0, ["One-Handed Maces"] = 0,
["Two-Handed Maces"] = 0, ["Two-Handed Maces"] = 0,
["Polearms"] = 0, ["Polearms"] = 0,
["One-Handed Swords"] = 1, ["One-Handed Swords"] = 1,
["Two-Handed Swords"] = 0, ["Two-Handed Swords"] = 0,
["Warglaives"] = 1, ["Warglaives"] = 1,
["Staves"] = 0, ["Staves"] = 0,
["Fist Weapons"] = 1, ["Fist Weapons"] = 1,
["Daggers"] = 0, ["Daggers"] = 0,
["Crossbows"] = 0, ["Crossbows"] = 0,
["Wands"] = 0, ["Wands"] = 0,
}, },
} }

View File

@@ -1,69 +1,69 @@
-- LOOT_READY LOOT_OPENED -- LOOT_READY LOOT_OPENED
function(e, ...) function(e, ...)
local slot = 1 local slot = 1
local lootinfo = GetLootInfo() local lootinfo = GetLootInfo()
for k, v in pairs(lootinfo) do for k, v in pairs(lootinfo) do
if v.locked == false then if v.locked == false then
local link = GetLootSlotLink(slot) local link = GetLootSlotLink(slot)
if not link then link = GetLootSlotLink(slot) end 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 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) LootSlot(slot)
elseif aura_env.filter[2] == true and link:match("Azerite") then elseif aura_env.filter[2] == true and link:match("Azerite") then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[3] == true and v.item:match("War Resources") then elseif aura_env.filter[3] == true and v.item:match("War Resources") then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[4] == true and v.item:match("Residuum") then elseif aura_env.filter[4] == true and v.item:match("Residuum") then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[5] == true and v.item:match("Manapearl") then elseif aura_env.filter[5] == true and v.item:match("Manapearl") then
LootSlot(slot) LootSlot(slot)
end end
if link then if link then
local type = select(6, GetItemInfo(link)) or "" local type = select(6, GetItemInfo(link)) or ""
local subtype = select(7, GetItemInfo(link)) or "" local subtype = select(7, GetItemInfo(link)) or ""
local ilvl = select(4, GetItemInfo(link)) or 0 local ilvl = select(4, GetItemInfo(link)) or 0
local equip = select(9, GetItemInfo(link)) local equip = select(9, GetItemInfo(link))
if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[14] == true and v.isQuestItem == true then elseif aura_env.filter[14] == true and v.isQuestItem == true then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[15] == true and v.quality == 0 then elseif aura_env.filter[15] == true and v.quality == 0 then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then
LootSlot(slot) LootSlot(slot)
elseif aura_env.filter[21] == true and type == "Tradeskill" and subtype == "Elemental" then elseif aura_env.filter[21] == true and type == "Tradeskill" and subtype == "Elemental" then
LootSlot(slot) LootSlot(slot)
else else
if type == "Weapon" or type == "Armor" then 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 if aura_env.filter[18] == true and aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 and v.quality > 2 then
LootSlot(slot) 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 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) LootSlot(slot)
end end
elseif aura_env.filter[20] == true and type == "Miscellaneous" then elseif aura_env.filter[20] == true and type == "Miscellaneous" then
if subtype == "Mount" then if subtype == "Mount" then
LootSlot(slot) LootSlot(slot)
end end
end end
end end
end end
slot = slot + 1 slot = slot + 1
end end
end end
end end

View File

@@ -1,40 +1,40 @@
--DISPLAY --DISPLAY
function() function()
return aura_env.output return aura_env.output
end end
--Try SPELL_RESSURECT -- RESSURECT event?? --Try SPELL_RESSURECT -- RESSURECT event??
--UNIT_HEALTH --UNIT_HEALTH
function() function()
local healthP = 0 local healthP = 0
local aliveMembers = GetNumGroupMembers() local aliveMembers = GetNumGroupMembers()
if IsInRaid("player") == true then if IsInRaid("player") == true then
for i = 1, GetNumGroupMembers() do for i = 1, GetNumGroupMembers() do
if UnitIsDeadOrGhost("raid" .. i) == false and UnitIsConnected("raid" .. i) == true then if UnitIsDeadOrGhost("raid" .. i) == false and UnitIsConnected("raid" .. i) == true then
healthP = healthP + math.floor(UnitHealth("raid" .. i) / UnitHealthMax("raid" .. i) * 10000) / 100 healthP = healthP + math.floor(UnitHealth("raid" .. i) / UnitHealthMax("raid" .. i) * 10000) / 100
end end
if UnitIsDeadOrGhost("raid" .. i) == true or UnitIsConnected("raid" .. i) == false then if UnitIsDeadOrGhost("raid" .. i) == true or UnitIsConnected("raid" .. i) == false then
aliveMembers = aliveMembers - 1 aliveMembers = aliveMembers - 1
end end
end end
else else
for i = 1, GetNumGroupMembers() - 1 do for i = 1, GetNumGroupMembers() - 1 do
if UnitIsDeadOrGhost("party" .. i) == false and UnitIsConnected("party" .. i) == true then if UnitIsDeadOrGhost("party" .. i) == false and UnitIsConnected("party" .. i) == true then
healthP = healthP + math.floor(UnitHealth("party" .. i) / UnitHealthMax("party" .. i) * 10000) / 100 healthP = healthP + math.floor(UnitHealth("party" .. i) / UnitHealthMax("party" .. i) * 10000) / 100
end end
if UnitIsDeadOrGhost("party" .. i) == true or UnitIsConnected("party" .. i) == false then if UnitIsDeadOrGhost("party" .. i) == true or UnitIsConnected("party" .. i) == false then
aliveMembers = aliveMembers - 1 aliveMembers = aliveMembers - 1
end end
end end
if UnitIsDeadOrGhost("player") == false and UnitIsConnected("player") == true then if UnitIsDeadOrGhost("player") == false and UnitIsConnected("player") == true then
healthP = healthP + math.floor(UnitHealth("player") / UnitHealthMax("player") * 10000) / 100 healthP = healthP + math.floor(UnitHealth("player") / UnitHealthMax("player") * 10000) / 100
end end
if UnitIsDeadOrGhost("player") == true or UnitIsConnected("player") == false then if UnitIsDeadOrGhost("player") == true or UnitIsConnected("player") == false then
aliveMembers = aliveMembers - 1 aliveMembers = aliveMembers - 1
end end
end end
aura_env.output = math.floor(healthP / aliveMembers * 100) / 100 .. "%%" aura_env.output = math.floor(healthP / aliveMembers * 100) / 100 .. "%%"
end end
--INIT --INIT
aura_env.output = 0 aura_env.output = 0

View File

@@ -1,4 +1,4 @@
-- BAG_UPDATE -- BAG_UPDATE
function(e) function(e)
aura_env.update() aura_env.update()
end end

View File

@@ -1,23 +1,23 @@
local function getItemLink(container, slot) return select(7, GetContainerItemInfo(container, slot)) or "" 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 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 function isBoe(container, slot) return getBindType(container, slot) == 1 end
local showGlow = function(container, slot) local showGlow = function(container, slot)
ActionButton_ShowOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) ActionButton_ShowOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot])
end end
local hideGlow = function(container, slot) local hideGlow = function(container, slot)
ActionButton_HideOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) ActionButton_HideOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot])
end end
aura_env.update = function() aura_env.update = function()
for container = 0, 4 do for container = 0, 4 do
for slot = 1, GetContainerNumSlots(container) do for slot = 1, GetContainerNumSlots(container) do
print(C_Item.IsBound(ItemLocation:CreateFromBagAndSlot(container, slot))) print(C_Item.IsBound(ItemLocation:CreateFromBagAndSlot(container, slot)))
if isBoe(container, slot) then if isBoe(container, slot) then
showGlow(container, slot) showGlow(container, slot)
else else
hideGlow(container, slot) hideGlow(container, slot)
end end
end end
end end
end end

View File

@@ -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 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 cTip = CreateFrame("GameTooltip","PrivTooltip",nil,"GameTooltipTemplate")
local function IsSoulbound(bag, slot) local function IsSoulbound(bag, slot)
cTip:SetOwner(UIParent, "ANCHOR_NONE") cTip:SetOwner(UIParent, "ANCHOR_NONE")
cTip:SetBagItem(bag, slot) cTip:SetBagItem(bag, slot)
cTip:Show() cTip:Show()
for i = 1,cTip:NumLines() do for i = 1,cTip:NumLines() do
if(_G[name.."TooltipTextLeft"..i]:GetText()==ITEM_SOULBOUND) then if(_G[name.."TooltipTextLeft"..i]:GetText()==ITEM_SOULBOUND) then
cTip:Hide() cTip:Hide()
return true return true
end end
end end
cTip:Hide() cTip:Hide()
return false return false
end end
Some guy says this is good Some guy says this is good

View File

@@ -1,3 +1,3 @@
function() function()
return BattlepassInfo.currentDayOnlineTimeMinutes, 120, 1 return BattlepassInfo.currentDayOnlineTimeMinutes, 120, 1
end end

View File

@@ -1,4 +1,4 @@
--- TICKER_10000 --- TICKER_10000
function() function()
BattlepassInfo() BattlepassInfo()
end end

View File

@@ -1,109 +1,109 @@
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
if not WeakAurasSaved.Cyka.LoginInfo then WeakAurasSaved.Cyka.LoginInfo = {} end if not WeakAurasSaved.Cyka.LoginInfo then WeakAurasSaved.Cyka.LoginInfo = {} end
Today = date("%Y-%m-%d") Today = date("%Y-%m-%d")
if not WeakAurasSaved.Cyka.LoginInfo[Today] then WeakAurasSaved.Cyka.LoginInfo[Today] = {} end if not WeakAurasSaved.Cyka.LoginInfo[Today] then WeakAurasSaved.Cyka.LoginInfo[Today] = {} end
if not WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")] then if not WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")] then
WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")] = { WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")] = {
onlineTimeInMinutes = 0, onlineTimeInMinutes = 0,
claimed = 0, claimed = 0,
} }
end end
local greenColor = "|cff00ff00" local greenColor = "|cff00ff00"
local noColor = "|r" local noColor = "|r"
BattlepassAccountInfo = "" BattlepassAccountInfo = ""
local function UpdateAccountInfo() local function UpdateAccountInfo()
local ret = {} local ret = {}
for char, info in pairs(WeakAurasSaved.Cyka.LoginInfo[Today]) do for char, info in pairs(WeakAurasSaved.Cyka.LoginInfo[Today]) do
if info.claimed == 1 then if info.claimed == 1 then
char = string.format("%s%s %d%s", greenColor, char, info.onlineTimeInMinutes, noColor) char = string.format("%s%s %d%s", greenColor, char, info.onlineTimeInMinutes, noColor)
else else
char = string.format("%s %d", char, info.onlineTimeInMinutes) char = string.format("%s %d", char, info.onlineTimeInMinutes)
end end
ret[#ret + 1] = char ret[#ret + 1] = char
end end
BattlepassAccountInfo = table.concat(ret, "\n") BattlepassAccountInfo = table.concat(ret, "\n")
end end
-- [02:37 PM] Bluepotato -- [02:37 PM] Bluepotato
-- [02:37 PM] onlineTimeInMinutes=120, -- [02:37 PM] onlineTimeInMinutes=120,
-- [02:37 PM] claimed=1 -- [02:37 PM] claimed=1
-- [02:37 PM] Smolpotato -- [02:37 PM] Smolpotato
-- [02:37 PM] onlineTimeInMinutes=120, -- [02:37 PM] onlineTimeInMinutes=120,
-- [02:37 PM] claimed=1 -- [02:37 PM] claimed=1
-- [02:37 PM] Thiccpotato -- [02:37 PM] Thiccpotato
-- [02:37 PM] onlineTimeInMinutes=57, -- [02:37 PM] onlineTimeInMinutes=57,
-- [02:37 PM] claimed=0 -- [02:37 PM] claimed=0
---@param input string ---@param input string
---@param deliminer string ---@param deliminer string
---@return table<string> ---@return table<string>
aura_env.Split = function(input, deliminer) aura_env.Split = function(input, deliminer)
local ret = {} local ret = {}
for str in string.gmatch(input, "([^" .. deliminer .. "]+)") do for str in string.gmatch(input, "([^" .. deliminer .. "]+)") do
table.insert(ret, str) table.insert(ret, str)
end end
return ret return ret
end end
---@class BattlepassInfo ---@class BattlepassInfo
---@field week number ---@field week number
---@field getRew number ---@field getRew number
---@field dayRewardComplete number ---@field dayRewardComplete number
---@field lostDay number ---@field lostDay number
---@field cost number ---@field cost number
---@field currentDayOnlineTimeMinutes number ---@field currentDayOnlineTimeMinutes number
---@field currentDayOnlineTimeMilliseconds number ---@field currentDayOnlineTimeMilliseconds number
BattlepassInfo = { BattlepassInfo = {
PingApi = function() PingApi = function()
SendAddonMessage("UIMSG_TO_SERVER", "UIMSG_GET_ONLINETIME_DAY" .. "\t", "WHISPER", UnitName("player")) SendAddonMessage("UIMSG_TO_SERVER", "UIMSG_GET_ONLINETIME_DAY" .. "\t", "WHISPER", UnitName("player"))
end, end,
ParseApi = function(msg) ParseApi = function(msg)
local packets = aura_env.Split(msg, ":") local packets = aura_env.Split(msg, ":")
if packets[1] ~= "UISMSG_EVT_WEEK_TIME" then return end if packets[1] ~= "UISMSG_EVT_WEEK_TIME" then return end
BattlepassInfo.currentDayOnlineTimeMilliseconds = tonumber(packets[2]) BattlepassInfo.currentDayOnlineTimeMilliseconds = tonumber(packets[2])
BattlepassInfo.week = tonumber(packets[3]) + 1 BattlepassInfo.week = tonumber(packets[3]) + 1
BattlepassInfo.getRew = tonumber(packets[4]) BattlepassInfo.getRew = tonumber(packets[4])
BattlepassInfo.dayRewardComplete = tonumber(packets[5]) BattlepassInfo.dayRewardComplete = tonumber(packets[5])
BattlepassInfo.lostDay = tonumber(packets[6]) BattlepassInfo.lostDay = tonumber(packets[6])
BattlepassInfo.cost = tonumber(packets[7]) BattlepassInfo.cost = tonumber(packets[7])
BattlepassInfo.currentDayOnlineTimeMinutes = math.floor(BattlepassInfo.currentDayOnlineTimeMilliseconds / 60000) BattlepassInfo.currentDayOnlineTimeMinutes = math.floor(BattlepassInfo.currentDayOnlineTimeMilliseconds / 60000)
WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].onlineTimeInMinutes = WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].onlineTimeInMinutes =
BattlepassInfo.currentDayOnlineTimeMinutes BattlepassInfo.currentDayOnlineTimeMinutes
WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].claimed = BattlepassInfo.dayRewardComplete WeakAurasSaved.Cyka.LoginInfo[Today][UnitName("player")].claimed = BattlepassInfo.dayRewardComplete
if BattlepassInfo.dayRewardComplete == 0 and BattlepassInfo.currentDayOnlineTimeMinutes >= 120 then if BattlepassInfo.dayRewardComplete == 0 and BattlepassInfo.currentDayOnlineTimeMinutes >= 120 then
BattlepassInfo.DoClaim() BattlepassInfo.DoClaim()
C_Timer.After(0.2, function() BattlepassInfo.PingApi() end) C_Timer.After(0.2, function() BattlepassInfo.PingApi() end)
end end
UpdateAccountInfo() UpdateAccountInfo()
end, end,
DoClaim = function() DoClaim = function()
SendAddonMessage("UIMSG_TO_SERVER", "UIMSG_WEEKLY_REW_GET" .. "\t", "WHISPER", UnitName("player")) SendAddonMessage("UIMSG_TO_SERVER", "UIMSG_WEEKLY_REW_GET" .. "\t", "WHISPER", UnitName("player"))
WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg") WeakAuras.ScanEvents("PLAY_SOUND", "Interface\\Sounds\\quack.ogg")
SendChatMessage("YEEE", "WHISPER", nil, UnitName("player")) SendChatMessage("YEEE", "WHISPER", nil, UnitName("player"))
end, end,
} }
setmetatable(BattlepassInfo, { setmetatable(BattlepassInfo, {
__call = BattlepassInfo.PingApi, __call = BattlepassInfo.PingApi,
__index = BattlepassInfo, __index = BattlepassInfo,
__tostring = function() __tostring = function()
local ret = {} local ret = {}
for k, v in pairs(BattlepassInfo) do for k, v in pairs(BattlepassInfo) do
table.insert(ret, k .. ": " .. tostring(v)) table.insert(ret, k .. ": " .. tostring(v))
end end
return table.concat(ret, "\n") return table.concat(ret, "\n")
end, end,
}) })
for k, v in pairs(BattlepassInfo) do for k, v in pairs(BattlepassInfo) do
if type(v) == "number" then BattlepassInfo[k] = 0 end if type(v) == "number" then BattlepassInfo[k] = 0 end
end end
BattlepassInfo() BattlepassInfo()
-- Claiming rewards works fine -- Claiming rewards works fine
-- But the bar does not hide once rewards are claimed -- But the bar does not hide once rewards are claimed

View File

@@ -1,29 +1,29 @@
-- DISPLAY -- DISPLAY
function aa() function aa()
if UnitDebuff("focus", "Paralytic Poison") then -- application for stun if UnitDebuff("focus", "Paralytic Poison") then -- application for stun
local stacks = select(4, UnitDebuff("focus", "Paralytic Poison")) local stacks = select(4, UnitDebuff("focus", "Paralytic Poison"))
return stacks return stacks
end end
if UnitDebuff("focus", "Partial Paralysis") then return "ROOT'D" end if UnitDebuff("focus", "Partial Paralysis") then return "ROOT'D" end
if UnitDebuff("focus", "Paralysis") then return "PLS HELP" end if UnitDebuff("focus", "Paralysis") then return "PLS HELP" end
end end
-- TRIGGER -- TRIGGER
function bb() function bb()
if if
UnitDebuff("focus", "Paralytic Poison") UnitDebuff("focus", "Paralytic Poison")
or UnitDebuff("focus", "Partial Paralysis") or UnitDebuff("focus", "Partial Paralysis")
or UnitDebuff("focus", "Paralysis") or UnitDebuff("focus", "Paralysis")
then -- application for stun then -- application for stun
return true return true
end end
end end
-- UNTRIGGER -- UNTRIGGER
function cc() function cc()
if if
UnitDebuff("focus", "Paralytic Poison") == nil UnitDebuff("focus", "Paralytic Poison") == nil
and UnitDebuff("focus", "Partial Paralysis") == nil and UnitDebuff("focus", "Partial Paralysis") == nil
and UnitDebuff("focus", "Paralysis") == nil and UnitDebuff("focus", "Paralysis") == nil
then -- application for stun then -- application for stun
return true return true
end end
end end

View File

@@ -1,40 +1,40 @@
COMBAT_LOG_EVENT_UNFILTERED COMBAT_LOG_EVENT_UNFILTERED
function(...) function(...)
local subevent = select(3, ...) local subevent = select(3, ...)
local target = select(10, ...) local target = select(10, ...)
if subevent == "SWING_DAMAGE" and target == UnitName("player") then if subevent == "SWING_DAMAGE" and target == UnitName("player") then
local dmg = select(13, ...) local dmg = select(13, ...)
local block = select(17, ...) or 0 local block = select(17, ...) or 0
if block > 0 then if block > 0 then
aura_env.overallBlock = aura_env.overallBlock + block aura_env.overallBlock = aura_env.overallBlock + block
end end
end end
end end
DISPLAY DISPLAY
function() function()
local function shorten(val) local function shorten(val)
local function round(var, n) local function round(var, n)
if (n) then if (n) then
var = math.floor((var * 10^n) + 0.5) / (10^n) var = math.floor((var * 10^n) + 0.5) / (10^n)
else else
var = math.floor(var+0.5) var = math.floor(var+0.5)
end end
return var return var
end end
local n = 2 local n = 2
if val < 1e3 then if val < 1e3 then
return round(val, n) return round(val, n)
elseif val > 1e3 and val < 1e6 then elseif val > 1e3 and val < 1e6 then
return round(val / 1e3, n) .. "k" return round(val / 1e3, n) .. "k"
elseif val > 1e6 and val < 1e9 then elseif val > 1e6 and val < 1e9 then
return round(val / 1e6, n) .. "M" return round(val / 1e6, n) .. "M"
elseif val > 1e9 then elseif val > 1e9 then
return round(val / 1e9, n) .. "G" return round(val / 1e9, n) .. "G"
end end
end end
return shorten(aura_env.overallBlock) return shorten(aura_env.overallBlock)
end end
INIT INIT
aura_env.overallBlock = 0 aura_env.overallBlock = 0

View File

@@ -1,17 +1,17 @@
LOOT_OPENED LOOT_OPENED
function() function()
aura_env.lootTime = math.floor(GetTime()) + 300 aura_env.lootTime = math.floor(GetTime()) + 300
end end
DISPLAY DISPLAY
function() function()
local currentTime = math.floor(GetTime()) local currentTime = math.floor(GetTime())
if currentTime > aura_env.lootTime and aura_env.lootTime > 0 then if currentTime > aura_env.lootTime and aura_env.lootTime > 0 then
return "FISHING BOAT MOTHERFUCKERS" return "FISHING BOAT MOTHERFUCKERS"
else else
return aura_env.lootTime - currentTime return aura_env.lootTime - currentTime
end end
end end
INTI INTI
aura_env.lootTime = 0 aura_env.lootTime = 0

View File

@@ -1,275 +1,275 @@
--TODO: FIX THE FUCKING THING --TODO: FIX THE FUCKING THING
--I had no idea what I was doing lol --I had no idea what I was doing lol
TRIGGER FOR HP TRIGGER FOR HP
function() function()
local bossList = local bossList =
{ {
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold "Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH "Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS "Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT "Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA "Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV "Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
"Ymiron", "Harbaron", "Helya", --MoS "Ymiron", "Harbaron", "Helya", --MoS
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL "Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway "Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW "Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
} }
local output = "" local output = ""
for i = 1, 40 do for i = 1, 40 do
for j = 1, table.getn(bossList) do for j = 1, table.getn(bossList) do
--if UnitName("nameplate" .. i) == bossList[j] then --if UnitName("nameplate" .. i) == bossList[j] then
if UnitExists("nameplate" .. i) then if UnitExists("nameplate" .. i) then
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
return true return true
end end
end end
end end
end end
end end
TRIGGER FOR POWER TRIGGER FOR POWER
function() function()
local bossList = local bossList =
{ {
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold "Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH "Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS "Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT "Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA "Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV "Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
"Ymiron", "Harbaron", "Helya", --MoS "Ymiron", "Harbaron", "Helya", --MoS
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL "Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway "Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW "Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
} }
for i = 1, 40 do for i = 1, 40 do
for j = 1, table.getn(bossList) do for j = 1, table.getn(bossList) do
--if UnitName("nameplate" .. i) == bossList[j] then --if UnitName("nameplate" .. i) == bossList[j] then
if UnitExists("nameplate" .. i) then if UnitExists("nameplate" .. i) then
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
if UnitPower("nameplate" .. i) > 0 then if UnitPower("nameplate" .. i) > 0 then
return true return true
end end
end end
end end
end end
end end
end end
TRIGGER FOR CASTBAR TRIGGER FOR CASTBAR
function() function()
local bossList = local bossList =
{ {
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold "Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH "Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS "Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT "Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA "Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV "Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
"Ymiron", "Harbaron", "Helya", --MoS "Ymiron", "Harbaron", "Helya", --MoS
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL "Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway "Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW "Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
} }
local output = "" local output = ""
for i = 1, 40 do for i = 1, 40 do
for j = 1, table.getn(bossList) do for j = 1, table.getn(bossList) do
if UnitExists("nameplate" .. i) then if UnitExists("nameplate" .. i) then
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
if UnitCastingInfo("nameplate" .. i) then if UnitCastingInfo("nameplate" .. i) then
return true return true
end end
end end
end end
end end
end end
end end
DISPLAY FOR HP DISPLAY FOR HP
function() function()
local bossList = local bossList =
{ {
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold "Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH "Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS "Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT "Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA "Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV "Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
"Ymiron", "Harbaron", "Helya", --MoS "Ymiron", "Harbaron", "Helya", --MoS
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL "Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway "Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW "Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
} }
local output = "" local output = ""
for i = 1, 40 do for i = 1, 40 do
for j = 1, table.getn(bossList) do for j = 1, table.getn(bossList) do
--if UnitName("nameplate" .. i) == bossList[j] then --if UnitName("nameplate" .. i) == bossList[j] then
if UnitExists("nameplate" .. i) then if UnitExists("nameplate" .. i) then
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
aura_env.bossHp = UnitHealth("nameplate" .. i) aura_env.bossHp = UnitHealth("nameplate" .. i)
aura_env.bossMaxHp = UnitHealthMax("nameplate" .. i) aura_env.bossMaxHp = UnitHealthMax("nameplate" .. i)
aura_env.bossPer = math.floor((aura_env.bossHp / aura_env.bossMaxHp) * 100) 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 .. "%%" output = math.floor(aura_env.bossHp / 1e6) .. "M%/" .. math.floor(aura_env.bossMaxHp / 1e6) .. "M - " .. aura_env.bossPer .. "%%"
break break
end end
end end
end end
end end
return output return output
end end
DISPLAY FOR POWER DISPLAY FOR POWER
function() function()
local bossList = local bossList =
{ {
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold "Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH "Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS "Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT "Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA "Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV "Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
"Ymiron", "Harbaron", "Helya", --MoS "Ymiron", "Harbaron", "Helya", --MoS
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL "Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway "Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW "Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
} }
local output = "" local output = ""
for i = 1, 40 do for i = 1, 40 do
for j = 1, table.getn(bossList) do for j = 1, table.getn(bossList) do
--if UnitName("nameplate" .. i) == bossList[j] then --if UnitName("nameplate" .. i) == bossList[j] then
if UnitExists("nameplate" .. i) then if UnitExists("nameplate" .. i) then
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
if UnitPower("nameplate" .. i) > 0 then if UnitPower("nameplate" .. i) > 0 then
aura_env.bossPower = UnitPower("nameplate" .. i) aura_env.bossPower = UnitPower("nameplate" .. i)
aura_env.bossPowerMax = UnitPowerMax("nameplate" .. i) aura_env.bossPowerMax = UnitPowerMax("nameplate" .. i)
aura_env.bossPer = math.floor((aura_env.bossPower / aura_env.bossPowerMax) * 100) aura_env.bossPer = math.floor((aura_env.bossPower / aura_env.bossPowerMax) * 100)
output = aura_env.bossPower .. "%/" .. aura_env.bossPowerMax .. " " .. aura_env.bossPer .. "%%" output = aura_env.bossPower .. "%/" .. aura_env.bossPowerMax .. " " .. aura_env.bossPer .. "%%"
break break
end end
end end
end end
end end
end end
return output return output
end end
DISPLAY FOR CASTBAR DISPLAY FOR CASTBAR
function() function()
local bossList = local bossList =
{ {
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold "Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH "Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS "Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT "Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA "Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV "Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
"Ymiron", "Harbaron", "Helya", --MoS "Ymiron", "Harbaron", "Helya", --MoS
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL "Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway "Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW "Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
} }
local output = "" local output = ""
for i = 1, 40 do for i = 1, 40 do
for j = 1, table.getn(bossList) do for j = 1, table.getn(bossList) do
if UnitExists("nameplate" .. i) then if UnitExists("nameplate" .. i) then
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
if UnitCastingInfo("nameplate" .. i) then if UnitCastingInfo("nameplate" .. i) then
aura_env.bossCast = UnitCastingInfo("nameplate" .. i) aura_env.bossCast = UnitCastingInfo("nameplate" .. i)
aura_env.castEnd = select(6, UnitCastingInfo("nameplate" .. i)) aura_env.castEnd = select(6, UnitCastingInfo("nameplate" .. i))
aura_env.castStart = select(5, 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 output = aura_env.bossCast .. " - " .. math.floor(((aura_env.castEnd - GetTime() * 1000) / 1000) * 100) / 100
break break
end end
end end
end end
end end
end end
return output return output
end end
DURATION FOR HP DURATION FOR HP
function() function()
return aura_env.bossHp, aura_env.bossMaxHp, 1 return aura_env.bossHp, aura_env.bossMaxHp, 1
end end
DURATION FOR POWER DURATION FOR POWER
function() function()
return aura_env.bossPower, aura_env.bossPowerMax, 1 return aura_env.bossPower, aura_env.bossPowerMax, 1
end end
DURATION FOR CASTBAR DURATION FOR CASTBAR
function() function()
return aura_env.castEnd - GetTime() * 1000, aura_env.castEnd - aura_env.castStart, 1 return aura_env.castEnd - GetTime() * 1000, aura_env.castEnd - aura_env.castStart, 1
end end
DISPLAY FOR NAME DISPLAY FOR NAME
function() function()
local bossList = local bossList =
{ {
"Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold "Skorpyron", "Anomaly", "Trilliax", "Tichon", "Krosus", "Aluriel", "Botanist", "Augur", "Elisande", "Gul'dan", --Nighthold
"Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH "Amalgam of souls", "Illysanna", "Smashspite", "Kur'talos", --BRH
"Gerdo", "Flamewreath", "Advisor Melandrus", --CoS "Gerdo", "Flamewreath", "Advisor Melandrus", --CoS
"Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT "Glaidalis", "Oakheart", "Dresaron", "of Xavius", --DHT
"Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA "Parjesh", "Lady Hatecoil", "Deepbeard", "Serpentrix", "Wrath of Azshara", --EoA
"Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV "Hymdall", "Hyrja", "Fenryr", "Skovald", "Odyn", --HoV
"Ymiron", "Harbaron", "Helya", --MoS "Ymiron", "Harbaron", "Helya", --MoS
"Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL "Rokmora", "Ularogg", "Naraxas", "Dargrul", --NL
"Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway "Ivanyr", "Corstilax", "Xakal", "Nal'tira", "Vandros", --Arcway
"Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW "Saltheril", "Inquisitor Tormen", "Ash'golm", "Glazer", "Cordana Fel" --VoTW
} }
local output = "" local output = ""
for i = 1, 40 do for i = 1, 40 do
for j = 1, table.getn(bossList) do for j = 1, table.getn(bossList) do
--if UnitName("nameplate" .. i) == bossList[j] then --if UnitName("nameplate" .. i) == bossList[j] then
if UnitExists("nameplate" .. i) then if UnitExists("nameplate" .. i) then
if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then if string.match(string.lower(UnitName("nameplate" .. i)), string.lower(bossList[j])) then
output = UnitName("nameplate" .. i) output = UnitName("nameplate" .. i)
break break
end end
end end
end end
end end
return output return output
end end
ANIMATION FOR HP ANIMATION FOR HP
function() function()
local function range (val, min, max, max2) local function range (val, min, max, max2)
val = 1 - (((max - val) / (max - min)) * max2) val = 1 - (((max - val) / (max - min)) * max2)
return val return val
end end
local c = aura_env.bossHp / aura_env.bossMaxHp local c = aura_env.bossHp / aura_env.bossMaxHp
c = 1 - c c = 1 - c
--c expected as [0, 1] --c expected as [0, 1]
if c > 0.5 then if c > 0.5 then
c = 1 - (2 * (c - 0.5)) c = 1 - (2 * (c - 0.5))
return c, 1, 0, 1 return c, 1, 0, 1
else else
c = c * 2 c = c * 2
return 1, c, 0, 1 return 1, c, 0, 1
end end
end end
INIT FOR HP INIT FOR HP
aura_env.bossHp = 1 aura_env.bossHp = 1
aura_env.bossMaxHp = 1 aura_env.bossMaxHp = 1
aura_env.bossPer = 1 aura_env.bossPer = 1
INIT FOR POWER INIT FOR POWER
aura_env.bossPower = 1 aura_env.bossPower = 1
aura_env.bossPowerMax = 1 aura_env.bossPowerMax = 1
aura_env.bossPer = 1 aura_env.bossPer = 1
INIT FOR CASTBAR INIT FOR CASTBAR
aura_env.castEnd = 0 aura_env.castEnd = 0
aura_env.castStart = 0 aura_env.castStart = 0
aura_env.bossCast = "" aura_env.bossCast = ""

View File

@@ -1,67 +1,67 @@
--GET MAX SHIELD ABSORB AND BAR FOR ABSORB --GET MAX SHIELD ABSORB AND BAR FOR ABSORB
TRIGGER TRIGGER
function() function()
local buff = UnitBuff("player", "Bulwark of Order") or "" local buff = UnitBuff("player", "Bulwark of Order") or ""
if buff ~= "" then return true else return false end if buff ~= "" then return true else return false end
end end
DURATION DURATION
function() function()
local shieldAmount = select(17, UnitBuff("player", "Bulwark of Order")) local shieldAmount = select(17, UnitBuff("player", "Bulwark of Order"))
if shieldAmount > aura_env.maxShield then if shieldAmount > aura_env.maxShield then
aura_env.maxShield = shieldAmount aura_env.maxShield = shieldAmount
end end
return shieldAmount, aura_env.maxShield, 1 return shieldAmount, aura_env.maxShield, 1
end end
DISPLAY DISPLAY
function() function()
local shield = select(17, UnitBuff("player", "Bulwark of Order")) or 0 local shield = select(17, UnitBuff("player", "Bulwark of Order")) or 0
return math.floor(shield / 1000) .. "k" return math.floor(shield / 1000) .. "k"
end end
ANIMATION ANIMATION
function() function()
local function range(val, min, max, max2) local function range(val, min, max, max2)
local val = 1 - (((max - val) / (max - min)) * max2) local val = 1 - (((max - val) / (max - min)) * max2)
return val return val
end end
local endTime = select(7, UnitBuff("player", "Bulwark of Order")) * 1000 local endTime = select(7, UnitBuff("player", "Bulwark of Order")) * 1000
local time = GetTime() * 1000 local time = GetTime() * 1000
local maxDur = select(6, UnitBuff("player", "Bulwark of Order")) * 1000 local maxDur = select(6, UnitBuff("player", "Bulwark of Order")) * 1000
local duration = endTime - time local duration = endTime - time
local c = range(duration, 0, maxDur, 1) local c = range(duration, 0, maxDur, 1)
--c expected as [0, 1] --c expected as [0, 1]
if c > 0.5 then if c > 0.5 then
c = 1 - (2 * (c - 0.5)) c = 1 - (2 * (c - 0.5))
return c, 1, 0, 1 return c, 1, 0, 1
else else
c = c * 2 c = c * 2
return 1, c, 0, 1 return 1, c, 0, 1
end end
end end
ON SHOW ON SHOW
aura_env.maxShield = 0 aura_env.maxShield = 0
TRIGGER TRIGGER
function() function()
local buff = UnitBuff("player", "Bulwark of Order") or "" local buff = UnitBuff("player", "Bulwark of Order") or ""
if buff ~= "" then return true else return false end if buff ~= "" then return true else return false end
end end
DURATION DURATION
function() function()
local shieldAmount = select(17, UnitBuff("player", "Bulwark of Order")) local shieldAmount = select(17, UnitBuff("player", "Bulwark of Order"))
local maxShield = UnitHealth("player") / 5 local maxShield = UnitHealth("player") / 5
return shieldAmount, maxShield, 1 return shieldAmount, maxShield, 1
end end
DISPLAY DISPLAY
function() function()
local shield = select(17, UnitBuff("player", "Bulwark of Order")) or 0 local shield = select(17, UnitBuff("player", "Bulwark of Order")) or 0
local maxShield = UnitHealth("player") / 5 local maxShield = UnitHealth("player") / 5
local pp = (shield / maxShield) * 20 local pp = (shield / maxShield) * 20
return string.format("%2.1f", pp) return string.format("%2.1f", pp)
end end

View File

@@ -1,40 +1,40 @@
PLAYER_ENTERING_WORLD PLAYER_ENTERING_WORLD
function() function()
if aura_env.enabled == 1 then if aura_env.enabled == 1 then
local r = WeakAuras.regions['julijabutton0'].region local r = WeakAuras.regions['julijabutton0'].region
local b = CreateFrame("Button", "JulijaButton", r, "SecureActionButtonTemplate") local b = CreateFrame("Button", "JulijaButton", r, "SecureActionButtonTemplate")
if aura_env.type:match("spell") then if aura_env.type:match("spell") then
b:SetAllPoints() b:SetAllPoints()
b:SetAttribute("unit", aura_env.target) b:SetAttribute("unit", aura_env.target)
b:SetAttribute("spell", aura_env.name) b:SetAttribute("spell", aura_env.name)
b:SetAttribute("type", "spell") b:SetAttribute("type", "spell")
end end
if aura_env.type:match("macro") then if aura_env.type:match("macro") then
b:SetAllPoints() b:SetAllPoints()
b:SetAttribute("macro", aura_env.name) b:SetAttribute("macro", aura_env.name)
b:SetAttribute("type", "macro") b:SetAttribute("type", "macro")
end end
return true return true
else else
return false return false
end end
end end
INIT INIT
aura_env.enabled = 0 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.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.type = "spell" --"spell" or "macro" CASE SENSITIVE
aura_env.name = "Hand of the Protector" --Spell or Macro name CASE SENSITIVE aura_env.name = "Hand of the Protector" --Spell or Macro name CASE SENSITIVE
if aura_env.enabled == 1 then if aura_env.enabled == 1 then
if not aura_env.type:match("spell") and not aura_env.type:match("macro") then if not aura_env.type:match("spell") and not aura_env.type:match("macro") then
print("|cFFFF0000Error 'type' on julijabutton0") print("|cFFFF0000Error 'type' on julijabutton0")
aura_env.enabled = 0 aura_env.enabled = 0
end end
if aura_env.name == "" then if aura_env.name == "" then
print("|cFFFF0000Error 'name' on julijabutton0") print("|cFFFF0000Error 'name' on julijabutton0")
end end
if aura_env.target == "" and not aura_env.type:match("macro") then if aura_env.target == "" and not aura_env.type:match("macro") then
print("|cFFFF0000Error 'target' on julijabutton0") print("|cFFFF0000Error 'target' on julijabutton0")
end end
end end

View File

@@ -1,16 +1,16 @@
--COMBAT_LOG_EVENT_UNFILTERED UNIT_AURA --COMBAT_LOG_EVENT_UNFILTERED UNIT_AURA
function(e, ...) function(e, ...)
if e == "COMBAT_LOG_EVENT_UNFILTERED" then if e == "COMBAT_LOG_EVENT_UNFILTERED" then
local se = select(2, CombatLogGetCurrentEventInfo()) local se = select(2, CombatLogGetCurrentEventInfo())
local sid = select(12, CombatLogGetCurrentEventInfo()) local sid = select(12, CombatLogGetCurrentEventInfo())
local caster = select(5, CombatLogGetCurrentEventInfo()) local caster = select(5, CombatLogGetCurrentEventInfo())
if caster == UnitName("player") and se == "SPELL_CAST_SUCCESS" and sid == 53595 then if caster == UnitName("player") and se == "SPELL_CAST_SUCCESS" and sid == 53595 then
WeakAurasSaved.CustomTrash.ProcShit.casts = WeakAurasSaved.CustomTrash.ProcShit.casts + 1 WeakAurasSaved.CustomTrash.ProcShit.casts = WeakAurasSaved.CustomTrash.ProcShit.casts + 1
end end
end end
end end
--DISPLAY --DISPLAY
function() function()
return WeakAurasSaved.CustomTrash.ProcShit.procs .. " / " .. WeakAurasSaved.CustomTrash.ProcShit.casts .. "\n" .. WeakAurasSaved.CustomTrash.ProcShit.procs / WeakAurasSaved.CustomTrash.ProcShit.casts return WeakAurasSaved.CustomTrash.ProcShit.procs .. " / " .. WeakAurasSaved.CustomTrash.ProcShit.casts .. "\n" .. WeakAurasSaved.CustomTrash.ProcShit.procs / WeakAurasSaved.CustomTrash.ProcShit.casts
end end

View File

@@ -1,34 +1,34 @@
--Custom text --Custom text
function() function()
output = "" output = ""
for k, v in pairs(aura_env.elites) do for k, v in pairs(aura_env.elites) do
output = output .. aura_env.eliteColor .. k .. " " .. v .. "\124r\n" output = output .. aura_env.eliteColor .. k .. " " .. v .. "\124r\n"
end end
for k, v in pairs(aura_env.rares) do for k, v in pairs(aura_env.rares) do
output = output .. aura_env.rareColor .. k .. " " .. v .. "\124r\n" output = output .. aura_env.rareColor .. k .. " " .. v .. "\124r\n"
end end
return output return output
end end
--NAME_PLATE_UNIT_ADDED --NAME_PLATE_UNIT_ADDED
function(e, u) function(e, u)
class = UnitClassification(u) class = UnitClassification(u)
-- use date() for time -- use date() for time
if class == "elite" then if class == "elite" then
aura_env.elites[UnitName(u)] = aura_env.GetTime() aura_env.elites[UnitName(u)] = aura_env.GetTime()
return true return true
elseif class == "rare" or class == "rareelite" then elseif class == "rare" or class == "rareelite" then
aura_env.rares[UnitName(u)] = aura_env.GetTime() aura_env.rares[UnitName(u)] = aura_env.GetTime()
return true return true
end end
end end
--INIT --INIT
aura_env.elites = {} aura_env.elites = {}
aura_env.rares = {} aura_env.rares = {}
aura_env.eliteColor = "\124c" .. "ff3e3e3e" aura_env.eliteColor = "\124c" .. "ff3e3e3e"
aura_env.rareColor = "\124c" .. "ffffe72e" aura_env.rareColor = "\124c" .. "ffffe72e"
aura_env.GetTime = function() aura_env.GetTime = function()
return string.match(date(), "%d%d:%d%d:%d%d") return string.match(date(), "%d%d:%d%d:%d%d")
endee endee

View File

@@ -1,10 +1,10 @@
if not aura_env.region.text then if not aura_env.region.text then
local text = aura_env.region:CreateFontString(nil, aura_env.region) local text = aura_env.region:CreateFontString(nil, aura_env.region)
aura_env.region.text = text aura_env.region.text = text
print("ok!") print("ok!")
end end
aura_env.region.text:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE, MONOCHROME") 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:SetTextColor(0, 1, 0, 0.8)
aura_env.region.text:SetPoint("CENTER", aura_env.region, "CENTER", 1, 0) aura_env.region.text:SetPoint("CENTER", aura_env.region, "CENTER", 1, 0)
aura_env.region.text:SetText("SW") aura_env.region.text:SetText("SW")
aura_env.region.text:Show() aura_env.region.text:Show()

View File

@@ -1,27 +1,27 @@
--NAME_PLATE_UNIT_ADDED NAME_PLATE_UNIT_REMOVED --NAME_PLATE_UNIT_ADDED NAME_PLATE_UNIT_REMOVED
function(e, unit) function(e, unit)
if e == "NAME_PLATE_UNIT_ADDED" then if e == "NAME_PLATE_UNIT_ADDED" then
if aura_env.altlist[UnitName(unit)] then if aura_env.altlist[UnitName(unit)] then
local plate = C_NamePlate.GetNamePlateForUnit(unit) local plate = C_NamePlate.GetNamePlateForUnit(unit)
if plate then if plate then
aura_env.region:SetAnchor("CENTER", plate, "CENTER") aura_env.region:SetAnchor("CENTER", plate, "CENTER")
aura_env.region:SetOffset(0, 50) aura_env.region:SetOffset(0, 50)
aura_env.region:Color(1, 1, 1, 1) aura_env.region:Color(1, 1, 1, 1)
return true return true
end end
end end
elseif e == "NAME_PLATE_UNIT_REMOVED" then elseif e == "NAME_PLATE_UNIT_REMOVED" then
if aura_env.altlist[UnitName(unit)] then if aura_env.altlist[UnitName(unit)] then
aura_env.region:ClearAllPoints() aura_env.region:ClearAllPoints()
aura_env.region:Color(1, 1, 1, 0) aura_env.region:Color(1, 1, 1, 0)
return false return false
end end
end end
end end
--INIT --INIT
aura_env.altlist = aura_env.altlist =
{ {
["Elna"] = 1, ["Elna"] = 1,
["Melna"] = 1, ["Melna"] = 1,
} }

View File

@@ -1,22 +1,22 @@
--TRADE_SHOW --TRADE_SHOW
function() function()
if UnitName("target") == "Melna" then if UnitName("target") == "Melna" then
local items = 0 local items = 0
for i = 0, 4 do for i = 0, 4 do
for j = 1, GetContainerNumSlots(i) do for j = 1, GetContainerNumSlots(i) do
local link = select(7, GetContainerItemInfo(i, j)) local link = select(7, GetContainerItemInfo(i, j))
if link then if link then
local type = select(7, GetItemInfo(link)) local type = select(7, GetItemInfo(link))
if (type == "Cooking" or type == "Cloth") and items < 6 then if (type == "Cooking" or type == "Cloth") and items < 6 then
UseContainerItem(i, j) UseContainerItem(i, j)
items = items + 1 items = items + 1
elseif items >= 6 then elseif items >= 6 then
AcceptTrade() AcceptTrade()
return return
end end
end end
end end
end end
AcceptTrade() AcceptTrade()
end end
end end

Some files were not shown because too many files have changed in this diff Show More