Prot war someone try it, i got bored on Christmas and had no wow so i took a look at some code.
Code:/run local _,d,_ = GetSpellCooldown("Bloodrage") if (d == 0) then CastSpellByName("Bloodrage") end /run if not UnitBuff("player", "Battle Shout") then CastSpellByName("Battle Shout") end /run if UnitBuff("player", "Glyph of Revenge") then CastSpellByName("Heroic Strike") end /run if UnitCastingInfo("target") then SpellStopCasting() CastSpellByName("Shield Bash") end /run i=1 while(i<=40)do a={UnitDebuff("target",i)} if(a[1]=="Demoralizing Shout" and a[8]=="player")then break elseif(i==40 and UnitPower('player')>=10) then CastSpellByName("Demoralizing Shout") i=i+1 else i=i+1 end end /run local _,a,_ = GetSpellCooldown("Thunder Clap") if (a == 0) then CastSpellByName("Thunder Clap") end /run local _,d,_ = GetSpellCooldown("Revenge") if (d == 0) then CastSpellByName("Revenge") end /run local _,a,_ = GetSpellCooldown("Shield Slam") if (a == 0) then CastSpellByName("Shield Slam") end /run local _,a,_ = GetSpellCooldown("Heroic Throw") if (a == 0) then CastSpellByName("Heroic Throw") end /run if UnitPower("Player") > 79 then CastSpellByName("Heroic Strike") end /run if UnitPower("Player") > 20 then CastSpellByName("Devastate") end
That's crazy...I was working on a Prot warrior one just before I left for Christmas...the prot paladin one got me thinking about it...
Here's what I came up with:
The Logic:Code:/run if GetSpellCooldown("Shield Slam") then if GetSpellCooldown("Shield Block")==0 then CastSpellByName("Shield Block") end CastSpellByName("Shield Slam") end /run i=1 d=120 while(i<=40)do a={UnitDebuff("target",i)} if a[1]=="Sunder Armor" and a[8]=="player" then d=a[7]-GetTime() if a[4]==5 then break end end i=i+1 end if i>40 or d<4 then CastSpellByName("Devastate") end /run if GetSpellCooldown("Bloodrage")==0 and UnitPower("player")<80 then CastSpellByName("Bloodrage") end /run if GetSpellCooldown("Revenge")==0 and IsUsableSpell("Revenge") then CastSpellByName("Revenge") end /run if GetSpellCooldown("Thunder Clap")==0 then CastSpellByName("Thunder Clap") end /run if GetSpellCooldown("Shockwave")==0 then CastSpellByName("Shockwave") end /run if GetSpellCooldown("Concussion Blow")==0 then CastSpellByName("Concussion Blow") end /run if not UnitDebuff("target", "Demoralizing Shout") and not UnitDebuff("target", "Demoralizing Roar") and not UnitDebuff("target", "Vindication") and not UnitDebuff("target", "Curse of Weakness") then CastSpellByName("Demoralizing Shout") end /run if not UnitBuff("player", "Battle Shout") and not UnitBuff("player", "Blessing of Might") and not UnitBuff("player", "Greater Blessing of Might") then CastSpellByName("Battle Shout") elseif not UnitBuff("player", "Commanding Shout") then CastSpellByName("Commanding Shout") end /run if UnitPower("player")>=80 then CastSpellByName("Heroic Strike") end /run if UnitPower("player")>=20 then CastSpellByName("Devastate") end
- If Shield Slam is ready...
- If Shield Block is ready, Shield Block (to increase Shield Slam dmg)
- Shield Slam
- If there are not 5 stacks of Devastate or Devastate debuff will fall within 4 seconds, Devastate
- If Bloodrage is ready and you have less than 80 rage, Bloodrage
- If Revenge is ready and usable, Revenge
- If Thunder Clap is ready, Thunder Clap
- If Shockwave is ready, Shockwave
- If Concussion Blow is ready, Concussion Blow
- If the target doesn't have Demo Shout or Demo Roar, Demoralizing Shout
- If you don't have Battle Shout or Blessing of Might, then Battle Shout
- If you DO have Blessing of Might but then don't have Commanding Shout, Commanding Shout
- If you have at least 80 rage, Heroic Strike
- If you have at least 20 rage, Devastate
From my understanding of Prot Warrior and after some basic research, this seems to be a rotation that is pretty versatile for both single target and AOEing. A pure single-target rotation wouldn't probably use Shockwave and Thunder Clap as much...but a pure AOE rotation wouldn't keep the priority on Shield Slam.
If more knowledgeable people have suggestions/tweaks, let me know. It's also untested so let me know if there are problems. =p
Last edited by Viral Fly-by; 12-25-2009 at 05:23 PM.
I forgot all about Concussion Blow, I left shield block and shockwave for situational use. Also I planned to use modifier key shift for cleave above like 30 or 40 rage. Like I said I couldn't test any of this and its gonna be like 2 weeks before I'm on a pc again I'm posting all this from my blackberry.
*edit- Glyph of Revenege is a free HS so I'd make sure its in there.
Last edited by Tracerv0; 12-25-2009 at 04:23 AM.
Nice macro indeed. Adding to first post and fixing your typo on this line
Going to test it in 10 minutesCode:/run if not UnitDebuff("target", ("Demoralizing Shout") and not UnitDebuff("target", "Demoralizing Roar") then CastSpellByName("Demoralizing Shout") end end
Will probably also add in for the glyph of revenge and other survival abilities.
Last edited by Elitetech; 12-25-2009 at 07:44 AM.
Knowledge is often mistaken for intelligence. This is like mistaking a cup of milk for a cow.
After some testing I came up with this. And Viral your macro doesn't work. I tried fixing it but couldn't get it to cast anything else than shield slam&block
Okay, after a shitload of testing.
Also, any progress on the druid one?Code:/startattack /run if UnitCastingInfo("target") and GetSpellCooldown("Shield Bash")==0 then CastSpellByName("Shield Bash") end /run local _,a,_ = GetSpellCooldown("Shield Block") if (a == 0) then CastSpellByName("Shield Block") end /run if UnitHealth('player')<7000 and GetSpellCooldown("Shield Wall")==0 then CastSpellByName("Shield Wall") end /run if UnitHealth('player')<6000 and GetSpellCooldown("Last Stand")==0 then CastSpellByName("Last Stand") end /run local _,d,_ = GetSpellCooldown("Bloodrage") if (d == 0) then CastSpellByName("Bloodrage") end /run if not UnitBuff("player", "Battle Shout") then CastSpellByName("Battle Shout") end /run if UnitBuff("player", "Glyph of Revenge") then CastSpellByName("Heroic Strike") end /run local _,a,_ = GetSpellCooldown("Thunder Clap") if (a == 0) then CastSpellByName("Thunder Clap") end /run local _,a,_ = GetSpellCooldown("Shockwave") if (a == 0) then CastSpellByName("Shockwave") end /run local _,a,_ = GetSpellCooldown("Shield Slam") if (a == 0) then CastSpellByName("Shield Slam") end /run local _,a,_ = GetSpellCooldown("Concussion blow") if (a == 0) then CastSpellByName("Concussion blow") end /run i=1 d=0 while(i<=40)do a={UnitDebuff("target",i)} if a[1]=="Devastate" and a[8]=="player" then d=a[7]-GetTime() if a[4]<5 then break end end i=i+1 end if i>40 or d<4 then CastSpellByName("Devastate") end /run local _,d,_ = GetSpellCooldown("Revenge") if (d == 0) then CastSpellByName("Revenge") end /run local _,a,_ = GetSpellCooldown("Heroic Throw") if (a == 0) then CastSpellByName("Heroic Throw") end /run if UnitPower("Player") > 79 then CastSpellByName("Heroic Strike") end /run if UnitPower("Player") > 20 then CastSpellByName("Devastate") end /run StaticPopup_Hide("MACRO_ACTION_FORBIDDEN");
Edit: Edited the macro.
Edit: Edited again LOL
Last edited by Elitetech; 12-25-2009 at 09:59 AM.
Knowledge is often mistaken for intelligence. This is like mistaking a cup of milk for a cow.
This thread is made of pure win +rep
Edit ... Stupid phone.
Last edited by Tracerv0; 12-25-2009 at 10:28 AM.
Rofl how stupid we are for not noticing that
Updated again, fixed revenge and all that stuff. should work now xD
Code:/startattack /run if UnitCastingInfo("target") and GetSpellCooldown("Shield Bash")==0 then CastSpellByName("Shield Bash") end /run local _,a,_ = GetSpellCooldown("Shield Block") if (a == 0) then CastSpellByName("Shield Block") end /run if UnitHealth('player')<7000 and GetSpellCooldown("Shield Wall")==0 then CastSpellByName("Shield Wall") end /run if UnitHealth('player')<6000 and GetSpellCooldown("Last Stand")==0 then CastSpellByName("Last Stand") end /run local _,d,_ = GetSpellCooldown("Bloodrage") if (d == 0) then CastSpellByName("Bloodrage") end /run i=1 d=0 while(i<=40)do a={UnitDebuff("target",i)} if a[1]=="Sunder Armor" and a[8]=="player" then d=a[7]-GetTime() if a[4]<5 then break end end i=i+1 end if i>40 or d<4 then CastSpellByName("Devastate") end /run if not UnitBuff("player", "Battle Shout") then CastSpellByName("Battle Shout") end /run if UnitBuff("player", "Glyph of Revenge") then CastSpellByName("Heroic Strike") end /run if GetSpellCooldown("Revenge")==0 and IsUsableSpell("Revenge")==1 then CastSpellByName("Revenge") end /run local _,a,_ = GetSpellCooldown("Thunder Clap") if (a == 0) then CastSpellByName("Thunder Clap") end /run local _,a,_ = GetSpellCooldown("Shockwave") if (a == 0) then CastSpellByName("Shockwave") end /run local _,a,_ = GetSpellCooldown("Shield Slam") if (a == 0) then CastSpellByName("Shield Slam") end /run local _,a,_ = GetSpellCooldown("Concussion blow") if (a == 0) then CastSpellByName("Concussion blow") end /run local _,a,_ = GetSpellCooldown("Heroic Throw") if (a == 0) and IsUsableSpell("Heroic Throw")==1 then CastSpellByName("Heroic Throw") end /run if UnitPower("Player") > 79 then CastSpellByName("Heroic Strike") end /run if UnitPower("Player") > 20 then CastSpellByName("Devastate") end /run StaticPopup_Hide("MACRO_ACTION_FORBIDDEN");
Last edited by Elitetech; 12-25-2009 at 11:38 AM.
Knowledge is often mistaken for intelligence. This is like mistaking a cup of milk for a cow.
Nice posts about the prot war guys...I'm sure there were indeed errors in mine...I wasn't able to test it and finished typing/formatting it while it was super late and I was pretty tired. As long as we combine all the ideas into one good one, it's all good.
I'll update my posts with the final result later...I'm not a fan of leaving bad ones in the thread's history.
I might agree but most people want the macro to do it all for them. =) Using Shield Block to make Shield Slam bigger is fairly important to threat IMO. Shield Block isn't much of a defensive cooldown either on the grand scheme.
Touche....totally forgot about that one.
ROFL...I was on autopilot when I wrote that one. =) Thanks bro.
Last edited by Viral Fly-by; 12-25-2009 at 11:55 AM.
Viral now we're add it. Vindication overrides Demoralizing shout, so if you have a retripala in your group you'll keep spamming the shout
Aaaand, your detection for Sunder Armor doesn't work. It'll start off the combat by applying 1 stack. Then it won't use it anymore from that line. And if there's 5 stacks on your target it'll spam devastate.
Last edited by Elitetech; 12-25-2009 at 12:08 PM.
Knowledge is often mistaken for intelligence. This is like mistaking a cup of milk for a cow.