I don't use public stuff but here are a few macros/scripts that I use with my private Lua-unprotector. I hope this public thing does not modify the the same address that I use -.-
All these macros were created very fast and they are far away from perfect.
Paladin AoE tanking (Bloodelf lvl 85 in my case):
PHP Code:
#showtooltip Hammer of the Righteous
/use 14
#COOLDOWNS HOLY
/run _,arcanetorrentCD =GetSpellCooldown("Arcane Torrent")
/run _,consecrationCD =GetSpellCooldown("Consecration")
/run _,divinepleaCD =GetSpellCooldown("Divine Plea")
/run _,holyradianceCD =GetSpellCooldown("Holy Radiance")
/run _,holywrathCD =GetSpellCooldown("Holy Wrath")
/run _,layonhandsCD =GetSpellCooldown("Lay on Hands")
/run _,wordofgloryCD =GetSpellCooldown("Word of Glory")
#COOLDOWNS PROTECTION
/run _,ardentdefenderCD =GetSpellCooldown("Ardent Defender")
/run _,avengersshieldCD =GetSpellCooldown("Avenger's Shield")
/run _,divineprotectionCD =GetSpellCooldown("Divine Protection")
#/run _,divineshieldCD =GetSpellCooldown("Divine Shield")
/run _,guardianofancientkingsCD =GetSpellCooldown("Guardian of Ancient Kings")
/run _,hammerofjusticeCD =GetSpellCooldown("Hammer of Justice")
/run _,hammeroftherighteousCD =GetSpellCooldown("Hammer of the Righteous")
/run _,handoffreedomCD =GetSpellCooldown("Hand of Freedom")
#/run _,handofprotectionCD =GetSpellCooldown("Hand of Protection")
#/run _,handofreckoningCD =GetSpellCooldown("Hand of Reckoning")
#/run _,handofsacrificeCD =GetSpellCooldown("Hand of Sacrifice")
#/run _,handofsalcationCD =GetSpellCooldown("Hand of Salvation")
#/run _,righteousdefenseCD =GetSpellCooldown("Righteous Defense")
#COOLDOWNS RETRIBUTION
/run _,avengingwrathCD =GetSpellCooldown("Avenging Wrath")
/run _,crusaderstrikeCD =GetSpellCooldown("Crusader Strike")
/run _,hammerofwrathCD =GetSpellCooldown("Hammer of Wrath")
/run _,judgementCD =GetSpellCooldown("Judgement")
/run _,rebukeCD =GetSpellCooldown("Rebuke")
#PROCS
#/run _,_,_,sacreddutyBUFF,_,timeleftsdBUFF=UnitBuff("player","Sacred Duty")
#BUFFS
/run if not UnitBuff("player","Seal of Truth") then CastSpellByName("Seal of Truth") print("Seal of Truth") end
#DEBUFFS
/run forbearanceDEBUFF=UnitDebuff("player","Forbearance")
#INFOS
/run pHPpct=UnitHealth("player")/UnitHealthMax("player")
/run pMANApct=UnitMana("player")/UnitManaMax("player")
/run holypower=UnitPower("player",SPELL_POWER_HOLY_POWER)
/run tHPpct=UnitHealth("target")/UnitHealthMax("target")
#COUNTER/KICK/SILENCE
/run tcast=UnitCastingInfo("target") if tcast=="Electrical Storm" or tcast=="Toxic Link" or tcast=="Brutal Strike" or tcast=="Flame Breath" or tcast=="Water Totem" or tcast=="Spirit Bolts" or tcast=="Siphon Soul" or tcast=="Breath of Hethiss" or tcast=="Devastating Slam" or tcast=="Lash of Anguish" or tcast=="Wave of Agony" or tcast=="Zanzili Fire" or tcast=="Zanzil's Graveyard Gas" or tcast=="Zanzil's Resurrection Elixir" then dontkick=1 else dontkick=0 end
/run if UnitCastingInfo("target") and dontkick==0 then if rebukeCD==0 then SpellStopCasting() CastSpellByName("Rebuke") elseif arcanetorrentCD==0 and pMANApct < 0.9 then CastSpellByName("Arcane Torrent") elseif avengersshieldCD==0 then CastSpellByName("Avenger's Shield") end end
#SPECIALS
/run if layonhandsCD==0 and not forbearanceDEBUFF and pHPpct < 0.23 then CastSpellByName("Lay on Hands") print("Lay on Hands") end
/run if divineprotectionCD==0 and pHPpct < 0.5 then CastSpellByName("Divine Protection") end
/run if pHPpct<0.5 and holypower>2 then CastSpellByName("Word of Glory") printf("Word of Glory") end
/run if ardentdefenderCD==0 and pHPpct < 0.38 then CastSpellByName("Ardent Defender") end
/run if pHPpct<0.6 and guardianofancientkingsCD==0 then CastSpellByName("Guardian of Ancient Kings") end
/run if arcanetorrentCD==0 and pMANApct < 0.7 then CastSpellByName("Arcane Torrent") end
/run if divinepleaCD==0 and pMANApct < 0.5 then CastSpellByName("Divine Plea") end
/run if avengingwrathCD==0 and tHPpct > 0.2 then CastSpellByName("Avenging Wrath") end
#ATTACKS
/run if hammerofwrathCD==0 and tHPpct < 0.2 then SpellStopCasting() CastSpellByName("Hammer of Wrath") end
/run if UnitBuff("player","Grand Crusader") and judgementCD>0 and UnitMana("player")>4000 then CastSpellByName("Avenger's Shield") end
/run if judgementCD==0 then CastSpellByName("Judgement") elseif hammeroftherighteousCD==0 then CastSpellByName("Hammer of the Righteous") elseif UnitBuff("player","Sacred Duty") and holypower>1 then CastSpellByName("Shield of the Righteous") elseif holypower==3 then CastSpellByName("Inquisition") elseif holywrathCD==0 and pMANApct > 0.6 then CastSpellByName("Holy Wrath") elseif consecrationCD==0 and pMANApct > 0.5 then CastSpellByName("Consecration") end
/run StaticPopup_Hide("MACRO_ACTION_FORBIDDEN");
Firemage (lvl 85 undead in my case):
still has problems with casting scorch to much
PHP Code:
#showtooltip Fireball
/use 10
/run _,willoftheforsakenCD=GetSpellCooldown("Will of the Forsaken")
/run _,counterspellCD=GetSpellCooldown("Counterspell")
/run _,magewardCD=GetSpellCooldown("Mage Ward")
/run _,manashieldCD=GetSpellCooldown("Mana Shield")
/run _,mirrorCD=GetSpellCooldown("Mirror Image")
/run _,combustionCD=GetSpellCooldown("Combustion")
/run _,fireblastCD=GetSpellCooldown("Fire Blast")
/run _,iceblockCD=GetSpellCooldown("Ice Block")
/run _,_,_,hotstreakBUFF=UnitBuff("player","Hot Streak");
/run _,_,_,impactBUFF=UnitBuff("player","Impact")
/run _,_,_,_,_,_,_,own=UnitDebuff("target","Living Bomb") if own=="player" then livingbombDEBUFF=1 else livingbombDEBUFF=nil end
/run _,_,_,_,_,_,_,own=UnitDebuff("target","Critical Mass") if own=="player" then criticalmassDEBUFF=1 else criticalmassDEBUFF=nil end
/run _,_,_,_,_,_,_,own=UnitDebuff("target","Ignite") if own=="player" then igniteDEBUFF=1 else igniteDEBUFF=nil end
/run _,_,_,_,_,_,_,own=UnitDebuff("target","Pyroblast!") if own=="player" then pyroblastDEBUFF=1 else pyroblastDEBUFF=nil end
/run if not pyroblastDEBUFF then _,_,_,_,_,_,_,own=UnitDebuff("target","Pyroblast") if own=="player" then pyroblastDEBUFF=1 else pyroblastDEBUFF=nil end end
/run if UnitHealth("target")>1500000 then tBOSS=1 else tBOSS=0 end
/run pHPpct=UnitHealth("player")/UnitHealthMax("player")
/run if UnitHealth("target")/UnitHealthMax("target")<0.12 or UnitHealth("target")<20000 or UnitMana("player")<3800 then tlowHP=1 else tlowHP=0 end
/run if pHPpct<0.2 and iceblockCD==0 then CastSpellByName("Ice Block") end
/run if pHPpct<0.5 and manashieldCD==0 then CastSpellByName("Mana Shield") end
/run if pHPpct<0.4 and magewardCD==0 then CastSpellByName("Mage Ward") end
/run tcast=UnitCastingInfo("target") if tcast=="Electrical Storm" or tcast=="Toxic Link" or tcast=="Brutal Strike" or tcast=="Flame Breath" or tcast=="Water Totem" or tcast=="Spirit Bolts" or tcast=="Siphon Soul" or tcast=="Breath of Hethiss" or tcast=="Devastating Slam" or tcast=="Lash of Anguish" or tcast=="Wave of Agony" or tcast=="Zanzili Fire" or tcast=="Zanzil's Graveyard Gas" or tcast=="Zanzil's Resurrection Elixir" then dontkick=1 else dontkick=0 end
/run if UnitCastingInfo("target") and counterspellCD==0 and dontkick==0 then SpellStopCasting() CastSpellByName("Counterspell") end
/run if tBOSS==1 and mirrorCD==0 and UnitMana("player")>2000 then CastSpellByName("Mirror Image") end
/run if combustionCD==0 and UnitHealth("target")>200000 and livingbombDEBUFF and criticalmassDEBUFF and pyroblastDEBUFF and igniteDEBUFF then CastSpellByName("Combustion") end
/run if tlowHP==1 then if hotstreakBUFF then CastSpellByName("Pyroblast") elseif impactBUFF and UnitMana("player")>3657 then CastSpellByName("Fire Blast") else CastSpellByName("Scorch") end end
/run if tlowHP==0 then if criticalmassDEBUFF==nil then print("USE SCORCH!") end if livingbombDEBUFF==nil then CastSpellByName("Living Bomb") elseif hotstreakBUFF then CastSpellByName("Pyroblast") elseif impactBUFF and pyroblastDEBUFF then CastSpellByName("Fire Blast") elseif fireblastCD==0 then CastSpellByName("Fire Blast") else CastSpellByName("Fireball") end end
Warrior Tank (lvl 70 Goblin Twink in my Case):
PHP Code:
#showtooltip Heroic Strike
/run _,rocketbarrageCD =GetSpellCooldown("Rocket Barrage")
/run _,heroicstrikeCD =GetSpellCooldown("Heroic Strike")
/run _,strikeCD =GetSpellCooldown("Strike")
/run _,thunderclapCD =GetSpellCooldown("Thunder Clap")
/run _,shieldslamCD =GetSpellCooldown("Shield Slam")
/run _,shieldblockCD =GetSpellCooldown("Shield Block")
/run _,cleaveCD =GetSpellCooldown("Cleave")
/run _,cbCD =GetSpellCooldown("Concussion Blow")
/run _,pummelCD =GetSpellCooldown("Pummel")
/run _,revengeCD =GetSpellCooldown("Revenge")
/run _,chargeCD =GetSpellCooldown("Charge")
/run _,shieldwallCD =GetSpellCooldown("Shield Wall")
/run _,battleshoutCD =GetSpellCooldown("Battle Shout")
/run _,cmdshoutCD =GetSpellCooldown("Commanding Shout")
/run _,shockwaveCD =GetSpellCooldown("Shockwave")
/run rage=UnitPower('player')
/run pHPpct=UnitHealth("player")/UnitHealthMax("player")
/run if IsUsableSpell("Revenge") then canuserevenge=1 else canuserevenge=0 end
/run if UnitDebuff("player","Power Word: Fortitude") or UnitDebuff("player","Blood Pact") then usecmdshout=0 else usecmdshout=1 end
/run _,_,_,_,_,_,_,own=UnitDebuff("target","Rend") if own=="player" then rendDEBUFF=1 else rendDEBUFF=0 end
/run _,_,_,_,_,_,_,own=UnitDebuff("target","Thunder Clap") if own=="player" then tcDEBUFF=1 else tcDEBUFF=0 end
/run _,_,_,_,_,_,_,own=UnitDebuff("target","Demoralizing Shout") if own=="player" then demoshoutDEBUFF=1 else demoshoutDEBUFF=0 end
/run _,_,_,count,_,_,_,own=UnitDebuff("target","Sunder Armor") if not count then count=0 end if own=="player" then sunderSTACKS=count else sunderSTACKS=count end
#BUFFS
#/run if usecmdshout==1 then if not UnitBuff("player","Commanding Shout") and cmdshoutCD==0 then CastSpellByName("Commanding Shout") elseif not UnitBuff("player","Battle Shout") and battleshoutCD==0 then CastSpellByName("Battle Shout") end end
/run if not UnitBuff("player","Battle Shout") and battleshoutCD==0 then CastSpellByName("Battle Shout") end
/run if UnitBuff("player","Victorious") then victoryrushBUFF=1 else victoryrushBUFF=0 end
#COUNTER/KICK/SILENCE
/run tcast=UnitCastingInfo("target") if tcast=="Whirlwind" then dontkick=1 else dontkick=0 end
/run if UnitCastingInfo("target") and dontkick==0 then if rage>=10 and pummelCD==0 then CastSpellByName("Pummel") elseif cbCD==0 and rage>=15 then CastSpellByName("Concussion Blow") elseif rage>=15 and shockwaveCD==0 then CastSpellByName("Shockwave") end end
#COOLDOWNS
/run if pHPpct<0.55 and shieldwallCD==0 then CastSpellByName("Shield Wall") end
/run if pHPpct<0.7 and rage>=10 and shieldblockCD==0 then CastSpellByName("Shield Block") end
/startattack
/run if (IsSpellInRange('Charge','target')==1 and GetSpellCooldown('Charge')==0) then CastSpellByName('Charge') end
/run if rage>=10 and rendDEBUFF==0 then CastSpellByName("Rend") end
/run if tcDEBUFF==1 and rendDEBUFF==1 and demoshoutDEBUFF==0 and rage>=10 then CastSpellByName("Demoralizing Shout") end
/run if rage>=15 and thunderclapCD==0 then CastSpellByName("Thunder Clap") elseif victoryrushBUFF==1 then CastSpellByName("Victory Rush") elseif rage>=20 and shieldslamCD==0 then CastSpellByName("Shield Slam") elseif rage>=5 and revengeCD==0 and canuserevenge==1 then CastSpellByName("Revenge") elseif rage>=7 and sunderSTACKS<3 then CastSpellByName("Sunder Armor") elseif rage>=40 and sunderSTACKS==3 then CastSpellByName("Devastate") elseif rage>=20 and strikeCD==0 then CastSpellByName("Strike") elseif rage>=30 and heroicstrikeCD==0 then CastSpellByName("Heroic Strike") elseif rage>=30 and cleaveCD==0 then CastSpellByName("Cleave") end
/run StaticPopup_Hide("MACRO_ACTION_FORBIDDEN")
If you use them and improve them let me know. The one for the Paladin is probably the best one - I've been using it aloooot and it works fine with bosstanking too - however it uses the *Hammer of the R.* ... probably not the best for single target tanking.