diff --git a/OBWT.lua b/OBWT.lua index a39af0d..64ccd6f 100644 --- a/OBWT.lua +++ b/OBWT.lua @@ -1,33 +1,50 @@ -function OBWT_OnLoad() - this:RegisterEvent('PLAYER_ENTERING_WORLD') - this:RegisterEvent('ADDON_LOADED') - DEFAULT_CHAT_FRAME:AddMessage('One button warrior tanking. Type /obwt for usage.') - SlashCmdList['OBWT'] = function() - local msg = 'To use OBWT addon, create a macro and type /script obwt();' - DEFAULT_CHAT_FRAME:AddMessage(msg) - end; - SLASH_OBWT1 = '/obwt' +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 -function obwt() - local rage = UnitMana('player') - local bloodthirst = 'Ability_Warrior_Bloodthirst' - local revenge = 'Ability_Warrior_Revenge' - local sunderArmor = 'Ability_Warrior_SunderArmor' - local rend = 'Ability_Warrior_Rend' - local battleShout = 'Ability_Warrior_BattleShout' - local heroicStrike = 'Ability_Warrior_HeroicStrike' +local function isUsable(spellTexture) + local usable, _ = IsUsableAction(getSlot(spellTexture)) + return usable +end - TargetNearestEnemy() +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 + +SLASH_OBWT1 = "/obwt" + +SlashCmdList.OBWT = function(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 - AttackTarget() - if rage < 15 == nil and isUsable(bloodthirst) then - CastSpellByName('Bloodthirst') + 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) then + elseif isUsable(sunderArmor) and debuffStacks(sunderArmor) < 5 then CastSpellByName('Sunder Armor') elseif rage > 50 and buffed('Rend', 'target') == nil and isUsable(rend) then CastSpellByName('Rend') @@ -35,17 +52,4 @@ function obwt() CastSpellByName('Heroic Strike') end end - -local function isUsable(spellTexture) - return IsUsableAction(getSlot(spellTexture)) -end - -local function getSlot(spellTexture) - for i = 1, 120, 1 - do - if(GetActionTexture(i) ~= nil) then - if(strfind(GetActionTexture(i), spellTexture)) then return i end - end - end - return 0 -end; \ No newline at end of file +end \ No newline at end of file