local function getSlot(spellTexture) for i = 1, 120, 1 do if GetActionTexture(i) ~= nil then -- print(GetActionTexture(i)) if(strfind(GetActionTexture(i), spellTexture)) then return i end end end return 0 end local function isUsable(spellTexture) local usable, _ = IsUsableAction(getSlot(spellTexture)) return usable end local function debuffIndex(spellTexture) for i = 1, 40 do local texturePath = UnitDebuff('target', i) if texturePath ~= nil and strfind(texturePath, spellTexture) then return i end end return 0 end local function debuffStacks(spellTexture) local _, stacks = UnitDebuff('target', debuffIndex(spellTexture)) if stacks == nill then return 0 else return stacks end end local function tank(cmd) local rage = UnitMana('player') local bloodrage = 'Ability_Racial_BloodRage' local revenge = 'Ability_Warrior_Revenge' local sunderArmor = 'Ability_Warrior_Sunder' local rend = 'Ability_Gouge' local shieldBash = 'Ability_Warrior_ShieldBash' local battleShout = 'Ability_Warrior_BattleShout' local heroicStrike = 'Ability_Rogue_Ambush' if UnitExists('target') and UnitCanAttack('player','target') then if (not PlayerFrame.inCombat) then AttackTarget() end if rage < 15 and isUsable(bloodrage) then CastSpellByName('Bloodrage') elseif buffed('Battle Shout') == nil and isUsable(battleShout) then CastSpellByName('Battle Shout') elseif isUsable(shieldBash) then CastSpellByName('Shield Bash') elseif buffed('Shield Block') == nil then CastSpellByName('Shield Block') elseif isUsable(revenge) then CastSpellByName('Revange') elseif isUsable(sunderArmor) and debuffStacks(sunderArmor) < 5 then CastSpellByName('Sunder Armor') elseif rage > 60 and buffed('Demoralizing Shout', 'target') == nil then CastSpellByName('Demoralizing Shout') elseif rage > 80 and buffed('Rend', 'target') == nil and isUsable(rend) then CastSpellByName('Rend') elseif rage > 90 and isUsable(heroicStrike) then CastSpellByName('Heroic Strike') end end end local function dps(cmd) local rage = UnitMana('player') local bloodrage = 'Ability_Racial_BloodRage' local rend = 'Ability_Gouge' local battleShout = 'Ability_Warrior_BattleShout' local heroicStrike = 'Ability_Rogue_Ambush' local overpower = 'Ability_MeleeDamage' local execute = 'INV_Sword_48' local slam = 'Ability_Warrior_DecisiveStrike_New' if UnitExists('target') and UnitCanAttack('player','target') then if (not PlayerFrame.inCombat) then AttackTarget() end if rage < 15 and isUsable(bloodrage) then CastSpellByName('Bloodrage') elseif buffed('Battle Shout') == nil and isUsable(battleShout) then CastSpellByName('Battle Shout') elseif isUsable(execute) then CastSpellByName('Execute') elseif isUsable(overpower) then CastSpellByName('Overpower') elseif isUsable(slam) then CastSpellByName('Slam') elseif buffed('Rend', 'target') == nil and isUsable(rend) then CastSpellByName('Rend') elseif isUsable(heroicStrike) then CastSpellByName('Heroic Strike') end end end function OBWT_OnLoad() SlashCmdList["OBWT"] = tank SlashCmdList["OBWF"] = dps SLASH_OBWT1 = "/obwt" SLASH_OBWF1 = "/obwf" end