ISXBJ Using BJ Movement Walkthrough

Print

Updated 2015/05/05

What current expansion content has been coded? Terrors of Thalumbra

Description:

BJ Movement is primarily additional/supplemental combat coding to the Grind/Raid options in OgreBot.  It is designed to make fighting scripted content easier to manage.  It also has additional conveniences for making characters immune to certain damage types and interrupting NPC spells.  An active subscription to OgreBot is required for this coding to function.

Pre-Requisites

  1. ISXEQ2 must be loaded on each Innerspace session you want to bot on.
  2. ISXOgre must be loaded on each Innerspace session you want to bot on.
  3. ISXBJ must be loaded on each Innerspace session you want to bot on.  For instructions on how to load ISXBJ, authenticate and patch to the current version see the ISXBJ Installation Walkthrough - Authentication and Patching 

Getting Started 

There are three ways that we can load BJ Movement. Choose ONE that you prefer:

Manually typing the command into the in-game Innerspace console.

Single Session

All Sessions

Creating an Ogre MCP button.
Having OgreBot load it automatically by clicking the Load Button on the left hand side in OgreBot.

 


Preparing Your OgreBot Settings

Most encounter specific coding WILL change your OgreBot settings.  This is something that is required for me to be able to ensure that your characters do exactly what I need them to do for the specific encounter.  IT IS VERY IMPORTANT THAT YOU DO NOT SAVE YOUR OgreBot Profile WITHOUT FIRST RELOADING IT.  THIS WILL PREVENT YOU FROM SAVING LESS THAN IDEAL SETTINGS.  Starting with Patch # 107, new encounters will make use of a Common Setup and Common Shutdown routine to configure your settings.  

Common Setup Options:

Commone Shutdown Options:


Group Roles

Introduced with Patch # 88, group roles are a flexible way for me to code encounters and have you set which character will take on which role.  Below is a chart of the default roles: 

Traditional/Old Role New Role
fighters - all fighters GroupRole1
priest 1 - druids/clerics GroupRole2
priest 2 - shaman/channelers GroupRole3
enchanters - both GroupRole4
dps - both caster and melee dps classes GroupRole5
bards - both GroupRole6

Added to the UI of OgreBot with Kannkor's permission (All feedback/bugs related to this page must be reported to me and not Kannkor!  Don't bug him about it.) is a page where you will be able to set that character's group role.  This will allow you to customize your group makeup a bit more and allow those of you who run non-conventional groups to still take advantage of the encounter scripting I provide.  Example: Berserker, Warden, Shadowknight, Coercer, Ranger, Dirge.  Some fights in the past have had problems with two fighters in the group both trying to be the one in control.  I could set the Berserker to GroupRole1 and the Shadowknight to GroupRole5 in order to allow the Berserker to send commands as the tank and the Shadowknight to take commands as a dps class.

When both OgreBot and BJ Movement are loaded, Movement will check to see if a save file exists for that character name and load your desired group role.  If a file does not exist, it will assign you a generic role based on your EQ2 class.

Example:

Click picture for a larger view. 

 


BJ Set Up For UI Selector...

To make it easy to send the Set up or Enable commands it is suggested that you make an OgreBot MCP button.  This button will display the BJ Set Up For UI Selector which looks like this:

 OgreBot MCP Button Options:


Activating The Encounter Specific Coding

There are two types of key words that are used to activate the encounter specific coding:

  1. Set up for BJ (MobName) - If you see these words as part of the command it is required that you OgreBot Campspot and Joust Out FIRST before issuing the command. (This is only applicable on content that is older than the Tears of Veeshan expansion. Newer content will now set all script required settings for you and provide you with an in-game waypoint to the set up location.)
  2. BJ (MobName) Enable - If you see these words as part of the command it is required that you do NOT OgreBot Campspot.
  3. BJ (MobName) Disable - If you want to end the encounter code early or something goes wrong and it doesn't auto-disable when the mob dies. All encounter coding should auto-disable when the Named NPC dies or is reset.  This can be confirmed by opening the Innerspace console and looking for the appropriate text.  Example: BJ Raknag Auto-DISABLED because Raknag can't be found.

When you are ready to activate the encounter coding, press your BJ Set Up Button on your OgreBot MCP and it will pop up the BJ Set Up For UI Selector.

