Main Page

ModBot - A Universal Bot Macro

  • Caster
  • Melee
  • Shrouds & MM's
  • Mez, Charm, Heal, Melee, etc
  • All classes supported
  • Supports mixed groups of MQ2 and Non-MQ2 users/players
  • ModBot is under constant improvement effort. Please feel free to offer suggestions / additions / adjustments, etc

General Note on Wiki Entries - Release ZIP packages - While the majority of entries in the Wiki apply to ModBot in general, there are always some entries that apply to changes, additional functionality, new commands, etc. Please keep this note in the back of your mind as you work with the Wiki - if you come across a command, etc. that will just not seem to work for you (and you have already thoroughly researched it, checked syntax, etc.), please take a moment to check your version of the module that it applies to - you may need to update. 

 

How To

To use ModBot

  1. Extract and place all included files from zip (all .mac and .inc files) into your MQ2 macro directory.
  2. From inside EQ, type /macro modbot <optional custom INI file name> (e.g. /macro modbot OR /macro modbot style1). This will build, if it doesn't exist, your MB_<toonname>.ini file. Optional entries will make a MB_<toonname>_<Option>.ini. Being shrouded on startup without using an option will use your race and class for the creation of an MB_<Race>_<Class>.ini file.
  3. From inside EQ, end the macro by typing /endmac
  4. Tab out of EQ, locate your new MB_<toonname>.ini file in your macro directory, and open it. You can use the editor of your choice, but Notepad will work just fine.
  5. For every component of the macro you want to use, increase the respective "count", if you want two heals, set AHCount=2, if you want 2 debuffs, set ADCount=2, etc. After you have set your counts, save and close the INI file.
  6. Tab back over into EQ and restart the macro (/macro modbot). This will now populate your INI file based on the count entries that you made in the previous step
  7. End the macro again by typing /endmac
  8. Open the INI file once more and "tweak" the newly created entries to fit your needs. When you are done, save and close the INI file.
  9. Tab back over to EQ and restart the macro.

Your character should now be ready for commands.

For examples of complete class ModBot INI files, please go to the example INI page.
 
Please Note: Keep your most critical and most used spells, activities, etc., first in their respective INI sections. You don't want your mez spell as Debuff number 20, you don't want slow as debuff 10, you don't want a CBT based buff as buff 23, and you don't want CH as heal 1 (you want your most desperate heal as heal 1), etc. Configure your heals, buffs, debuffs, etc. in a highest priority first order.

 

Reference to Understanding the ModBot WiKi

<text> - Replace this with the respective descriptor Example 1 - <servername>_<toonname> is luclin_bobby Example 2 - <toonname> is bobby
(text) - These are "comments" and should be removed when saving the respective file Example 1 - Send=1 (If set to 1 it will send netbots information over the network) This text: (If set to 1 it will send netbots information over the network) should NOT appear in the INI file
[text] - This is to show different options or series of options Example 1 - /bc cast <spell alias name> [<toonname>, %t, grp, <spell alias name>, etc]


Plugin Requirements

I suggest you have a good understanding of how to configure each of these plugins. Any misconfiguration can have an adverse affect on the performance of ModBot. Our thanks go out to the original creators and maintainers of these plugins.

MQ2AdvPath (Wiki page)
MQ2Cast (Wiki Page)
MQ2eqbc (Wiki Page)
MQ2Exchange (Wiki Page)
MQ2Melee (Wiki Page)
MQ2MoveUtils (Wiki Page)
MQ2NetBots (Wiki Page)
MQ2Twist (Wiki Page)

Optional:  If you plan to use item swapping and spell foci items, you may need to configure "sets" like those used in MQ2Bandolier. You don't need the actual plugin.



ModBot Commands & Syntax

ModBot commands are executed in a few different ways (over EQBC):

  • /bc <command> 
  • /bc <botname> <command>
  • /bct <botname> <command> 
  • /bct <channel name> <command>

The above are probably most common but check out the EQBC Forum thread for more methods / features.

You can also configure an alias so you can run modbot on the character you control and execute ModBot commands.

To create the alias you must run this from the EQ prompt:

  • /alias /mb /echo mb-

Or change the LoadAlias variable in MBCommon.inc [Settings] section from 0 to 1 if you've lost the alias in your Macroquest.ini

With this alias you can tell your bot locally what to do:

  • /mb makecamp
  • /mb buffup 
  • /mb letsroll 
  • /mb <command>

