• 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

A mini macro for monk pulling

joojoobee

A Member to Remember
Creator
Joined
May 15, 2016
RedCents
4,327¢
I recently got a monk up to 110 and reasonably geared to use him as a puller for grinding. I was getting tired of my warrior getting whaled on with bad pulls. So here's a little "pull" routine that I use with a modified "Kissassist" (basically, I have it call this routine in a few different places). I am happy to share that Kissassist if people want or the places where to insert the call to this routine.

This routine currently calls a modified routine for MQ2Nav. I will explain that in a second posting.

My lifetime playing time for a Monk is about 3 weeks, so helpful suggestions welcome. Basically right now it:
  • Tries to pull 2 or fewer.
  • If more than 2 and they are close (worried you might get hit), it feigns or feigns on some other conditions... (again, I welcome ideas)
  • If more than 4 on a pull, it feigns or imitates death.
  • It tries to Mend as needed.
I'll update this as it goes, but it's working quite well. Pulled for a full hour in an ROS dungeon and no wipes. I used it with chainpull, and it splits decently. More logic in it and it will be better. But I'd like ideas from "real" Monks out there...

Joojoobee


Rich (BB code):
    |: --------------------------------------------------------------------------------------------
    |: SUB: MonkFeignSplit
    |: --------------------------------------------------------------------------------------------
    sub MonkFeignSplit(string FromRoutine)
    /declare HoldingPatternCount int local 2
    /declare closeToCampFeigned int local 1
    /declare SplitTimer timer local 0

    /if (!${Select[${Me.Class.ShortName},MNK]}) /return

    :waitforSplit
    /call miniRadar
    /if (${XTargCount} <= 1 && ${XTargClosestDist} > 10 && ${SplitTimer}==0) /goto :LeaveLoop        |: If only 1 on Xtarget, and it's far enough away...  leave the loop and go back to pull routine

    |: if it's going to be a messy pull, easier to just imitate death out of the situation and run back to camp and go find another.
    /if ((${Me.PctHPs}<15 && ${Me.AltAbilityReady[Imitate Death]} && !${Me.Feigning} ) || ${XTargCount} > 4) {
        /alt act ${Me.AltAbility[Imitate Death].ID}
        /echo I am Imitating Death
        /delay 1s

        /if (${Me.PctHPs}<60 && ${Me.Feigning}) /doability "Mend"

        /delay 10s
        /goto :waitforSplit
    }



    |:     Feign if I pulled too many and the Mobs are too close,                                           or HPs are low, o     r my HPs are a little low and the closest NPC is standing right over me,     or there are 5 or more on Xtarget
    /if ((${XTargCount}> ${HoldingPatternCount} && ${XTargClosestDist} < 15 && ${XTargClosestDist} > 0.1) || ${Me.PctHPs}<50 || (${Me.PctHPs}<80 && ${XTargClosestDist} < 10 && ${XTargClosestDist} > 0.1) || ${XTargCount}>4) {

        /if (!${Me.Feigning}) {
            /doability "Feign Death"
            /echo I am feigning to split or the NPC is too close ${XTargCount}

            /doability "Mend"
            /delay 1s

            /varset SplitTimer 10s
        }

        /if (${Math.Distance[${CampYLoc},${CampXLoc}]}<=15) {
            /if (${closeToCampFeigned} > 2 && ${XTargClosestDist} > 20) /goto :LeaveLoop  |: Mob now far enough away, leave the loop
            /varset closeToCampFeigned ${Math.Calc[${closeToCampFeigned}+1]}              |: Increment the counter-- might want to just make this a timer at some point.
        }

        /if (${SplitTimer}==0 && ${XTargClosestDist} > 15) {
            /stand
            /echo Stand from Split 1, then nav
            /call MQ2NavFix ${XposCamp} ${YposCamp} ${ZposCamp}            |: My fix for MQ2Nav not finding endpoint or startpoint
        }
        /goto :waitforSplit
    }

    :LeaveLoop
    /if (${Me.Feigning}) {
        /stand
        /echo Stand from Split 2 ${Math.Distance[${YposCamp},${XposCamp}]}>10, then nav
        /delay 500
        /call MQ2NavFix ${XposCamp} ${YposCamp} ${ZposCamp}        |: My fix for MQ2Nav not finding endpoint or startpoint
    }

    /if (${FromRoutine.NotEqual[PullWithCast]} && ${Math.Distance[${YposCamp},${XposCamp}]}>10) {
        /call MQ2NavFix ${XposCamp} ${YposCamp} ${ZposCamp}        |: My fix for MQ2Nav not finding endpoint or startpoint
    }

    /return

    |: --------------------------------------------------------------------------------------------
    |: SUB: miniRadar
    |: --------------------------------------------------------------------------------------------
    sub miniRadar

    /declare firstCheck                     int local 0
    /declare ilist                                 int local 0
    /varset XTargCount  0
    /varset XTargClosestID 0
    /varset XTargClosestDist 0

    /for ilist 1 to ${Me.XTarget}
        /if (${Spawn[${Me.XTarget[${ilist}].ID}].Type.Equal[NPC]}) {
            /varset XTargCount ${Math.Calc[${XTargCount} + 1]}
            /if (${firstCheck}==0) {
                /varset XTargClosestID ${Spawn[${Me.XTarget[${ilist}].ID}
                /varset XTargClosestDist ${Spawn[${XTargClosestID}].Distance}
                /varset firstCheck 1
            }
            /if (${XTargClosestDist}>${Spawn[${Me.XTarget[${ilist}].ID}].Distance}) {
                /varset XTargClosestID ${Spawn[${Me.XTarget[${ilist}].ID}
                /varset XTargClosestDist ${Spawn[${XTargClosestID}].Distance}
            }
        }
    /next ilist

    /return

- - - Updated - - -

Oh, I also add this call right before pulling... adds some protection for the puller
Rich (BB code):
    |: --------------------------------------------------------------------------------------------
    |: SUB: MonkProtectionSpells
    |: --------------------------------------------------------------------------------------------
    sub MonkProtectionSpells(int MobTargetID)

    /declare PathDistanceToMob
    /if (!${Select[${Me.Class.ShortName},MNK]}) /return

    /varset PathDistanceToMob ${Navigation.PathLength[id ${MobTargetID}]}

    /if (${PathDistanceToMob} < 30) /return

    /if (${Me.CombatAbilityReady[${Spell[Shaded Step].RankName}]}) {
        /call CastWhat "Shaded Step Rk. II"
    } else /if (${Me.CombatAbilityReady[${Spell[Earthforce Discipline].RankName}]}) {
        /call CastWhat "Earthforce Discipline Rk. II"
    }
    /delay 1s

    /return
 
joojoo

Rich (BB code):
 /if (${Me.PctHPs}<60 && ${Me.Feigning}) /doability "Mend"
This line I think should be !${Me.Feigning}
Rich (BB code):
/if (${Me.PctHPs}<60 && !${Me.Feigning}) /doability "Mend"
You can't mend when you are feigning can you?
 
Is this as simple as copy paste on an opened page with an editor save and close? I know there was a guide for doing this somewhere but i cant find it.
 
joojoo

Rich (BB code):
 /if (${Me.PctHPs}<60 && ${Me.Feigning}) /doability "Mend"
This line I think should be !${Me.Feigning}
Rich (BB code):
/if (${Me.PctHPs}<60 && !${Me.Feigning}) /doability "Mend"
You can't mend when you are feigning can you?

You can mend while feigning


Sent from my iPhone using Tapatalk
 
joojoo

Rich (BB code):
 /if (${Me.PctHPs}<60 && ${Me.Feigning}) /doability "Mend"
This line I think should be !${Me.Feigning}
Rich (BB code):
/if (${Me.PctHPs}<60 && !${Me.Feigning}) /doability "Mend"
You can't mend when you are feigning can you?

As Levox says, yes you can. So, if you are beat down and even beyond the Mend ability to get you to full health in one click, you can just wait until Mend recycles and you are full HP (with all the AAs maxxed for timing, etc. on Mend).

Right now I am tweaking the "split" part of this routine to be a little smarter about waiting before it /stands again.

Also-- I need to have the Clerics and healers "turn off" while pulling... because if the Monk is in range of the healers BEFORE he feigns (and he is healed before feigning) I often get the train from hell. I can code the PC Clerics to not heal him specifically during a pull... but the merc healers are problematic (I might have to just put them in passive mode while pulling).

I also want to code the warrior or chanter to come "tag" single pulls from an appropriately spaced split. Monk could then "Imitate Death" out of the pull (removes all aggro) and chug back to camp to help. It can get complicated depending on aggro range of NPCs in the first pull to code for spacing, etc. but doable I think.

So Monks reading this... any tricks on pulling would be appreciated...

All that said, Monks pulling with a little bit of smart feigning is my new "go to". It's frankly fun to watch, and most continuous pulls with no deaths I've had in RoS dungeons.

JJB
 
Last edited:
no need to passive mercs, give yourself group role of puller and they wont heal you till your in camp range
 
Saar-- he is puller, but problem is my current group is sitting right next to a building being pulled. But I did not know what you just said about mercs, so maybe I can reposition or adjust camp size.
 
Hoping poster is around im looking to get my puller to pull 4 at a time then return to camp not singles … Low lvl power lvling but im able to handle 10+ in camp so is there a way you could help me out here I have my nav mesh working great and kiss working great just need my puller to 1 to pull and puller 2 to get 2-4 and ignore xtarget mobs incoming or in camp is this possible ??
 
Yea-- still tweaking. Have finished upgrading the script into into Kiss11 beta (it was in 10.2.5) Right now it will pull whatever it can and return with 2. But that's a settable parameter. I can move the hard coding to an adjustable variable.

I have a 2 group group I am just AA farming... and it's high end enough to pull up to 8 at a time and handle them. Really depends on the enchanter not getting whacked and other usual things that happen. Because of that I am not patient enough for it to get down to 1. Plus, it's hard to find a place in Kiss so you don't have to cycle back to the camp to start the NPC search again. I am looking for where... if the pull resets... it will just go back and get the same NPCs again. You'd want to set that so if they don't get it in say 3 goes, you just pull 2 or go after a different group. Testing.
 
i have the echo of duplicity RK . II that i would like to us first before Distant Strike is used to pull targeted mob. can this be put in kissassist as a command?
 
i have the echo of duplicity RK . II that i would like to us first before Distant Strike is used to pull targeted mob. can this be put in kissassist as a command?

Yes... if you look at the more complete macro I posted on KISS forum you will see it in there.
 
A mini macro for monk pulling

Users who are viewing this thread

Back
Top
Cart