Sign in to follow this  
Followers 0
zagtastic

Enh -- Maximizing Shock DPS (WA Tracker)

12 posts in this topic

hey all.  i created an account here to share a WeakAuras custom group with you.  the purpose of this group is to track relative Flame Shock strengths and help the player maximize both FS and ES damage.

 

it does this by showing at any given time whether it is ideal to use Flame Shock or Earth Shock, and -- additionally -- how strong an FS cast at that moment would be in comparison to any existing FS.  this allows the user to intelligently determine when to refresh FS (which may be beneficial even without unleash flame buff), calculates when letting FS fall off is worth it, and generally facilitates more ES usage than the commonly used priority rules.  my expectation is that using this to determine whether to cast FS (or ES, if you make it that far down your priority queue) will at least marginally improve nearly any enh shammy's dps.

 

what it won't do:  1) improve your FS uptime, 2) tell you when to forego or delay casting a shock (i recommend separate trackers for UE CD, Unleash Flame buff, and current FS duration), 3) inform regarding any other skills or where in your priority to use shocks.  it is ENTIRELY answering the questions: "if i'm going to shock now, which should i use?" and "if i were to cast FS now, how strong would it be compared to my current FS"?

 

functionally, there are 4 states:

-- shocks on CD, nothing shows

-- should use flame shock, UF active, saturated FS icon with colored text showing the % power vs existing FS

-- should use flame shock, NO UF active, desaturated FS icon with colored text showing the % power vs existing FS.

-- should use earth shock, ES icon with colored text showing the % power of a new FS vs existing FS

 

note that these values can change extremely rapidly, as buffs, procs, etc are acquired or expire.

 

"power" is determined by checking SP, spell crit, spell haste (an additional tick at every x5%), mastery, UF buff, and any static (all) damage multipliers.  see below for specific logic and code snippets.

 

here is the WeakAuras import string:

