Archived

This topic is now archived and is closed to further replies.

Althor

SimulationCraft for Priests (Cataclysm Edition)

64 posts in this topic

As a follow up to the lengthy post with the SimulationCraft code...

Any of the real SimulationCraft experts know how to modify this code to simulate more friendly targets?

I would like to see the full benefit of spells such as Prayer of Mending and Prayer of Healing.

Also critique is welcome... this is an attempt to see the value of our heals and not necessarily an excercise to determine secondary stat factors... which would be nice to have also!

Share this post


Link to post
Share on other sites

You can add people to heal into your simulations by adding more players that do nothing:

warrior=dummy1 actions="" quiet=1

warrior=dummy2 actions="" quiet=1

and specifying who is healed with e.g. "target=dummy1" in the individual actions (non-smart heals target the player by default).

actions+=/greater_heal,target=dummy1

If you actually want to heal someone taking damage, stick a tank profile in there (with "role=tank") and the enemy will smack them in the face.

As an aside, you don't need "if=buff.weakened_soul.down" for PWS: since release 420-3 that is the default behavior. You can override that default with "ignore_debuff=1" for simulating PWS spam.

Take a look at the simc files in the profiles_heal folder in the distribution for more ideas. Disc support is reasonably solid now, Holy needs a lot of work.

Share this post


Link to post
Share on other sites

While working with my SimulationCraft code and results I noticed that when i stopped casting any attacking spells the Power Torrent buff no longer showed up in the results. I then looked closely at the examples at the start of this thread and they too have the same results. For rotations that include Smite or other attacking spells the Power Torrent buff is present, but for those with only healing casts it is not showing under the buffs but it is applied to the main hand weapon in the gear section.

The description for Power Torrent says it adds 500 intellect for both damage or healing spells, but it looks like SimulationCraft is only activiating the buff for damage spells.

I don't have a Google account so i was not able to post this as an issue on SimulationCraft's website. Can others confirm this oversight and report it or am I missing something?

Share this post


Link to post
Share on other sites
While working with my SimulationCraft code and results I noticed that when i stopped casting any attacking spells the Power Torrent buff no longer showed up in the results.

I've fixed the callbacks so heals not trigger it like they should. Thanks for the report.

Share this post


Link to post
Share on other sites

I failed to check if Lightweave was procing on my non-AA script, but now I see that it was not! Wonderful catch to implement the change to all the buffs and not just Power Torrent.

I think this will greatly improve the simulation numbers for a non-AA build and will at least make me more comfortable with having the non-AA build for our progression raids.

Now the question is whether i just have two Discipline specs and replace my Shadow spec with the AA Discipline spec.

Thank you for the very quick responses.

Share this post


Link to post
Share on other sites

I am trying to experiment with a healing simulation on a tank target. I was wondering if the melee swings of the boss can be modified in any way to specify the amount of damage done or the swing timer.

Share this post


Link to post
Share on other sites
I am trying to experiment with a healing simulation on a tank target. I was wondering if the melee swings of the boss can be modified in any way to specify the amount of damage done or the swing timer.

Have a look at sc_target.cpp - simulationcraft - World of Warcraft DPS Simulator - Google Project Hosting for the actions currently available for enemys and the options which you can use. Line 128 to 243. It's a bit inconsistent, but for now this is experimental stuff anyway until nate implements multi target ( and actor re-encoding along with it ).

Ps. Keep in mind that our tank modules aren't really up to date or thoroughly tested. Warrior, Druid and Paladin should be more or less ok for 4.0.6 or higher, Deathknights need some love first.

Share this post


Link to post
Share on other sites
Have a look at sc_target.cpp - simulationcraft - World of Warcraft DPS Simulator - Google Project Hosting for the actions currently available for enemys and the options which you can use. Line 128 to 243. It's a bit inconsistent, but for now this is experimental stuff anyway until nate implements multi target ( and actor re-encoding along with it ).

Ps. Keep in mind that our tank modules aren't really up to date or thoroughly tested. Warrior, Druid and Paladin should be more or less ok for 4.0.6 or higher, Deathknights need some love first.

