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.
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.
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]
Must have a buff entry for summoning a mount (in the AdvBuff section - see note for ABTarType).
MasterList=[PC Name,PC Name,PC Name,...]
Comma delimited list of names. Can also use NetBots to designate that any chars using NetBots can act as master. Examples:
MasterList=Basher,Slacker
MasterList=NetBots
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
SPetAssist=[1,0]
Assist and swarm pet attack or not. Default: 0
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.
DoPetShrink=[TRUE,FALSE]
Must have a buff entry for PetShrink (in the AdvBuff section - see note for ABTarType).
DoSelfShrink=[TRUE,FALSE]
Must have a buff entry for SelfShrink (in the AdvBuff section - see note for ABTarType).
AllowBuffRequests=[Guild,Raid,Group,Fellowship,All]
Should I allow buff requests from characters outside of my MasterList. This should be used prudently.
Any combination of the above entries is allowed. All=EVERYONE, not just all of the preceding 4 choices.
Default is none (empty list).
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
InfoMsgLevel=<0,1>
Used to control some of the messages being displayed by ModBot in the MQ2 window. Things like heal interrupts, recasting, retrying, etc.
InfoMsgLevel=0 will suppress most of these messages (this is the default to cut down on unnecessary processing).
InfoMsgLevel=1 will display these messages.
TimeStampOnEcho=[TRUE,FALSE]
Control the display of timestamps on ModBot echoing to the MQ2 window.
DoTells=[TRUE,FALSE]
If true (the default), will relay Tells received on the bot to the EQBC window and perform the beepcommand (see MBCommon.ini settings).
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).
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>.
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
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.
As of ModBot version 5.12, heal durations will now use Spell[x].MyDuration as default (leave this setting 0), making this semi-deprecated. However, you can still use this setting in combination with the old default of Spell[x].Duration, if you wish.
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. Usually used 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.)
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
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> or <charmspell|charmcast>[|NPC Type|list of names]
Alias name for the spell. Please note that you can NOT have spaces in your alias names.
For charming, <NPC Type 0=any, 1=undead,vampyre 2=animal,insect 3=summoned 4=(specify name)>|<list of names for type 4>
Example: charmspell|4|lowland basilisk,a emerald drake
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=<fizzle/interrupt retries#|resist retries#>
Number of times to recast this spell for fizzles, interrupts, etc.
If you use only one number, the second number will default to the first number.
Examples:
SpellRecast=0|0 (the Default) Do not recast on either situation
SpellRecast=2|0 Recast up to 2 times for fizzles/interrupts, none for Resists
SpellRecast=2 Recast up to 2 times for fizzles/interrupts, and up to two times for Resists
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.
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
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.
As of ModBot version 5.12, buff durations will now use Spell[x].MyDuration as default (leave this setting 0), making this semi-deprecated. However, you can still use this setting in combination with the old default of Spell[x].Duration, if you wish.
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)
tank used to cast only on the designated TankName.
petspell or petcast used to set up an entry to create/cast a pet.
mountspell or mountcast used to set up an entry to summon a mount.
selfshrink used to set up an entry to shrink your toon. Optionally specify size (defaults to 1.5), selfshrink|1.5
petshrink used to set up an entry to shrink your pet. Optionally specify size (defaults to 1.4), petshrink|1.4
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>[|additional icon, additional icon, etc.]
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.
Additional icon(s) can be used to have other spells 'count' as having the buff. So, you should be able to say that single haste and group haste (as examples) are equivalent/block each other.
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.
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
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).
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
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.
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 Corrupted 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 that are only valid on your group members
cbt for spells to be casted during combat. Please note that any NPC within radius that is not on your exclude list will cause 'cbt' buffs to fire.
idle used with cbt for spells to be casted when in or out of combat. 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.
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+]
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.
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.
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.
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.
BeepCommand This command will be executed with /docommand to issue system alerts sounds for things like Relayed Tells, Unmezzable mobs, etc.
Default: BeepCommand=beep ding.wav
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.
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|