• 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

Request - MA/offtank Corral loose mobs - with a solution

AmericanNero

Seasoned veteran member
Joined
Oct 13, 2020
RedCents
4,709¢
Version of KissAssist.mac?
12
When did your problem start?
Day 1
Character Role?
  1. Assist
What class is having this issue?
  1. Cleric
How often does this issue occur?
Often
I propose an enhancement to KA which informs the MA / offtank (which is undocumented, use /mac kissassist offtank) to go get mobs running loose. This complements the current AGGRO routine, not replace. If a character is being hit by a mob, it broadcasts the ID of the mob, and then the MA / offtank(s) engage it. Currently this behavior does not occur. Note that if the MA is on a named, it ignores the request. It is a good idea to have an offtank in such situations, even the lowliest pet is helpful. The code:

1) Add a new bind:

#bind GetLooseMob /getloosemob

2) At the end of Sub Event_GotHit, find the final } and replace only that with (dont overwrite the last two lines):

} else {
/varset MyTargetID 0
/varset MyTargetName
/if (${Target.ID}) /squelch /target clear
/varset WaitTimer 0s
/varset AttackingMobID ${NearestSpawn[npc radius 39 targetable "${AttackingMob}"].ID}
/if (${Spawn[${AttackingMobID}].ID}) {
/moveto dist 10
/call Broadcast y "Mob >>${AttackingMob}<< (${AttackingMobID}) attacking me! "
/bca //getloosemob ${AttackingMobID}
}
}

3) And finally, add sub:

| ----------------------------------------------------------------------------
| SUB: Event GetLooseMob - Written by American Nero
| Considerations 1: MA changes target, unless on a named
| 2: MA changes target and stays on target
| Not implemented 3: MA changes target and then after an interval goes back to previous target
| 4: OT changes target and stays on target
| Not implemented 5: OT changes target and then after an interval goes back to previous target
| ----------------------------------------------------------------------------
Sub Bind_GetLooseMob(AttackingMobID)
/if (!${AttackingMobID}) /return

/if (!${IAmMA} || !${Role.NotEqual[offtank]}) /return
/if (${Target.ID}==${AttackingMobID}) /return
/if (${Target.Named} && ${IAmMA}) /return

/declare PrevTargetID int local
/declare PrevTargetName string local
/declare PrevAggroTargetID2 int local

/varset PrevTargetID ${MyTargetID}
/varset PrevTargetName ${MyTargetName}
/varset PrevAggroTargetID2 ${AggroTargetID2}

/varset AggroTargetID2 ${AttackingMobID}
/squelch /target id ${AttackingMobID}
/delay 10 ${Target.ID}==${AttackingMobID}
/varset MyTargetID ${Target.ID}
/varset MyTargetName ${Target.CleanName}
/if (${Me.Pet.ID} && ${Math.Distance[${Target.Y},${Target.X}:${Me.Pet.Y},${Me.Pet.X}]}<=${PetAttackRange}) /pet attack

|Sanity check... should I go back to previous target?
/if (${Target.Mezzed.ID} || (${Spawn[${MyTargetID}].Type.Equal[Corpse]} || !${Spawn[${MyTargetID}].ID})) {
/varset AggroTargetID2 ${PrevAggroTargetID2}
/squelch /target id ${PrevTargetID}
/delay 10 ${Target.ID}==${PrevTargetID}
/varset MyTargetID ${Target.ID}
/varset MyTargetName ${Target.CleanName}
/if (${Me.Pet.ID} && ${Math.Distance[${Target.Y},${Target.X}:${Me.Pet.Y},${Me.Pet.X}]}<=${PetAttackRange}) /pet attack
/return
}

/call BroadCast y "Grabbed mob >>${Spawn[${AttackingMobID}].Name}<< (${Spawn[${AttackingMobID}].ID}) "
/return
 
Last edited:
Request - MA/offtank Corral loose mobs - with a solution

Users who are viewing this thread

Back
Top
Cart