It's ok.. the people over at simulationcraft have been very helpful and respond quickly when I do encounter bugs, so I don't mind testing some of the more experimental stuff. In the long run that will help me and the healing community a great deal. Also, thank you kindly for pointing me in the right direction. For now, I was planning on working with a druid tank since that is the class I am most familiar with.

I know you guys are aware of the lack of support currently for overhealing. While I am here, I am curious if anyone is trying to implement tracking of overhealing or the option to ignore it on the output? It's been stated elsewhere that overhealing is one of the reasons Simulation undervalues Mastery right now, so a feature that gives that data as well is something I think a lot of priests would appreciate.

For anyone who may be curious, I have been importing a druid tank, using the default action list for the druid and this action list for healing:

actions+=/power_word_shield,target=Druid_Tank,if=(target.health_pct<50|!cooldown.rapture.remains)

actions+=/inner_focus

actions+=/flash_heal,target=Druid_Tank,if=target.health_pct<20

actions+=/penance_heal,target=Druid_Tank,if=target.health_pct<80

actions+=/greater_heal,target=Druid_Tank,if=target.health_pct<80

Share this post


Link to post
Share on other sites

SimCraft shows ~100 DPS increase if you cast MB with high priority then dots and dont bother with shadow orbs.

At now sim algorithm looks like:

actions+=/ -=BUFFs=-

actions+=/mind_blast,if=buff.shadow_orb.react>=1&!set_bonus.tier12_4pc_caster

actions+=/ -=DOTs=-

Change it to

actions+=/ -=BUFFs=-

actions+=/mind_blast

actions+=/ -=DOTs=-

And you notice the difference. I think DPET priorty system is rather old. We should check DPCD (Damage per cooldown) system. It used in theorycraft for Retripals or Furywars for example. So MB shows higher DPCD then VT or DP (cooldown for dots - recast interval or duration).

