• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Fork / Mod Monk Pulling & Splitting Macro for Kissassist 11

joojoobee

A Member to Remember
Creator
Joined
May 15, 2016
RedCents
4,327¢
This routine can pull nearly any group of NPCs & split them down to the number indicated in the settings. For instance, pull only 2 to camp, and if more than 2, feign, wait, sometimes make a quick run, feign again to split further, wait until some NPCs reset, and return with no more than 2 to camp.

Has been amazing to minimize wipes by only pulling the right number of NPCs your group can handle. Will only work with MQ2Nav as pull navigation.

Current Version

Version V.010
  • Multiple changes to pull for Echo of Duplicity (EoD) to ensure EoD is cast followed by Distant Strike. It is set to EoD Rk. II so please check if you have Rk. II or "baseline".
  • Several changes to pull/feign to make a little more efficient. I've run it for 3 days now and seems to be doing the job right.
  • Files are now named as they should be placed in the folder. The only indication that they are a different version is in the header of the files themselves.
  • Fixes a minor issue with "not pulling" if there is a mob near the camp.
  • Uses MQ2Nav distance for the pull.
  • I removed the Debugtree command/routine.
  • Next version has some changes to how the Kissinfo file is used for biasing pulls towards certain mobs. Also, I need to re-implement an optimal "distance" for the pull system, but it's proven difficult to make it operate the way I want.
  • Enjoy!
Install two files in your Macros folder:
  1. Kiss11_MonkPuller.mac modded in places to specifically call/work the Monk routines.
    • Call Monk protection spell routines cast before casting. Many changes to pull routines in KISS to accommodate Monk style of pulling for this.
    • Call the Split routine when casting and returning to camp.
    • Uses my MQ2Fix routine to not error out as much on off-grid MQ2nav. You can keep your own /nav system intact if you like and not copy those into your "master" Kiss11
    • Right now uses Distant Strike as pull spell. Alter in the script if you want to use something different.
  2. MonkPuller.inc with subroutines to specifically cast for the Monk (assumes you are using Distant Strike)
    • Will cast Echo of Duplicity Rk.II if it detects multiple mobs around the target
    • Will position for the pull with a little back and forth to get LOS.
    • Will split using 2 variables:
      • HoldingPatternCount: that's the number the script will allow to be pulled. Set at 2 in the MonkFeignSplit subroutine.
      • ImitateDeathOverHolding: If there are (ImitateDeathOverHolding + HoldingPatternCount) or more mobs... Casts Imitate Death to clear XTarget list.
      • Using a combination of how close the closest Mob is, timers, and the latter will Feign and split.
Commands:
  • Start the routine with:
    • Code:
      /mac kiss11_MonkPuller.mac puller ini Kissassist_ServerName_${Me.Name} TankName
  • /splitnum for varying the pull specs:
    • /splitnum X Y
      • X = number of NPCs in XTarget to pull to camp
      • Y = if the pull is greater than X + Y, Imitate Death out of the pull and return to Camp.
      • The default settings are:
        • X = 2
        • Y = 2
          • This means that Monk will pull 2 to camp, but if 5 are pulled, the Monk does an Imitate Death and returns to Camp after a brief wait and ensured the immediate area is cleared of NPCs.

Joojoobee
 

Attachments

Last edited:
Prior Versions

V.009
  • Main fix was for the bug Hylander found of "circling" when you respawn out of the camp zone. I over-did (I hope) the checks to stop that.
  • A few tweaks on feigning/pull routine... most important for now is that I took out the "Echo of Duplicity" spell. There's something about the mechanics of how it works I am trying to tune. Back in V.010 when I've run a few tests.
  • Don't forget to rename files and remove _V9 from each before using.
