This routine is updating that of JoeBrewski, a BIG THANK YOU to him for his tremendous work and involvement to make it really valuable to BuddyWing! I just hope he wants me not to have wanted to continue his work as best I can, anyway.
So here's a Fight at Joe's version 2.
I took the same instructions as for Joe not to lead everyone astray ...
The update is available only on the first page of this topic.
Installation
1.Go through your BuddyWing folder, and delete anything under CompiledAssemblies.
2.Ditto, anything under any Routines folder in bin or obj folders.
3.Unzip "Combat" into the Routines folder so it looks something like Drive:\BuddyWing\Routines\Combat. It is STRONGLY recommended you keep only ONE CC in the Routines folder, and save-off/move any others you're not using at the moment.
4.GET RID of any plug-ins - from my experience they only cause problems.
What it DOES
Combat Routines for All Classes/Specs and (Group) Heals where applicable (I'm not claiming any of these are perfect - if you're familiar with writing a routine and using Joes/Combat - and have a better combat routine than what's in there, send it across to me and I'll incorporate it.).
Reliably (Within Reason) fights and heals in combat, in instances. When you enter an instance/Ops/Flashpoint, you will need to restart the bot/executable, and also run the CombatBot.xml profile.
In Combat (Op/FP), acquires the Group Target when In-Group (for Ranged Specs), or the Nearest Target (for Melee Specs, if movement disabled) - configurable per the Weakest Target key described below.
Harvests corpses on droids and creatures, where you have the skills.
Runs random grinding, killing/looting/harvesting any nearby mobs it finds per the DoRandomGrind setting..
Runs Garbage Collection internally in order to try and prevent hangs.
Provides an XP/Hour message every two minutes, along with an ETA-To-Level time.
Provides a rough DPS value after each encounter.
Provides customizable Affinity and Priority settings for both the Bot and the game.
Provides customizable Hotkeys for: Pausing the Bot, Setting Target-Weakest (if In-Group and Ranged), Toggling Tank- (Guard-) Targeting if tanking, Toggling Combat, Toggling Movement, Aborting on Hang
Uses the appropriate Class Stim if you have them on-hand (thanks to Cryogenesis on this request)
Uses XP Boosters in inventory if UseXPBoosters is set.(thanks to Cryogenesis on this request)
Uses a Mount per the key set, described below.(thanks to Cryogenesis on this request)
Uses Rocket Boost per the key set, described below.(thanks to Cryogenesis on this request)
Resurrects you using the Medical Probe if you die (and not in-group, and Rez enabled, described below) (thanks to Rostol on this skill)
Uses Reputation Boosters periodically in inventory if present (thanks to Cryogenesis on this request)
Resurrects your Companion if dead, and resummons them if not present, when not In-Group.
Summons and uses a Field Repair Droid if the Legacy Ability has been acquired (recommended if you get it, Max-It-Out).
What it does NOT do
PvP - you can try it - on your own. I've gotten it to work - just a pain restarting the bot in every warzone, and I had to highly customize the combat routines. Note that this CC is geared for fighting NPCs (as-queried, and per-rotation). For an example of coding for PvP, scan for 'BGCombatPvP' within MercHelpers.cs. Two main considerations for coding PvP: (1) OOC will need to constantly monitor for a valid target and enter combat if one has been acquired, and (2) The actual combat routine itself needs to override the Attackers() list etc, as the default Attackers() list is set up w/TorNpc's.
Provide an absolute guarantee of stability - BuddyWing is well beyond any other SWTOR bots I've seen, but nothing is ever perfect, and problems occur.
General Notes for Usage in Ops/FPs/Etc
Run CombatBot.xml - otherwise the bot will be trying to run off to run a quest, and more-than-likely won't even fight as it's all confused with questing directives inside of an INSTANCE.
Recommended you do your own movement and disable bot-controlled-movement via the Delete Key (toggle) after you start the bot and the CC has been loaded - issues with meshing in most instances. So far as targeting, if you're Melee and have movement disabled, the CLOSEST mob is targeted, so move accordingly. Movement inside of Ops/FPs, sketchy at best, which is why I recommend you DISABLE IT.
Recommended you load and run the bot once the instance is 30%-or-so-loaded (basic hooking etc can be done at that point).
If you're running with movement disabled and using a class that has abilities that (a) MOVE YOU (Force Leap,etc), or (b) PUT YOU IN COVER (Crouch, Take Cover, etc) you will need to do those abilities ON YOUR OWN. Cover stops movement, and obviously Force Leap, etc, moves you.
IF YOU'RE RUNNING A TANK, STRONGLY SUGGESTED you set AutoTarget to false. Auto-Targeting will STILL occur with a tank, but ONLY to hit mobs attacking other group members in HandleGuarding(). As a tank, YOU will need to do the initial pull. You'll also need to perform the initial Guard. And for tanking, this is geared for FPs, NOT Ops. In Ops (TFB etc) you may- or may-not of course be the Main Tank, stack/taunt-handling varies depending on the group and boss, and this is NOT CODED for all that. FPs, and FPs, ONLY.
Customization
Edit the file drive:\BuddyWing\Routines\Combat\Helpers\MercHelpers.cs - If you don't have C# Express or C# installed, you can simply edit it in Notepad or Wordpad, and then rerun the bot. When saving (outside of C#), be sure the file is in UNICODE character-format (as text).
Customizable Variables (These are found at the top of MercHelpers.cs)
DoRandomGrind - Default - false - Set to true to just run around and kill shit. With this, you'll need to park it in a 'Mob-Rich' area first, so it will have plenty to kill.
MedProbeMaxWait - Default - 30 - Maximum amount of time in Seconds to wait for the Med Probe Rez to become available after death. After this, a Medcenter Rez will be used.
EnableMount - Default - false - Set to true if you wish to use a mount.
EnableRocketboost - Default - false - Set to true if you wish to use the Legacy Ability, Rocket Boost.
chMount - Default - 'NumPad 1' - Set this to the upper-case-equivalent for what you have aliased in SWTOR. an 'x' in SWTOR, translates to 'X' in MercHelpers.cs, for example.
chRocketBoost - Default - 'NumPad 2' - Rocket Boost, same setup as with Mount.
BotDefaultPriority - Default ProcessPriorityClass.BelowNormal - adjust this if you know what you're doing here - otherwise leave it alone.
SWTORDefaultPriority - Default ProcessPriorityClass.AboveNormal - adjust this if you know what you're doing here - otherwise leave it alone.
ProcessSetAffin - Default - false - Ditto re: Priority. I STRONGLY suggested you to set it to true for grinding.
ProcessSetPriority - Default - false - Ditto re: Priority.
MountCheckFreq - Default - 15 - if a mount has been enabled via EnableMount, this is the frequency in seconds for a mount attempt, out-of-combat.
AutoTarget - Default - true - Auto-Target. ONLY set this to false when you're running CombatBot and running all your targeting MANUALLY, or tanking in FPs. Defaults to true when DoRandomGrind is set to true.
AutoTargetExplicit - true - Explicitly target the Auto-Target On-Screen. Defaults to false if AutoTarget is false.
AutoTargetTank - true - As part of targeting will first run Guard-Targeting (target mobs attacking other members of the group, and THEN attack using the standard methods).
AutoTargetLOSOnly - Mainly for out-of-group: ONLY Auto-Target mobs meeting the rest of the standard criteria (Hostile, in PullRange, etc) and ALSO in Line-Of-Sight.
MaxNodesBetweenFights - Default - 2 - Used with DoRandomGrind - Maximum number of nodes to hit between fights if you have Scav/Bio/Etc.
ScanForLoot - Default - true - Run scan for Loot - Mainly for use with DoRandomGrind.
ScanForNodes - Default - true - Run scan for harvestable nodes - Mainly for use with DoRandomGrind.
ScanForChests - Default - true - Include chests in the placeables scan - set to false if meshing issues.
DRGMinToughness - Combattoughness.Standard - Minimum mob Toughness to consider within DoRandomGrind.
PullIG - Default - false - Pull-In-Group - Only set to true if you're running a tank within a group/instance/etc.
HarvestCorpses - Default - true - Harvest corpses with Scav/Bio if possible.
MovementToggleHotKey - Default - Keys.Delete - Key to toggle movement - mainly used In-Group, in instances, to disable bot-controlled-movement.
TargetingToggle - Keys.Add (+) - See notes below.
PauseToggle - Keys.Subtract (-) - Pause the bot.
CombatToggle - Keys.Home - Toggle Combat - To allow/disallow combat - mainly for use in groups.
RehookFreq - Default - 60 - Frequency - in seconds - to do an 'internal restart' on the bot. This is basically something to try and clean things up if the bot has gone haywire/unresponsive.
ReportDurs - Default - false - report durations of various components in the log as the bot is run. Helps with debugging and performance issues (scanning for loot/nodes/etc)
DisableAutoRez - Default - false - Disable (so effectively sit-and-wait) when death is detected (i.e. you're running quests etc manually, with CombatBot.xml, and out-of-group)
UseVendor - Default - true - Use Vendor on rez at medcenter
EnableGC - Default - true - Run periodic GC to try and avoid 'Haywire Moments'
ProtectCompWhenWeak - false - Attack mobs attacking your comp when weak (<=70% Comp Health and CHP<HP). I added this to avoid the 'combat chicken dance' when running a Melee Class/Spec - so STRONGLY suggested you leave this at false. If your comp is constantly running low on health, I suggest your regear them or use a different comp.
Special Keys (Discussed in -Customizing It- Above)
MovementToggleHotKey - Default - Keys.Delete - Key to toggle movement - mainly used In-Group, in instances, to disable bot-controlled-movement.
TargetingToggle - Keys.Add (+) - If you're a tank, toggles Guard and Weakest, both (so if false, you're manually targeting). If not In-Group, toggles Auto-Target. If In-Group, toggles TargetWeakest.
PauseToggle - Keys.Subtract (-) - Pause the bot.
If Movement has been disabled, then of course so will Group Tag-Along.
CombatToggleHotKey - Keys.Home - Toggle Combat..
ForceAbortHotKey - Keys.NumPad0 - Force Bot Main Thread ABORT (if hung)
The list below are all the classes that are currently supported:
Tested and WORKING!
Need TESTING!
Coded by Joe and currently not TESTED but SHOULD work!
Imperial Classes:
Inquisitor
Advance Class: Sith Sorcerer
1.Corruption
2.Lightning
3.Madness
Advance Class: Sith Assassin
1.Darkness
2.Deception
3.Madness
Warrior
Advance Class: Juggernaut
1.Immortal
2.Vengeance
3.Rage
Advance Class: Marauder
1.Annihilation
2.Carnage
3.Fury
Agent
Advance Class: Operative
1. Medicine
2.Concealment
3. Lethality
Advance Class: Sniper
1. Marksmanship
2.Engineering
3.Lethality
Bounty Hunter
Advance Class: Mercenary
1.Bodyguard
2.Arsenal
3.Pyrotech
Advance Class: Powertech
1.Shield Tech
2.Advanced Prototype
3.Pyrotech
Republic Classes:
Consular
Advance Class: Sage
1.Seer
2.Telekinetics
3.Balance
Advance Class: Shadow
1.Kinetic Combat
2.Infiltration
3.Serenity
Knight
Advance Class: Guardian
1.Defense
2.Vigilance
3.Focus
Advance Class: Sentinel
1.Watchman
2.Combat
3.Concentration
Smuggler
Advance Class: Scoundrel
1.Sawbones
2.Scrapper
3.Dirty Fighting
Advance Class: Gunslinger
1.Sharpshooter
2.Saboteur
3.Dirty Fighting
Trooper
Advance Class: Commando
1.Combat Medic
2.Gunnery
3.Assault Specialist
Advance Class: Vanguard
1.Shield Specialist
2.Tactics
3.Assault Specialist
Changlelog (since the last Fight at Joe's up to date):
Update for 3.0.
Cleaning of logs to make it appear that only the launches of ongoing spells.
Update all Marauder specialization
Update all Sentinel specialization
Some other stuff I can not remember

16/10/2015 Update all Shadow specialization
Credits & Special Thanks
1. Aevitas
2. Apoc
3. JoeBrewski
4. Walter and Crew
5. ChinaJade
6. xMasterPandax
7. MAB
Downloads: View attachment Combat.zip
Last edited: