• 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

Question - Finding if target is mezzed

Addict

Well-known member
Joined
Aug 18, 2019
RedCents
570¢
I am trying to implement logic so that when I pull on a monk, the tank aggros the closest target from XTarget and then waits 6 seconds for the CCs in the group to lock down targets. Once this 6 seconds is up the tank would then get aggro all those targets that are not mezzed. From reading the wiki it seems that the only way to know if a target is mezzed is through Target.Mezzed.ID, which means that I would need to loop through all the XTargets and /target each of them to know the mez status. This would of course make the tank auto attack if not turned off and if the tank is the main assist, then others would start attacking the potentially mezzed target.

Is looping through the XTarget list and making sure no attacking is done the best way to implement this? I could of course lock the group on the first targeted mob and then have the tank do his check and return to that mob.
 
I think the only way to do this is using spawn check the animation

${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]}
 
Create a loop that targets each mob and checks for ${Target.Mezzed}. If the mob is mezzed, then it will return a spell name, if the target is not then it should return NULL or FALSE. Can't remember offhand which.

Edit: Can also implement that check for the tank getting aggro. Basically if mob mezzed, then move to next target. If mob not mezzed, then use aggro ability then move to next target.
 
I think the only way to do this is using spawn check the animation

${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]}
After reading this: https://macroquest2.com/wiki/index.php/NamingSpawn
It looks like that is only for HUD? I might have misunderstood though.

Or somehow have the mezzer pass that info to the tank's macro via target ID numbers.
I was thinking about using DanNet so that I set some array on ench that I fill with those that resisted mez and then have the tank query that and loop through it. I'll probably try it out and see how fast it would be.
 
After reading this: https://macroquest2.com/wiki/index.php/NamingSpawn
It looks like that is only for HUD? I might have misunderstood though.


I was thinking about using DanNet so that I set some array on ench that I fill with those that resisted mez and then have the tank query that and loop through it. I'll probably try it out and see how fast it would be.
nah not just for hud - namingspawn is from spawn --- I was just linking some code to show the animation codes
 
From Macroquest2:

Mez Detection for NPC's.
INI:
${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]} && ${Select[${NamingSpawn.ID},${Me.XTarget[1].ID},${Me.XTarget[2].ID},${Me.XTarget[3].ID},${Me.XTarget[4].ID},${Me.XTarget[5].ID},${Me.XTarget[5].ID},${Me.XTarget[6].ID},${Me.XTarget[7].ID},${Me.XTarget[8].ID},${Me.XTarget[9].ID},${Me.XTarget[10].ID},${Me.XTarget[11].ID},${Me.XTarget[12].ID},${Me.XTarget[13].ID},${Me.XTarget[14].ID},${Me.XTarget[15].ID}]},>>>Mezzed<<<,]}
 
From Macroquest2:

Mez Detection for NPC's.
INI:
${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]} && ${Select[${NamingSpawn.ID},${Me.XTarget[1].ID},${Me.XTarget[2].ID},${Me.XTarget[3].ID},${Me.XTarget[4].ID},${Me.XTarget[5].ID},${Me.XTarget[5].ID},${Me.XTarget[6].ID},${Me.XTarget[7].ID},${Me.XTarget[8].ID},${Me.XTarget[9].ID},${Me.XTarget[10].ID},${Me.XTarget[11].ID},${Me.XTarget[12].ID},${Me.XTarget[13].ID},${Me.XTarget[14].ID},${Me.XTarget[15].ID}]},>>>Mezzed<<<,]}
Thanks! I think this will be my number 1 method to test now!
 
Running the command
Rich (BB code):
/echo ${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]} && ${Select[${NamingSpawn.ID},${Me.XTarget[1].ID},${Me.XTarget[2].ID},${Me.XTarget[3].ID},${Me.XTarget[4].ID},${Me.XTarget[5].ID},${Me.XTarget[5].ID},${Me.XTarget[6].ID},${Me.XTarget[7].ID},${Me.XTarget[8].ID},${Me.XTarget[9].ID},${Me.XTarget[10].ID},${Me.XTarget[11].ID},${Me.XTarget[12].ID},${Me.XTarget[13].ID},${Me.XTarget[14].ID},${Me.XTarget[15].ID}]}, 1, 0]}

with mezzed mobs in camp returns 0. Actually this seems to always return 0 no matter if mezzed or unmezzed mobs:
Rich (BB code):
/echo ${If[${Select[${NamingSpawn.Animation},110,26,32,71,72,111]}, 1, 0]}
 
this is what i use to detect non mezzed mobs. [CODE lang="ini" title="mobs in combat"]${Select[${Me.XTarget[${x}].Animation},1,5,6,27,43,44,45,80,82,112,134,135]}[/CODE]
 
@Addict NamingSpawn isn't a TLO you can access like that. NamingSpawn is used for each NPC to assign them captions over their names, such as their actual name, the above mentioned check is used to assign mezzed to their NamingSpawn output in a way that isn't accessible by conventional means. IIRC I wrote the above mentioned check when talking about modified captions a while back. Also, it returns a false positive for pets that aren't actively attacking at the moment because they use different animations.

You would need a select statement for each of the XTargets.Animation IE:

${If[${Select[${Me.XTarget[1].Animation},110,26,32,71,72,111]}], 1, 0]} etc for each of the XTargets. Would be a giant mess of nested select statements.
 
@Addict NamingSpawn isn't a TLO you can access like that. NamingSpawn is used for each NPC to assign them captions over their names, such as their actual name, the above mentioned check is used to assign mezzed to their NamingSpawn output in a way that isn't accessible by conventional means. IIRC I wrote the above mentioned check when talking about modified captions a while back. Also, it returns a false positive for pets that aren't actively attacking at the moment because they use different animations.
yeah my fault - I was in a hurry so I was just linking information from the macro wiki - I should have spent some more time explaining when I said not just for hud - sorry for the confusion Addict
 
Code:
${If[${Select[${Me.Xtarget[1].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[2].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[3].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[4].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[5].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[6].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[7].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[8].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[9].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[10].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[11].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[12].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[13].Animation},110,26,32,71,72,111]},1,0]}

I believe that would at least output 1 or 0 depending on if anything IS mezzed. but I think this is a long way from where you want to be.
 
yeah my fault - I was in a hurry so I was just linking information from the macro wiki - I should have spent some more time explaining when I said not just for hud - sorry for the confusion Addict
No problem! Thanks for the fast responses to my questions :)

Code:
${If[${Select[${Me.Xtarget[1].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[2].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[3].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[4].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[5].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[6].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[7].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[8].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[9].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[10].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[11].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[12].Animation},110,26,32,71,72,111]} || ${Select[${Me.Xtarget[13].Animation},110,26,32,71,72,111]},1,0]}

I believe that would at least output 1 or 0 depending on if anything IS mezzed. but I think this is a long way from where you want to be.

What do you think is best: looping through the XTarget (I think of it as being the same as what you have posted here) or using DanNet to query info from the enchanter (not sure if it's feasible)? I'm bad at making decisions when I know that I am just learning..
 
If you're writing your own macro then you could loop through the XTarget and if they aren't any of those animation's then they are no mezzed. So that would be the best option, because then you can check per-XTarget and react for each one using the loop.
 
Create a loop that targets each mob and checks for ${Target.Mezzed}. If the mob is mezzed, then it will return a spell name, if the target is not then it should return NULL or FALSE. Can't remember offhand which.

Edit: Can also implement that check for the tank getting aggro. Basically if mob mezzed, then move to next target. If mob not mezzed, then use aggro ability then move to next target.

Just reposting this. Just tested it and ${Target.Mezzed.ID} returns a number if mezzed and NULL if not.
 
The issue is ${Target.Mezzed.ID} would require each thing is targeted in turn to find out if the Target.Mezzed returns a spell, the options we were looking at I believe were intended to find out if they were mezzed without actually targeting them.
 
I did misread the first post about trying to avoid cycling with the tank.

A few ideas I had.

You can implement a mez check on your DPS to not break mez, so when they follow the tank as he cycles, they don't aggro a mob on accident. If you are using MQ2Melee, it turns off attack when you change targets already.

If I'm not mistaken, Enchanter can create an array of the of the mobs on Xtarget and confirm mezzed or not for the tank to then determine targets off of right? Enchanter would need that array for maintaining mez anyway. It would result in 2 arrays - 1 for mezzed mobs and 1 for non mezzed mobs for the tank.

The group can target lock like Addict mentioned in his original post or the macro could tell DPS to aggro lock ONLY during tank cycle phase.
 
Thank you for the replies!

I implemented it so that there is a timer that ticks down after pulling. Once this timer is 0 and if CCs have not locked down all targets, the tank will aggro those targets that are not locked down and then return to the old target. Works perfectly for my needs :)

Basically this
Rich (BB code):
/if (${If[${Select[${Me.XTarget[${x}].Animation},110,26,32,71,72,111]}, 0, 1]}==1 && ${Me.XTarget[${x}].PctAggro}<=100) {
    /target id ${Me.XTarget[${x}].ID}
    /call Engage
    /call Combat
}
 
Last edited:
Question - Finding if target is mezzed

Users who are viewing this thread

Back
Top
Cart