Merge branch 'release/v1.07-Beta' into main
This commit is contained in:
commit
cf804546c2
38
Bindings.xml
38
Bindings.xml
@ -1,38 +0,0 @@
|
||||
<Bindings>
|
||||
<Binding name="GLADDYBUTTON1_LEFT" header="GLADDY" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON2_LEFT" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON3_LEFT" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON4_LEFT" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON5_LEFT" category="ADDONS"/>
|
||||
|
||||
<Binding name="GLADDYBUTTON1_RIGHT" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON2_RIGHT" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON3_RIGHT" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON4_RIGHT" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON5_RIGHT" category="ADDONS"/>
|
||||
|
||||
<Binding name="GLADDYBUTTON1_MIDDLE" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON2_MIDDLE" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON3_MIDDLE" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON4_MIDDLE" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON5_MIDDLE" category="ADDONS"/>
|
||||
|
||||
<Binding name="GLADDYBUTTON1_BUTTON4" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON2_BUTTON4" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON3_BUTTON4" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON4_BUTTON4" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON5_BUTTON4" category="ADDONS"/>
|
||||
|
||||
<Binding name="GLADDYBUTTON1_BUTTON5" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON2_BUTTON5" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON3_BUTTON5" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON4_BUTTON5" category="ADDONS"/>
|
||||
<Binding name="GLADDYBUTTON5_BUTTON5" category="ADDONS"/>
|
||||
|
||||
|
||||
<Binding header="GLADDYTRINKET" name="GLADDYTRINKET1" category="ADDONS"/>
|
||||
<Binding name="GLADDYTRINKET2" category="ADDONS"/>
|
||||
<Binding name="GLADDYTRINKET3" category="ADDONS"/>
|
||||
<Binding name="GLADDYTRINKET4" category="ADDONS"/>
|
||||
<Binding name="GLADDYTRINKET5" category="ADDONS"/>
|
||||
</Bindings>
|
@ -366,6 +366,13 @@ function Gladdy:GetImportantAuras()
|
||||
priority = 10,
|
||||
spellID = 1044,
|
||||
},
|
||||
-- Blessing of Sacrifice
|
||||
[GetSpellInfo(6940)] = {
|
||||
track = AURA_TYPE_BUFF,
|
||||
duration = 30,
|
||||
priority = 12,
|
||||
spellID = 6940,
|
||||
},
|
||||
-- Divine Shield
|
||||
[GetSpellInfo(642)] = {
|
||||
track = AURA_TYPE_BUFF,
|
||||
@ -599,6 +606,14 @@ function Gladdy:GetImportantAuras()
|
||||
priority = 20,
|
||||
spellID = 8178
|
||||
},
|
||||
--Intervene
|
||||
[GetSpellInfo(3411)] = {
|
||||
track = AURA_TYPE_BUFF,
|
||||
duration = 10,
|
||||
priority = 10,
|
||||
spellSchool = "physical",
|
||||
spellID = 3411,
|
||||
},
|
||||
|
||||
|
||||
-- War Stomp
|
||||
|
28
Frame.lua
28
Frame.lua
@ -32,7 +32,7 @@ function Gladdy:CreateFrame()
|
||||
self.frame = CreateFrame("Frame", "GladdyFrame", UIParent)
|
||||
|
||||
self.frame:SetClampedToScreen(true)
|
||||
self.frame:EnableMouse(true)
|
||||
self.frame:EnableMouse(false)
|
||||
self.frame:SetMovable(true)
|
||||
self.frame:RegisterForDrag("LeftButton")
|
||||
|
||||
@ -187,7 +187,7 @@ function Gladdy:UpdateFrame()
|
||||
local button = self.buttons["arena" .. i]
|
||||
button:SetWidth(self.db.barWidth + extraBarWidth)
|
||||
button:SetHeight(self.db.healthBarHeight)
|
||||
button.secure:SetWidth(self.db.barWidth + extraBarWidth)
|
||||
button.secure:SetWidth(self.db.barWidth)
|
||||
button.secure:SetHeight(self.db.healthBarHeight + extraBarHeight)
|
||||
|
||||
button:ClearAllPoints()
|
||||
@ -195,27 +195,27 @@ function Gladdy:UpdateFrame()
|
||||
if (self.db.growUp) then
|
||||
if (i == 1) then
|
||||
button:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", self.db.padding + 2, 0)
|
||||
button.secure:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", self.db.padding + 2, 0)
|
||||
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
|
||||
else
|
||||
button:SetPoint("BOTTOMLEFT", self.buttons["arena" .. (i - 1)], "TOPLEFT", 0, margin + self.db.bottomMargin)
|
||||
button.secure:SetPoint("BOTTOMLEFT", self.buttons["arena" .. (i - 1)], "TOPLEFT", 0, margin + self.db.bottomMargin)
|
||||
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
|
||||
end
|
||||
else
|
||||
if (i == 1) then
|
||||
button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", self.db.padding + 2, 0)
|
||||
button.secure:SetPoint("TOPLEFT", self.frame, "TOPLEFT", self.db.padding + 2, 0)
|
||||
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
|
||||
else
|
||||
button:SetPoint("TOPLEFT", self.buttons["arena" .. (i - 1)], "BOTTOMLEFT", 0, -margin - self.db.bottomMargin)
|
||||
button.secure:SetPoint("TOPLEFT", self.buttons["arena" .. (i - 1)], "BOTTOMLEFT", 0, -margin - self.db.bottomMargin)
|
||||
button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
for k, v in self:IterModules() do
|
||||
for _, v in self:IterModules() do
|
||||
self:Call(v, "UpdateFrame", button.unit)
|
||||
end
|
||||
end
|
||||
for k, v in self:IterModules() do
|
||||
for _, v in self:IterModules() do
|
||||
self:Call(v, "UpdateFrameOnce")
|
||||
end
|
||||
end
|
||||
@ -257,6 +257,7 @@ function Gladdy:CreateButton(i)
|
||||
end
|
||||
|
||||
local button = CreateFrame("Frame", "GladdyButtonFrame" .. i, self.frame)
|
||||
button:EnableMouse(false)
|
||||
button:SetAlpha(0)
|
||||
|
||||
local secure = CreateFrame("Button", "GladdyButton" .. i, button, "SecureActionButtonTemplate")
|
||||
@ -265,12 +266,9 @@ function Gladdy:CreateButton(i)
|
||||
secure:SetAttribute("*type1", "target")
|
||||
secure:SetAttribute("*type2", "focus")
|
||||
secure:SetAttribute("unit", "arena" .. i)
|
||||
|
||||
button:RegisterEvent("UNIT_NAME_UPDATE")
|
||||
button:RegisterEvent("ARENA_OPPONENT_UPDATE")
|
||||
button:RegisterEvent("ARENA_COOLDOWNS_UPDATE")
|
||||
button:RegisterEvent("ARENA_CROWD_CONTROL_SPELL_UPDATE")
|
||||
button:RegisterUnitEvent("UNIT_CONNECTION", "arena" .. i)
|
||||
--secure.texture = secure:CreateTexture(nil, "OVERLAY")
|
||||
--secure.texture:SetAllPoints(secure)
|
||||
--secure.texture:SetTexture("Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp")
|
||||
|
||||
button.id = i
|
||||
button.unit = "arena" .. i
|
||||
@ -281,7 +279,7 @@ function Gladdy:CreateButton(i)
|
||||
|
||||
self.buttons[button.unit] = button
|
||||
|
||||
for k, v in self:IterModules() do
|
||||
for _, v in self:IterModules() do
|
||||
self:Call(v, "CreateFrame", button.unit)
|
||||
end
|
||||
end
|
||||
|
@ -25,7 +25,7 @@ local MAJOR, MINOR = "Gladdy", 4
|
||||
local Gladdy = LibStub:NewLibrary(MAJOR, MINOR)
|
||||
local L
|
||||
Gladdy.version_major_num = 1
|
||||
Gladdy.version_minor_num = 0.06
|
||||
Gladdy.version_minor_num = 0.07
|
||||
Gladdy.version_num = Gladdy.version_major_num + Gladdy.version_minor_num
|
||||
Gladdy.version_releaseType = RELEASE_TYPES.beta
|
||||
Gladdy.version = PREFIX .. Gladdy.version_num .. "-" .. Gladdy.version_releaseType
|
||||
|
@ -1,6 +1,6 @@
|
||||
## Interface: 20501
|
||||
## Title: Gladdy - TBC
|
||||
## Version: 1.06-Beta
|
||||
## Version: 1.07-Beta
|
||||
## Notes: The most powerful arena AddOn for WoW 2.5.1
|
||||
## Author: XiconQoo, DnB_Junkee, Knall
|
||||
## X-Email: contact me on discord Knall#1751
|
||||
@ -34,4 +34,5 @@ Modules\VersionCheck.lua
|
||||
Modules\XiconProfiles.lua
|
||||
Modules\Pets.lua
|
||||
Modules\ExportImport.lua
|
||||
Modules\CombatIndicator.lua
|
||||
EventListener.lua
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Images/mask.blp
Normal file
BIN
Images/mask.blp
Normal file
Binary file not shown.
@ -1,13 +1,13 @@
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
|
||||
function Gladdy:GetKlimpProfile()
|
||||
return "4XzRBL1CBBKe(xKvn3hpAzhz7QIL1gQu7Uv5IoqKqICnjGwaW1r5H8BF7z6EWbVaKLEiMqaZ0tp910FDpzoF(TZND3U7VV(YW)8PfLf3KTC56IhMFnN(s4LZw)x5ZVwO6p43U5XvzZVsRykj3R1cNsP9M53)gTC(Sfz1nxMvDzz1Y8Q3vUPSkSuzizNFnB(ShI)Bv4FBMpBjmOYnll)rbs32LFVxZUWnFwXJ3wLVTS6QYIM)9xGbL3ej2YQ3VUo7Un5VBD1In5ZVRJpEOppWUqDCUGg9hZx)WkGKIWNYwSoBZVuei7Y5xoF2J5nFmpBtZQEd0WImvzt(2B2K1KJcN3U5hzpvFBw1d5nWCVJ2rZwv(J3URk795X)m8ECrUPSE(SF7tF4J3g2k)Z1lBwDv2IgGTVMFbitxLw2BZ)ZMDv5ZN951fR3MTzDDucgehWwa24bP3ss4pR5j4nZ(urtE19zlY)6BxU8lf1F9dBan9tF9tBZEiV(R4y)2h2uwdmXkyBTjU12BdFknjVtgUQt4eEiYurZhURV5tsV(HQYF8(1v5lAwxw0U9rI85S)miD6RUNp79LvRRV5gGfcYW913aZ2Ar8gPDFRBYqwMEFN55N2UDxr(WT2fEpAHCbte3G8Egji3Cv16)6V)J)XUSLvznz)9FCBYH6F1ZU8XYFKxDtE1I8IgqAheQDSv7atw8dv8bfz7qEJ9qg)QYQTN23cCxcS8MS64()a)XR0AWV1i1oMZ5H)J8FpQ3bPYsc4RScM2Q9kM06fwqyD)BuEuX8ty7vvURyz(YVD3MhhiKjRhrqsC0iu92ub)QXeg9MZZI)Q)V7YQs8xuL2lcGnzZounNgw3(aCcYkkGT6I8TW4QdCBt16IVN38B5zlFkyex)y(IWSZlY3gFbnGFVgdbHRu4dlZdU(pMv18eSfZR3vrEs1HXTmmT6UzC7kyiRaLym0wdXEbVmyi)V8QAyIFBB2)PS6Bf72IE1Xit755boz3uw1uLTU5NqooqpFFv228UGwDlx37I6R(H53xPx3l6CB0NbmgYhG3jyb3S(X)(pI8WWqBtAci)TVh6(lAurR37iHxQK6Um8ibyf9SJX6t4u2bmeYMQUJUINm9lrBUlB9aVD928ymMmy()6VCv8SPEc8Uaz7lva7JfFpFz6yoyIoMMfMdNz92WdcHx7JVXjeXxinEv4bR0zc)k16WpARjotHxjJJp9RsO5Hh8mzCGCPaoNjqGi9CCIUCUlobiqv8fAUmom67CFA9slOqH)nlTqEEKXemlYjmo(GuHeYjXbcjcfNPX6CifKkCaaVIBAnotopoqUrZJ7bHZIKcyo874F61S4FlfetAKitjvSO0Z5frcWTwAtyvXLYLwBTW4P9jZqRnUnugfYmATf5cT3hhRItmmqoCD1U4hmoIwgB87wgjdb1z8bji2XTSWehHNXWTUIlrovGlQijU1YKufxkbJzIp4DOuMZ5wCkoCtRf4VCTYf)IZOS0ly4dEfhPQdLKbQJYdGVWh8ECpWTolojjzBAqHUWiT0ErGVWBJtvNuFGXmoqd(GfNiSuOmxXIlo8vCLmKjih2iTgZrsA4sYIWPJlQozPiK4I704matiuvyrDbPXWVcs74SLggoBlN8nsczboqldfcC89wl9d6YOTKbbZtcnRNm1v0dCtCesgh3JcWIXtK0q2zC0ywOKezq)eHvGgXKdpeBGMGGCRu(4dHCtWLxqea5pqTJ6bRJm)iVhAEWOjhwUlU9nOnOLtcfPj(DjNmRbNeCLKss2ImKLtMkeD4cvRaj631eJgtbNHObTN6)CJlhpQUjIxaNA4VdztDi2O(H)BHdmBBzjWdP0f2pG8(NBoGN49YJN3NNchkaz5MxSCt8CbihOcGH2v0e4ikHAq3LoWiKnY3p4aIUvfszppRo)ycKaSSyEAME5z3LoFBA7jXreW0TF5MUdRogWi8053UOzx2MiKqA2bMRxAMtqKSScs0VQ5mQ0lShGtiDODaJyAP3pnwAOFyxEDDEVe2G3DnKFuVSGndv9tKX7JGIieRDvJsr8K9e)bPegyXAiz2FDnGk66KKVNETdXEpceh0EzlgF3ba1iBukjeFhE1jSD23K6D7Q2ZGIpiT)O50MYq2irLEcn0r25NGhUsdHVmkiZl40DjhHjPclYP(s1P(sd6sFA4Jjw5ar2YQR3TzZ5dN0jFoUPb7CMg9XS23BEcQK)C(vWHSALxZfW5pojeCgqdkPGHDEF7R7Uz1t1RHC9hd1wtaPZLDsNjU9URSPPC7NHyQRlcHq4ZpsniI2bx(LBV9lFU)NBJ8GMNFmBZ9tyftk3GLDhiM(r1pD0d3qYe4IPCgcFqDxMymHyyee8kKEqYFSFnOAX73)LPT3eKelptnsiZRynz(PHeHB5qeYGLXga(C(iN5Y7oZ9UjufQuzW6JRJ3kREPi6AttyVItArgouYVhOFRWFBokKvme6fDkXH4NhmJPvh0b2shxbgz(qUb)gSNBpNV3khTM77T2(E8mSEhL03yaZNGnyVC(4KjDyeIjKsgMPClgtjG5bHXWnP0vD0ysyjAXqesfghScXKLsc0qGEeIe2grczOxtihAHqWWmpLkkb8qWFk3xAisN0sZob8mGpm8qc5jKsnMilKKn9GxtW(uewt4nyoV2eyeNfZe3XuTSjHagZQvc5rJ5f75uk6spBiqtUf)IuOjWTaAmmPAJEiMaPnbPxyBttNwzfMOUe2SOChW1GciLeLUWwJwPu2(aEBkDBfLUTW4O8ZnChLHpNe0Ie6nzsrc47jOjCemQukqeVopwbGwKLk48zezMkHF1qMossiAiC2gncxeW4r4OJGucUJPS4osDP(C2dRxCS0scEarpAbwwvkx6aHhcDyKQrDylhiIt(ohcB4unPORjeh2bfIiTjhi2pBPNveWbvrTF4HJ7KN12OKjhyVn9UUClXuqFQiB76fifUSnQZrOiOxo484EXO(jlFE)ZN6K3)eIWbhIGub3QYJ0xJBkxxdhPDSSnmD82YtK1WbNPpOVEtQyP9RCBqB(RaOS3NFF2UnnHLYeQ6WTHAD31HTQ1a2HMNIfNSjwxm5PhdK8sZCQssNNoOF9iJjwLUZVw4bjJrhJES1cdfFQXiOXeQ7155hms(jhdYpXy7JWZXtbhzTSbJ8tngjshJ36hBmXJEhrVB8UXOJGbyogtolL(tRtj(ju60repYrTcJNXmgd7pTohxOyLTo)qukM60QQKioCs8iUnHuvg1YXE6LczN4bLJi9eoXys4y16hrxQmNztH(mq6fJABH5RC(DUqlSJPiWkEos8IyYnJ5xfYBDSykHkkpIcnwB2rgtmNZZVwHILoIvAip1rwOyPUhrak9ItlC04sfkX7y(4H08oV(e7JXi7B5OHTX8gpVjyiLYZpcSlqNFLITnzK9ntCMqoj3QZyQtCtmP4Xm)KJSsn9BfAFKMxzysfa6cqpWymqvDM0KWSgom1vkN2bvGSn3cZHWbFg3pP2g22ljVE1gC1(x3NqpthuUY6dbZo4oBmOGb)KPp2RP7PvlCFxi8chTY3Ty0NrxOaIpoih)6MSMD13LKhjwpDBt6ucRE2TCgvNdQSiPG2V9e9Zh(WcWAywTsPemzOrpkDxbypXxQo1xqzzN(reuN7xu9OjXvAUia6Mb2UEBaolEbxAryC4v15DaWQhaFI8y1iQ3KN)4E(m3xwTipm5GGFD43R5sdZhLwlAQ2u3SRykZbmMJveQQy5KNIZGlZQm8sdn2emHOQWe(E9ugnKWrSwT1lYAaGmtBoCDCxSeGPe6YuZuMeOyXkmUysJMRIhhDFEw1ugF4YcefSLLtIBaFyhPiEgtjI9Vk)XWLfQyr(KMLhNfGp(HYI67QYZAwnLjQiH8USPmADOQkb5vvE(FLdrCMKjS2jJ(wR3(i8MjPyAnhFAXMYIjjcm8iV10ZJD4nUQTCf9cG3)wyD8Ymq1fbdMh4JMWFkT4b9lgpmxwVQV0ThAicXHZ9SVkuYXTNIqx4tLTqlNk5KmlM20RaJH54(YjKtQFviKr5FDieNPFLOKwIG)EXeYjeVo2tccR5XSN0jZjQAL6XjNuAmYxfgZXpjJ98iKoClLEniea0J96eoWXvNsiDrQeX(UAUncXcNf(AWvAQkBVyc5G0Mo12dcd2Jwx4nJto48i)RdFXTVsBqU71rKlHeMoLO65rjSjrNYMYmWOkOfCJtsWW61XXXrLN8ftiilMxkhbF6P5x5mXAl6KoMwXvXRQGAE6gREz6(QkHJhXBJyOSkHhayKHF40Dxt4WBWNrs3wuPZJxhvt6g9LU(OwCMcQluh2qrHHOTK66NZqx3nS)vwCIyVRS0DqKOoJ6xLhV)GcLhVbGA6gzQXgNPLyBiJaAIt0XPB3OYIKYAORGQc7pzBJrXUhYvylYaUwL4ASHGWeXlFikX0c86AkLwCgXIqeOq46WG8e29XuBcXXdNhPh2YrLH4qswl5ux50cSlGaccd1OrQvFbPDQ)IuldT0DIeGcGIDPnDtfvI0nvK6yimB6oiJxSvH1H3HX2ogYDyxpvAq7L2(y)IPRujjg5iTn4LxTzVgWDi8XU2wbAsid4f7o5f2RVjpEHog26qKkdt(DcxlKiG)dUFAus1iQylN5msqpAKHlwSm49e6uwe)(BlwScwJuPgMV))VN8Z3PR9HO37kM1tqfe3puv(JF)ra2qZ85))Vz1LDS"
|
||||
return "4XzVBL2CBBZT(xu8GDa(XOK62mtJJVvUZ9TZ0rP0s028gjrpKu3u3p0F7VNfasQfAQe72VertcCWz5bNnGSqU4MfZxvpRQEvr97QwxvJViFXvYfZVDXLUmLwgeoH2zmcRDXDVb(N53p6xQh7lTa92D3DnFyz125L)vXIRuM4RMH)ZBx)4d5lU0AegTmZAvbJXM5WjRxmFzEt7S8XyZReilH)Bn(VTOe9UQQ1RQ(6wMU44QZxwMVES3ZKEE7tRlwm)dBBlQVlFzXV)2vR(02MF)hxNVA1t)(h2KFFrZVZJ9Z1v72UQy1NVD9J4k((YM8Bxx8UY6LanUTNPVFidlUWCAwoo6FQO8(hAbTJiXz)WwKSRwmBX8hkYx3(amQRY3uCz12wwtkDlMV9XBQAl2C9682cwz(21Fn)PMBYRVVOfM(TrT98hQ(6B3vN)(c6prYYRZ1vnlM)lF4h)jcr8)wUQ9HlZx2cC(vYlu2bR(nf)z7UAqp9XYTLBYxx2a8)JfT)enGRlQxwSTf0uiTtyRVFn7dGcznPuMffHKnK44B(01dynMfgOAcdbzPj(J1vF99L1flBlR22j0llhBBGXRbqPjtOmzsTXgrL3p6xQh7lTKLQUytvnYKlM)2Aq1)3)Xv51apbljAzoeibQ2F7ta7xa4I3O98O(zqR)(I7Y3TUf5vN3lWFl6rlpwxwvx2(0IRmectf86XhJK2JkvAyZ6ZthPqlctnMGrnoD41slDo5K0XzNAT0sf4lzSXOIJrk9tWpQmGHgFmm)Kzf6P4zRjm5A5fHXLlnthxMpBQXOcIXht0U7YctrhLWAMIoAToBCBAKF8(XvHr1JEsuyilmUsoXWzJBZ5fcmdtneiaLzCtvsfRYutTTrygFP6qo(XxkMDcoZKGlvqnLgoaS8u2sJ7zekEpJ0ONeBjfk)44ywYvwLFkdHcCxm(Af9xyaVPtUVsPMufgaHFkdAWK9mYfpMmDyktHtmL3uRY8moDSrhbtAqv6m14khlVu(WuKrRvIP8bQ1(PLB9KUTnwJE8XWqqNzkqQszNmWxMysRGwOEgxoPTvpdupYncXZecjb)0tSsTPCw6th5dB2SBBboT(KEVilJtI8cHIYJuIZmLfZ3Fcx0A)FsjCiqsgZy32LNjL3inW9tuCX8))I6giRQpVj))RQ(ZB3THE7Q6oc(gibgiJMRRQBRZlBtP3EBkpuETaD0rkHlRQ3SVkyys0xeqXFVAzAgK78Y15nu1h)RuRZYyMMP82U0dry92mJq7ZuEWYD3BGaUuMCVu71aL5lLuXIqgK)ScvPDzF6sgPFBa8awFceaO3WcUoaUggW7fmzuNFnSWLBVNv1hyvXIrMYQoyoF)c3JvFTOEqjwHb1nShTzs93)XnGrST8X)(piYSy(Dvl31Co1GsBeBRl3(LOQzW(JhorrsjoRxVd8w(2TWYUSydmUgCPIe8xkYx9eUDP5XIL4Sl2wSHErCa)AdJ45vc)WQcQcT8AWfZ86IMD1XAFOTXRWP10pJBEagYda(n5vJyVpM)N4qYRb)wVdySweEhbjzQeU4Kf1qZFFj(UAOcwaUTUyrFn4K439oYMpeNDiWz4U7UQphR80OFlEIK2e)tTNdbTC6wkKZnmqCHBOR72iHKwPW)QqjikZye6cupto85AmphYPfEoG(RaJXzF9YjuqBFviKZK96qiPW(krjRMll5ftOGs96GNuXQGofEYMGtrFT2PjNw7C6xfglihLX(2iK15FDmEqjiIxh3bbPzmL0fYOspRpuXeet4LVkCLn2)NxmHcwPAmXdCdom8DMBAYPTzzVo8L0)kjGYWRJkxRYcJPQ(2OK0nU)3lWoapauHwHW0KeawVoBCcXgN9IjK0(Idn0MYM40jE1NRhL6IDVS6Wmj2Rr6V0uotLbCyoW7TimNav(nOt1doMe84pkF72LpaYrVqGPTni)N(zEOyd1fS8lfRsT7h0PbHvGZbYyjZJpOuz2m6nquh6fAhegdEWJD4a(fBk8mSbcoAMQmW9go(0VgLvIpKj00aLALmqeGOh1qkCEsO4x61z8lSsnnS435oQGRxAbXMJG)TiTqzsIXuqAn8Vs(bTHjewCn(RvXuY5dbMcAdpaSX0ZsnoaFJKgO0zLKmOcEMuaZXFN)tQZViLurM0PzMsBeK2lKPicq9aLecVHwQqATTkxwuofU4AZIHXzyMXA9mxa(ePXAKrgMB7c8GnqFWfI0cd)bp4frDiyoPh0GANfzLJgb1heA1KAMtv8IQsQBRoPv5LI7Nbo1aRLP2OttjWcTvX)Yn9Eg1dtF8fc(HmJKPAG1Ki1z9bWx8dzzSmi9bppjDeB6yLUYP9rzrXViZtt1MmFayMhOJFWZtKB2h8Grqlo8vELCriiu(EwhyMiPtQJiIGLwuBcPO08IhS8maieBk8STiAX4VcABA2ANGNTxg3BKuYkEGEbReK879(4p8wgRpciezrLMplc1nXhGqd0cjKSmYntLjPlIZKmywz0rYW7tuEfdIJB4bFdXjOIBRWEUol2qpA5vrcW8h1K9zXElIVolU7jopy0XnSYaj(ogd6LrLI2rFxlJWAytcVsADu3YmKxgHkr6ivMofcTVRTR9f9hwg68mvC95u4ofzzz5H(qtUXtNFi5gLB18Sf9(r1W(AERkDYw4dIqCmP9lD7tqZnpyd73jjOU4gBLkT)vL8(rhHaPmsBteS2vBIGmTme3BPJdrhGIC5zNCUI(aXhsExbydBS4Cm4vk6AZe9NcVjeTdXnCbpJ2ccthBg9YZwo(C5WxqhSgXuzI9DMk98x0kB0bo4XHboo7(4ETpf2s57GIXv2WGrniSSEh27YkiJM1UGOfxPeIgIPeHuMiKs5crmOtgIOyzurRsEO0jdjedlU9tYoC5ENplE8vZg49KB19mUF2K4d(ZyzrhvIUySeNLDjc(XIXkOnIycp7QZp(2lWjeGnN52Uy9Zsr6bpnmOsHolWryTk8hjUR)w0LCg9lekZH)ckWmj(qg8g6dsEGsJNNPcLn8fem92bWuWGX0gCJrdaKj6bSbeWVEEISgXh9EhPUa0c3Iko2ZlS1g8DISlgld)nqF3QzWny6c8AfayrK)ys5D0iHTzE6VPTBexLXJZPJCTHLheMH)ctK(sM3XRS0ZAepBQOU)t2oHIzManWoWhhyek32gIYedKnUihg11a2KzvRYtFrjTofVwkwvHABjRetarVqejJLv7W2bwIG8dC94qKmWSjnpuUhlJEqnHpW4qsVzf8laRxs8PhCc2OfvJqiA6TssB0ECt4g6k91Tf6PtAaVWkxwxwSD16Nq5C49Nyy7b7AWpDTq(5F4sGZUVU6R)6JOeednS3Pqe7x6X33IbTJ944fC97Y(Q35TGVDz7U810sf3KIm7T51XEJJEwhudYWlf0LGWdaAyVpaAeaiiElsozWPiXh92J8SFalPOVdRj585VpphuXK5c7(2GypGfD64b6)e3c(NqltZ1f1)C5w84DIiPbLW0FNTgqaAqNuKwxHU6WjsIXa1F5r1f1dxF3U6MItyotTRW1HXpWvlEqeZxxKde65tKq2BR2VCUH1)frErnAwVI6u39NoZWzIh70zpplkJBY6mK7DKFSPepZGVCgl5FU4Ya4YvHhYLoyPkGU7nGBUEe)jnIhAEU(HNAkb854jOXNhulEGgZooXSN)weEBvBB1MpMxFF5wm5q5(Y5jlNUZdt6064cP)xXdyeLS)XIKe5xARjOtE8Flj5HVriCNV8dZeh2o07cxH9mP7KwhE)fJM1bDrrGoyojgCFf6)WkIv1)p7YRBp16yb3)ydweyPTEdfeWqRJXcFdYS1Q0q2xqkqPlzyuzffGofJ6axyN(6o2DVkh6DxEsh)p)XI2vG1(X0GA71wO47auOeMvwkM2LMGaYtpZb1)QcwfEu4whlON(l1J9L(s(UPCtbD)aYBtHoowooJA)2BsN3f3LX24nYTZZX7FAB(MYL80PqB)u(67od3XddWmiRfch)DVtp6gzV9hPdWnMqvFZihC1HPWpPGwI91nNr0V9UZ2DDBD)QXNazDmNfB4BuKoUCO4hg4kNBg8yxo7uYzoY)Wv7wV(moz)JVqXKUD2NU5Mp9XJdQbRDr(bzDePjIP6Z7OZRxFEbT013UV70r2(em5fPZgomWZqp85Fy)AdXgP7xbQthY)JQzpbl)J7kAAkAovkCxxv2aUXofDC9OVvJeQ5OTC7dtFE8ykn6ZGSpUhiKq9yHm)cSZTtOgeyN0bSVJdrQ9(xUP6T4TV4dNmZ2pMFF5YtLzBsRaaeuCl7V18dGhds5(HdTJdJYEMs)YY(O0oSGHKB6tvPrtBE7UMBt2Gb31O4U5xAQoDA)5XBmZYYb3NE5EjAD6uupSFlFlHuyhq7LCDuzEyYnd)FIYX7xdzcSb0kHXfOUt0TFDKVup2xaM6j4BEbKUU04DkBMwHbOnMJl4G8fDPvQWEcI9DbZorfV(AqnBGR57RGYZPgo1SUO4r8HbxUX7QQxwGymemxI)ELu7ezCqI261nT72EoZbsKN(pqr92vN9ucoEzEiNV6Gtnbh2bgycFP5CgTsLrLJ0SmVfqLN3CK8)nqwbEXWUA0EotYHxbaCslpRrlnKr(UI86Zz84XYrk2QQZIBSbtiAi(gMc5(PU4r8sGTDzXznRmEwRQZVVABZT1f5q06ZyIMOsEx(5mAl2BxuFvxu8xfT15NfegYi3GZQCZJWBoldthC8PLRR2EwQaNK4TUiA9fcUNZX)HdV3vIXG4ed7s2Xfv1FrspNY96h9OLNTxWs3b5gEON0vdk9t7gMzfebGuXZokvuU(NlS735XFGUCLP4Th2hNeZXoj9srWPZekhwRg4ScCsgsU1tNGF0ST4WlK8li82bEShPll4)0ffc59YUOATlw8FdYM76k"
|
||||
end
|
||||
|
||||
function Gladdy:GetClassicProfile()
|
||||
return "4XzRB12CBBJe(x05H4DGpg3uNKzAs9v5oxVzYOuAjABErI0hj1L6(H(B)wGDbjeLOOCQYhmPiawS7I91hYSKT8ULlw3CDDZ6IMFOEtDJ)b5l)eB5I7d)9XWFB8)TdE2UhEO9dRQRwu(Nfl)exqp6A)FEZMNFcx6Q82URZNKSzbYMfiBMNSRHjvVzD93QiAKDLLO8XgO657Ak2w3CtDv3)(NHjv0fi36M3w2MF)MIFOSz1MIL3VCXZ1FRO5nR62LVz51lx01uw91IUdMwt(QY8n)yL)PR9t85IU3xKVP7jqmEFr5Jpb7GolS11DfBVDtExbkWVzZ3YFP9U8Mhl6G1EpX3lEQ(BVzxt(Blc)CytUTUD5IF5dV79bn))QCD3t3KVQRoOIx8uCtVR4p621uSCXhlRk3MVPSnON8ImOEbUgufUHZUfDVapBXhQ6kAEiFvXNFZ61)Cv7NF3M81RF5ZFyB(JfTFgN7xA)V7YBkw)L738mSJGWTjiG3psLh40F6hV5Ue2cvkbUiybW4PwaXv(UM6V92YMIvDL1v7tJpM)hE9B6r4YfVTUPS92BbteVg7GZWIHt5)HEptUbtrMl(8bJUpSD7UQI9n9UY5qRVRY4d21KblYn30u(N)1V)p3LVUjVl)V(97UBF7HJE0em0UTOzvrvhOR98nzR06L3aRn(WEDZV1lxSdz)BQB2oTFd4i4z8n5TbTWe(A3OvANtzyzcPYYeQLp8pucpDMAKMPgXVB05B)XbldpZ(7AeMO)hSRw34fSBH1wwHHHgRH8oyZPHswZ3p)foDtcfW0dhVEp9FSQy7lH4g0e7LKBugPntyLwzMZLzYaLPembZRQQ3vTQylyV06Lbk00VuKV(fV1t7ZfR8xlcK(((j8RTyek0DYpW6IGbyEt3lGGx0URH88cwER9lRDyf39emLNGZri8Di4BGLj3Y)xrtlSWVSn))u38LQDBXO)HaxJCvt9ioW47gqM1go3kDwTYWTKXfyqQ4CJjZyZ4gftlKdgKtmsZuJaCZdn5BlO4H7XOdplC(pe)aK5dmJAtc8)0(YezYGwiqOaWbOR85)63jRdGdQxTJOLF5ihmzuDIObtC5OSjFh2OnGj06On695y2eFSWS4EMer66r7hXfz9EF0Q5Av)JURCBriouExmm(6MeT1qK4XIChOj(AX6y6pyH2mvMFnSmJZ4VHZDkx4jwop8aH2j93yewT)QqP8xugDyLCNueMF8QKRy(BCzIWezcoZgiqGEwgrxgZgwGXHpqXeHPrJZCX9lUHCj(7S4g5ybgJ7DGdxz4ncjsiRaNOIJusBSwKccjobGxrHwHRKXctKPvSGmWTgKuaZHJJ)0PYc)wWjMeS)XhabucsPJhiaZyiHWidBLnU3kU2rYzMM2BumKAjYmkiCF4jkNlmxjJyyGC4(QSHb0wIwAtyCtgPdHJZWncqTJIS3s6A)Ptgk6sMa5uoUP8O6wjIAvCR4zz6WnolQLzmMbxIffAfhVYusByeRwAOhKH34KmKQwut6PoQpa(cVX5qzGzSgCrcY2uJkDUwyizHJpWzclvfp(aJzCIA8gdUqyRqDUmlS5WO4oPjtqgii9gZbsQzcYIWQcBQkAPWf4MBv4kati8OWGNf0jgokOTdRwOZWvByKVrujZXjAYqLadFUXqxqxgLHmiYCKsZ4itDjDdthMHiJHYihSyCej1KDgdnM5sbrg0pHB4Orm5WdXgOfWj3kPlCJwOIEQebq(do2XZbJLm)iVhADWSjhwMni(A0g0WiLIqhgxWiZAWjb3jHG0TidzyKPcrhgx2Rqc(DDHuHXiVGoVVgGZU9NqiY9kfetJmQ3hgwR1Hpnww2EnhOJfqHX5bpppFEBDdezUS77izZEfeLw8duVCr16nH6FGzubC4UQopdrDjcNTXekdjIbJ(fpc9j8Rpt143xBLlk)P92ftiDSAVXuDuxE3pOp8musLLNr)TRBGY(B6oXP2vMKUgs07hVTH4mgxilvl3KfTlH0iAWJuiScJ2Ku0(XhPzQr663RZO3MdkwOVfnQO8HZHKEdJYiucPxmBbQ8tLvEtoYYoPEHHg9tiqysJQUCtTV6HKdWRFmT8sdpZxuqMV0AitRZlSsu1bz00GtpK7ZPe8Sev3XhPzQrguDuLsMdRC8h210wCetQyhi6KMl7DWHm9dATPmbuqetTeQKdovfmRLKWhNCKMPgPlT(Z90IAPvbvUaXXG)bjHt0IxYUg9bTM3f5yT933GXz6(2fqHzOA8ut4FljyYllVX6Sqkdi1RuL50oV7cKXyXFaJKXD(CBwOGQqnvWiIyiPVJ4M7xK(idOBF6L2siK9CDX257X76PXFkaEtDxx92pc6GYkSW(drMzSB3173DKKh07jESjrpI9uDLyS57RsFSxEKa4bapCo5kz7zkFMMe9aKmUbfqmhs5c1wNGUrkeDKZBcMNzrC4oU9mANmeYaz4pb9PgIMr7r)wh7q90qNfXOlT)r2qLgtJi1H(8cOnmHhjcluQmx27ZJqR(iDDWY7W(8XTxFOX8Ppj2JqP8eStYJxy0Eh2hxDVpwGhaw0GDBuYLgleBu7IrU2lv8RYqEph7u7Kxdr2ZByDZ7Z38WuEbP6YeyMELQ(ttDerOOwmBWGD)QoHunqRXqVPq)UqeuNMuMRhkWZoUq4zHs5WyBuDS0r0Hf(MuqBsil0d8G8jeIexhXJa6hcRXN7BPj0mHItL4JnPyXo0GgUPgRToeUbDSJTi8agCLChIZattDjZ5uZWqlNiTXMTGE80u7myh5gCHyBtgQhtI6zy7va3GSl0Id2Fi1XTcHAqjWwIeqvrulMmQ7vPbjLrtqmincChSuBVypqsTG4AzKRXMaHfInxIAmfhBhxafAIDMYO2V81EG8e2(exI9RHZNdfCyjzcrGqQjoK01cMgzvfh7iNZuAoUxCc8cqBJWiOzOKdkrQNFj2akxyIDIk5XorrLLawnHXecCbhceg2rjOVPoCrGQKGXDV4hUrtTmtQrgsBncor3HbebBWI8rfig7JqMwI46MpTBZMZi9hfMXJ27xpdh)(SFu(i7O3n3S(K0SNGZUXivq7)kRs4H)ry7RgCpU1ZahHcxjhPkc1QUPihymQgU7hQE0lbJq19ax8dQUQUSfYIEm1VEzYBF84HrpiQlUPVuLVTCfo9R3VMZP7A0EGs5D7kABlcaZtX3sl7ik1NlxDMZnV)nsEAgojzWyD6hZFSC1XA5jQsVINiLJa8oXG44VDrecariXdbIGxdL2P9ziMHepEOj(fi9RF9TD5D7AVpYpXCuMrV870wv7PXc)lI569nmpd924eNHCoCdHJypi4qsue7AiYxepnlnNiyN9GC6XQdNSebnoIs1b5By8i01qlz4A7X4mdHgdYQLrORAjGrf0u8iiqRoImoJsjeHgNLzDuQmgDJtr4sljWWHNqXNJOLAnuUSmzpBsq0JPGemohbUZXimefUS9rcNzWreCLC)Sj95RIGwc5bO35a30JJymjVHYRyruPHdasldv2etWq7ueosi3kHhOKWdKRTeaI9zJKmsrZJWllIhKghNsDethfZQzPsh6H(UpDKwgbyxtMocsjsPkfAfMsJR1eq)buuJoVd1l90KVWo0k(gJXK58PtLzqMCTBa1HjgPzQr6I1HL23D0NyCVyP9wFe0WeoHas0OeGKYmPGrC8rAMAK0mIjXFgJ0WWRGMIxfJl579Rxh6BPB8lS(hGsxFSUPSi4T3UPO4z)nfdHvEOUzvHF)95Rk9x)etObnxG56A202TR6Cwdu0DqGAQwF2lXQXT5PC8llyUfO9gNWc(A75mBW1k0Xy7Q8oO1NZBnm8yznKO2dJC35SiDMbrRD1znBOQq)SFOiV5CMV)TfguS11Nf3OSslDq8kwsijztXZE8wRwvCwRYHRc6(9X6Q27BkY7E6CwOKuY7YpNzR8rT86RMII)Sa6A6SmHvwrWPVC7ZWtoRdMEZXxwTPU6SubAwG3ssV(BP(XjDfFC0cOwmXK9(nSZ)tizN1)JvNS(7aVMN0w6aZ2reIPG86xek5bFCccDfKadl4Ik1(mih0Ql4jFzymiu1fHqwOUNlbH0s3LHqSm1fIsk)B78sqilNFzSN4(3x6e2tQO5ev)UAEYbzvHSpxcgZYMKXEDes5)EeUeeIR8fCEjOK1Jp0ek9yttUKMZonX8j9UeCLYiUqEWkOONjepimycTUYPNNCqIh3LHV8FBoxgczVmQCbuz0uQQxhLWUTMYMsVNrL)uWopjbdRlJJJ13T0LGqq5k)D5OUL7bvwsF9Eiq(PY2U3w8q(UnHY18V1C)1KQpEUPeQhT7LW7rRZJfm51C05WcHmXVNPtthS5TzMt4Bf707fIwWC0rRMBVW(TNAoCAoEaopn)GTRp5Cq(j0a)m8CaQJz2ltMDA5sG0r7mU5MtaFLzo31o7C0HNPKZrhHq4M(mL4h)lBEg1JywRWaqcZXWUPpZXnsr1lCIPiLzYPpQIQypClZ424XJAwlhZ0BfYob0qMr7XT850WHVz0zolL6tiuOpdK5FwBleuQtl5Cf3m3bb(D3nt8IacwZ5x5bNCUyk(VRXzoqdFHGZmNaWINEV8FYEZyL6bJCMnk8bxoJcu44tRCu4wzSZrgelVtFEIFnTZi3IzdBJGdEAtqpUHNEg43I8P3PWhV7mYDg)eHCIUvNWuN4MaYNZz(jMzN6g9EKp87sp8Uwg)4KpJ)Z4TWn6fBhF7geTh)9Xp(dticDb()pedlZQfEKtf(puB)hHL)10HqI(MQvpbmtKYlh))3Nx1NAWEFVcJX88K)p7y2xt4WxHr6NXA3YL)))SydmWc"
|
||||
return "4XzRBT3CBBJe)t05bVF8Nrn1PzMgxF1UZ1BMmkLwI2MxKe9rsDPU)r)SFlWUGVKOPCSYmrIMayXI9f(TlGwYxE7YBwxTOSADE1puUPSk8ISLxXxEZDXpFi(zv4ZML3SQSCZ6YVTBIbCPwj9gf3ZeoJK7ClV)FOvbImvlvt1cmz3T)(7Rxe(4DBE6rCowLv3SiBsgMfzywKHzbASg6eYYenyx4GwZwvKTzul807rIFtZZBYxEZh31KxDF2Q8p)U1R)LD1F(dBYwV(5p)XTzpKx)zSVFPQC)U15R)YDBEkmNVVOo7Un5)qr1kGg31X2p0JLV0kyARHXuoM06CEsKaIrJrXmmo8ELxlfSqlYOyCIwQMQfqe0uvS7R5nhWt4I9h3fE76LlwEZJ5zBAEeyZRY2MFz5UMBk(RCqUiwEZUNUTSjF71BYAYrTX728TSNRVnR6H8gy43rQRBES8BVBFv27ZJ)z38CDz9YB(1p(HFkAW9Vkw384LzRAkJwwDt9T5)zZ(kqU)PIDfBZ2uuhvIrUzvgW4Gc03zY(Qus1)39zvjL0Jfp84g4)nTSEYCiYP)8pE5T9yRFk(WqzsN5zAKFOQ8BVVOkFvtr5UH04tz)zqedYXQ8TLX1ZYBEFzvr91xdgdbj2e2m)7FbMH8MLx9pKkSN)miuEF(9z730eSKmwll8DENM8PQcG0npV8kv0lq4SYP7dxh6dxi16zOdNjzU56JtjMMo4Cj5gdFw6y0ZnxsUqOMSpcQpCUDg(r4bgA6(G8JxZKZXZALB25YYCtVUKiDmERFU(iCSP7dP3nE3C0bccPMJosP0pToL4hRDArijEKZAf68UPfYjg2pTohNiqnmxxukMAAvvsel8I5CByQPNQwlh70tfYooJAwJlHtmNe2bS8C6sL5fwuOpdxjN12IZe2PTJXvUqlSZPieq4IPNlkEHs5NZYryfIzfHoyXpNc1P8VW6c7Jx6MtvyyZfnvluVqqhnfiywfQq6ftlC04uzDZrgjGzyUyGsaNYSRB5SHTvaKVP7dAcAuZzKke6z34ZZMvlibCNZz344VGPoXnm2lSfsY8toZm1KGv0HV9JB3UFxEyyDOCVW7rGUxWe9aNJagqSfxwv8x)9F8p3NTUkRj7V)JBVLi9V3INai2tLFlV668Qv57AaOsDW1ArDWOHngX2)lVQgq58LTz)NYQVSB)24BxxnK85niYPEtbSOZ2TdWlVkFl8Q6WkJGO(R5zRFoWd1pLVk8D(U8TXxqD43QrPgIPk0W68aaXNYQar4nv517Ri4x1H(TomS6UrC7JqxEeaRL0AJf2xwwTDOOUFcfqQdnKmlIjmcF8kUbe9BYQR)4QYjtmYOnEyBaaaLs74sDpe9hVLQPAPPllSwLe4Dgrg(wbfpwCmquCyYGD2BhKPquON4ZPTibdKOHvyjWs2EiXGDNb9xqMEnW2f7W5EmhgY1yofwVX89lAsA9WA51jBoHEFF5Q9tk37VII9gLkOus2M80qxS(SBSNxQTH8mDaYiM3ZSH8dbCFDUOhlR6lHHyG9vdBjA0wHJmodz6leqEhwhGcqZnqQjTg0t0s1uTKCPOuKar(USFaIp0emDWvPqBsghJYCAvrx(rqQa3CFfK7kLPiV)y6Ex0CO3OyhAvv3lR4vfJd91L4xNEG7tt2KP2swGOX9aDEFFLuUKX4IiMMfbWwwVn8GeGEOXhcPqfEG5O(etiyrklKWdCjd7SIh7RbGOhEVX4I9e0SGpBCSmfsKiw1Wdwh9qaGBKggWfnoZox8nCj1fPtAPrhWfH9rfjCeJtKkopdNBo9Gxlr6QK4GH34WPMZXb5GCLcp4yQw2m(GGl948esaCrkdUit5XXG5Rfjh2IuaYfKxyMilim6OyjMrrCSwnYBrSTXjmKbq8bLn(GewSOCNBiPSsIsxyPrZueUA4bMIJuwXDACkDOOh6SZrnrcAH3Qr2iPiTEb2ho0io7bqAlO8KwKGDSiHPAbcCkU8fgY0rscrdQILgTgLzgJbNhrGB7TXY4OUdk)dzbZOyh0MG(GNY72T6rWSVZMpeSQNVuNNZyVKgW55R5RtLn62GopPlitFqvOr21jqJaPb1B2KvNok)cfvl2UpzttFdzAevuEMKe0cEu0GQ2yYtHXX5OW16XxO5YK1asV08LMqYixMCIuEuTlcXzJFZXhKKfOJm51cKsglAmiH96XoekIYIei3WBixcWKfTzDKfkWCy7dT6LcIjH4SKFgAu58c0A1APfHvfNkxAU1cYSWlrJnyUXLHYOqMrdWsIVr79X(Q4edJPiapOr7Cksd3BqJBllzEIw0GOLcbbz3g7reZEC24ONgAEsfOkqzTmjvXPQ1jW7OiuHs(ehc5jPfJcncodw6fm8bVIJu1HsYa1r5bWx4d(KdABSrjzBAqHo4YzP1cgtgCPJdvNuFGXm2rd(GLIrftmfEqH(QqR4mzitqoSqAnMJK0WLKfHthNuDYsriXj3PP9f04CbgzXVjng2kiTXy4u0Di4l5BKeYcSJwgke447Tw6l0Lb21yyOuH1tM6k6bEA)koUgXe)rssXUH)HInLmfrg)BRanIjhEi2anab5wrbCJjFgNEbraK)IfeAbLhC41EY7Hgh0BYHLItBqBqlNeksdUjiNmRbNeCMKss2ImKLI37j6a7B0kqI(DHOSf)EVSRsi1of4FmC4eOiw84nGqYpaOHYJbnR3KN)0OumVVeaggIOhYxQi89vGaN5rI1uTPUz)UtzmAVjIwRA36tEiodonpMHjwn3amH93Gb816tP3GwoIWVEvwdGO)0gdhXCUUOoi221CkdYWSi07vNuV5Qy1BUppR6u6FydNOGTS8K4gnGINueVIHiIdj)PqscqY3N0O84OGm2EasP(UQ8mixTtyGksiVp7u6ToexniVQYZ)RCakWjzcRDY4XewS9j4nNKIP1C85vBk3DsIadpYBnyc2hEKHRkozhxQigDP3c4NUUScwVfnV10ttPDho)TldM1R38Cyn98YlbOIq0oyxdLM5nW(vqIFQ2muta4crtEOQ8B)2tHvFmO07w1SpBtGk9p2QdQm0XoG1dZQKwA4kbs(hgutXt)9FqRIoSNH57USQuzbGWu9sHAW5NAuonGKcIRc)daf078tpRvBbfuedfaP0Q0Fv6RbNr8HhEyVJDmTLWrpm0JiAJguMHQjkTuwl)3J(jrnKXDWCV(68QFUyxOAceJ1dYE3bO3JaXonkt8nLba8HHSQ4yhQ8jAgmov8FyFvD(rQEsQcpM2k80Lmoa)HMxYe(UXjT3p5MGF90vOkjRo44z7RhoXY80k2MkyrV(2xx2hUaPndL88RNWu(NG)pdsooKUjG4pc6h8)bb0M8mqg)YbV4DbVgRxU(XNRlwbY2jd5HfFRjuG2fhwFdmAXLa8Bi9zVgsecIp5nPcmv20uU9tzvpuSdZ1KcEotXTxmS2oWUxGbC7F7gqMufHUqo(ET8QCRhegowewGhoL9eI6NhFLMqTfAECc0G5yxP3HC)6vL4(x9cY8PNVclD)kMScT9lggo8Bl2MhRvEwZ4ykTmbF02dh)YrKUfg9JKnOeBhECfhUpGKbj9gkQPdsNtOA3ha3l6b67EvWVNRBA)ptW3kv1XWsDqC2(Zhqf1X3GhvMHBptpz1jg3BD1pLT5(tiWqF)2ExtKOg972UTjEpEMXQLeIPWth9cbnoY4jez5PuS4OLiy9v18smH9GISpQWQdtOAwb)HReCBLuOIdH8rn0ZTaR87X2IiHVBWoQxTFZMti2avtSfPkIbzKJzzkcjvhEacBUmMBjMDSWH1iWiP6rjDESGxMundsfOYIJuqLr8Wkcd4CqAlPY26muc1ynHS4aXe3TuvoiQZOco6XkuaPaJ1yqt18rJf7slXKYLmfLvoG7IkPQfjL1qf5sHfyUTY2yw3CfwJZWjuK4ASmeWaXYBGsmTaliKuAXrepr3afcx7qKNWe4t15f7VaGyoSMXkdXHKSwYPYQQfynHG8lnuLIPA1gK2Pcet181svDbsuef7sBQwikrQwiujFHrtv5elDMacZfNX2s(YDyPsvWUOTlFSG)urBiXihPTblp2r2vhmHZZgH3k54P6J4QDFiYTZnmgsywiVZjm0V0Q0sgx70YqPaLUwK4d8TdtXrOWfQrmLQ3yIyJoCtRpSpVUopEWKjiFbMF0bd1hItzrD5UJklml7DdtpreDrY)(N3LTTyf29fTXs6VfDlkrKZsBVPapoUZ4tPSKwdNWmpaKXlGE6GayzT3KZVBCIFk7HIvhd)EsgErScdRkIIGB)LRhO6p(DXe3XgcmHX6d58(RW2D901hnZP(hh9ji1QBYA2xFxAJKeoKUDg(oaloihWwM)MW1DOJ5BH8iGGDDEAJZ)QBdPhN8aCX12LwRL5dbDumiENX3DTSNOLQPAPjTz3GCsib7ymP9Vo1hYugPxc5Al1sje122pj9J3s1uTGq66G9dH4pi9SUBOWaT3rylLWzc3P2Wj9zn2ES1XBPAQw6GjHhQCyAAc)P0Ix)PvZxZOSEas6kvvdriUMZSNfkfsoCccDHxqESu85tGCasf8YKDgym8M)92jKtQpleYO8NhcXz6ZeL0s8kX(MjKtiop2tc6g4Em7jDYCI2aqpp5a3DJ8SWyo(Km2RJq6WbAEoiKq7zNNWboUAkH0fPDD9DBWndXch5X5GR00V9G3mHCAUyQLhegShTUWBMNCsT3FE4lU9mTaHeGolesc51nLO61rj866mLnLzGrvql4MNKGH15XXXr)OnEZeIRFZBn00V6p3w(UWLy7JXFwuTfg7if4FA84dQkXBgOzpSqZImU9NzLzexC4v2jIJA8R7Ymeq1MonTr1KjvQM(NA1pgVRVlw2vm)(fPpXH4Dz0YzoakialvgUTkHt(r1(Z6lDjKi(B54lN75roo60pg8BOC41hSfNEZYL))BOyvch"
|
||||
end
|
||||
|
||||
function Gladdy:GetKnallProfile()
|
||||
return "4XzRA12CBJJd(xuZW3j1hBA302z2(YTo7CBNPJ7QyRe7R2s5KKVUz)W(B)ajaLPKJIuA9xIvKabbabbEaixYxE9YfRRVSQEDr9RQ2vv7Fr(YpWxU4MWFVl83A)FBxUyvv1U1vFVC2d4Md3EBZL()8YD3VbPBvEt7L5JoPSapybEW88ynqeoTipUYizAMmtzDsUZKPxE7l0sGV7YBAE3QQYpv1SCXV(lxbCT8(RRl2xvFvvz7N)iigfTbEVU(1BBYVzxXR2wVAxXYBwU4(QVxu)YvThY3T8YoP8TfBVBdmgHbeO8vBZ39lL(XT2tZ9fTVTiFx7MecnSWSw1wS)t7YBlqf)L7(E(dnxNxFxrlm2BilZInvF)LhQZFDr4F9VhNKGk8BV7nV9AsW8u(B5Rk8t7M4CEDXF1EOUy5If7RQA3KiqFQOEvrzB(DHbexHx0(aORlExzBr9TaZ(YlxV(JLnF5n7YxV(HV8U9a9nFbP9RVzxvdieBa1Axq1UKe64QrqgV(JFkrGWj3BSxS9VlGvurQlqCGVPU67VEBDXQ2TvLDQjYK3N)xERq662YfVUQEBZNGjk3BRozHR44s7l0CKQFDBt7RlUn)WUwV3LXAz(Flsw8Q3cST9HLFqfCZeoRCCA4ApnCHuRNGpCMK5MIgNsmoFW5sYng(K8XONAUKCHqnkncIgo3oH8iYabACAq5jd2yoLmRvUjNllZnUEjr(yYSztrJWXgNgAD3K5MIpcMwnfFKsz24RPK8yTJBcjZJCsVqxMBCJCuGZgFnhNiyzyksukMA8LQOjwKjMABdtn(u155yhFQqXXzut6CjCIPSWoqKNATuzEcLc3ZWvYj9T4mHDC)yuZfAHDQfcbeUy85IIxOuzt55iScXKMqhO8tTG6uzpHEH0KjDtTuyytfnvluprqhnfiyYfuHmtmUXrJtL1nfBKsbBQyGsPDA9wozyBLwjhNg0f0OMYjvi0tM4lJn5QGKjEIqoXTvpHRojnm2tKcj6(jNyMAJykocG8D73FOSWpSJWiVildrsEbtKGGfH1naxrkqUtavHiYqanG43bcoaZzvoacbMdhju)7TRbaq5RARcZia96psGDouUVQQEFFPof8lW02eyTZgWCuatb86Xe9dacSU6q56I1F9MD33Z2DeE366aKBySBlbXqCQs6b4oLsMmMNL818FpKxhLVaqzsaNrTjek9ai8FPSy)dbFTeEGkjSYMxwc2Hvf7bi1nEM2wVT8BfT)wr(6h8qqBUVyL)3IaBUPJGFVb9GrST(pSUObM6Bxb)PUO5qnHcUXt1A)GAos)1Bas2aRLX9pbHZJqgi5)vu3ad8R7Z)pv1FT8WEu3c(Qd9UjDkwIchi82689fDEVzPJKElNwvoITwAoDXTzKYHMTZ6TvRoqm0Zdum6TlkiEB6ZyAP5c9GIT(bCH65IVzy1t3CQkdfGuK3u8yQ1fkYP2K4GHsgkXqaS42Of3Nx)Tz4MsKF929fH4f5TXIBxxNy8pwM1WqqTGn9BfRJ1ycd0b1p7hdNzZS(hamCa(c)BCqQu)lKgaaj8G1Neh(1x3ZL(CKMWifzaump9XFbakC)dzmzGqUuWDbge4xaZLFCCi(E41z4l0CzGm67iOb)8fNqF(F))ZItugpiycMfLeghFqQqg5ZF4)vlqozSohYbPcjWx71LXCJ(3WdeYnAEqhGkbrwbch(D8Fdf345KGesJefkPIfSEUmrGbby(bLWQctLlo3AOAdspzgAUr1qzuOWO1wuk0zzbAvCsGrKfWdAx4dghXlJn8DlJSHWYz4bjy2rvwycues1hMnUeLuboPIO5wlJwvCQWu2(H6qRCOsXWqCOsRf4VyDDxgGPBPxWWhYuCKRo0s65oApa5cFild1baeHfhKK8nnOrxyKwsxe4lYSHHQJlFGZmsObFWIdeXZcpOyHjh(kotgYfKdksNZCGLgUK8iC6WKQJEkcjo5onocWfcxkS4AbTIHFfS2HrlnmC0woT3iAKfiHwgAe447Tw6hClduye6qWYiJMnJC1v0dCtGcjJJ6iwVaYsd5NXrNzHssSb3NaLeGoX0gEi2anabTTYxwXLeM1W0ligGYxOoYlj4Z(xNr7EOXbutBy5UG6BqFqlNmkst47so5wdBsWzckOoqpUzcSEKRcXhUq1zqc77I4i6biH7ZreZao7Ssb(0HC7fW(fIj9tn4rv1V5KEg(WYRCWUgdtPbDhICbk4TVaScrybNMEdsD(PQAis922F2uyPWAUQEBr56DbKnaoPsqypu26LwmDKqB6sWeZZF1lGapAfevLjZG0agHx4buq3vx99F)EQJBD9fL1t4tsifZBneonMILA06nhrRMmMzcGBD9)cq)1(elOxypjpAW2dVcuRUPUVdJNXdZHEm7AkC(oqjFaatLalMr4s6AHz89DsrslQJcbGRZlhnGh2VUTKipmVjg1J9cpHdbIgG5BxLpNFyDh8rh8XETXL8BpwctYMKxDOEaqhEpS7ME75qTeY)NyUgAAPDaN0ex69NwL1J1U3ouMZ0rPn039JGmtxAsxpjKsxgXjbXPXypcFO2qqoTGc9GbpDyMdaiaLW3LHWGmXmjrylwCKIme)d3qzVfckjnKke5nMeaY9yOWSisbloqmCULY9rCNHH9bPbfxi0lM3IqcOriqAjgQgcjrXQDCkRQYISYAiOpkReNbhLogJnRmssQvrPgtobdet6HwmTaHjaywWreApGNdzmbkmiadWuI5rq6fkhLMbaEemekdjHKTwYnOOQfisbbxBe4CjiqvG1gH3y4OM7JMrSbtmkK2ygsLiMHenwsy0e2xeqLW6WCNypz806qa0kaKzN6hEWqPYjZih5TbbnbUI)fKBW34AJgsRPYaNaJp8QSBhWZlfvc1FAZdnBHs3MQu7wFfOx2fjQx7jQABR2)Ey3Y2sF9E92j3lWZLF86R)47t)CAZgsRWjj4vmsKFt(XImt3CoEGC3XDZHwzat5CSuHbS5zgUGe)3COOPPiupoeZPZoLK34ZhpcmAmhdd6pWW1d7Z0W1S3NF32vpw81lm0sM4Oc4tYew4OzVtI4dIOp481WKeDNJxAb08bUD)4Oo6qyDxQboKao0mojPxssVKH(zCsdd6A5cjw9oh0uQtNMRGsauaClOEjUudq0Pde(X210ZxyWjl(4UhSh9mTp2OKXoo6oYMblbvlzFYWEDGlk4AW)8NxdRYTBV)F(ZG9p2XKppSlJNM3mMfM1zD73TN1Dqadqp6JzEcH40t8MCIPz6uqY9HieHJgvNtK(11VnF3TZWuUkIWnjgxyg(HDTt737CeGy)ApILbxqEOmF)2vihokBpchHn9Ne0lrtMrUHDf5GAqaEUzWv8OpEYhTl2PPvQ22arrESyYMLj3rJ5ADsV8ht4ufn8rNNaMm8iS85wJnVsYZWEoHNyU)bMJOj2KIUMt4RXgjwHn7jwD5j4XG6FJ94stTKOR3emSKwa1hJ6kIJAOHKir6KwA0XoAXjitXwAb1QNrq940dzAQFskQjwWBi8lXUC4SewpMQtmPwRHq0WZ73)IWb2heQmw)oyXT4xKcTQpARo8CXMna4KOEfkSD1)hbbBjCxoSBsWcazLvsEeagntX2iaypP64vuD8cJJk8VdTgu9j1KPyBHKXfsBMGGwfHRfr95iO1DTSQdUMrfBmMHCDKKrKGsknAeYNakBhNNq3pA7V7pjFr)Bc1Zk4cDXAg7scD8sa9dW7EbUY7Uzrpnuj(Yto6Ob34kTc2laEpaCxfaG2eVXv92mhtDNeQkPi1ndVOuGbpjt3aydQhpUgAxonzcLLjjWwtBE7HMBIcxmXM9yETtV8uX7z1c)P5CzVSKPvwNeBDgw0q80Js6MN9bKG6Ckm94I0WMuK61mdghx9MNPFyz3PNa4hoSB3mWH3Lz80(FTU(vW2G7aBCrikFZUII79pKCmW3wvVQWpC)oKT(F)axcO(qLPTExt7HY5mgWboa)SUC9ShIZGtZMC8eBNAagFqjyaFRzoudHud1M1SkVf2MpVXW1bTynKF23MV25midZIToB1SOgQw2t9Tf51ZHE)P7emSWgQ5qV2PC0cXZyiHsIQlU33g2YvfZAuz4OwxNFxvzZn1f5Wo(zmqfzKpKphQ1(SvE7vDrXFx0wNplxyTtQ8JA7(7H3mRfMo3XhwTRQCwMadpiBjX4)JKOZPh79i3lIzeRJsPHOm9K26)xaiu4IHSA6qs5jvoCuHAjgX1aMVZcNCC7ym6ISi6BTCUStYS41c6miy4D46NNroP(SWiJk78WiotFM4KwIxUXFAg5eIZJ)KGUlLpM)Ko6oHm7c90Stkng5zrWC8rfSNhJ0(Zy(CWiHoJDEch44QXmsxWjJE2r0htWmFIXZHuPPBr(pnJCAUym1dcdMWRlYmtZoi5u25rU42ZKcYDNhtUeqpnMP65XjSs8X8Pm9CQ8RcUPzj4yDE244ORF)pnJain)Sse8PBoEuQo2GQzp9sqMC8GME35Rzu2WGgrg4Io5MFf7qFuCySJyCO50ZTqXrVSC1gy(IL2TC4TR8hVy7H1hnckQz14RH9GRN9HNG6Ihwlw())l6WhMj"
|
||||
return "4XzRB01CBJJ7xuZWVj1J1TBA7mBtZTo3CxNPJ7QyRKOR2w5KKVUzFy)TFGeG6lBfPSXVyRidcaIVbiZk(QBwTCt5IIYnzLVRyBrP)fPRUIVA5THpVp8zP)ZA4DhU7UQpTUy)Y8)mB1vsn9Qf(pE72hFax660Q6fPJIwwaTSaAzE0UbaQy7MIFUhXXLgjtZKjkRtYDMe9Q7EJwcWNUopDBFydSx49i5ww)02Svl)0(6SY7sxN9T3UzZx2x9TpSnDZMN(2N2LEFw13qy)EzXH9BY289B3(ONlEFEv6TBZExE5Aah32UrUV7MGDH60Bdc6pMLF)d1RUsyIC2VS3J2nRwSA5dzPBRFaG6Q0DzxwSVgLKC2fGSC)J3uuNT76TP1zO48TB)z6tv3KwEFwnGGBj59Yhk(5BpuM((SWF6FpsPRlQwT83(0h(yqV(VY3u)WLPRRlckWwIFt2FuFOeetl3vuu)WQLpMv)XWpEDw56S91GqYZTrtJxKq9dBlQaU4bqkSnijwqCDuXfyYB(Y1DyiK4DKhIUwwXf(HYIF((8YS115f7B2NRZNTHgiGlZ2vu6j0QLVVOmV6AGns9IYH6EqK81VaepduLVrZrO(18Q63NDx6HT1EkzSwM)7Swf8JL5aARFA1vQajfoRCCy4ApmCHuRNapCMK5McgNsmoEqAj5gdFs8y0trljxiuJcJGGHZTtWpIeGHghgKFsGObtXZALBsAzzUX3xsepMeBYuWiCSXHH07Me3u4rW0QPWJuktgxNs8J1oUiKepYjTcDjUXfYrgozCDosiqnmfikftnUQkkIfjIPCByQXjvJLJDCsHSJZOM04s4etjHDalpLUuzEMnf6ZWvYjTT4mHDC7yCNl0c7ukcbeUyCArXluQKPSCewHysrOd28tPqDQKNzFHWKiDtPkmSPIMQfQNjOJMcemPcviteJlC0iPSUPqJukytfdukTtVVLtg2wPvYXHbnbnQPmsfc9Kj(sytQfKmXZeYj6w9mM6e3WyptkKO5NCckvhR4OTyIpTB3H9z(L1wsXfjjyvfxWeTfghRb5fvOuVQpd0(F3uWHq5RJohRgc2MXAdR8CEa2Hf39)YkRGYI((U0)tr533Fyx4TBkBWjGeOMMRlkRltZR7utkw6iskqqEKy4YIYD9fcDRR6cNxa0RjIQoiF920QqldZUiT1u1EFTdJ7R961kH7S5FTOIQ0VF9QBkB4yolkv)AFPFqP5)D8pBAvG5xUxkDnq689GarCSEWxX)u6HoR5fT9Q(VhslBKuf)mRStNm8U9o0d5iU(RF)gqNvN)4F97bX0QL3vS(q1C04bVN6Y89)GeorlAWrls0o9KCBlZ1k8DaU3Vhi86SDaCvEIrO83Ys38KFvvpMT2)D2(SDHxqa8pRqZuKs(FytwfWs3Tg(OmR6qj1UrWXBJFrvTWFZdaipaMRXqrbM7ZP)HheqEUp9DaBv7TMjpzDttHd6bjSY(707kHEebBnqqJIJ2fsVLtk82gvKNW)TR7ytJENQlqkgdUOGu0)NslMXy90UUPyl5SlmDJ0wtiIR5m7zbtqsHXq0fqfwy85WedMf6KmlM)9mWyyXsVEe5K6ZcImQKZdI4m9zctAj2fXRgroH48ypjOMwoL9KoAorHz1tJoP0yKNfgZXhLXEzisBSNhLh0Xa78eoWXvJjKUGtc9K2KetGmMLFw4knnUMxnICAUySThegSBM7eZ0OtQtsop8f3EM2GC35rKlfjUXevVmmXnJh)9cUPNrLxl4MgLGH15XXXrZ56vJiU(vNAOowlXyLC1wNhwHLp6xNA68vs0By1)nQ4SFb1un)9kbMpGiiVanR1z0WThgHq7By6T7x)aSxA3g(I26u)t7kh2)e0yW6FKTjosDqU6yqh8l8JBXMy9piej6KWBGmpHxinqQm4bRFOeW3(54UW3ZVjSsrceIZdF8BLqZ9pKWKba5sb3fqqaFHzi5xhh6xn86e8fAUmag974qq80lsq)8m8)nlsOeEGXeqPn43C8bPcrKVFy)3AbIjJ15qmivia(zjVi2RV)n8aGCJMh2dcNfrfWC4VJ)zyyTEmjiM0irMsQybPNlreqqySLHnHvfiLlsBTWKq7tMHOnUnugfYmATf5ciUyawfNyyCsjWdAx4hmocx(uGWdwgjdb1z4bji2XTSWeGim6Ia14sKtfirfrXTwgLQiPWrq4xQdLYHjFhwId30Ab(noN6fHXoAPxWWhsuCeRous6Xokpa(cFijb3dCRZIlss2MguOlmslTxe4lsSHLQJQpWygb0GpyXfIZNdEqXceh(vKsgYeKdBKgJ5aknCjzr40bIQJwkcjsCNgxbycHQclQling(RG0oSAPHHR2YjFJOqwGaAzOqGJV3APVqxgTLmiyjKqZMqM6k6bi9qGqmoUhX5FIO0q2zC0ywOKeAq)eHvGgXKdpeBGwGGCR8JjDbndUa5fecq(lmx8f04a9VoH8EO1bqtoSCxy7BqBqlNekst43LCYSgCsqkjLKSfzilNmvi8WfQgbsWVRUz(fX2gV8nGtKwbriyYeiKMrS6U3aXjA61EoDYJZUjFyy1yK94z4fISIdmEXQ2qRsWvh9EdNpL)bMJGj6c1464TaqGvyOO4E3q(6cr0LwedigoiGG8j65WqbUur2DsUJC3Keish07lU6y8wFyr)dXaUGLeQ)Wspqkrr7uuiw4nos1q(GolAa6yQg2Kc8Jkt8018ViC8ybMkH1p(k3I)IuOPy6qqi0wYO77kiTXmzcBJ1jrzfAFkHnlk3b3zuaPKO0f2AeLIg5qAgYktrwzcJJmlnChzyZjbTig0sgvKqAnYJKJXGXjGVGoeQfDcOIdSEbov6W2hcXH7fjjenu6fJgJscH2O0hbFtFDqhktp(AdG1i4NwZTnP)xet(dbFqJkHp(H)bTokXqo0HHdHSBuwmxcMB3edpgZfBXvkO92XMPGcdXTKSLCgk2bkvS4crjILcOtyNrsHemym4TJHt1u6nnQo0s04guDuaihNsvOSiQSgkFUcT6BC3qBsUcf8axRICnAMbleJKJsmTaZ9bjIXveMHVhdjmuVRrVPgJpeEOlCDFdzLH4qswd2MiRQfOTLGRnK5lza5L2rRwYq0sjy4kmAVaChOW(krmSpzhcRMkOdRsa8xWecn2HGbpYBqLtnBFmkeLFIeJCe3gSsG6JNlxVqPyhV82(DJd83FxpUSmpB)MTp5Xx37Wq3Pl3mO9W1R4x)LlbSFFzXp)Np25MS09WaOjGE8fFOZawNbFIErVDD9H0Tbkr(zEE920Y4eVH6I60BXmVqneQoX11yKx5BfOD2OXDY4x3LH950x8gVBonIVoI2iVbHp8c9QRZk)189e4bnDNUoAVGtDWqaOb7JTf(Gq(Le4DsQUWNy9OMyAnKE3HYQStOLIZxW0y9niiO)qdwUnlfq0ZNIN3Qu637v3M1idQ2dskkJo1DRPr(ptZSgP1ZZIrxNgDyxlEslU8X0YFmds(hRU05VnignuFHkbcAB81fj7yipq9nuXC9dpvLdMJJx0eEQn1(ZCyXXflrxhoOdbixCcKaYPGyyg66WDBrDDXUpNwEF(E)O)193HNSR3HhQg2U7Sv(KkU)rqe56)gdbGURyHJ3Bs(GnmOZ8TEAcoE8apaBXgBer7M5RT3snsO2zudgVl9aDFFPWm4PnL)JdPL1pZ(9cBNDaH(gELpWLEWLJdJX0Cj86gLJFYaGp)b610jWGi3wKFVqsCmDMlW3TTzCt(USWHiNwh5RJP)mAUO3I6Yhxcn3QmgwsscxQHMpJoiNajOLJ)2x24y8(N2NUlFnIWq06pMU9UzeNPBKZojzdgkVeVGEJcJCX6Etoxhperk)F7iX6CjrdXvJrJz9LwZWZU3D2TjBy)gaNWg5yodt(e3shxbo9dhDxeg7I4glMWeoU9RoSD7mIvC89iniBx8LBU5lF(4y2aTZshKon6pQ6MqTjMsBcV6Wf1TDgPeBFcM8I4Pu664I3A(8c9gIhuVH1NhgpYYXK9dhYQQYQov9fxxKxbXuofEmTm0MrcgFKBtFtTN3Mkwy3mq7J9mKcwU(AN)nW7Rzt1M4AS7yogryO9xBuJBkER)C9)u7LXUJG6ZP3NV(ufIfLtGA3laYpzYLo1g(Wqnl0vsVYHNH8yD(jQ95OsHRQtRpuDBuDexrRx7FJS69V2nrfXs)vWiukBNRRaVxnfdlLAyV6VKSfyKKEIas(nCevD)3hygi(jOSqMbs3aLIPuq)0qV6qzHQJlRT7Dd6DqqX7Hnxwy6cvBZYE0)qN7J2DfLRZ82bElRC)3xXLqsnm8CD52Q6d7NZAGkedPFl3Vz2lXzqY8qkExVMAbgF72Wc(r1CGwisc15wToTgmGM3A46WUyde7X3(B9CwKXFmW(fTEwqZvHtZ)US0Y5aV)yzccwW1zoWRDkhPiEbljeIOm7r)fbA)6SzTQeCvBktVh6f92YSuW3Eglurc5dPZbATFqEE5vzw2FMvxMoltyTtQ8RkF3JWBMLIPXC8P1Bl2plrGHh4TM8qn3Bk3GizZWdVPw7orK7ovKUv93EtaNrj)DG(eDomKT7vp1WGwB60pI)sF1wnceMniCwCu5BbG1D(pnkmCPFjCL4Izi73uVh2i7r0IfdygpQvs6UA4v98vKYyqC0J6W2)rVi75nzkQxT6))I8c73a"
|
||||
end
|
@ -6,8 +6,6 @@ assert(LibStub, string.format("%s requires LibStub.", major))
|
||||
local Data = LibStub:NewLibrary(major, minor)
|
||||
if( not Data ) then return end
|
||||
|
||||
if( IS_WRATH_BUILD == nil ) then IS_WRATH_BUILD = (select(4, GetBuildInfo()) >= 30000) end
|
||||
|
||||
-- How long before DR resets
|
||||
Data.RESET_TIME = 18
|
||||
|
||||
@ -234,42 +232,6 @@ Data.spells = {
|
||||
[10912] = "charm",
|
||||
}
|
||||
|
||||
-- Add WoTLK spells
|
||||
if( IS_WRATH_BUILD ) then
|
||||
-- Death Coil
|
||||
Data.spells[47859] = "dc"
|
||||
Data.spells[47860] = "dc"
|
||||
|
||||
-- Wyvern Sting
|
||||
Data.spells[49011] = "sleep"
|
||||
Data.spells[49012] = "sleep"
|
||||
|
||||
-- Entangling Roots
|
||||
Data.spells[53308] = "root"
|
||||
|
||||
-- Frost Nova
|
||||
Data.spells[42917] = "root"
|
||||
|
||||
-- Intercept (Remove all except this one come WoTLK)
|
||||
Data.spells[20252] = "ctrlstun"
|
||||
|
||||
-- Pounce
|
||||
Data.spells[49803] = "ctrlstun"
|
||||
|
||||
-- Polymorph
|
||||
Data.spells[61305] = "disorient"
|
||||
Data.spells[61025] = "disorient"
|
||||
|
||||
-- Sap
|
||||
Data.spells[51724] = "disorient"
|
||||
|
||||
-- Maim
|
||||
Data.spells[49802] = "disorient"
|
||||
|
||||
-- Hex (Guessing)
|
||||
Data.spells[51514] = "disorient"
|
||||
end
|
||||
|
||||
-- DR Category names
|
||||
Data.typeNames = {
|
||||
["disorient"] = "Disorients",
|
||||
|
@ -59,41 +59,107 @@ Buff({ 33891 }, { buffType = "form"}, "DRUID") -- Tree of Life
|
||||
Buff({ 16864 }, { buffType = "magic"}, "DRUID") -- Omen of Clarity
|
||||
Buff({ 16689, 16810, 16811, 16812, 16813, 17329, 27009 }, { buffType = "magic"}, "DRUID") -- Nature's Grasp
|
||||
Buff({ 45281, 45282, 45283 }, { buffType = "magic"}, "DRUID") -- Natural Perfection
|
||||
Buff({ 16188 }, { buffType = "magic"}, "DRUID") -- Nature's Swiftness
|
||||
Buff({ 17116 }, { buffType = "magic"}, "DRUID") -- Nature's Swiftness
|
||||
Buff({ 17007 }, { buffType = "aura"}, "DRUID") -- Leader of the Pack
|
||||
|
||||
-------------
|
||||
-- WARRIOR
|
||||
-- WARRIOR -- TODO
|
||||
-------------
|
||||
--Buff({ 29703 }, { buffType = "physical"}, "WARRIOR") -- Dazed
|
||||
Buff({ 29838 }, { buffType = "physical"}, "WARRIOR") -- Second Wind
|
||||
Buff({ 12292 }, { buffType = "physical"}, "WARRIOR") -- Death Wish
|
||||
Buff({ 6673 }, { buffType = "physical"}, "WARRIOR") -- Battle Shout
|
||||
Buff({ 469 }, { buffType = "physical"}, "WARRIOR") -- Commanding Shout
|
||||
Buff({ 12328 }, { buffType = "physical"}, "WARRIOR") -- Sweeping Strikes
|
||||
Buff({ 30032 }, { buffType = "physical"}, "WARRIOR") -- Rampage
|
||||
Buff({ 2687 }, { buffType = "physical"}, "WARRIOR") -- Blood Rage
|
||||
Buff({ 20230 }, { buffType = "physical"}, "WARRIOR") -- Retaliation
|
||||
Buff({ 871 }, { buffType = "physical"}, "WARRIOR") -- Shield Wall
|
||||
Buff({ 18499 }, { buffType = "physical"}, "WARRIOR") -- Berserker Rage
|
||||
Buff({ 23885 }, { buffType = "physical"}, "WARRIOR") -- Bloodthirst
|
||||
Buff({ 3411 }, { buffType = "physical"}, "WARRIOR") -- Intervene
|
||||
|
||||
|
||||
--------------
|
||||
-- ROGUE
|
||||
-- ROGUE -- TODO
|
||||
--------------
|
||||
|
||||
Buff({ 2983 }, { buffType = "physical" }, "ROGUE") -- Sprint
|
||||
Buff({ 5277 }, { buffType = "physical" }, "ROGUE") -- Evasion
|
||||
Buff({ 31224 }, { buffType = "physical" }, "ROGUE") -- Cloak of Shadows
|
||||
Buff({ 14278 }, { buffType = "physical" }, "ROGUE") -- Ghostly Strike
|
||||
|
||||
|
||||
------------
|
||||
-- WARLOCK
|
||||
-- WARLOCK --TODO
|
||||
------------
|
||||
Buff({ 19028 }, { buffType = "immune"}, "WARLOCK") -- Soul Link
|
||||
Buff({ 23759 }, { buffType = "immune"}, "WARLOCK") -- Master Demonologist
|
||||
Buff({ 19028 }, { buffType = "aura"}, "WARLOCK") -- Soul Link
|
||||
Buff({ 696 }, { buffType = "aura"}, "WARLOCK") -- Demon Skin
|
||||
Buff({ 706 }, { buffType = "aura"}, "WARLOCK") -- Demon Armor
|
||||
Buff({ 28176 }, { buffType = "aura"}, "WARLOCK") -- Fel Armor
|
||||
Buff({ 23759 }, { buffType = "aura"}, "WARLOCK") -- Master Demonologist
|
||||
Buff({ 34936 }, { buffType = "magic"}, "WARLOCK") -- Backlash
|
||||
Buff({ 5697 }, { buffType = "magic"}, "WARLOCK") -- Unending Breath
|
||||
Buff({ 132 }, { buffType = "magic"}, "WARLOCK") -- Detect Invisibility
|
||||
Buff({ 1949 }, { buffType = "aura"}, "WARLOCK") -- Hellfire
|
||||
Buff({ 6229 }, { buffType = "magic"}, "WARLOCK") -- Shadow Ward
|
||||
Buff({ 19480 }, { buffType = "magic"}, "WARLOCK") -- Paranoia
|
||||
Buff({ 7812 }, { buffType = "magic"}, "WARLOCK") -- Sacrifice
|
||||
Buff({ 2947 }, { buffType = "magic"}, "WARLOCK") -- Fire Shield
|
||||
|
||||
|
||||
---------------
|
||||
-- SHAMAN
|
||||
---------------
|
||||
|
||||
Buff({ 8178 } ,{ buffType = "magic" }, "SHAMAN") -- Grounding Totem Effect
|
||||
|
||||
Buff({ 30823 } ,{ buffType = "magic" }, "SHAMAN") -- Shamanistic Rage
|
||||
Buff({ 32182 } ,{ buffType = "magic" }, "SHAMAN") -- Heroism
|
||||
Buff({ 2825 } ,{ buffType = "magic" }, "SHAMAN") -- Bloodlust
|
||||
Buff({ 974 } ,{ buffType = "magic" }, "SHAMAN") -- Earth Shield
|
||||
Buff({ 24398 } ,{ buffType = "magic" }, "SHAMAN") -- Water Shield
|
||||
Buff({ 324 } ,{ buffType = "magic" }, "SHAMAN") -- Lightning Shield
|
||||
Buff({ 16188 } ,{ buffType = "magic" }, "SHAMAN") -- Nature's Swiftness
|
||||
Buff({ 16166 } ,{ buffType = "magic" }, "SHAMAN") -- Elemental Mastery
|
||||
|
||||
--------------
|
||||
-- PALADIN
|
||||
-- PALADIN --TODO
|
||||
--------------
|
||||
|
||||
--Buff( { 25771 }, { buffType = "immune"}, "PALADIN") -- Forbearance
|
||||
--Blessings
|
||||
Buff( { 1022, 5599, 10278 }, { buffType = "magic"}, "PALADIN") -- Blessing of Protection
|
||||
Buff( { 6940 }, { buffType = "magic"}, "PALADIN") -- Blessing of Sacrifice
|
||||
Buff( { 1044 }, { buffType = "magic"}, "PALADIN") -- Blessing of Freedom
|
||||
Buff( { 19740, 19834, 19835, 19836, 19837, 19838, 25291, 27140 }, { buffType = "magic"}, "PALADIN") -- Blessing of Might
|
||||
Buff( { 19742 }, { buffType = "magic"}, "PALADIN") -- Blessing of Wisdom
|
||||
Buff( { 20217 }, { buffType = "magic"}, "PALADIN") -- Blessing of Kings
|
||||
Buff( { 19977 }, { buffType = "magic"}, "PALADIN") -- Blessing of Light
|
||||
Buff( { 1038 }, { buffType = "magic"}, "PALADIN") -- Blessing of Salvation
|
||||
Buff( { 20911 }, { buffType = "magic"}, "PALADIN") -- Blessing of Sanctuary
|
||||
Buff( { 25898 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Kings
|
||||
Buff( { 25890 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Light
|
||||
Buff( { 25782 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Might
|
||||
Buff( { 25895 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Salvation
|
||||
Buff( { 25899 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Sanctuary
|
||||
Buff( { 25894 }, { buffType = "magic"}, "PALADIN") -- Greater Blessing of Wisdom
|
||||
Buff( { 642 }, { buffType = "magic"}, "PALADIN") -- Divine Shield
|
||||
--Auras
|
||||
Buff( { 465, 10290, 643, 10291, 1032, 10292, 10293, 27149 }, { buffType = "aura"}, "PALADIN") -- Devotion Aura
|
||||
Buff( { 7294 }, { buffType = "aura"}, "PALADIN") -- Retribution Aura
|
||||
Buff( { 19746 }, { buffType = "aura"}, "PALADIN") -- Concentration Aura
|
||||
Buff( { 19876 }, { buffType = "aura"}, "PALADIN") -- Shadow Resistance Aura
|
||||
Buff( { 20218 }, { buffType = "aura"}, "PALADIN") -- Sanctity Aura
|
||||
Buff( { 19888 }, { buffType = "aura"}, "PALADIN") -- Frost Resistance Aura
|
||||
Buff( { 19891 }, { buffType = "aura"}, "PALADIN") -- Fire Resistance Aura
|
||||
Buff( { 32223 }, { buffType = "aura"}, "PALADIN") -- Crusader Aura
|
||||
--Seals
|
||||
Buff( { 20154, 20287, 20288, 20289, 20290, 20291, 20292, 20293, 27155 }, { buffType = "magic"}, "PALADIN") -- Seal of Righteousness
|
||||
Buff( { 31892 }, { buffType = "magic"}, "PALADIN") -- Seal of Blood
|
||||
Buff( { 20375 }, { buffType = "magic"}, "PALADIN") -- Seal of Command
|
||||
Buff( { 20164 }, { buffType = "magic"}, "PALADIN") -- Seal of Justice
|
||||
Buff( { 20165 }, { buffType = "magic"}, "PALADIN") -- Seal of Light
|
||||
Buff( { 15277 }, { buffType = "magic"}, "PALADIN") -- Seal of Reckoning
|
||||
Buff( { 31801 }, { buffType = "magic"}, "PALADIN") -- Seal of Vengeance
|
||||
Buff( { 20166 }, { buffType = "magic"}, "PALADIN") -- Seal of Wisdom
|
||||
Buff( { 21082 }, { buffType = "magic"}, "PALADIN") -- Seal of the Crusade
|
||||
|
||||
|
||||
-------------
|
||||
|
@ -1,5 +1,5 @@
|
||||
local select, floor, str_len, tostring, str_sub, str_find = select, math.floor, string.len, tostring, string.sub, string.find
|
||||
local IsInInstance = IsInInstance
|
||||
local floor, str_len, tostring, str_sub, str_find = math.floor, string.len, tostring, string.sub, string.find
|
||||
local CreateFrame = CreateFrame
|
||||
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
local L = Gladdy.L
|
||||
@ -8,47 +8,45 @@ local ACDFrame = Gladdy:NewModule("Countdown", nil, {
|
||||
arenaCountdownSize = 256
|
||||
})
|
||||
|
||||
function ACDFrame:OnEvent(event, ...)
|
||||
self[event](self, ...)
|
||||
end
|
||||
|
||||
function ACDFrame:Initialize()
|
||||
self.hidden = false
|
||||
self.countdown = -1
|
||||
self.texturePath = "Interface\\AddOns\\Gladdy\\Images\\Countdown\\";
|
||||
ACDFrame:RegisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL")
|
||||
ACDFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
|
||||
end
|
||||
|
||||
function ACDFrame:OnEvent(event, ...)
|
||||
-- functions created in "object:method"-style have an implicit first parameter of "self", which points to object
|
||||
self[event](self, ...) -- route event parameters to LoseControl:event methods
|
||||
end
|
||||
ACDFrame:SetScript("OnEvent", ACDFrame.OnEvent)
|
||||
|
||||
|
||||
local ACDNumFrame = CreateFrame("Frame", "ACDNumFrame", UIParent)
|
||||
ACDNumFrame:EnableMouse(false)
|
||||
ACDNumFrame:SetHeight(256)
|
||||
ACDNumFrame:SetWidth(256)
|
||||
ACDNumFrame:SetPoint("CENTER", 0, 128)
|
||||
ACDNumFrame:Show()
|
||||
self.ACDNumFrame = ACDNumFrame
|
||||
|
||||
local ACDNumTens = ACDNumFrame:CreateTexture("ACDNumTens", "HIGH")
|
||||
ACDNumTens:SetWidth(256)
|
||||
ACDNumTens:SetHeight(128)
|
||||
ACDNumTens:SetPoint("CENTER", ACDNumFrame, "CENTER", -48, 0)
|
||||
self.ACDNumTens = ACDNumTens
|
||||
|
||||
local ACDNumOnes = ACDNumFrame:CreateTexture("ACDNumOnes", "HIGH")
|
||||
ACDNumOnes:SetWidth(256)
|
||||
ACDNumOnes:SetHeight(128)
|
||||
ACDNumOnes:SetPoint("CENTER", ACDNumFrame, "CENTER", 48, 0)
|
||||
self.ACDNumOnes = ACDNumOnes
|
||||
|
||||
local ACDNumOne = ACDNumFrame:CreateTexture("ACDNumOne", "HIGH")
|
||||
ACDNumOne:SetWidth(256)
|
||||
ACDNumOne:SetHeight(128)
|
||||
ACDNumOne:SetPoint("CENTER", ACDNumFrame, "CENTER", 0, 0)
|
||||
self.ACDNumOne = ACDNumOne
|
||||
|
||||
function ACDFrame:PLAYER_ENTERING_WORLD()
|
||||
self:RegisterMessage("JOINED_ARENA")
|
||||
end
|
||||
|
||||
local instanceType = select(2, IsInInstance())
|
||||
if (( instanceType == "arena" )) then
|
||||
ACDFrame:SetScript("OnUpdate", function(self, elapse)
|
||||
function ACDFrame.OnUpdate(self, elapse)
|
||||
if (self.countdown > 0 and Gladdy.db.countdown) then
|
||||
self.hidden = false;
|
||||
|
||||
@ -56,37 +54,40 @@ function ACDFrame:PLAYER_ENTERING_WORLD()
|
||||
local str = tostring(floor(self.countdown - elapse));
|
||||
|
||||
if (floor(self.countdown - elapse) == 0) then
|
||||
ACDNumTens:Hide();
|
||||
ACDNumOnes:Hide();
|
||||
ACDNumOne:Hide();
|
||||
self.ACDNumTens:Hide();
|
||||
self.ACDNumOnes:Hide();
|
||||
self.ACDNumOne:Hide();
|
||||
elseif (str_len(str) == 2) then
|
||||
-- Display has 2 digits
|
||||
ACDNumOne:Hide();
|
||||
ACDNumTens:Show();
|
||||
ACDNumOnes:Show();
|
||||
self.ACDNumOne:Hide();
|
||||
self.ACDNumTens:Show();
|
||||
self.ACDNumOnes:Show();
|
||||
|
||||
ACDNumTens:SetTexture(self.texturePath .. str_sub(str, 0, 1));
|
||||
ACDNumOnes:SetTexture(self.texturePath .. str_sub(str, 2, 2));
|
||||
ACDNumFrame:SetScale(0.7)
|
||||
self.ACDNumTens:SetTexture(self.texturePath .. str_sub(str, 0, 1));
|
||||
self.ACDNumOnes:SetTexture(self.texturePath .. str_sub(str, 2, 2));
|
||||
self.ACDNumFrame:SetScale(0.7)
|
||||
elseif (str_len(str) == 1) then
|
||||
-- Display has 1 digit
|
||||
ACDNumOne:Show();
|
||||
ACDNumOne:SetTexture(self.texturePath .. str_sub(str, 0, 1));
|
||||
ACDNumOnes:Hide();
|
||||
ACDNumTens:Hide();
|
||||
ACDNumFrame:SetScale(1.0)
|
||||
self.ACDNumOne:Show();
|
||||
self.ACDNumOne:SetTexture(self.texturePath .. str_sub(str, 0, 1));
|
||||
self.ACDNumOnes:Hide();
|
||||
self.ACDNumTens:Hide();
|
||||
self.ACDNumFrame:SetScale(1.0)
|
||||
end
|
||||
end
|
||||
self.countdown = self.countdown - elapse;
|
||||
else
|
||||
self.hidden = true;
|
||||
ACDNumTens:Hide();
|
||||
ACDNumOnes:Hide();
|
||||
ACDNumOne:Hide();
|
||||
self.ACDNumTens:Hide();
|
||||
self.ACDNumOnes:Hide();
|
||||
self.ACDNumOne:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
end)
|
||||
end
|
||||
function ACDFrame:JOINED_ARENA()
|
||||
self:RegisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL")
|
||||
self:SetScript("OnEvent", ACDFrame.OnEvent)
|
||||
self:SetScript("OnUpdate", ACDFrame.OnUpdate)
|
||||
end
|
||||
|
||||
function ACDFrame:CHAT_MSG_BG_SYSTEM_NEUTRAL(msg)
|
||||
@ -129,29 +130,36 @@ function ACDFrame:CHAT_MSG_BG_SYSTEM_NEUTRAL(msg)
|
||||
end
|
||||
|
||||
function ACDFrame:UpdateFrame()
|
||||
ACDNumFrame:SetHeight(Gladdy.db.arenaCountdownSize)
|
||||
ACDNumFrame:SetWidth(Gladdy.db.arenaCountdownSize)
|
||||
ACDNumFrame:SetPoint("CENTER", 0, 128)
|
||||
self.ACDNumFrame:SetHeight(Gladdy.db.arenaCountdownSize)
|
||||
self.ACDNumFrame:SetWidth(Gladdy.db.arenaCountdownSize)
|
||||
self.ACDNumFrame:SetPoint("CENTER", 0, 128)
|
||||
|
||||
ACDNumTens:SetWidth(Gladdy.db.arenaCountdownSize)
|
||||
ACDNumTens:SetHeight(Gladdy.db.arenaCountdownSize/2)
|
||||
ACDNumTens:SetPoint("CENTER", ACDNumFrame, "CENTER", -(Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0)
|
||||
self.ACDNumTens:SetWidth(Gladdy.db.arenaCountdownSize)
|
||||
self.ACDNumTens:SetHeight(Gladdy.db.arenaCountdownSize/2)
|
||||
self.ACDNumTens:SetPoint("CENTER", self.ACDNumFrame, "CENTER", -(Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0)
|
||||
|
||||
ACDNumOnes:SetWidth(Gladdy.db.arenaCountdownSize)
|
||||
ACDNumOnes:SetHeight(Gladdy.db.arenaCountdownSize/2)
|
||||
ACDNumOnes:SetPoint("CENTER", ACDNumFrame, "CENTER", (Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0)
|
||||
self.ACDNumOnes:SetWidth(Gladdy.db.arenaCountdownSize)
|
||||
self.ACDNumOnes:SetHeight(Gladdy.db.arenaCountdownSize/2)
|
||||
self.ACDNumOnes:SetPoint("CENTER", self.ACDNumFrame, "CENTER", (Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0)
|
||||
|
||||
ACDNumOne:SetWidth(Gladdy.db.arenaCountdownSize)
|
||||
ACDNumOne:SetHeight(Gladdy.db.arenaCountdownSize/2)
|
||||
ACDNumOne:SetPoint("CENTER", ACDNumFrame, "CENTER", 0, 0)
|
||||
self.ACDNumOne:SetWidth(Gladdy.db.arenaCountdownSize)
|
||||
self.ACDNumOne:SetHeight(Gladdy.db.arenaCountdownSize/2)
|
||||
self.ACDNumOne:SetPoint("CENTER", self.ACDNumFrame, "CENTER", 0, 0)
|
||||
end
|
||||
|
||||
function ACDFrame:Test()
|
||||
self.countdown = 30
|
||||
self:JOINED_ARENA()
|
||||
end
|
||||
|
||||
function ACDFrame:Reset()
|
||||
self.countdown = 0
|
||||
self:UnregisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL")
|
||||
self:SetScript("OnUpdate", nil)
|
||||
self.hidden = true;
|
||||
self.ACDNumTens:Hide();
|
||||
self.ACDNumOnes:Hide();
|
||||
self.ACDNumOne:Hide();
|
||||
end
|
||||
|
||||
function ACDFrame:GetOptions()
|
||||
|
@ -42,6 +42,7 @@ end
|
||||
|
||||
function Auras:CreateFrame(unit)
|
||||
local auraFrame = CreateFrame("Frame", nil, Gladdy.modules.Classicon.frames[unit])
|
||||
auraFrame:EnableMouse(false)
|
||||
auraFrame:SetFrameStrata("MEDIUM")
|
||||
auraFrame:SetFrameLevel(3)
|
||||
|
||||
@ -59,6 +60,7 @@ function Auras:CreateFrame(unit)
|
||||
auraFrame.cooldownFrame:SetFrameLevel(5)
|
||||
|
||||
auraFrame.icon = auraFrame:CreateTexture(nil, "BACKGROUND")
|
||||
auraFrame.icon:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
|
||||
auraFrame.icon:SetAllPoints(auraFrame)
|
||||
|
||||
auraFrame.icon.overlay = auraFrame.cooldownFrame:CreateTexture(nil, "OVERLAY")
|
||||
|
@ -506,8 +506,10 @@ function BuffsDebuffs:AddAura(unit, spellID, auraType, duration, timeLeft, stack
|
||||
aura = tremove(self.framePool, #self.framePool)
|
||||
else
|
||||
aura = CreateFrame("Frame")
|
||||
aura:EnableMouse(false)
|
||||
aura:SetFrameLevel(3)
|
||||
aura.texture = aura:CreateTexture(nil, "BACKGROUND")
|
||||
aura.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
|
||||
aura.texture:SetAllPoints(aura)
|
||||
aura.cooldowncircle = CreateFrame("Cooldown", nil, aura, "CooldownFrameTemplate")
|
||||
aura.cooldowncircle:SetFrameLevel(4)
|
||||
|
@ -57,6 +57,7 @@ end
|
||||
|
||||
function Castbar:CreateFrame(unit)
|
||||
local castBar = CreateFrame("Frame", nil, Gladdy.buttons[unit], BackdropTemplateMixin and "BackdropTemplate")
|
||||
castBar:EnableMouse(false)
|
||||
castBar.unit = unit
|
||||
|
||||
castBar:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.castBarBorderStyle),
|
||||
@ -85,6 +86,7 @@ function Castbar:CreateFrame(unit)
|
||||
|
||||
castBar.icon = CreateFrame("Frame", nil, castBar)
|
||||
castBar.icon.texture = castBar.icon:CreateTexture(nil, "BACKGROUND")
|
||||
castBar.icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
|
||||
castBar.icon.texture:SetAllPoints(castBar.icon)
|
||||
castBar.icon.texture.overlay = castBar.icon:CreateTexture(nil, "BORDER")
|
||||
castBar.icon.texture.overlay:SetAllPoints(castBar.icon.texture)
|
||||
|
@ -1,5 +1,8 @@
|
||||
local select = select
|
||||
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
local CreateFrame = CreateFrame
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
local L = Gladdy.L
|
||||
local Classicon = Gladdy:NewModule("Classicon", 80, {
|
||||
classIconPos = "LEFT",
|
||||
@ -7,21 +10,87 @@ local Classicon = Gladdy:NewModule("Classicon", 80, {
|
||||
classIconWidthFactor = 0.9,
|
||||
classIconBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp",
|
||||
classIconBorderColor = { r = 0, g = 0, b = 0, a = 1 },
|
||||
classIconSpecIcon = false,
|
||||
})
|
||||
|
||||
local classIconPath = "Interface\\Addons\\Gladdy\\Images\\Classes\\"
|
||||
local classIcons = {
|
||||
["DRUID"] = classIconPath .. "inv_misc_monsterclaw_04",
|
||||
["HUNTER"] = classIconPath .. "inv_weapon_bow_07",
|
||||
["MAGE"] = classIconPath .. "inv_staff_13",
|
||||
["PALADIN"] = classIconPath .. "inv_hammer_01",
|
||||
["PRIEST"] = classIconPath .. "inv_staff_30",
|
||||
["ROGUE"] = classIconPath .. "inv_throwingknife_04",
|
||||
["SHAMAN"] = classIconPath .. "inv_jewelry_talisman_04",
|
||||
["WARLOCK"] = classIconPath .. "spell_nature_drowsy",
|
||||
["WARRIOR"] = classIconPath .. "inv_sword_27",
|
||||
}
|
||||
|
||||
local specIcons = {
|
||||
--DRUID
|
||||
["DRUID"] = {
|
||||
[L["Balance"]] = select(3, GetSpellInfo(8921)), -- Moonfire
|
||||
[L["Feral"]] = select(3, GetSpellInfo(27545)), -- Cat Form
|
||||
[L["Restoration"]] = select(3, GetSpellInfo(5185)), -- Healing Touch
|
||||
},
|
||||
["HUNTER"] = {
|
||||
[L["Beast Mastery"]] = select(3, GetSpellInfo(1515)), -- Tame Beast
|
||||
[L["Marksmanship"]] = select(3, GetSpellInfo(42243)), -- Volley
|
||||
[L["Survival"]] = select(3, GetSpellInfo(1495)), -- Mongoose Bite
|
||||
},
|
||||
["MAGE"] = {
|
||||
[L["Arcane"]] = select(3, GetSpellInfo(1459)), -- Arcane Intellect
|
||||
[L["Fire"]] = select(3, GetSpellInfo(133)), -- Fireball
|
||||
[L["Frost"]] = select(3, GetSpellInfo(116)), -- Frostbolt
|
||||
},
|
||||
["PALADIN"] = {
|
||||
[L["Holy"]] = select(3, GetSpellInfo(635)), -- Holy Light
|
||||
[L["Retribution"]] = select(3, GetSpellInfo(7294)), -- Retribution Aura
|
||||
[L["Protection"]] = select(3, GetSpellInfo(32828)), -- Protection Aura
|
||||
},
|
||||
["PRIEST"] = {
|
||||
[L["Discipline"]] = select(3, GetSpellInfo(1243)), -- Power Word: Fortitude
|
||||
[L["Shadow"]] = select(3, GetSpellInfo(589)), -- Shadow Word: Pain
|
||||
[L["Holy"]] = select(3, GetSpellInfo(635)), -- Holy Light
|
||||
},
|
||||
["ROGUE"] = {
|
||||
[L["Assassination"]] = select(3, GetSpellInfo(1329)), -- Mutilate (Eviscerate? 2098)
|
||||
[L["Combat"]] = select(3, GetSpellInfo(53)), -- Backstab
|
||||
[L["Subtlety"]] = select(3, GetSpellInfo(1784)), -- Stealth
|
||||
},
|
||||
["SHAMAN"] = {
|
||||
[L["Elemental"]] = select(3, GetSpellInfo(403)), -- Lightning Bolt
|
||||
[L["Enhancement"]] = select(3, GetSpellInfo(324)), -- Lightning Shield
|
||||
[L["Restoration"]] = select(3, GetSpellInfo(331)), -- Healing Wave
|
||||
},
|
||||
["WARLOCK"] = {
|
||||
[L["Affliction"]] = select(3, GetSpellInfo(6789)), -- Affliction
|
||||
[L["Demonology"]] = select(3, GetSpellInfo(5500)), -- Sense Demons
|
||||
[L["Destruction"]] = select(3, GetSpellInfo(5740)), -- Rain of Fire
|
||||
},
|
||||
["WARRIOR"] = {
|
||||
[L["Arms"]] = select(3, GetSpellInfo(12294)), -- Mortal Strike
|
||||
[L["Fury"]] = select(3, GetSpellInfo(12325)), -- Inner Rage
|
||||
[L["Protection"]] = select(3, GetSpellInfo(71)), -- Defensive Stance
|
||||
},
|
||||
}
|
||||
|
||||
function Classicon:Initialize()
|
||||
self.frames = {}
|
||||
|
||||
self:RegisterMessage("ENEMY_SPOTTED")
|
||||
self:RegisterMessage("UNIT_DEATH")
|
||||
self:RegisterMessage("UNIT_SPEC")
|
||||
end
|
||||
|
||||
function Classicon:CreateFrame(unit)
|
||||
local classIcon = CreateFrame("Frame", nil, Gladdy.buttons[unit])
|
||||
classIcon:EnableMouse(false)
|
||||
classIcon:SetFrameStrata("MEDIUM")
|
||||
classIcon:SetFrameLevel(1)
|
||||
classIcon.texture = classIcon:CreateTexture(nil, "BACKGROUND")
|
||||
classIcon.texture:SetAllPoints(classIcon)
|
||||
classIcon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
|
||||
|
||||
classIcon.texture.overlay = classIcon:CreateTexture(nil, "BORDER")
|
||||
classIcon.texture.overlay:SetAllPoints(classIcon)
|
||||
@ -65,6 +134,25 @@ function Classicon:UpdateFrame(unit)
|
||||
classIcon.texture.overlay:SetVertexColor(Gladdy.db.classIconBorderColor.r, Gladdy.db.classIconBorderColor.g, Gladdy.db.classIconBorderColor.b, Gladdy.db.classIconBorderColor.a)
|
||||
end
|
||||
|
||||
function Classicon:ENEMY_SPOTTED(unit)
|
||||
local classIcon = self.frames[unit]
|
||||
if (not classIcon) then
|
||||
return
|
||||
end
|
||||
|
||||
classIcon.texture:SetTexture(classIcons[Gladdy.buttons[unit].class])
|
||||
--classIcon.texture:SetTexCoord(unpack(CLASS_BUTTONS[Gladdy.buttons[unit].class]))
|
||||
classIcon.texture:SetAllPoints(classIcon)
|
||||
end
|
||||
|
||||
function Classicon:UNIT_SPEC(unit, spec)
|
||||
local classIcon = self.frames[unit]
|
||||
if (not Gladdy.db.classIconSpecIcon or not classIcon) then
|
||||
return
|
||||
end
|
||||
classIcon.texture:SetTexture(specIcons[Gladdy.buttons[unit].class][spec])
|
||||
end
|
||||
|
||||
function Classicon:Test(unit)
|
||||
self:ENEMY_SPOTTED(unit)
|
||||
end
|
||||
@ -85,11 +173,30 @@ function Classicon:GetOptions()
|
||||
name = L["Class Icon"],
|
||||
order = 2,
|
||||
},
|
||||
classIconSpecIcon = {
|
||||
type = "toggle",
|
||||
name = L["Show Spec Icon"],
|
||||
desc = L["Shows Spec Icon once spec is detected"],
|
||||
order = 3,
|
||||
get = function(info) return Gladdy.db.classIconSpecIcon end,
|
||||
set = function(info, value)
|
||||
Gladdy.db.classIconSpecIcon = value
|
||||
if Gladdy.curBracket and Gladdy.curBracket > 0 then
|
||||
for i=1,Gladdy.curBracket do
|
||||
local unit = "arena" .. i
|
||||
if (Gladdy.buttons[unit] and Gladdy.buttons[unit].spec) then
|
||||
self:ENEMY_SPOTTED(unit)
|
||||
self:UNIT_SPEC(unit, Gladdy.buttons[unit].spec)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
},
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
order = 3,
|
||||
order = 4,
|
||||
args = {
|
||||
size = {
|
||||
type = "group",
|
||||
@ -165,38 +272,3 @@ function Classicon:GetOptions()
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
local function getClassIcon(class)
|
||||
-- see https://wow.gamepedia.com/Class_icon
|
||||
local classIcon = "Interface\\Addons\\Gladdy\\Images\\Classes\\"
|
||||
if class == "DRUID" then
|
||||
return classIcon .. "inv_misc_monsterclaw_04"
|
||||
elseif class == "HUNTER" then
|
||||
return classIcon .. "inv_weapon_bow_07"
|
||||
elseif class == "MAGE" then
|
||||
return classIcon .. "inv_staff_13"
|
||||
elseif class == "PALADIN" then
|
||||
return classIcon .. "inv_hammer_01"
|
||||
elseif class == "PRIEST" then
|
||||
return classIcon .. "inv_staff_30"
|
||||
elseif class == "ROGUE" then
|
||||
return classIcon .. "inv_throwingknife_04"
|
||||
elseif class == "SHAMAN" then
|
||||
return classIcon .. "inv_jewelry_talisman_04"
|
||||
elseif class == "WARLOCK" then
|
||||
return classIcon .. "spell_nature_drowsy"
|
||||
elseif class == "WARRIOR" then
|
||||
return classIcon .. "inv_sword_27"
|
||||
end
|
||||
end
|
||||
|
||||
function Classicon:ENEMY_SPOTTED(unit)
|
||||
local classIcon = self.frames[unit]
|
||||
if (not classIcon) then
|
||||
return
|
||||
end
|
||||
|
||||
classIcon.texture:SetTexture(getClassIcon(Gladdy.buttons[unit].class))
|
||||
--classIcon.texture:SetTexCoord(unpack(CLASS_BUTTONS[Gladdy.buttons[unit].class]))
|
||||
classIcon.texture:SetAllPoints(classIcon)
|
||||
end
|
242
Modules/CombatIndicator.lua
Normal file
242
Modules/CombatIndicator.lua
Normal file
@ -0,0 +1,242 @@
|
||||
local select = select
|
||||
local UnitExists, UnitAffectingCombat, GetSpellInfo = UnitExists, UnitAffectingCombat, GetSpellInfo
|
||||
local CreateFrame = CreateFrame
|
||||
local ANCHORS = { ["LEFT"] = "RIGHT", ["RIGHT"] = "LEFT", ["BOTTOM"] = "TOP", ["TOP"] = "BOTTOM"}
|
||||
|
||||
local Gladdy = LibStub("Gladdy")
|
||||
local L = Gladdy.L
|
||||
|
||||
local CombatIndicator = Gladdy:NewModule("CombatIndicator", nil, {
|
||||
ciEnabled = true,
|
||||
ciSize = 20,
|
||||
ciAlpha = 1,
|
||||
ciWidthFactor = 1,
|
||||
ciAnchor = "healthBar",
|
||||
ciPos = "TOP",
|
||||
ciXOffset = 0,
|
||||
ciYOffset = -31,
|
||||
ciBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp",
|
||||
ciBorderColor = { r = 0, g = 0, b = 0, a = 1 },
|
||||
})
|
||||
|
||||
function CombatIndicator:Initialize()
|
||||
self.frames = {}
|
||||
self:RegisterMessage("JOINED_ARENA")
|
||||
self.updateInterval = 0.05
|
||||
self.combatIndicatorIcon = select(3, GetSpellInfo(674))
|
||||
end
|
||||
|
||||
function CombatIndicator:JOINED_ARENA()
|
||||
self:SetScript("OnUpdate", CombatIndicator.OnEvent)
|
||||
self.lastTimeUpdated = 0
|
||||
end
|
||||
|
||||
function CombatIndicator:CreateFrame(unit)
|
||||
local button = Gladdy.buttons[unit]
|
||||
if not button then
|
||||
return
|
||||
end
|
||||
local ciFrame = CreateFrame("Frame", "GladdyCombatindicator" .. unit, button)
|
||||
ciFrame:EnableMouse(false)
|
||||
ciFrame:SetFrameStrata("HIGH")
|
||||
ciFrame:SetHeight(Gladdy.db.ciSize)
|
||||
ciFrame:SetWidth(Gladdy.db.ciSize * Gladdy.db.ciWidthFactor)
|
||||
|
||||
ciFrame.texture = ciFrame:CreateTexture(nil, "OVERLAY")
|
||||
ciFrame.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
|
||||
ciFrame.texture:SetTexture(self.combatIndicatorIcon)
|
||||
ciFrame.texture:SetAllPoints(ciFrame)
|
||||
|
||||
ciFrame.border = ciFrame:CreateTexture(nil, "OVERLAY")
|
||||
ciFrame.border:SetAllPoints(ciFrame)
|
||||
ciFrame.border:SetTexture(Gladdy.db.ciBorderStyle)
|
||||
ciFrame.border:SetVertexColor(Gladdy.db.ciBorderColor.r, Gladdy.db.ciBorderColor.g, Gladdy.db.ciBorderColor.b, Gladdy.db.ciBorderColor.a)
|
||||
|
||||
self.frames[unit] = ciFrame
|
||||
button.ciFrame = ciFrame
|
||||
end
|
||||
|
||||
function CombatIndicator:UpdateFrame(unit)
|
||||
local button = Gladdy.buttons[unit]
|
||||
local ciFrame = self.frames[unit]
|
||||
if (not button or not ciFrame) then
|
||||
return
|
||||
end
|
||||
ciFrame:SetHeight(Gladdy.db.ciSize)
|
||||
ciFrame:SetWidth(Gladdy.db.ciSize * Gladdy.db.ciWidthFactor)
|
||||
ciFrame.border:SetVertexColor(Gladdy.db.ciBorderColor.r, Gladdy.db.ciBorderColor.g, Gladdy.db.ciBorderColor.b, Gladdy.db.ciBorderColor.a)
|
||||
|
||||
ciFrame:ClearAllPoints()
|
||||
ciFrame:SetPoint(ANCHORS[Gladdy.db.ciPos], Gladdy.buttons[unit][Gladdy.db.ciAnchor], Gladdy.db.ciPos, Gladdy.db.ciXOffset, Gladdy.db.ciYOffset)
|
||||
|
||||
ciFrame:SetAlpha(Gladdy.db.ciAlpha)
|
||||
|
||||
if (Gladdy.db.ciEnabled == false) then
|
||||
ciFrame:Hide()
|
||||
else
|
||||
ciFrame:Show()
|
||||
end
|
||||
end
|
||||
|
||||
function CombatIndicator:Test()
|
||||
self.test = true
|
||||
self:JOINED_ARENA()
|
||||
end
|
||||
|
||||
function CombatIndicator:Reset()
|
||||
self:SetScript("OnUpdate", nil)
|
||||
self.test = false
|
||||
end
|
||||
|
||||
function CombatIndicator.OnEvent(self, elapsed)
|
||||
self.lastTimeUpdated = self.lastTimeUpdated + elapsed
|
||||
|
||||
if (self.lastTimeUpdated > self.updateInterval) then
|
||||
for i=1,Gladdy.curBracket do
|
||||
local unit = "arena" .. i
|
||||
if CombatIndicator.test or (UnitExists(unit) and UnitAffectingCombat(unit)) then
|
||||
CombatIndicator.frames[unit]:Show()
|
||||
else
|
||||
CombatIndicator.frames[unit]:Hide()
|
||||
end
|
||||
end
|
||||
self.lastTimeUpdated = 0
|
||||
end
|
||||
end
|
||||
|
||||
function CombatIndicator:GetOptions()
|
||||
return {
|
||||
headerTrinket = {
|
||||
type = "header",
|
||||
name = L["Racial"],
|
||||
order = 2,
|
||||
},
|
||||
ciEnabled = Gladdy:option({
|
||||
type = "toggle",
|
||||
name = L["Enabled"],
|
||||
desc = L["Enable ci icon"],
|
||||
order = 3,
|
||||
}),
|
||||
group = {
|
||||
type = "group",
|
||||
childGroups = "tree",
|
||||
name = "Frame",
|
||||
order = 4,
|
||||
args = {
|
||||
general = {
|
||||
type = "group",
|
||||
name = L["Frame"],
|
||||
order = 1,
|
||||
args = {
|
||||
header = {
|
||||
type = "header",
|
||||
name = L["Frame"],
|
||||
order = 1,
|
||||
},
|
||||
ciSize = Gladdy:option({
|
||||
type = "range",
|
||||
name = L["Icon size"],
|
||||
min = 5,
|
||||
max = 100,
|
||||
step = 1,
|
||||
order = 2,
|
||||
}),
|
||||
ciWidthFactor = Gladdy:option({
|
||||
type = "range",
|
||||
name = L["Icon width factor"],
|
||||
min = 0.5,
|
||||
max = 2,
|
||||
step = 0.05,
|
||||
order = 3,
|
||||
}),
|
||||
ciAlpha = Gladdy:option({
|
||||
type = "range",
|
||||
name = L["Alpha"],
|
||||
min = 0,
|
||||
max = 1,
|
||||
step = 0.05,
|
||||
order = 4,
|
||||
}),
|
||||
},
|
||||
},
|
||||
position = {
|
||||
type = "group",
|
||||
name = L["Position"],
|
||||
order = 4,
|
||||
args = {
|
||||
header = {
|
||||
type = "header",
|
||||
name = L["Position"],
|
||||
order = 4,
|
||||
},
|
||||
ciAnchor = Gladdy:option({
|
||||
type = "select",
|
||||
name = L["Anchor"],
|
||||
desc = L["This changes the anchor of the ci icon"],
|
||||
order = 20,
|
||||
values = {
|
||||
["trinket"] = L["Trinket"],
|
||||
["classIcon"] = L["Class Icon"],
|
||||
["healthBar"] = L["Health Bar"],
|
||||
["powerBar"] = L["Power Bar"],
|
||||
},
|
||||
}),
|
||||
ciPos = Gladdy:option({
|
||||
type = "select",
|
||||
name = L["Position"],
|
||||
desc = L["This changes position relative to its anchor of the ci icon"],
|
||||
order = 21,
|
||||
values = {
|
||||
["LEFT"] = L["Left"],
|
||||
["RIGHT"] = L["Right"],
|
||||
["TOP"] = L["Top"],
|
||||
["BOTTOM"] = L["Bottom"],
|
||||
},
|
||||
}),
|
||||
ciXOffset = Gladdy:option({
|
||||
type = "range",
|
||||
name = L["Horizontal offset"],
|
||||
order = 23,
|
||||
min = -400,
|
||||
max = 400,
|
||||
step = 0.1,
|
||||
}),
|
||||
ciYOffset = Gladdy:option({
|
||||
type = "range",
|
||||
name = L["Vertical offset"],
|
||||
order = 24,
|
||||
min = -400,
|
||||
max = 400,
|
||||
step = 0.1,
|
||||
}),
|
||||
},
|
||||
},
|
||||
border = {
|
||||
type = "group",
|
||||
name = L["Border"],
|
||||
order = 4,
|
||||
args = {
|
||||
header = {
|
||||
type = "header",
|
||||
name = L["Border"],
|
||||
order = 4,
|
||||
},
|
||||
ciBorderStyle = Gladdy:option({
|
||||
type = "select",
|
||||
name = L["Border style"],
|
||||
order = 31,
|
||||
values = Gladdy:GetIconStyles()
|
||||
}),
|
||||
ciBorderColor = Gladdy:colorOption({
|
||||
type = "color",
|
||||
name = L["Border color"],
|
||||
desc = L["Color of the border"],
|
||||
order = 32,
|
||||
hasAlpha = true,
|
||||
}),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
@ -93,11 +93,13 @@ function Cooldowns:CreateFrame(unit)
|
||||
local button = Gladdy.buttons[unit]
|
||||
-- Cooldown frame
|
||||
local spellCooldownFrame = CreateFrame("Frame", nil, button)
|
||||
spellCooldownFrame:EnableMouse(false)
|
||||
for x = 1, 14 do
|
||||
local icon = CreateFrame("Frame", nil, spellCooldownFrame)
|
||||
icon:EnableMouse(false)
|
||||
icon:SetFrameLevel(3)
|
||||
icon.texture = icon:CreateTexture(nil, "BACKGROUND")
|
||||
icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
|
||||
icon.texture:SetAllPoints(icon)
|
||||
|
||||
icon.cooldown = CreateFrame("Cooldown", nil, icon, "CooldownFrameTemplate")
|
||||
|
@ -67,6 +67,7 @@ end
|
||||
|
||||
function Diminishings:CreateFrame(unit)
|
||||
local drFrame = CreateFrame("Frame", nil, Gladdy.buttons[unit])
|
||||
drFrame:EnableMouse(false)
|
||||
|
||||
for i = 1, 16 do
|
||||
local icon = CreateFrame("Frame", "GladdyDr" .. unit .. "Icon" .. i, drFrame)
|
||||
@ -74,6 +75,7 @@ function Diminishings:CreateFrame(unit)
|
||||
icon:EnableMouse(false)
|
||||
icon:SetFrameLevel(3)
|
||||
icon.texture = icon:CreateTexture(nil, "BACKGROUND")
|
||||
icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
|
||||
icon.texture:SetAllPoints(icon)
|
||||
icon:SetScript("OnUpdate", function(self, elapsed)
|
||||
if (self.active) then
|
||||
@ -229,9 +231,9 @@ function Diminishings:UpdateFrame(unit)
|
||||
icon.border:SetTexture(Gladdy.db.drBorderStyle)
|
||||
end
|
||||
|
||||
icon.texture:SetTexCoord(.1, .9, .1, .9)
|
||||
icon.texture:SetPoint("TOPLEFT", icon, "TOPLEFT", 2, -2)
|
||||
icon.texture:SetPoint("BOTTOMRIGHT", icon, "BOTTOMRIGHT", -2, 2)
|
||||
--icon.texture:SetTexCoord(.1, .9, .1, .9)
|
||||
--icon.texture:SetPoint("TOPLEFT", icon, "TOPLEFT", 2, -2)
|
||||
--icon.texture:SetPoint("BOTTOMRIGHT", icon, "BOTTOMRIGHT", -2, 2)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -19,6 +19,7 @@ local Healthbar = Gladdy:NewModule("Healthbar", 100, {
|
||||
healthBarFontColor = { r = 1, g = 1, b = 1, a = 1 },
|
||||
healthBarNameFontSize = 12,
|
||||
healthBarHealthFontSize = 12,
|
||||
healthNameToArenaId = false,
|
||||
healthName = true,
|
||||
healthActual = false,
|
||||
healthMax = true,
|
||||
@ -27,6 +28,7 @@ local Healthbar = Gladdy:NewModule("Healthbar", 100, {
|
||||
|
||||
function Healthbar:Initialize()
|
||||
self.frames = {}
|
||||
self:RegisterMessage("JOINED_ARENA")
|
||||
self:RegisterMessage("ENEMY_SPOTTED")
|
||||
self:RegisterMessage("UNIT_DESTROYED")
|
||||
self:RegisterMessage("UNIT_DEATH")
|
||||
@ -36,6 +38,7 @@ function Healthbar:CreateFrame(unit)
|
||||
local button = Gladdy.buttons[unit]
|
||||
|
||||
local healthBar = CreateFrame("Frame", nil, Gladdy.buttons[unit], BackdropTemplateMixin and "BackdropTemplate")
|
||||
healthBar:EnableMouse(false)
|
||||
healthBar:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.healthBarBorderStyle),
|
||||
edgeSize = Gladdy.db.healthBarBorderSize })
|
||||
healthBar:SetBackdropBorderColor(Gladdy.db.healthBarBorderColor.r, Gladdy.db.healthBarBorderColor.g, Gladdy.db.healthBarBorderColor.b, Gladdy.db.healthBarBorderColor.a)
|
||||
@ -210,10 +213,20 @@ function Healthbar:Test(unit)
|
||||
return
|
||||
end
|
||||
|
||||
self:JOINED_ARENA()
|
||||
self:ENEMY_SPOTTED(unit)
|
||||
self:UNIT_HEALTH(unit, button.health, button.healthMax)
|
||||
end
|
||||
|
||||
function Healthbar:JOINED_ARENA()
|
||||
if Gladdy.db.healthNameToArenaId and Gladdy.db.healthName then
|
||||
for i=1,Gladdy.curBracket do
|
||||
local healthBar = self.frames["arena" .. i]
|
||||
healthBar.nameText:SetText("Arena" .. i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Healthbar:ENEMY_SPOTTED(unit)
|
||||
local healthBar = self.frames[unit]
|
||||
local button = Gladdy.buttons[unit]
|
||||
@ -228,7 +241,10 @@ function Healthbar:ENEMY_SPOTTED(unit)
|
||||
healthBar.hp:SetValue(health)
|
||||
Healthbar:SetHealthText(healthBar, health, healthMax)
|
||||
end
|
||||
if Gladdy.db.healthName and not Gladdy.db.healthNameToArenaId then
|
||||
healthBar.nameText:SetText(button.name)
|
||||
end
|
||||
|
||||
healthBar.hp:SetStatusBarColor(RAID_CLASS_COLORS[button.class].r, RAID_CLASS_COLORS[button.class].g, RAID_CLASS_COLORS[button.class].b, 1)
|
||||
end
|
||||
|
||||
@ -459,27 +475,34 @@ function Healthbar:GetOptions()
|
||||
},
|
||||
healthName = option({
|
||||
type = "toggle",
|
||||
name = L["Show the name"],
|
||||
name = L["Show name text"],
|
||||
desc = L["Show the units name"],
|
||||
order = 30,
|
||||
order = 2,
|
||||
}),
|
||||
healthNameToArenaId = option({
|
||||
type = "toggle",
|
||||
name = L["Show ArenaX"],
|
||||
desc = L["Show Arena1-5 as name instead"],
|
||||
order = 3,
|
||||
disabled = function() return not Gladdy.db.healthName end
|
||||
}),
|
||||
healthActual = option({
|
||||
type = "toggle",
|
||||
name = L["Show the actual health"],
|
||||
desc = L["Show the actual health on the health bar"],
|
||||
order = 31,
|
||||
order = 4,
|
||||
}),
|
||||
healthMax = option({
|
||||
type = "toggle",
|
||||
name = L["Show max health"],
|
||||
desc = L["Show max health on the health bar"],
|
||||
order = 32,
|
||||
order = 5,
|
||||
}),
|
||||
healthPercentage = option({
|
||||
type = "toggle",
|
||||
name = L["Show health percentage"],
|
||||
desc = L["Show health percentage on the health bar"],
|
||||
order = 33,
|
||||
order = 6,
|
||||
}),
|
||||
},
|
||||
},
|
||||
|
@ -54,17 +54,17 @@ function Highlight:CreateFrame(unit)
|
||||
|
||||
local targetBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
|
||||
targetBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize })
|
||||
targetBorder:SetFrameStrata("HIGH")
|
||||
--targetBorder:SetFrameStrata("MEDIUM")
|
||||
targetBorder:Hide()
|
||||
|
||||
local focusBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
|
||||
focusBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize })
|
||||
focusBorder:SetFrameStrata("LOW")
|
||||
--focusBorder:SetFrameStrata("MEDIUM")
|
||||
focusBorder:Hide()
|
||||
|
||||
local leaderBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
|
||||
leaderBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize })
|
||||
leaderBorder:SetFrameStrata("MEDIUM")
|
||||
--leaderBorder:SetFrameStrata("MEDIUM")
|
||||
leaderBorder:Hide()
|
||||
|
||||
local highlight = healthBar:CreateTexture(nil, "OVERLAY")
|
||||
|
@ -36,6 +36,7 @@ function Powerbar:CreateFrame(unit)
|
||||
local button = Gladdy.buttons[unit]
|
||||
|
||||
local powerBar = CreateFrame("Frame", nil, Gladdy.buttons[unit], BackdropTemplateMixin and "BackdropTemplate")
|
||||
powerBar:EnableMouse(false)
|
||||
powerBar:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.powerBarBorderStyle),
|
||||
edgeSize = Gladdy.db.powerBarBorderSize })
|
||||
powerBar:SetBackdropBorderColor(Gladdy.db.powerBarBorderColor.r, Gladdy.db.powerBarBorderColor.g, Gladdy.db.powerBarBorderColor.b, Gladdy.db.powerBarBorderColor.a)
|
||||
@ -206,8 +207,13 @@ function Powerbar:UNIT_SPEC(unit, spec)
|
||||
if (not powerBar or not button) then
|
||||
return
|
||||
end
|
||||
local raceText = Gladdy.db.powerShowRace and button.raceLoc or ""
|
||||
|
||||
powerBar.raceText:SetText(spec .. " " .. button.raceLoc)
|
||||
if (button.spec and Gladdy.db.powerShowSpec) then
|
||||
raceText = spec .. " " .. raceText
|
||||
end
|
||||
|
||||
powerBar.raceText:SetText(raceText)
|
||||
end
|
||||
|
||||
function Powerbar:UNIT_POWER(unit, power, powerMax, powerType)
|
||||
|
@ -77,8 +77,10 @@ end
|
||||
|
||||
function Racial:CreateFrame(unit)
|
||||
local racial = CreateFrame("Button", "GladdyTrinketButton" .. unit, Gladdy.buttons[unit])
|
||||
racial:EnableMouse(false)
|
||||
racial.texture = racial:CreateTexture(nil, "BACKGROUND")
|
||||
racial.texture:SetAllPoints(racial)
|
||||
racial.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
|
||||
--racial.texture:SetTexture("Interface\\Icons\\INV_Jewelry_TrinketPVP_02")
|
||||
|
||||
racial.cooldown = CreateFrame("Cooldown", nil, racial, "CooldownFrameTemplate")
|
||||
|
@ -26,7 +26,7 @@ local totemData = {
|
||||
[string_lower("Disease Cleansing Totem")] = {id = 8170,texture = select(3, GetSpellInfo(8170)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Disease Cleansing Totem
|
||||
[string_lower("Healing Stream Totem")] = {id = 5394,texture = select(3, GetSpellInfo(5394)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Healing Stream Totem
|
||||
[string_lower("Mana Tide Totem")] = {id = 16190,texture = select(3, GetSpellInfo(16190)), color = {r = 0.078, g = 0.9, b = 0.16, a = 1}, enabled = true, priority = 3}, -- Mana Tide Totem
|
||||
[string_lower("Mana Spring Totem")] = {id = 5675,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_ManaRegenTotem_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 1}, -- Mana Spring Totem
|
||||
[string_lower("Mana Spring Totem")] = {id = 5675,texture = select(3, GetSpellInfo(5675)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 1}, -- Mana Spring Totem
|
||||
-- Earth
|
||||
[string_lower("Earthbind Totem")] = {id = 2484,texture = select(3, GetSpellInfo(2484)), color = {r = 0.5, g = 0.5, b = 0.5, a = 1}, enabled = true, priority = 1}, -- Earthbind Totem
|
||||
[string_lower("Stoneclaw Totem")] = {id = 5730,texture = select(3, GetSpellInfo(5730)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Stoneclaw Totem
|
||||
@ -36,13 +36,13 @@ local totemData = {
|
||||
[string_lower("Tremor Totem")] = {id = 8143,texture = select(3, GetSpellInfo(8143)), color = {r = 1, g = 0.9, b = 0.1, a = 1}, enabled = true, priority = 3}, -- Tremor Totem
|
||||
-- Air
|
||||
[string_lower("Grounding Totem")] = {id = 8177,texture = select(3, GetSpellInfo(8177)), color = {r = 0, g = 0.53, b = 0.92, a = 1}, enabled = true, priority = 3}, -- Grounding Totem
|
||||
[string_lower("Grace of Air Totem")] = {id = 8835,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_InvisibilityTotem_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Grace of Air Totem
|
||||
[string_lower("Grace of Air Totem")] = {id = 8835,texture = select(3, GetSpellInfo(8835)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Grace of Air Totem
|
||||
[string_lower("Nature Resistance Totem")] = {id = 10595,texture = select(3, GetSpellInfo(10595)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Nature Resistance Totem
|
||||
[string_lower("Windfury Totem")] = {id = 8512,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_Windfury_edit", color = {r = 0.96, g = 0, b = 0.07, a = 1}, enabled = true, priority = 2}, -- Windfury Totem
|
||||
[string_lower("Sentry Totem")] = {id = 6495, texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_RemoveCurse_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Sentry Totem
|
||||
[string_lower("Windfury Totem")] = {id = 8512,texture = select(3, GetSpellInfo(8512)), color = {r = 0.96, g = 0, b = 0.07, a = 1}, enabled = true, priority = 2}, -- Windfury Totem
|
||||
[string_lower("Sentry Totem")] = {id = 6495, texture = select(3, GetSpellInfo(6495)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Sentry Totem
|
||||
[string_lower("Windwall Totem")] = {id = 15107,texture = select(3, GetSpellInfo(15107)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Windwall Totem
|
||||
[string_lower("Wrath of Air Totem")] = {id = 3738,texture = "Interface\\AddOns\\Gladdy\\Images\\Totems\\Spell_Nature_SlowingTotem_edit", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Wrath of Air Totem
|
||||
[string_lower("Tranquil Air Totem")] = {id = 25908,texture = "Interface\\Icons\\INV_Staff_07", color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Tranquil Air Totem
|
||||
[string_lower("Wrath of Air Totem")] = {id = 3738,texture = select(3, GetSpellInfo(3738)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Wrath of Air Totem
|
||||
[string_lower("Tranquil Air Totem")] = {id = 25908,texture = select(3, GetSpellInfo(25908)), color = {r = 0, g = 0, b = 0, a = 1}, enabled = true, priority = 0}, -- Tranquil Air Totem
|
||||
}
|
||||
local localizedTotemData = {
|
||||
["default"] = {
|
||||
@ -77,38 +77,6 @@ local localizedTotemData = {
|
||||
[string_lower(select(1, GetSpellInfo(3738)))] = totemData[string_lower("Wrath of Air Totem")], -- Wrath of Air Totem
|
||||
[string_lower(select(1, GetSpellInfo(25908)))] = totemData[string_lower("Tranquil Air Totem")], -- Tranquil Air Totem
|
||||
},
|
||||
["frFR"] = {
|
||||
[string_lower("Totem incendiaire")] = totemData[string_lower("Searing Totem")],
|
||||
[string_lower("Totem Langue de feu")] = totemData[string_lower("Flametongue Totem")],
|
||||
[string_lower("Totem de lien terrestre")] = totemData[string_lower("Earthbind Totem")],
|
||||
[string_lower("Totem de Griffes de pierre")] = totemData[string_lower("Stoneclaw Totem")],
|
||||
[string_lower("Totem Nova de feu")] = totemData[string_lower("Fire Nova Totem")],
|
||||
[string_lower("Totem de Magma")] = totemData[string_lower("Magma Totem")],
|
||||
[string_lower("Totem de courroux")] = totemData[string_lower("Totem of Wrath")],
|
||||
[string_lower("Totem d'\195\169lementaire de feu")] = totemData[string_lower("Fire Elemental Totem")],
|
||||
[string_lower("Totem d'\195\169l\195\169mentaire de feu")] = totemData[string_lower("Fire Elemental Totem")],
|
||||
[string_lower("Totem de Peau de pierre")] = totemData[string_lower("Stoneskin Totem")],
|
||||
[string_lower("Totem d'\195\169lementaire de terre")] = totemData[string_lower("Earth Elemental Totem")],
|
||||
[string_lower("Totem d'\195\169l\195\169mentaire de terre")] = totemData[string_lower("Earth Elemental Totem")],
|
||||
[string_lower("Totem de Force de la Terre")] = totemData[string_lower("Strength of Earth Totem")],
|
||||
[string_lower("Totem de r\195\169sistance au Givre")] = totemData[string_lower("Frost Resistance Totem")],
|
||||
[string_lower("Totem de r\195\169sistance au Feu")] = totemData[string_lower("Fire Resistance Totem")],
|
||||
[string_lower("Totem de Gl\195\168be")] = totemData[string_lower("Grounding Totem")],
|
||||
[string_lower("Totem de Gr\195\162ce a\195\169rienne")] = totemData[string_lower("Grace of Air Totem")],
|
||||
[string_lower("Totem de R\195\169sistance \195\160 la Nature")] = totemData[string_lower("Nature Resistance Totem")],
|
||||
[string_lower("Totem Furie-des-vents")] = totemData[string_lower("Windfury Totem")],
|
||||
[string_lower("Totem Sentinelle")] = totemData[string_lower("Sentry Totem")],
|
||||
[string_lower("Totem de Mur des vents")] = totemData[string_lower("Windwall Totem")],
|
||||
[string_lower("Totem de courroux de l'air")] = totemData[string_lower("Wrath of Air Totem")],
|
||||
[string_lower("Totem de S\195\169isme")] = totemData[string_lower("Tremor Totem")],
|
||||
[string_lower("Totem gu\195\169risseur")] = totemData[string_lower("Healing Stream Totem")],
|
||||
[string_lower("Totem de Purification du poison")] = totemData[string_lower("Poison Cleansing Totem")],
|
||||
[string_lower("Totem Fontaine de mana")] = totemData[string_lower("Mana Spring Totem")],
|
||||
[string_lower("Totem de Purification des maladies")] = totemData[string_lower("Disease Cleansing Totem")],
|
||||
[string_lower("Totem de purification")] = totemData[string_lower("Disease Cleansing Totem")],
|
||||
[string_lower("Totem de Vague de mana")] = totemData[string_lower("Mana Tide Totem")],
|
||||
[string_lower("Totem de Tranquillit\195\169 de l'air")] = totemData[string_lower("Tranquil Air Totem")],
|
||||
}
|
||||
}
|
||||
|
||||
local function GetTotemColorDefaultOptions()
|
||||
@ -329,6 +297,7 @@ function TotemPlates:NAME_PLATE_UNIT_ADDED(...)
|
||||
nameplate.gladdyTotemFrame:SetWidth(Gladdy.db.npTotemPlatesSize * Gladdy.db.npTotemPlatesWidthFactor)
|
||||
nameplate.gladdyTotemFrame:SetHeight(Gladdy.db.npTotemPlatesSize)
|
||||
nameplate.gladdyTotemFrame.totemIcon = nameplate.gladdyTotemFrame:CreateTexture(nil, "BACKGROUND")
|
||||
nameplate.gladdyTotemFrame.totemIcon:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
|
||||
nameplate.gladdyTotemFrame.totemIcon:ClearAllPoints()
|
||||
nameplate.gladdyTotemFrame.totemIcon:SetPoint("TOPLEFT", nameplate.gladdyTotemFrame, "TOPLEFT")
|
||||
nameplate.gladdyTotemFrame.totemIcon:SetPoint("BOTTOMRIGHT", nameplate.gladdyTotemFrame, "BOTTOMRIGHT")
|
||||
|
@ -71,9 +71,11 @@ end
|
||||
|
||||
function Trinket:CreateFrame(unit)
|
||||
local trinket = CreateFrame("Button", "GladdyTrinketButton" .. unit, Gladdy.buttons[unit])
|
||||
trinket:EnableMouse(false)
|
||||
trinket.texture = trinket:CreateTexture(nil, "BACKGROUND")
|
||||
trinket.texture:SetAllPoints(trinket)
|
||||
trinket.texture:SetTexture("Interface\\Icons\\INV_Jewelry_TrinketPVP_02")
|
||||
trinket.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
|
||||
|
||||
trinket.cooldown = CreateFrame("Cooldown", nil, trinket, "CooldownFrameTemplate")
|
||||
trinket.cooldown.noCooldownCount = true --Gladdy.db.trinketDisableOmniCC
|
||||
|
@ -50,8 +50,8 @@ function XiconProfiles:GetOptions()
|
||||
name = " ",
|
||||
desc = "Classic Profile",
|
||||
image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Classic1.blp",
|
||||
imageWidth = 256,
|
||||
imageHeight = 128,
|
||||
imageWidth = 350,
|
||||
imageHeight = 175,
|
||||
width = "full",
|
||||
order = 3,
|
||||
},
|
||||
@ -69,8 +69,8 @@ function XiconProfiles:GetOptions()
|
||||
name = " ",
|
||||
desc = "Knall's Profile",
|
||||
image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Knall1.blp",
|
||||
imageWidth = 256,
|
||||
imageHeight = 128,
|
||||
imageWidth = 350,
|
||||
imageHeight = 175,
|
||||
width = "full",
|
||||
order = 5,
|
||||
},
|
||||
@ -86,8 +86,8 @@ function XiconProfiles:GetOptions()
|
||||
XiconProfiles:ApplyKlimp()
|
||||
end,
|
||||
image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Klimp1.blp",
|
||||
imageWidth = 256,
|
||||
imageHeight = 128,
|
||||
imageWidth = 350,
|
||||
imageHeight = 175,
|
||||
name = " ",
|
||||
desc = "Klimp's Profile",
|
||||
width = "full",
|
||||
|
173
Options.lua
173
Options.lua
@ -1,4 +1,4 @@
|
||||
local type, pairs, tinsert, tsort, tostring = type, pairs, table.insert, table.sort, tostring
|
||||
local type, pairs, tinsert, tsort, tostring, str_match, tonumber = type, pairs, table.insert, table.sort, tostring, string.match, tonumber
|
||||
|
||||
local InterfaceOptionsFrame_OpenToFrame = InterfaceOptionsFrame_OpenToFrame
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
@ -20,21 +20,19 @@ Gladdy.defaults = {
|
||||
padding = 3,
|
||||
barWidth = 180,
|
||||
bottomMargin = 10,
|
||||
statusbarBorderOffset = 7,
|
||||
statusbarBorderOffset = 6,
|
||||
},
|
||||
}
|
||||
|
||||
SLASH_GLADDY1 = "/gladdy"
|
||||
SlashCmdList["GLADDY"] = function(msg)
|
||||
if (msg == "test2") then
|
||||
Gladdy:ToggleFrame(2)
|
||||
elseif (msg == "test5") then
|
||||
Gladdy:ToggleFrame(5)
|
||||
elseif (msg:find("test")) then
|
||||
if (str_match(msg, "test[1-5]")) then
|
||||
local _, num = str_match(msg, "(test)([1-5])")
|
||||
Gladdy:ToggleFrame(tonumber(num))
|
||||
elseif (msg == "test") then
|
||||
Gladdy:ToggleFrame(3)
|
||||
elseif (msg == "ui" or msg == "options" or msg == "config") then
|
||||
LibStub("AceConfigDialog-3.0"):Open("Gladdy")
|
||||
--Gladdy:ShowOptions()
|
||||
elseif (msg == "reset") then
|
||||
Gladdy.dbi:ResetProfile()
|
||||
elseif (msg == "hide") then
|
||||
@ -43,7 +41,8 @@ SlashCmdList["GLADDY"] = function(msg)
|
||||
else
|
||||
Gladdy:Print(L["Valid slash commands are:"])
|
||||
Gladdy:Print("/gladdy ui")
|
||||
Gladdy:Print("/gladdy test2-5")
|
||||
Gladdy:Print("/gladdy test")
|
||||
Gladdy:Print("/gladdy test1-5")
|
||||
Gladdy:Print("/gladdy hide")
|
||||
Gladdy:Print("/gladdy reset")
|
||||
end
|
||||
@ -268,7 +267,8 @@ function Gladdy:SetupOptions()
|
||||
local c = Gladdy.db.trinketDisableCircle
|
||||
local d = Gladdy.db.drDisableCircle
|
||||
local e = Gladdy.db.buffsDisableCircle
|
||||
if (a == b and a == c and a == d and a == e) then
|
||||
local f = Gladdy.db.racialDisableCircle
|
||||
if (a == b and a == c and a == d and a == e and a == f) then
|
||||
return a
|
||||
else
|
||||
return ""
|
||||
@ -280,6 +280,7 @@ function Gladdy:SetupOptions()
|
||||
Gladdy.db.trinketDisableCircle = value
|
||||
Gladdy.db.drDisableCircle = value
|
||||
Gladdy.db.buffsDisableCircle = value
|
||||
Gladdy.db.racialDisableCircle = value
|
||||
Gladdy:UpdateFrame()
|
||||
end,
|
||||
width= "full",
|
||||
@ -297,7 +298,8 @@ function Gladdy:SetupOptions()
|
||||
local c = Gladdy.db.auraCooldownAlpha
|
||||
local d = Gladdy.db.trinketCooldownAlpha
|
||||
local e = Gladdy.db.buffsCooldownAlpha
|
||||
if (a == b and a == c and a == d and a == e) then
|
||||
local f = Gladdy.db.racialCooldownAlpha
|
||||
if (a == b and a == c and a == d and a == e and a == f) then
|
||||
return a
|
||||
else
|
||||
return ""
|
||||
@ -309,6 +311,7 @@ function Gladdy:SetupOptions()
|
||||
Gladdy.db.auraCooldownAlpha = value
|
||||
Gladdy.db.trinketCooldownAlpha = value
|
||||
Gladdy.db.buffsCooldownAlpha = value
|
||||
Gladdy.db.racialCooldownAlpha = value
|
||||
Gladdy:UpdateFrame()
|
||||
end
|
||||
},
|
||||
@ -332,33 +335,42 @@ function Gladdy:SetupOptions()
|
||||
dialogControl = "LSM30_Font",
|
||||
values = AceGUIWidgetLSMlists.font,
|
||||
get = function(info)
|
||||
local a = Gladdy.db.castBarFont
|
||||
local b = Gladdy.db.healthBarFont
|
||||
local c = Gladdy.db.powerBarFont
|
||||
local a = Gladdy.db.auraFont
|
||||
local b = Gladdy.db.buffsFont
|
||||
local c = Gladdy.db.castBarFont
|
||||
local d = Gladdy.db.cooldownFont
|
||||
local e = Gladdy.db.drFont
|
||||
local f = Gladdy.db.auraFont
|
||||
local g = Gladdy.db.buffsFont
|
||||
if (a == b and a == c and a == d and a == e and a == f and a == g) then
|
||||
local f = Gladdy.db.healthBarFont
|
||||
local g = Gladdy.db.petHealthBarFont
|
||||
local h = Gladdy.db.powerBarFont
|
||||
local i = Gladdy.db.racialFont
|
||||
local j = Gladdy.db.npTremorFont
|
||||
local k = Gladdy.db.trinketFont
|
||||
if (a == b and a == c and a == d and a == e and a == f
|
||||
and a == g and a == h and a == i and a == j and a == k) then
|
||||
return a
|
||||
else
|
||||
return ""
|
||||
end
|
||||
end,
|
||||
set = function(info, value)
|
||||
Gladdy.db.castBarFont = value
|
||||
Gladdy.db.healthBarFont = value
|
||||
Gladdy.db.powerBarFont = value
|
||||
Gladdy.db.cooldownFont = value
|
||||
Gladdy.db.drFont = value
|
||||
Gladdy.db.auraFont = value
|
||||
Gladdy.db.buffsFont = value
|
||||
Gladdy.db.castBarFont = value
|
||||
Gladdy.db.cooldownFont = value
|
||||
Gladdy.db.drFont = value
|
||||
Gladdy.db.healthBarFont = value
|
||||
Gladdy.db.petHealthBarFont = value
|
||||
Gladdy.db.powerBarFont = value
|
||||
Gladdy.db.racialFont = value
|
||||
Gladdy.db.npTremorFont = value
|
||||
Gladdy.db.trinketFont = value
|
||||
Gladdy:UpdateFrame()
|
||||
end,
|
||||
},
|
||||
fontColor = {
|
||||
type = "color",
|
||||
name = L["Font color"],
|
||||
name = L["Font color text"],
|
||||
desc = L["Color of the text"],
|
||||
order = 12,
|
||||
hasAlpha = true,
|
||||
@ -366,8 +378,10 @@ function Gladdy:SetupOptions()
|
||||
local a = Gladdy.db.healthBarFontColor
|
||||
local b = Gladdy.db.powerBarFontColor
|
||||
local c = Gladdy.db.castBarFontColor
|
||||
local d = Gladdy.db.petHealthBarFontColor
|
||||
if (a.r == b.r and a.g == b.g and a.b == b.b and a.a == b.a
|
||||
and a.r == c.r and a.g == c.g and a.b == c.b and a.a == c.a) then
|
||||
and a.r == c.r and a.g == c.g and a.b == c.b and a.a == c.a
|
||||
and a.r == d.r and a.g == d.g and a.b == d.b and a.a == d.a) then
|
||||
return a.r, a.g, a.b, a.a
|
||||
else
|
||||
return { r = 0, g = 0, b = 0, a = 0 }
|
||||
@ -378,6 +392,35 @@ function Gladdy:SetupOptions()
|
||||
Gladdy.db.healthBarFontColor = rgb
|
||||
Gladdy.db.powerBarFontColor = rgb
|
||||
Gladdy.db.castBarFontColor = rgb
|
||||
Gladdy.db.petHealthBarFontColor = rgb
|
||||
Gladdy:UpdateFrame()
|
||||
end,
|
||||
},
|
||||
fontColorCD = {
|
||||
type = "color",
|
||||
name = L["Font color timer"],
|
||||
desc = L["Color of the timers"],
|
||||
order = 12,
|
||||
hasAlpha = true,
|
||||
get = function(info)
|
||||
local a = Gladdy.db.auraFontColor
|
||||
local b = Gladdy.db.buffsFontColor
|
||||
local c = Gladdy.db.cooldownFontColor
|
||||
local d = Gladdy.db.drFontColor
|
||||
if (a.r == b.r and a.g == b.g and a.b == b.b and a.a == b.a
|
||||
and a.r == c.r and a.g == c.g and a.b == c.b and a.a == c.a
|
||||
and a.r == d.r and a.g == d.g and a.b == d.b and a.a == d.a) then
|
||||
return a.r, a.g, a.b, a.a
|
||||
else
|
||||
return { r = 0, g = 0, b = 0, a = 0 }
|
||||
end
|
||||
end,
|
||||
set = function(info, r, g, b, a)
|
||||
local rgb = {r = r, g = g, b = b, a = a}
|
||||
Gladdy.db.auraFontColor = rgb
|
||||
Gladdy.db.buffsFontColor = rgb
|
||||
Gladdy.db.cooldownFontColor = rgb
|
||||
Gladdy.db.drFontColor = rgb
|
||||
Gladdy:UpdateFrame()
|
||||
end,
|
||||
},
|
||||
@ -400,27 +443,34 @@ function Gladdy:SetupOptions()
|
||||
order = 14,
|
||||
values = Gladdy:GetIconStyles(),
|
||||
get = function(info)
|
||||
if (Gladdy.db.classIconBorderStyle == Gladdy.db.trinketBorderStyle
|
||||
and Gladdy.db.classIconBorderStyle == Gladdy.db.castBarIconStyle
|
||||
and Gladdy.db.classIconBorderStyle == Gladdy.db.auraBorderStyle
|
||||
and Gladdy.db.classIconBorderStyle == Gladdy.db.cooldownBorderStyle
|
||||
and Gladdy.db.classIconBorderStyle == Gladdy.db.buffsBorderStyle
|
||||
and Gladdy.db.classIconBorderStyle == Gladdy.db.drBorderStyle
|
||||
and Gladdy.db.classIconBorderStyle == Gladdy.db.npTotemPlatesBorderStyle) then
|
||||
return Gladdy.db.classIconBorderStyle
|
||||
if (Gladdy.db.auraBorderStyle == Gladdy.db.buffsBorderStyle
|
||||
and Gladdy.db.auraBorderStyle == Gladdy.db.castBarIconStyle
|
||||
and Gladdy.db.auraBorderStyle == Gladdy.db.classIconBorderStyle
|
||||
and Gladdy.db.auraBorderStyle == Gladdy.db.cooldownBorderStyle
|
||||
and Gladdy.db.auraBorderStyle == Gladdy.db.ciBorderStyle
|
||||
and Gladdy.db.auraBorderStyle == Gladdy.db.cooldownBorderStyle
|
||||
and Gladdy.db.auraBorderStyle == Gladdy.db.drBorderStyle
|
||||
and Gladdy.db.auraBorderStyle == Gladdy.db.racialBorderStyle
|
||||
and Gladdy.db.auraBorderStyle == Gladdy.db.npTotemPlatesBorderStyle
|
||||
and Gladdy.db.auraBorderStyle == Gladdy.db.petPortraitBorderStyle
|
||||
and Gladdy.db.auraBorderStyle == Gladdy.db.trinketBorderStyle) then
|
||||
return Gladdy.db.auraBorderStyle
|
||||
else
|
||||
return ""
|
||||
end
|
||||
end,
|
||||
set = function(info, value)
|
||||
Gladdy.db.classIconBorderStyle = value
|
||||
Gladdy.db.trinketBorderStyle = value
|
||||
Gladdy.db.castBarIconStyle = value
|
||||
Gladdy.db.auraBorderStyle = value
|
||||
Gladdy.db.npTotemPlatesBorderStyle = value
|
||||
Gladdy.db.cooldownBorderStyle = value
|
||||
Gladdy.db.buffsBorderStyle = value
|
||||
Gladdy.db.castBarIconStyle = value
|
||||
Gladdy.db.classIconBorderStyle = value
|
||||
Gladdy.db.ciBorderStyle = value
|
||||
Gladdy.db.cooldownBorderStyle = value
|
||||
Gladdy.db.drBorderStyle = value
|
||||
Gladdy.db.racialBorderStyle = value
|
||||
Gladdy.db.npTotemPlatesBorderStyle = value
|
||||
Gladdy.db.petPortraitBorderStyle = value
|
||||
Gladdy.db.trinketBorderStyle = value
|
||||
Gladdy:UpdateFrame()
|
||||
end,
|
||||
},
|
||||
@ -431,11 +481,23 @@ function Gladdy:SetupOptions()
|
||||
order = 15,
|
||||
hasAlpha = true,
|
||||
get = function(info)
|
||||
local a = Gladdy.db.classIconBorderColor
|
||||
local b = Gladdy.db.trinketBorderColor
|
||||
local c = Gladdy.db.castBarIconColor
|
||||
local a = Gladdy.db.auraBuffBorderColor
|
||||
local b = Gladdy.db.auraDebuffBorderColor
|
||||
local c = Gladdy.db.buffsBorderColor
|
||||
local d = Gladdy.db.castBarIconColor
|
||||
local e = Gladdy.db.classIconBorderColor
|
||||
local f = Gladdy.db.ciBorderColor
|
||||
local g = Gladdy.db.cooldownBorderColor
|
||||
local h = Gladdy.db.drBorderColor
|
||||
local i = Gladdy.db.trinketBorderColor
|
||||
if (a.r == b.r and a.g == b.g and a.b == b.b and a.a == b.a
|
||||
and a.r == c.r and a.g == c.g and a.b == c.b and a.a == c.a) then
|
||||
and a.r == c.r and a.g == c.g and a.b == c.b and a.a == c.a
|
||||
and a.r == d.r and a.g == d.g and a.b == d.b and a.a == d.a
|
||||
and a.r == e.r and a.g == e.g and a.b == e.b and a.a == e.a
|
||||
and a.r == f.r and a.g == f.g and a.b == f.b and a.a == f.a
|
||||
and a.r == g.r and a.g == g.g and a.b == g.b and a.a == g.a
|
||||
and a.r == h.r and a.g == h.g and a.b == h.b and a.a == h.a
|
||||
and a.r == i.r and a.g == i.g and a.b == i.b and a.a == i.a) then
|
||||
return a.r, a.g, a.b, a.a
|
||||
else
|
||||
return { r = 0, g = 0, b = 0, a = 0 }
|
||||
@ -443,13 +505,15 @@ function Gladdy:SetupOptions()
|
||||
end,
|
||||
set = function(info, r, g, b, a)
|
||||
local rgb = {r = r, g = g, b = b, a = a}
|
||||
Gladdy.db.classIconBorderColor = rgb
|
||||
Gladdy.db.trinketBorderColor = rgb
|
||||
Gladdy.db.castBarIconColor = rgb
|
||||
Gladdy.db.npTotemPlatesBorderColor = rgb
|
||||
Gladdy.db.drBorderColor = rgb
|
||||
Gladdy.db.cooldownBorderColor = rgb
|
||||
Gladdy.db.auraBuffBorderColor = rgb
|
||||
Gladdy.db.auraDebuffBorderColor = rgb
|
||||
Gladdy.db.buffsBorderColor = rgb
|
||||
Gladdy.db.castBarIconColor = rgb
|
||||
Gladdy.db.classIconBorderColor = rgb
|
||||
Gladdy.db.ciBorderColor = rgb
|
||||
Gladdy.db.cooldownBorderColor = rgb
|
||||
Gladdy.db.drBorderColor = rgb
|
||||
Gladdy.db.trinketBorderColor = rgb
|
||||
Gladdy:UpdateFrame()
|
||||
end,
|
||||
},
|
||||
@ -476,7 +540,8 @@ function Gladdy:SetupOptions()
|
||||
local a = Gladdy.db.healthBarTexture
|
||||
local b = Gladdy.db.powerBarTexture
|
||||
local c = Gladdy.db.castBarTexture
|
||||
if (a == b and a == c) then
|
||||
local d = Gladdy.db.petHealthBarTexture
|
||||
if (a == b and a == c and a == d) then
|
||||
return a
|
||||
else
|
||||
return ""
|
||||
@ -486,6 +551,7 @@ function Gladdy:SetupOptions()
|
||||
Gladdy.db.healthBarTexture = value
|
||||
Gladdy.db.powerBarTexture = value
|
||||
Gladdy.db.castBarTexture = value
|
||||
Gladdy.db.petHealthBarTexture = value
|
||||
Gladdy:UpdateFrame()
|
||||
end,
|
||||
width= "full",
|
||||
@ -501,7 +567,8 @@ function Gladdy:SetupOptions()
|
||||
local a = Gladdy.db.healthBarBorderStyle
|
||||
local b = Gladdy.db.powerBarBorderStyle
|
||||
local c = Gladdy.db.castBarBorderStyle
|
||||
if (a == b and a == c) then
|
||||
local d = Gladdy.db.petHealthBarBorderStyle
|
||||
if (a == b and a == c and a == d) then
|
||||
return a
|
||||
else
|
||||
return ""
|
||||
@ -511,6 +578,7 @@ function Gladdy:SetupOptions()
|
||||
Gladdy.db.healthBarBorderStyle = value
|
||||
Gladdy.db.powerBarBorderStyle = value
|
||||
Gladdy.db.castBarBorderStyle = value
|
||||
Gladdy.db.petHealthBarBorderStyle = value
|
||||
Gladdy:UpdateFrame()
|
||||
end,
|
||||
},
|
||||
@ -532,8 +600,10 @@ function Gladdy:SetupOptions()
|
||||
local a = Gladdy.db.castBarBorderColor
|
||||
local b = Gladdy.db.healthBarBorderColor
|
||||
local c = Gladdy.db.powerBarBorderColor
|
||||
local d = Gladdy.db.petHealthBarBorderColor
|
||||
if (a.r == b.r and a.g == b.g and a.b == b.b and a.a == b.a
|
||||
and a.r == c.r and a.g == c.g and a.b == c.b and a.a == c.a) then
|
||||
and a.r == c.r and a.g == c.g and a.b == c.b and a.a == c.a
|
||||
and a.r == d.r and a.g == d.g and a.b == d.b and a.a == d.a) then
|
||||
return a.r, a.g, a.b, a.a
|
||||
else
|
||||
return { r = 0, g = 0, b = 0, a = 0 }
|
||||
@ -544,6 +614,7 @@ function Gladdy:SetupOptions()
|
||||
Gladdy.db.castBarBorderColor = rgb
|
||||
Gladdy.db.healthBarBorderColor = rgb
|
||||
Gladdy.db.powerBarBorderColor = rgb
|
||||
Gladdy.db.petHealthBarBorderColor = rgb
|
||||
Gladdy:UpdateFrame()
|
||||
end,
|
||||
},
|
||||
@ -716,7 +787,7 @@ function Gladdy:GetAuras(auraType)
|
||||
name = classSpells[i].name,
|
||||
type = "toggle",
|
||||
image = texture,
|
||||
width = "2",
|
||||
width = "full",
|
||||
arg = tostring(classSpells[i].id[1])
|
||||
}
|
||||
defaultDebuffs[tostring(classSpells[i].id[1])] = true
|
||||
|
20
README.md
20
README.md
@ -1,7 +1,7 @@
|
||||
# Gladdy - TBC
|
||||
|
||||
### The most powerful arena addon for WoW TBC 2.5.1
|
||||
## [v1.06-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.06-Beta/Gladdy_TBC-Classic_v1.06-Beta.zip)
|
||||
## [v1.07-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.07-Beta/Gladdy_TBC-Classic_v1.07-Beta.zip)
|
||||
|
||||
###### <a target="_blank" rel="noopener noreferrer" href="https://www.paypal.me/xiconqoo/10"><img src="https://raw.githubusercontent.com/XiconQoo/Gladdy/readme-media/Paypal-Donate.png" height="30" style="margin-top:-30px;position:relative;top:20px;"></a> Please consider donating if you like my work
|
||||
|
||||
@ -17,11 +17,15 @@ The goal is to make Gladdy highly configurable in it's appearance. Everything ca
|
||||
- Announcement (drink, trinket usage, spec detection ...)
|
||||
- ArenaCountDown
|
||||
- Auras (show important (de)buffs in the class icon)
|
||||
- BuffsDebuffs (show buffs and debuffs on arena frames - can be filtered)
|
||||
- ClassIcon (or specicon, once detected)
|
||||
- CombatIndicator
|
||||
- Cooldown (tracks important cooldowns)
|
||||
- Diminishing (tracks DRs)
|
||||
- ExportImport (share your profile with your friends in the form of a string, which can be imported)
|
||||
- Highlight (highlights focus and target)
|
||||
- Pets (show arena pets)
|
||||
- Racial Spells
|
||||
- TotemPlates (show totem icons instead of normal nameplates)
|
||||
- Trinket (tracks trinket usage)
|
||||
- VersionCheck (checks if you use an older version that your teammate)
|
||||
@ -35,6 +39,20 @@ The goal is to make Gladdy highly configurable in it's appearance. Everything ca
|
||||
|
||||
### Changes
|
||||
|
||||
#### v1.07-Beta
|
||||
|
||||
- CombatIndicator module added
|
||||
- spec icon option added to Classicon module
|
||||
- arena1-5 for name option added
|
||||
- add a couple buffs to LibClassAuras
|
||||
- add blessing of sacrifice and intervene to auras
|
||||
- general options updated to apply font/borders/etc for all frames
|
||||
- XiconProfiles updated
|
||||
- /gladdy test1-5 now possible
|
||||
- fix PowerBar text updates
|
||||
- click through frames exept health/power bar
|
||||
- add mask texture for icons
|
||||
|
||||
#### v1.06-Beta
|
||||
- fixed BuffsDebuff module
|
||||
- fix racial texture reset
|
||||
|
Loading…
Reference in New Issue
Block a user