[REC] Modify Demonology APL to remove sim specific jank
dubudevs opened this issue · 11 comments
Before You Begin
- I confirm that I have downloaded the latest version of the addon.
- I am not playing on a private server.
- I checked for an existing, open ticket for this issue and was not able to find one.
- I edited the title of this issue (above) so that it describes the issue I am reporting.
- I am reporting an issue with the default priority included with the specialization (imported or edited priorities are not supported).
Spec
Warlock - Demonology
Describe the Issue
Sims rely on perfect ability usage to force things to line up specifically to optimise for 5 minute sim with bis gear. This does not reflect real gameplay. Using a modified tyrant APL that reflects real gameplay patterns results in no DPS loss on characters I have tested with.
https://www.raidbots.com/simbot/report/uAX7RFTbi6thA9sddBuqGL
https://www.raidbots.com/simbot/report/jrLMDFGxqcDVX6pmAh4zsh
APL maintainers already said they are not going to push changes like this to the live APL, so I am posting here.
The 4 fixed lines are (I did not touch variable.imp_despawn yet only pet logic):
actions.tyrant+=/grimoire_felguard,if=cooldown.summon_demonic_tyrant.remains<17-2*gcd.max&cooldown.summon_vilefiend.remains<15-2*gcd.max&cooldown.call_dreadstalkers.remains<12-2*gcd.max
actions.tyrant+=/summon_vilefiend,if=cooldown.summon_demonic_tyrant.remains<15-2*gcd.max&(buff.grimoire_felguard.up|cooldown.grimoire_felguard.remains>15|!talent.grimoire_felguard)&(buff.dreadstalkers.up|cooldown.call_dreadstalkers.remains<15-2*gcd.max|!talent.call_dreadstalkers)
actions.tyrant+=/call_dreadstalkers,if=cooldown.summon_demonic_tyrant.remains<12-2*gcd.max&(buff.vilefiend.up|cooldown.summon_vilefiend.remains<12-2*gcd.max|!talent.summon_vilefiend)
actions.tyrant+=/summon_demonic_tyrant,if=variable.imp_despawn&variable.imp_despawn<time+gcd.max*2+cast_time|buff.dreadstalkers.up&buff.dreadstalkers.remains<gcd.max*2+cast_time&buff.vilefiend.up&buff.vilefiend.remains>2*gcd.max
Ideal perfect vacuum logic is as follows:
- Hold VF if Tyrant cd is less than ~30s. (already in default APL, not needed in sims)
- Hold dogs if tyrant cd is less than ~20s. (already in default APL, not needed in sims)
- Begin tyrant ramp with ~15 seconds on tyrant CD. (already in default APL)
- Start ramp with 5 shards and 3+ cores, ideally. Historically this has not been implemented well in APLs, if at all.
- Use GFG if ready and talented
- Use a builder
- Use VF
- Use a builder
- Use dogs
- (Use a builder if needed)
- Hog>db>hog>db>hog>db>hog>tyrant (this is the 11 imp setup)
This is what the live APL is trying to achieve by scripting the entire ramp (emphasis on trying, to robustly implement it requires way more APL than is sane, current APL does an ok job at best).
Real gameplay logic is:
- Hold VF if Tyrant cd is less than ~30s. (already in default APL)
- Hold dogs if tyrant cd is less than ~20s. (already in default APL)
- Try to have 5 shards and some cores when you start ramping (before you press GFG), or you can get away with fewer shards if you know you will build for a few gcds for dogs and vf cd after pressing gfg (or you can delay gfg to build)
- Begin tyrant ramp with ~15 seconds on tyrant CD. (you are not specifically "starting" anything here nescessarily eg if cds are misaligned but its a mental marker)
- Use GFG if its ready and tyrant cd is less than 17 seconds minus 2x tyrant cast time and VF cd is less than 17 seconds minus tyrant cast time (plus buffer) and dogs cd is less than 17 seconds minus 2x tyrant cast time with instant proc, 1x without (plus buffer). This can be delayed slightly if dogs and vf cds are long, but its not needed since you will get a very slightly suboptimal setup anyway.
- Use VF any time when tyrant cd is less than 15s - tyrant cast time and you will be able to get a dogs up and cast tyrant before vf expires.
- Use dogs any time when tyrant cd is less than 12s - tyrant cast time and you will be able to get a vf up and cast tyrant before dogs expire.
- Fill the rest of the time waiting for tyrant to come off cd with hog rotation but keep in mind that imps only live 7gcds so dont int all your shards before that. Ideally you have dogs and vf out and 5 shards and 3 cores 7 gcds before tyrant so you can do the 11 imp setup, however in practice this is very difficult, even sims cant do it properly.
The gameplay feel improvement from only these 4 lines changing is very large. Tyrant is no longer sitting on cd for ages while the APL tries to jank its way into a perfect script starting point, and buttons get pressed when they are meant to. The tyrant setup seems robust, if you need to cancel a cast or you delayed one of your cds because of mechanics or whatever it copes well.
How to Reproduce
.
Snapshot (Link)
.
Raidbots Sim Report (Link)
.
Additional Information
No response
Contact Information
No response
Updated the tyrant logic to be a little more flexible, its not perfect, it still occasionally sends a builder before tyrant so I will update it some more later but it now fires "early" if suitable (as in it doesnt get delayed by sim jank). The logic should probably be updated more to use last_cast_imps and two_cast_imps rather than the sim focused variable.imp_despawn logic.
(((variable.imp_despawn&variable.imp_despawn<time+gcd.max*2+cast_time)|(buff.wild_imps.stack>9&soul_shard<2))&buff.dreadstalkers.up&(buff.vilefiend.up|!talent.summon_vilefiend.enabled))|(buff.dreadstalkers.up&buff.dreadstalkers.remains<gcd.max*2+cast_time&((buff.vilefiend.up&buff.vilefiend.remains>2*gcd.max)|!talent.summon_vilefiend.enabled)&((buff.grimoire_felguard.up&buff.grimoire_felguard.remains>2*gcd.max)|!talent.grimoire_felguard.enabled|cooldown.grimoire_felguard.remains>20))
Great initiative we have here. I am really passionate about Demo, so very excited/curious how this ends up!
This might be something I can run by the Demo lock theorycrafter to see what he thinks too
The biggest issue I'm seeing as I test it is, as you noted, the extra spender that sometimes occurs before Tyrant is summoned. Secondary to that would be using Power Siphon to generate Demonic Cores during the ramp to Tyrant, when there's not enough time to Power Siphon -> Demonbolt -> Hand of Gul'dan -> Summon Demonic Tyrant.
I can seem to solve for the latter by changing the tyrant
usage of Power Siphon to:
actions.tyrant+=/power_siphon,if=cooldown.summon_demonic_tyrant.remains>(action.summon_demonic_tyrant.cast_time+2*gcd.max)&cooldown.summon_demonic_tyrant.remains<15
The PS logic should include a check for how many cores you have, and the tyrant logic can just be moved to the top of the tyrant list since it will only actually cast when it should now. I'll make a couple of modifications and test them.
The more I look the more cooked this APL is (from a non 5 min st sim perspective), I might just do a full tyrant refactor to make it less scripted and see about getting it pushed to simc.
@dubudevs Thx for the work brother, like i said i am pretty passionate with Demo, ofc I will test things out.
The rotation is really smooth, the one thing what disturbs me is that the Addon gives implosion recommendations in time your Tyrant is still active. In reality this could not be the right move because your Tyrant is getting empowered by the imps.
What i've done now is lowered implosion in the action-list so it doesn't get recommend anymore.
Maybe we could cook that part of the script. Let me know what you need and ill do my very best to deliver.
@Jumimaru if you see any issues ping me in disc (@du.bu) and I will look, wont have that much time to test for a while but from doing a couple of keys it seems like its in a much better state with the new updates, certainly close enough that with some brain power its possible to play pretty close to optimally.
Its normal, theres another ticket about it already with a fix if you want to use it