• 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

Bug - Kiss Assist Bard Mez Issue [Solved - includes code for solution]

Magoon

New member
Joined
Aug 29, 2014
RedCents
505¢
I've set up my 51 bard with MezOn. It is working, but there is one problem. After the mez is done, the normal combat twist is continued from where it left off, which as aspected. However, it does this before switching the target back to the current combat target, so, the next song, if is single target, hits the mezzed mob. If this next song is a damage song such as several bard single target DDs songs or DoT songs, it breaks the mez. In addition, if it was a DoT, it will continue to break the mez after attempting to re-mez, resulting in a vicious cycle.
 
Last edited:
Re: Kiss Assist Bard Mez Issue

There is a melee twist in the Melee section so you only dot the mobs you are fighting and not the ones you mezzing. :)

MeleeTwistOn =1 Bard can twist a different song list during combat. MeleeTwistOn=0 Bard will twist regular or not change order if TwistOn=1
MeleeTwistWhat - Song order to twist during combat for MQ2Twist only valid if MeleeTwistOn=1 i.e. MeleeTwistWhat==9 8 4 5 10

http://www.redguides.com/community/...ssAssist-7-Instructions-amp-Settings-Info#mel
 
Re: Kiss Assist Bard Mez Issue

Thanks for the reply. That is how my twist is set up. I have no DoTs in my general section nor the TwistMadWhat. And it is behaving as in the first post. I continues the melee twist before changing the target back to the melee target. It should switch targets and then continue twist. It is only a problem if the next song happens to be a DoT really (though if one had a DD in there the effect would be the same). And that only happens, say 25% of the time in my twist but it does make using MezOn not so useful until I get the AoE mez. It seems to be an issue of calling the whatever the resume melee twist sub is before the return to combat target sub is.

Being a coder by profession (mostly business web apps, but the skills should translate) I can try taking a look myself and see what's happening. If I find a fix, I'll post it.

- - - Updated - - -

I am not familiar with this scripting language. So I just eyeballed it. The solution may not be elegant, but the following edits to the the Sub DoMezStuff seems to address my issue. I tested it by MeleeTwisting only DoTs and turning mez on with an appropriate mez song. The above behavior did not occur anymore even with all songs in my melee twist being a DoT which should have caused the above behavior 100% of the time.
Rich (BB code):
| -------------------------------------------------------------------------------------
| SUB: Do Mez Stuff
| -------------------------------------------------------------------------------------
    Sub DoMezStuff
        /doevents
        /if (!${MezOn} || ${Window[RespawnWnd].Open} || ${DMZ}) {
			/if (${Target.ID}) /tar id ${Target.ID} 
			/return
		}
        /if (${DebugMez}) /echo ...debug_mez DoMezStuff: enter
        /declare i int local
        /declare SkipMezOld int local ${Ini[${IniFileName},Mez,MezStopHPs]}
        | Reset skip mez on health setting if tank dies to 1%
        /if (!${Spawn[=${MainAssist}].ID}) /varset MezStopHPs 1
        /call MobRadar ${MezRadius}
        /if (${DebugMez}) /echo ${MobCount}<2 && ${Spawn[=${MainAssist}].ID}
        /if (${MobCount}<2 && ${Spawn[=${MainAssist}].ID}) {
			/if (${Target.ID}) /tar id ${Target.ID}
			/return
		}
        /for i 1 to 10
            | Every Mez test conditon is listed seperately for clarity
            | Test -> array not empty, target=array, above mez hps, within mez levels, line of sight, not a giant, immune list, mob ignore list,  already mez'd timer, Merc tank mob<=1
            /if (${DebugMez}) /echo ${i}
            | Test -> array not empty, 
            /if (${DebugMez}) /echo (${AddsArray[${i},1].Equal[NULL]})
            /if (${AddsArray[${i},1].Equal[NULL]})  /goto :SkipMez
            /if (${DebugMez}) /echo ${AddsArray[${i},1].Equal[${MyTargetID}]} && ${Spawn[=${MainAssist}].ID}
            | Test -> is target MA's current Target
            /if (${Spawn[${AddsArray[${i},1]}].ID}==${MyTargetID} && ${Spawn[=${MainAssist}].ID}) /goto :SkipMez
            | Test -> is  MA's a merc skip 1st target so he attackes it.
            /if (${AggroTargetID} && !${MyTargetID} && ${Spawn[=${MainAssist}].ID} && ${Spawn[=${MainAssist}].Type.Equal[Mercenary]}) /goto :SkipMez
            /if (${DebugMez}) /echo ${Spawn[${AddsArray[${i},1]}].PctHPs}<${MezStopHPs}
            /if (${Spawn[${AddsArray[${i},1]}].PctHPs}<${MezStopHPs}) /goto :SkipMez
            /if (${DebugMez}) /echo (${AddsArray[${i},2]}>${MezMaxLevel} || ${AddsArray[${i},2]}<${MezMinLevel})
            /if (${AddsArray[${i},2]}>${MezMaxLevel} || ${AddsArray[${i},2]}<${MezMinLevel}) /goto :SkipMez
            /if (${DebugMez}) /echo !${Spawn[${AddsArray[${i},1]}].LineOfSight})
            /if (!${Spawn[${AddsArray[${i},1]}].LineOfSight}) /goto :SkipMez
            /if (${IAmABard} && ${MainAssist.Equal[${Me}]} && ${MyTargetID} && ${AggroTargetID} && ${AddsArray[${i},1].Equal[${MyTargetID}]}) /goto :SkipMez
            /if (${DebugMez}) /echo ${Spawn[${AddsArray[${i},1]}].Body.Name.Equal[Giant]}) /goto :SkipMez
            /if (${Spawn[${AddsArray[${i},1]}].Body.Name.Equal[Giant]}) /goto :SkipMez
            /if (${MezImmune.Find[${AddsArray[${i},3]}]}) {
                /if (${MMTimer${i}}==0) /call BroadCast ${IRCOn} ${EQBCOn} g "MEZ Immune Detected -> ${AddsArray[${i},3]} <- ID:${AddsArray[${i},1]}"
                /varset MMTimer${i} 1m
                /goto :SkipMez
            }
            | /if (${MobsToIgnore.Find[${AddsArray[${i},3]}]} && ${Select[${AddsArray[${i},3]},${Me.XTarget[1].Name},${Me.XTarget[2].Name},${Me.XTarget[3].Name},${Me.XTarget[4].Name},${Me.XTarget[5].Name},${Me.XTarget[6].Name},${Me.XTarget[7].Name},${Me.XTarget[8].Name},${Me.XTarget[9].Name},${Me.XTarget[10].Name}]}==0) /goto :SkipMez
            /if (${Me.CurrentMana}<${Spell[${MezSpell}].Mana}) /goto :SkipMez
            /if (${MezTimer${i}} > 0) /goto :SkipMez
            /if (${MobCount}<=1 && ${Spawn[=${MainAssist}].ID} && (${Spawn[=${MainAssist}].Type.Equal[Mercenary]} || ${Spawn[=${MainAssist}].Type.Equal[Pet]}))  /goto :SkipMez
            /if (${Spawn[${MainAssist} ${MainAssistType} group].ID} && ${Select[${AddsArray[${i},1]},${Me.XTarget[1].ID},${Me.XTarget[2].ID},${Me.XTarget[3].ID},${Me.XTarget[4].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}]}==0) /goto :SkipMez
            /if (${DebugMez}) /echo ...debug_mez MezTimer${i} ${MezTimer${i}} ${Spawn[${AddsArray[${i},1]}].ID} ${i}
            | Necros can't AEMez
            /if (${Select[${MezOn},1,3]} && ${MezAECount}>0 && ${MobCount}>=${MezAECount} && ${MezAETimer}==0 && ${Spawn[${AddsArray[${i},1]}].ID} && ${Select[${Me.Class.ShortName},BRD,ENC]})  {
                /if (${MyTargetID} && ${CombatStart}) {
                    /call MezMobsAE ${MyTargetID}
                } else {
                    /call MezMobsAE ${AddsArray[${i},1]}
                }
				/if (${Target.ID}) /tar id ${Target.ID} 
				/return
            }
            /if (${Select[${MezOn},1,2]}) /call MezMobs ${AddsArray[${i},1]} ${i}
            :SkipMez
        /next i
        /if (${Spawn[=${MainAssist}].ID} && ${MezStopHPs}==1) /varset MezStopHPs ${SkipMezOld}
        /if (${DebugMez}) /echo ...debug_mez DoMezStuff: Leave
		/if (${Target.ID}) /tar id ${Target.ID} 
    /return
 
I am not sure whats going on but your change just makes you re-target what you have targeted.
Rich (BB code):
/if (${Target.ID}) /tar id ${Target.ID}

If your current target is a snake and its in game id is 3257 you code says

If have a target, ${Target.ID} or snake/3257, then target by id my current target snake or 3257

${Target.ID} only returns the current target id that you have targeted.

what were you trying to accomplish?
 
The problem was that after mezzing, the next song would start and THEN would re-target the main combat target. The result would be that very often the mezzed targets also got DoTs. The code above is intended to re-target the target BEFORE the next song is started. It looked to me in the code that an array of some kind is being used to determine who gets mezzed. I tried using MyTargetID but that resulted in the mezzed target becoming the combat target.

The problem is that before the above change is the I'd have a camp of 4-6 mobs 5 of which the bard would DoT and then continue to try and re-mez. Usually ending with character death.
 
If you the meleetwist set up and no dots in your normal twist kiss shouldn't dot mezzed mobs
 
Okay, but it was doing so. Regularly. Again, because it was starting the meleetwist before re-targeting the main target. And DoTing the mob just mezzed.

So, I guess the question is, what would return the target of the intended target (the main target that I had targeted before mezzing) what I need to have happen is that it gets targeted again before the meleetwist starts up again. I know that it shouldn't work that way. But you are going to have to trust me that I have no DoTs in my normal twist and that when the melee twist would often start with the mezzed mob still targeted. The target changes with the song casting still happening, but because it started with the mezzed mob targeted, the mezzed mob gets the DoT.
 
Bug - Kiss Assist Bard Mez Issue [Solved - includes code for solution]

Users who are viewing this thread

Back
Top
Cart