diff --git a/WeakAuras/Projects/ScrollingText/display.lua b/WeakAuras/Projects/ScrollingText/display.lua new file mode 100644 index 0000000..5773d8d --- /dev/null +++ b/WeakAuras/Projects/ScrollingText/display.lua @@ -0,0 +1,6 @@ +function() + if aura_env.state then + local hit = ("%-8s %-8s"):format(aura_env.state.amount, aura_env.state.percent) + return hit, aura_env.state.name + end +end diff --git a/WeakAuras/Projects/ScrollingText/export b/WeakAuras/Projects/ScrollingText/export index cb8c847..cd186f9 100644 --- a/WeakAuras/Projects/ScrollingText/export +++ b/WeakAuras/Projects/ScrollingText/export @@ -1 +1 @@ -!T3ZdtjoYY)DHQSo5DiBs4pcB92xvOIR4PGpdU77(T1IgibipdjujbDDpp)S)R75pzscjqa195Ex07ytM0tpD3tp90DpDWbYd6pqD2avD8)GlDUZW1s7bp46UY0pW)tzqxPbDRq(Sk2Ip8R636nESNH)GUnLKgO(a)U9KRuBGQM9OPoUx4yAdqEy7U9BF5avV5AU3EPJVMVPJnIn1fUwduN67p379V7D3RnXPSPZ7moD0rlU6F77(UkduhQn62jUolS1p0XYXLruslrusLRHeL5ih7Rhfcsk5ltGuoG8vx4z03XXY3C(GdgOEVJR(ND1Mpq9ZbxnuZnHrSCnf5A1Buxz)Q1KA2iMurv3WtZFHRMVXGHduh7GC)XUMF)PB(3l00H21E6M(9zscQe73jcclhnYmG3CJrKjLfaTbxqK0UowgKhAApbUsTFRU)Mae6ThqbDKLMN3siWZ87gXBKkeAP)Fx45BOBOFUPnsZUgtGjN(pmhghnGtaXqGEXilQ4Y34BatcaCUHLL5t3CeWmmEQp)rO4rUjIdFhsFCgbiXJmXVVufuLrZA(unuWPUWe0aFqA8P7V4t326tq3hB(nd9pBQ7pfK7iWol8TmTHN07Q(N1PBByccMQmCpa0p0DDGjSdSm)(31C1bjmBMvndkcJa23zgs2WGUWEeQAUBXNo9PBO)Ao(PBq5W1g23v2duDnE6g)Pg2ci4)A5msZ6PBMA6)0nF4PB2TWoEpDZoEfk((XoUZ083nkAkRnd0Q9lfh9LNB4oYW2V4YJGRbiBTjdXYDZwBMHOlg26pDk8rSfDN7OdIWwx1VhDMbilZruXSAlCMs131CYeyIIBcG3a5sIwbvIbiEXqJ7acvDXyy2AG61h2sT)1G24L95a9jnxtTHwgEdu)dbT5bMgCSicP)yzMu30BoORrECHJ0MPnbK4QSUGmzHsl3jKYO9WdOx7jHH5plfFO7yRB8TTA8nXEUAcWEXSHgUPraA66M4eHM1fUotCn88i9soei6gA(tZg1HqUAQziq2XPL)eUL87avYe4a1tm0SqvGf2MWD4aat4btWx4AqMGvVO9zNX6dmJEyVZpOv)RpR3hVU9Nal8xFv3J7CgyOV9rpDtRRUS11D62PVqFjy1frF1d0Gjyc(xFOLzZHlMbYdqExcvX1noudSm5c345o6Jx15i6vDbva6vhBPnXJE5L8RbdW(myXlzaJxggIaWlxUCS16eAcKDOWR3f970RRAH1SINUqwMiWVe3PA3Ra5ivMUBbQ0SqX3jlj9puQvCnOrjlOroj0qfRFPqHVMMYd)xIPcI6XfTU8YFpjnOarcSFkb06vRwPrZvajL8PODvyKzEB9agYmrHf23A7CV9kP0Gf1vwbu3PzTGY7cH75AFtiFxrF9bJOwBzFNZwT3pKHk027Q4i0a9jW6ac8(UlmwbSJMQzpXqplG6n15(vb3FMQQL8gOz1(otqwDSPlA9Co4NWlUwwW(F8TxPldlMvDVVOuBNVUEfqXMfvZK2NYgQ9fBPDnPxjnWu255pcMv1H5kIbAQ4bKQ3dEtbcOBUhDqGkZPY4)8p)RUQUYgRQRovthhTFKk7kzxzxEdv2ROKjTD5NN2ELAV912v(RV2ELnqBhNhI5H9pNA4nBMRH)xon84DjvNTzABru9wg6dVUV5md3YTgdrISRuzqz4Mqzjium4oU(TS1PP0zxK8ksccFfrXJaflG9Lj74HKSIGUGWu0aKeeceThF2q72wav6vE2d0wjabb(SMOAgfDvjSKES5KLHgjqwyBmsu9ZD6(XRpQ15T(yBonnQS39GrJ0gYeJece1yENU10YQeF1Bju85zIzScUCia)TKR0gctadjxoYfwwaObUCILM9iyyjTUWBkHc(aL5tFL)yHzPvtTXt8dz57HlCDPr1oLVCovdeLsDDFMhu)PG8yQJLEOLZ)dWUZ7eJ(ArfYXHWZ)6d48vOgYMuigHrNV8IQe5H(gPYEYMIr1dlHF0HGsWl5BKYokqwKrrFH(VFDt5l(VriJy4eS9wA5gbFjZ8Oe1mWMO4DbDZWZC8OBistegF30c7uwE8o7Gw)dMzlM9rAV9O4XhTtthVTKmjwspHLJu(6BqPdNoP2kG)1Xn2YP9yRi3ocEt7m3ciM94ykWKPuY5cesrcHQWyYpf24rzoj7AKHHB6Ijik84OJHFocwoF4LD6)(hD3aSJ0e3(3Y47JN1Q7HT3CmkmJUmfEL6jBocdHHt2uwKjapoKtK0KUJ4ChVD8E09rBr63Pc6sS51sP5XzXTDzbDpOTG8z7Dr10cUHiG3nK8P1bQ9U8G2hbcjkls)joBUexXWiWxujEHTK)i72U5ShBtAc3fC9sm3bN17WFBJ5ng(E2Sg1NInN34(IqyoXnlXDx2wTJA)nM94y8zZFb2z3youyHonZ1H5ZEFQ9L)wNZolb(mDUKJ1THl5KPVjl80D)fb1a2ck8O7VemW6qSUGbItE)oN)(DulSjl05JtqyWSdIiMmyzMLbxXqw7gs(5QU)w3EFU7wzWZ0ESdZCNyCp3WYWGC2GOW)l749vbvOEi13C(Cwq(0PKL6HBHOqND0ybKHKe()i7t0pI30U74vmDLGi72xmbJZr9EOyPeC7zBycdFntMxQ4Eh8Ffe6XbbJCCOGmowe6XXHcijy5YMtk(0ZSoYrh)O9J24N8RcrvOcFjMczjMkrPGzLscwBZPeBJ7xx2GwFwIwvYbwBAJKRutz)QBbgiXxyQZJqyJ7)AthvXTaPHZs1UfIUWCzD4THRfhuggCYw2FrIXGGB2MzVG(VnsErM0IyjGAFcSLVfOuKCTqrIV9OtCS8r3gCROmXAD21BdbH1zep9EJkZVDlWKX3MBs7CF((OF0WhVgZX1V(mX(MMOsSIVsltLRmrLVKjW8LiXMBBwmx3VBqctZWraKQsQPTNHRVOAnG9f2GntgJR0Uf62DOPbysqZ01JHmqPs3jPKZUwReLfwzcUg0pL3gufxmUfM8ghIm(x4YelZzM88gcUGpYYXguvOTUXOxqQbAmJ1S82ccfZQ0nVsjHk50zVvOoXhAaCCAjz(8oQQIeFpQ8mt(Q8mLNzo4GwQPxVXJpbqtPiEbK5mftia(n0mOsWUilQ46bBh)FMsUC4mReHr3DP02K9W9cYYsMd271oiV)3gC3A8)pTa8OTljrdVA1rhespNnLMDPYwenqGCumUN(6hdW267FA64PO3YvB3GriZv82ZSc4wNF9BIuz78M)f0l(xiV3FEUA)8DX(1X1616s9g5N8lH)Xph)I3w)H3c)GZI)VN(k5z8lQhXVaEc)C8a(v2Z3T3J3m6PB28W90xgFF3a3AB39tDUSx3ZB3TFRZwQgki1Rcxcd3y66mdmVQzTwpDbGzoaKxBf51wrETvKHFFdwfg51RrE9A8tC9AKxzh5v2rELDKxzhVsglYRbKJBtIjWMguqEzGKxgiBtzGSX0SbgAzSOrybC69koSVe1PsqCXBFXQq5(VWWeZ7s5kknBwpVcwYRGL8ky5VFvWYkEv7YlGLFyfWsEPUKxQl)vOuxIEMapZsErCqa5f)Ypff)YBWYJHPdT24EzW9dQ8ywk23x9kKjZe)ZmaP36LQZlteq51VtE97Kx)o51VtE97Kx)oVm1VZlq15Wp(EqsTR4lNYc8kZPyGB4oGGZDDU1U3EKVcnz9(PBO3Dr7l707Oohg08LT6(X287wNd9STnlXUI)TJPOyqEluZp7oc)sQf)AKLjWc2S)PhXA9vPQsTAHIsia8IXcUiVOHYlAO)6v0q)OurZRyP8kwkVILYRyP8kwkVILYRyP8kw6nqflrlkOViSsgQ0cccOHrgIuOfy2mVIM(PUIMiZWDo69cHk3q0MuTtbbtYZS7p46F6LOqKcf8(2xksF0WN8Tpo7pcp7YemfFM1HuqkgYRgP8QrkVAKYRgP8QrkVAKYRgP)UunsPDgiN0U1zB6jG8Z0HwmQ8u6FQlYpdc(zqm95EielDKbnBMNZ8mNm7zM27gWTLIih(1Sx1s)flf0)C)niEEQGE1sfuEoGILdOLY9tEYCYtMtEYCYtMtEYCYtMtEYCYtMtEYC(BBYCyVwzf343RmEnTsrWs10kVzAnTYUBltpep5pVaV5ABB9OM10E8d5TJ7TuErER82YLxlgVmVnD0WAJ)k0LEiERk0UWlIdT2vSkFZdh9)jH1TfVJC)Cfv3RZRp3Z(1O7f61P7L41Q7VlXZLhe22)64LhAvEOv5Hw93OqRc3i5g4JbQOBdEd6pWFG6OPgJUDGk5VJ7duPorPZF2cpFNzx7dgjGhHAFlMJUzoqv3y4IXJ7tEWjTp7IJV6mSdWUWUMySiK(dnOnY38oJ(0gp3r3yq39KLWNyA7B4cw1(KHRhyEBq3knG(7z0s))Uap98ZnThmeqGT5mIPtaJij46JxqPiBq)aOCnpdvFypQj(tbSa0gZylNUna)BaoIayFrhbAyMMjbVKJP5YbDLbObpYm(g5snR5t1ODGkiyaEa5PKl)OaWJxypAGAWF)95gyrFjrQUeMhslFTIj9hsFUwabs2ueikUMGyukeNFdXguk(bbHmOR0a1hiF(nYNekTfbaUOzGkCJRdoJsajRYqqMbrNB6n9LBsaqj(hvnDxN5DSp21b0chI6HAU3EUPRRJl5wyRPBF4io1dTCxGAd80fdV0ycChQ2cSzaTH(jouZ9A4)HXPRc5jGZTx7nvt35()deFUNHprYqAg)yG6oJKJag5WMPygKvawWpRq(Sk2OphAdRXx4yIlJADv)ESwXDhrn4rFgtjk8i4E2JgB(ndDAZDRxf11bV)C)DovjXadxpyo(HbQh2UB)2xYN46ti2U962MZUGCGYb0bMGTaEuH18OqCJmHBKjCJCmUHsHe)RVEKSh7s(8DiXta9UhxSngMePZX9UQ)zDiei2(9oU6F2vB(a1phCf5b3z6zo0YyWbjo2jn0uMJjTpR9X9dn0GmE0iWFeYF8bU5cSCCGBg9qiqun)oO4RiXL5)N4Y8ytfOybeszu9r55Q(CzNpEs)xE9hgA3k1hPnu9jdtePP(Kz1KikbD62T9LxhwYLMAyeTlLK0U2AvKQcBpG0Ciq(WwHQ0)L1b0CNOnpYOihC)O1RSWGmKWG1IH(eyCLbjnOxyf0Stice6(udZjt9PCgXk7bwW(nKTMvp4S2Dpsyp(Wvoxt2fxiPKvWDAShBobLbKcUdPnV7nTNqUWuNYP8mvGwXzfXg(Cr5BbqjfARkaZsKT(j(vGBgkaS2avI7HazrzhSy6O7OzFhIv2KBW4k6kcVJRpbEfIRkl8HPNEZ9tyJeGojZK01h8mpD8Xh1r9IZA97pDJA7(9709JQp6s25gtOeo83txCQi29HTBOLXiF0lQXAlSOKhjUB24QkYGLkqt(g2K64qwPYTfjwYfp)mn3jg8NwQAT6fjBjka4ZMaBTWNetbikqqbibarE(wWXb1GfairR2DXSHyUKzVvCO8HZgHScszdqEBGuURPgOksTeDGqftouprPYj02hgSsXZzSp6NhznfbLUyufGgO5eqwphEqzCMtdDitIOfe0OaZZyyGWmcLdq66bEKb43C2IzImi5mo4D4(MDWCWH1jNperLUPhMIzgzfmMaHFeIPd4sOtyDou9gUtO5sCDbOykCqIiqJGhcd1K)dNTsNPIQ6YySJXye98b3WXyKUfIuA8c8OTPvAQhNAp3eZyGp70scHJWKBDb567mzILHaGdy0aDHmdP9Dbte43fG8)Q)HLLwF6Fw8EV0J(r183F9yhxUgf3gH)ktdMCyf90J9vQSFTgvwEuAS(rHAvk64qI45DUSOzfddWmnQwF5HP56hMalCrhj60ZSqZh7Q7a2SFhyf29H3zoB2cBJYLlxKo8kk1BU8WdMgx74ZTQgD4pH3Ae0rmYnlP1GH0qcP4tk54(r08flpPJEiTS4k20XujDwyixBJzUpyvZqor0zITJli7M5yF7V4rIzIE4xuzwJAjiZQeXytL0m2eyQrrkjsNkMQWOqrOucZfkbIQd0CdmOiY1yyl(K1DYrndkVokR2kimzgHr3quqv1cik42LnfcEJ4fZ(xCIS263i8IEQD63Px3mTtOC9TARW(9UaqA0T)oOx)(9o)r3GnZiUzW43p66CpAOoOmvcidPYvjeY(RGqusLqA5ncCzcwjSe5GQQbpkGKyUzWOkv6TO1tyNz9q0uDcnfYogAO31CoL0PI8GXg3XFpL9QSx19Qv8PtfJm8GAqJvGhkxmKhAQZm0nxml6U5YnZ2(WIDHtxbKBaG7gw49rdyE0LbqPZW)EdmlFuTpskorNw9IOiq9snZUBOeMIeUBCabpYVi4XpAkQaEJNRcebF3Xzg1XsrOC8y2PoJZZWbamEQB8)9AQwll4fAYMW4ZUILTTGKZbdugCkNahJQjogBsSzYCTTnIS2yMv8cTWScA)MzbGgA4oZrgz2D4YD5YsLvyiMgWZ)H48TjO(2XEKZmIEhFZtYz0HBcXjftDiUpW1Y2FcffJDbvbvFWKOgnRvK4IogBLURP6Hx2UD3bQbbUsdWxBe31CrIa5jMt8(baRUAzRtjYDb9FDNRzaDanTJMj3XGVZtJDsSFPWrGzeBGbl8v2F8FvG9zkfgIJ1SSeauTMutPAXaW3CYcdgaOhm1IbayIka)1AeR7NPDNwO(2OsKNIw8fDwrwQb8y8unon5VkTIXG7TNhq7wgIVfUe4MFgtfUy6dE4lgbwBFYHpWj87RkkiN4y9a(yLipUk)XeoeEC1ipUb)XD1WJCgbOreaKRhGaxWtDY4xpcevcOavscfqqQeLiQhqfTChPztgM6riK92t3zXWKfcvcZHynkH(AVlEZVYflfrmkfzmRfq3wyY25DdfdRQBbS7LA6MA4M00UGdxcG3mG39H41cgfQ0CvJJSuuUc6TOFPmyYkHNmJ1hSPK6Z(rM)eYb8UvsGnctGJDjHPX6wk0NIuKXASPRyKsH8uQgJ8O8eTpuolHEvPsuvUaUIE7QyRkbdy)7nTqt0IULcBvPE0rBSfPOp49kfoRAGW4clTjlc1HuzRQnInqmHoFGWBtsLnqvNu9ibcd6ATvQShWzhzENPDOoLIOOEJidfBgM1Nuee7hO12cinmwsEhsvq0qk6WWKd8Xjf5qZ6rLdePMOBuP4Y9BV9ab2Cl((MZaNFmtYmKsaV32YGhwCen1uxdk0YpCQlnBYXPRFnBikGfpxBswqs6Ms2xqsAoEzetjOmfBJUqVEGlTtoBwL)IcwcL9DDcQDNL22JaOKefq(iV8wFayg1BWadPYL3(daPHehti3S8wGfQjnECDzgvr47e2gSqdjbTtKrjStiaecgfiQ8mHndj0ehkQWpSYmBNLcsscza(wvhxIdHfWti2hwvjBEASI2IEI88JlLePvOZgfloasvNYkhjmxxO37CaP1cBbAU1kWRza(5Og9OWJG0aQGMRAbXGopLwXTskvbkH8VWxly2pRRwyfLs1sVdUkJpafPeiENSe)NIPxC0Xh)N1GF(sdEX0QWLug)NXWp(3Io6zLPFgdP8MpM)t6RRzwhsPKR9Iqcuo(xLgOYRMgiif0lTJuLqFikk2XwooU7UKYiiXs4jf3bViHNf8ast7i)APphLvwjxu8LLm3cAmDYR4gscVmkKNMC5cTuPOqr0PuOoLvOYCv3iVNLbpfd9woQzDTsdlkWPwzsnefQMVggTfYOfcBkBa2(NjJTKtmqu86qtmsOPGG31dTr8VsoIVSn4z4wtkl11rbvUmd7m37KPDqAPo4ZQMZKMusUCa)SH2TTaQYRmPs58(sajAQ)vAvcMSDeQyIrqS7yvjxKMyYXvRX5J5qRmRChXYC6UIBNMxs2g945kDLBptjbewcbq0dlUEdVrqUYgGCLIRLziZyMKVmyMqkYyX0M)kMAOqx23rLmBKPVVA(wivAP1c9dzd6eLx0A8n0mb4sy)ExS(6wm6GI1C6UmoLMZvstSfuG05FWx(KEToM2uAajQiir6zeSXu5EpFQCLvc6PPxtO4G(EvdWEfMz0DlqtIm6bJynpfQOl6znIV0CSUumlddlzPmfPsbsIv0zH5n2vjxhXPu(PXYjROKcxx6CX9II)BC0rsYlwEGKkmju66dsyVJRjg(m9yvoP3LD()6H)5RJu)k0ITxu)h0YJfp7awHT2DpfXzhmqTfwWmeGcvZiCqLdd5YfYVOQqc1bN5du)Whc3XqVtiSJKclFtFkRsRdBXytF(YhpqOciAURZCWynEE4GycIqZRmhDuY5nkpRKDEwQCtj5M1L2Vr1kYv2VcveuUwSgZIePYByjs1nrIulbjs2ebvFdlcAKfrGuzKNvQvLQv0i86IYvAivPPICT6nQRSFTSjrQ9w20q9SjsIRpKuPCUkzq93WYGkkBTmiXfkzuKS)Byrs9NRXImkdA8gwgiTP7AMrEUzY88kORasI9UIUEv1QHnHXNMI3yLKACzoyOMlTmcy0pTOYcyaorVIjOSjVB2KkUf3MwhcH71kjekMitgXwEil5vRT(jpQEuc6)C0PuPMsZQYY7xV6(s1tcFHQjdMZc(CLmw1u0bl0JU1RwTsJMm4z1SVcbxEGNnLLRxUcqjyfHrADW))d \ No newline at end of file +!T31JtjoYY))xOkRtEhYMe(HWwV7QcvCfpf8zy39UVBDOHqaYZqIvsqx3Bp)B)B3ZptceiG6(C3l6DSjtMPNU7PNE6PNpbhOoO)a9zd0hH)hCP3Dw(ogpeax3vL(b(FAd6QmOBfYNvXscHF1)CVXJdSch0TPIc0E7GBHM236ZWJ252b6pWF8EQvQnq3W1CQN)fE2UWZpSD3(TVCGEWTg(3CPxOrOTNlsE95(od0NggEBWBFZBU3yIxzBV3yDQ5rZF))j0)nvgOp0W8Mj(EZDhDONJNpJlvwGlvkxd5sBtp3RmJutQ8OsQPQqE0Nhy13ZZj0(2bhamMLZ4e86qd)L0HLRPPwREJ6A7xTMsZgj0s6JScmcN7BeAny4a9XEibp23(lpE9)zUXiOCJhVUFFMIGQW(dIEWXZGmIeCRLjzqAoWAWfenVVNJf5H2UtGR073Q7VjRc92dOv10Xiiybcey)fRKfs1bTg9FNheAnYA052Uip7BnbgB6)WTq)yascOge2jMouTvimOp3hQW5woo2pE9rGWWKP(8hHQh1Minc9iTXZeisazCFFLkOjKHZTtnqfN(CBWI8bLXNU)8pCtRpanFS9NTg9r7rHtb9owzV5Ho2UWt69((N1PB7y6WFFqxWKldJ6MGW6nJA0oEURjAhUBXhp9XRP)Ap(XRrP(kl37kha2PwpED4ulxzn4)64zA4841tTdF86F5XR3TWo7vp4XR3zVgbfk(2XE(Zmc3noPkBmdmJdlLSlkFRLVPLByXf7fFlqB6s6MfBMRXmlztSCh94PKpIkMV)2rOXOU1DwOTioAamMTjv1Q3chD0d9TNmbgC4Ub4fqUKyjqji)FVIwiHlMZ6a6t(GHVTXqhRGb6)LK1caxbEoe90FTOmY8KqECHJmMzmbu66SMGYyHsl2iKdOTiayw3jrRZFxkzx3XDK1N3Q(3gB5Qza35ZgA5NgdymAKnALz4CHV3eFRGasRuJuLrwgHtZg3H1C1CZqGTtYl)nCl5xHDWjwgo44)CxB4oSdGrB9G5djp)cFly(3aD9lAF2zeFsooDgfqCCqPam(EyVZpOv)RoR37UQ9haFMx9(Uh35mW1z7JE86wV)Ywx1PBhWachbzn1CQL5ncEGBtjMhsSNca7CsfG)nekz2TWfafcGHLs4eHrwhAaES8HBc8nF377Ce9QUq)qV6yhJjb0lVKFn4yoKvx8swLXlJwdr1lxUCcVceEcuXOoU3f970RREH14BGoDxLmUCjUa2UVhu3uv)UfOk9cfFJQIY)sRwX1qgTSqg1LrgQA9tfk8NPzJX)L4qHyfDrRlV8pwMHMqLalZsQA9QvR0O5kQjL9PKDvuK5eC9vmI3KcZDVX17E3vYPI5(vwrTUZWzov2Lk3Zn(Su)UI2gcb04SLT9wMtH(r8NH(NxLeHoXpbMhqQFO)CRvuxZPgUtSgLLQgm17(vvV)ovtl1nWYQ9D2GU6yBF0jl6y5z3ktSkjFry60WIz127tA125pxVbOCnLQzY6tBdT(sm1UMYlKfyklq9xIr1rWyfXbnv9aA17n8hbkORVhdIGQZP64)(V)r3uxBJn11NAmc7TVLg7Az3yxDdn2ROLjRD1NM1ELAV(T21(X3AVYgyTJJdjce)7tl8MnZTW)HZcpztsnyBM1wmtVfR9Hx13EMLF5wJHDISRszWy46i5tiYo198dB5oIMMIDr2RizR6RyV(yLsST(fz7KBjzf7gd2MIbqeXwGOT4Jwg30c4YGYZEGwkPsWgFwZUAmJpReMsp2EYI1gzq222ySO(h709DxDuRZB9U2CEYSCW9GtJ06YLUtiqvJ5J6gBhNs8zVLq1xGnMjl4YHq9VHCLXqyayi5stFyAbqg4YjogUMq3skDEWuch8luHp9z(JLULwn3MmfrKPVho33NUR2P8PZP6GOuQZ7ZCNgof0ht9Cgfz68)c878gzVVwsHsCe68R)coEfPGSPfsWy0XRG4grKmmOZEYMsr9dlHF0Hqsik5RvYojqrKXrFI(V)5Mkx8FJXgjOj47T0IfcXsM5EjUBGnXW7c6IHN5fqxqKMVm(QPf2PS64D2b9(lgzlM9EAV9O0je9tt7VTKnjEspHLnv(8BWOdhoP(kG)1ZpX0P9yZi3ogEtBm3diMN5egWKHuY5feXqcRvHXKFkSX9YTKKWr6gURlMIOWxnpg(5iy68Hx2P)B)Q)gqDKN4()wKEV7SwDpS9MtrPB0f5W3RFYMtWiu4KnvezkWJJeejyNdUCqAUtWobF1)RUYK0tv0LyJRLslIZIB70c6AqBb7Zw7IAPjUHOG3nI(P1b69U8G2hbkjQis)jPyUGuXOiixunEHTu(iR2U5IhBrAI0jUEbH7GZ6D4VTXYgJEpzrJgtXMlB8yricN8MfKUlBR3rV)glECk(KLpHF2nwcLEOtZDDu5S3hAF5V15SZwICMUuYP62iLC2m0MT90D)jj3a(ck8v)Fs0X4byboio5T7C(B3rVWMmrN3pITbZoiIe6Gffww9kgXB3qYpVV7V1T3h7Uvo8SDh7XC3j73ZTCSSiNGiQ8)0ob)PKl0pKgBoFmtKpDkBPF4wOkgXobnbBOOG)pk(e7JKfT7obft3ii2Q9fxIZ54rpuS0sc7zBecRqdBwuQ4Ah8FLm6XInJCCKnzCSCRhhhzdjIPlBoResbPqKvXa1M7xDXp5xfHRqd(smdYsmtIsIrLssrBZ5exR7xx2GwFwIwvYbwBAJuRutB)QBbfi7VWEeFhcBC7xB6OkUfenAwQ2Tq8jMlAdVnsT8GYWnNSLTxMymyZnBZONO9BJMxMjTyEcO(NaF5BbjLjxlYoX3EYjp9(4ldUvCMCUo76THHq8hXtVNzz(TBbLS(8T20g3NVo67ScXRXCC9ZprQVPjQebcwAzQCLjQ85mbMphj2CBZI56(DdsyAgocGunsTDdS8dLO1awxydwmzmot7gOz3HUgGbbdB)agXaJQrEll5SR1lrzPxgX1G9P62qQKQXTWL34iSXVIttCSNzZZBiecUPJNlyQqlDJjVKvfwmJnCc2cgfZQ01VqjHA5PZERi9sFOfiXPLK5Z7ORlt8Tz5z28z5zkpZ8QdwP2b9gp(eGmLIffqMZumHb43qZGkH6YSOIZhC9c)Ek5YrZSsmbD3fsBt23UNillzEZEV0BY7)TBUBnX)N2g8OLROq3E1Q3Dqe7C2qA21kBXUbe6rz)E6l)Ea22y)tZgpf7wUz7g0dzgXBpreWTU463eTY2fn)Zyu8ptrV)0c1(PhI9ltO1RnK6nko5NJ4JFkXfVTXdVfXbNL4Fp9fkY4N1iIFgIe(Peb8lCKVBFeVzms3SfH7PppX(UbH12U7h6CzVUN3UB)wNTagki4vHRHHBS99MbUxnCwBKUqLzbaKJTICSvKJTIm87RquyKJxJC8A8DmEnYr2roYoYr2roYoEHCwKJbKJBt2tGlDtb5WajhgiBdmq2yE2c3AzIDJW2WzWly3(CGtfX(I3EWQqL(pXOel6s1kAnBwphbl5iyjhbl)ZdblR4vTlhalFZaWsouxYH6YpcqDj(zc8eH8I8GaYb)Y3fGF5vi8yy2qRDFVS69ncEmlS33xCeYKzM)jUbPx7q155zhq543jh)o543jh)o543jh)opp435zaDo8JVh0u7k)YPSahzoffHH7bko)1fw7E7r(M2K16hVME3fTVStVJ6COO4lB19DT53TUa6zlBwIDf)BhtjyqEnG5NDnXVkBXVQzzkmXI9p(veRVAv1QvlYUeevVyInxKdAOCqd9JhOH(wzIMJyPCelLJyPCelLJyPCelLJyPCel9kaXsuqb9jPxYiqlqSHggBitHMWTzoIM(Ugrt0)ItC0BLkvUJOnbTtIntYZS73y8p9CaePiBEF7HI07ScjF7JZ(JZZUmftXNioKePyihns5Orkhns5Orkhns5Orkhns)tbnsPDgiN0U1zB6jG890HwywEk9p1f5Nbb)miM(upeIfoYGMnZZzEMtM9mB3DfsBPy6HFo7Ow6hSuq)993G45Pc6flvq55akroGwi3p5jZjpzo5jZjpzo5jZjpzo5jZjpzo5jZ5FSjZH9ALvCJFVY4yALsGfW0kVykMwz3TLPhIN8NNH3CTTfpQznThFtE74EnLxKxlVTC5yX455TPJUT2KVcDPVfVvT1UOtIJm3volFZ3o6)t2w3w8oY991U6EzE95EYVgDptVoDphVwD)tz)C5BcB7FD8Y3Av(wRY3A1)G2Av0cj3aFmqpy(qYF421NpES9NhOF1HT07FLE)wx2FG(iRHqXONHb6N0(Slo(9NniCGoScRVnUpJb9HBHcmmdTVZQpTWZ9gznO7EQk4tSDdT8bpwFWYpaCDnOBLgq7dSAn6)ohpz8ZTDhmeiGR9mIBrGI6GXTFiEriPJDHX(b6wgbw6HW6ptcNcub4nMJ0RO1kWcIDzuaTI9Lne4Hzg2e6socMlh0vfQneTL1NjxA4C7udAdmbwYBgRIhqEk5Y3jR4XZDnhOl(BRp35jgNiY1LWCm6eAuCz)rYNpctQjt9dQIRieg1cjL3iIbLJFqYid6Qmq)bYNFM8jHtBrQax1mqhUX3d9vqQsw1HGod25TDW0NVbbGK4FW0g57DBh3J99Cdrbo4wd)Bo3233ZNClSSZnpCeN7HsUty2qSuV0AcCxaWwGyk4nmgWHg(xb)p0pD1ipbcC9QGPgJ8U)3H9Ehyfs0mKIXpgOVJPASQroizkLbDfqf8ZkKpRIfgYRTLZ4l8a76b6TEF)ESsXv(qlyZpIP7eEeCp7rW0kRr0I7wVkARdr25)hCUsHvnC(G94hgOFy7U9BFjFGRpHz72RBBU4c6bQeq7yc1eYOgRyZisJkrAujsJAcPHYHKyNVYunGDjF8osp8hj1IJHXq6qCV33)Soe(dl)Ep)rF0342b6FuCf5b3zhyp0XAWblTRtVNzk7ZAFC)iDnONGpTDNpF2JxFU1i75ZI8uD7VaM8Q15A7FpP2MoMleQ9qncOFYOLJ2t1Y5YoV7K(p)MomYUvwokBOLdDqOLPjeVh5pUdxFbc3j4gZhsvjVHMiXma60TB7lVkQMlntWywwAlZYsAJOPKQnYcg(HOka68HaxB5Fva1itCpT(OJoFrzEsliwjMR3AHvZiAdwjwJMasGkOQbddNidR0Nt9Zo1YEY0qQKrCWEGdSudzvz9doRD3JKUIpCLJ1KfWJmBsJrVm0kyzGX2tqDfbVDOieCVT7eYf2JOQnEIkqh9ILS6wxb4BjcUGAI3tH4gP50uCswVuwPAd0jrhcmcvSrS0rx0Z9oSzmJar)kBkwFp)qs91iH3ej8eJptcpzEimY272WLS6dWAOQxNoZINkQJp(Oo6xCwR)4XR1B3VFNUVt)R(esJzyczO7PtR1KlzXwc1XYmed9ASXChkdt2ioRF1LP0sh4PqlxcWou1QCtrI7F5ZpZWFIf)PLQwRErY6OYk8rBqSMhs2KbOCWQc1eQiQfUbI2qxm1bzA9UZNnetUm71Kd1yCXiI)tQyaJawiN7BBa2WuFyhinovJ0suRCcT8HI5ybEJdXGdjZgjK0h3Mby7Apb013cpOmowAGrXHMmbYcLuEgJceHrAUaA3aimoG(2ZW1p4PuYBS4L6(6DWKYHaNle2I1i7amNZm2s0NaJFesPd4AOtynocae3jYyjo3amvLrvruOXOdrGAY)HlwPluXnMzc2X4MgdcHy3XnnDdS1PXZXZ6Mc90ao3EUnMcHq2XNeHgrz36s2n0BYeWFKOchW4b6uBgr77doxWVCa5)zaeXPwF6FN8ERYxdJB5V)6PoobooTTI(DOgm4Wqb1x7Rvz)AnQSyV0y99c1pv8(HKUY34Z2ERSBaHPr16l2nnxF3i85fVNOdpZImES7ipWz)Ba)T(p8g7zZM7AvUC5I0UxtREZf7EWr5A7FUJ04D)j8sJroItUzlBoyelKig(emi3pMLVC6jT3JyLL0WM2NAPlcd5wBSfaeZAgYzIotC98bD3mp3B(PaYgTONggvN1O2s0zvI5SPsAoBeUA0K(AIY7u9ufglk3aM0FHMqxDGHVWJIm7JrD5tM4Pg3pO66yTARGXuzmgDnsjxvtWuWTl6leIKjiHdWKmzT1Vs4f9070VtVUzAPq16B1AH97Dbq04R)DqV(97D(x9fRMrI8GjVVZ37E0tTa4kc2qPCvcJS)kyeTuzKwbMq0wWuHfyh0wv8iblXI8GXv60Br3NWsZJIWt1j8uehzONEF7BPSovLl6BCj)902RYEv3RwXhpv2ZWdQbfwbEOAXib3PpJTdQOlNR2mBlelxgoDdqUhaEKzrxivi8ymdGrNv49wyE)OwFKKEIH7geZqGgGBMJ3qlkhjJ34acDuFwOtil8yS6rcHueejngDE2pqZ(LSni8e4UIANY2PdHMxI7OdgPPrXtZ7GHjpCuzgZ4zWscsEWGQL7i6Ey2fgYh5DfRshqZpN9YBO4l(Zehh5NkCemZXfgdl8NS)c4Qb(wlfTghB44iRq1AknvQLOcH2tMBXQaUQDTevaMvkOFTgjA(zg3zePTnQe7POtozJ1uvAapgtT)Pl)7tQec4E7fa8UJL8RIkjT5h0sHlM(qa(2bGaCtn6PUGFPnrRYjEopGpwl2JRYFmrcHhxn2JBWFCxd8CxXk0iwfuRliGpeDkP)RhRgveCGoz73yvQeNjQl4Iw(MgUKUPEmgzV9g5nF4YvcvIkHiqDW4l3fV5N5QLIifvI1N1e8Tdmzx0munSQMje3lngzBGRlrBc2DlP6nfYEiShfrVq1MRQFuvIlvqRLTlLotvl6GzI2GfTS2SFSXpPEaVBLmyJOm4yFYwtynlf(ttjwFn22x2tPWEAvtWEuzI2gQKTKwvPsCtoHurVDvIvfrh2)EBh0xQSzPiwvQhV3g7qq(aVvPizvfkJlCmMmpsdsvSQ2irhXu68ocVDzMSctDcekekd6CTvASlKSJSVZ2nsJsrvuVrSUIncZAtkkI9fwTTawd3)eVbPQiAOeVBy6bE)KIEOz946bIwt2mQwCX2T3EGc7whoIJMbR3BVm3qAczVTJfFRGXSutDoO0k)WP(0CVMKV(5SriHiEUXKSqK0DLSVKLm8cYiLwIXuIf6I8oYTWk5Srv(Blxju331taGLfw2JurffAf598Il9bvZQEdw1qUCXL)GQ0qHtjuAwCjWc1ugpUUkJRiY9swgSqdfjVt0rlzLqOsy1OvIQpxYIHeEIxlQYpQXmBLLckksDa(QfNuJdrcZtc0VSkClEAcKlrpwA(5ks2CrKdrepHCc0lzyYbZVdgWkVIuaHwGMpPc8doNFGJXpp4yevWf0m2kzgm4P0q4j586PmYVIVBSSFwhGqL4jAHxevTXhGQusnEJQc)NIPJq4K9)tQZpFHoVyAW8iL()j09J)T49Ewf6NqxQU595)M(olM1Uuz5aqiIcLt)vzbQ9IzbcAHrL2rPsKpKidDSJNN)UlymcASL8KI7GxSKNjEaPODuFPSNJlkRukk(8YMBbpMo7vCdzHNhdYtxoMzwaZgucDkTwNYqRl30n2lBO4P4wVvJ7w3O0WIsAAuMaJRiaFAy8si9weQPTbu7FVCQT8edeNUE0Z5kYqG4fEWWK)9srYPTINHlnPTqtnfW3LrDw4DQ0gOSqdczqACzdklhtCF0Y4MwaxfuMaxSGpjyr7r)jfQCl3pcvnXyi2DmOIfRiMEC1wCHyAJkZW8hIhO7kUDwElZ3yap9GRC5zklG1LWae7WIR3XBmIRTbexR4AfgYiMn5BeLjeK2kh2cxXqdT2Ld90jJgz6lTLphXKwzT1(HSv7LQVOaDnYibesy)ExSEW7fVtrGxUltsPPzKueBcfOD(x8PpPd4V0gsfSOMKfPPfFJ5Y9E6C5kHd5PPdmsStFRUf4VcbyXUfOiKcJGroNNwR4t6zfIV5ySMumlDdlzPmdPscnXkAS09g7QLdM2uWGzICYkXE36sNlUwuYFtsoEAPzzQMGpcBYbLXWZqBe(NTrm4fe5WyQGNZLayruWxzd8AhxtVze3e8ZdL4JepxrEhzpAKL7a9UT)acJnAAVpGH4Kb6h4y)LVy4dTPpfX(Ga7BmdXvOrObfGJKX5JXsPNvQ(Hx2UDxA2XjyaXA2D4jnPwwPSgMeBeNGeCK8fpqSXtBWZ3gZja94roP3LD()6H)HPJanfkm6La5WCQL5nKZaGbR1U7PjpdGb6TqmZqQueWFWRQA0AUie9LW7isdq9WV8lrByK32d2rlHG3mKo(rryTSVPpFra4ebcr3c6Ayfi8GTbDdSTZGYCYrzNxPYSw2LzLYnvuBwxz)gvROwz)kuvq5AjkmlAKkVI1iv3ensTLOrYMkO6RyvqJSOcukJYSwTQuRIgrNxuUsdLkn1uRvVrDT9RLnnsTxZUgQNnvss7HLHMZvPdQ)kwhurBR1blDIsgvj7)kwLu)P6SiJ6GgVI1bkB6QMzuMBUCzEf8LGLyVfOR3uTAuxy8HPKfwzzfUOem0WNcuxg)trhMqa4m9kgGYM(UztQ6wEBAnicTxRMqAyIczmF5r8KxT26h8O2rlX(NtoTk10AwvvD)6v3xP(YOxeupZcwiKBKXWfvhtc0LRwTsJMS6ZGTVgHwbqKnLvRxUcWjiYUiLo4)) \ No newline at end of file diff --git a/WeakAuras/Projects/ScrollingText/init.lua b/WeakAuras/Projects/ScrollingText/init.lua new file mode 100644 index 0000000..70f05f5 --- /dev/null +++ b/WeakAuras/Projects/ScrollingText/init.lua @@ -0,0 +1,130 @@ +aura_env.envTypes = { + ["Drowning"] = 132322, + ["Falling"] = 450905, + ["Fatigue"] = 237555, + ["Fire"] = 135805, + ["Lava"] = 237583, + ["Slime"] = 132108, +} + +aura_env.spellSchools = { + --single schools + [1] = { "Physical", 1 }, + [2] = { "Holy", 2 }, + [4] = { "Fire", 4 }, + [8] = { "Nature", 8 }, + [16] = { "Frost", 16 }, + [32] = { "Shadow", 32 }, + [64] = { "Arcane", 64 }, + --double schools + [3] = { "Holystrike (Holy+Physical)", 0 }, + [5] = { "Flamestrike (Fire+Physical)", 0 }, + [6] = { "Radiant (Fire+Holy)", 0 }, + [9] = { "Stormstrike (Nature+Physical)", 0 }, + [10] = { "Holystorm (Nature+Holy)", 0 }, + [12] = { "Firestorm (Nature+Fire)", 0 }, + [17] = { "Froststrike (Frost+Physical)", 0 }, + [18] = { "Holyfrost (Frost+Holy)", 0 }, + [20] = { "Frostfire (Frost+Fire)", 0 }, + [24] = { "Froststorm (Frost+Nature)", 0 }, + [33] = { "Shadowstrike (Shadow+Physical)", 0 }, + [34] = { "Twilight (Shadow+Holy)", 0 }, + [36] = { "Shadowflame (Shadow+Fire)", 0 }, + [40] = { "Plague (Shadow+Nature)", 0 }, + [48] = { "Shadowfrost (Shadow+Frost)", 0 }, + [65] = { "Spellstrike (Arcane+Physical)", 0 }, + [66] = { "Divine (Arcane+Holy)", 0 }, + [68] = { "Spellfire (Arcane+Fire)", 0 }, + [72] = { "Astral (Arcane+Nature)", 0 }, + [80] = { "Spellfrost (Arcane+Frost)", 0 }, + [96] = { "Spellshadow (Arcane+Shadow)", 0 }, + --triple and multi schools + [28] = { "Elemental (Frost+Nature+Fire)", 0 }, + [124] = { "Chromatic (Arcane+Shadow+Frost+Nature+Fire)", 0 }, + [126] = { "Magic (Arcane+Shadow+Frost+Nature+Fire+Holy)", 0 }, + [127] = { "Chaos (Arcane+Shadow+Frost+Nature+Fire+Holy+Physical)", 0 }, +} + +aura_env.schoolColors = { + [0] = "ffffff", --No school + [1] = "ffff00", --Physical + [2] = "ffe680", --Holy + [4] = "ff8000", --Fire + [8] = "50ff61", --Nature + [16] = "80ffff", --Frost + [32] = "8080ff", --Shadow + [64] = "ff80ff", --Arcane + [99] = "00ff00", --HEAL +} + +aura_env.maxHealth = UnitHealthMax("player") + +aura_env.format = function(value) + if not value or type(value) ~= "number" then return end + + if aura_env.config.format == 1 then + if value > 999999999 then + value = string.format("%.2fB", value / 1000000000) + elseif value > 999999 then + value = string.format("%.2fM", value / 1000000) + elseif value > 99999 then + value = string.format("%.fK", value / 1000) + elseif value > 999 then + value = string.format("%.1fK", value / 1000) + elseif value <= 0 then + value = 0 + end + elseif aura_env.config.format == 2 then + if value > 999999999 then + value = ("%d,%03d,%03d,%03d"):format( + floor(value / 1000000000), + floor(value / 1000000) % 1000, + floor(value / 1000) % 1000, + value % 1000 + ) + elseif value > 999999 then + value = ("%d,%03d,%03d"):format(floor(value / 1000000), floor(value / 1000) % 1000, value % 1000) + elseif value > 999 then + value = ("%d,%03d"):format(floor(value / 1000), value % 1000) + elseif value <= 0 then + value = 0 + end + end + + return value +end + +local aura_env = aura_env +local sort1 = function(a, b) return a.state.index > b.state.index end +local sort2 = function(a, b) return a.state.index < b.state.index end +aura_env.sortAndOffset = function(options) + local spacing = aura_env.config.spacing or 2 + local count = options and 1 or 0 + local t = {} + + for k, v in pairs(WeakAuras.clones[aura_env.id]) do + if v.state and v.state.show and v.state.index then table.insert(t, v) end + end + + if aura_env.config.sorting == 1 then + table.sort(t, sort1) + elseif aura_env.config.sorting == 2 then + table.sort(t, sort2) + end + + for i, region in pairs(t) do + if region.toShow then + local xOffset = 0 + local yOffset = 0 + if aura_env.config.side == 1 then --TOP + yOffset = 0 + (region.height + spacing) * count + elseif aura_env.config.side == 2 then --BOTTOM + yOffset = 0 - (region.height + spacing) * count + end + + region:SetAnchor("CENTER", WeakAuras.regions[aura_env.id].region, "CENTER") + region:SetOffset(xOffset, yOffset) + count = count + 1 + end + end +end diff --git a/WeakAuras/Projects/ScrollingText/trigger.lua b/WeakAuras/Projects/ScrollingText/trigger.lua new file mode 100644 index 0000000..a72c3c8 --- /dev/null +++ b/WeakAuras/Projects/ScrollingText/trigger.lua @@ -0,0 +1,568 @@ +-- COMBAT_LOG_EVENT_UNFILTERED AURA_INIT + +function( + states, + event, + tstamp, + message, + hideCaster, + srcGUID, + srcName, + srcFlags, + srcRFlags, + destGUID, + destName, + destFlags, + destRFlags, + ... +) + if event == "OPTIONS" then + local amount1 = Round(UnitHealth("player") / 100 * 25) + local amount2 = Round(UnitHealth("player") / 100 * 15) + states[""] = { + name = "PARRY", + icon = 644389, + amount = "", + percent = "", + school = "unknown", + index = 3, + value = UnitHealthMax("player"), + total = UnitHealthMax("player"), + progressType = "static", + autoHide = true, + changed = true, + show = true, + } + states[1] = { + name = "Evil Fire Spell", + icon = 644389, + amount = aura_env.format(amount1), + percent = "[25%]", + schoolIndex = 4, + index = 2, + value = UnitHealth("player") / 100 * 50, + total = UnitHealthMax("player"), + additionalProgress = { [1] = { direction = "forward", width = amount1 } }, + progressType = "static", + autoHide = true, + changed = true, + show = true, + } + states[2] = { + name = "Evil Shadow Spell", + icon = 644389, + amount = aura_env.format(amount2), + percent = "[15%]", + schoolIndex = 32, + index = 1, + value = UnitHealth("player") / 100 * 35, + total = UnitHealthMax("player"), + additionalProgress = { [1] = { direction = "forward", width = amount2 } }, + progressType = "static", + autoHide = true, + changed = true, + show = true, + } + states[3] = { + name = "Healing", + icon = 644389, + amount = aura_env.format(amount2), + percent = "[15%]", + schoolIndex = 99, + index = 1, + value = UnitHealth("player") / 100 * 35, + total = UnitHealthMax("player"), + additionalProgress = { [1] = { direction = "forward", width = amount2 } }, + progressType = "static", + autoHide = true, + changed = true, + show = true, + } + local aura_env = aura_env + C_Timer.After(0.1, function() aura_env.sortAndOffset(true) end) + return true + end + + if event == "COMBAT_LOG_EVENT_UNFILTERED" and destGUID == WeakAuras.myGUID and ... then + local c = aura_env.config + if message == "SWING_DAMAGE" and c.swing then + local amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing = ... + if amount then + local healthCurrent, healthMax = UnitHealth("player"), UnitHealthMax("player") + local threshold = amount * 100 / healthMax + if threshold >= c.threshold then + local schools = aura_env.spellSchools + local SC, SCI = 0, 0 + if schools[school] then + SC, SCI = schools[school][1], schools[school][2] + end + local healthPercentLost = string.format("%.1f%%", threshold) + --formatted health + local healthAfterHit = overkill > 0 and 0 or healthCurrent - amount + --formatted amount + local color = aura_env.schoolColors[school] or "ffffff" + local prefix = critical and "|cFFFFD100CRIT:|r" + or glancing and "|cFFFFD100GLANCE:|r" + or crushing and "|cFFFFD100CRUSH:|r" + or "|cFFFFD100HIT:|r" + local Famount = ("%s |cFF%s%s|r|n"):format(prefix, color, aura_env.format(amount)) + --formatted absorb + local Fabsorbed = absorbed + and ("|cFFFFD100ABSORBED:|r |cFFFFFFFF%s|r|n"):format(aura_env.format(absorbed)) + or "" + --formatted block + local Fblocked = blocked + and ("|cFFFFD100BLOCKED:|r |cFFFFFFFF%s|r|n"):format(aura_env.format(blocked)) + or "" + --formatted resist + local Fresisted = resisted + and ("|cFFFFD100RESISTED:|r |cFFFFFFFF%s|r|n"):format(aura_env.format(resisted)) + or "" + --formatted overkill + local Foverkill = overkill > 0 + and ("|cFFFFD100OVERKILL:|r |cFFFFFFFF%s|r"):format(aura_env.format(overkill)) + or "" + local Ftime = ('|cFFFFD100"%s"|r'):format(date("%H:%M:%S")) + local Fname = srcName and ("|cFFFFFFFF%s|r"):format(srcName) or "|cFFbbbbbbUNKNOWN|r" + local Finfo = ("|cFFFFFFFFMelee hit|r [%s]"):format(SC == 0 and "unknown" or SC) + local Fdamage = ("|cFF00FF00%s|r > |cFF00FF00%s|r (%s)"):format( + aura_env.format(healthCurrent), + aura_env.format(healthAfterHit), + healthPercentLost + ) + local Fdetails = ("%s%s%s%s%s"):format(Famount, Fabsorbed, Fblocked, Fresisted, Foverkill) + local tooltip = ("%s %s|n|n%s|n%s|n|n%s"):format(Ftime, Fname, Finfo, Fdamage, Fdetails) + local new = { + name = "", + icon = 135274, + spellid = 0, + amount = aura_env.format(amount), + percent = ("[%s]"):format(healthPercentLost), + school = SC, + schoolIndex = SCI, + index = 0, + value = healthCurrent or 100, + total = healthMax or 100, + death = overkill > 0, + tooltip = tooltip, + duration = c.duration, + expirationTime = GetTime() + c.duration, + additionalProgress = { [1] = { direction = "backward", width = amount } }, + progressType = "static", + autoHide = true, + show = true, + changed = true, + } + tinsert(states, new) + for k, v in pairs(states) do + v.index = v.index + 1 + v.changed = true + if v.index > c.limit then --clone limit + v.show = false + end + end + return true + end + end + elseif message == "SWING_MISSED" and c.missType then + local missType, isOffHand, amount = ... + if amount and amount >= c.missThreshold or not amount then + local healthCurrent, healthMax = UnitHealth("player"), UnitHealthMax("player") + local Famount = amount and ("|cFFFFD100HIT:|r |cFFFFFFFF%s|r"):format(aura_env.format(amount)) or "" + local Ftime = ('|cFFFFD100"%s"|r'):format(date("%H:%M:%S")) + local Fname = srcName and ("|cFFFFFFFF%s|r"):format(srcName) or "|cFFbbbbbbUNKNOWN|r" + local tooltip = ("%s %s|n|n|cFFFFFFFFMelee hit|r |cFFFF0000%s|r|n%s"):format( + Ftime, + Fname, + missType, + Famount + ) + local new = { + name = missType, + icon = 135274, + spellid = 0, + amount = amount and aura_env.format(amount) or "", + percent = "", + school = "unknown", + schoolIndex = 0, + index = 0, + value = healthCurrent or 100, + total = healthMax or 100, + tooltip = tooltip, + duration = c.duration, + expirationTime = GetTime() + c.duration, + additionalProgress = { [1] = {} }, + progressType = "static", + autoHide = true, + show = true, + changed = true, + } + + tinsert(states, new) + for k, v in pairs(states) do + v.index = v.index + 1 + v.changed = true + if v.index > c.limit then --clone limit + v.show = false + end + end + + return true + end + elseif message == "ENVIRONMENTAL_DAMAGE" and c.env then --enviromental + local envType, amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing = ... + if amount then + local healthCurrent, healthMax = UnitHealth("player"), UnitHealthMax("player") + local threshold = amount * 100 / healthMax + if threshold >= c.threshold then + local schools = aura_env.spellSchools + local SC, SCI = 0, 0 + if schools[school] then + SC, SCI = schools[school][1], schools[school][2] + end + + local healthPercentLost = string.format("%.1f%%", threshold) + + --formatted health + local healthAfterHit = overkill > 0 and 0 or healthCurrent - amount + --formatted amount + local color = aura_env.schoolColors[school] or "ffffff" + local prefix = critical and "|cFFFFD100CRIT:|r" + or glancing and "|cFFFFD100GLANCE:|r" + or crushing and "|cFFFFD100CRUSH:|r" + or "|cFFFFD100HIT:|r" + + local Famount = ("%s |cFF%s%s|r|n"):format(prefix, color, aura_env.format(amount)) + --formatted absorb + local Fabsorbed = absorbed + and ("|cFFFFD100ABSORBED:|r |cFFFFFFFF%s|r|n"):format(aura_env.format(absorbed)) + or "" + --formatted block + local Fblocked = blocked + and ("|cFFFFD100BLOCKED:|r |cFFFFFFFF%s|r|n"):format(aura_env.format(blocked)) + or "" + --formatted resist + local Fresisted = resisted + and ("|cFFFFD100RESISTED:|r |cFFFFFFFF%s|r|n"):format(aura_env.format(resisted)) + or "" + --formatted overkill + local Foverkill = overkill > 0 + and ("|cFFFFD100OVERKILL:|r |cFFFFFFFF%s|r"):format(aura_env.format(overkill)) + or "" + + local Ftime = ('|cFFFFD100"%s"|r'):format(date("%H:%M:%S")) + local Fname = srcName and ("|cFFFFFFFF%s|r"):format(srcName) or "|cFFbbbbbbUNKNOWN|r" + local Finfo = ("|cFFFFFFFFEnvironmental|r [%s]"):format(SC == 0 and "unknown" or SC) + local Fdamage = ("|cFF00FF00%s|r > |cFF00FF00%s|r (%s)"):format( + aura_env.format(healthCurrent), + aura_env.format(healthAfterHit), + healthPercentLost + ) + local Fdetails = ("%s%s%s%s%s"):format(Famount, Fabsorbed, Fblocked, Fresisted, Foverkill) + local tooltip = ("%s %s|n|n%s|n%s|n|n%s"):format(Ftime, Fname, Finfo, Fdamage, Fdetails) + + local eTypes = aura_env.envTypes + + local new = { + name = envType, + icon = eTypes[envType] or 132996, + spellid = 0, + amount = aura_env.format(amount), + percent = ("[%s]"):format(healthPercentLost), + school = SC, + schoolIndex = SCI, + index = 0, + value = healthCurrent or 100, + total = healthMax or 100, + death = overkill > 0, + tooltip = tooltip, + duration = c.duration, + expirationTime = GetTime() + c.duration, + additionalProgress = { [1] = { direction = "forward", width = amount } }, + progressType = "static", + autoHide = true, + show = true, + changed = true, + } + + tinsert(states, new) + for k, v in pairs(states) do + v.index = v.index + 1 + v.changed = true + if v.index > c.limit then --clone limit + v.show = false + end + end + return true + end + end + elseif message == "ENVIRONMENTAL_MISSED" and c.missType then + local envType, missType, isOffHand, amount = ... + if amount and amount >= c.missThreshold or not amount then + local healthCurrent, healthMax = UnitHealth("player"), UnitHealthMax("player") + local Famount = amount and ("|cFFFFD100HIT:|r |cFFFFFFFF%s|r"):format(aura_env.format(amount)) or "" + + local Ftime = ('|cFFFFD100"%s"|r'):format(date("%H:%M:%S")) + local Fname = envType and ("|cFFFFFFFF%s|r"):format(envType) or "|cFFbbbbbbUNKNOWN|r" + local tooltip = ("%s %s|n|n|cFFFFFFFFEnvironmental|r |cFFFF0000%s|r|n%s"):format( + Ftime, + Fname, + missType, + Famount + ) + + local eTypes = aura_env.envTypes + + local new = { + name = missType, + icon = eTypes[envType] or 132996, + spellid = 0, + amount = amount and aura_env.format(amount) or "", + percent = "", + school = "unknown", + schoolIndex = 0, + index = 0, + value = healthCurrent or 100, + total = healthMax or 100, + tooltip = tooltip, + duration = c.duration, + expirationTime = GetTime() + c.duration, + additionalProgress = { [1] = {} }, + progressType = "static", + autoHide = true, + show = true, + changed = true, + } + + tinsert(states, new) + for k, v in pairs(states) do + v.index = v.index + 1 + v.changed = true + if v.index > c.limit then --clone limit + v.show = false + end + end + return true + end + elseif string.find(message, "_DAMAGE") and c.other then + --SPELL_DAMAGE SPELL_PERIODIC_DAMAGE RANGE_DAMAGE + local spellid, spellName, spellSchool, amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing = + ... + if (c.stagger and spellid ~= 124255 or not c.stagger) and amount then + local healthCurrent, healthMax = UnitHealth("player"), UnitHealthMax("player") + local threshold = amount * 100 / healthMax + if threshold >= c.threshold then + local schools = aura_env.spellSchools + local SC, SCI = 0, 0 + if schools[school] then + SC, SCI = schools[school][1], schools[school][2] + end + + local healthCurrent, healthMax = UnitHealth("player"), UnitHealthMax("player") + local healthPercentLost = string.format("%.1f%%", threshold) + + --formatted health + local healthAfterHit = overkill > 0 and 0 or healthCurrent - amount + --formatted amount + local color = aura_env.schoolColors[school] or "ffffff" + local prefix = critical and "|cFFFFD100CRIT:|r" + or glancing and "|cFFFFD100GLANCE:|r" + or crushing and "|cFFFFD100CRUSH:|r" + or "|cFFFFD100HIT:|r" + + local Famount = ("%s |cFF%s%s|r|n"):format(prefix, color, aura_env.format(amount)) + --formatted absorb + local Fabsorbed = absorbed + and ("|cFFFFD100ABSORBED:|r |cFFFFFFFF%s|r|n"):format(aura_env.format(absorbed)) + or "" + --formatted block + local Fblocked = blocked + and ("|cFFFFD100BLOCKED:|r |cFFFFFFFF%s|r|n"):format(aura_env.format(blocked)) + or "" + --formatted resist + local Fresisted = resisted + and ("|cFFFFD100RESISTED:|r |cFFFFFFFF%s|r|n"):format(aura_env.format(resisted)) + or "" + --formatted overkill + local Foverkill = overkill > 0 + and ("|cFFFFD100OVERKILL:|r |cFFFFFFFF%s|r"):format(aura_env.format(overkill)) + or "" + + local Ftime = ('|cFFFFD100"%s"|r'):format(date("%H:%M:%S")) + local Fname = srcName and ("|cFFFFFFFF%s|r"):format(srcName) or "|cFFbbbbbbUNKNOWN|r" + local Finfo = ("|cFFFFFFFF%s|r [|cFF%s%s|r]"):format( + spellName or "unknown", + color, + SC == 0 and "unknown" or SC + ) + local Fdamage = ("|cFF00FF00%s|r > |cFF00FF00%s|r (%s)"):format( + aura_env.format(healthCurrent), + aura_env.format(healthAfterHit), + healthPercentLost + ) + local Fdetails = ("%s%s%s%s%s"):format(Famount, Fabsorbed, Fblocked, Fresisted, Foverkill) + local tooltip = ("%s %s|n|n%s|nspellID: |cFF00FFFF%s|r|n|n%s|n|n%s"):format( + Ftime, + Fname, + Finfo, + spellid or "", + Fdamage, + Fdetails + ) + + local new = { + name = spellName, + icon = GetSpellTexture(spellid), + spellid = spellid, + amount = aura_env.format(amount), + percent = ("[%s]"):format(healthPercentLost), + school = SC, + schoolIndex = SCI, + index = 0, + value = healthCurrent or 100, + total = healthMax or 100, + death = overkill > 0, + tooltip = tooltip, + duration = c.duration, + expirationTime = GetTime() + c.duration, + additionalProgress = { [1] = { direction = "forward", width = amount } }, + progressType = "static", + autoHide = true, + show = true, + changed = true, + } + + tinsert(states, new) + for k, v in pairs(states) do + v.index = v.index + 1 + v.changed = true + if v.index > c.limit then --clone limit + v.show = false + end + end + return true + end + end + elseif string.find(message, "_HEAL") and c.other then + local spellid, spellName, spellSchool, amount, overkill, school, resisted, blocked, absorbed, critical, glancing, crushing = + ... + if c.healing and amount then + local healthCurrent, healthMax = UnitHealth("player"), UnitHealthMax("player") + local threshold = amount * 100 / healthMax + if threshold >= c.hthreshold then + local SC, SCI = 0, 99 + local healthCurrent, healthMax = UnitHealth("player"), UnitHealthMax("player") + local healthPercentLost = string.format("%.1f%%", threshold) + local healthAfterHit = min(healthMax, healthCurrent + amount) + local color = aura_env.schoolColors[school] or "ffffff" + local prefix = critical and "|cFFFFD100CRIT:|r" or "|cFFFFD100HIT:|r" + local Famount = ("%s |cFF%s%s|r|n"):format(prefix, color, aura_env.format(amount)) + local Ftime = ('|cFFFFD100"%s"|r'):format(date("%H:%M:%S")) + local Fname = srcName and ("|cFFFFFFFF%s|r"):format(srcName) or "|cFFbbbbbbUNKNOWN|r" + local Finfo = ("|cFFFFFFFF%s|r [|cFF%s%s|r]"):format( + spellName or "unknown", + color, + SC == 0 and "" or SC + ) + local Fdamage = ("|cFF00FF00%s|r > |cFF00FF00%s|r (%s)"):format( + aura_env.format(healthCurrent), + aura_env.format(healthAfterHit), + healthPercentLost + ) + local Fdetails = ("%s"):format(Famount) + local tooltip = ("%s %s|n|n%s|nspellID: |cFF00FFFF%s|r|n|n%s|n|n%s"):format( + Ftime, + Fname, + Finfo, + spellid or "", + Fdamage, + Fdetails + ) + + local new = { + name = spellName, + icon = GetSpellTexture(spellid), + spellid = spellid, + amount = aura_env.format(amount), + percent = ("[%s]"):format(healthPercentLost), + school = SC, + schoolIndex = SCI, + index = 0, + value = healthCurrent or 100, + total = healthMax or 100, + death = overkill > 0, + tooltip = tooltip, + duration = c.duration, + expirationTime = GetTime() + c.duration, + additionalProgress = { [1] = { direction = "forward", width = amount } }, + progressType = "static", + autoHide = true, + show = true, + changed = true, + } + + tinsert(states, new) + for k, v in pairs(states) do + v.index = v.index + 1 + v.changed = true + if v.index > c.limit then --clone limit + v.show = false + end + end + return true + end + end + elseif string.find(message, "_MISSED") and c.missType then + --SPELL_MISSED SPELL_PERIODIC_MISSED RANGE_MISSED + local spellid, spellName, school, missType, isOffHand, amount = ... + if c.stagger and spellid ~= 124255 or not c.stagger then + if amount and amount >= c.missThreshold or not amount then + local healthCurrent, healthMax = UnitHealth("player"), UnitHealthMax("player") + local Famount = amount and ("|cFFFFD100HIT:|r |cFFFFFFFF%s|r"):format(aura_env.format(amount)) or "" + + local Ftime = ('|cFFFFD100"%s"|r'):format(date("%H:%M:%S")) + local Fname = srcName and ("|cFFFFFFFF%s|r"):format(srcName) or "|cFFbbbbbbUNKNOWN|r" + local tooltip = ("%s %s|n|n|cFFFFFFFF%s|r |cFFFF0000%s|r|nspellID: |cFF00FFFF%s|r|n%s"):format( + Ftime, + Fname, + spellName, + missType, + spellid, + Famount + ) + + local new = { + name = missType, + icon = GetSpellTexture(spellid), + spellid = spellid, + amount = amount and aura_env.format(amount) or "", + percent = "", + school = "unknown", + schoolIndex = 0, + index = 0, + value = healthCurrent or 100, + total = healthMax or 100, + tooltip = tooltip, + duration = c.duration, + expirationTime = GetTime() + c.duration, + additionalProgress = { [1] = {} }, + progressType = "static", + autoHide = true, + show = true, + changed = true, + } + + tinsert(states, new) + for k, v in pairs(states) do + v.index = v.index + 1 + v.changed = true + if v.index > c.limit then --clone limit + v.show = false + end + end + return true + end + end + end + end +end diff --git a/WeakAuras/Projects/ScrollingText/vars.lua b/WeakAuras/Projects/ScrollingText/vars.lua new file mode 100644 index 0000000..524838a --- /dev/null +++ b/WeakAuras/Projects/ScrollingText/vars.lua @@ -0,0 +1,15 @@ +{ + school = { + display = "Damage School name", + type = "string", + }, + schoolIndex = { + display = "Damage School index", + type = "number", + }, + additionalProgress = 1, + death = { + display = "Death", + type = "bool", + }, +}