V.008 (prior version information appended in posting immediately below)
  • Several tweaks to Monk decision logic for pull/feign/imitate death.
  • Better now at feign death near the Camp and not getting aggro from group members.
  • Uses Imitate Death now when feigned and detection that an NPC is still attacking (like a cast started before feign that hits when feigned).
  • Added several Monk protection spells for the PULL as well as the "run back to camp" routine.
    • Note all spells are Rk. II so you might have to edit the MonkPuller.inc file in the MonkPull subroutine if you want to tweak those.
  • /splitnum command now added for varying the pull specs:
    • /splitnum X Y
      • X = number of NPCs in XTarget to pull to camp
      • Y = if the pull is greater than X + Y, Imitate Death out of the pull and return to Camp.
      • The default settings are:
        • X = 2
        • Y = 2
          • This means that Monk will try to pull 1 or 2 to camp; if 3 or 4 are pulled it will try to split to 1 or 2; but if 5 or more are pulled, the Monk does an Imitate Death and returns to Camp after a brief wait and ensured the immediate area is cleared of NPCs.
  • Don't forget to rename files and remove _V8 from each before using.
VERSION V.007
  • Fix for those experiencing (rare) "stuck on geometry" bug. No need to replace 6 if you are not seeing this issue.
VERSION V.006
  • Fixed movement stutter with backtocamp routine during combat.
    • I will find a better way to accomplish occasional back to camp later.
  • Added command: /debugtree on/off
    • This allows the subroutine tracing to be turned on and off. The default state is OFF
    • Debugtree output traces each step in the subroutine calls and the line from which a subroutine is called, and can provide in /echo output.
    • please use /debugtree on if you want to give me debug information as to where things go wrong.
VERSION V.005
  • Tweaks to back to camp routine.
  • Removed variables that were no longer used.
  • Miscellaneous minor bug fixes.
VERSION V.004.
  • Updated 11/10/2018 to merge with Kiss V11_010
  • Will feign if a pulled NPC is too close after the pull, and will wait until it has gone away.
  • Routine will attempt a few "run for it" moves after a rest period and at full health.
  • Will feign if too many mobs are pulled.
  • Carefully watches what is nearby with a radar routine to make sure mobs are far enough away to chance a run for camp
  • Uses my MQ2Nav fix routine to re-estimate areas that are on mesh for pulls.
  • Has a pull routine that is better at stopping when in LOS
  • Will better determine when an Imitate Death spell is best called (usually when there are so many pulled it's just going to be better to run back to camp and start again).
  • If Mobs have warped to camp while feigned (usually because of Healer aggro), will know to unfeign and head to camp.
V.002
  • Some minor bug fixes
  • Makes sure only 1 Monk is the puller (for groups with multiple monks)
 
Last edited:
Joojoo,

Thank you. i was about to email you since the inc file wasn't being read on the 11.007 version. After I put on my reading glasses, i needed to delete the _V1 annotation in the inc filename. I see you have corrected the same here. Particularly like the 'double tap' on the chokidai dogs. Bloody see-invis horrible things they are. If my kissassist INI file is just KISSASSIST_{NAME} is that ok? or do i need the server reference in the filename syntax ? Will test some tonight...

BTW how is your monk DPS? mine with 110 and 21k AA is pulling ~130k odd on ROSt1 & t2 mobs
 
You can use the Kiss INI file as you suggest. Just use the standard instructions for KISS.

Per your question about DPS... I have not checked to be honest as I use him mainly for the pull, and he's set up as a Chain puller-- meaning by the time one MOB gets to around 40% he's off pulling another. I'll check on my second Monk tonight...
 
If Kiss included a dummy blank inc file would this work by cutting and pasting your monk stuff in?
I have been thinking for a while of have a separate inc file for people that want to put there own stuff in.
like #include kisscustom.inc
and just leave it blank for people to put in stuff like this.
 
How have you found the pulling in Goro? Specifically Teralov's Tower. Monk runs up ok, tags monk fine, but really struggles getting back down the 'helter-skelter' spiral. I've checked the mesh and seems fine. have you come across the same?
 
If Kiss included a dummy blank inc file would this work by cutting and pasting your monk stuff in?
I have been thinking for a while of have a separate inc file for people that want to put there own stuff in.
like #include kisscustom.inc and just leave it blank for people to put in stuff like this.

Absolutely, that would be GREAT. If you could have two subroutine calls... one "pre" the MainLoop section to declare global variables (I need the global variable because I do mod the KISS.mac as well sometimes). The second sub call would be in the MainLoop. That structure could help a lot of people with "snippets" share in a more standardized structure.

JJB
 
How have you found the pulling in Goro? Specifically Teralov's Tower. Monk runs up ok, tags monk fine, but really struggles to get back down the 'helter-skelter' spiral. I've checked the mesh and seems fine. have you come across the same?

Yeah-- I avoid the spiral in Goro. Didn't matter whether it was the Monk or my Warrior... can't survive pulling that Tower. There are several other places in Goro that are decent without the spiral. So I Z radius limit the are the monk pulls if I am in proximity to that.
 
MonkPuller.inc file looks like a typo line 480

Code:
   /if (${Math.Distance[${CampYLoc},${CampXLoc}]}<=${DistanceCheck} || ${CampZone2}!=${Zone.ID}) /return
${CampZone2} take out the 2
Code:
   /if (${Math.Distance[${CampYLoc},${CampXLoc}]}<=${DistanceCheck} || ${CampZone}!=${Zone.ID}) /return
 
Thanks, Maskoi-- yes. That was a holdover from a much earlier version of the script that was using a parallel set of variables.
 
@joojoobee you need to declare a missing var in your inc file sub MonkFeignSplit
${JustOneTimer} in line 107 tosses an undeclared error

Code:
    /declare JustOneTimer timer local 0
i added to the sub to fix it for @damgaiel
 
line 328 has an extra bracket at the end

Code:
Sub MQ2Nav_Pos_ValidCheck(float Xcheck, float Ycheck, float Zcheck,string CalledFrom))
to

