I’ve been playing around with rotations to see if i could improve it by deploying the rotational tips that are mentioned in guides and discussions, and thus make the simulation more accurate. Here follows some of the points that I believe would make the rotation better and reflect players better.
Spell Data
As part of doing this I noticed that some specific spells seems to be incorrect.
These points should be prefixed by my limited understanding of AMR simulator and wow simulating as a whole and I apologize if any of these points are incorrect
Vengeance: Revenge
Vengeance: Revenge doesn’t seem to be consumed when casting Revenge.
Here is a log of a simulation where revenge is cast, RevengeFree
is consumed, but not Vengeance: Revenge.,
https://www.askmrrobot.com/wow/simulator/report/48e5d63543cd41bf878ce85f1f7ac035
My guess as to why it would not be consumed would be because the trigger is of type “Power Consumed”(which i assume is rage/mana etc.). Maybe it does not trigger when revenge is cast freely (using RevengeFree
). Vengeance: Ignore Pain is consumed as expected.
In game, the buff is consumed when you cast revenge, even if it is cast for free.
Ignore Pain
When HasTalent(NeverSurrender)
, Ignore Pain looks to have an incorrect cap.
the cap is listed as double the normal cap.
baseValue = 3.5 * AbilityDamage(true) * (1 + TotalVersatility)
cap = baseValue * 1.3
if HasTalent(NeverSurrender)
baseValue = baseValue * (1 + 1 * (1 - HealthPercent))
if HasTalent(NeverSurrender)
cap = cap * 2
I did some very basic testing and as far as I can tell, the cap work just as you’d expect, being 1.3
of the incresed value. My belief would be that the value should look like
baseValue = 3.5 * AbilityDamage(true) * (1 + TotalVersatility)
cap = baseValue * 1.3
if HasTalent(NeverSurrender)
baseValue = baseValue * (1 + 1 * (1 - HealthPercent))
if HasTalent(NeverSurrender)
cap = baseValue * 1.3
Cap information in rotation
As a sidenote I feel like a basic rule that would be applied to the rotation is that Ignore Pain should not be used if it will overcap the absorb, but I can’t figure out if this is possible in the rotation? Is there any method for getting the potential value of casting ignore pain would be, so that you can cast it if the current absorb is under 0.3 of that value?
Crystaline Carapace
The Azerite Trait Crystaline Carapace doesn’t seem to trigger any damage on attacking enemies.
Here is a sim using crystaline carapace and the log shows that it is triggered and applied, but no damage events can be found.
My gues is that the trigger for the damage has a typo
Type Damage Taken
Chance (percent)
if HasBuff(AzeriteCrystallineCarapace) and TriggerIsMelee
= 1
But the codename for the Buff that is applied is CrystallineCarapaceBuff
, AzeriteCrystallineCarapace
is the codename for the spell. My guess is that the damage trigger should be
Type Damage Taken
Chance (percent)
if HasBuff(CrystallineCarapaceBuff) and TriggerIsMelee
= 1
Rotation
Here are some thoughts and ideas that I’ve mainly picked up from Wowhead and Icy Veins guides.
I haven’t found a great way of evaluating and comparing them with various gearsetups and talents. Using the combination comparison will give you the raw numbers, but it’s hard for me to grasp why some rotations perform better then others without the detailed report. Also when comparing with only one (or a few) gear sets, it seems like there is often situations where some specific ability saves the player at a particular point in the fight(s), resulting in higher TUF. Maxing out the duration of feels like it should balance out some situational outliers but might have other sideeffects i assume.
If there is any way that you recommend to evaluate rotations, please do share them.
Below I provide some examples. I understand that they are very limited and far from all-covering. They are all suggestions.
However, here are some points on some specific abilities and talents.
Ignore Pain
As I mentioned in the spell data secition above. A sensible criteria on ignore pain would be to not cast it if you go over your cap. A simplistic criteria would be to not cast it if you still have ignore pain up. Like this
not HasBuff(IgnorePain) and (SecondsUntilBigHit <= 1.5 or HasBuff(VengeanceIgnorePain))
This seems to have a small improvement in survival and damage.
Being able to change the criteria to allow casting while you have the buff but not overcapping would probably have a very small increase in damage reduction.
Shield Wall
In some situations you end up with quite high death chance and 0 uses of shield wall. Would it make sense to increase the HealthPercent
threshold to 0.5
or something maybe? Having no health-threshold will probably “waste” it, but when fighitng big bosses you will not find yourself on 35%. You will be alive or dead.
Last Stand
See Point about Bolster below
Using Last stand when potentially being at 100% health seems to not be very benefical. I belive having some HealthPercent threshold would be sensible. In game I use it a lot like a “Oh shit” button. I tried some simming with using Last Stand when below 35% which turned out to be quite good in Mythic+, decreasing death chance somewhat. This is possible because you take many “small” hits and the only healer will sometimes need some time to throw a heal at you. However it increased Death Chance on Fetid Devourer because you will rarely find yourself at 35%. You’ll usually be dead.
I’m not sure if having a threshold at 50% to try to buffer up when in a tight spot would be benefical in all situations, but just using it when potentially at full health seems unecessary.
Combining thresholds on both Last Stand and Shieldwall:
Generally the very limited cases above would suggest that having thresholds around 60% for both would be useful. I did not attempt to allow overlapping etc.
Talents
Punish
A optimization when using Punish is to try to keep the Punish debuff up on as many targets as possible. I couldn’t evaluate this as I couldn’t really figure out how to configure it in the rotation. I tried to use multi-DoT
to do it, but it didn’t work.
This is probably a very small optimization either way.
Dragons Roar
Dragons roar generates 10 rage, Shield Slam generates 15, in a defensive priority, there is no reason to prioritize Dragon Roar above Shield Slam. In a offensive priority, Dragon Roar would be first.
Bolster
When bolster is selected, bolster acts as a secondary Shield Block and should not overlap with shield block. The most obvious rule would be to never use shield wall if bolster is up. Alternatively, you could also suggest using bolster whenever shieldblock is on CD. Using last stand more as a filler when Shield Block is on CD would make no differance while Last Stand is used without threshold. If Last Stand was to have a health threshold, used more reactively, it might be another rule to use Last Stand more freely when bolster is selected.
This would be a simple change like so:
- Rotation - Bolster
This simply does not allow casting of shield block while Bolster is up. - Rotation - Bolster No Overlap
This also disallows casting of last stand while shield block is up. An approach that somewhat nerfs the usefulness of last stand, effectively using it over shield block for block%. - Rotation - Bolster Filler
This adds a threshold to Last Stand, moving it more towards a defensive cooldown, then adds Last Stand as a filler for when shieldblock is not available.
This seems to be beneficial when playing with Bolster
Booming Voice
If you have the Talent Booming Voice, it is usually recomended to use it as much as possible for the big amount of rage it gives (40). It also helps your damage output somewhat. The AMR Rotation only falls back to demoralizing shout as a plaster defensive cooldown and doesn’t get alot out of Booming voice. My recommendation would be to place Booming Voice above Avatar in the priority since Booming Voice gives higher rage and optimally these spells should be used in conjunction. Since 40 rage is a lot, I think having a criteria of not overcapping rage is a good idea.
This could look something like this.
The possible downside would be in one of the situational outliers, that I mentioned earlier, where cooldowns ends up aligning in a way that demoralizing shout was continously used for a specific hit and reduces the Death Chance.
- Comparing AMR Rotation vs Booming Voice using variations of talents
- Recommended Mythic Build (1223211)
- Brotection ilvl 368. Mythic+11. AMR Rotation (86.01%) vs Booming Voice (86.56%).
- Davai ilvl 356. Mythic +8. AMR Rotation (88.07%) vs. Booming Voice (87.98%)
This will have a lot bigger impact if you have the Azerite Trait Deafening Crash.
- Recommended Mythic Build (1223211)
- Davai ilvl 356 (With Deafening Crash). Mythic+9. AMR Rotation (83.79%) vs Booming Voice (84.63%)
- Brotection ilvl 366 (With Deafening Crash). Raid Tanking. AMR Rotation (90.13%) vs Booming Voice (86.94%)
In this sitauation we have such a sitation where the TUF lowers because a quite large increase in death chance.
If it’s too risky to use Demoralizing Shout so aggresively, the other optimization would be to only use it if ShieldWall or LastStand is off cooldown to not be left without defensive cooldown.
Another addition that could be done would be to modify the criteria for ravager to allow overlapping with Demoralizing Shout since demoralizing shout will be up more (especially with deafening crash) and could result in too low usage of ravager.
Heavy Repercussions
With Heavy Repercussions, you could argue that shield block should be delayed by 2-3 seconds if waiting for a shield slam and also to potentially wait 2-3 seconds with shield slam if waiting for a shield block.
I couldn’t really come up with any generic rule however.
These are my findings in the ways of spells not being accurate and my suggestions to improve the rotation to better reflect the recommended way to play protection warrior.
Combining these rotational changes into a single rotation would look like this. This seems to improve TUF a little at least. I also created a gearing strategy using this rotation. The most interesting thing is that it increases the value of deafening crash alot.
Please do not hesitate to come back with any questions or opinions on my findings.