• Visit Honorbuddy
  • Visit Rebornbuddy
  • Visit Demonbuddy
  • Visit Exilebuddy
  • Visit Hearthbuddy
  • Visit Pokefarmer
  • Visit Buddystore

FightThisWay

Discussion in 'All in One' started by Kamilche, Oct 14, 2012.

  1. Kamilche

    Kamilche New Member

    Joined:
    Oct 2, 2010
    Messages:
    551
    Likes Received:
    30
    Trophy Points:
    0
    I have developed a custom class called 'FightThisWay'. Like Singular and CLU, this is an 'all things to all people' class that handles combat, pulling, etc.

    The code is small, clean (all code in 1 file), and unlike CLU and Singular, uses text files to handle the rotations. This keeps the rotations easy to understand, so you don't have to be a rocket scientist to change it.

    All classes and specs are handled, including the latest class - Monks. A full help file containing instructions plus questions/answers is bundled with the product, and can be found here: ReadMe.html

    Here's what's great about it:

    1. Easily customizable - simply change the data file to change your play style. Like to open with Rain of Fire? No problem! Like to heal as soon at you get below 100, instead of below 70? Piece of cake. Do you want to never EVER use a certain spell? Just remove those lines.
    2. Change combat style at runtime. After making your changes and saving them, FightThisWay automatically notices the file has changed, and reload it at runtime. There's no need to stop and restart HonorBuddy, to preview changes.
    3. Access spells that aren't currently available in HonorBuddy's Spell Manager. All the missing druid and warlock spells are here, and ready to rock!
    4. Customizing it makes you play different than everyone else, so it's less obvious that you're playing with a bot.
    5. Innovative use of the scroll key to handle automatic movement and facing. When the scroll lock key is on, no movement, targeting, or facing is performed, so you can control it yourself. When the scroll lock key is off, everything's automatic. This comes in handy when you want to do dungeons with others, and want it to handle the rotation, while you handle the movement and game mechanics. With scroll lock on, you can 'steer' the bot, and make target choices yourself. If nature calls and you need a quick bio break, turn scroll lock off and let it do its thing.
    6. Works in all dungeons! For the lower level dungeons, you can pretty much ignore it and assume good stuff's happening. For the higher level trickier dungeons, there are large stretches where it can play unattended, but you will eventually need to come back to manually steer out of Mannoroth's fel flames.
    7. When in party, it automatically follows the tank when out of combat, and your current target when in combat.
    8. When in a party in combat, it automatically rezzes any dead tank or healers, if it can - Death Knight 'Raise Ally', warlock 'Soulstone', druid 'Rebirth', etc. It happens so fast you often don't notice someone went down before they've popped back up again.
    9. In party out of combat, it does the 'cheap' rez on everyone, regardless of whether they're a tank or healer - 'Revive' for druids, 'Redemption' for paladins, etc.
    10. It uses a weighting system during combat, and will stop what it's doing and go save the healer, if it must. If it's a tank and it's losing aggro, it will drop the current mob and target the mob he lost aggro on. When things get wild during combat, I just hit 'scroll lock' and let the bot handle it. My bear runs around like he's rabid, regaining aggro on the things he lost it on, far faster than I could have.
    11. It uses a weighting system to pick who to heal, as well. Some classes should never off-heal - feral druid comes to mind, because it breaks form. But for some classes, it's appropriate - tanks can occasionally toss a heal to the worst hurt player, to take the load off the healer, for instance. The worst hurt player pops to the top, with an extra 10 points given if they're a tank or healer, so they're prioritized first in healing.
    12. It can optionally pull only groups of monsters, ignoring onesie-twosies. This is great when farming for cloth, such as the trogg packs in Deepholm.

    I use this a lot when in dungeons. It takes all the 'reflex' work out of partying with others, and let's me concentrate on game mechanics, steering, and chat. However, it's also useful for leveling - when out of party, it will do it all.

    The data files end up being a 'laundry list' of how to play your class. The first action that has all the conditions met and executes successfully, wins this round - it stops there, and starts at the top of the file again.

    • Lines that start with two dashes are comments.
    • The commands are broken up into three sections - @COMBAT, @PULL, and @REST. @COMBAT contains what to do when fighting a mob. @PULL contains what to do when pulling a mob. @REST contains what to do when you're otherwise idle.
    • Every line that starts in column 1 on the left, is a command to be executed. All the lines that are indented under that, are conditions that must be true, for that command to be executed.
    • All the conditions indented under a command must be true, for the command to be executed. If the conditions aren't all true, the command will be skipped, and FightThisWay starts looking at the next command in the list.
    • If all the conditions are true, the command is executed. If the command executed successfully, FightThisWay stops there, and starts again at the top.
    • If all the conditions are true, but the command didn't execute (spell on cooldown, for instance), FightThisWay will continue looking down the list for a command to execute.
    • If there are no conditions listed, the command will be executed, but may still return false, causing FightThisWay to continue looking down the list for the next command to execute.

    Every condition starts with one of the following prefixes. If a condition doesn't start with one of these prefixes, 'Target' is assumed.
    • Me - the player
    • Tank - the tank when in party, the player when not in a party.
    • Healer - the healer when in party.
    • Target - the mob you're targeting
    • Heal - the party member most in need of healing
    • Pet - your pet
    • Revive - a dead person
    • Cleanse - a diseased person

    Here's a sample data file - the ever-popular Paladin tank, coded up as a FightThisWay text file.
    Let's go over the '@COMBAT' section of the Paladin Tank in more detail.

    1. It will heal the player ('Me'), if his health is getting too low.
    2. With Heal.Cast Flash of Light, we're casting flash of light on the player whose most in need of healing, only if their health is under 50%. This is the 'take the load off the healer' method I mentioned earlier.
    3. Next, it will remove diseases from the player, if applicable.
    4. Paladin tanks don't have a 'rebirth during combat', so that section is empty.
    5. Next comes targeting - the 'GrabAggro' line causes it to target any mobs it may be losing aggro on. This should only be used for tank classes, when scroll lock is off. For everyone else, 'FindBetterTarget' will find a new target if the current target is dead, or a pet, etc.
    6. Ranged spells that should be cast while running to the target - in this case 'Speed of Light', to increase your run speed towards the target.
    7. Movement - Me.FollowTarget causes you to move to within melee range if you're a melee class, or 20 yards if you're a ranged class.
    8. Stuns are next - disable the current target, if you're fighting a bunch of 'em.
    9. Now, come all the spells that go against target. Notice most of them say just the spellname, such as 'Judgment', instead of 'Target.Cast Judgment.' If you ever see a condition without a prefix, 'Target' is assumed.
    10. If we're fighting more than 1 mob, the target is in melee range, and I'm not running, cast 'Consecration.'
    11. Also cast 'Reckoning' if we have loose or no aggro.
    12. Perform combat buffs such as Blessing of Kings, if we don't already have it, and get the right seals up depending on the situation.
    13. Then come the interrupts, if the target is casting a spell, and that spell is interruptable.
    14. Then comes the normal damage dealers, prioritized in the order you want to see them. If one is on cooldown, it will just fall through to the next, as you'll recall.

    Code:
    --====================================================================
    @COMBAT
    --====================================================================
    
    -----------------------------------------------------------------------
    -- Healing spells 
    -----------------------------------------------------------------------
    --Divine Protection
    --	Me.Health < 70
    Flash of Light
    	Me.StackCount("Selfless Healer") >= 3
    	Me.Health < 80
    Word of Glory
    	Me.Health < 70
    	Me.StackCount("Bastion of Glory") = 1
    Eternal Flame
    	Me.Health < 70
    	Me.HasAura("Bastion of Glory") = 1
    Flash of Light
    	Me.HasAura("Supplication") = 1
    	Me.Health < 70
    Word of Glory
    	Me.Health < 60
    Guardian of Ancient Kings
    	Me.Health < 60
    Ardent Defender
    	Me.Health < 50
    Heal.Cast Flash of Light
    	Heal.Health < 50
    Me.Cast Lay on Hands
    	Me.Health < 40
    Divine Shield
    	Me.Health < 40
    
    Me.Cleanse
    	Me.IsDiseased = 1
    
    -----------------------------------------------------------------------
    -- Rebirth
    -----------------------------------------------------------------------
    
    -----------------------------------------------------------------------
    -- Targeting
    -----------------------------------------------------------------------
    Me.GrabAggro
    	Me.InParty = 1
    	Me.ScrollLock = 0
    
    Me.FindBetterTarget
    	Me.InParty = 0
    
    Me.FindBetterTarget
    	Me.InParty = 0
    
    -----------------------------------------------------------------------
    -- Ranged spells (cast while running)
    -----------------------------------------------------------------------
    Judgment
    	Target.Distance > 10
    Speed of Light
    	Target.Distance > 10
    
    -----------------------------------------------------------------------
    -- Movement
    -----------------------------------------------------------------------
    Me.FollowTarget
    
    -----------------------------------------------------------------------
    -- Stuns
    -----------------------------------------------------------------------
    Fist of Justice
    	Target.AddsCount > 1
    Rebuke
    	Target.Health > 35
    	Target.IsCasting = 1
    	Target.Interruptable = 1
    	Target.Distance < 5
    
    -----------------------------------------------------------------------
    -- AOE
    -----------------------------------------------------------------------
    Consecration
    	Target.AddsCount > 1
    	Target.Distance < 5
    	Me.IsMoving = 0
    
    
    -----------------------------------------------------------------------
    -- Combat Debuffs
    -----------------------------------------------------------------------
    Reckoning
    	Target.Aggro < 4
    
    -----------------------------------------------------------------------
    -- Combat buffs
    -----------------------------------------------------------------------
    Me.Cast Blessing of Kings
    	Me.HasAura("Legacy of the Emperor") = 0
    	Me.HasAura("Mark of the Wild") = 0
    	Me.HasAura("Blessing of Kings") = 0
    
    Me.Cast Righteous Fury
    	Me.HasAura("Righteous Fury") = 0
    
    Me.Cast Seal of Righteousness
    	Me.HasAura("Seal of Righteousness") = 0
    	Target.AddsCount > 1
    
    Me.Cast Seal of Truth
    	Me.HasAura("Seal of Truth") = 0
    	Target.AddsCount <= 1
    
    Avenging Wrath
    
    -----------------------------------------------------------------------
    -- Runners
    -----------------------------------------------------------------------
    
    -----------------------------------------------------------------------
    -- Interrupts
    -----------------------------------------------------------------------
    Rebuke
    	Target.Distance < 5
    	Target.IsCasting = 1
    	Target.Interruptable = 1
    
    -----------------------------------------------------------------------
    -- Freebies
    -----------------------------------------------------------------------
    
    -----------------------------------------------------------------------
    -- Normal attack rotation
    -----------------------------------------------------------------------
    Shield of the Righteous
    	Me.HasAura("Divine Purpose") = 1
    Crusader Strike
    	Target.AddsCount = 1
    Hammer of the Righteous
    	Target.AddsCount > 1
    Judgment
    Avenger's Shield
    	Me.HasAura("Grand Crusader") = 1
    Hammer of the Righteous
    	Target.HasAura("Weakened Blows") = 0
    Avenger's Shield
    --Shield of the Righteous
    --	Me.HolyPower >= 3
    Hammer of Wrath
    Consecration
    	Target.Distance < 5
    	Me.IsMoving = 0
    Holy Wrath
    	Target.AddsCount > 1
    
    Me.AutoAttack
    
    --====================================================================
    @PULL
    --====================================================================
    
    Avenger's Shield
    Judgment
    Exorcism
    
    Me.FollowTarget
    
    Me.AutoAttack
    
    --====================================================================
    @REST
    --====================================================================
    
    Me.Eat
    	Me.Health < 50
    --Divine Protection
    --	Me.Health < 70
    Guardian of Ancient Kings
    	Me.Health < 60
    Word of Glory
    	Me.Health < 50
    	Me.HasAura("Bastion of Glory") = 1
    Eternal Flame
    	Me.Health < 50
    	Me.HasAura("Bastion of Glory") = 1
    Ardent Defender
    	Me.Health < 30
    Me.Cast Flash of Light
    	Me.Health < 30
    Me.Cast Lay on Hands
    	Me.Health < 30
    Divine Shield
    	Me.Health < 20
    Heal.Cast Flash of Light
    	Heal.Health < 50
    
    Me.Cleanse
    	Me.IsDiseased = 1
    
    Revive.CastOnce Redemption
    	Revive.Dead = 1
    
    Me.FollowTarget
    
    Download Link:
    fightthisway - Revision 3: /trunk

    How to install it:
    FTW is available via SVN at fightthisway - Revision 5: /trunk.

    All the files go into your 'Honorbuddy/Routines' folder, into a new folder called 'FTW'.
    Now, you could download the files one by one, but that would be tedious and time-consuming.
    An easier way is to install TortoiseSVN, and checkout the latest changes using the link above.
    Don't worry, it's not as hard as it sounds! Just follow these instructions:

    • Download and install TortoiseSVN.
    • Create a folder called 'FTW' inside the 'Honorbuddy/Routines' folder.
    • Right-click the FTW folder, and choose 'SVN Checkout...' from the popup menu.
    • Enter this when it asks you for the URL, and click 'OK': fightthisway - Revision 5: /trunk
    You're done! To grab the latest version whenever there's an update, just redo step 3 above.

    After downloading the files via SVN, stop and restart HonorBuddy, if it's running.

    If you get a 'file not found' error: Be aware that some SVN packages will name the folder for you.
    If it puts the files into a folder named 'FightThisWay', rename it to 'FTW.'


    Donation Link:
    [​IMG]
     
    Last edited: Nov 3, 2012
  2. Bishop

    Bishop New Member

    Joined:
    Sep 8, 2010
    Messages:
    100
    Likes Received:
    0
    Trophy Points:
    0
    Excellent CC, I'm using it on a Warrior and it gave almost a 1 million xp/h increase.

    I'll report back if I have any issues but so far it's flawless. Well done.
     
  3. Javilionaire

    Javilionaire New Member

    Joined:
    Jun 3, 2011
    Messages:
    211
    Likes Received:
    0
    Trophy Points:
    0
    Sweet. The betas over?

    How do I disable auto-movement with this FTW? I'm using it with lazy raider and have checked "raid mode", but my characters still completely automatic.
     
    Last edited: Oct 14, 2012
  4. Qishy

    Qishy Member

    Joined:
    Jun 11, 2010
    Messages:
    125
    Likes Received:
    0
    Trophy Points:
    16
    I will be sure to give this a shot tomorrow. I'll report back.
     
  5. A1l3n

    A1l3n New Member

    Joined:
    Apr 17, 2010
    Messages:
    816
    Likes Received:
    4
    Trophy Points:
    0
    Going to try this out. If it's even half as good as you explained I will give rep and maybe some cash when I get the chance. :)
     
  6. Kamilche

    Kamilche New Member

    Joined:
    Oct 2, 2010
    Messages:
    551
    Likes Received:
    30
    Trophy Points:
    0
    Yep, I finally decided the shake-down cruise was over. Everything from here on out is rotation tweaking.

    Use the scroll lock key - ON, you need to move it. OFF, the bot moves it.
     
    Last edited: Oct 14, 2012
  7. Kamilche

    Kamilche New Member

    Joined:
    Oct 2, 2010
    Messages:
    551
    Likes Received:
    30
    Trophy Points:
    0
    Great, glad you're going to try it! Get the latest version that was posted around midnight or later on Saturday night - it has all the latest bug fixes. I've been using it for dungeoning and questing all day, and tweaked a few things.

    Code:
    Developer.Cast Donate A Drink
        Me.LoadedWithCash = 1
        Me.LovesTheProduct = 1
    
    Developer.Cast Like
        Me.LoadedWithCash = 0
        Me.LovesTheProduct = 1
    
    
     
    Last edited: Oct 14, 2012
    wabu likes this.
  8. Kamilche

    Kamilche New Member

    Joined:
    Oct 2, 2010
    Messages:
    551
    Likes Received:
    30
    Trophy Points:
    0
    Thanks, I appreciate it! If you're into squeezing every last drop of DPS out of it, take a look at that latest feature 'cliptime' - setting it higher will clip your spells harder. But if you start getting red 'Interrupted' text, bump it back down again.
     
  9. GraveWalker

    GraveWalker New Member

    Joined:
    Mar 7, 2010
    Messages:
    222
    Likes Received:
    0
    Trophy Points:
    0
    I tryed your CC this morning and I am having a few issues with it. Mainly it makes my frame rates go to very low numbers like 4 and 5. So i lag tremendusly. Attached a log file hope this helps.
     
    Last edited: Oct 17, 2012
  10. Cukie

    Cukie Active Member

    Joined:
    Dec 3, 2011
    Messages:
    1,257
    Likes Received:
    3
    Trophy Points:
    38
    Any chance you could incorporate Life Spirit into this please? Would make my farm toon 10000% more efficient!
     
  11. Soeski

    Soeski Member

    Joined:
    Jan 15, 2010
    Messages:
    971
    Likes Received:
    2
    Trophy Points:
    18
    Hey, great initiative so far! Testing right now with a Shadow Priest (85). It runs fine, except for some spells:

    - Mind Flay is only channeled for 1.5-2 sec. max in stead of 3. Then MF is cast again for 1.5-2 sec. I noticed MF is in your "overrides" text file, but when I comment it out, nothing changes. I assume MF is stopped at 0 secs remaining, while actually it still has 1.

    I've been trying to get it to cast SW:p myself in the files, but how can I get it to channel MF for 3 secs (the full duration)?

    /edit: OK, I built in Vampiric Touch and SW:p in stead of SW:Insanity. Working great so far! Went from 10K DPS to 13.6K DPS on a 85 Dummy @ ilvl 380. I noticed just now you have those spells in, but only once in the Debuff section. If a mob or boss lives longer than that, it won't recast them. So I changed that.

    Only question remains: How can I adjust the channeling time of Mind Flay? The timer cuts off at 0 secs on my screen, but you still have 1 sec remaining by then.
     
    Last edited: Oct 14, 2012
  12. A1l3n

    A1l3n New Member

    Joined:
    Apr 17, 2010
    Messages:
    816
    Likes Received:
    4
    Trophy Points:
    0
    Awesome stuff man. The only complaint's I have sofar is the random lags when doing nothing and no pvp stuff yet :p. But it's very innovative in the way it's made and used and the fact that you can basically make your own CC with it is so impressive. Just an Idea for the time ahead. You could make this have it's own compiler/editor when you hit the CC button in HB. And have list of all the commands built into it to make it even more user friendly.

    TLDR: Awesome Stuff +rep
     
  13. Soeski

    Soeski Member

    Joined:
    Jan 15, 2010
    Messages:
    971
    Likes Received:
    2
    Trophy Points:
    18
    Also, it's very enthusiastic about aggroing mobs on "auto mode". Even pulls mobs not in combat with, at 20-30 yards or more away. Is this adjustable?
     
  14. jokersmocker99

    jokersmocker99 Member

    Joined:
    Jan 13, 2012
    Messages:
    614
    Likes Received:
    1
    Trophy Points:
    18
    This works awesome, but theres 1 thing its missing for rogues, it only applies poison to main-hand but offhand doesnt have poison on :(, that slows killing by a little bit =/

    also, it mounts up, moves like 20 yards then dismounts after that it mounts again, moves 20 yards, dismounts keep doing this forever o_O or until selects some random mob....
     
    Last edited: Oct 14, 2012
  15. Ruinit

    Ruinit Member

    Joined:
    Nov 1, 2010
    Messages:
    992
    Likes Received:
    4
    Trophy Points:
    18
    nice job on this ty :) Please make a svn for it :)
     
  16. Kamilche

    Kamilche New Member

    Joined:
    Oct 2, 2010
    Messages:
    551
    Likes Received:
    30
    Trophy Points:
    0
    Try turning off LazyRaider altogether, or turning frame locks with it. I hear FTW has issues with that plugin.
     
  17. Kamilche

    Kamilche New Member

    Joined:
    Oct 2, 2010
    Messages:
    551
    Likes Received:
    30
    Trophy Points:
    0
    Interesting. None of my toons are over 86 yet, so I haven't encountered this item before. Will be sure to do so as soon as I get there, and can test it out!

    Until then - add this line to the 'healing' section, around the 'Lifeblood' area:

    Code:
    Me.Use Life Spirit
    	Me.Health < 90
    
    Where 90 is whatever level you want to use Life Spirit at. Be sure to use a tab on the second line, not spaces!
     
  18. wilbo007

    wilbo007 Member

    Joined:
    Dec 20, 2011
    Messages:
    652
    Likes Received:
    5
    Trophy Points:
    18
    BM hunter doesn't cast arcane shot, at all? Very low framerates also
     
  19. skynetwork

    skynetwork Member

    Joined:
    Jan 25, 2012
    Messages:
    232
    Likes Received:
    2
    Trophy Points:
    18
    the german bot tries to look for german .txt data, e.g. Hunter_Tierherrschaft.... but there are only englishnamed .txts there, so you have to manually rename them :D

    one very useful thing i edited and wanted to share it for all you huntrs out there:

    in the .txt at the point "stun and run away" add the last line with "disengage"

    Code:
    -- Stun and run away
    -----------------------------------------------------------------------
    Ice Trap
    	Me.AddsCount > 1
    Ice Trap
    	Target.Distance < 10
    Freezing Trap
    	Me.AddsCount > 1
    Disengage
    	Target.Distance < 3
    this wil make you disengange once there are too many adds coming up to you :D
     
    Last edited: Oct 14, 2012
  20. Kamilche

    Kamilche New Member

    Joined:
    Oct 2, 2010
    Messages:
    551
    Likes Received:
    30
    Trophy Points:
    0
    OK, I've made modifications based on your feedback, and uploaded it to the site. Download link available on the first page.

    Changes include:

    Code:
    10/14/2012 - Release to Public
    	Made channeled spells not get clipped off.
    	Fixed targeting problem where it wouldn't consider a training dummy as a target to be dotted.
    	Stopped pulling more mobs when going off to repair or sell.
    	Added bandages for classes without self heals.
    	Class Enhancements:
    		Shadow Priest - Now pulls 3 mobs at a time when not in group.
    		Hunter (all) - Added disengage
    
     

Share This Page