Command Reference

  • abort (Interrupts any cast in progress. Sets DoHeals, DoDebuffs, DoBuffs, and DoMelee FALSE and follows the sender closely. Useful when you want to run away.)
  • addbuff "<SpellName,ItemName,ect.>|<gem,item,ect..>" SpellAlias TarType (Adds a new buff entry to the character's INI file.)
    • You must restart the ModBot macro after executing the addbuff command in order to complete the adding of the buff entry.
    • The Spellname, etc. section can be entered directly (e.g. /mb addbuff "Bone Mask of the Ancient Iksar|item" iksar self) or, if adding a clicky, by holding the item on your cursor (e.g. /mb addbuff "${Cursor.Name}|item" iksar self). Please note that the quotes around the spellname|gem section are required.
    • TarType will accept multiple targets if quotes are used (e.g. /mb addbuff "Levitiation|gem1" levi "war mnk rog").
    • addbuff execution will add [ABx], Gem, Spell, SpellAlias, and TarType entries to the characters INI file. The remaining buff lines (SpellFoci, DurMod, etc.) will be added once you restart the ModBot macro (ABCount will also not increment until after re-start). For example, using the Bonemask example command, the following entires will be added to the INI file (where "x" is equal to whatever the next numbered entry is in your AdvBuff section):
[ABx]
Gem=item
Spell=Bone Mask of the Ancient Iksar
SpellAlias=iksar
TarType=self
  • attack (Sets DoMelee TRUE and forces character to attack the TankName's target)
  • attack <name or ID> <engage at HP> <disengage at HP> (Sets DoMelee TRUE and forces character to attack the target) 
    • Note: OffTank must be TRUE to use this option
      Example 1 - /bc attack badguy
      Example 2 = /bc attack badguy 100 20
  • autobank <itemname1|itemname2 etc> 
    • You need to have a banker targeted or be near one
    • Will auto-inventory the specified items to your bank.
    • The autobank command can be used in conjunction with categories that have been defined in the loot.ini. For instance, if you have items marked 'SpellScroll' in your loot.ini, and the ItemName variable has "SpellScroll" included, you can issue the command as follows: /mb autobank SpellScroll . The result will be that all items on your toon that are marked with that category (SpellScroll) in your loot.ini will be auto-banked.
  • buffup (This will set DoBuffs, DoEvents, and DoHeals TRUE)
  • campout (Performs a /camp desktop and ends the macro)
  • cast <spellalias> <on/off> (This will enable or disable the spell associated with this alias)
  • cast <spellalias> [<spawnname/id> <%t> <grp>] <spellalias> [<spawnname/id> <%t> <grp>] (infinte)
    • If the spell is detrimental, it will target the requester's target.
    • If the spell is beneficial, it targets the sender or, if grp is present, it casts buff on group members.
    • If %t is present, it targets the requester's target.
    • The cast command will ignore INI settings for things like minmana, maxmana, recasts, buff/debuff counters, etc. This command is mainly used for manual, "one off" type casts.
        Example 1 - /bc cast buffhp grp haste bob haste jane dmgshld bob
        Example 2 - /bc cast dmgshld bob nuke tash
        Example 3 - /bc cast slow "nasty add"
  • doaa [on, true, off, false, force <no parameter acts like a toggle>. "Force" will force an AA purchase check.]
  • doafk [on, true, off, false, <no parameter acts like a toggle>]
  • dobuffbot [on, true, off, false, <no parameter acts like a toggle>] (Places the character in "BuffBot Mode". Currently once set to on/true, it will NOT turn off and you MUST restart the macro to "quit" this mode. It will cast any spell alias on the requesting target. The requester must be a "master". Example: /t <bot name> buffhp
  • dobuffs [on, true, off, false, <no parameter acts like a toggle>]
  • docombines (Toggle that turns docombines on/off (default off). Docombines will check for an open tradeskill window with an enabled combine button (you have to select recipe), and will click the button. Upon a successful combine, Modbot's built in cursor handling takes over. Useful for tank to summon more arrows during fight. An associated event will fire and toggle docombines to FALSE when you run out of recipe components.)
  • docures [on, true, off, false, <no parameter acts like a toggle>]
  • dodebuffs [on, true, off, false, <no parameter acts like a toggle>]
  • doevents [on, true, off, false, <no parameter acts like a toggle>]
  • doforage [on, true, off, false, <no parameter acts like a toggle>]
  • dofw [on, true, off, false, <no parameter acts like a toggle>]
  • doheals [on, true, off, false, <no parameter acts like a toggle>]
  • dolist (Used to /bc out the existing "Do" status)
  • doloot [on, true, off, false, <no parameter acts like a toggle>]
  • domelee [on, true, off, false, <no parameter acts like a toggle>]
  • domount [on, true, off, false, <no parameter acts like a toggle>] (To cast a mount or not, used in conjunction with MountCast INI entry)
  • dopet [on, true, off, false, <no parameter acts like a toggle>] (To cast a pet or not, used in conjunction with PetCast INI entry)
  • dopettoys [on, true, off, false, <no parameter acts like a toggle>] (Mage Only - To respond to pettoys requests and give toys to pets)
  • dopull <on/off/path> (Self explanatory. See the instructions on forums.)
  • doquest [on,true,off,false] (Default is TRUE. If set to FALSE, your looter will ignore items marked "quest" and still loot other items.)
    • Can be used to add quest items to your loot.ini file. For example, while holding an item on cursor, /mb doquest 4 Hair of the Dog will set the item you're holding to "=Quest|4|Hair of the Dog|" in loot.ini.
    • Can also be used in conjunction with the QuestOnly variable (found in the setting section of the loot.ini file). If both doquest and QuestOnly are set to TRUE, your toon will only loot quest items. Also note that if QuestOnly is set to TRUE and doquest is set to FALSE, your toon will only loot cash off of mobs.
    • Please see the modloot section found here for more information on the loot.ini file.
  • dorez [on, true, off, false, <no parameter acts like a toggle>] (For automatically accepting rezzes, see below)
  • dosit [on, true, off, false, <no parameter acts like a toggle>] (For sitting based on Mana/Endurance percentages, see below)
  • dosongs [on, true, off, false, <no parameter acts like a toggle>] (used for bards only - Alias for dobuffs)
  • dotells [on, true, off, false, <no parameter acts like a toggle>] (Toggles a beep when tells are recieved from non-netbots toons. Useful for tells in background sessions)
  • exclude <mob name,save> (Adds <mob name> to alert list, to save list you must use the "save" option, otherwise it will not be written to the INI file)
    • The exclude list is maintained by zone. It will exclude mobs that are present on the list from being considered for Melee, Debuffs, etc. Especially useful if you need to fight near 'friendly' NPC's and don't want to accidentally aggro them.
    • Use the following commands from a character to add mobs to the exclude list (suggest you setup a hotkey or two for this):
      • /bcaa //mb exclude ${Target.CleanName} Will write the exclusion to a string that is checked through the debuff loop
      • /bcaa //mb exclude save Will write the exclusion in the mbcommon.ini and that exclusion includes the zone id, so mobs of the same name in a different zone are NOT excluded. You shouldn't have to re-run the macro after an exclude but if you do this in the midst of combat, while mobs are near, it may not "take" as quickly.
    • For mob names with spaces in them, simply enter the name without any quotations. For example:
      • /bcaa //mb exclude a small bat
    • See the Include command (found below) to temporarily remove a mob from the alert list
  • follow <name> (Follows the sender or <name>)
  • follow close (Follows the sender within 3 steps, very close)
  • give <TargetName> <ItemName1|ItemName2,etc> <ItemCount1|ItemCount2,etc> <NoStacks> 
    • Hand item(s) to PC or NPC.
    • ItemCount is optional and will default to 1. If more than one ItemName, you can have different ItemCounts. If only one ItemCount, it will be used for all of the items.
    • NoStacks is optional. If omitted, items will be given in stacks.
    • The give command can be used in conjunction with categories that have been defined in the loot.ini. For instance, if you have items marked 'SpellScroll' in your loot.ini, and the ItemName variable has "SpellScroll" included, you can issue the give command as follows: /mb give Bob SpellScroll . The result will be that all items on your toon that are marked with that category (SpellScroll) in your loot.ini will be handed to Bob.
  • goto <y> <x> (Character will move to the loc given)
  • handin (Target an NPC or PC, get one item on your cursor, and all of that item will be handed to them and trade or give button pressed.)
  • holdup (This will set DoBuffs,DoDebuffs,DoEvents,DoMelee all to FALSE)
  • include <mob name> (Removes <mob name> from alert list. This will not save to the INI file - see exclude save)
  • letsroll (This will set DoBuffs, DoHeals, DoMelee, DoEvents, DoDebuffs, and DoCures to TRUE)
  • makecamp (This will Makecamp at existing location. Use /makecamp off or /mb stop to toggle makecamp functionality off)
  • mana (Used to /bc out the existing Mana % of the character)
  • mbpause or mbp [on, true, off, false, <no parameter acts like a toggle>] (Used to pause or unpause the macro)
  • mbwayplay <PathName> (Used to playback previously recorded paths / waypoints, through zones, doors, chaining paths, etc.)
  • mbwayrec <PathName> (Used to record a path / waypoint.)
    • Once started, ducking for each location will add a waypoint to the path.
    • Sitting stops path recording and returns to modbot functions.
    • To add doors, chains, pull locations, etc. you'll need to edit the MBWayPlay.INI file
    • Further information about mbwayplay and mbwayrec (along with examples) can be found here in the wiki.
  • offtank <on/off> (Toggles offtanking for dealing with adds.)
  • pettoys (Requests toys for your pet. Needs a mage who has DoPetToys on and setup to respond to the request)
  • qcast <spellalias> <on/off> (Quiet Cast version of 'cast' - Turn on/off a specific ini entry, without /bc notifications).
  • qcast <spellalias> [<spawnname/id> <%t> <grp>] <spellalias> [<spawnname/id> <%t> <grp>] (infinte)  (Quiet Cast version of 'cast' - without /bc notifications) See 'cast' command for details.
    • scast <INI file section name|entry#> <on/off> (Specific Cast version of 'cast' - Turn on/off a specific ini entry, without /bc notifications).
    • scast <INI file section name|entry#> [<spawnname/id> <%t> <grp>] (Specific Cast version of 'cast' - without /bc notifications).  See 'cast' command for details.
      • Example - /bc scast AB|1
      • script <INI file section name> (This will allow you to run custom commands while the macro is running, or combine series of commands. See script examples below.)
      • sell <MerchantName> (Sell all items marked SELL in your loot.ini file)
        • If MerchantName is supplied, it will attempt to sell to that Merchant. If MerchantName is not supplied, and your target is a Merchant, it will use your target. If neither, and you are near (20) a merchant, it will use that merchant.
      • setinivar <variable name><setting> (This will find and change any setting in your .ini)
        • Note that this command will have trouble with script settings if you have more than one (it will set the first C1= or whatever that it comes to.
        • Variables changed in the .ini are /varset with the macro running
        • Spells, gems, etc. will not be set unless you use the array correctly for <VariableName>. In other words, ADGem[1] is not the same as ADGem1:
          • Use ADGem[1] and this will set the ADGem1 .ini setting and varset the change to memory.
          • Use ADGem1 and it will only change the .ini.
      • sing <spellalias> (Will sing this song and add the respective gem number to the Twist.List, it attempts to use detrimental as the qualifier to add it to combat songs, or rest songs)
      • stop (Will stop following and/or stop in place)
      • sung <spellalias> (Will remove this song from the respective Twist.List, it attempts to use detrimental as the qualifier to remove it from combat songs, or rest songs)

      ModBot in game usage and commands

      Example commands:
      /bc Bob follow me [This tells bob and only bob to follow me]
      /bc cast dd [this tells every bot to cast the spell alias dd]
      /bc shamandude cast buffsta grp buffhp focus grp buffhp %T [buffsta on the group, buffhp on the requester, focus on the group, buffhp on requesters target]
      /bc necroguy makecamp [this tells "necroguy" to makecamp]
      /bc campout [tells all bots to camp to desktop]
      /bc exclude ${Target.CleanName} [tells all bots to add your target to the exclude / ignore list, toons will not attack any spawn with that name.]
      /bc clericname dobuffs on [tells the cleric to set DoBuffs to true and will then begin buffing group]
      /bc pallyguy cast bmb %t buffhp grp [bmb on requesters target, buffhp on the group]
      
      Typical commands sequence for an EXP group:
      /bc letsroll
      /bc makecamp
      You then begin to pull mobs and they will react accordingly.
      
      Mobile Camp Example:
      /bc follow
      /bc buffup
      [once ready zone into the instance]
      /bc stop
      /bc letsroll
      [clear first room lets say]
      /bc follow
      [move to next room]
      /bc makecamp
      [etc, repeat]
      
      Example movement options with or without invis
      /bc mbp on
      /bc follow
      
      Make a EQBC Channel and do things like (using this technique you don't even have to be a master)
      /bct mycoolchannelname //mb letsroll
      /bct mycoolchannelname //mb campout
      


      ModBot INI Settings

      Notes

      • Please treat the Buff, Debuff, Heal, and Event INI sections as a first in first out (FIFO). Highest priority to lowest priority, you don't want mez or slow as AD12 but as AD1. You don't want AH1 as Complete Heal, you want AH1 to be DA/DB (those are examples, use common sense)
      • You can use color coding, etc. in any of your Announce settings. For example, Announce=/bc [+r+]Group Mez[+x+] <<[+y+] %t [+x+]>> with[+g+] %s [+x+] will produce a line in the chat window that is MUCH easier to see than the regular fonts.
      • Rk. XX Usage - Heals, buffs, debuffs, and cures have code added to check your book and find the correct version of the spell you're using on startup of ModBot (Rk. II and Rk. III are not needed). If you upgrade a normal spell in these sections to Rk. II or III, restarting the macro will make the new spell work. Please note that this does not apply to discs, potionbelt, abilities, or PetCast at this time (meaning you must include the Rk. XX in the spell name for these types).
      • Setting spell duration modifications (AHDurMod, ADDurMod, ABDurMod, AEDurMod) - Use the following formula to determine what number to set your DurMod at:
        • ${Spell[X].Duration} * (${AHDurModX}+${Spell[X].Duration}) == timer duration.
        • So if you want a 25% extension on the timer, set durmod to 25 to make ${Spell[X].Duration} * 1.25 = timer. Modbot shouldn't re-cast if timer is still running.
      • CheckTime settings (AHCheckTime, ADCheckTime, etc.) are 'forced delays' or timers between allowing that section of the macro to execute again. Set low for heavy emphasis (execute this section more often), or higher for less emphasis (execute this section less often). For instance, a Cleric can be 8 for debuffs and 0 for heals, but a crowd-controlling Enchanter would want 0 for debuffs. 0 = no forced delay. Speed still varies depending on the size of the loops or how many heals, debuffs, etc. are in each section.
      • With ModBot v4.00, a new formatting option was introduced to the following ModBot.ini sections:
        • AdvHeal, AdvDebuff, AdvBuff, AdvEvent, AdvCure
        • Usage: AxNewFormat=1 (ie, ABNewFormat=1). As of v4.20, default is 1 (use new format).
        • This allows greater flexibility in the entering/reordering of buffs, debuffs, etc., since the type and 'position' is no longer repeated/attached to each entry. For instance:
        • (old format)
           ABGem1=4
           ABSpell1=Ferocious Growth
           ABDurMod1=90
           ABSpellAlias1=growth
           ABAnnounce1=/bc
           ABSpellMinMana1=0
           ABTarCnt1=1
           ABTarType1=tank
           ABRecast1=FALSE
           ABSpellFoci1=
           ABSpellIcon1=
           ABPreCondition1=TRUE
           (new format - add section header, remove the prefx and number from each line)
           [AB1]
           Gem=4
           Spell=Ferocious Growth
           DurMod=90
           SpellAlias=growth
           Announce=/bc
           SpellMinMana=0
           TarCnt=1
           TarType=tank
           Recast=FALSE
           SpellFoci=
           SpellIcon=
           PreCondition=TRUE
        • Each section has it's own xxNewFormat key, defaulted to 1 (use new format).
        • I recommend using xxNewFormat=1 for all of them. It is MUCH easier to setup and maintain your ini. The rest of this document (examples, ini-entries, etc.) assumes the New format. 

       

      Settings Section [Settings]

      • DoMelee=[TRUE,FALSE]
      • DoHeals=[TRUE,FALSE]
      • DoBuffs=[TRUE,FALSE]
      • DoDebuffs=[TRUE,FALSE]
      • DoEvents=[TRUE,FALSE]
      • DoCures=[TRUE,FALSE]
      • DoPull=[TRUE,FALSE]
      • DoPet=[TRUE,FALSE]
        • Must have a buff entry for creating a pet (in the AdvBuff section - see note for ABTarType). Also see note for Cleric pets under PetCast below.
      • DoSit=[TRUE,FALSE]
      • DoLoot=[TRUE,FALSE]
      • DoFW=[TRUE,FALSE]
        • Should I cast spells for food and water. (see FoodSpell and DrinkSpell entries)
      • DoForage=[TRUE,FALSE]
      • ForageIni=[<name of ini file for forage>]
        • Defaults to forage.ini. Please see the Related include files page for more information on the Forage.ini file.
      • DoAfk=[TRUE,FALSE]
      • DoRez=[TRUE,FALSE]
        • Should I automatically accept rezzes. Please see related RezMinPct, RezAcceptCall, and RezGiveUpSeconds settings below.
      • DoAA=[TRUE,FALSE]
        • Should I automatically purchase AA's. Please see related AABank, AAWarning, AAAnnounce, AAVerbose, and AAtoNormal settings below.
        • See the AA Purchasing Notes here: AA Purchasing
      • DoNamed=[TRUE,FALSE]
        • Should I process AD Type 3/13 spells (for named)
      • DoPetToys=[TRUE,FALSE]
        • Should I automatically respond to PetToys commands and distribute toys to pets. Mage Only. See PetToysX entries below.
      • DoMount=[TRUE,FALSE]
        • If set to TRUE, you must complete the MountCast entry below.
      • MountCast=[<spell name,item name,AA name>|<gem<#>,item,alt>]
        • Use MQ2Cast syntax without quotes. Examples:
          • MountCast=Collapsable Roboboar|item
      • MasterList=[PC Name,PC Name,PC Name,...]
        • Comma delimited list of names. Can also use ${NetBots.Client} to designate that any chars using NetBots can act as master. Examples:
          • MasterList=Basher,Slacker
          • MasterList=${NetBots.Client}
      • TankName=PC Name
        • Character designated Tank for Assisting during combat, etc.
        • This variable will also be set when you designate a character using either the Main Tank or Main Assist group roles.
        • Can also use ${Group.MainTank.Name} to auto set this to whomever is set in the group main tank role. Examples:
          • TankName=Bigtank
          • TankName=${Group.MainTank.Name}
      • TankName=manual
        • This allows you to 'manually' set the TankName during ModBot operation. Original functionality (see above) would use TankName entry and also get reset when you designate a character using either the Main Tank or Main Assist group roles. However, if set to 'manual', there is no automatic setting or reset done when Group Roles change. This is also very helpful when running more than one group. Once you have your bots running, you can /bca //varset TankName xxx for everyone.
        • The 'manual' setting also come in handy since it ignores Group Roles that you may need to set for another purpose (ie, mercenary control).
      • PullerName=PC Name / manual
        • Functions similar to TankName. Uses initial entry, Group Puller Role, or 'manual' as TankName above. Again, this is very helpful if your Puller is in another group and for mercenary control.
      • Radius=<#>
        • Radius that I will monitor for NPCs. If you are having issues with your characters not casting buffs, etc. while not in combat, try adjusting the Radius setting down a bit to make certain that they are not pickng non-aggro mobs in the surrounding area. Default is 100.
      • ZRadius=<#>
        • Similar to Radius. Sets the z-axis radius for monitoring. This comes in especially handy in dungeons and multi-storied buildings, etc. The default is 100 (the original hard-coded value before this parameter was added). Personally, I have been using a value of 20 in my settings, unless I am underwater (where 100 comes in handy).
      • SitAggroRadiusCheck=<#>
        • Radius to check for aggro to see if I can sit. Default is 75.
      • SitManaPct=<#>
        • When Mana percent falls below this, and you are out of combat, sit to regen.
        • Default is 95 for characters with mana. Zero for others.
      • SitEndurPct=<#>
        • When Endurance percent falls below this, and you are out of combat, sit to regen.
        • Default is zero for CLR,DRU,SHM,ENC,NEC,MAG,WIZ,BRD.  95 for others (where Endurance plays a more important role). 
      • AfkMessage=afk message
        • Enter a custom AFK message if desired (leave blank for no AFK message).
        • Default is "Not now, thanks".
      • DeathSlot=[TRUE,FALSE]
        • Will only be true if your bot needs to camp to desktop to save res timer. This way the macro will know if you died and had to camp out.
      • NetworkIni=[<Path and filename of ini file>]
        • Option for a network based INI file for scripts and path playback (mbwayplay and mbwaypnt.ini file).
        • Scripts must be prefixed by "Network-" or "Net-"
        • Example: NetworkINI=X:\shared\modbot\mb_network.ini
      • TraderName=[<toon name>|bazaar trader]
        • For use with the Campout command. Example:
          • /bc campout trader will log in whatever toon you have set in the TraderName variable.
        • Second argument (|bazaar trader) will log in the toon and run the bazaar macro with the trader option (or any other mac+options you want there.)
      • FollowDistance=<#>
        • Designates how far you will stay from followee. Default 20.
      • FollowStick=MQMoveUtils Options
        • If using MQ2MoveUtils, enter the options that you would like to use. Default: FollowStick=20 hold uw
      • PetAggro=[TRUE,FALSE]
        • Turn Pet Taunt on or off.
      • PetAssist=[1,0]
        • Assist and pet attack or not. Default: 0 
      • PetFoci=[-bandolier|petfoci]
        • Any spell foci you want to swap in for this spell using MQ2Cast syntax, you must have previously created the set via the MQ2Bandolier plugin /createset command (or at least created the .ini entry in such format).
      • PetShrinkSpell=[<pet shrink spell name>|gem<#>]
        • Spell to be used to shrink your pet. Leave blank if you don't want your pet shrunk. Example:
          • PetShrinkSpell=Tiny Companion|gem9
      • GoMNuke=[<spell alias 1>|<spell alias 2> etc]
        • Spell to cast when you have Gift of Mana on you 
        • The intent is to try them in order. If the 1st is available and within the GoM Song Level, it will cast that one. If not, go to the next, etc. Coded to cast detrimentals on ACMATarget, or non-detrimentals on TankName.
      • SummonFood=[<spell name,item name,alt name>|<gem<#>,item,alt>]
        • Used when DoFW is set to TRUE. Use MQ2Cast syntax for spell entry. Example:
          • SummonFood=Summon Food|gem12
      • SummonDrink=[<spell name,item name,alt name>|<gem<#>,item,alt>] 
        • Used when DoFW is set to TRUE. Use MQ2Cast syntax for spell entry. Example:
          • SummonDrink=Summon Drink|gem8
      • RezMinPct=<#>
        • Minimum percentage rez to accept.  ie, 96 will accept 96% and 100% rezzes.  Default 96.
      • RezAcceptCall=[TRUE,FALSE]
        • Do I accept Call to Corpse type rezzes.  Default FALSE.
      • RezGiveUpSeconds=<#>
        • How many seconds do I wait for rez before I automatically camp to save my timer.  Default 6000 (100 minutes).
      • AABank=<#>
        • Minimum number of AA points to keep 'banked'. AAPurchase routines will not use these AA's.
      • AAAnnounce=channel
        • Channel to announce in, or leave blank for no announce. Example:
          • AAAnnounce=/bc  Will announce in MQ/EQBC window
      • AAVerbose=[TRUE,FALSE]
        • If announcing, do 'verbose' announcing. This will give details about attempts, maxed AA's, etc.
      • AAWarning=<#>
        • If announcing, display a warning message if your banked AA's is equal or greater than this amount (but still below your cap).
      • AAtoNormal=[TRUE,FALSE]
        • Should I automatically switch to normal experience if I reach the max and I have no more defined AA's to purchase.
      • PetCast=<pet spell name>|gem<#>|<smii>(for Suspended Minion II)] (Semi-Deprecated: PetCast is no longer needed to summon a pet. You can now add pet to "AB" section by setting ABTarTypeX=petspell (or petcast). Pets won't be cast unless DoBuffs and DoPet are true. Also, it shouldn't cast if in combat unless "cbt" is included in ABTarType. When used with modbuff, Persistent Minion is also used automatically if you have it, and no extra entry needed. Original entry: Spell to cast to create / recall pet. Example: PetCast=Animate Dead|gem8|smii (Mainly MQ2Cast syntax without quotes))
        • Can also use for charming:
          • [charm <AdvDebuff Spell Number> <NPC type 0=any 1=undead,vampyre 2=animal 3=summoned 4=(specify name type)> <list of names>]
          • Example: PetCast=charm 4 4 "lowland basilisk,a emerald drake"
      • PetToysX (1,2,3,4,5)=[<spell name>|gem<#>[,item1[,item2]]]
        • For Mage only. Pet Toy spells to be cast on PetToys command.
        • If the spell summons a pack, all the items in the pack will be given to the pet unless item1/2 are specified (Usually for weapons).
        • Default is five blank entries (PetToys1=,PetToys2=,PetToys3=,PetToys4=,PetToys5=)
        • Example:
          • PetToys1=Grant Visor of Gobeker|gem11
          • PetToys2=Grant Wirn's Plate|gem11
          • PetToys3=Grant Ioulin's Heirlooms|gem11
          • PetToys4=Grant Wirn's Armaments|gem11,Summoned: Gorstruck Fireblade,Summoned: Gorstruck Shortsword


      Melee Section [Melee]

      • OffTank=[TRUE,FALSE]
        • False - attack the MA target only
        • True - assist MA and then not change targets
      • ACLeash=<#>
        • The farthest the bot will move from where he is to engage a mob. However if "TankName" stays within 20 steps, the bot will exceed this leash.
      • ACAssistPct=<#>
        • Assist when target HP is this or less. Melee characters will engage at this point and pets will be sent in.
      • ACManaPct=<#>
        • Stop assisting when Mana drops below this.
          • Set to 0 for melee only
          • Set to 101 for non-melee casters
      • ACAnnounce=channel
        • Channel to announce in, or leave blank for no announce. Example:
          • ACAnnounce=/bc  Will announce in MQ/EQBC window
          • ACAnnounce=/g  Will announce in group chat
          • Annoucements also support formatting (makes it a bit easier to see in the MQ window). For example:
            • Announce=/bc [+r+]Buffed[+x+] <<[+y+] %t [+x+]>> with[+g+] %s [+x+] 
      • ACMeleeCmd=command
        • Use to set MQ2Melee commands. Example:
          • ACMeleeCmd=/melee plugin=1  (default) 
      • ACBefore=script
        • Special script code to execute before you engage. Example:
          • ACBefore=/if ({ACMATarget} && {Spawn[{ACMATarget}].Type.Equal[NPC]} && {Spawn[{ACMATarget}].Distance3D}<={ACLeash} && {Me.CombatAbilityReady[Sneak Attack]} && {Me.Invis} && {Me.Sneaking} && {Me.PctEndurance}>40 && !{Me.Moving}) /call mbscript SneakAttack
          • ACBefore=/if (!{Me.Pet.ID}) /casting ''{PetCast}'' <-- cleric pet hammer example
      • ACAfter=script
        • Special script code to execute after you leave combat. Uses same script format as ACBefore.
      • ACPetEnrage=[TRUE,FALSE]
        • Function similar to the MQ2Melee 'enrage' setting. Defaults to TRUE so as not to affect older ModBot functionality. Set it to FALSE to no longer have ModBot back off your pet on enrage (helpful when your pet is the tank). 

       

      Heal Section [AdvHeal]

      • AHCount=<#>
        • Number of heals you plan to have.
      • AHNewFormat=[1,0]
        • Set to '1' for ModBot v4 INI format   (default)
        • Set to '0' for ModBot v3.49 INI format
      • AHCheckTime=<#>
        • How often to check for heals in seconds.  See Notes above. 
      • AHHealOOBC=[TRUE,FALSE]
        • Do I heal characters outside of Netbots and EQBC (characters not running MQ2 / mercenaries)
        • If FALSE, don't heal anyone that's not on your EQBC server with the NetBots plugin set up correctly, even if they're in your group.
        • If TRUE, then heal group members and pets even if there's no NetBots connection.
        • Out of group healing can only be done if there is a NetBots connection, or if the other toon is a master and uses the cast command via /tell.
        • Recommend: TRUE
      • AHHealMode=<#|#|#>
        • 0 or 1 (off or on)|Heal #|Timer
        • This will keep the toon in the heal loop after casting <Heal #> to check for additional heals for the duration of <Timer>.
      • AHInterruptLevel=<#>
        • Lowest interruptable spell. For example, AHHealSpell1 will never interrupt if this is set to 2.
      • AHClassPriority=class names
        • Set class healing priority (e.g. if you're currently healing a chanter, you won't interrupt for a monk).
          • Allowed entires are: enc,wiz,mag,nec,clr,dru,shm,pal,shd,war,bst,rng,ber,rog,brd,mnk (or any combination)
      • AHXTgtWatch=xtarget slots
        • Designate which xtarget slots should be watched when using xtarget heals.
          • Example:  AHXTgtWatch=3,6  (watch XTargets 3 and 6 for "xtgt" heals)

      Heal Spell Sections [AHx]

      • [AHx]
        • Where 'x' is the number of healing spell
        • [AH1], [AH2], etc.
        • One AHx ini-section for each heal in AHCount. 
      • Gem=source
        • Designate what the source of the spell is.
        • Valid entries: gem number, alt, ability, item, script, potionbelt
        • Note that 'potionbelt' does not require a slot number.
        • Examples:
          • Gem=3 Cast this spell from gem 3
          • Gem=alt This spell is an alternative advancement ability
      • Spell=source name
        • Valid entries: spell name, item name, alternate ability name, ability name, script name
        • Examples:
          • Spell=Superior Healing This would be generally be paired with an Gem entry indicating which spell gem to cast Superior Healing from.
          • Spell=Healing Clicky This would be generally be paired with an Gem entry indicating that the source of this spell is an item.
      • SpellFoci=setname
        • Bandolier set name to swap in before casting this heal.
        • Please see MQ2Bandolier and MQ2Cast to understand how to use swap sets. You do not need the Bandolier plugin, just the set in the ini.
      • DurMod=<#>
        • Any spell extension percentage, e.g. 05 (for 5%), 25 (for 25%).
        • Due to how spell durations / extensions are calculated, you may need to enter extensions in excessive of 100% (e.g. a 25% extension would be entered here as 125). Check your results in game to make sure you have set the correct extension.
      • SpellMinMana=<#>
        • Minimum mana percentage to have in order to attempt this heal (e.g. 05 (for 5%), 25 (for 25%)
      • SpellAlias=spell alias
        • Alias name for the heal.
        • Please note that you can NOT have spaces in your alias names.
      • Announce=channel
        •  Channel to announce in, or leave blank for no announce. Example:
          • Announce=/bc  Will announce in MQ/EQBC window
          • Announce=/g  Will announce in group chat
          • Annoucements also support formatting (makes it a bit easier to see in the MQ window). For example:
            • Announce=/bc [+r+]Buffed[+x+] <<[+y+] %t [+x+]>> with[+g+] %s [+x+] 
      • TarCnt=<#>
        • Designate how many targets are required to cast this spell.
        • For group heal spells, you must set the TarCnt to something greater than 1 in order for the spell to evaluate correctly (and be used as a "group" heal when more than one member of the group requires healing). For instance, if you have TarCnt=3, then at least 3 members of your group will need to be below the HP level that you set in the Class line.
      • Class=class name(s)[health%]
        • Valid entries: pc pet group hp0 war shd pal rng mnk rog brd bst ber shm clr dru wiz mag enc nec mypet self tank xtgt (or some combination there of). Please also note the following combination restrictions:
          • pc <-- will include pc's and mercs. Leave pet out to ONLY heal PC's and mercs.
          • pet <-- will include pets. Leave pc option out for pet only heals.
          • group <-- will exclude everyone that is not in your group
          • hp0 <-- set an overall health percentage for any named inclusions
          • classnames (war, shd, etc.) <-- used to declare which classes this heal should apply to. Can also be combined with a health persentage (e.g. bst50).
          • mypet to be used by itself (e.g. set up a seperate heal for your pet)
          • self <-- Only use self if the heal spell is SELF ONLY, or only to be cast on yourself. This setting is exclusive and other targets will not be checked for that spell.
          • tank <-- include TankName for this heal. This is no longer exclusive. However, if it exists, and the tank needs a heal, the tank will take priority over other classes listed.
          • xtgt <-- include XTargets for this heal. See AHXtgtWatch above.
          • tnt <-- TankName target. Use for lifetap spells only.
          • grp <-- Meant for Group heals on your group only. Will use the new Group.Injured[] method. For instance, TarCnt=3 and Class=pc grp80 --> This will cast the Heal on yourself if 3 or more people in your group are under 80% Health. 
      • PreCondition=[TRUE,FALSE,PR]
        • Defaults to TRUE
        • PR (only to be used with NetBots) If PreCondition=PR, then for that particular heal there will be a check on target (over NetBots) for any PR type spell. If target has a PR buff on, then the heal will be skipped. Please note that the PR setting does not currently account for the duration remaining of the PR buff. PreCondition=PR will check for the 'Promised' line of heals (Promised Renewal, Promised Recuperation, etc.)


      Debuff Section [AdvDebuff]

      • ADCount=<#>
        • Number of debuffs you plan to have.
      • ADNewFormat=[1,0]
        • Set to 1 for ModBot v4 format  (default) 
        • Set to 0 for MobBot v3 format
      • ADMobMax=<#>
        • This is the array size where the valid mob ID's are stored. The loop to find valid mobs uses SpawnCount, then stores the mobs it "finds" in the array. Setting this to 20 or 30 should be sufficient. It is best to keep this setting (and therefor the array) relatively small for memory purposes (as well as for speed through the debuff loop).
        • If your toons are ignoring NPCs, this number may be set too low.
      • ADCheckTime=<#>
        • How often to check for debuffs in seconds.  See Notes above. 
      • ADAggroOnly=[0,1,2]
        • 0 - off (do not check Aggressive/Targets) (default).
        • 1 - only add mobs to the mob list if they are Aggressive and if someone in your group, raid, or in NetBots is the mob's target. Only use this option on bots that cast on targets that are NOT the main assist's target (e.g. chanter mezzing adds).
        • 2 - only add mobs to the mob list if they are Aggressive (do not check for TargetofTarget)
        • Please note: ADAggroOnly is not terribly reliable at times. If you are having issues with one of your bots auto-aggroing mobs (when they are not the tank), try setting ADAggroOnly=0 and then ADTarType=1 or 11.
      • ADHold=0|1|1|
        • 1=on 0=off|Debuff spell #|Time to wait for debuff|
        • This is used much like the AHHealMode setting, but only for type 12 debuffs. Sets a timer to hold the toon in the debuff loop (no buffs or events) until the debuff is complete.
      • ADCoolDownX (1,2,3,4,5)=[<item name,alt name>|<item,alt>]
        • For repetitive casting of things like AAs/Items during spell gem cooldowns.
        • Default is five blank entries (ADCoolDown1=,ADCoolDown2=,ADCoolDown3=,ADCoolDown4=,ADCoolDown5=)
        • The first ADCoolDown entry that is available/ready will be used. Uses the standard /casting delimited format. Example:
                      ADCoolDown1=Firebound Orb II|item
                      ADCoolDown2=Force of Elements|alt

      Debuff Spell Sections [ADx]

      • [ADx]
        • Where 'x' is the number of the debuff spell
        • [AD1], [AD2], etc.
        • One ADx ini-section for each debuff in ADCount. 
      • Gem=source
        • Designate what the source of the spell is.
        • Valid entries: gem number, alt, ability, item, script, potionbelt
        • Note that 'potionbelt' does not require a slot number.
        • Examples:
          • Gem=3 Cast this spell from gem 3
          • Gem=alt This spell is an alternative advancement ability
      • Spell=source name
        • Valid entries: spell name, item name, alternate ability name, ability name, script name
        • Examples:
          • Spell=Ensnare This would be generally be paired with an Gem entry indicating which spell gem to cast Ensnare from.
          • Spell=Special Item Thingy  This would be generally be paired with an Gem entry indicating that the source of this spell is an item.
      • SpellFoci=setname
        • Bandolier set name to swap in before casting this spell. Please see MQ2Bandolier and MQ2Cast to understand how to use swap sets.
      • DurMod=<#>
        • Any spell extension percentage, e.g. 05 (for 5%), 25 (for 25%).
        • Due to how spell durations / extensions are calculated, you may need to enter extensions in excess of 100% (e.g. a 25% extension would be entered here as 125). Check your results in game to make sure you have set the correct extension.
      • SpellAlias=spell alias
        • Alias name for the spell. Please note that you can NOT have spaces in your alias names.
      • Announce=channel
        • Channel to announce in, or leave blank for no announce.
          • Announce=/bc  Will announce in MQ/EQBC window
          • Announce=/g  Will announce in group chat
          • Annoucements also support formatting (makes it a bit easier to see in the MQ window). For example:
            • Announce=/bc [+r+]Buffed[+x+] <<[+y+] %t [+x+]>> with[+g+] %s [+x+] 
      • SpellMinMana=<#>
        • Minimum mana percentage to have in order to attempt this spell (e.g. 05 (for 5%), 25 (for 25%)
      • SpellRecast=<#>
        • Number of times to recast this spell for fizzles, interrupts, etc.
      • SpellCastonResist=spell alias
        • If this spell is resisted, is there another alias to cast before another attempt of this spell.
        • Please note that if SpellCastonResist is defined, SpellRecast must be at least 1.
      • SpellDelay=<#>
        • Number of seconds to wait between casts of this spell.
      • TarCnt=<#>
        • Number of targets required to be present to cast this spell. If set to 0, this spell will not be auto-casted.
      • TarType=<#>
        • Designate one target type to cast this debuff on.
        • Valid target types:
          • 0 = All mobs
          • 1 = MA Target only
          • 2 = All except MA Target
          • 3 = Only on named mob
          • 10 = All mobs before next spell
          • 11 = MA target only before next spell
          • 12 = All but MA target before next spell
          • 13 = Only on named mob before next spell
        • Priority Debuffs (10, 11, 12, 13) should be placed first (prior to non-priorities). Settings of 10, 11, 12 and 13 should be in your top spells slots (AD1, AD2, etc)
      • TarBegHP=<#>
        • The target must be equal or below this HP%.
      • TarEndHP=<#>
        • The target must be equal or above this HP%
      • IfSpellImmune=script name
        • This is meant to be a pointer to a quick, one line script that is executed when a mob is immune to the spell you have cast. If you need to do something complicated, other scripts can be called from it. 'Param1' is now passed as the immune target's ID. An example where this would be useful is for chanter mez:
          • /bc {TankName} //multiline ; /varset ACMATarget {Param1};/target id {Param1} will make your <TankName> toon target the immune mob even if he was on another mob at the time.
      • UseHoTT=<#>
        • This will cause the macro to /target the mob and check TargetOfTarget before casting and delay # seconds before checking again if mob is skipped. If not a raid or group member, the macro will move on and recheck that mob for that debuff after the time has expired. Note that this will default to casting the debuff anyways if HoTT isn't available.
        • UseHoTT=101 is a special coding to check if the intended mob is on an XTarget Auto-Hater. Similar to ADAggroOnly, but no need to change targets and you can set it for individual entries. For instance, you want to slow mobs that are not the tank's target (adds) at 100 percent, but only if they are already on XTarget auto-hate (ie, you don't want to aggro them yourself). 
      • PreCondition=one line script
        • Whatever statement you add to this line needs to /return TRUE. i.e. - PreCondition=/if ({This} && {That}) /return TRUE. Only a TRUE return will allow the spell to cast, so script carefully, or leave the lines default.

       

      Buff Section [AdvBuff]

      If you want to cast single target buffs after group buffs, place all of your group buffs first.

      • ABCount=<#>
        • Number of buffs you plan to have.
      • ABNewFormat=[1,0]
        • Set to 1 for ModBot v4 format.  (default)
        • Set to 0 for MobBot v3.49 format.
      • ABMobMax=<#>
        • Max number of targets to track for buffs (do not include pets)
      • ABCheckTime=<#>
        • How often to check for buffs in seconds

      Buff Spell Sections [ABx]

      • [ABx]
        • Where 'x' is the number of the buff spell
        • [AB1], [AB2], etc.
        • One ABx ini-section for each buff in ABCount. 
      • Gem=source
        • Designate what the source of the spell is.
        • Valid entries: gem number, alt, ability, item, script, potionbelt
        • Note that 'potionbelt' does not require a slot number.
        • Examples:
          • Gem=3 Cast this spell from gem 3
          • Gem=alt This spell is an alternative advancement ability
      • Spell=source name
        • Valid entries: spell name, item name, alternate ability name, ability name, script name
        • Examples:
          • Spell=Minor Shielding This would be generally be paired with a Gem entry indicating which spell gem to cast Minor Shielding from.
          • Spell=Special Buff Thingy  This would be generally be paired with a Gem entry indicating that the source of this spell is an item.
      • SpellFoci=setname
        • Bandolier set name to swap in before casting this spell.
        • Please see MQ2Bandolier and MQ2Cast to understand how to use swap sets.
      • DurMod=<#>
        • Any spell extension percentage, e.g. 05 (for 5%), 25 (for 25%).
        • Due to how spell durations / extensions are calculated, you may need to enter extensions in excessive of 100% (e.g. a 25% extension would be entered here as 125). Check your results in game to make sure you have set the correct extension.
      • SpellAlias=spell alias
        • Enter an "alias" for the spell. This is often a short, easier to use name (e.g. the alias for Spirit of the Wolf might be sow).
        • Please note that you can NOT have spaces in your alias names.
      • Announce=channel
        • Channel to announce in, or leave blank for no announce.
          • Announce=/bc  Will announce in MQ/EQBC window
          • Announce=/g  Will announce in group chat
          • Annoucements also support formatting (makes it a bit easier to see in the MQ window). For example:
            • Announce=/bc [+r+]Buffed[+x+] <<[+y+] %t [+x+]>> with[+g+] %s [+x+]  
      • SpellMinMana=<#>
        • Minimum mana percentage to have in order to attempt this spell (e.g. 05 (for 5%), 25 (for 25%)
      • TarCnt=<#>
        • Designate how many targets are required to cast this spell.
          • If set to 0, this spell will not be auto-casted. This is useful for spells that you want to cast manually via alias.
          • For single cast spells (e.g. Spirit of Eagle), TarCnt will most often be set to 1.
          • For group spells (e.g. Flight of Eagles), you might set your TarCnt higher so that it only gets cast when there are more than 2 or 3 people in your group.
            • Over the last few years, mana has not been much of an issue for me, so I tend to use group buffs wherever possible, just to make it easier. 
      • TarType=target type
        • Valid target types are as follows (please note which entries can be used with others and which are exclusive):
          • ShortClassName Used for class specific buffs (ie. haste on "war"). Valid entries are: war shd pal rng mnk rog brd bst ber shm clr dru wiz mag enc nec. Note that any or all of these entries can be used at the same time.
          • self Used for self only spells.
          • grp for Group spells (e.g. TarType=self grp)
          • pet used to cast buffs on all pets in the group.
          • mypet used to cast on only your pet. Please note that pet and mypet are mutually exclusive.
          • cbt for spells to be casted during combat (e.g. an entry for Yaulp would be TarType=self cbt). Please note that any NPC within radius that is not on your exclude list will cause 'cbt' buffs to fire. If you want to buff next to NPCs (and don't plan to kill them), use the exclude command. If you later decide to kill whatever mob you've excluded, use the include command to remove it from list. The macro does not check combat state of the tank for buffs.
          • idle used with cbt for spells to be casted when in or out of combat (e.g. if you wanted to keep Yaulp on at all times (in AND out of combat), your entry would be TarType=self cbt idle). Please note that idle is only used in TarType when cbt is also used.
          • aura used to cast an aura - must be used with self (e.g. TarType=self aura)
            • Note that Bard auras require SpellAlias to be set up to cast, and modbuff will use CastCall to actually cast the aura.
          • tank used to cast only on the designated TankName.
          • petspell used to set up an entry to create/cast a pet.
        • Please note: The default entry is meant to help with setup and includes settings that do not work together. For instance, tank, self and mypet are meant to be used by themselves. If you want to cast the same buff on yourself, your pet, and the tank, create them as separate buff entries.

      • Recast=[TRUE,FALSE]
        • True is only really needed for single targets that are NOT in the group and/or on NetBots. Set Recast TRUE when you want the macro to use the spell worn off messages from EQ for the macro to know who to cast the buff on. This allows you to rebuff toons that are lower level for your normal buff set, or not in EQBC and not in group.
        • For the most part this shouldn't be needed for rebuffing if all of your toons are NetBots members. The macro actually checks the other toons in NetBots and knows what their buffs are, whether the one they're trying to cast will stack, and the duration of the buff if the toon still has it on.
      • SpellIcon=icon name
        • Use when the spell icon has a different name than the actual spell (e.g. the spell Unity of Spirits has a spell icon of Transcendent Foresight. In fact, you could use any one of the four spell icons/names that Unity creates).
          • Please note that if the name you have in SpellIcon doesn't evaluate to a spell name, the buff will be skipped. In other words, leave it blank if your spell doesn't need it.

           

      Event Section [AdvEvent]

      • AECount=<#>
        • Number of events you plan to have.
      • AENewFormat=[1,0]
        • Set to 1 for ModBot v4 format.  (default)
        • Set to 0 for MobBot v3.49 format.  
      • AECheckTime=<#>
        • How often to check for events in seconds
      • AECustomX (1,2,3)=[watch text]
        • Custom emote-triggered events driven by scripts.
        • Default is three blank entries (AECustom1=, AECustom2=, AECustom3=)
        • Each AECustomX entry, if defined, must have a corresponding script entry. For example, by defining AECustom1=greater bloodmoon healing in the AdvEvent section, you would need a corresponding script defined that might read something like:

      [Script-AECustomEvent1]
      Commands=1
      C1=/bc cast stun

      Event Entry Sections [AEx]

      • [AEx]
        • Where 'x' is the number of the event entry
        • [AE1], [AE2], etc.
        • One AEx ini-section for each event in AECount.
      • Gem=source 
        • Designate what the source of the spell is.
        • Valid entries: gem number, alt, ability, item, script, potionbelt
        • Note that 'potionbelt' does not require a slot number.
        • Examples:
          • Gem=3 Cast this spell from gem 3
          • Gem=alt This spell is an alternative advancement ability
      • Spell=source name
        • Valid entries: spell name, item name, alternate ability name, ability name, script name
        • Examples:
          • Spell=Minor Shielding This would be generally be paired with an Gem entry indicating which spell gem to cast Minor Shielding from.
          • Spell=Uber Wand Thingy of Uberness This would be generally be paired with a Gem entry indicating that the source of this spell is an item.
      • SpellFoci=setname
        • Bandolier set name to swap in before casting this spell.
        • Please see MQ2Bandolier and MQ2Cast to understand how to use swap sets.
      • DurMod=<#>
        • Any spell extension percentage, e.g. 05 (for 5%), 25 (for 25%).
        • Due to how spell durations / extensions are calculated, you may need to enter extensions in excessive of 100% (e.g. a 25% extension would be entered here as 125). Check your results in game to make sure you have set the correct extension.
      • Delay=<#>
        • How many seconds do I wait between casts of this spell.
      • EventMinMana=<#>
        • My mana percentage must be at least this to complete this event.
      • EventMinHP=<#>
        • My HP percentage must be at least this to complete this event.
      • MinMana=<#>
        • The event target's mana percentage must be above this to complete this event.
      • MaxMana=<#>
        • The event target's mana percentage must be below this to complete this event.
      • MinHP=<#>
        • The event target's HP percentage must be above this to complete this event.
      • MaxHP=<#>
        • The event target's HP percentage must be below this to complete this event.
      • TarType=target type
        • Valid entries: war shd pal rng mnk rog brd bst ber shm clr dru wiz mag enc nec self tnt (Less is better!)
      • SpellAlias=event alias
        • Enter an "alias" for the event. This is often a short, easier to use name (e.g. the alias for Spirit of the Wolf might be SoW).
        • Please note that you can NOT have spaces in your alias names.
      • Announce=channel
        • Channel to announce in, or leave blank for no announce.
          • Announce=/bc  Will announce in MQ/EQBC window
          • Announce=/g  Will announce in group chat
          • Annoucements also support formatting (makes it a bit easier to see in the MQ window). For example:
            • Announce=/bc [+r+]Buffed[+x+] <<[+y+] %t [+x+]>> with[+g+] %s [+x+]
      • TarCnt=[1,0]
        • Settings are *only* either 1 (on) or 0 (off).


      Cure Section [AdvCure]

      • AQCount=<#>
        • Number of cures you plan to have.
      • AQNewFormat=[1,0]
        • Set to 1 for ModBot v4 format  (default) 
        • Set to 0 for MobBot v3.49 format
      • AQCheckTime=<#>
        • How often to check for cures in seconds. 

      Cure Spell Sections [AQx]

      • [AQx]
        • Where 'x' is the number of cure spell
        • [AQ1], [AQ2], etc.
        • One AQx ini-section for each spell in AQCount. 
      • Gem=source
        • Designate what the source of the spell is.
        • Valid entries: gem number, alt, ability, item, script, potionbelt
        • Note that 'potionbelt' does not require a slot number.
        • Examples:
          • Gem=3 Cast this spell from gem 3
          • Gem=alt This spell is an alternative advancement ability
      • Spell=source name
        • Valid entries: spell name, item name, alternate ability name, ability name, script name
        • Examples:
          • Spell=Minor Shielding This would be generally be paired with an Gem entry indicating which spell gem to cast Minor Shielding from.
          • Spell=Uber Wand Thingy of Uberness This would be generally be paired with an Gem entry indicating that the source of this spell is an item.
      • SpellCntr=
        • Currently not in use.
      • SpellFoci=setname
        • Bandolier set name to swap in before casting this spell.
        • Please see MQ2Bandolier and MQ2Cast to understand how to use swap sets (e.g. -bandolier|<setname>)
      • SpellCureType=cure type
        • Valid entries (type of cure needed): Cursed Diseased Poisoned EnduDrain LifeDrain ManaDrain Blinded CastingLevel Charmed Feared Healing Mesmerized Resistance Rooted Silenced Slowed Snared SpellCost SpellSlowed SpellDamage Trigger All
        • Set the cure type to the best match for the spell, but keep them in order of best cure first.
        • The first cure in your .ini matching the cure type needed (or if you set to "All") will be the first attempted spell.
        • Cures *can* always be interrupted by any heal spell, unless you're using a cure spell that's already listed in your heal section (e.g. Cleric's "Word of XXX" line of spells may or may not interrupt for heals depending on where they are in your heal section).
        • Modcure.inc will cast once per loop and then return to the main loop, so setting group cures (like Radiant Cure) toward the top would be best
        • Be specific on cure types to avoid recasting the same cure over and over if it won't cure you.
      • SpellMinMana=<#>
        • Minimum mana to have in order to attempt this cure.
      • SpellRecast=<#>
        • Number of times to recast this spell for fizzles, interrupts, etc.
      • TarCnt=<#>
        • How many targets should be present to cast this spell, if set to 0, this spell will not be auto-casted.
      • TarType=target type
        • Valid target types are as follows (please note which entries can be used with others and which are exclusive):
          • ShortClassName Used for class specific cures. Valid entries are: war shd pal rng mnk rog brd bst ber shm clr dru wiz mag enc nec. Note that any or all of these entries can be used at the same time.
          • self Used for self only spells.
          • grp for Group spells (e.g. ABTarType1=self grp)
          • pet used to cast buffs on all pets in the group.
          • mypet used to cast on only your pet. Please note that pet and mypet are mutually exclusive.
          • cbt for spells to be casted during combat (e.g. an entry for Yaulp would be TarType=self cbt). Please note that any NPC within radius that is not on your exclude list will cause 'cbt' buffs to fire. If you want to buff next to NPCs (and don't plan to kill them), use the exclude command. If you later decide to kill whatever mob you've excluded, use the include command to remove it from list. The macro does not check combat state of the tank for buffs.
          • idle used with cbt for spells to be casted when in or out of combat (e.g. if you wanted to keep Yaulp on at all times (in AND out of combat), your entry would be TarType=self cbt idle). Please note that idle is only used in TarType when cbt is also used.
          • tank used to cast only on the designated group tank. Tank designation is keyed from either the TankName variable in the setting section (see above) or by setting a toon to Main Tank (Group.Maintank) using the Roles function.
        • Default entry: TarType=tank war shd pal rng mnk rog brd bst ber shm clr dru wiz mag enc nec self mypet grp pet cbt idle
          • Please note that the default entry includes settings that do not work together. Specifically, tank, self and mypet are meant to be used by themselves. If you want to cast the same buff on yourself, your pet and the tank, create them as seperate buff entries.
      • SpellAlias=spell alias
        • Enter an "alias" for the spell. This is often a short, easier to use name (e.g. the alias for Radiant Cure might be RC).
        • Please note that you can NOT have spaces in your alias names.
      • Announce=channel
        • Channel to announce in, or leave blank for no announce.
          • Announce=/bc  Will announce in MQ/EQBC window
          • Announce=/g  Will announce in group chat
          • Annoucements also support formatting (makes it a bit easier to see in the MQ window). For example:
            • Announce=/bc [+r+]Cured[+x+] <<[+y+] %t [+x+]>> with[+g+] %s [+x+]

      AdvPull Section [AdvPull]

      This section is under development.

      • APCheckTime=#
        • Time (in seconds) to wait in between AdvPull executions. Default is 0.
      • APRadius=#
        • The distance around your target to check for more mobs as defined by APMobMax (basically, a check for adds). Default is 40.
      • APMobMax=#
        • The max amount of mobs (target + adds) you will allow before pulling. Default is 1. If there are less than APMobMax mobs within APRadius of your target, it will pull the mob.
      • APScript=Scriptname
        • Name of script to define how you want to tag the mob (throw stone, ranged, item clicky, spell, etc) and executes when you have a mob targeted to pull. The script name must have at least 3 characters. Default is empty. YOU MUST CREATE A SCRIPT TO TAG THE MOB!
        • Modbot Scripts
      • APPath=Pathname
        • The name of the path to run for pulling/movement, as defined in your MBWayPnt.ini (See ModMove for more details on creating a path). The path name must be at least 3 characters. Default is empty.
      • APRetPath=ReturnPathname
        • The name of the path to use to move back to camp. The path must be defined in your MBWayPnt.ini file. The path name must be at least 3 characters. Default is empty.
        • Mostly used for when the path back to camp is a different one than used to pull mobs (ie, you go through a one-way wall to pull or intentionally fall off a ledge and have to run the long way back). If you want to return the same way you came, you can just use WPLoop=TRUE in MBWayPnt.ini instead of having to set up a second path.
      • APBefore=
        • Command or series of commands (with multiline) to execute before the rest of AdvPull section. Must be at least 3 characters. Default is empty.
      • APAfter=
        • Command or series of commands (with multiline) to execute after AdvPull has finished. Default is empty.
      • APAnnounce=
        • A way to announce what you have pulled. Default is empty.
        • Note: This is not just a chat channel, but a place to put a full incoming message, ie:
          • APAnnounce=/gsay Incoming -[ %t ]-
      • APRetries=1
        • Number of times to attempt to pull a mob in case it fails the first try (line of site, etc). This will strafe left and right on subsequent attempts. Default is 1.

       

      MBCommon.ini Settings

      The location and name of MBCommon.ini can be set by changing the following line near the top of Modbot.mac.

      /declare MBCommon string outer MBCommon.ini
      

      It defaults to the ./macros folder, but the line can be changed to any path.

       

      Settings Section [Settings]

      • LoadAlias [1,0] This is an on / off setting to load the "/alias /mb /echo MB-" alias for commands. It is set to 0 after first run when alias should be loaded, but you can set to 1 to add it back to your Macroquest.ini file if it gets deleted.
      • IniLocation Path to your MB_<Toon>.ini files. Must end in / or \ if changed from default.
      • LootIni [Loot.ini] This setting can be used to change the location of your Loot.ini file as well as the name.
      • MBWayPntLocation [MBWayPnt.ini] This setting can be used to change the location of your MBWayPnt.ini file as well as the name of the file. 


      ExcludeList Section [ExcludeList]

      • Zone.ShortName - List of mobs excluded for that zone in a pipe -"|" delimited string. This setting is not present for any zones which you have nothing excluded.
        • See the  'exclude' command above for information on adding/removing items from this list.


      Spell Section [<spell name>]

      • Settings for each spell are saved in their own section along with a MaxLevel=[150] setting. Change to the max level of the spell, if needed.
      • As the macro finds mobs that are immune to the spell, the zone shortname is added to the entry as a variable along with the mob names in pipe delimited format.
        • Mobs that are marked immune to debuffs can be marked in MBCommon.ini with an asterisk to allow for some names that have only some immune, and some not. For example, Dreadspire has some body types with same names where some are immune to mez, and some not (e.g. an aid to the Seneschal - some body types with that mob name are immune to befuddle, and others aren't). By adding an asterisk to the end of the name in the exclude section, the macro will repeat attempts to mez, etc. that mob type (rather than just marking them immune and not casting at all): DreadspireImmune=|an aid to the Seneschal*|
        • The ADIfSpellImmune script, if defined, will only run if the mob is found to be immune after cast, but the asterisk will not be replaced, and the spell will only cast once allowing the spell to still attempt on the next mob it hasn't been cast on.
      • MaxLevel= maximum level of mob that can be affected by debuff. Default is 150. You can change, if needed.

      An entry in the spell section might look something like this:

      [Mystify]
      MaxLevel=83
      thalassius_bImmune=|a sea mephit defender||a sea mephit evoker|
      
      

      ModBot Class INI Examples

      ModBot Class INI Examples page
      


      Scripts and ModBot Variable Usage

      ModBot allows customizable scripts to such an extent you can actually program your own sub-procedures within your INI file. You can harness any global variable within ModBot to use with the scripts.

      Scripts match MQ2 code to every extent, below are several examples of scripts and common variables one would use to create complex scripts.
       

      Understanding scripts, syntax, example, how to

      • Scripts General Info
        • Scripts can be difficult and there are some MQ2 commands that give scripts trouble. Keep this in mind and prepare to post your script code should you have problems.
        • No script can take more then 15 seconds to complete. However, this can be modified in the code directly in the Sub MBScript or even changed in the script you create ({Timer} is the variable).
        • Scripts are executed from top to bottom and you are allowed to use a label :Top (e.g. /goto :Top), in your script. The /goto :Top option allows for complex loops to take place directly from code in the INI file.
        • If you use any INI generated ModBot global string variables that have spaces in your custom scripts they must be encapsulated by 2 apostrophes when used in the script, see PetCast example below.
      • Reserved Characters
        • These characters can not be used in scripts
          • $ "
        • '' (Two apostrophes) are for passing variables with spaces in script code. Use them to replace quotes.
      • Syntax
              [Script-<name of script>]
              Commands=<number of statements>
              C1=<Commands>
              .
              Cn=<Commands>

      What does a script look like in your INI file:

          [Script-HelloWorld]
          Commands=2
          C1=/echo Hello World
          C2=/if ({Timer}>50) /varset Timer 5s
          C3=/goto :Top
      

      In the example above it will echo to the MQ2ChatWindow "Hello World" for 5s. Notice how we do NOT use a $ to reference the "Timer" variable.

      • How To use or launch a script
        • /bc bob script HelloWorld
        • You can set Gem=script and Spell=HelloWorld as a spell name for any of the spells you've configured in ModBot, and it will be triggered when that event, heal, etc would take place.  

      Common Variables (You can use any variable without the $, you can even create new global vars and use them, all from the INI file via Scripts)

      {ACState} = If greater than 0, ModBot thinks you are in combat
      {ACMATarget} = The target of the main assist
      {CampStatus} = If greater than 0, means I've been given a /bc makecamp command
      {FollowFlag} = If greater than 0, means I should be following something
      {TankName} = The acting main assist
      {Me}, {Spawn}, etc = See MQ2 Manual

      Script Examples

      Script examples page


      Related Include Files Information and Examples

      Related Include files information and examples page


      AA Auto-Purchasing Notes

      - The AA-Purchasing routines will parse text from the AA Window to determine if you can purchase an AA as well as the current level and max level of the AA.
      - You can
      choose to customize several aspects of the routine. For example:
          - Set aside a certain number of AA to keep 'banked' and only use AA's above that amount for auto-purchase.
          - Set a warning level for message displays and control the verbosity of the messages.
          - Set the module to switch you to normal experience if you don't have any AA's left to purchase and you are max-AA.     
          - Choose to restrict how many levels of an ability to purchase by putting |# (for max level# to purchase) or
      |M (to purchase the max possible level of the ability).
      - You can also have multiple sections in the ini file.
      AAtoBuy is the default. but you can now call the init routine like this "/call AAInit inisection" and setup a special
          - AAtoBuy is the default. but you can now call the init routine like this "/call AAInit inisection" and setup a special
          - If you are shrouded, the routine will look for a section using your Race_Class (${Me.Race}_${Me.Class}) so that you can setup a special section to purchase skills for a shroud without having to lose your section for your characters Alt Ability skills.
      - Usage:
          - The AA purchasing Setup your ini file.
      | For example:
      |
      |   Your file is AA_Frank.INI
      |   [AAtoBuy]
      |   AACount=2
      |   AA1=Combat Agility|2
      |   AA2=Combat Stability|M
      |
      | Put "/call AAInit" or "/call AAInit inisection" into the initialization section of your macro.
      | Put "/call AAPicker" into your main loop.
      |
      | If you want to use a special purchase section other than AAtoBuy in your ini. For instance to define AA
      | you want to purchase when in a shroud change "/call AAInit" to "/call AAInit yoursectionnamehere"
      | Kroak: Added third argument. '|S'  Which will make you skip to the next possible AA in the list if you don't have enough AA to purchase.
      | This version will also auto-create an .ini file for you at AA_${Me.Name}.ini without setting quantities to buy if you don't have one.


      Tips, Tricks and Troubleshooting

      Here you will find a collection of little gems pulled from the ModBot thread.  At some point, this may morph in to a handy little troubleshooting flowchart, but for now it will serve as kind of a tidbit catchall for things that would otherwise get lost in the hundreds of thread pages... 
      Please note- when you are posting on the forum for help (after reading this wiki of course!) include the MQ2 version, winEQ version and the EQ install type (Titanium / sod / UF) 
       If you want to have colored messages in Announce=/bc you can try some of these:
       b = black
       g = green
       m = magenta
       o = orange
       p = purple
       r = red
       t = cyan
       u = blue
       w = white
       y = yellow
       Example: 
       Announce=/bc [+t+]
       would color the text cyan
      
      Although covered previously on the Wiki quite a few times - If you are having trouble with mobs keeping you from doing non combat things (buff, loot etc) try using the following:
      exclude <mob name,save>
       
      "What I do.. (while targeted on the mob you want to ignore)
      On my tank I have a hotkey. I target the mob to exclude and press it.
      First line is /bcaa //mb exclude ${Target.CleanName}
      second line - /bcaa //mb exclude save
       
      /echo ${ADMobCount} (use this after your exclude to see if the char in question has any mobs on the exclude list. Can be used with /bcaa to see all of your toons mobcounts)
      If you fight near non-combatant mobs, always use the exclude command so the macro doesn't "see" them, and set your Radius= in your toon's .ini file to a minimum.
      I normally keep mine at around 60 to 80 depending on what I'm doing. Remember you can "/varset Radius 50" or something in game with the mac running to find a happy medium." -Ptap Mon Sep 20, 2010 1:18 pm
      
      It also sounds like an exclude hotkey, and pause hotkey would be your best friends.. Here's a few of the hotkeys I use.
      <name>_EQTitan.ini in your everquest folder.		
       	
      Code:
      [Socials]
      Page10Button1Name=TankName
      Page10Button1Color=0
      Page10Button1Line1=/bcaa //varset TankName ${Me.Name}
      Page10Button7Name=Masters
      Page10Button7Color=0
      Page10Button7Line1=/bcaa //varset MasterList ${NetBots.Client}
      Page10Button5Name=pause
      Page10Button5Color=0
      Page10Button5Line1=/bcaa //mb mbpause on
      Page10Button11Name=unpause
      Page10Button11Color=0
      Page10Button11Line1=/bcaa //mb mbpause off
      Page10Button6Name=follow
      Page10Button6Color=0
      Page10Button6Line1=/bca follow
      Page10Button12Name=stop
      Page10Button12Color=0
      Page10Button12Line1=/bcaa //mb stop
      Page10Button10Name=letsroll
      Page10Button10Color=0
      Page10Button10Line1=/bcaa //mb letsroll
      Page2Button1Name=corpse
      Page2Button1Color=0
      Page2Button1Line1=/corpse
      Page2Button6Name=sellitem
      Page2Button6Color=0
      Page2Button6Line1=/ini loot.ini ${Cursor.Name.Left[1]} "${Cursor.Name}" Sell
      Page8Button1Name=include
      Page8Button1Color=0
      Page8Button1Line1=/bcaa //mb include ${Target.CleanName}
      Page8Button1Line2=/pause 5
      Page8Button1Line3=/bcaa //mb exclude save
      Page8Button7Name=exclude
      Page8Button7Color=0
      Page8Button7Line1=/bcaa //mb exclude ${Target.CleanName}
      Page8Button7Line2=/pause 5
      Page8Button7Line3=/bcaa //mb exclude save
       
       
      I normally just keep my keys on page 10 and click from there, but as you can see there's include and exclude keys on pg 8 and another on pg2 I use for setting items to 
      "sell" in my  loot.ini file.
      The /bcaa stuff might not work for some depending on plugin versions, so that cn be replaced with a /bca and /mb on a second line. I find it very handy to have some keys I can
      press  quickly, and always either pause all my toons or exclude npcs before I go into areas that I don't want something attacked.
      
      Having trouble with your background session toons not moving properly? You might try this:
       
      WinEQ=on
      to the [Defaults] section of your mq2moveutils.ini.
      TrueHeading=off might help also in the same section, though I'm not sure if that's needed.
      

      Do your toons wander where they are not supposed to?

      Thanks to Toomanynames for this tidbit: 
      Those who have toon wandering issues or whatnot - when you say "radius", what radius do you mean, modbot, melee, makecamp?  There are actually three things that work together to make certain that your bots fight and return to a certain area - MQ2MoveUtils, MQ2Melee and the MB_charname.ini file (from ModBot). 
      • /makecamp x x x
        • This is a MQ2MoveUtils setting that needs to be properly configured. For example:
          • /makecamp radius x leash=on (or something like that)
        • Please see the MQ2MoveUtils (PMS version) thread and MQ2MoveUtils:v11 for more detailed information.
      • /melee x x x
        • This is an MQ2Melee setting. Those ranges and settings come into play and must be set accordingly to work WITH modbot
        • Please see the MQ2Melee thread for more detailed information.
      • Modbot INI
        • Radius = the max the toon will "See" thiings
        • ACLeash = the max a toon will engage things
      If you don't properly configure MQ2MoveUtils, MQ2Melee and ModBot and confirm those settings are within or compatible with ModBot "ranges" then you'll have issues.

      Credits and Thanks

      Version 4 (Woobs) has undergone major changes since v3.49's last update in 2011. However, the basic coding was provided by many in the community:
      ModBot Birthdate: 10/1/2005
      Original Upkeep by Kroak, but this was started by TooManyNames.
      Special thanks to TooManyNames, Fearless, DKAA, and A_Druid_00.
      And thanks to everyone that contributed suggestions and debugging efforts along the way!

      Subpages (1): Examples
      Comments