dqfL9aGirWLGsPpjIsJsLQtbfwLiQ6vkvkZsjPBjcTlLkPFrrPmmk0XOkwgfvpJsQPjICnkjBtQKVPKQXPuX5OaENiQyEuuc3dISpruCqOOfsb9qPsnrPIUiLWgPiFekfJeIsNKIIvksVuPsLMPsIBsjQDQu(juQgQuHLsjYtbnviCvkqBLIs1xHOYzvQu1APOe1BPOKAUqu1DPOKSxH)sPgm5WuzXQuEmqtwQ6Ys2Ss8zOQrRsonGvtrjYRPknBvCBQQDROFlQHdvoUiQKLlLNRW0v11H02vs57kvz8kv15HswVsL49kvQy(quCFruP2p6WtGiGUar8bCeqZ3vJ7Qvb0pG9bSpqeW9X(YYO(yZkJbSv4bYteyHRcypwtNpai(wgfxaXc7llJ6JTe9yLvbCGZbwXMXaw7JZn7R(4waVLB9vd7llJ6JnJbeOpGWRmO3ra3dO)VITKmgWjQpIgaE8vBeBEc4vbG)6dtjzLvgnMK1wzEsD1LhZtANyjXKSkGJ6S0rgy(beb27iGNSRpqeWw(ubIa6JEEGar8XhF8bemqeBEcebeDun79dtjA16DLuxEm2LhRsYJXU2zNyjrR2jG9adChhwiQ9)agWLCRW3YOZ(UZNClqeBEInpXM5HP1nGhZn3yxjzmjpDLuxwVESKOvRhBwhMw3aEm3CJDLKXK80vsDz96XsIwTESLuS5j(a2xd3J2CFzOd0l(wgD2h3c4W5xiQ9F0wf3c4nhOx8Tm6SV78j3ceXMNW06wN06gtANDmA9oDTUNUSows0QUInZdtRBDsRBmPD2XO17016E6Y6yjrR6k2SomTU1jTUXK2zhJwVtxR7PlRJLeTQRylPyZt8b8R9)UZNClqeBEInpXM5XMNyZ6yZtSLuS5j(aoQZshzG5hWUTydHfwkGFdap(Qfic4JfUkGGOJp7hqq0XN9TFSWvbSwRMFabrhF23(cOVcii64Z(beDwRvZpGo0phWATA(Ja2n2TSHyIWEfSJn2wy2TydHTb3mzMvqyHLSOZv7yfm39wyjBlzb2yXMTfByA4kw05QDScM7ElSKTfBiSWsMzdBSroSBPv6C1owbZDVfwYgZvmJz3IacIo(SFaxqNGpqEsDVwRM)Qu76UURyWukkkkthNFbVYGEThD68D4lkKOmDC(f8kd61E0PZ3HVOYnQDNKBMsrrrXukkkkGfQATA(uiHevcDJDlBiMiSxb7yJTfMDl2qyBWntMzfewyjl6mbQ)QMmLIIIIIII6KbDhk7vPW5Ao)vPSxLAKrBG1Qu2RszVkL9Qu914bMUhipxLYEvk7vPSxLAGRohkKO21DDxzkfffffffftPOOOOOOOsmrQX0HBCLFQ8KAGRohq34zkffffffffWc1iJ2alkKqIYGtGhBmOz68Ec4ooSQwcyq5M9u4CnNpfsirLaSdlwzf7UXeIWgAWU72cimbQ)QMmLIIIIIIIIIIIcyHAGRohkKqIAhJwzK6VQjtPOOOOOOOOOOOOOOOqomTbDhq47(HDnVUJbtPOOOOOOOOOOOOOOOmDC(f8kd61E0PZ3HVSbDJNcjkKdt7X7(HTPJZVGxzqVD68zkfffffffffffvn7zkfffffffffffftPOOOOOOOOOOOsmrQBOpvEEWIQvG5wp1FvuJPd34k)ualuap1afeSgJf0ZblkhoChGQNPuuuuuuuu1zualuJmAdSOqcjkdobESXGMPZ7jG74WQAjGbLB2tDhNR58PqcjQeGDyXkRyJPbTeM2y2rhRygl6mbQCJcNR58PqcjQeGDyXkRyJPbTeM2wYctwYciYMagu)vnzkffffffffffffWc1axDouiHe1ogTYi1FvtMsrrrrrrrrrrrrrrrbSqnZpLPJZVGxzqV2JoD(o8LnOB8u)vnzkffffffffffffffffffffYHPnO7acF3pSR51DmykfffffffffffffffffffLPJZVGxzqV2JoD(o8LnOB8uirHCyApE3pSnDC(f8kd6TtNptPOOOOOOOOOOOOOOOQzptPOOOOOOOOOOOOOOOykfffffffffffffffLPJZVGxzqV2JoD(o8LzDFnEGP7bYtZkkKOmDC(f8kd61E0PZ3HVSbDJNPuuuuuuuuuuuu1SNPuuuuuuuu1SNPuuuuuuuumLIIIIIIIkXePapLBsHIJkJ(u5fkWS)n3ZukkkQ6mkGfQ7Z8tzWjWJ5Ysb(at8DN9V5(7jG74WQAjGbguUzp19z(Pm4e4XgdAMoVNWT8y4jbmWG6VQjtPOOOOOOOmDC(f8kd61E0PZ3HVOqIA3j5MPuuuu1SNP1SpGGxfO3awRvZpGOJYgDc8HHXhqWwgN9(HPDmFNU6YCZnG5RVJNK6YQUILeTkPaEYU(ararhL9SwRAXTa(Utn)yZZ6be84gJarahat8NkGqKftlJ5w8bCGRadebCamXFQyZ8a6JEEGarS5jmm2mpmm(4di6OSbpUXimmGOJY(DNA(XTaIok7PZVIBbeDu27sEwXTaoD(vadi6OSh4kWWWaIokBWS)n3hggq0rz3dSSaaIEESIBbSLpvGiG(ONhiqeF8XhWXda6fRorBUhipJBbShya2QVSB539a5zSzmGl55hqmbbb6R57ouD0QbqFnbXkG91W9On3xMYTcFlJo7JBbeyUw1gvClGxfa(RpmzaJgx3Jb6YQ1nA9oDLK1MhljAL1bSLF3xHHbeSLXzJvSzmGl55db2Lk22jG9adChhwW3b6DeqSDeWLCRW3YOZEe1(pARcOzMF1wCGfYJzFp2NdKh5kNxmrBUbYB5QhWH8iQ9F0wnqEyYfQRv2i3fWxbCP58l43CVl2SkG(aTwUf3ci6OA2yfBgdyRWdKNiWcxfWV2)dORVh4bYt3X(Ba4XxTrGi(aE7uZElN7RaA4kwS1za7RH7rBUVIBb0H(5WWacaMNHHb8R9F0wfqZm)QT4alKhZ(ESphipYvoVyI2CdK3YvpGd5ru7)OTAG8WKluxRSrUlGVSnm36RwahVd07O788Dat)A(b0mBqZ0PfbCxYz)yZyabZ(4A1ye3ciqFaTyErbNoCJR8tTsgpayaV5a9IVLrN9iQ9F0wfqZm)QT4alKhZ(ESphipYvoVyI2CdK3YvpGd5ru7)OTAG8WKluxRSrUlGVSnm36RwaDhCxUyZta3dO)VctgWOX19yGUSADJwVtxjzT5XsIwzDarNFdap(Qficii64Z(bm(a2YV7bYZyZyaNO(iAa4XxTrS5jG5gqnF3dKNbezXULmJzzSVHaZvcypWa3XHLzaZZaAM5xTfhyH8MbmphiFahVd07OJmW8dOHyhbcSBzlzgSbzreWBoqV4Bz0zp2xwg1hBMhFSzEGiGFT)B64Wpc4wEwbC8oqVdiWUuXMhRd44DGEhMoo8JaULNvaVLB9vR78j3ceXMNyZtSzES5j2So28eBjfBEIpGT87(crT)hWnSVzraV5a9IVLrN9DNp5wGi28eMw36Kw3ys7SJrR3PR190L1XsIwzvSzEyADRtADJjTZogTENUw3txwhljALvXM1HP1ToP1nM0o7y06D6ADpDzDSKOvwfBjfBEIpGOJcroFEaCXTaoQZshzG5hWUTydHfwkG3CTUZNClqeBEctDzUNUw3AR7YO1MVU5M7XQyjrRsk2mpmz16MBU5MBCDJwB0JhdyEsXsIwLuSzDyQR1tQlR6ANDSYARSYJrd0vSKOvwhBjfBEIpG91W9On3xXTaIRLX3QXOJwbcmaYZyZtaxYZpGyccc0xZ3DO6OvdG(AcIvapzxFGiGOJYEwRvT4waF3PMFS5z9acECJrGiGdGj(tfqiYIPLXCl(aoWvGbIaoaM4pvSzEa9rppqGi28eggBMhggF8beDu2Gh3yeggq0rz)Utn)4warhL905xXTa2YNkqeqF0ZdeiIp(aoD(vadi6OSh4kWWWaIokBWS)n3hggq0rz3dSSaaIEESIBbeDu27sEwXTaoa2LkqeqF0Zdeiciox7XkmmGFnddd4VxnFSwawRcddORvtxyyaXTgUWW4Jp(a(a(vR78j3ceXMNyZtSzES5j2So28eBjfBEIpGTcpqEIalCva)A)pGJ3b6De3c4x7)OTkGlvZCRc4x7)MYZpGwgtlT7AXwahVd07WuE(b0c)BNYpGo0phggWhWVAMYZpGwgtlT7AXwaDhCxUyZtaVLB9vZmZr9XMNa2dmWDCyzgW8mGMz(vBXbwiVzaZZbYJ5nGdWJLDNnuGEBdR2OAEd4x7)DNp5wGi28eBEInZJnpXM1XMNylPyZt8b8wU1xndDGE7BzCbClpRacIo(SpIA)pGlOtWhipVJbtPOOOawOqomTbDhq47(HDnVO(RAsHCyAd6oGW39d7AEDhdQA2ZukkkQw9OTjvcjW0A2ZuMYuMY0aEZ1mZ0ulp)4wa7bg4ooSqu7)RulFa7SvoFQ8cv3101aqhuM1y7WSkGFdap(QficOd9ZGN8SIBbCGRohZ0hqpg3X6D8eqq0XN9TVa6RacIo(SFaNo)YoJRAUp3cisifq0zTwn)a6q)CabrhF23(XcxfWX7E0rabZOZh74QM7ZTasKbPawRvZpGDF5EklxJHdFfqWm68dOXa(yHRcii64Z(beDu2dC15yM(WWawRvZFeWowbZDVfwY2InewyjZSHn2ih2T0kDUkMDJWmMDlSrG5kwSHWgBSe2nyh2DJSyUHnw05QDScM7ElSKTLSaBSyZUtZaX0WvSOZacIo(SFaxqNGpqEEhdMsrrr1Dd47057Wxwg98uirz(UA0AQetKY1BwcD8ul5gfyd4P6D(o8fLF9oMsrrrXukkkkGfQz(PqomTbDhq47(HDnVO(RAYukkkkkkkQf0j4dKNuihM2GUdi8D)WUMx3XGPuuuuuuuuuuuujMifO7aIECFrb7G6ExwHTu5fkm7adMsrrrrrrrrrrrDYGUdfMDyOBuRsHzhDKhRsHzhBfEkKOm4e4X8FhO3oY7vT7jG74WQAjGbtPOOOOOOOOOOOozq3Hc2bfsu3XSddDJIA3OWSJoYdQDJcZo2k8yqL8u39y0iLzJQlRWGPuuuuuuuuuuuumLIIIIIIIIIIIkXePaDhq0J7lkF34RgwmLIIIIIIIIIII6KbDhkl7gF1WIcjQ7EO2nkSPEl7gF1WYILLc8VJbguMnkpgnYukkkkkkkkkkkkMsrrrrrrrrrrrLyIuGUdi6X9f1LB8ftPOOOOOOOOOOOozq3HczDJVOqI6UhQDJYGtGhIRohK1n(6Ec4ooSQwcyGbLzJYJrJmLIIIIIIIIIIIIPuuuuuuuuuuuujMifO7aIECFrb2aEQAzPaFQ7OdGjEQUBaFNoFh(YYONNQVwaMvpL7wETIPuuuuuuuuuuuuNmO7q1XXHv1wPwRoRsHW1Wx)k1A1Hcjkdob(vQ1QZ9eWDCyvTeWyvkdob(vQ1QZ9eExdF9jGbtPOOOOOOOOOOOozq3HQ7gW39LBcwmLIIIIIIIIIIIIPuuuuuuuuuuuualuiCn81VsTwDOqcjQe9q9x1KPuuuuuuuuuuuuuuuuD3a(UVCtWIcjQ7yt9qC150Dd47(YnbR7wJrIwJHzZJrJmLIIIIIIIIIIIQoJIPuuuuuuuuuuuuuuuuD3a(UVCtWIcjQ7yt9qC150Dd47(YnbR7wJrI(U9VJW1Wx)k1A1jXoooSQ2k1A1zvJyGHzZJrJmLIIIIIIIIIIIQM9mLIIIIIIIIIII6KbDhQUBaVfllwg98uirr5HA3OU3Dd47057Wxwg98j6bJKV7gW39LBcwmLIIIIIIIIIIIIPuuuuuuuuuuuujMifO7aIECFrH)KV5ou9oFh(IYh98a4oavBvkGj4bThyINYGZt5gxuMoo)I6g6YctPOOOOOOOOOOOozq3HQtNVdFzz0ZtHe1Oof4FF9vPm4e47057Wx3ta3XHv1sadmykfffffffffff1jd6oug0Kz6KcjQrDkW)UhpRszWjWJjAZDpbChhwvlHvPsWGZt5gxuMoo)kbmWGPuuuuuuuuuuuualug0Kz6KcjKOw36U2XAQ)QMmLIIIIIIIIIIIIIIIQtNVdFzz0ZtHevNoFh(YYONNk5P8SRwZukkkkkkkkkkkQA2ZukkkkkkkkkkkkMsrrrrrrrrrrrHCyApE3pSnDC(f8kd6TtNpfsu3n3aEmsTBu3nFx9qL8uWoWaJK3YUXxnSsEK1n(k57Ub8wSSyz0ZN8D68D4llJEEMsrrrrrrrvZEMsrrrvZEMsrrrXukkkkKdtBq3be(UFyxZR7yWukkkkMsrrr1QhTnP(gAX0A2hqWRc0BarX17(kGOJYgDc8HHXhWV2)ddd44ba9IvNOn3dKNXTa(a(vlmmGpGF1mDC4hbClpRaEZb6TVLX1D(KBbIyZtSzm2mp2mgBwhBgJTKInpXhWL88Ha7sfB7eWB5wF1cdd4TCRVAw0JVc4s1mAGaEl36RgeyxQyZJNacaMN2dG(kGRyHjeb8wU1xnSVSmQp2mpGFT)db2Lk22jGxfa(RpmzaJgx3Jb6YQ1nA9oDLK1MhljAL1bC8oqVJUZNClqeBEInpXM5XMNyZ6yZtSLuS5j(a2dmWDCyHO2)Tea(RpGylUa2dmWDCyHO2)di2cgqxFpWdKNUJ93aWJVAJar8b0Se64bwWkGDBXgclSuaxAo)c(n37InRc4Ea9)vyYagn2vxRVEsE6YCpjzL57eljAL1beyUw1gvClGtuFena84R2i28eWhWVAqGDPITDcyUbuZ39a5zarwSBjZywg7BiWCLacaMNHHbeOpGwmVOGV7PwjJham(yZ6arabrhF2hrT)hWf0j4dKN3XGPuuuualuMoo)cELb9AJlVx1OCZEkthNFbVYGETXL3RAujdLrQ)QMmLIIIIIIIcyHY0X5xWRmOxBC59QgvYGeLhpgP(RAYukkkkkkkkkkkQw9OTj1sU57(7jGmGMmz0OjtgnIT9itlHvPmDC(f8kd61gxEVQHbtPOOOOOOOQZOawOmDC(f8kd61gxEVQrzwGeLbms9x1KPuuuuuuuuuuuuT6rBtQLCZ393tazanzYKjJgnAeB7rMwcRsz648l4vg0RnU8EvddMsrrrrrrrvNrXukkkkkkkkkkkQw9OTj1sU57(7jGmGMmzadyadyadGT9itlHvPmDC(f8kd61gxEVQHbtPOOOOOOOQzpfffffffftPOOOQZOykfffffffvRE02Kkzn7jltPOOOQzptRzFaXc7llJ6JTe9SUvbeDuiY5ZdGlmmGFdap(Qficii64Z(2xa9vaFa)QpGpw4QaoE3Joc4axDoBo)k22XOvgdi6OSBLVdycmXhggq0rzdmxRAJkmmG1A18dy358PpV3KQJwgFRgdQ7qC15GrarhL9axDoBo)kmmGTY3bmbM4dOXa2kFhWeyI3oJRAUp3cyYeq0rzJob(WWaIoR1Q5hqh6NJpGl55hqmbbb6R57ouD0QbqFnbXkGxfa(Rp2sYyapzxFGiGOJYg84gJWWa2YNkqeqF0ZdeiIp(aIok7bUcmmmGOJYgm7FZ9HHbCGRadebCamXFQyZ8a6JEEGarSzEyy8XhqWJBmcebCamXFQacrwmTmMBXhFaxYZhcSlvSzUXa2dmWDCybFhO3raXwWa2k8a5jcSWvbeampdiqFanDC(ff8kd6nGJha0lwDI2CpqEgggW9a6)RyljJbCFSVSmQp2SYyaNO(iAa4XxTrSzDarNFdap(Qfic4axDoBo)k22XOvgJpGU(EGhipDh7VbGhF1gbIyZtGiGFdap(Qfic4JfUkGo0MlGd0B1A18HOlla7hq7UXeIWgIatlHiG1A18diYwUZFfWPZVgbIyZtan48uUXfLPJZVIpGGz05hqRciygD(yhx1CFUfWKjGOtGpG4ooSQwahO3Q1Q53rRwa2pGWoSyLvcyFDdDzbbw4QaISwSshMm4kXhq053aWJVAbI4Jp2mpqeWVbGhF1cebCGERwRMFhTAby)ac7WIvwjGpw4QacIo(SFabrhF2pGlOtWhipPUJbtPOOOqhLTPJZVGxzqV23Y5dfsu3rhLTPJZVGxzqV23Y5dfrgKOMahmOYnk0rzB648l4vg0R9TC(KCykfffLPJZVGxzqV24Y7vnkKOmDC(f8kd61gxEVQrLBugzkfffftPOOOozq3HA548RXvg0RnypfsuDXukkkQtg0DOEa)Y(g6Ys1OqIYCMsrrrXukkkQtg0DOSx1Ev7vTx1Ev7vxoo)ACLb9A3J2wf0n(QzJobEkKOm4e47SUHUSCpzFxdF9j7QujRPJZVOGxzqVjlgmLIIIcyHA548RXvg0RDpAJYn7PaDJVA2OtGNcjKOswChhwvlzP(RAYukkkkkkkkMsrrrrrrrLyIuGUXtTCC(f14kd6LcyHc4t2bLhJy7Urn(wEIVAu)LBsbI2A18Pmb3vMsrrrrrrrz648l4vg0R9OtNVdFrHeLPJZVGxzqV2JoD(o8fvUrT7KCZukkkkkkkkMsrrrrrrrbSqz648l4vg0R9OtNVdFzwBWjWJng0mDEpH31WxFcyywr9x1KPuuuuuuuuuuuuMoo)cELb9AJlVx1OqI6oYHP94D)W20X5xWRmO3oD(uMnkthNFbVYGEThD68D4lZAdobESXGMPZ7j8Ug(6tadZkmOsEkpgnYukkkkkkkQA2tXukkkkkkkkMsrrrrrrrDYGUdLbnzMoPqIAuNc8V7XZQugCc8yI2C3ta3XHv1syvQem48uUXfLPJZVsadmykffffffffWcLbnzMoPqcjQ1TURDSM6VQjtPOOOOOOOOOOOawOmDC(f8kd61gxEVQrLmir5XOrQ)QMmLIIIIIIIIIIIIIIIcDu2Moo)cELb9AFlNpuir9n0IPuuuuuuuuuuuuuuuuT6rBtQVHwmLIIIIIIIIIIIQM9mLIIIIIIIQoJIPuuuuuuuuuuuualuMoo)cELb9AJlVx1OsgKO84Xi1FvtMsrrrrrrrrrrrrrrrHokBthNFbVYGETVLZhkKO(gAXukkkkkkkkkkkkkkkQw9OTj13qlMsrrrrrrrrrrrvZEMsrrrrrrrvZEMsrrrrrrrXukkkkkkkQtg0DOEkKOWM6ra4x3XGPuuuuuuuulhNFnUYGET7rBuirTCC(14kd61UhTrLi1ZukkkkkkkkMsrrrrrrrDYGUdfAzd2tHeLrMsrrrrrrrDYGUd14DTFvQE0M7bYtkKOWM6H4QZP7C(0N3BEFDR7AhJyWukkkkkkkkMsrrrrrrrbSqnEx7PsgkJu)vnzkffffffffffffAzd2tHe19X7Ap1Ur1J2CpqEsLi1JbtPOOOOOOOQzptPOOOOOOOykfffffffvIjsb6gp1YX5xuJRmOxkGfQ(6g6Yc1EaNdvTpoGwrT3fWPOmOfuadQ8KQ7oxL6MBu9u5jfU8EvJPuuuuuuuualulhNFnUYGET7rBuMfirDhTSb7P2nQ7pGFzFdDzPAujpL5yGb1FvtMsrrrrrrrrrrrbSqz648l4vg0RnU8EvJkzqIYhysD3awTk19LJZVgxzqV29OnkZg1D0YgSNA3OU)a(L9n0LLQrL8uMJbgujpLhJgPWaJ)QMmLIIIIIIIIIIIIIIIcDu2Moo)cELb9AFlNpuir9n0IPuuuuuuuuuuuuuuuuT6rBtQVHwmLIIIIIIIIIIIQM9mLIIIIIIIQM9umLIIIIIIIIPuuuuuuuujMifOB8ulhNFrnUYGEPawO6RBOllu7bCou1(4aAf1ExaNIACLb9oOCTIkpP6UZvPU5gvpvEsHlVx1ykffffffffWc1YX5xJRmOx7E0gLzbsu3xoo)ACLb9Ad2tTBupGFzFdDzPAyq9x1KPuuuuuuuuuuuualuMoo)cELb9AJlVx1OsgKO8bMu3PmGvRsDF548RXvg0RDpAJYSrDF548RXvg0Rnyp1Ur9a(L9n0LLQHbvYt5XOrkmW4VQjtPOOOOOOOOOOOOOOOqhLTPJZVGxzqV23Y5dfsuFdTykfffffffffffffffvRE02K6BOftPOOOOOOOOOOOQzptPOOOOOOOQzpfffffffffffftPOOOQZOykfffffffftPOOOOOOOsmrkq34Pwoo)IACLb9sbSqb8j7GAMFkq0wRM)blQ8K6Dn81ZukkkkkkkkthNFbVYGETXL3RAuirzm5Wukkkkkkkk0rzB648l4vg0R9TC(qHe13qlMsrrrrrrr1QhTnP(gAXukkkQA2ZukkkkMsrrrHokBthNFbVYGETVLZhkKOwCNrXukkkQw9OTj1I7mkMwZ(aoqVvRvZhIUSaSFaT7gticBicmTeIacEvGEdikUE3xbeeD8zF7hlCvahV7rhbSwRMFar2YD(RacIo(SV9fqFfWhWV6JpGOZVbGhF1cebeeD8z)aUGobFG8K6ogmLIIIQvpABsnZpf6OSnDC(f8kd61(woFsomTM9XhF8bC8oqVJoYaZpGgIDeiWULJp2skqeqq0XN9ru7)bCbDc(a55DmykffffWcLPJZVGxzqV24Y7vnk3SNY0X5xWRmOxBC59QgvYqzK6VQjtPOOOOOOOawOmDC(f8kd61gxEVQrLmir5XJrQ)QMmLIIIIIIIIIIIQvpABsTKB(U)EcidOjtgnAYKrJyBpY0syvkthNFbVYGETXL3RAyWukkkkkkkQ6mkGfkthNFbVYGETXL3RAuMfirzaJu)vnzkfffffffffffvRE02KAj38D)9eqgqtMmzYOrJgX2EKPLWQuMoo)cELb9AJlVx1WGPuuuuuuuu1zumLIIIIIIIIIIIQvpABsTKB(U)EcidOjtgWagWagWayBpY0syvkthNFbVYGETXL3RAyWukkkkkkkQA2trrrrrrrXukkkQ6mkMsrrrrrrr1QhTnPswZEYYukkkQA2Z0A2hqSW(YYO(ylrpRBvarhfIC(8a4cdd43aWJVAbIa(yHRc44Dp6iGOJYgyUw1gvyyaR1Q5hWUZ5tFEVjvhTm(wngu3H4QZbJaIoR1Q5hqh6NdyR8DatGj(aAmGOJYgDc8HHbSv(oGjWeVDgx1CFUfWKjGOJYEGRoNnNFfggq0rz3kFhWeyIpmmGdC15S58RyBhJwzmGGOJp7BFb0xb8b8R(4dyFnCpAZ9vyyaxYZpGyccc0xZ3DO6OvdG(AcIvaVka8xFSLKXaEYU(ararhLn4XngHHbSLpvGiG(ONhiqeF8beDu2dCfyyyah4kWarahat8Nk2mpG(ONhiqeBMhggF8beDu2Gz)BUpmmGGh3yeic4ayI)ubeISyAzm3Ip(aUKNpeyxQyZCJbShyG74Wc(oqVJaITGbSv4bYteyHRciayEgqG(aA648lk4vg0lL5b013d8a5P7y)na84R2iqeBEceb8Ba4XxTarahO3Q1Q53rRwa2pGWoSyLvc4JfUkGo0MlGaZ1Q2Ocdd4a9wTwnFi6YcW(b0UBmHiSHiW0sici6e4diUJdRQfWPZVgbIyZtan48uUXfLPJZVIpG1A18diYwUZFfW(6g6YccSWvbezTyLomzWvIpGOZVbGhF1ceXhFSzEGiGFdap(Qfic4JfUkGGOJp7hqq0XN9d4c6e8bYtQ7yWukkkQw9OTjf6OSnDC(f8kd61(woFsomTM9bCGERwRMpeDzby)aA3nMqe2qeyAjebe8Qa9gquC9UVcii64Z(2pw4QaoE3JocyTwn)aISL78xbCGERwRMFhTAby)ac7WIvwj(aIo)gaE8vlqeqq0XN9d4c6e8bYtQ7yWukkkQw9OTj1m)uOJY20X5xWRmOx7B58j5W0A2hF8XhWXda6fRorBUhipddd4Ea9)vSLKXaIo)gaE8vlqeWbU6C2C(vSTJrRmgFaNO(iAa4XxTrSzDa3h7llJ6JnRmgWX7a9o6idm)aAi2rGa7wo(yZQarabrhF2hrT)hWf0j4dKN3XGPuuuualuMoo)cELb9AJlVx1OCZEkthNFbVYGETXL3RAujdLrQ)QMmLIIIIIIIcyHY0X5xWRmOxBC59QgvYGeLhpgP(RAYukkkkkkkkkkkQw9OTj1sU57(7jGmGMmz0OjtgnIT9itlHvPmDC(f8kd61gxEVQHbtPOOOOOOOQZOawOmDC(f8kd61gxEVQrzwGeLbms9x1KPuuuuuuuuuuuuT6rBtQLCZ393tazanzYKjJgnAeB7rMwcRsz648l4vg0RnU8EvddMsrrrrrrrvNrXukkkkkkkkkkkQw9OTj1sU57(7jGmGMmzadyadyadGT9itlHvPmDC(f8kd61gxEVQHbtPOOOOOOOQzpfffffffftPOOOQZOykfffffffvRE02KkzhjA2twMsrrrvZEMwZEMYuMY0aIf2xwg1hBj6zDRci6OqKZNhaxyya)gaE8vlqeWhlCvahV7rhbeDu2aZ1Q2OcddyTwn)a2DoF6Z7nP6OLX3QXG6oexDoyeq0zTwn)a6q)CaBLVdycmXhqJbeDu2OtGpmmGTY3bmbM4TZ4QM7ZTaMmbeDu2dC15S58RWWaIok7w57aMat8HHbCGRoNnNFfB7ymjZdii64Z(2xa9vaFa)Qp(aoEaqVy1jAZ9a5zyyaxYZpGyccc0xZ3DO6OvdG(AcIvaVka8xFSLKXaEYU(ararhLn4XngHHbSLpvGiG(ONhiqeF8beDu2dCfyyyah4kWarahat8Nk2mpG(ONhiqeBMhggF8beDu2Gz)BUpmmGGh3yeic4ayI)ubeISyAzm3Ip(aUKNpeyxQyZCJbShyG74Wc(oqVJaITGbSv4bYteyHRciayEgqG(aAHR9xuWRmO3aIo)gaE8vlqeWbU6C2C(vSTJXKmp(aUhq)FfBjzmG7J9LLr9XMvgdORVh4bYt3X(Ba4XxTrGi28eic43aWJVAbIa(yHRcii64Z(beeD8z)aUGobFG8K6ogmLIIIQvpABsnZpf6OSnDC(f8kd61(woFsomTM9mLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLIIIIPuuuumLPbCGERwRMpeDzby)aA3nMqe2qeyAjebe8Qa9gquC9UVcii64Z(2pw4QaoE3JocyTwn)aISL78xbCGERwRMFhTAby)ac7WIvwj(aIo)gaE8vlqeqq0XN9d4c6e8bYtQ7yWukkkQw9OTjf6OSnDC(f8kd61(woFsomTM9XhF8bCI6JObGhF1gXM5bC8oqVJoYaZpGgIDeiWULJp(aUwS5jjpgJpc

 

whether you should FS or ES is determined by a simple system, if any of the following are true FS, otherwise ES:

1) FS is not currently on the target

2) UF is active and refreshing FS would be at 100%+ of existing FS

3) UF is NOT active and FS would be at 110%+ power of existing FS

4) current FS will expire during Shock CD period, and the new FS power ratio is greater than the ratio of current FS duration to expected downtime.

5) current FS will expire during UE CD, and the new FS power ratio is greater than the ratio of current FS duration to expected downtime.

 

however, while i am a software engineer and original vanilla WoW player, i am new to LUA, WeakAuras, the Shaman class, and dynamic math theorycrafting.  i would appreciate testing and feedback, as well as a review of the key lua bits and the assumptions that i have made.  below are code snippets.

 

damage/power code:

function()
    CritDamageMult = 2.03 -- adjust for crit damage meta
    
    if not WA_calcStats_enh then
        function WA_calcStats_enh()
            -- calculate SP (65% of AP)
            local APBase, APPos, APNeg = UnitAttackPower("player")
            local SP = (APBase + APPos + APNeg) * (100 / 65)
            
            -- calculate mastery
            local Mastery = 1 + GetMasteryEffect() / 100
            
            -- calculate haste
            local Haste = (1 + UnitSpellHaste("player")) / 100
            
            -- calculate crit effect (using CritDamageMult defined above
            local PlayerLevel, TargetLevel = UnitLevel("player"), UnitLevel("target")
            local CritChance
            
            if TargetLevel == -1 then
                CritChance = (GetSpellCritChance(3)-3)/100
            else
                CritChance = (GetSpellCritChance(3)-max(TargetLevel-PlayerLevel,0))/100
            end
            local CritEffMult =  1 + (CritDamageMult-1)*CritChance
            
            -- calculate global damage multiplier, including Unleash Flame buff
            local DamageMult = select(7, UnitDamage("player"))
            local UFID = select(11, UnitAura("player", "Unleash Flame"))
            if UFID == 73683 then
                DamageMult = DamageMult * 1.3
            end
            
            WA_stats_FlameShockDam = (2910 + (2.1 * SP))*Mastery*Haste*CritEffMult*DamageMult
        end
    end

 

use FS or ES code:

    use_FlameShock_bool = (use_FlameShock_bool ~= nil) or use_FlameShock_bool;
    FlameShock_power = FlameShock_power or 0
    
    local flameshock_cd = 6
    local time_buffer = 2
    
    local _,_,_,_,_,_,flameshock_dur,caster_unit = UnitDebuff('target', 'Flame Shock')
    if flameshock_dur and caster_unit == 'player' then
        
        -- cast flame shock if it's 10%+ stronger than current FS.
        FlameShock_sDamage = FlameShock_sDamage or {}
        
        if FlameShock_sDamage[unitGUID("target")] then
            FlameShock_power = (WA_stats_FlameShockDam / FlameShock_sDamage[unitGUID("target")]) * 100
        end 
        
        local UFID = select(11, UnitAura("player", "Unleash Flame"))
        if UFID == 73683 then
            if FlameShock_power >= 100 then
                use_FlameShock_bool = true
                return true
            end
        else
            if FlameShock_power >= 110 then
                use_FlameShock_bool = true
                return true
            end
        end
        
        local t = GetTime()
        flameshock_dur = flameshock_dur - t
        
        local ue_cd = 0
        local start, duration = GetSpellCooldown(73680)
        
        if start > 0 then
            ue_cd = (start + duration - t)
        end
        
        -- cast flame shock if debuff will expire while UE is on CD, based on power
        if flameshock_dur <= (ue_cd + (time_buffer * 2)) then
            if FlameShock_power >= min (95, (flameshock_dur / (ue_cd + (time_buffer * 2)) * 100 ))then
                use_FlameShock_bool = true
                return true
            end
        end 
        
        -- cast flame shock if debuff will expire while shocks are on CD, based on power
        if flameshock_dur <= (flameshock_cd + time_buffer) then
            if FlameShock_power >= min ( 95, (flameshock_dur / (flameshock_cd + time_buffer) * 100 ))then
                use_FlameShock_bool = true
                return true
            end
        end            
    else
        
        -- cast flame shock if it's not currently on target
        FlameShock_power = 0;
        use_FlameShock_bool = true
        return true
    end

 

feedback, pointers, suggestions appreciated.  sorry for the ridiculously long post, but hope this helps some of you.

 

lastly, giving credit where credit is due-- this is based on stenhaldi's feral druid dot tracker, available here: http://fluiddruid.net/forum/viewtopic.php?f=11&t=4446&start=25#p18611

 

edited to update code and WA string.   made a few minor fixes and did some cleanup.

Edited by zagtastic
4 people like this

Share this post


Link to post
Share on other sites

Nice post! Thanks for the contribution. I can't test it personally since I play Resto/Elemental, but it sounds like a well thought out (and well motivated, useful) aura to me.

 

I'm just going to put your code between spoiler tags so that people don't have to scroll down too much. Hopefully that will get discussion going a little easier.

Share this post


Link to post
Share on other sites

thanks mr stoove.  in the future, ill try not to post in a way that requires you to perform clean-up or formatting :)

Share this post


Link to post
Share on other sites

Dude, that's awesome.  I'll try it out on Wednesday's raiding and report back any suggestions I have, or if it's already perfect just post a bunch of puppies or something.

Share this post


Link to post
Share on other sites

I wrote a similar aura some time ago, these were my pitfalls (I didn't check your full aura code, so it's possible you already done this):

  1. Make sure you cleanup the FS damage table (in my exp, best time for this is when you go out of combat) so it wont grow out of proportion and slow down your code tongue.png
  2. Not sure about your calculation of ticks, but the proper way to do this is:
    Round(30000/Floor(3000/SpellHaste + 0.5)), with banker's rounding.

  3. Number of ticks doesn't matter that much, because FS usually won't run its full course. Hence you can scale the damage directly by spell haste and bypass some calculations.

 

Hope it helps smile.png

Edited by lynx
1 person likes this

Share this post


Link to post
Share on other sites

I wrote a similar aura some time ago, these were my pitfalls (I didn't check your full aura code, so it's possible you already done this):

  1. Make sure you cleanup the FS damage table (in my exp, best time for this is when you go out of combat) so it wont grow out of proportion and slow down your code tongue.png
  2. Not sure about your calculation of ticks, but the proper way to do this is:

    Round(30000/Floor(3000/SpellHaste + 0.5)), with banker's rounding.

  3. Number of ticks doesn't matter that much, because FS usually won't run its full course. Hence you can scale the damage directly by spell haste and bypass some calculations.

 

Hope it helps smile.png

 

thanks much lynx, i'm sure it will help.

 

luckily 1 was already taken care of in the code i started with from stenhaldi.  all good there.

 

i went with ticks rather than pure haste, but you are right-- the exact number of ticks isn't important.  what IS important is how much faster ticks are coming.  ideally this will show that over the next <arbitrary time period>, a newly cast flameshock will do X damage compared to the existing one.  that requires me to take into account the change in tick rate, but not necessarily any new ticks that show up at the end of the duration.  interestingly, the way i did it basically calculates a few points of the graph, while simply taking haste into account draws the line.  i will fix that this week using the proper equation.  and when i do, i will post it here.

 

thanks again.

Edited by zagtastic

Share this post


Link to post
Share on other sites

i have updated the OP with the latest version.  changes in this version:

-- use pure haste rather than ticks

-- fixed a bug when debuff had a low duration

-- tweaked the logic such that it is less likely to allow debuff to fall off.

-- bit of code cleanup

 

i'm unsure if anyone has actually tried using this, but if you have i would be very interested in feedback.  not a big deal to just be developing it for me, but i definitely will keep sharing if there's interest.  thanks again.

1 person likes this

Share this post


Link to post
Share on other sites

You know, this is fantastic as an idea. I'll highlight it on my Twitter stream this afternoon for you to see if we can get any more takers smile.png

 

PS: Also added tags to your OP and tidied up the title. That usually helps you get more views :)

Share this post


Link to post
Share on other sites

What is the V/s-V supposed to stand for?  If I was to blank these out, would there be any issues?

 

I also don't particularly like it disappearing while Shocks are on CD.  Would removing Trigger 1 (Status, CD Spell, Flame Shock) affect any of the backend?

Edited by Hybrys

Share this post


Link to post
Share on other sites

What is the V/s-V supposed to stand for?  If I was to blank these out, would there be any issues?

 

I also don't particularly like it disappearing while Shocks are on CD.  Would removing Trigger 1 (Status, CD Spell, Flame Shock) affect any of the backend?

 

the V/s-V is simply my bindings for those abilities (s-V = shift-v).  they are entirely non-functional and i probably shouldn't have uploaded the string with them in there.  removing or changing them is fine.

 

yeah, removing trigger 1 should be perfectly fine, and result in the behavior you desire here.  i think for many (maybe most), the disappearing on CD is desirable so it can be integrated into existing priority system WA groups... but i like the idea of having both versions so peeps can choose what works best for them smile.png

 

ill respond to your pm shortly

Edited by zagtastic

Share this post


Link to post
Share on other sites

the V/s-V is simply my bindings for those abilities (s-V = shift-v).  they are entirely non-functional and i probably shouldn't have uploaded the string with them in there.  removing or changing them is fine.

 

yeah, removing trigger 1 should be perfectly fine, and result in the behavior you desire here.  i think for many (maybe most), the disappearing on CD is desirable so it can be integrated into existing priority system WA groups... but i like the idea of having both versions so peeps can choose what works best for them smile.png

 

ill respond to your pm shortly

Oh!  The bindings, that makes sense.

 

I can totally understand that, I just want to know where in the calculation I am at any moment, especially since I typically ride the spell queue system.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Hindrigan
      I just can't find the answer.  Why are elemental shamans who  take ascendance as their final talent not supposed to use earth shock during ascendance?  earth shock does 920% spell power.  lava burst does 275%.  If you overload with lava burst you do an additional 206% totaling 481% spell power.  if you have 25% crit during ascendance lava burst is now 343% spell power and the overload is 257% equaling a total of 600% spell power.  you are missing out on a instant cast spell for 320%  additional spell power worth of damage; and quite often times twice during ascendance.  that's 640% spell power which is more than a lava burst cast during ascendance with 25% crit.
      I currently have 18% crit chance and during ascendance I'm critting lava burst at 434k (not extremely well geared I know, but the ratio is still present).  earth shock at 100 maelstrom non crit is 400k.  If you don't crit with earth shock you lose very little damage.  However, if you crit  with earth shock you do easily over 1million damage (several lava burst crits worth)  I really don't see a down side to using earth shock during ascendance other than 2-4 seconds off of fire elemental due to elementalist in your artifact tree.
      By all means show me that I'm being silly. Please.  Thanks all
    • By Geex
      Hey everyone, new here.
      I just got done with Normal Nighthold with my guild and my DPS.. well sucks. Can anyone look at my logs and see what's up? Maybe a few pointers?
      Thank you!
      Armory:  http://us.battle.net/wow/en/character/malganis/Geex/simple
      WL: https://www.warcraftlogs.com/rankings/character/15631063/11/#
    • By Superior987
      So I have a pretty solid ilvl that it feels like I'm underperforming for.  On movement fights, or when I get a streak of proc, I tend to drop buffs, which I'm working on.  I was hoping I could get some pointers for things I should focus on beyond that.
      Armory:
      http://us.battle.net/wow/en/character/garrosh/Rixes/simple
      Most recent log:
      https://www.warcraftlogs.com/reports/LHrdaZXVjJmTgWF7/
       
      I appreciate any help I can get!
    • By DonLionheart
      Hello all,
      I don't know where else to go for help.  I've been struggling with enhance since the changes in 7.1.5.  Originally I thought it was a gear issue because I was performing okay on some fights in Heroic NH, but as I've gotten more gear over the past week, my numbers haven't gone up.  Here are the logs from my raid tonight: https://www.warcraftlogs.com/reports/N8P9vaGYHCFbmtDA#type=damage-done&boss=-2&difficulty=0
      I had been using Windsong and Overcharge last week, but noticed that it was just not working out, so when I swapped to Tempest instead, my numbers were about the same, so I've been using Windsong, Tempest, and FoA, like the  Wordup guide says.  Here's a link to my Armory: http://us.battle.net/wow/en/character/Arthas/Donlionheart/advanced
      I've run a few sims, but I'm new to sims and I'm not sure I'm inputting the data right, so it's not worth mentioning the outcomes.  Basically, I'm trying to figure out what I'm doing wrong.  I tested out the Hot Hands talent on the dummy tonight after raid, and I did a Windsong test too, and for some reason, they were withing 10k of one another, with Hot Hands coming out on top.  Windsong seemed to give me a bigger opening burst, but I was higher more often and for longer with Hot Hands, though by the time I stopped after 4 minutes for each, they were so close it was barely worth mentioning.  Any advice is welcome, thanks.
      -Don
      P.S. I'm also using Chesder's (from MMO Champion) TellMeWhen strings, so maybe there's a problem with those.  If anyone has WeakAuras strings to recommend, or different TMW strings, let me know.  I used to use WeakAuras from another Shaman (a girl, I think the name was Corixa, but she doesn't make them anymore), and moved to TMW when a friend had some good strings.  Thank you.
    • By Rodee
      I know Unleash Doom was recommended as the second golden talent before getting Doom Vortex, but since Vortex just got buffed, and I am also using the Overcharge and Hot Hand talent; Is Vortex better to grab first now? Especially due to it proccing off Overcharged lightning bolts and the increased Lava Lash damage on the way down to it.