Once again we start with our questions:
"Does snapshotting Mage Bombs on 450 second encounters increase the DPS of a 588 itemlevel BiS Arcane Mage?"
Part 1: Setup
For the purposes of this test, I used the default 4T16H profile. You can find it under "4-set BiS list" in Voltaa's compendium: http://altered-time.com/forum/viewtopic ... nchor-Gear" target="_blank
Fight duration is set to 450 seconds by default. I don't think duration has too much to do with whether snapshotting will give a bonus or not.
Simulations were performed on a custom version of SimC 548-7, modified to allow 4th LB casts.
One problem people complained about last time is that I focused only on single target. Using more advanced tools than last time (see next section), I've decided to expand this test to 3 targets this time. With Living Bomb, this required some code hacks, since the current Mage module does not like casting a 4th LB when 3 are already active. There is also one other issue: SimC does not allow separation of enemies right now, so LB explosions will always hit all targets. With NT this is of course desired behavior, but with LB it's not perfectly accurate. For our purposes though, it shouldn't affect conclusions on snapshotting.
Snapshotting Methodology
After how the last thread turned out, many folks asked if I could simply use a method more translatable to AffDots, since that is how most folks do their snapshotting. Turkeyburger has been kind enough to provide me with a WeakAura string that does roughly the same thing. I've been able to reverse engineer it to provide behavior similar to AffDots - computing a relative % strength between your castable Mage Bomb against the actively ticking one on the target.
I decided to make 5 different cases - Snapshotting at 120%, 140%, 160%, 180%, and 200%. There are also additional checks: making sure that the target will live for a number of ticks, or waiting until the current bomb has a limited number of ticks remaining before refreshing it. Here's the code used for LB:
Code: Select all
# Snapshotting test block
# Case 1 : WA 120
# actions.single_target+=/living_bomb,cycle_targets=1,if=talent.living_bomb.enabled&ticks_remain<=2&tick_damage*(100+crit_pct_current)>=dot.living_bomb.tick_dmg*(100+dot.living_bomb.crit_pct)*(100+dot.living_bomb.haste_pct)*spell_haste*0.012&target.time_to_die>tick_time*3
# Case 2 : WA 140
# actions.single_target+=/living_bomb,cycle_targets=1,if=talent.living_bomb.enabled&ticks_remain<=2&tick_damage*(100+crit_pct_current)>=dot.living_bomb.tick_dmg*(100+dot.living_bomb.crit_pct)*(100+dot.living_bomb.haste_pct)*spell_haste*0.014&target.time_to_die>tick_time*3
# Case 3 : WA 160
# actions.single_target+=/living_bomb,cycle_targets=1,if=talent.living_bomb.enabled&ticks_remain<=2&tick_damage*(100+crit_pct_current)>=dot.living_bomb.tick_dmg*(100+dot.living_bomb.crit_pct)*(100+dot.living_bomb.haste_pct)*spell_haste*0.016&target.time_to_die>tick_time*3
# Case 4 : WA 180
# actions.single_target+=/living_bomb,cycle_targets=1,if=talent.living_bomb.enabled&ticks_remain<=2&tick_damage*(100+crit_pct_current)>=dot.living_bomb.tick_dmg*(100+dot.living_bomb.crit_pct)*(100+dot.living_bomb.haste_pct)*spell_haste*0.018&target.time_to_die>tick_time*3
# Case 5 : WA 200
# actions.single_target+=/living_bomb,cycle_targets=1,if=talent.living_bomb.enabled&ticks_remain<=2&tick_damage*(100+crit_pct_current)>=dot.living_bomb.tick_dmg*(100+dot.living_bomb.crit_pct)*(100+dot.living_bomb.haste_pct)*spell_haste*0.02&target.time_to_die>tick_time*3
# Snapshotting test block ends
Code: Select all
# Snapshotting test block
# Case 1 : WA 120
# actions.single_target+=/nether_tempest,cycle_targets=1,if=talent.nether_tempest.enabled&action.nether_tempest.tick_damage*(100+action.nether_tempest.crit_pct)>=dot.nether_tempest.tick_dmg*(100+dot.nether_tempest.crit_pct)*(100+dot.nether_tempest.haste_pct)*spell_haste*0.012&target.time_to_die>6&ticks_remain<=6
# Case 2 : WA 140
# actions.single_target+=/nether_tempest,cycle_targets=1,if=talent.nether_tempest.enabled&action.nether_tempest.tick_damage*(100+action.nether_tempest.crit_pct)>=dot.nether_tempest.tick_dmg*(100+dot.nether_tempest.crit_pct)*(100+dot.nether_tempest.haste_pct)*spell_haste*0.014&target.time_to_die>6&ticks_remain<=6
# Case 3 : WA 160
# actions.single_target+=/nether_tempest,cycle_targets=1,if=talent.nether_tempest.enabled&action.nether_tempest.tick_damage*(100+action.nether_tempest.crit_pct)>=dot.nether_tempest.tick_dmg*(100+dot.nether_tempest.crit_pct)*(100+dot.nether_tempest.haste_pct)*spell_haste*0.016&target.time_to_die>6&ticks_remain<=6
# Case 4 : WA 180
# actions.single_target+=/nether_tempest,cycle_targets=1,if=talent.nether_tempest.enabled&action.nether_tempest.tick_damage*(100+action.nether_tempest.crit_pct)>=dot.nether_tempest.tick_dmg*(100+dot.nether_tempest.crit_pct)*(100+dot.nether_tempest.haste_pct)*spell_haste*0.018&target.time_to_die>6&ticks_remain<=6
# Case 5 : WA 200
# actions.single_target+=/nether_tempest,cycle_targets=1,if=talent.nether_tempest.enabled&action.nether_tempest.tick_damage*(100+action.nether_tempest.crit_pct)>=dot.nether_tempest.tick_dmg*(100+dot.nether_tempest.crit_pct)*(100+dot.nether_tempest.haste_pct)*spell_haste*0.02&target.time_to_die>6&ticks_remain<=6
# Snapshotting test block ends
Part 3: When to snapshot?
With Frost, there was some consensus that snapshotting is better done when you have nothing else to do. With Arcane it's a bit less obvious - should you actively snapshot when you have Missile procs available? What about 2T16 stacks, or Arcane Charges?
I settled on 3 variations, each of which will be suffixed in the results. The "Regular" snapshotting will be done when there is nothing better to do than cast Arcane Blast to build charges. The "Aggressive" profile, suffixed with "_AGG", chooses to prioritize snapshot over the regular Arcane spells (AB/AM/ABar). The "Extra Aggressive" profile, suffixed with "_AGGX", is the "Aggressive" profile coupled with ignoring current remaining bomb duration.
Part 4: Simulation results
Single Target Living Bomb:
450s duration, 2000K iterations, DPS error = 26.30
(Komma's comment: 2 million iterations later and the differences are still smaller than the error bar...)
3 Target Living Bomb:
450s duration, 250K iterations, DPS error = 106.48
3 Target Nether Tempest:
450s duration, 250K iterations, DPS error = 134.34
(Komma's first reaction to this chart: http://i.imgur.com/XsD8Mia.jpg" target="_blank)
Part 5: Conclusions
The charts pretty much tell their own story.
Regarding LB:
1. Snapshotting with LB on single target is a complete waste of time.
2. Snapshotting with LB on multiple targets is also not worth it.
3. The higher you set your snapshotting threshold, the better - mostly because the less snapshotting you do.
4. Getting more aggressive with LB snapshotting only makes things worse.
5. The ONLY exception is if you aggressively snapshot massive 200%+ multipliers, on multiple target fights.
6. NEVER ignore current LB's remaining duration when snapshotting.
Regarding NT on multiple targets:
1. Snapshotting with NT on multiple targets is definitely worth it.
2. Snapshotting is good even with a single trinket/meta proc advantage.
3. Snapshotting with NT on multiple targets should be prioritized over regular spells.
NOTE: I didn't run extra aggressive profiles for NT, so snapshots were only done on NTs with limited duration remaining.
As usual, I include a TL;DR note as an answer to the opening question.
"Snapshotting with Living Bomb as an Arcane Mage IS NOT a DPS gain, regardless of single or multi target."
"Snapshotting with Nether Tempest as an Arcane Mage IS a DPS gain on multi target fights."