In the above picture there are four options for sending your command to your Innerspace sessions.

  1. Enable Silent Sending - This option is very important.  When it is enabled it will send all of the group and raid commands through the Innerspace uplink and won't place any text inside of your EQ2 chat window.  If this option is not enabled all group and raid commands will be sent to your EQ2 chat window.
  2. Send to Group - Will send your selected action to your group chat window.
  3. Send to Raid - Will send your selected action to your raid chat window.
  4. Send to Ogre IRC - Will send your selected action to your Ogre IRC chat window. 

 Set Up For Custom Commands (Advanced Task) 

When you press your BJ Set Up Button on your Ogre MCP you are provided a list of commands for the zone that you are currently in.  By default these commands are patched from the auto-patcher and are contained in ".../Innerspace/Scripts/EQ2BJCommon/BJMovement/Saves/BJSetUpForCommands.xml".  This file will be patched periodically to update the list of commands.  Users have the option to create their own command list and these commands are stored in ".../Innerspace/Scripts/EQ2BJCommon/BJMovement/Saves/BJSetUpForCustomCommands.xml".  This file will never be patched so it is safe to edit yourself.

In Windows Explorer, browse to ".../Innerspace/Scripts/EQ2BJCommon/BJMovement/Saves/" and open BJSetUpForCustomCommands.xml in your favorite text editor of choice (I use Notepad++).  By default there is an example for you to look at:

 

This shows the zone names and the desired command.  

  1. To get the zone names, copy and paste the following into the Innerspace console: "echo ${Zone.ShortName}*${Zone.Name}".  This will place new text into the Innerspace console.  Copy all of it by highlighting (Left click/hold and drag your mouse to highlight the text.  When you release your left mouse button it will auto-copy all text inside the highlighted box.) the new text and paste it into your text editor for the first set name.
  2. For Setting Name you will want to increment the Command# for each additional command you add per zone.  In our example Command1 would become Command2.
  3. The last step is to add your actual command.

Example of adding a command to an existing zone:

 


Immunity Chain

Completely re-written in Patch # 110, Immunity Chain is a way for your group/raid bots to communicate with each other to keep a character immune/alive to different damage types.  There are 8 required parameters that must be declared and 1 optional parameter before Immunity Chain will function.

Example:

With the parameters from the picture above, Immunity Chain would activate on the person who pushed the Ogre MCP button and ask everyone who was in IRC and in their raid to check their available spells.  The specific spells the person using the button is looking for are stoneskin abilities that will absorb damage from physical attacks.

Long Winded Explanation of What Is Happening Behind the Scenes (Can skip if you only care that it works!)

The reference file stores the spells that I feel will keep a player alive under different circumstances.  They are specifically ordered from fastest recast to slowest recast.  The overall idea behind Immunities is to keep the character immune to damage for as long as possible.  This means that faster recasting spells should be cast first, even if they aren't the best spell for the job.  I purposefully did not include spells that would not provide 100% immunity to damage.  IE. 30% damage reduction spells

When the Immunity Routine is activated, the character that is assigned by the SaveWho parameter will send out a request for available spells that match the parameter criteria to all connected sessions.  Only those sessions that match the ForWho parameter will begin to evaluate their choices based on the reference file list and associated subclass.  If a spell meets all of the criteria it will be selected by that character as their available spell and the spell name, spell duration and spell recast values will be sent back to the character that is requesting saving. This whole process should take approximately half a second or less.

After 1 second the person who activated the Immunity Routine will evaluate the returned responses.  They are looking for the fastest recast minus duration ability that was reported back.  When they have evaluated all responses, they will make their decision and tell the person who reported their selected spell to queue the spell into OgreBot's internal cast order.  This spell will then be cast by OgreBot as the next spell.

 


Interrupts

For some encounters, BJ Movement needs to keep specific mobs from casting specific abilities.  To accomplish this goal, I wrote a small function that would queue pre-determined spells in OgreBot's internal casting order.  People wanted access to this function for use in their own scripts or for manually pressing an MCP button so I added the functionality.  It is important to note that this button does NOT cast things automatically.  You would need to write your own script and call this function to interrupt something specific.

There are two options available:

  1. Toggle
  2. Cast

Toggle will enable or disable the pre-determined spells in the OgreBot cast stack.  This makes the interrupt spell available when the user needs it to be.

Cast will add the pre-determined spell to the OgreBot internal cast queue and will be the next spell cast.

The above example would disable all pre-determined interrupt spells for all archetypes in the OgreBot Caststack list.