Arms Warrior - MMOCrawlerbots | WoW Bot Forum
Important: Please register to use the 20 minutes trial version or buy the bot!
Bot ready for World of Warcraft 5.4 Build 17399

UpdateLauncher DOWNLOAD

Wow Bot: CrawlerBot Last version: click here State: EU: working US: working

  • Arms Warrior 5 3
Currently:  

Author Topic: Arms Warrior  (Read 3428 times)

November 15, 2012, 00:13:37 AM

Laany Offline

  • *
  • Posts: 41
  • Reputation: 18
    • View Profile
Made a CustomClass for Arms Warrior.

It supports

v0.01
* Enraged Regeneration and Impending Victory talents
* Bladestorm, Shockwave and Dragon Roar talents
* Execute targets below 20%
* Interrupts spellcasting mobs
* Buffs Battle Shout
* Uses Berserker Rage when available
* Uses Colossus Smash when available.
* Uses Heroic Strike if Taste For Blood has proced and you got over 30 Rage
* Uses Die By The Sword at configurable Health %
* Uses Enraged Regeneration at configurable Health %
* Uses Disarm at configurable Health %

v0.2
* Now Rage dumps at configurable Rage amout using Slam

v0.3
* Possible to turn on/off AoE abilities (turned on/off at row 12 by setting value to true/false)
* Added Sweeping Strikes as ability, it's cast if there is more then 1 attacker and Rage is greater then 30 (also affected by the AoE ability check mentioned above)

v0.4
* Updated so that pulling is done with Charge instead of Victory Rush
* Added support for Avatar, Bloodbath and Storm Bolt

Simple setup, just edit the Warrior.lua file rows 4-12.
Set variables to true/false if you wanna use them
Set variables to the Health % you want them to be used at (requres that you set the variable to true)
Set variables to when you wanna Rage dump with Slam (30 is a minium requirement since that's what Slam costs)

TODO

Get Impending Victory fully (still some issues with the spellID it seems)

Leave feedback in the thread.

Code: [Select]
function Settings()
FightDist = 5;
PullDist = 25;
UseDieByTheSword = true; -- true or false value
DieByTheSwordPercent = 40; -- numeric value between 0 and 100
UseDisarm = true; -- true or false value
DisarmPercent = 30; -- numeric value between 0 and 100
UseEnragedRegeneration = true; -- true or false value
EnragedRegenerationPercent = 25; -- numeric value between 0 and 100
UseExecute = true; -- true or false value
RageDumpPercent = 60; -- numeric value between 30 (min required for Slam) and 100
UseAoE = true -- true or false value
end

function PullMob(Target)

-- Start auto attack
StartAutoAttack();

-- Check if Charge is ready if so use it
if IsSpellKnown(100) and IsSpellReady(100) then
_Log("Pulling - Cast Charge");
CastSpellByID(100,Target,false);
NextAction();
end

end

function NextAction()
if true then return end
end

function GetPower()

LuaDoString("rage = UnitPower('player');");
rage = tonumber(WowGetLuaValue("rage"));
return rage;

end

function GetSpellInterrupt()

LuaDoString("GSSpell, _, _, _, _, _, _, _, _ = UnitCastingInfo('target');");
GSSpell = tostring(WowGetLuaValue("GSSpell"));
return GSSpell;

end

function GetChannelInterrupt()

LuaDoString("GCSpell, _, _, _, _, _, _, _ = UnitChannelInfo('target');");
GCSpell = tostring(WowGetLuaValue("GCSpell"));
return GCSpell;

end

function trim(s)
return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end

function Fight()

-- Get current attacker
Target = GetAttacker(1);

NumTargets = GetAttackerCount();

-- Debug checking for rage
-- _Log("My RAGE = " .. GetPower());

-- Start Auto attack
StartAutoAttack();

-- Check if we got more then two attackers and Rage is greater then 30 if so cast Sweeping Strikes
if IsSpellKnown(12328) and IsSpellReady(12328) and NumTargets >= 2 and GetPower() >= 30 and UseAoE then
_Log("Cast Sweeping Strikes");
CastSpellByID(12328,Target,false);
NextAction();
end

-- Check if Victory Rush is ready if so use it
if IsSpellKnown(34428) and IsSpellReady(34428) then
_Log("Cast Victory Rush");
CastSpellByID(34428,Target);
NextAction();
end

-- Check if you are below DieByTheSwordPercent if so use Die By The Sword
if PlayerHpPercent() < DieByTheSwordPercent and UseDieByTheSword and IsSpellKnown(118038) and IsSpellReady(118038) then
_Log("Below " .. DieByTheSwordPercent .. "% - Casting Die By The Sword");
CastSpellByID(118038,0);
NextAction();
end

-- Check if you are below EnragedRegenerationPercent if so use Enraged Regeneration
if PlayerHpPercent() < EnragedRegenerationPercent and UseEnragedRegeneration and IsSpellKnown(55694) and IsSpellReady(55694) then
_Log("Below " .. EnragedRegenerationPercent .. "% - Enraged Regeneration");
CastSpellByID(556948,0);
NextAction();
end

-- Check if you are below DisarmPercent if so use Disarm
if PlayerHpPercent() < DisarmPercent and UseDisarm and IsSpellKnown(55694) and IsSpellReady(55694) then
_Log("Below " .. DisarmPercent .. "% - Disarm");
CastSpellByID(676,Target);
NextAction();
end

-- Check if Battle Shout is ready if so use it
if IsSpellKnown(6673) and IsSpellReady(6673) then
_Log("Casting Battle Shout");
CastSpellByID(6673,0);
NextAction();
end

-- Check if Berserker Rage if ready if so use it
if IsSpellKnown(18499) and IsSpellReady(18499) then
_Log("Cast Berserker Rage");
CastSpellByID(18499,0,false);
NextAction();
end

-- Check if Avatar is available and ready if so use it
if IsSpellKnown(107574) and IsSpellReady(107574) then
_Log("Cast Avatar");
CastSpellByID(107574,0,false);
NextAction();
end

-- Check if Bloodbath is available and ready if so use it
if IsSpellKnown(12292) and IsSpellReady(12292) then
_Log("Cast Bloodbath");
CastSpellByID(12292,0,false);
NextAction();
end

-- Check if Storm Bolt is available and ready if so use it
if IsSpellKnown(107570) and IsSpellReady(107570) then
_Log("Cast Storm Bolt");
CastSpellByID(107570,Target);
NextAction();
end

-- Check if target is casting a interruptable spell if so cast Pummel
GSSpell, GCSpell = GetSpellInterrupt(), GetChannelInterrupt();
if IsSpellKnown(6552) and IsSpellReady(6552) and (trim(GSSpell) ~= "" or trim(GCSpell) ~= "") then
if trim(GSSpell) ~= "" then
_Log("Cast Pummel - Interrupting " .. trim(GSSpell));
else
_Log("Cast Pummel - Interrupting " .. trim(GCSpell));
end
CastSpellByID(6552,Target,false);
NextAction();
end

-- Check if Execute is ready if so use it
if IsSpellKnown(5308) and IsSpellReady(5308) and UseExecute and math.floor(GetUnitHpPro(Target)) < 20 and GetPower() >= 30 then
_Log("Cast Execute");
CastSpellByID(5308,Target);
NextAction();
end

-- Check if Dragon Roar is ready if so use it
if IsSpellKnown(118000) and IsSpellReady(118000) and UseAoE then
_Log("Cast Dragon Roar");
CastSpellByID(118000,Target);
NextAction();
end

-- Check if Shockwave is ready if so use it
if IsSpellKnown(46968) and IsSpellReady(46968) and UseAoE then
_Log("Cast Shockwave");
CastSpellByID(46968,Target);
NextAction();
end

-- Check if Bladestorm is ready if so use it
if IsSpellKnown(46924) and IsSpellReady(46924) and UseAoE then
_Log("Cast Bladestorm");
CastSpellByID(46924,Target);
NextAction();
end

-- Check if Mortal Strike is ready if so use it
if IsSpellKnown(12294) and IsSpellReady(12294) then
_Log("Cast Mortal Strike");
CastSpellByID(12294 , Target , true);
NextAction();
end

-- Check if we are over RageDumpPercent if so dump Rage casting Slam
if GetPower() >= RageDumpPercent and GetPower() >= 30 and IsSpellKnown(1464) and IsSpellReady(1464) then
_Log("Cast Slam (Rage dump) ");
CastSpellByID(1464,Target);
NextAction();
end

-- Check if Colossus Smash is ready if so use it
if IsSpellKnown(86346) and IsSpellReady(86346) then
_Log("Cast Colossus Smash");
CastSpellByID(86346,Target);
NextAction();
end

-- Check if Overpower is ready if so use it
if IsSpellKnown(7384) and IsSpellReady(7384) then
_Log("Cast Overpower");
CastSpellByID(7384,Target);
NextAction();
end

-- Check if Taste For Blood has proced and we got 30 or more Rage, if so cast Heroic Strike
if HasBuff(56638,0) and GetPower() >= 30 and IsSpellKnown(78) and IsSpellReady(78) then
_Log("Cast Heroic Strike");
CastSpellByID(78,Target);
NextAction();
end

end


Also be sure to check out my Retribution Paladin CustomClass here
« Last Edit: November 26, 2012, 22:49:33 PM by Laany »

November 15, 2012, 10:18:02 AM
Reply #1

bruce1911 Offline

  • *
  • Posts: 3
  • Reputation: 0
    • View Profile
Interupt doesn't work but it looks like everything else is alright.

Would like to get a string for slam at above 60 rage or heroic strike without tfb up... rage cap slows the whole thing down.

November 15, 2012, 17:32:47 PM
Reply #2

Laany Offline

  • *
  • Posts: 41
  • Reputation: 18
    • View Profile
Interupt doesn't work but it looks like everything else is alright.

Would like to get a string for slam at above 60 rage or heroic strike without tfb up... rage cap slows the whole thing down.

Updated the orginal post with a new file, now dumps Rage with Slam if Rage is above a configurable variable at row 11, set to 60 as standard.

The interrupt works for me here in Jade Forest against the tigers that Channel a spell at you, haven't been able to try it against a regular spell since the WoW API for Channeling and Spells are different, will have a look at it as a progresses to another area where there might be some mobs that casts spells.

Hope you enjoyed the CustomClass otherwise.

November 15, 2012, 21:52:10 PM
Reply #3

bruce1911 Offline

  • *
  • Posts: 3
  • Reputation: 0
    • View Profile
Yeah, the interupt isn't working in Townlong so I dunno.

Thanks a ton for the update!

Slam works beautifully now. I'm going to play with rage variable later on and see if I can find a sweet spot but I think 60 is pretty well done for a standard.

EDIT: I don't know if you changed anything with pummel yet but it seems to be working now.
« Last Edit: November 15, 2012, 22:58:58 PM by bruce1911 »

November 16, 2012, 08:10:48 AM
Reply #4

Laany Offline

  • *
  • Posts: 41
  • Reputation: 18
    • View Profile
Yeah, the interupt isn't working in Townlong so I dunno.

Thanks a ton for the update!

Slam works beautifully now. I'm going to play with rage variable later on and see if I can find a sweet spot but I think 60 is pretty well done for a standard.

EDIT: I don't know if you changed anything with pummel yet but it seems to be working now.

No the only thing i changed was a spelling error in the logging, didn't display what spell was interrupter properly, but im glad it worked, bare in mind that not all spells are actually interruptable...

Glad you like it otherwise and lemme know if you find any sweet spot for the rage dumping and i'll updated the original script with those values.

November 18, 2012, 12:19:22 PM
Reply #5

bruce1911 Offline

  • *
  • Posts: 3
  • Reputation: 0
    • View Profile
I ended up getting distracted and not messing with the slam values.

However, I did set up my thing for grinding in vale of eternal blossoms (currently 90, farming black prince rep)  and it works perfectly the way it is. Though, you have to remove shockwave and dragons roar for it to be effective in this particular area so you don't pull too much and die.
« Last Edit: November 18, 2012, 12:23:07 PM by bruce1911 »

November 19, 2012, 03:20:59 AM
Reply #6

quinntree Offline

  • *
  • Posts: 120
  • Reputation: 17
    • View Profile
This is some nice work here +rep
Takes many hours of debugging to create good Custom Classes. If you like what I've created, Please Rate/Rep :-)

November 19, 2012, 10:52:44 AM
Reply #7

Laany Offline

  • *
  • Posts: 41
  • Reputation: 18
    • View Profile
I ended up getting distracted and not messing with the slam values.

However, I did set up my thing for grinding in vale of eternal blossoms (currently 90, farming black prince rep)  and it works perfectly the way it is. Though, you have to remove shockwave and dragons roar for it to be effective in this particular area so you don't pull too much and die.

Thanks for the input, i will add a "UseAoE" variable when i get home that you can set to true/false to disable usage of abilities that cause AoE damage, that should solve problems for people that wanna use it for other then level grinding, or what do you all think?

November 19, 2012, 16:58:41 PM
Reply #8

m4rzbar Offline

  • *
  • Posts: 6
  • Reputation: 2
    • View Profile

Thanks for the input, i will add a "UseAoE" variable when i get home that you can set to true/false to disable usage of abilities that cause AoE damage, that should solve problems for people that wanna use it for other then level grinding, or what do you all think?

Sounds good to me!

November 20, 2012, 08:03:30 AM
Reply #9

Laany Offline

  • *
  • Posts: 41
  • Reputation: 18
    • View Profile
Added a new version with support for turning on/off AoE abilities.

Also added support for Sweeping Strikes when there are two or more enemies.

November 20, 2012, 17:19:06 PM
Reply #10

m4rzbar Offline

  • *
  • Posts: 6
  • Reputation: 2
    • View Profile
Now all your need is charge and it'd be perfect! +rep btw
edit:
Code: [Select]
-- Charge
if IsSpellKnown(100) and IsSpellReady(100) then
_Log("Pulling - Cast Charge");
CastSpellByID(100,Target);
NextAction();
end

during pull and changing pull dist. works for me!
edit2: i think this only works since today due to the fix on the pulldistance^^
« Last Edit: November 20, 2012, 17:40:51 PM by m4rzbar »

November 20, 2012, 22:48:35 PM
Reply #11

Laany Offline

  • *
  • Posts: 41
  • Reputation: 18
    • View Profile
Now all your need is charge and it'd be perfect! +rep btw
edit:
Code: [Select]
-- Charge
if IsSpellKnown(100) and IsSpellReady(100) then
_Log("Pulling - Cast Charge");
CastSpellByID(100,Target);
NextAction();
end

during pull and changing pull dist. works for me!
edit2: i think this only works since today due to the fix on the pulldistance^^

Yepp that's what i've been waiting for, gonna update tomorrow need to get some sleep now :p

November 25, 2012, 12:03:20 PM
Reply #12

fandom Offline

  • *
  • Posts: 46
  • Reputation: 4
    • View Profile
any way to youse a 90er talent ?

November 26, 2012, 10:22:51 AM
Reply #13

Laany Offline

  • *
  • Posts: 41
  • Reputation: 18
    • View Profile
any way to youse a 90er talent ?

Added support for Avatar, Bloodbath and Storm Bolt in v0.4 it also features Charge as pulling mechanism, sorry for the late update been swamped at work and also working on a Retribution Paladin CustomClass so keep your eyes open in that Class Forum the upcoming days if you are playing Paladin ;)

November 26, 2012, 12:01:25 PM
Reply #14

fandom Offline

  • *
  • Posts: 46
  • Reputation: 4
    • View Profile
playing yeah not with bot :>

but sounds nice for warrier =)


if someone need to :

Code: [Select]

 if PlayerHpPercent() < 25 and IsSpellKnown(121279) and IsSpellReady(121279) then
        _Log("Lebensblut");
         CastSpellByID(121279, Me, false);
         NextAction();
        end

        if PlayerHpPercent() < 75  then
        _Log("Lebensgeist");
        LuaDoString("if GetItemCount(89640) > 1 and GetItemCooldown(89640) < 1 then UseItemByName('Lebensgeist', 'player') end")
        NextAction();
        end

« Last Edit: November 26, 2012, 12:06:05 PM by fandom »

 

* Recent Topics

* Useful Stuff