Xiris bot recommends the ROF2 EMU build of MQ2 from MMOBugs. As of Spring 2022 it was decided that this would be free, and no longer require a mmobugs.com subcscription. To run the build you will need to go to MMOBugs and create an account. Once the account is created, go to the forums, and find the EverQuest Server Emulator section. In this section there is a thread: MMOBugs MQ2 Installation for Emulator Clients - Download Links and Instructions At the top of the thread you will see download links, and the first 1) is the ROF2 build with the lastest MQ2 codebase. Grab the setup version, and install wherever you want.
XirisBot requires several plugins that are not standard to the E3 builds you are used to. These are more modern plugins than what were generally avaialable. These are powerful and important plugins that will greatly enhance the experience once you become used to them
DanNet was created by Dannuic, one of the main contributers to MQ2 and MQNext. This is a replacement for EQBC that provides direct access to any toon from any other toon via queries and observers. The documentation is found at MQ2Dan on Github While it is not required that you know the details of this plugin, it will be helpful to learn the command syntax since it totally replaces EQBC - specifically the 1:1 replacements for common commands in EQBC. Forexample if in EQBC you'd use /bcaa
instead you'd use /dga
and instead of /bct
you'd use /dt
Once you get used to it, it works the same. IMPORTANT By Default, MQ2Dannet uses fully qualified names as chatsender. ie: EQTitan.Xiris, to preserve backwards compatibility in EVENTs, run /dnet fullnames off
which will make it so chatsender only sends the character name. Note: this command is now always run in the xbot_initialize (xiris_common.inc) on load.
Required for curing of group/raid. Probably also used with E3. Added it here for clarity.
MQ2Nav is a game-changing quality of life improvement. Instead of having your toons /stick
to you, you can have them follow you using MQ2Nav that automatically generates paths to the target (you) or you could tell your entire raid to navigate to a target or predefined (by you) waypoint. MQ2Nav on Github The wiki link will give detail usage. Xiris bot has several built in commands that require MQ2Nav to function ex: /rs FollowMe /type|NAV
The navigation paths are determined by the plugin parsing a pre-generated zone mesh file. These navmesh files are found in the /Macroquest2/MQ2Nav folder. They do not come by default with the compile, it is best to grab a premade package of files from MQ2Mesh grab each package from the expansions listed (you do not need anything past OOW at this point) and extract the zip files to the MQ2Nav folder.
MQ2Medley replaces MQ2Twist for bard songs. This is because medley allows for queing new songs without restarting the twist, which is invaluable for self buffs, casting debuffs, casting nukes, etc. This will require setting up 'medleys' in your characters macroquest.ini file found in the root of your macroquest folder. An example would be for the bard Achlys, /Macroquest2/EQTitan_Achlys.ini Wiki Guide
[MQ2Medley]
Delay=3
Quiet=1
Debug=0
[MQ2Medley-tank]
song1=Niv's Harmonic^18^1
song2=Guardian Rhythms^18^1
song3=Verse of Vesagran^18^1
song4=War March of Muram^18^1
song5=Psalm of Mystic Shielding^18^1
Standard plugin generally. Used to handle the auto skills portion of meleeing, such as backstab/frenzy/kick etc. Note: if there is a desire, I can eliminate this and run it entirely within the macro.
Plugin available in modern compiles that replacing for loops looking at group, and xtarget members hp points. See https://www.redguides.com/wiki/MQ2WorstHurt
While Xiris bot would work with UF, the MQ2 Plugin requirements mean that only the ROF2 build of Everquest will work properly without a huge degredation of service and code changes.
This macro will load the class specific macro. Think of this as a bootstrapper, or loader. The best way to accomplish loading the macro on all toons is to create a single hotkey on your tank wit the line: /dgza /mac bot_loader ${Me.Name} Xiria Xirea 85
The arguments in that command can be described as
/dgza
this is a MQ2Dannet command that everyone in zone do this command/mac bot_loader
load this macro${Me.Name}
This toon is MT - note this could be a hard set name, however, in a hotkey this will resolve to whomever clicked the hotkey. Allows for easy copying of UIs and hotkeys between your tanks and not having to edit every hotkey.Xiria Xirea
These toons are ST and TT85
This is the default healpoint for the MT
This build recommends using an MQ2Autologin script to load your raid. To create the batch file, open up notepad (or notepad++, which is recommended) and for each of your characters you'd be loading in:
ECHO Loading 1 [Xiris]
START "" "C:\Program Files (x86)\EQ\EQ_INI\RoF2_1.lnk" patchme /login:myaccountname TIMEOUT /T 10 /NOBREAK
You should end up with 54 entries in the file, which you should then save as RAID.bat or some other name you'd remember.
Additionally, if you note, the path does not link directly to the eqgame.exe but instead a shortcut link. This just makes it easier to change the path to the .exe file without editing the batch file later. Additionally, you should also create a shortcut link to every character you have while it is not required at this point, this will allow you to load a single toon easily.
To achieve the best performance, you will have to run a PowerShell script (triggerable via batch file) to set the affinity of every eqgame.exe instance to a core. See eqaff.bat
and _AFFINITY.bat
inside the distribution zip file.
XirisBot individual character properties are defined in a INI file, with the naming convention ./Macros/xiris_class_ini/BOT_ClassShortName_CharName.ini
or for example BOT_BER_Ophidia.ini
In each of these INI files there are many sections, which tell XirisBot how the character should behave such as, disciplines, AA, nukes, debuffs, etc. See any of the ini files for examples. Most classes have their own class macros, except for pure Endurance based melee (MNK, ROG, BER) which share bot_melee.mac. Please note that I personally don't usually run a macro on the MT
bot_brd.mac Melee class, with support for nuking, dotting, debuffing, and singing.
bot_clr.mac Priest class, with support for healing, buffing, debuffing, nuking, curing, and healing.
bot_dru.mac Priest class, with support for healing, buffing, debuffing, nuking, dotting, curing, and healing.
bot_enc.mac Caster class, with support for debuffing, buffing, nuking, dotting, and charming.
bot_mag.mac Caster class, with support for pets, buffing, debuffing, and nuking.
bot_nec.mac Caster class, with support for pets, buffing, debuffing, nuking, and dotting.
bot_pal.mac Tank class, with support for buffing, stunning, healing, and offtanking.
bot_rng.mac Melee class, with support for healing, buffing, debuffing, nuking, and healing.
bot_shd.mac Tank class, with support for nuking, lifetapping, debuffing, dotting, and offtanking [recommend as MT during trash clearing].
bot_shm.mac Priest class, with support for healing, buffing, debuffing, nuking, dotting, curing, and healing.
bot_war.mac Tank class, offtanking.
bot_wiz.mac Caster class, with support for nuking, quick nuking, ae nuking
bot_melee.mac Standard melee class macro
While there are many commands built into XirisBot, only a few are generally needed to start. It is recommended that you create hotkeys for these however it is comfortable to use, primarily on your MT. Note that these examples use /rs
which is raidsay, you could also do this with /dgt
which tells all toons online the same thing. A full command list will follow under the detailed library descriptions.
Hotkey that is used on the MT to call assist on the MT's current target, and has the MT attack the target as well.
/multiline ; /rs KillMob ${Target.ID} "${Target.Name}" ${Time.Time24} ; /killthis
Hotkey or command that is used to tell all available buffers to walk through the raid buffing each group (and single target buff defined memembers with special buffs)
/rs doraidbuff ALL
Hotkey or command that is used to tell all available debuffers to debuff the current target. Note: usually debuffers will also debuff on the Attack call, but sometimes you want to predebuff a target (if its rooted like in Tacvi) or force them to re-debuff all at the same time.
/rs DebuffTarget ${Target.ID}
Curing becomes vitally important in Txevu+ As such there are several commands to force curing. Note: for the majority of the time, all toons will request the appropriate cure from their assigned curers. However, there are times when you want to force it.
- Cure All Raid Groups
/dgt cureGroupPoison 45
this example tells all curers to look at their groups and to attempt to cure at least 45 poisons counters. Note that the curer will inspect the curee before casting and if its not required will skip that curee. The valid commands here arecureGroupPoison
cureGroupDisease
cureGroupCurse
- AutoCure the MT
/dt MyCleric autoCureMTOn
this tells a toon named MyCleric to watch the MT and cure anything that lands on her that is cureable. Note since we can set different MTs per cleric (by telling a cleric or whomever/dt changeMT newMT
) you can set multiple clerics to autocure multiple 'MTs'
Healing is usually handled automatically. Specifically healers, in the default healmode (2, this is settable in the ini file) will attempt to heal their MT, themselves, and then their group, in that order. You can set different MTs for various healers and they will watch that MT and that MT only. MTs do not need to be in the group to be healed.
Looting is fairly complex, and is based on xiris_loot.ini (found in the /xiris_common subfolder in your macro folder)
I have an Excel spreadsheet that generates the ini file for myself through Excel macros, but you could do so manually as well. Loot is not auto added to the ini file - an entry must be created.
/dt Looter looton ALL
will tell looter, Looter to loot ALL items as defined as lootable in the ini file
/dt Looter looton QUEST
will tell looter, Looter to loot only QUEST items as defined as lootable in the ini file
Loot INI file layout, arguments seperated by pipes Loot1=Minor Muramite Rune|QUEST|||!|Aergia|F
- Item Name
- Type (VENDOR|TRADE|QUEST) Currently only QUEST is handled differently, the rest is combined under the ALL flag.
- Count (* or integer)
- Class (* or CSV ClassShortName BER,CLR etc)
- Not ToonName or ! for any toon
- Only Tooname or * for everyone
- Beep T or F if the looter should emit a beep if item is found
Movement can be achieved either using MQ2Nav or MQ2MoveUtils(stick) with MQ2Nav far preferable. Note in some cases Nav will fail if the toon is on an unnavigable surface (stuck near wall, etc) and you may have to either manually move them or tell them to stick to you.
/rs FollowMe /type|NAV
or /rs FollowMe /type|STICK
Additionally you can tell toons to navigate to waypoints which you had already defined (the command /nav recordwaypoint WaypointName
)
/rs NavToWP WaypointName
To tell a toon to offtank (and currently only plate classes listen for this) the command is
/dt ToonName offtankon
and the offtank will attempt to offtank any aggrod mob that isn't currently hitting a tank. However due to lag or other issues sometimes this is not 100% reliable. It works mostly though. /dt ToonName offtankoff
will cancel offtanking
XirisBot shares libraries for all class variants. These files are found in the xiris_common sub folder.
XirisBot buffing handlers. The library reads the buff settings in each character ini file to determine what buffs the character can cast (if any). There are several classes of buffs:
- OutOfCombat (OOC) Buffs - These are buffs such as Symbol/Haste/etc which you would generally cast out of combat
- SingleTarget (ST) Buffs - These are buffs that effect a single target, like Panoply of Vie, or Guard of Earth
- Combat (CMBT) Buffs - These are buffs that are (auto) cast during a fight, eg: Spirit of Jaguar
mq2cast, mq2dannet
/dgt DoRaidBuffs *ALL*
Will have all buffers walk through the raid and cast all designated buffs (OOC and ST)./dgt DoCharBuffs *CharName*
Will have all buffers target the specified character, and cast all buffs (note: most buffs are group buffs)/dgt RemoveBuff *BuffName*
Will find and remove that buff from all characters/dgt RemoveAllBuffs
Will remove all buffs from all characters
XirisBot casting handler. The library reads the casting (NUKE, AE NUKE, QUICK NUKE, DOT, FAST DOT, and STUN) settings in each character ini file to determine what the character can cast (if any)
mq2cast, mq2dannet
/dgt SetResistTypes *fire|poison|magic|etc*
Sets the resist types that will be cast. Can be used to limit to only say... fire and magic on Ture (/dgt setresisttypes fire|magic
)/dgt SetUseFastOnly *on|off
Turning this on will have wizards (and other classes if they have any defined QNUKE) only use the QNUKE entries instead of normal NUKE
XiristBot charm handler. The library reads the charming (CHARM) settings in the Bard, Necromancer, and Enchanter ini files. Note this is generally untested as there is very little need to charm things (other than OMM)
mq2cast, mq2dannet
/dt charname CharmNPCByID *NPCID*
Tells toon charname to charm the npc with the id given/dt charname CharmNPCByName *NPCName*
Tells toon charname to charm the npc with the name given/dt charmOn
Allows charming, must be called before telling a toon to charm with the above commands/dt charmOff
Disables charming.
XirisBot common handlers. Contains the links to all other includes. Has the common functions for all the class macros, and serves to kick off all initializations.
mq2cast, mq2dannet, mq2exchange, mq2melee
/dgt KillMob ${Target.ID} "${Target.Name}" ${Time.Time24}
Directs everyone to kill your target/dgt BackOff
Directs everyone to reset melee, stop casting, etc./dgt ChangeMT *MTNAME*
Changes the current Main Tank (MT) to the new MT via name/dgt ChangeSA *SANAME*
Changes the current Secondary Assist (SA) to the new SA via name/dgt ChangeAP *AP*
Changes the autoassist point to int AP/dgt DoStaunchRecovery
Tells everyone to hit Staunch Recovery AA/dgt DoIntensity
Tells everyone to hit Intensity of the Resolute AA/dgt DoServants
Tells everyone to hit Steadfast Servant AA/dgt DoInfusion
Tells everyone to hit Infusion of the Faithful AA/dgt SetupRaid
A mostly internal or event used event. Describes the raid mode currerntly running, defaults to.. DEFAULT. Calls SetupRaid which pulls from xiris_common INI. Sets lists of group leaders, and DI available clerics/dgt RefreshXTarget
Used to manually force raid to refresh their XTarget list.
XirisBot curing handlers. This library has several events that can be fired via hotkey, or auto cures driven by the curing section in the toon ini files. Note that this file is responsible for a toons self-need-cure checks - something to be familiar with.
mq2cast, mq2dannet, mq2debuffs
/dt CurerName AutoCureMTOn
/dt CurerName AutoCureMTOff
Toggle to tell specific character to auto cure the MT (clerics mostly)/dgt cureGroupPoison 45
Tell the curers in raid to walk through their groups and cure 45 poison counters on whomever has poison counters (will skip toons with no counters)/dgt cureGroupCurse 45
Tell the curers in raid to walk through their groups and cure 45 curse counters on whomever has curse counters (will skip toons with no counters)/dgt cureGroupDisease 45
Tell the curers in raid to walk through their groups and cure 45 disease counters on whomever has disease counters (will skip toons with no counters)/dt CurerName cureMe cureType
Asks a curer to cure requester by type (poison, disease, curse) - curer will determine how many counters.
XirisBot debuffing handlers. This library has several events that can be fired via hotkey. Much of the debuffing is automatic and is controlled by character ini file.
mq2cast, mq2dannet, mq2debuffs
/dgt DebuffTarget ${Target.ID}
Will force raid debuffers to cycle through debuffs on target.
XirisBot debuffing handlers. This library has several events that can be fired via hotkey. Much of the debuffing is automatic and is controlled by character ini file.
mq2cast, mq2dannet, mq2debuffs
/dgt DebuffTarget ${Target.ID}
Will force raid debuffers to cycle through debuffs on target.
XirisBot event handler(s). This library has several sub libraries. These contain all the handlers for specific raid/mob events, such as MPG trials, or Anguish events. Each of those files is specific to the raid, and should be familiarized before attempting those raids.
all
Many events, all raid specific.
XirisBot healing handler. This library is a core library for priest classes.
mq2cast, mq2dannet
/dgt GroupHeal
Tells every capable class to fire a group heal/dgt InterruptON
/dgt InterruptOFF
Toggles the ability to interrupt heals if no longer necessary (used usually in conjunction with efficiency mode)/dgt ChangeHP 85
Changes the MT heal point to provided integer/dgt ChangeHPTank 85
Changes the MT heal point to provided integer/dgt ChangeHPSelf 85
Changes the Self heal point to provided integer/dgt ChangeHpGroup 85
Changes the Group heal point to provided integer/dgt HealMode EFFICIENT|DEFAULT
Changes the heal mode (and spells cast) to either default or efficient mode. Efficient recommended for most events if you have many clerics./dt Healer FocusHEALMT_ON|FocusHealMT_OFF
Toggles the healer to only heal self and MT/dt Healer HealType 0|1|2|3
Changes the heal type to following:- /if (${int_healMode}==0) /echo \a-wChanging healing \aoTYPE \a-wto \ag0-Self (only)
- /if (${int_healMode}==1) /echo \a-wChanging healing \aoTYPE \a-wto \ag1-MT (and self)
- /if (${int_healMode}==2) /echo \a-wChanging healing \aoTYPE \a-wto \ag2-Group (and MT, includes self)
- /if (${int_healMode}==3) /echo \a-wChanging healing \aoTYPE \a-wto \ag3-GroupOnly (includes self)
/dgt FireTotem X
where X is the totem group. (Cleric, Druid, Shaman) defined by char ini. Will cause toons in group X (integer) to place their heal totems
/dgt CHStart 1 ${Me.Name} Xiria 30 cleric1,cleric2,cleric3,cleric4
Will start a ch chain with the 4 clerics listed. 3 second delay. Chain key of 1, meaning that chain is index 1, so multiple chains can be run.CHStart ChainIndex HealTarget BackupTarget Delay [CSV Clerics]
/dgt CHStop 1
Will stop the 1 index CHChain/dgt CHPause 1
CHChain #1 will pause until resumed/dgt CHResume 1
CHChain #1 will resume/dgt CHSwitch 1 Xiria
CHChain #1 will switch to healing Xiria