Code:
Sub MQ2Nav_Pos_ValidCheck(float Xcheck, float Ycheck, float Zcheck,string CalledFrom)


That was the extent of what I found. Same stuff i do in kiss all the time
 
Thanks again. I extracted that all from a much larger file and another .inc file to remove all the stuff that's very specific for my groups. Clearly, my chop job left a few fixes unfixed.
 
ok @joojoobee when my monk pulls in camp it fights but then says timer is 0 and tries to nav to camp while in a fight,,what do I change to get monk to assist in whole fight before resetting?
 
ok so guess it just takes a min for stuff to work out second pull it assisted like supposed to so letting it run for a little while
 
i set JustOneTimer to 0 because i wasn't sure what it it did.
@joojoobee may have to change it if it isn't 0
 
Yea... I have been tweaking the backtocamp variable... right now it's set to 15. Pushing it to 25 seems to stop the fight/return tension. The reason it's there at all is that I have found that the Tank and other characters tend to get too far away from the camp during fights. So, I peppered the script with a backto camp routine.
 
i set JustOneTimer to 0 because i wasn't sure what it it did.
@joojoobee may have to change it if it isn't 0

It's a useless timer now... needs to be removed. Will be removed in new files to be put up shortly.
 
Last edited:
ok thank you
glad to help identify errors.. test dummy at your service ..lol

Just let me know how it's going and if the pulls seem "natural", or there are other tweaks that seem appropriate. Monk-literate expertise welcome from anyone.

I've never played a monk manually, and most of what is coded is from reading "expert" how to blogs on monks. That said, this routine (for instance) last night pulled for 6 hours with only a couple of monk deaths during the pull itself (no wipes). My warrior automatically runs and pulls the corpse so there was no manual intervention needed.
 
Last edited:
JJ / Maskoi,

If ReturnToCamp is set to 25, is there an interplay with MeleeDistance in the KissAssist ini for the monk, should it be set to 25 (or something smaller than the 70 default) ? Or is it a CampRadius distance issue ?

I have situations
1. where monk brings mob back to camp, but freezes until he is nudged a little forward where MQ2 then echos 'Target Cleared' and begins to melee.
2. where monk engages in combat but as part of his 'snaproll' it triggers the MonkFeignSplit[102]<BackToCamp[493] loop

Otherwise .. really enjoying this feature. Thanks heaps

