Multi class mercenary macro suite

pikipiki

Lifetime Member
Joined
May 9, 2020
Messages
31
Reaction score
23
Points
8
Hi, some months ago I decided to check MQ2 in order to make my multibox life easier, not really to harrash other people in camps and zones. Having a background in 'old school programming' (let's say I am stuck in C and never got too deep into POO) the easiest and I have to admit much funny way was through macro interfacing.

So far I have build up a 'suite' of modular macros that are able to perform very decently the following classes: CLR, SHM, WAR, BER, ROG and MNK. Even if they are not a complete class ability compendium they allow me to box very easily all ToV heroic missions with some setup and planning with basically only having to play one of the toons (theres also some ability build to unatended farming 'easy' zones, and flexible ways to assist, etc, ... again its not complete because it's evolving as I add on features I need)

There is a quick dev question: is there a way I can get an UI window with multiple buttons, kind of an independen hotbar windows, other than modding the EQ UI ones ?

And from more a curiosity point of view, since I am unsure I should 'release' in any way these macros (I cant guarantee any kind of support and enhancementes depend a lot on RL time and thats pretty much gone past the summertime). What would be the best way to make them 'available ... disclaimed allowed' probably for free (but some perk like volonteer krono donation so I can keep up more accounts gold for testing) ?
 
To add up more information:

The suite so far is made of these macros:

Shared core code: mcmerccore
Shared basic multiclass code: mcmercutils
Class macros: mcmercXXX being xxx BER, BRD (forgot to mention this), CLR, MNK, ROG, SHM, WAR

Automated farming additional modules (very basic implementation and limited use). The farm function is built in the class macros, these help to setup the parameters but is most likely it will be reworked to a better system in a future: mcmercfarmstandalone, mcmercfarmdump.

* The aim of mcmerc is to play or box any kind of toon class in a similar way in game mercs work, with most of its relevant abilities available and with more control on its behaviour.
* Control over the merc can be done within group chat (event driven). Additional control should be done through bc or discord.
* Customization of the merc can be done only modifying the macro (of modifiying the internal variables when its running) (That's it macro parameters, not the commands that are given through any chat channel window)
* This does quite some like MQ2Bot but IT'S NOT MQ2Bot, differences are notable, the only similarity is both allow to play a toon in an IA way. One of the reasons I started building up this is I wanted a finer control on the boxes than the one I was able to get from MQ2Bot. MQ2Bot is highly customizable, COMPLETE and makes use of ALL of the toon resources when properly customized. mcmerc DOES NOT (without modifying the macro) to choose your spell sets, you make like it's choices or not, but also allows you to play a class you are not much experienced at as it takes control of what to use.
* All mercs (so far) have 3 operation modes (that can be selected at will): passive, efficient, balanced and burn. (Passsive is basically do nothign but follow if enabled) the other 3 set up what stuff to use (cooldown, mana, end, etc) or save. For dps is basically about saving resources or use the best grades. For healers it sets up mostly the healing % thresholds dinamically.
* The only tank available atm is the WAR, but it does a hell nice work, can be set up as dps, main tank or offtank, when on offtank mode he tries to keep all aggro mobs on him, on tank mode (needs s small tunign still) it will stick to a main target (so we could have a main tank and an offtank in same group not fighting for aggro nor jumping targets all over). He can detect when multiple aggro happens and AE aggro if needed not bringing extra aggro (AE aggro radius check)
* Healers heal (and buff) they DO NOT rezz of dps (other than twincast proc nuke). Missing still a few minor AAs but they are solid proven to do their work so far.
* SHM heals and slows and AE slow when needed withotu bringing extra aggro. NO PET support yet (they dontt use pets nor they heal pets, pet classes yet to be integrated, pretty much like all INT classes and mezz integration). SHM DO NOT tries root CC, frankly AI root CC is poor and very prone to do more bad than good.
* Very limited implementation of clickies other than epics. I have some thoughts about a way to customize them but it's low in my priority list. ATM my main goal is improve what's working then slowly add in more classes. As I code more classes I am learnign how to manage features and usually that means backtracking and add on already built macros extra enhancements.
* There a multiple assist ways: automatic (assist on a default xtarget slot), ma (asssist on the ma xtarget slot) and lowest hp mob (not full working atm). Automatic assist can be manually overriden with a call to manual assist on a target so the merc switches to the called target and ignore the aumatic one until another manual target is called or current one dies. Tanks will still swap to targets they are supposed to keep aggro and back to the main target as they lose aggro if they are told to do so..
* There is an automatic follow system that can be turned on and off
* They can be set up to wait for a pull or rush to mobs. There IS NOT an automatic pulling coded yet to integrate with the wait to pull mode.
* Debuffing, DoT, short speed boosts, bard bellowing, mezzing ... can be called to be turned on and off
* BRD can be told to change their playlist dinamically. There is NOT (currently) any automated way to change dinamically the gem spell sets other than buffs.
* Mercs track the number of available gems, the last gem available is used as 'swap' gem where certain classes mem in and out not permanent use spells, like long buffs etc.
* Lastly, the farm function is only partially implemented and only WAR can make use of it as group 'leaging' farmer. So far it works if you know what to do, but I nede to change the way it works because I made some asumption on how spawn naming and ID worked that I've found out are not as I expected (basically I make a name list of mobs to farm through and editable dump, but names and even spawn types are mostly 'random', yet it still works in some zones)

I leave it here, it's already quite a wall of text. As a last note, you can (I've been doing so while makeing up the different classes) mix mcmerc macroed toons with MQ2Bot toons in the same group and for most combos they work together perfectly. (mcmerc macros TAKE OVER most/all MQ2Melee functions and disable MQ2Bot on that toon).
 
Last edited:
You should be able to attach macros to a post in macro forum, or upload them to github and link to them there to allow people to help contribute.

I'm not sure about hot buttons question. I thought we had a plugin that did it, but I couldn't see it.
 
  • Like
Reactions: EQDAB
You should be able to attach macros to a post in macro forum, or upload them to github and link to them there to allow people to help contribute.

I'm not sure about hot buttons question. I thought we had a plugin that did it, but I couldn't see it.

MQ2MyButtons should work AFAIK.

htw
 
  • Like
Reactions: EQDAB
I agree that MQ2MyButtons sounds like the option they are looking for.

Also, sounds like a lot of work was put into this so I'm interested to see it be well received.
 
  • Like
Reactions: EQDAB
why does my shaman run out when my sk pulls a mob , and takes aggro ? this is annoying , not really many instructions on how to use any of this ?
 
  • Wow
Reactions: EQDAB
like is there an ini to turn this stuff on and off ? is there instructions ? /pull=off dont work ? /camphere on dont work ect? like whats the instructions on how to use the on and off features ?
 
  • Like
Reactions: EQDAB
Since I posted the 1st macros I've updated some of the code, improved clr and shm healing by tiering, fixed some bugs, and added item management, it even detects when the item cooldowns get bugged and set up a number of retry and hold intervals per item, also started the RNG mcmerc to learn a way to start managing ranged classes, RNG is the easiest to start with because it can also melee so I can have him running in a mcmerc group that plays all on its own (with +farm+ mode a mcmerc WAR can play and lead the whole group running around without attention, or with a mq2bot toon and mq2farm the other mcmerc in group will assist just fine) and write code and test 'on the fly' the changes in little increments. Also RNG is the 1st 'real hybrid' class, so it's a learning step towards PAL and SHD. Also for RNG I want to find a good compromise about when ranging or meleing, and a way to manage when he gets aggro at range away of tank to probably run to melee range, even though as the WAR merc is coded he will always run to any additional new aggro if it's set up in +tankoff+ mode.

As for your questions there are two pull stances, I assume you are using SK to pull and macro on the shm, one is +pullon+ and the other +pulloff+ if you have +pullon+ the mcmerc macroed toons will NOT run into the aggro targets and expect the mob to be pulled to them (they need to come to melee range if you wan't other mcmerc classes (not mq2bot ones) to assist on them. If you have +pulloff+ any mcmerc will run towards the aggro mob ar different distances depending if they are melee, healers or ranged classes.

So basically for your question just /gsay +pullon+ or better /echo +pullon+ (if you /gsay all other mcmercs in group will set up 'pull on mode'). (Remember this doesn't make mcmercs 'pull' mobs, it 'tells' them that someone is either pulling (so don't need to run to them) or not (so they need to run to the targets).

The only current way for a mcmerc (and so far only WAR is enabled to use the code) to get to mobs is +farmon+ and +farmoff+ and those are modes designed atm to run towards the targets, not to pull the targets to a camp. It involves the creation of an INI file with the list of the mobs to look for, atm the list gets to mobs by full name, but it has also precode to hunt for mobs on rectangle zone coordinates and location coordinates (mob naming for farm list wont work when the same spawn can spawn mobs with different names and location coordinates will work no matter the mob names but may be missing roamings, so yes, to make it the best possible all ways to declare a target may be interesting - can use all three at the same time-. It also will have a fallback location to run to when no mobs to farm are available and a location boundary so they don't run chasing any mob into a 'dangerous' location. I've been using it to finish ToV hunter achievement with good results so I could 'afk' camp them while doing other stuff. The 'bad' thing is it's a functionality I am not too focused on atm, and I use it as I need it so I can get my farm list generated by a dump macro or write it by hand (it's trivial if it's only a 5-6 mobs to farm type camp). In a future I have to code a way to generate that 'farm list' file in a more user friendly way.

I haven't had much feedback, which it's np, but frankly they work pretty well, and I am writting code as I need for my toons. Likewise I made a small macro for a mq2bot SHD to get GS instance and plow the whole wurm cave main corridor (the rooms are too much multiple aggro as to not be a risk of small incidents, also wurms can KB toons meleing behind and bring random extra aggro etc, but he can manage upto 4 adds at once steadily) and I have my ROG, SHD, MNK, SHM and two silver CLR and BRD, all but SHM mcmercs and they clear 16-18 spawns per instance in about 15 min, award loot, and retake instance constantly and usually only break out on very uncommon situations, I don't expect it to run flawlessly for 24 hours but strikes of 3-6 hours have happened more often than not.

The last major change has been item management, now each merc can have up to 10 items to be clicked that can be added and removed to a click list on demand, and to fire at either of the standard modes, including the ROG poisons and the legs to summon and autoinventory new ones, and as said above and because it happens way too often it detects if the cooldown has become bugged in the client it has a customizable click 'hold' for an interval after a number of retries.

As minor update I also added the 2 DoT of the SHM to be used (as said for a start I want mercs to do their class basics, all else is an add-on, likewise on RNG I will first complete the DPS melee/ranged part and buff, debuff or minor healing would come last).

Also you may have noticed mercs (other than tanks) have yet to use most 'defensive' AA/CA etcs for 'panic' situations, or things like rezzing - accepting rezzes. Will come at their time.
 
Last edited:
How do you turn. It on and off in game ??? /+pullon+ ???? There is also no instructions inside the macro either ?
 
Prolly help if I slowed my reading down so /echo +pulloff+ turns the run to mob off
 
PS.

They DO accept commands, they are all 'event driven' so the chat channels , included mq2 one get 'parsed' so anything that fires the command event it will work.
The standard I am using is to enclose each 'command' within '+' symbols, including their parameters, that also means that all parameters must be present for the event to trigger or if missing they need to be '++' ... its easier to see than to explain ... will paste the current events for quick reference as they are now (the macros on the zip file provided are 2 week outdated and may be missing some of the new ones as the item related ones:

|------------------------------------------------------------
| Command string event to switch merc performance modes
|------------------------------------------------------------

#event BALANCED "#*#+BALANCED+#*#"
#event BURN "#*#+BURN+#*#"
#event PASSIVE "#*#+PASSIVE+#*#"
#event EFFICIENT "#*#+EFFICIENT+#*#"

|------------------------------------------------------------
| Command string event to manage merc assist modes
|------------------------------------------------------------

#event ASSISTXTMA "#*#+ASSISTXTMA+#*#"
#event ASSISTAUTO "#*#+ASSISTAUTO+#*#"
#event ASSISTMANUAL "#*#+ASSISTMANUAL+#1#+#*#"

|------------------------------------------------------------
| Command string event to add/remove an item from list of items to use
|------------------------------------------------------------

#event TOGGLEITEM "#*#+TOGGLEITEM+#1#+#2#+#*#"

|------------------------------------------------------------
| Command string event to toggle move on target assist on and off (mobs to be pulled to group or not)
|------------------------------------------------------------

#event PULLON "#*#+PULLON+#*#"
#event PULLOFF "#*#+PULLOFF+#*#"

|------------------------------------------------------------
| Command string event to toggle merc farm on and off
|------------------------------------------------------------

#event FARMON "#*#+FARMON+#*#"
#event FARMOFF "#*#+FARMOFF+#*#"

|------------------------------------------------------------
| Command string event to toggle autofollow on a target on and off
|------------------------------------------------------------

#event AUTOFOLLOWON "#*#+AUTOFOLLOWON+#1#+#*#"
#event AUTOFOLLOWOFF "#*#+AUTOFOLLOWOFF+#*#"

|------------------------------------------------------------
| Command string event to toggle tank merc role
|------------------------------------------------------------

#event TANKDPS "#*#+TANKDPS+#*#"
#event TANKMAIN "#*#+TANKMAIN+#*#"
#event TANKOFF "#*#+TANKOFF+#*#"

|------------------------------------------------------------
| Command string event to toggle spamm movement speed boosts on and off
|------------------------------------------------------------

#event SPEEDON "#*#+SPEEDON+#*#"
#event SPEEDOFF "#*#+SPEEDOFF+#*#"

|------------------------------------------------------------
| Command string event to toggle the use of fear component resources on and off
|------------------------------------------------------------

#event FEARON "#*#+FEARON+#*#"
#event FEAROFF "#*#+FEAROFF+#*#"

|------------------------------------------------------------
| Command string event to toggle the use of DoT component resources on and off
|------------------------------------------------------------

#event DOTON "#*#+DOTON+#*#"
#event DOTOFF "#*#+DOTOFF+#*#"

|------------------------------------------------------------
| Command string event to toggle the use of cure component resources on and off
|------------------------------------------------------------

#event CUREON "#*#+CUREON+#*#"
#event CUREOFF "#*#+CUREOFF+#*#"

|------------------------------------------------------------
| Command string event to toggle the use of mezz resources on and off
|------------------------------------------------------------

#event MEZZON "#*#+MEZZON+#*#"
#event MEZZOFF "#*#+MEZZOFF+#*#"

|------------------------------------------------------------
| Command string event to switch merc melodies
|------------------------------------------------------------

#event MELODYSWITCH "#*#+MELODYSW+#1#+#*#"

|------------------------------------------------------------
| Command string event to turn the use of boastfull bellow on and off
|------------------------------------------------------------

#event BELLOWON "#*#+BELLOWON+#*#"
#event BELLOWOFF "#*#+BELLOWOFF+#*#"

How do you use this: ignore the leading and trailing "#*#"

You want the BRD to use boastfull bellow: /gsay +BELLOWON+ or /echo +BELLOWON+ (it's not case sensitive mind you, use /say /gsay /echo ... whatever, if you want a 'command' to reach all mercs use group (or say if all close but everybody will see it) if you want to be self only use /echo, if you use /bc mind of the bc echo that will give you in some circumstances a double event trigger)
You want the BRD not to use selo or SHM Cheetah AA: /gsay +SPEEDOFF+
You want to burn: /gsay +BURN+
If you want mercs not to run to mobs /gsay +PULLON+
If you want assist to happen on 1st free autoslot /gsay +ASSISTAUTO+ (this is the default, but you dont need to have the 1st slot of the X target window to be set up as auto, it will automatically pick the number of the 1st auto slot)
If you want assist to happen on 1st declared grp assist /gsay +ASSISTXTMA+
If you want the mercs to engage a specific target over any of the aggro mobs /gsay +ASSISTMANUAL+${Target.ID}+ (If you have it targeted)
If you want the WAR to try to keep aggro on all aggro mobs /gsay +TANKOFF+ (Other modes are dps to not fight for aggro and main to tank only the primary target so they can work along other offtank mercs in group)

If you are manually controlling a character adn the want the rest of the group to follow as mercs you have:
/gsay +AUTOFOLLOWON+${Me.ID}+ or +AUTOFOLLOWON+MynameisFippyDarkpaw(whatever your name is)+
And for them to stop following you:
/gsay +AUTOFOLLOWOFF+
The mercs will onlly 'follow' you if no mobs are on aggro, else if there are mobs on aggro and 'pull' was set 'off' they will run to the aggro mob and then run back to whoever was declared as target to 'autofollow on' when aggro is clear


Now for the last addition: +TOGGLEITEM+#1#+#2#+ (The macro pack I uploaded two weeks ago HAS NOT the item code, but this gives you an idea how it works on last one, adn its VERY useful, and even takes rid off the item click spamm when the client gets the item CD bug)

/echo +TOGGLEITEM+++ : Will list the items on the click list, modes to use and retry counter
/echo +TOGGLEITEM+Consigned Bite+BAL+ : Will click any poison starting with 'Consigned Bite' when merc is on mode balanced or higher (when the poison buff is not present/faded)
/echo +TOGGLEITEM+Nightshade, Blade of Entropy+BRN+ : Will click the ROG epic whne we are in burn mode and the buff is not present in song window

The second parameter can be EFF,BAL,BRN ... and ... SUM. 'sum' is a special mode intended to use for items that summon things like rog poison legs as it involves a delay and an /autoinventory. (Nothing to do with BER summon axe CA, those are coded internally in the BER mcmerc macro).

/echo +TOGGLEITEM+Velium Empowered Shadowscale Leggings+SUM+ : Will click the ROG ToV raid summon poison legs when available and /autoinventory the poison in all non passive modes except in burn mode (we want to delays on burn mode to summon stuff) --- In fact 'Leggigns'will work as fine for all leggings as it uses FindItem that does partial string matching.

There are 2 ways to remove an item from the list, one is just to type the same line you used to add it and if you want to wipe the whole list:
/echo +TOGGLEITEM+ALL++

As for BRD melody:

/echo +MELODYSW+2 3 1 4 8+ :Will /melody the songs in gem 2,3,1,4,8 when in combat. The aura will be refreshed independently and mem'ed at the last gem slot (as rule the last gem on all mercs is the one that will be used as 'swap' gem) and atm only melee enhancing auras are looked for. (Yes, this Sub could use an sdditionnal current song list parameter and needs a input parse check ... some day ... )

Remember, for good or bad, this suite is set up to choose the spells/CA/AA to use for you, while mq2bot is driven by the spells you set up (plus holy/down 's basically). The only merc so far you can chose what to have on all gems but the swap one is the bard as you choose what songs to use with 'melody switch' command

Also most events are shared among all mercs thus you need to check the code in 'mcmercore' and 'mcmercutils' that are included on ALL class macro mercs.
 
Last edited:
I upgraded the SHM from the version you have, tiered the heals (visually it sucks because you have to overuse if-else-if nested structure and repeat some heals on multiple triage levels) but it works much better than cascading checks, because cascading checks puts you in a situation where the heal you get depends more on what line the macro flow is on when the heal is needed whereas in a tiered way you are sure the heals are called in the order you want to precisely), also the 2 DoTs are added (most expensive one goes off only with GoM to have the right mana balance canni is able to and also considering I give precedence to the expensive roars over talisman proc for adps) and fixed a code where he will try to cast the buffs even if sitted. (When I added it to the CLR I added on SHM at the wrong point, they both have a lot of code similarities)

As it is now each macro cycle the SHM tries 1 heal 1 slow+debuff (AE if required) and 1 adps/dps action + 1 item click.

You will notice your SHM does a lot of rain heals (squalls), with the tiered setup now he does more synergy ones (squalls are not bad either but synergy ones are good and proc the song heal boost so with a 2nd healer SHM + CLR mercs are VERY solid, you can tackle ANY ToV named guaranteed. I had 0 issues with the 90% of them I did in 4 days this last week -the other 10% I had them down some other time). Mind you my WAR is full AA and partially ToV raid geared, but with ROG (boxed), WAR-BRD-SHM mercs adn 2 EQ healer mercs (they suck but have more hp than my silver account CLR ) I was able to break in VL 5 shades / 5 tentacles named rooms (without the named but PH) with not much effort on burn mode and also pre-glyph the war (I assure you 5 VL white cons at once without mezz is a very rough dmg spike) ... I WILL do the ENC merc some time, but it's not a priority atm, as the whole mezz CC has alot of consequences for all mercs, so far mercs check mob 'ismezz' before nuking or dotting, but the whole mezz CC has a lot of side implications for dpsing and tanking that need a careful thought. For the same reason and this probably will never happen I full discard any way of root CC, it's flat too unreliable for the effort it would be to code properly target picking and positioning, even less if the root has also any kind of punting component because it woudl be too hard to select the punt direction or even control you won't generate additional aggro punting on any random direction.

Also SHM (so does WAR) only try to AE aggro / slow / debuff when (customizable) 3+ targets are on aggro and check that there's no some extra target not in aggro that could add on when using AE stuff.
 
Last edited:
  • Like
Reactions: Bugsrus
Small update:

+ Added item click management (read a few posts above for more info)
+ Improved CLR heal tiering
+ Switched cascading to tiering for SHM healing, also enabled DoT use for him
+ New RNG merc, still VERY preeliminary (just for testing purposes atm, a few buffs, spells, discs and AAs only, priority is to verify he goes ranged or melee as convenient), he's got 2 addittional class only commands +RNGMELEE+ and +RNGRANGED+ 1st mode he will always melee, 2nd mode he will try to use bow unless target is too close or he has not LoS (ignore the cross class missing CA messages, keeping the code as skeleton guidance when completing the merc)
+ A few changes in mcmerccore to allow for RNG assist range flipping (override) that will most likely would be also needed on future caster dps classes when LoS is missing
+ Small fixes here and there

Remember:

- I give away for free to share the macros IF AND ONLY IF you don't use it to harrash, train, bottleneck, leapfrog other players.
- DO NOT use it to disturb full real PC or 'alt-tabbing' boxers, plenty of instances and zones to play in game to box without bugging off server mates.
- I have put on this 200+ hours, but as summertime gets to an end I will not have so much time to progress on so fast. If you have any comment, fix, bug, feature, you are most welcome to share and I may (or not) work on it depending on how a priority it is or the RL time I have available.
- If you don't like it (there is better stuff out there for sure) just don't moan and don't use it, some other may find it useful instead.
- You are free to modify it to your taste if complying with the purposes stated above, just do not 'fork' distribute your changes, I'd like to keep control of the root version and not make of it a 'babel tower'

- I currently have only 4 gold accounts so my testing ability is limited. My goal is to build a set including all classes (I've been playing the game since 2001 but I am less knowledgeable in some classes) and as I include features I often backtrack over most done merc classes to include the new features/know-how. I am trying to balance the development of new class coding and old class enhancement/completion.

- Lastly ... yes it's FREE if you use it not for wrongdoing. Even so, if you want to help (still subject to my RL time allowance) on this to progress some Krono would greatly help so I can box at least full gold groups (atm 4 gold 2 silver ToV enabled) for testing - class coding and possibly enable the accounts to the next ToV+ expansion
 

Attachments

  • mcmerc200920.zip
    64.6 KB · Views: 30
Quick update , since ultimately I am more around discord than here, the project is still ongoing
+ Now supports all classes (some only to perform their main class duty) but BST and INT classes
+ Preeliminaty support for merc only to play the game and complete missions without player interaction, like ToV Restless Assault hero group mission
+ Ongoing migration for command input system to allow future merc-to-merc automatic information sharing

The main work lines lately are/have been:

1- Updating/adding features on the fly with a variable schedule the main goal is still to be able to box real characters as if they were EQ mercenaries but fully class featured and the ability to drive their behaviour with a short set of commands
2- Integrate a system to automate tasks like farming, camping and mostly running missions and even raids through macro piece that is self contained/loaded on the merc macros seeminlessly

As the whole thing is very ambitious goal, and because I am only doing because I am actually enjoying the coding more than playing the game, and because of RL constraints I cant guarantee any timeframe or how far and complete this would end, nor providing throughfull support for it, let's say that I would love to be able to run all the new expansion missions without me having to be a the keyboard, by Xmas I think I would have all classes 'main role able' built and then I have to see how hard or easy are the missions to 'de-script' them in order to sort the orders to mercs to play it alone on their own and complete it, it depends heavily on mission requirements and mechanics