93 lines
3.0 KiB
Lua
93 lines
3.0 KiB
Lua
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 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(revenge) then
|
|
CastSpellByName('Revange')
|
|
elseif isUsable(sunderArmor) and debuffStacks(sunderArmor) < 5 then
|
|
CastSpellByName('Sunder Armor')
|
|
elseif rage > 50 and buffed('Shield Block') == nil then
|
|
CastSpellByName('Shield Block')
|
|
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 |