Classic Prot Warrior Avoidance Macro

So I couldn’t find any addons or macro’s for figuring out total avoidance and block absorb for classic. So I took a bit of what someone else made, added to it and fixed it.

Note that the calculation for armor absorb is based on matching up total armor against what blizzards UI says it absorbs, so it might be off for some levels. Testing at levels 50-52 and it stayed accurate. If it’s not accurate later I’ll update it :slight_smile:

To add this:

  • Go to your macro screen (/macro)

  • Click New

  • Select and Icon and Set a name

  • Copy/paste the command below

  • Click Save

  • Drag the macro to your action bar somewhere

  • Click it

  • Profit?

    /run local d,p,b,bv,a,e=GetDodgeChance(),GetParryChance(),GetBlockChance(),GetShieldBlock(),UnitArmor(“player”) print(format(“Avoidance: %.2f%% + %.2f%% + %.2f%% = %.2f%% - %.0f Blocked %.2f%% of the time”,d,p,(e/89.3),d+p+(e/89.3),bv,b))

1 Like

this doesnt work.

The forum helpfully replaced the standard double-quote marks with the unique pairs of quote marks.

Here’s the macro again, but hopefully unchanged by adding code block:

/run local d,p,b,bv,a,e = GetDodgeChance(), GetParryChance(), GetBlockChance(), GetShieldBlock(), UnitArmor("player") print(format("Avoidance: %.2f%% + %.2f%% + %.2f%% = %.2f%% - %.0f Blocked %.2f%% of the time", d, p, (e/89.3), d+p+(e/89.3), bv, b))

Edit: also added 12 spaces to allow for slightly more legible wrapping while remaining under the 255 char limit for macros.

Edit2: Should mention the output is a bit weird…don’t quite understand what the (e/89.3) is…(or what ‘e’ itself is as a variable…it looks like ‘e’ is defined as the print(…) statement itself…which I’m not sure is legit or not.

e is UnitArmor(“Player”). The ac to % of damage absorption changes depending on level. At level 60 the correct calculation would be (e/117.78). I posted this originally at level 52. Forgot to mention that 117.78 is only correct until you hit diminishing returns. I can’t get the ratios for diminishing returns to fit with the rest in 255 characters, so you you’ll need to tweak the number a bit if you get over 6800ac.