Hylander
 
Last edited:
JJ / Maskoi,

If ReturnToCamp is set to 25, is there an interplay with MeleeDistance in the KissAssist ini for the monk, should it be set to 25 (or something smaller than the 70 default) ? Or is it a CampRadius distance issue ?

I have situations
1. where monk brings mob back to camp, but freezes until he is nudged a little forward where MQ2 then echos 'Target Cleared' and begins to melee.
2. where monk engages in combat but as part of his 'snaproll' it triggers the MonkFeignSplit[102]<BackToCamp[493] loop

Otherwise .. really enjoying this feature. Thanks heaps.

Hylander

I think I fixed it, see V6 recently uploaded (remember to rename to remove the _V6 on both files before running.

I had added a back to camp call in the combat and combat cast sections. This was primarily because the Tank was occasionally getting out of range of the main camp. I removed this for the Monk routine, and it seems to be playing fine now. Let me know if you see anything else.
 
ok says return to camp "stuck on geometry" then moves and stuck again and move and stuck again,,,so forth and so on it went,,,,no visible or noticeable geometry in the way,,,lol could be a pebble though,
 
ok says return to camp "stuck on geometry" then moves and stuck again and move and stuck again,,,so forth and so on it went,,,,no visible or noticeable geometry in the way,,,lol could be a pebble though,

Yeah, I've seen that occasionally. Can't quite figure out what's causing that yet since it's so sporadic. I probably won't get a chance to fix it until Wednesday or Turkey day. Gobble gobble.

JJB
 
Fix for geometry bug uploaded in version 007. Didn't see the issue in over 3 hours of play.

JJB
 
Updated to Version 8 with many tweaks to pull routine for more accurate pulling, more casting of protection spells, etc.
 
Me 3. Working great.

Me 4, This macro had served me flawlessly and really appreciating the effort put in to it. I'm yet to try it in somewhere with whacky geometry but i'll soon put that to the test and I don't doubt it! Thanks Joojoobee!
 
JooJoo,

V7 was working really well. I definitely saw the Feign behaviour you correct in v8.

That is, sometimes for whatever reason 5 mobs would come to camp and my monk would lie down for a nap. Look forward to testing v8 tonight.

Cheers

Hylander
 
JooJoo,
sometimes for whatever reason 5 mobs would come to camp and my monk would lie down for a nap. Look forward to testing v8 tonight.

Hylander

Thanks!

If you see that or any other strange behavior let me know ASAP as I am about to go out of town for work for 2 weeks, so unlikely I will be back for any major fixes until after the new Expansion releases. But the Monk KISS mod now seems to be in a reasonably stable place, and better certainly than pulling a horde each time like happened when my warrior pulled with an arrow! It's much easier now on the 'mezzer to handle.

The logic for most of this is all in the MonkFeignSplit subroutine, and there are still some final tweaks needed to that to make it work more fluidly in extenuating circumstances. Part of the issue is the timing of what happens when you pull a group of, say 5 NPCs, and you want to get them far enough away from their reset point so that you can eventually get at least 3 of them to reset & then you can "run" with 1 or 2 to camp. I am toying with incrementing some timing on the stand/run/feign, and other ideas, to maximize the chances of that.

The other things I am working on:
  • I need to figure out is when one gets a complete reset of all the NPCs how not to run all the way back to camp and try a pull. Right now the way KISS works is if the pull fails and all NPCs are reset, the Monk has to return to camp before he can search for a pull again. I mean, it's not a huge problem, just an efficiency of time issue.
  • Right now the most deaths of the Monk occur when he gets too close before the pull. I have been working on some ideas around finding a good/safe vantage for the pull cast. Complicated, but will be fun and I think I have a strategy. Will be useful for all pulling classes, not just Monks. Will add this post Expansion.
  • More logic behind how to Imitate Death quickly out of a failed feign and getting womped on while down. Will add this post Expansion.

JJB
 
Fork / Mod Monk Pulling & Splitting Macro for Kissassist 11

Users who are viewing this thread

Back
Top
Cart