Paladin
================================================================================
================================================================================
================================================================================
Holy
STATUS: Working
Last Update: 2010-01-06
Here's my Holy Paladin macro... It uses your focus as the person to keep up Beacon and Sacred Shield. So you basically focus the tank and let the macro work. It will keep BoL and SS on the tank, and it will heal accordingly. If no one needs healing, it will Cleanse debuffs. It will also judge light on the focus target (tank's target). It will also pop Divine Plea if low on mana and it will bubble if you get low on health. It will use Divine Favor when someone is low and it will even use Hand of Protection on a caster that is low. It will use Divine Illumination when many targets have taken moderate damage in anticipation of many heals being cast.
Also it fully uses Beacon of Light. It will always heal a different target and let Beacon heal the tank. If the tank needs much more healing than any other target, it will still heal someone else because Beacon will heal the tank...but it will use a larger spell because the tank needs it.
Code:
# Version: 20100106
/run vFoL=3000; vHS=6000; vHL=8000; vHOPhp=0.2; vHOPmana=18000; vDFavor=0.2; vIllumNum=0.2; vIllumDmg=5000;
/run vGroup="raid"; vNPS=1; vNPE=GetNumRaidMembers(); if vNPE==0 then vGroup="party"; vNPS=0; vNPE=GetNumPartyMembers() end;
/run if UnitHealth("player")/UnitHealthMax("player")<0.10 and GetSpellCooldown("Divine Shield")==0 and IsUsableSpell("Divine Shield") then SpellStopCasting() CastSpellByName("Divine Shield") end;
/run if GetSpellCooldown("Divine Plea")==0 and UnitPower("player")/UnitPowerMax("player")<=0.50 then CastSpellByName("Divine Plea") end;
/run local f=0; if UnitExists("focus") and UnitInRange("focus")==1 and UnitIsDeadOrGhost("focus")~=1 then for i=1,40 do local d={UnitBuff("focus",i)}; if d[1]=="Beacon of Light" and d[8]=="player" and d[7]-GetTime()>=3 then f=1; break end end if f==0 then RunMacroText("/cast [@focus] Beacon of Light") end end;
/run local a,n,d=0,0,0; for i=vNPS,vNPE do local tt="player"; if i>0 then tt=vGroup..i end; if UnitExists(tt) and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 then a=UnitHealthMax(tt)-UnitHealth(tt) end; if a>1000 then n=n+1 d=d+a end end; if n>(vNPE*vIllumNum) and d/n>vIllumDmg and GetSpellCooldown("Divine Illumination")==0 then CastSpellByName("Divine Illumination") end;
/run local e,n,h,hm=UnitExists,UnitName,UnitHealth,UnitHealthMax; local f,w,fh,m="focus","focus",0,0; if e(f) then fh=hm(f)-h(f) end; for i=vNPS,vNPE do local a,tt=0,"player"; if i>0 then tt=vGroup..i end; if n(tt)~=n(f) then a=hm(tt)-h(tt) end; if a>m and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 then m=a w=tt end end; if fh>2*m then m=fh end; if m>0 then vHealTarget=w vHealDmg=m else vHealTarget=nil vHealDmg=0 end
/run local w,m=vHealTarget,vHealDmg; if w~=nil then local n,cd,ud,sp=UnitName,GetSpellCooldown,UnitDebuff,GetUnitSpeed("player"); local p=UnitHealth(w)/UnitHealthMax(w); local s=nil; if n(w)~=n("player") and p<vHOPhp and IsSpellInRange("Hand of Protection",w)==1 and UnitPowerMax(w)>vHOPmana and cd("Hand of Protection")==0 and UnitAffectingCombat(w)==1 and not ud(w,"Forbearance") and not ud(w,"Ice Block") then s="Hand of Protection" else if p<vDFavor and cd("Divine Favor")==0 then CastSpellByName("Divine Favor") end if cd("Holy Shock")==0 and (m>=vHS or (sp>0 and m>=vFoL)) then s="Holy Shock" elseif sp>0 and m>=vFoL and UnitBuff("player","Infusion of Light") then s="Flash of Light" elseif sp==0 then if m>=vHL then s="Holy Light" elseif m>=vFoL then s="Flash of Light" end end end; if s~=nil then RunMacroText("/cast [@"..w.."] "..s) end end
/run if UnitExists("focustarget") and UnitInRange("focus")==1 and UnitAffectingCombat("focus")==1 and GetSpellCooldown("Judgement of Light") == 0 then RunMacroText("/cast [@focustarget] Judgement of Light") end;
/run local f=0; if UnitExists("focus") and UnitInRange("focus")==1 and UnitIsDeadOrGhost("focus")~=1 then for i=1,40 do local d={UnitBuff("focus",i)}; if d[1]=="Sacred Shield" and d[8]=="player" and d[7]-GetTime()>=3 then f=1; break end end if f==0 then RunMacroText("/cast [@focus] Sacred Shield") end end;
/run local w=nil; local m=0; for i=vNPS,vNPE do local tt="player"; if i>0 then tt=vGroup..i end; if UnitExists(tt) and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 then for j=1,40 do local d={UnitDebuff(tt,j)}; if (d[5]=="Magic" or d[5]=="Poison" or d[5]=="Disease") and d[7]>m then w=tt; m=d[7] end end end end; if w~=nil then RunMacroText("/cast [@"..w.."] Cleanse") end;
/run StaticPopup_Hide("MACRO_ACTION_FORBIDDEN");
The Overall Logic:
- If you are under 10% health and Divine Shield is available, then stop casting and Divine Shield.
- If you are under 50% mana and Divine Plea is available, then Divine Plea.
- If you have a focus in range and your Beacon of Light is either not present or has 3 seconds or less remaining, then Beacon of Light your focus.
- If at least 20% of the party/raid have taken at least 1000 damage and the average damage per person is over 5000, use Divine Illumination if available.
- If a party/raid member needs healing, heal them.
- If your focus is in range and has a target and Judgement of Light is ready, then Judge your focus's target.
- If your you have a focus in range and Sacred Shield is either not present or has 3 seconds or less remaining, then Sacred Shield your focus.
- If a party/raid member has a debuff, Cleanse.
The Healing Logic:
- If the target is below 20% hp, within 30yds, is a caster (max power > 18K), and doesn't have Forbearance, then Hand of Protection.
- If the target is under 10% hp and Divine Favor is available, then Divine Favor for the heal.
- If Holy Shock is ready and the target needs 6000 or more healing, then Holy Shock.
- If target needs 8000 or more healing, then Holy Light.
- If target needs 3000 or more healing, then Flash of Light.
- If no target needs at least 3000 healing, do nothing.
Customization:
There are 8 variables at the beginning of the 1st line. These control which spell is chosen for which situation and should be adjusted for how big your heals hit.
- vFoL: The minimum damage taken to be healed by a Flash of Light (3000 in code above).
- vHS: The minimum damage taken to be healed by Holy Shock (6000 in code above).
- vHL: The minimum damage taken to be healed by Holy Light (8000 in code above).
- vHOPhp: The percentage health at which Hand of Protection will be used on a caster (0.20 for 20% in code above).
- vHOPmana: The amount of "max power" a target must have to be considered for Hand of Protection (18000 in code above).
- vDFavor: The percentage health at which Divine Favor will be used for the next heal (0.1 for 10% in code above).
- vIllumNum: The percentage of party/raid members that must have taken damage to trigger use of Divine Illumination (0.2 for 20% in code above).
- vIllumDmg: The average per-person damage taken that must exist to trigger use of Divine Illumination (5000 in code above).
Other Notes and Future Revisions:
- This does NOT attempt to use Lay on Hands for either healing or mana...this may be added in the future.
- It never uses Avenging Wrath...this is unlikely to be added (only you know when you really need it on a given fight).
================================================================================
================================================================================
================================================================================
Protection
STATUS: Working
Last Update: 2010-01-04
Here are macros for the standard Prot Paladin 969 rotation. If you want to learn about the rotation, there is a decent overview of it on TankSpot that I suggest. I've created 4 versions of the macro with various complexities. The first is a basic 969 that does not attempt to keep Sacred Shield up on yourself. It also does not use Hammer of Wrath. The 2nd version will sometimes skip dropping Consecration to instead rebuff Sacred Shield. The 3rd is the same as the 2nd except it will skip Judgement to rebuff Sacred Shield instead. The 4th is the most advanced. It will sometimes skip Consecration to rebuff Sacred Shield and it will also use Hammer of Wrath in place of every other Judgement (every other one so that we maintain the Judgement of Wisdom debuff on the target).
They will all "reset" the rotation if you don't push the macro for more than 9 seconds (between pulls). They will NOT reset if you change target (useful for switching targets during trash). It will also not "skip" if you do something else with your GCD. If you do a Hand of Reckoning to taunt, it will just go right back to where it was...it won't skip over an ability because you used that GCD elsewhere.
Notes:
- These will not automatically use Divine Protection...only you really know when you need it.
- They will not activate Divine Plea. You should activate it once on your own and then have it be refreshed by Guarded by the Light.
Standard 969 (Judge, HotR, HS, SoR, Cons):
Code:
# Version: 20100104-Standard
/run if vProtTS==nil then vProtTS=GetTime() end; if vProt6==nil then vProt6=0 end; if vProt9==nil then vProt9=0 end; if vProt969==nil then vProt969=9 end;
/run if GetTime()-vProtTS>9 then vProt6=0; vProt9=0; vProt969=9; end; vProtTS=GetTime();
/run if vProt969==9 and vProt9==0 and GetSpellCooldown("Judgement of Wisdom")==0 then CastSpellByName("Judgement of Wisdom"); vProt9=1; vProt969=6; end;
/run if vProt969==9 and vProt9==1 and GetSpellCooldown("Holy Shield")==0 then CastSpellByName("Holy Shield"); vProt9=2; vProt969=6; end;
/run if vProt969==9 and vProt9==2 and GetSpellCooldown("Consecration")==0 then CastSpellByName("Consecration"); vProt9=0; vProt969=6; end;
/run if vProt969==6 and vProt6==0 and GetSpellCooldown("Hammer of the Righteous")==0 then CastSpellByName("Hammer of the Righteous"); vProt6=1; vProt969=9; end;
/run if vProt969==6 and vProt6==1 and GetSpellCooldown("Shield of Righteousness")==0 then CastSpellByName("Shield of Righteousness"); vProt6=0; vProt969=9; end;
969 with SS for Cons (Judge, HotR, HS, SoR, SS/Cons):
Code:
# Version: 20100104-SSCons
/run if vProtTS==nil then vProtTS=GetTime() end; if vProt6==nil then vProt6=0 end; if vProt9==nil then vProt9=0 end; if vProt969==nil then vProt969=9 end;
/run if GetTime()-vProtTS>9 then vProt6=0; vProt9=0; vProt969=9; end; vProtTS=GetTime();
/run if vProt969==9 and vProt9==0 and GetSpellCooldown("Judgement of Wisdom")==0 then CastSpellByName("Judgement of Wisdom"); vProt9=1; vProt969=6; end;
/run if vProt969==9 and vProt9==1 and GetSpellCooldown("Holy Shield")==0 then CastSpellByName("Holy Shield"); vProt9=2; vProt969=6; end;
/run if vProt969==9 and vProt9==2 then i=1 while(i<=40) do a={UnitBuff("player",i)} if a[1]=="Sacred Shield" and a[8]=="player" then break else i=i+1 end end if i>40 then RunMacroText("/cast [@player] Sacred Shield"); vProt9=0; vProt969=6; elseif GetSpellCooldown("Consecration")==0 then CastSpellByName("Consecration"); vProt9=0; vProt969=6; end end;
/run if vProt969==6 and vProt6==0 and GetSpellCooldown("Hammer of the Righteous")==0 then CastSpellByName("Hammer of the Righteous"); vProt6=1; vProt969=9; end;
/run if vProt969==6 and vProt6==1 and GetSpellCooldown("Shield of Righteousness")==0 then CastSpellByName("Shield of Righteousness"); vProt6=0; vProt969=9; end;
969 with SS for Judgement (SS/Judge, HotR, HS, SoR, Cons):
Code:
# Version: 20100104-SSJudge
/run if vProtTS==nil then vProtTS=GetTime() end; if vProt6==nil then vProt6=0 end; if vProt9==nil then vProt9=0 end; if vProt969==nil then vProt969=9 end;
/run if GetTime()-vProtTS>9 then vProt6=0; vProt9=0; vProt969=9; end; vProtTS=GetTime();
/run if vProt969==9 and vProt9==0 then i=1 while(i<=40) do a={UnitBuff("player",i)} if a[1]=="Sacred Shield" and a[8]=="player" then break else i=i+1 end end if i>40 then RunMacroText("/cast [@player] Sacred Shield"); vProt9=1; vProt969=6; elseif GetSpellCooldown("Judgement of Wisdom")==0 then CastSpellByName("Judgement of Wisdom"); vProt9=1; vProt969=6; end end;
/run if vProt969==9 and vProt9==1 and GetSpellCooldown("Holy Shield")==0 then CastSpellByName("Holy Shield"); vProt9=2; vProt969=6; end;
/run if vProt969==9 and vProt9==2 and GetSpellCooldown("Consecration")==0 then CastSpellByName("Consecration"); vProt9=0; vProt969=6; end;
/run if vProt969==6 and vProt6==0 and GetSpellCooldown("Hammer of the Righteous")==0 then CastSpellByName("Hammer of the Righteous"); vProt6=1; vProt969=9; end;
/run if vProt969==6 and vProt6==1 and GetSpellCooldown("Shield of Righteousness")==0 then CastSpellByName("Shield of Righteousness"); vProt6=0; vProt969=9; end;
969 with SS for Cons and HoW for every other Judgement (HoW/Judge, HotR, HS, SoR, SS/Cons):
Code:
# Version: 20100104-SSCons-HowJudge
/run if vProtTS==nil then vProtTS=GetTime() end; if vProtJudge==nil then vProtJudge=0 end; if vProt6==nil then vProt6=0 end; if vProt9==nil then vProt9=0 end; if vProt969==nil then vProt969=9 end;
/run if GetTime()-vProtTS>9 then vProt6=0; vProt9=0; vProt969=9; end; vProtTS=GetTime();
/run if vProt969==9 and vProt9==0 and (UnitHealth("target")/UnitHealthMax("target")>0.2 or vProtJudge==1) and GetSpellCooldown("Judgement of Wisdom")==0 then CastSpellByName("Judgement of Wisdom"); vProt9=1; vProt969=6; vProtJudge=0; end;
/run if vProt969==9 and vProt9==0 and UnitHealth("target")/UnitHealthMax("target")<=0.2 and vProtJudge==0 and GetSpellCooldown("Hammer of Wrath")==0 then CastSpellByName("Hammer of Wrath"); vProt9=1; vProt969=6; vProtJudge=1; end;
/run if vProt969==9 and vProt9==1 and GetSpellCooldown("Holy Shield")==0 then CastSpellByName("Holy Shield"); vProt9=2; vProt969=6; end;
/run if vProt969==9 and vProt9==2 then i=1 while(i<=40) do a={UnitBuff("player",i)} if a[1]=="Sacred Shield" and a[8]=="player" then break else i=i+1 end end if i>40 then RunMacroText("/cast [@player] Sacred Shield"); vProt9=0; vProt969=6; elseif GetSpellCooldown("Consecration")==0 then CastSpellByName("Consecration"); vProt9=0; vProt969=6; end end;
/run if vProt969==6 and vProt6==0 and GetSpellCooldown("Hammer of the Righteous")==0 then CastSpellByName("Hammer of the Righteous"); vProt6=1; vProt969=9; end;
/run if vProt969==6 and vProt6==1 and GetSpellCooldown("Shield of Righteousness")==0 then CastSpellByName("Shield of Righteousness"); vProt6=0; vProt969=9; end;
The Logic:
- (9s #1) Judgement of Wisdom (maybe Sacred Shield of Hammer of Wrath depending on version)
- (6s #1) Hammer of the Righteous
- (9s #2) Holy Shield
- (6s #2) Shield of Righteousness
- (9s #3) Consecration (maybe Sacred Shield depending on version)
Global Variables for State (for those who care):
- vProtTS :: Used to detect if been more than 9 seconds since the macro ran so it can reset.
- vProt969 :: Used to determine if the next ability is a 9-second one or a 6-second one.
- vProt9 :: Used to determine where in the sequence of the 9-second abilities the macro is...in first above, 0 = judge next, 1 = holy shield next, 2 = consecrate next.
- vProt6 :: Used to determine where in the sequence of the 6-second abilities the macro is...in first above, 0 = HotR next, 1 = SoR next.
- vProtJudge :: Used in the last macro above to alternate the "judgement" spot in the rotation between HoW and JoW. You only want to HoW every other to maintain the judgement effect.
================================================================================
================================================================================
================================================================================
Retribution
STATUS: Working
Last Update: 2010-01-08
Now for a Retribution Paladin macro... It follows the first come first serve priority system used by ret. It automatically detects your T9 and T10 set bonuses and adjusts the gear accordingly. Cooldown and range checks are included for all spells. Details about the priorities can be found below. Use of Holy Wrath is configurable with a variable.
As for utility, the macro will automatically bubble if you get low on HP. It will also automatically use your Divine Plea (it tries to use it while all DPS skills are on CD but will use it as priority if mana drops lower). It will use both Hammer of Justice and Arcane Torrent to interrupt (but not at the same time of course). If you are moving but are slowed, it will automatically use Hand of Freedom. If you pull aggro or get too high on threat, it will use Hand of Salvation. It will also keep your Sacred Shield on you if all DPS skills are on cooldown.
The macro will also automatically pop Avenging Wrath. It won't waste it on low health targets. If you are using Seal of Corruption/Vengeance, it will wait until you have 5 stacks of the debuff to pop it.
Code:
# Version: 20100108
/startattack
/run vUseHolyWrath=false
/run local n=0; local sets={{48602,48631,1},{50324,50328,10},{51160,51164,10},{51275,51279,10}}; local slots={"HeadSlot","ShoulderSlot","ChestSlot","HandsSlot","LegsSlot"}; for i=1,#slots do local id=tonumber(({string.find(GetInventoryItemLink("player", ({GetInventorySlotInfo(slots[i])})[1]), "^\124c%x+\124Hitem:([^:]+):.*\124h%[.*%]")})[3]); for j=1,#sets do if id>=sets[j][1] and id<=sets[j][2] then n=n+sets[j][3] end end end; local a=n-math.floor(n/10)*10; local b=math.floor(n/10); vRet=0; if a>1 and b<2 then vRet=1 elseif a>1 and b>1 then vRet=2 elseif b>3 then vRet=3 end;
/run if type(vJoW)~="function" then vJoW=function() if GetSpellCooldown("Judgement of Wisdom")==0 and IsUsableSpell("Judgement of Wisdom") and IsSpellInRange("Judgement of Wisdom","target") then CastSpellByName("Judgement of Wisdom") end end end;
/run if type(vHoW)~="function" then vHoW=function() if GetSpellCooldown("Hammer of Wrath")==0 and IsUsableSpell("Hammer of Wrath") and IsSpellInRange("Hammer of Wrath","target") and UnitHealth("target")/UnitHealthMax("target")<0.2 then CastSpellByName("Hammer of Wrath") end end end;
/run if type(vCS)~="function" then vCS=function() if GetSpellCooldown("Crusader Strike")==0 and IsUsableSpell("Crusader Strike") and IsSpellInRange("Crusader Strike","target") then CastSpellByName("Crusader Strike") end end end;
/run if type(vDS)~="function" then vDS=function() if GetSpellCooldown("Divine Storm")==0 and IsUsableSpell("Divine Storm") and IsSpellInRange("Crusader Strike","target") then CastSpellByName("Divine Storm") end end end;
/run if type(vCons)~="function" then vCons=function() if UnitPower("player")/UnitPowerMax("player")>=0.25 and GetSpellCooldown("Consecration")==0 and IsUsableSpell("Consecration") and IsSpellInRange("Crusader Strike","target") then CastSpellByName("Consecration") end end end;
/run if type(vExo)~="function" then vExo=function() if UnitBuff("player", "The Art of War") and GetSpellCooldown("Exorcism")==0 and IsUsableSpell("Exorcism") and IsSpellInRange("Exorcism","target") then CastSpellByName("Exorcism") end end end;
/run if type(vHWrath)~="function" then vHWrath=function() if vUseHolyWrath and GetSpellCooldown("Holy Wrath")==0 and IsUsableSpell("Holy Wrath") and IsSpellInRange("Crusader Strike","target") then CastSpellByName("Holy Wrath") end end end;
/run if type(vPlea)~="function" then vPlea=function(m) if GetSpellCooldown("Divine Plea")==0 and UnitPower("player")/UnitPowerMax("player")<=m then CastSpellByName("Divine Plea") end end end;
/run if UnitHealth("player")/UnitHealthMax("player")<0.10 then if GetSpellCooldown("Divine Shield")==0 and IsUsableSpell("Divine Shield") then SpellStopCasting() CastSpellByName("Divine Shield") elseif GetSpellCooldown("Divine Protection")==0 and IsUsableSpell("Divine Protection") then SpellStopCasting() CastSpellByName("Divine Protection") end end
/run local t={UnitDetailedThreatSituation("player","target")}; if GetNumPartyMembers()>0 and (t[1]==1 or (t[5] ~=nil and t[5]>25000 and t[3]>90)) and GetSpellCooldown("Hand of Salvation")==0 then RunMacroText("/cast [@player] Hand of Salvation") end
/run if (vRetInt==nil or GetTime()-vRetInt>1) and (UnitCastingInfo("target") or UnitChannelInfo("target")) then if IsUsableSpell("Hammer of Justice") and GetSpellCooldown("Hammer of Justice")==0 and IsSpellInRange("Hammer of Justice", "target")==1 then SpellStopCasting() CastSpellByName("Hammer of Justice") vRetInt=GetTime() elseif IsUsableSpell("Arcane Torrent") and GetSpellCooldown("Arcane Torrent")==0 and IsSpellInRange("Crusader Strike", "target")==1 then SpellStopCasting() CastSpellByName("Arcane Torrent") vRetInt=GetTime() end end
/run local s=GetUnitSpeed("player"); if GetSpellCooldown("Hand of Freedom")==0 and s>0 and s<4.5 then RunMacroText("/cast [@player] Hand of Freedom") end;
/run vPlea(0.20)
/run if UnitAffectingCombat("player") and UnitHealth("target")>200000 and GetSpellCooldown("Avenging Wrath")==0 and IsUsableSpell("Avenging Wrath") and IsSpellInRange("Crusader Strike","target") then if UnitBuff("player","Seal of Corruption") or UnitBuff("player","Seal of Vengeance") then local i=1 while(i<=40)do local a={UnitDebuff("target",i)}; if (a[1]=="Holy Vengeance" or a[1]=="Blood Corruption") and a[8]=="player" and a[4]==5 then break else i=i+1 end end; if i<=40 then CastSpellByName("Avenging Wrath") end else CastSpellByName("Avenging Wrath") end end
/run if vRet==0 then vHoW() vCS() vJoW() vDS() vCons() vExo() vHWrath() vPlea(0.70) end
/run if vRet==1 then vJoW() vHoW() vCS() vDS() vCons() vExo() vHWrath() vPlea(0.70) end
/run if vRet==2 then vJoW() vDS() vHoW() vCS() vCons() vExo() vHWrath() vPlea(0.70) end
/run if vRet==3 then vDS() vCS() vJoW() vHoW() vCons() vExo() vHWrath() vPlea(0.70) end
/run if UnitPower("player")/UnitPowerMax("player")>=0.50 then local f=0; for i=1,40 do local d={UnitBuff("player",i)}; if d[1]=="Sacred Shield" and d[8]=="player" then f=1 break end end; if f==0 then RunMacroText("/cast [@player] Sacred Shield") end end;
/run StaticPopup_Hide("MACRO_ACTION_FORBIDDEN");
The Overall Logic:
- If you are under 10% health and either Divine Shield or Divine Protection are available, then stop casting and Divine Shield/Protection.
- If you have at least 25K threat and either have pulled aggro or above 90% of aggro threat, then Hand of Salvation.
- If the target is casting and either Hammer of Justice or Arcane Torrent are available, then interrupt.
- If you are under 20% mana and Divine Plea is available, then Divine Plea.
- If you are moving, are slowed, and Hand of Freedom is available, then Hand of Freedom.
- If your target has more 200K hp and is in melee range and Avenging Wrath is ready...
- If you have Seal of Corruption/Vengeance on and the debuff is fully stacked to 5, then Avenging Wrath.
- Else (some other Seal) Avenging Wrath.
- Use the highest priority DPS skill that is off cooldown and in range.
- If below 70% mana and Divine Plea is available, then Divine Plea.
- If your Sacred Shield is not on you and you have at least 50% mana, Sacred Shield yourself.
The DPS Priorities:
- Default:
- Hammer of Wrath > Crusader Strike > Judgement > Divine Storm > Consecration > Exorcism > Holy Wrath
- 2-piece T9:
- Judgement > Hammer of Wrath > Crusader Strike > Divine Storm > Consecration > Exorcism > Holy Wrath
- 2-piece T9 and 2-piece T10:
- Judgement > Divine Storm > Hammer of Wrath > Crusader Strike > Consecration > Exorcism > Holy Wrath
- 4-piece T10:
- Divine Storm > Crusader Strike > Judgement > Hammer of Wrath > Consecration > Exorcism > Holy Wrath
Customizations:
- vUseHolyWrath :: If set to true, the macro will use Holy Wrath (default false for no holy wrath use).
Other Notes:
- Sacred Shield is only refreshed on yourself if you have at least 50% mana.
- Consecration is only used if you have at least 25% mana.
- Hand of Freedom is used when running is slowed to less than backpedal speed.