MQ2Bot - MMOBugs Wiki

Plugin Info
Name MQ2Bot
Author PeteSampras
Link Forum Link
Commands /bot
Source Available No
Uses INI File Yes

Description

MQ2Bot will play your character for you, similar to a mercenary using whatever AAs and spells/items that you have memorized.

Pausing the plugin

In addition to turning /bot off, you are able to pause the plugin via macro interaction.

You can /declare Looting, MQ2BotPause, Pulling as variables in your macro and if any of them return TRUE or a NUMBER, the macro will pause. If they are FALSE/0, the plugin unpauses.

Ie. /declare Looting bool outer /varset Looting TRUE

Commands

  • /bot on Turns on bot functionality
  • /bot off Turns of bot functionality
  • /bot key=value Updates your INI and variable key to be the new value. Ie. /bot MeleeAt=10 will set your MeleeAt to 10. It is case insensitve, so you can /bot meleeat=10 if you want.
  • /loadbot Rescans your spells, so what you have memorized will be used

NB: This used to be /loadspells and was renamed

  • /loadignore Loads mob ignores and immunities from your mq2/macros/Mob_Ignore_List.ini if you have one from bot.mac
  • /invis Uses designated Bot.Invis spell
  • /ivu Uses designated Bot.InvisUndead spell
  • /lev Uses designated Bot.Levitate spell
  • /imob Adds current target to Bot.Ignores and Mob_Ignore_List.ini
  • /mmob Adds current target to Bot.MezImmunes and Mob_Ignore_List.ini
  • /smob Adds current target to Bot.SnareImmunes and Mob_Ignore_List.ini
  • /cmob Adds current target to Bot.CharmImmunes and Mob_Ignore_List.ini
  • /coth If you are a mage, this calls of the hero the farthest PC in group.
  • /coth PeteSampras If you are a mage, this calls of the hero PeteSampras.
  • /coth group If you are a mage, this uses group version of Call of the Hero.
  • /doorclick This targets the nearest door, runs to it in a straightish line, and clicks it when in range.
  • /campfire This will attempt to set a standard fellowship campfire. It does not check if there are enough members nor if the ground is too steep. It will attempt one campfire per command.
  • /bottwist 1 2 3 4 Internal version to /twist 1 2 3 4 songs.
  • /bottwist once 1 Internal version to /twist once 1.
  • /bottwist off Internal version to /twist off.
  • /immunes <-- toggles ignoring of immunes on to off to on to off.
  • /immunes off <-- turns immune checks off.
  • /immunes on <-- turns immune checks on.
  • /petgear <-- Equips 1 piece of pet gear for every slot you have available in inventory. First detected, first added.
  • /invitegroup <-- invites up to 5 other guildies to your group based on proximity.
  • /inviteraid <-- invites nearby guildies to raid
  • /removeaura <-- removes aura from you.
  • /offtank # <-- Will offtank any mobs that are XTarget #.
  • /findmob <-- Uses MQ2Navigation to find and pull nearest mob.

Required plugins

Macro Data

This plugin adds a new TLO

  • ${Bot} : BoolType - Returns TRUE if MQ2Bot is loaded.