P.S. Oh and by the way, we already use the DPCD system, because putting even an shadow orb`s empowered MB higher in priority then DoTs (which are still have waaaaay more DPET) point us at lack in theorycraft. We need fully proven mathematical priority system.

Share this post


Link to post
Share on other sites

I qoute from Warrior: Fury Compendium:

The best way to look at this problem quantitatively is by making decisions based on minimizing potential damage loss between the three different abilities and not simply forgoing Bloodsurge procs or overusing them while performing an in-optimal rotation. One would use one ability over another based on what their cooldown is and where they are on that cooldown and if they have Slam! ready to use. It is not obviously clear what is best to hit over something else, so we turn to economics, math, and probability. A term that is thrown around constantly is opportunity cost.

Opportunity cost is the cost of passing up the next best choice when making a decision of any number of possibilities. If you have 5 possibilities, the opportunity cost is the amount that you don't get form the 2nd best choice, when choosing to do the first best choice. For example, the opportunity cost of using Bloodsurge ahead of BT is the damage you will lose to pushing back BT and WW. WW also gets pushed back because WW always follows the BT due to the GCD lockout from BT.

When deciding what to do, it is best to make the decision based on which option has the lowest opportunity cost. We use math then to calculate the opportunity cost of possible scenarios and then come up with a set of rules to follow, which will govern our rotation. To be able to use different abilities in a comparison, we need an average value of power to assign to each based on your stats and happenings with the hit table.

Author of this Compendium calculate "Loss" for all of abilities like that:

Loss = Delay * Power / Cooldown

For ShadowPriest mechanic it converts:

Loss = CastTime * DPE / Cooldown(or Duration)

MB0_Loss = GCD * 42399 / 5.5 = 7708 * GCD

VT_Loss = GCD * 95206 / 15 = 6347 * GCD

DP_Loss = GCD * 112091 / 24 = 4670 * GCD

I dont know how to calculate MF_Loss actually.

What does that mean? If you choose what to cast: MB0, VT or DP - and you choose cast DP you will loose MB0_Loss+VT_Loss = 14055 * GCD damage

If you choose VT you will loose 12378 * GCD damage

and if you choose cast MB0 with higher priority then VT or DP you will only loose 11017 * GCD damage

So MB0 has lowest opportunity cost and should cast always before DoTs recast.

Share this post


Link to post
Share on other sites

MB0_Loss = GCD * 42399 / 5.5 = 7708 * GCD

VT_Loss = GCD * 95206 / 15 = 6347 * GCD

DP_Loss = GCD * 112091 / 24 = 4670 * GCD

Why are you using 5.5 as the cooldown for MB0? It has a 6.5 second cooldown with talents, it takes 1 GCD to cast and it does not benefit from spell queuing so it incurs a full 1 one-way trip latency on every one. Thus if you're GCD capped then it's 6.5+1.0+half latency. So say 7.5 to 8.0 seconds per MB, not 5.5.

Also VT and DP are not 15 seconds and 24 seconds. That's their average point but the actual amount depends upon haste.

Share this post


Link to post
Share on other sites
Why are you using 5.5 as the cooldown for MB0? It has a 6.5 second cooldown with talents, it takes 1 GCD to cast and it does not benefit from spell queuing so it incurs a full 1 one-way trip latency on every one. Thus if you're GCD capped then it's 6.5+1.0+half latency. So say 7.5 to 8.0 seconds per MB, not 5.5.

Also VT and DP are not 15 seconds and 24 seconds. That's their average point but the actual amount depends upon haste.

Because this was a fast example in three lines. And Latency? No way with queuing system.

Share this post


Link to post
Share on other sites

@Szeretlek

You can't queue spells on cooldown, that's why you should take latency into account when calculating the minimum MB interval. A 9 seconds interval would be more realistic anyway.

Also, can you post the changes you made to the action priority list to get the 100 dps increase?

I tried playing with the priority list and I got a dps increase but when I check the logs I see the old priority list is still there, so i'm probably doing something wrong.

Share this post


Link to post
Share on other sites
Also, can you post the changes you made to the action priority list to get the 100 dps increase?

At now sim algorithm looks like:

actions+=/ -=BUFFs=-

actions+=/mind_blast,if=buff.shadow_orb.react>=1&!set_bonus.tier12_4pc_caster

actions+=/ -=DOTs=-

Change it to

actions+=/ -=BUFFs=-

actions+=/mind_blast

actions+=/ -=DOTs=-

I already did this =) Ok. actual algorythm

actions=flask,type=draconic_mind

actions+=/food,type=seafood_magnifique_feast

actions+=/fortitude

actions+=/inner_fire

actions+=/shadow_form

actions+=/vampiric_embrace

actions+=/snapshot_stats

actions+=/volcanic_potion,if=!in_combat

actions+=/volcanic_potion,if=buff.bloodlust.react|target.time_to_die<=40

actions+=/mind_blast

actions+=/berserking

actions+=/shadow_word_pain,if=(!ticking|dot.shadow_word_pain.remains<gcd+0.5)&miss_react

actions+=/devouring_plague,if=(!ticking|dot.devouring_plague.remains<gcd+1.0)&miss_react

actions+=/stop_moving,health_percentage<=25,if=cooldown.shadow_word_death.remains>=0.2|dot.vampiric_touch.remains<cast_time+2.5

actions+=/vampiric_touch,if=(!ticking|dot.vampiric_touch.remains<cast_time+2.5)&miss_react

actions+=/archangel,if=buff.dark_evangelism.stack>=5&dot.vampiric_touch.remains>5&dot.devouring_plague.remains>5

actions+=/start_moving,health_percentage<=25,if=cooldown.shadow_word_death.remains<=0.1

actions+=/shadow_word_death,health_percentage<=25

actions+=/shadow_fiend

actions+=/shadow_word_death,if=mana_pct<10

actions+=/mind_flay

actions+=/shadow_word_death,moving=1

actions+=/devouring_plague,moving=1,if=mana_pct>10

actions+=/dispersion

Share this post


Link to post
Share on other sites

@Szeretlek

Thanks. That's what I did too, and got about the same dps increase, but if you check the log you can still see this line "actions+=/mind_blast,if=buff.shadow_orb.react>=1&!set_bonus.tier12_4pc_caster".

Since i'm a noob at editing simcraft I think it's a mistake on my end.

Edit: to make myself clear, if you change the action list, run the simulation and then open the log tab you can still see the line you supposedly removed.

Share this post


Link to post
Share on other sites
Since i'm a noob at editing simcraft I think it's a mistake on my end.
Yep. And I wrote about it. That line cast MB only with Shadow Orbs.

Share this post


Link to post
Share on other sites

I use SimulationCraft to evaluate my Discipline Priest healing spells. I was looking over the output for my SimulationCraft and it appears the Divine Aegis talent is returning 40% of the critical strike heal instead of 30% as stated in the tooltip.

Am I missing something that actually increases the DA shield to 40% or is this an oversight in the programming?

Thanks.

[EDITED BY POSTER]

Well I figured it out myself! The Divine Aegis buff benefits from our Mastery: Shield Discipline.

With my mastery at 13.5% * 2.5% it works out to a 34% increase and 30% * 134% = 40%.

Leaving the post for others why may have had the same oversight

Share this post


Link to post
Share on other sites

I have tested the suggested change to the Shadow action list and found a roughly 80 DPS increase with Dark Intent enabled. As such I have adjusted the default action list and re-generated the profiles. They will show up in the next release.

Thanks!

Share this post


Link to post
Share on other sites

We could further refine the action list since there are times when casting VT or DP over MB is optimal, for instance, if you have empowered shadows but one of the dots isn't up it is best to cast the dot to proc dark flames and then cast MB.

Share this post


Link to post
Share on other sites

Guys, anyone knows why I can't get procs into simulationcraft? It surely supports them, but I can't define a rule to use them, for example:

actions+=/devouring_plague,if=(buff.volcanic_destruction.react<4|buff.power_torrent.react<4)&dot.devouring_plague.remains<20&miss_react

Even if you can't really get if some spell already uses the proc, it is something that should bump the dps quite a bit and provide more realistic view of trinkets with procs

Share this post


Link to post
Share on other sites
Guys, anyone knows why I can't get procs into simulationcraft? It surely supports them, but I can't define a rule to use them, for example:

actions+=/devouring_plague,if=(buff.volcanic_destruction.react<4|buff.power_torrent.react<4)&dot.devouring_plague.remains<20&miss_react

Even if you can't really get if some spell already uses the proc, it is something that should bump the dps quite a bit and provide more realistic view of trinkets with procs

The buff is implemented as volcanic_potion, not volcanic_destruction. Looking at the buffs in the report will tell you what buffs are available for your character to use in their action lists.

Share this post


Link to post
Share on other sites

Thanks, that did the trick. The results, however, are quite dissapointing. I have added:

actions+=/vampiric_touch,if=((buff.volcanic_potion.remains>2&buff.volcanic_potion.remains<5)|(buff.bell_of_enraging_resonance.remains>2&buff.bell_of_enraging_resonance.remains<5)|(buff.lightweave_embroidery.remains>2&buff.lightweave_embroidery.remains<5)|(buff.power_torrent_mh.remains>2&buff.power_torrent_mh.remains<5)|(buff.darkmoon_card_volcano.remains>2&buff.darkmoon_card_volcano.remains<5))&dot.vampiric_touch.remains<6&miss_react

actions+=/devouring_plague,if=((buff.volcanic_potion.remains>1&buff.volcanic_potion.remains<5)|(buff.bell_of_enraging_resonance.remains>1&buff.bell_of_enraging_resonance.remains<5)|(buff.lightweave_embroidery.remains>1&buff.lightweave_embroidery.remains<5)|(buff.power_torrent_mh.remains>1&buff.power_torrent_mh.remains<5)|(buff.darkmoon_card_volcano.remains>1&buff.darkmoon_card_volcano.remains<4))&dot.devouring_plague.remains<14&miss_react

In short, recasting the dots before buff expires and expected to see big bump in the dps, just I do see in real life. However, it was some pathetic 200 dps above... :( Still can't figure out why Edit: Played more with it, in the end, got 300 more dps with this actionlist
actions=flask,type=draconic_mind

actions+=/food,type=seafood_magnifique_feast

actions+=/fortitude

actions+=/inner_fire

actions+=/shadow_form

actions+=/vampiric_embrace

actions+=/snapshot_stats

actions+=/volcanic_potion,if=!in_combat

actions+=/volcanic_potion,if=buff.bloodlust.react|target.time_to_die<=40

actions+=/mind_blast

actions+=/shadow_word_pain,if=(!ticking|dot.shadow_word_pain.remains<gcd+0.5)&miss_react

actions+=/vampiric_touch,if=((buff.bloodlust.remains>2&buff.bloodlust.remains<5)|(buff.volcanic_potion.remains>2&buff.volcanic_potion.remains<5)|(buff.bell_of_enraging_resonance.remains>2&buff.bell_of_enraging_resonance.remains<5)|(buff.lightweave_embroidery.remains>2&buff.lightweave_embroidery.remains<5)|(buff.power_torrent_mh.remains>2&buff.power_torrent_mh.remains<5)|(buff.darkmoon_card_volcano.remains>2&buff.darkmoon_card_volcano.remains<5))&dot.vampiric_touch.remains<8&miss_react

actions+=/devouring_plague,if=((buff.bloodlust.remains>1&buff.bloodlust.remains<5)|(buff.volcanic_potion.remains>1&buff.volcanic_potion.remains<5)|(buff.bell_of_enraging_resonance.remains>1&buff.bell_of_enraging_resonance.remains<5)|(buff.lightweave_embroidery.remains>1&buff.lightweave_embroidery.remains<5)|(buff.power_torrent_mh.remains>1&buff.power_torrent_mh.remains<5)|(buff.darkmoon_card_volcano.remains>1&buff.darkmoon_card_volcano.remains<4))&dot.devouring_plague.remains<14&miss_react

actions+=/devouring_plague,if=(!ticking|dot.devouring_plague.remains<gcd+1.0)&miss_react

actions+=/stop_moving,health_percentage<=25,if=cooldown.shadow_word_death.remains>=0.2|dot.vampiric_touch.remains<cast_time+2.5

actions+=/vampiric_touch,if=(!ticking|dot.vampiric_touch.remains<cast_time+2.5)&miss_react

actions+=/archangel,if=buff.dark_evangelism.stack>=5&dot.vampiric_touch.remains>5&dot.devouring_plague.remains>5

actions+=/start_moving,health_percentage<=25,if=cooldown.shadow_word_death.remains<=0.1

actions+=/shadow_word_death,health_percentage<=25

actions+=/shadow_fiend

actions+=/shadow_word_death,if=mana_pct<10

actions+=/mind_flay

actions+=/shadow_word_death,moving=1

actions+=/devouring_plague,moving=1,if=mana_pct>10

actions+=/dispersion

ps: I have always wondered why MB have several actions devoted to, since for as long as I remember just casting it with max priority results in better dps, T12 or not.

ps2: I did quite lengthly testing of MF clipping after 2nd tick (which is theorycrafted to be the DPS gain) and it was dps loss for me, however, gain for others. Given the unreliable nature of real-life testing, can the simulationcraft help this question? There is an option to interrupt MF, but it works after 1st tick and I'm not sure if it plays correctly with the interruption - i.e. the interrupt window is shortly after the 2nd tick, but not close to the 3rd. Can simcraft do something like that?

Share this post


Link to post
Share on other sites

And you notice the difference. I think DPET priorty system is rather old. We should check DPCD (Damage per cooldown) system. It used in theorycraft for Retripals or Furywars for example. So MB shows higher DPCD then VT or DP (cooldown for dots - recast interval or duration).

P.S. Oh and by the way, we already use the DPCD system, because putting even an shadow orb`s empowered MB higher in priority then DoTs (which are still have waaaaay more DPET) point us at lack in theorycraft. We need fully proven mathematical priority system.

This question was covered by some of us at the end of WotLK (with the old mechanism, but the theory should be still valid). There are some mathematical proofs there:

http://elitistjerks.com/f77/t52579-shadow_effective_damage_per_cooldown/

Share this post


Link to post
Share on other sites

I have been running some (very basic) sims of AoE healing behavior for disc priest. While I was looking over some of my results, I noticed that my overall HPS (labeled DPS ofc) doesn't add up.

You can see this in the posted samples at the beginning of this thread, too. In the run Priest_Disc_AE_T12N, PoH contributes 38k, PoH aegis 12k, and there are 3 other sources of healing. Total HPS for that run is listed as 45k, but if I add up the left hand column it'd be 59k.

I'm just curious which figure is inaccurate, that's all. Maybe it's some adjustment for activity time? Thanks :) A number of searches on EJ/google gave me no info.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.