BotType

  • Active : SpawnType Is /bot on? TRUE/FALSE.
  • MinHP : SpawnType Lowest PctHP Group member in 250 range. Bot.MinHP[#] will change 250 to whatever you put there.
  • MinPetHP : SpawnType Lowest PctHP Group member pet in 250 range. Bot.MinPetHP[#] will change 250 to whatever you put there.
  • MinMana : SpawnType Lowest PctMana Group member in 250 range. Bot.MinMana[#] will change 250 to whatever you put there.
  • XMinHP : SpawnType Lowest PctHP XTarget PC or merc in 250 range. Bot.XMinHP[#] will change 250 to whatever you put there.
  • XMinPetHP : SpawnType Lowest PctHP XTarget PC owned pet in 250 range. Bot.XMinPetHP[#] will change 250 to whatever you put there.
  • XMinMana : SpawnType Lowest Pctmana XTarget PC or merc in 250 range. Bot.XMinMana[#] will change 250 to whatever you put there.
  • XPriority : SpawnType Highest priority NPC or NPC pet on XTargetin 250 range. Bot.XPriority[#] will change 250 to whatever you put there. Formula is mob level + 15 if named, 10 if mez immune, 5 if snare immune, - 25 if a pet.
  • NetBotMinHP : SpawnType Lowest PctHP NetBot client member in 250 range. Bot.NetBotMinHP[#] will change 250 to whatever you put there.
  • Facing : SpawnType Am I facing mob within 5 degrees? Bot.Facing[#] will change 5 to whatever you put there.
  • FacingMe : SpawnType Is mob facing within 5 degrees of me? Bot.FacingMe[#] will change 5 to whatever you put there.
  • Farthest : SpawnType Farthest PC in group from you, if any.
  • Outside : BoolType Do I think I am outside?.
  • Restricted : SpawnType Zones, by ID, that mq2bot disables automatic functions.
  • InvisSpell : StringType Name of invis AA to be used with /invis, if any.
  • IVUSpell : StringType Name of IVU AA to be used with /ivu, if any.
  • Invis : BoolType Am I invis? (not counting IVU or invis to animals).
  • IVU : BoolType Am I IVU?
  • Levitate : StringType Name of levitate AA to be used with /lev, if any.
  • SpellGem : IntType Current casting SpellGem (1-12). Returns 13 if item is casting.
  • SpellETA : IntType Current time in tenths of a second until current cast is complete.
  • CastReady : BoolType Are you ready to cast a spell? Returns FALSE if in global cooldown.
  • Slowed : TickType Is target slowed?
  • Rooted : TickType Is target rooted?
  • Mezzed : TickType Is target mezzed?
  • Crippled : TickType Is target crippled?
  • Malod : TickType Is target malod?
  • Tashed : TickType Is target tashed?
  • Snared : TickType Is target snared?
  • Hasted : TickType Is target hasted?
  • Freeze : TickType Does target have mindfreeze effect line on it?
  • Skin : TickType Does target have dru/rng skin line on?
  • Focus : TickType Does target have bst/shmfocus line on?
  • Regen : TickType Does target have regen?
  • Symbol : TickType Does target have pal/clr symbol on?
  • Clarity : TickType Does target have clarity line on?
  • Pred : TickType Does target have rng pred line on?
  • Strength : TickType Does targethave rng str line on?
  • Brells : TickType Does target have pal brells line on?
  • SV : TickType Does target have bst SV line on?
  • SE : TickType Does target have bst SE line on?
  • HybridHP : TickType Does target have brells/str/sv line on?
  • Growth : TickType Does target have wild growth line on?
  • Shining : TickType Does target have shining rampart line on?
  • DeepSleep : TickType Does target have Deep Sleep debuff on?
  • Aego : TickType Does target have pal/clr Aego on?
  • Heal : SpellType How many Heal spells are there? If Bot.Heal[#], returns spell info for that spell.
  • Nuke : SpellType How many Nuke spells are there? If Bot.Nuke[#], returns spell info for that spell.
  • Dot : SpellType How many Dot spells are there? If Bot.Dot[#], returns spell info for that spell.
  • Swarm : SpellType How many Swarm spells are there? If Bot.Swarm[#], returns spell info for that spell.
  • HealPet : SpellType How many HealPet spells are there? If Bot.HealPet[#], returns spell info for that spell.
  • Aggro : SpellType How many Aggro spells are there? If Bot.Aggro[#], returns spell info for that spell.
  • Rez : SpellType How many Rez spells are there? If Bot.Rez[#], returns spell info for that spell.
  • SelfBuff : SpellType How many SelfBuff spells are there? If Bot.SelfBuff[#], returns spell info for that spell.
  • Fade : SpellType How many Fade spells are there? If Bot.Fade[#], returns spell info for that spell.
  • Jolt : SpellType How many Jolt spells are there? If Bot.Jolt[#], returns spell info for that spell.
  • Debuff : SpellType How many Debuff spells are there? If Bot.Debuff[#], returns spell info for that spell.
  • Mez : SpellType How many Mez spells are there? If Bot.Mez[#], returns spell info for that spell.
  • Root : SpellType How many Root spells are there? If Bot.Root[#], returns spell info for that spell.
  • Snare : SpellType How many Snare spells are there? If Bot.Snare[#], returns spell info for that spell.
  • FightBuff : SpellType How many FightBuff spells are there? If Bot.FightBuff[#], returns spell info for that spell.
  • MainTankBuff : SpellType How many MainTankBuff spells are there? If Bot.MainTankBuff[#], returns spell info for that spell.
  • PetBuff : SpellType How many PetBuff spells are there? If Bot.PetBuff[#], returns spell info for that spell.
  • Pet : SpellType How many Pet spells are there? If Bot.Pet[#], returns spell info for that spell.
  • Mana : SpellType How many Mana spells are there? If Bot.Mana[#], returns spell info for that spell.
  • Endurance : SpellType How many Endurance spells are there? If Bot.Endurance[#], returns spell info for that spell.
  • Buff : SpellType How many Buff spells are there? If Bot.Buff[#], returns spell info for that spell.
  • Aura : SpellType How many Aura spells are there? If Bot.Aura[#], returns spell info for that spell.
  • Lifetap : SpellType How many Lifetap spells are there? If Bot.Lifetap[#], returns spell info for that spell.
  • Adds : SpawnType How many adds are there? If Bot.Adds[#], returns spawn info of that # add.
  • AddByID[x] : IntType What, if any, is this add ID.
  • AddCount[x] : IntType Returns total number of adds (same as Bot.Adds), Bot.AddCount[250] returns the number of adds within 250 range.
  • PossibleAdds : SpawnType How many possible adds are there? If Bot.PossibleAdds[#], returns spawn info of that # add.
  • Merc : StringType Last known name of your merc.
  • CurrentSub : StringType Last subroutine entered in the plugin.
  • Named : BoolType Enhanced Target.Named.
  • QuestMob : BoolType Is target a quest giver/vendor/etc?
  • MezImmune : BoolType Is target a known mez immune?
  • CharmImmune : BoolType Is target a known charm immune?
  • SnareImmune : BoolType Is target a known snare immune?
  • Ignore : BoolType Is target a known ignore mob.
  • SnareImmunes : StringType SnareImmunes List from Mob_Ignore_List.ini?
  • MezImmunes : StringType MezImmunes List from Mob_Ignore_List.ini?
  • CharmImmunes : StringType CharmImmunes List from Mob_Ignore_List.ini?
  • Ignores : StringType Ignores List from Mob_Ignore_List.ini?
  • SpellCat[#|name] : StringType What category of spell is this?
  • ZoneTimeSec : IntType How many seconds have I been in zone?
  • ZoneTimeMin : IntType How many minutes have I been in zone?
  • ZoneTimeHour : IntType How many hours have I been in zone?
  • Version : StringType What version of mq2bot am i using?
  • LastHit : IntType When was i last hit, in seconds?
  • Zoning : BoolType Am i zoning?
  • SpellDuration[#|name] : TicksType What is the duration of the longest portion of this spell?
  • INI : StringType What INI [Section] am i using?
  • BuffList : StringType What buffs/debuff major categories do I have on me?
  • TargetBuffList : StringType What buffs/debuff major categories does target have?
  • PetBuffList : StringType What buffs/debuff major categories does my pet have?
  • Disc : SpellType How many discs are there? If Bot.Disc[#], returns spell info for that disc.
  • HoT : IntType Do I have a heal over time on me? If so, what amount per tick.
  • Knockback : SpellType How many Knockback spells are there? If Bot.Knockback[#], returns spell info for that spell.
  • Grab : SpellType How many Grab spells are there? If Bot.Grab[#], returns spell info for that spell.
  • HPLessThan[x] : IntType How many people have less than x amount of PctHPs in group.
  • Tells[x] : IntType Returns the tell in x position in the stored queue. If just Bot.Tells, it will return the total amount in the queue.
  • HaveBuff[name] : BuffType Do i have a buff with "name" on long or short duration buffs?
  • Status : StringType Bot plugin status, possible returns are ON, OFF, PRE, UNKNOWN.
  • AvgMana : SpawnType Average PctMana of group members in 250 range. Bot.AvgMana[#] will change 250 to whatever you put there.
  • AvgHP : SpawnType Average PctHPs of group members in 250 range. Bot.AvgHP[#] will change 250 to whatever you put there.
  • TargetingMe : SpawnType This is the first add, if any, that is targeting me.
  • NotTargetingMe : SpawnType This is the first add, if any, that is NOT targeting me.
  • UsePet : Bool Is bot set to summon and use pet?
  • Pulling : Bool Am i pulling?
  • Returnng : Bool Am i returning from a pull?
  • PullMob : SpawnType This is the mob I am pulling, if any.
  • Sickness : BuffType Do i have a buff with revival or resurrection sickness on me, if so returns the spell?

If statements

If statements are Case Sensitive!! If statements allow you to make customized settings for individual spells/AAs/items to cast only if certain requirements are met above the generic setting. These are just like if statements for mq2melee.

Format is SectionIf#=
ie.
DotIf2=${Target.PctHPs}>80

NukeIfX=whatever <-- This corresponds to your nuke numbers (which are now displayed when you /bot on) Also you can check them via ${Bot.Nuke[x]}. Any statements you put in ini will also display in the proper place beneath the Nuke. Everything is labeled so you know what is what.

Example, I only want to use Nuke0 if the target is named and I have Twincast on:

[MQ2Bot]
NukeIf0=${Bot.Named} && ${Bot.Twincast}
NukeIf7=${Bot.Named} && ${Me.Song[Sustained Destruction].ID}

Configuration

MQ2Bot provides configuration

Sample Configuration

server_CharacterName.ini

[MQ2Bot]
BotVersion=2014.0519
CycleDelay=3
DefaultGem=1
AnnounceEcho=1
AnnounceEQBC=0
AutoInvisDistance=0
AssistAt=100
AssistRange=100
MercAssistAt=95
MercAssistRange=50
MeleeAt=0
MeleeDistance=40
PetAttackAt=100
PetAttackRange=60
MedStartAt=0
MedStopAt=0
MedToFull=0
MinManaToNuke=0
AACutoffTime=10
AAStopAt=25
AggroAt=70
AutofireAt=0
AutofireDistance=100
DebuffAdds=1
DebuffAt=100
DebuffStopAt=10
DotAt=99
DotStopAt=10
FaceAngle=180
FadeAt=20
GrabAdds=0
GrabPrimary=0
HealAt=80
HealDelayedAt=95
HealDurationAt=95
HealGroupAt=80
HealPetAt=80
ImHitAt=50
JoltAt=70
KnockbackAdds=0
KnockbackPrimary=0
LifetapAt=80
LootInCombat=0
LootRadius=0
ManaAt=80
NukeAt=99
RezRadius=100
RootAdds=15
RootPrimary=0
SnareAt=10
SwarmAt=99
UseAutoFire=0
UseAENukes=1
UseAura=1
UseClickyBuffs=1
UseClickyNukes=1
UseFightBuffs=1
UseMainTankBuffs=1
UseManaInCombat=1
UseMez=1
UsePet=1
CustomPetSpell=Shard of Air
UsePetBuffs=1
UseSelfBuffs=1
UseStick=0
StickSettings=30 healer
UseNetBots=1
NetBotsName=PeteSampras
RestTwist=1 2 3 4
CombatTwist=12 2 4

Configuration Explanation

  • /bot [on|off]: Turns on and off the active portion of the plugin.

Generic settings

[MQ2Bot]
BotVersion=2014.0423 
Current Version of plugin
RestrictedZones=344,202,151,345 
Zones, by ID, that mq2bot disables automatic functions.
CycleDelay=3 
Will only check plugin once ever X cycles to reduce system strain. DO NOT SET TO ZERO!
Bot=1 
Use the plugin? You can ignore this
AnnounceEcho=1 
Announce AA/Spells/Skills in /echo? 1 = on, 0 = off
AnnounceEQBC=0 
Announce AA/Spells/Skills in EQBC? 1 = on, 0 = off
AnnounceAdds=1 
Announce Adds in /echo? 1 = on, 0 = off
AlwaysCheckAdds=0 
0 off, 1 is on. This will perform add handling and allow access to Bot.Adds/Bot.Adds[x] and allow add messages even while /bot off. This is so you can use it in macros if desired.


BotCommandsOn= 
Slash commands to be run when /bot on *Example: BotCommandsOn=/xtarget set 1 groupassisttarget
BotCommandsOff= 
Slash commands to be run when /bot off *Example: BotCommandsOff=/g Pete Sampras is better than Roger Federer


DefaultGem=1 
Default gem to use, (use # 1-12)
BuffPassword=NULL 
Change this password, and then use password=Spell Name to request spells/AA from other toons. it is Case Sensitive. ie. BuffPassword=PeteSampras, then I would just say in group/tell/guild: "/g PeteSampras=Unified Hand of Credence" and my cleric would add that spell to the queue and cast it on me when available.
AuthorizedUsers=|guild|group|netbots|PeteSampras| 
Available generic entries are "guild", "group","netbots","raid", otherwise you can add specific characters. If you add any generic entries, guild / group / netbots / raid members respectively, will be considered as authorized users. This bypasses need for BuffPassword.
MedStartAt=90 
Flag yourself as medding and sit as able once you reach this % mana or lower
MedStopAt=90 
Remove medding flag and stop sitting once you are above this % mana
MinManaToNuke=0 
Minimum Me.PctMana to use Nukes/DoTs/Swarm pets.


AutoFollowLeader=0 
Autofollow leader? 1 = on, 0 = off
AutoFollowSettings=30 healer 
stick settings for autofollow. (NB: Used to be "Stick" not "Autofollow")


UseNetBots=1 
Use netbots to assist for targets? (netbots/eqbc must be on and enabled)
NetBotsName=PeteSampras 
Name of toon to assist in eqbc/netbots (note that both toons must have netbots on and send/get)


LootRadius=0 
Radius to loot corpses using mq2advloot
LootInCombat=0 
1 = on, 0 = off if you want to loot while you are ${Me.CombatState.Equal[COMBAT]}


RepositionIfSummoned=1 
1 = on, 0 = off. This will save your location when you first gain aggro, and if summoned, will move back to that location.


SummonModRods=1 
1 = on, 0 = off. This will enable/disable mod rod summoning on mage.

Attack/assist settings

AssistAt=100 
 % hp of Bot.Adds[1] to target the mob at
AssistRange=100 
Spawn[].Distance away to target mob at
MercAssistAt=100 
 % hp of target, if less than, to /mercassist
MercAssistRange=0 
distance of kill target, if less than, to /mercassist
MeleeAt=100 
Melee if target is at or below this % hp
MeleeDistance=40 
Melee if target is within this distance
PetAttackAt=100 
 % hp of target to send pet at
PetAttackRange=60 
Spawn[].Distance away to send pet at
StandOnPetAttack=0 
Use /sit off before doing /pet attack
UseAutoFire=0 
Use Autofire if target is below this %, is within AssistRange, and is more than 35 range
AutofireAt=0 
Autofire if target is at or below this % hp
AutofireDistance=100 
Autofire if target within this distance
PullingDistance=0 
Find targets to pull within this distance (Default is 0 -- Change this or the bot will not find any targets)

Routines

AACutoffTime=10 
Me.AltAbility[].MyReuseTime, in minutes, for making a skill only fire on named mobs.
AAStopAt=25 
Stop using AAs if target is below this % hp
AggroAt=70 
Use aggro spell if you are Group.MainTank and next closest person is this % aggro or higher
DebuffAdds=1 
Debuff add(s)? 1 = on, 0 = off
DebuffAt=100 
Debuff target/adds if they are this % hp or less
DebuffStopAt=10 
stop debuffing targets if they are below this % hp
DotAt=99 
Use DoT spells if target is at this % hp or lower
DotStopAt=10 
Stop using DoT spells if mob is below this % hp
GrabPrimary=0 
Distance, if farther than this, to fling the primary mob you are fighting to you. 0 turns it off
GrabAdds=0 
Distance, if farther than this, to fling additional mobs you are fighting to you. 0 turns it off
HealAt=80 
this is any heal not specifically broken out elsewhere
HealDurationAt=95 
This is all Heal over time spells
HealDelayedAt=95 
this is all promised renewal type lines
HealGroupAt=80 
this is all AE/group only spells
HealPetAt=80 
Heal any pets in group if they are below this % hp
ImHitAt=40 
If you get hit and your HP is below this value use ImHit defensive disc/aa/spell
InterruptToHealAt=0 
 % HP, if lowest group member is below this amount, it will interrupt your non-heal spell to heal them. I may set default to like 60 for priests, for now default is 0.
JoltAt=70 
Use aggro spell if you are not Group.MainTank and you are above this % aggro or higher
KnockbackPrimary=0 
Distance to Knockback the primary mob you are fighting. 0 turns it off
KnockbackAdds=0 
Distance to Knockback additional mobs you are fighting. 0 turns it off
LifetapAt=80 
Lifetap if your hp is below this % (may still wait until lower if lifetap gives more than you need)
UseAENukes=1 
Use Nukes that do AE damage?
NukeAt=99 
Nuke target once it is below this %
RootPrimary=0 
Distance to root the primary mob you are fighting. 0 turns it off
RootAdds=15 
Distance to root additional mobs you are fighting. 0 turns it off
SnareAt=10 
Snare target once it is below this %
SwarmAt=99 
Use swarm pet/AA once target is below this %
CustomPetSpell=Shard of Air 
Use this pet spell instead of highest level
PetIllusionItem=Petamorph Wand - Domain Prowler 
item name to use whatever spell illusion spell you want kept on your pet. *name of item, not spell*

Use or don't use settings

UseAura=1 
Use aura(s)? 1 = on, 0 = off
UseClickyBuffs=1 
Use Clicky Buff(s)? 1 = on, 0 = off
UseFightBuffs=1 
Use FightBuff(s)? 1 = on, 0 = off
UseMainTankBuffs=1 
Use MainTankBuff(s)? 1 = on, 0 = off
UseManaInCombat=1 
Use Mana related AA/spell(s) in combat? 1 = on, 0 = off
ManaAt=80 
Use Mana related AA/Spells if below this % mana (or if group member is below this % mana)
UseMez=1 
Use Mez(s)? 1 = on, 0 = off
UsePet=1 
Create pet(s)? 1 = on, 0 = off
CustomPetSpell=Shard of Air 
Use a specific pet spell instead of auto detected pet spell? Use exact name of spell.
UsePetBuffs=1 
Use Pet Buff(s)? 1 = on, 0 = off
UseSelfBuffs=1 
Use Self Buff(s)? 1 = on, 0 = off

Bard Specific

RestTwist=off 
This will /twist off when there are no adds
CombatTwist=12 2 4 
This will /twist 12 2 4 when there are adds

Custom Clickies

You can add up to 20 custom clicky items by adding "Clicky##=item name" to the MQBot section of your character INI file.
For example, to add the Enchanter's Epic 2.0, Staff of Eloquence, add the following:
Clicky0=Staff of Eloquence

Bot will recognize Clicky0 through Clicky19, and supports If conditions as well in the form of ClickyIf0 through ClickyIf19.

Troubleshooting

If you are having issues with MQ2Bot please create a post in the MQ2Bot forum.

In your post attach the following:

  • [MQ2Bot] section of your character's MQ2 INI (serverName_characterName.ini in MQ2 folder)
  • Debug log (MQ2Bot_serverName_characterName.log in MQ2 Logs folder)


To enable debugging use the following commands:

/bot Debugging=1
/bot DoDebug=1

Version History

  • 20140518 PeteSampras @ 20140518
    • Updated to latest version
    • Change 2
  • 20150426 PeteSampras @ 20150426
    • Updated TLO members
    • Updated commands

Availability

This plugin is in semi-closed. The restrictions are listed above in the Full vs Partial access section. To gain full access, you simply need to actively participate in feedback on the threads or donate to the cause. Emails can be directed to PeteSampras.mmobugs@gmail.com regarding access.