• 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 - How to set CLR ini to dispell/cure Mez?

bmars06

Well-known member
Joined
Mar 8, 2019
RedCents
739¢
Hey Guys,

Is there a way to set my cleric's INI to dispel/cure Mez? I'm tired of getting mezzed while doing the Tyrant of Fire mission ><

Thanks!
 
Radiant Cure is only 95% chance to remove 1 detrimental effect

This is my cure section

Code:
[Cures]
CuresOn=1
CuresSize=5
Cures1=Radiant Cure
Cures2=Ward of Purity
Cures3=Purified Spirits
Cures4=Group Purify Soul
Cures5=Word of Greater Restoration
 
Oh, it knows already to cast it when tank is mezzed?
it is the first cure to use based on the ini, so if there is something it can cure it will cast it - I'm not sure on the logic behind it, maybe @ctaylor22 can chime in
 
@Sicprofundus you would call me out... LOL.. I will try and keep this as simple as I can. When you setup your cures, there is the ability to have a generic cure, this cure is for anything that is NOT Poison, disease, curse, or corruption. So if you need to cure anything that is not one of the listed. then leave second tag blank.

One thing to keep in mind, if the debuff/curse does NOT return any counters, the cure routine will not even know you need to be cured. Hope this helps.
 
@Sicprofundus you would call me out... LOL.. I will try and keep this as simple as I can. When you setup your cures, there is the ability to have a generic cure, this cure is for anything that is NOT Poison, disease, curse, or corruption. So if you need to cure anything that is not one of the listed. then leave second tag blank.

One thing to keep in mind, if the debuff/curse does NOT return any counters, the cure routine will not even know you need to be cured. Hope this helps.

I don't think the mez has any counters listed on it... just a duration. Does that mean that the CLR ini does not even know it is something to be cured/dispelled?
 
Normally any debuff has some sort of counter. If you right click on the debuff in the characters buff window. You can find the spell type and figure out the counters it would be under.

Besides all that you can use a DPS entry and a condition to cast a cure on the MA. Create a DPS entry that uses the MA tag and create a condition that checks if the Target is mezed or what ever debuff you need to check for..
 
You could try a down/holy or a dps condition as ${Select[${Spawn[pc tankname].Animation}, 26, 32, 71, 72, 110, 111]} ... it's not foolproof, but they i think are animation ID's associated with mes
 
I put an RC hotkey on my cleric's hotbars and manually spam it between KA spell casts. It seems as though the cure routine will not identify Delude, the mez spell used by GMM mobs, aas something it can cure. I see other TBL things being cured, so the ini is configured correctly.
 
It doesn't see the mes because as ctaylor22 mentioned above, it doesn't have counters. It's simply a detrimental spell.

Those mes animation ID's i listed used to work well for old enchanter mes routines as a quick check before checking target buffs
 
I will try and take a look at the delude spell when cast on a tune. I guess it is time to have my Warrior /dual my Enchanter. We might be able to add a bogus counter when mezzed, to the ini file. That way kiss will think you need a cure.

Well after glancing over the code for the writedebuff and checkcures routines, this should be a straight forward fix.. Give me a few and I will post the code change that should let you cast cures on mezzed group members.
 
Last edited:
The change has not been tested so use at your own risk.
Just replace the two routines, WriteDebuff and CheckCures.

you can use the generic cure or use the mezzed tag. Example:

Cures1=Radiant Cure
or
Cures1=Radiant Cure|mezzed

Code:
| ----------------------------------------------------------------------------
| SUB: WriteDebuffs
| ----------------------------------------------------------------------------
    Sub WriteDebuffs
    /if (${DebugHeal}) /echo \atDEBUGHEALS WriteDebuffs Enter \agLine#: ${Macro.CurLine}
        /declare DebuffList string local
        /declare IAmDeBuffed int local ${Math.Calc[${Int[${Me.Poisoned.ID}]}+${Int[${Me.Diseased.ID}]}+${Int[${Me.Cursed.ID}]}+${Int[${Me.Corrupted.ID}]}+${Int[${Me.Mezzed.ID}]}]}
        /if (${IAmDeBuffed} && !${NeedCuring}) {
            /varset NeedCuring 1
            /varset DebuffList ${IAmDeBuffed}|${Int[${Me.Poisoned.ID}]}|${Int[${Me.Diseased.ID}]}|${Int[${Me.Cursed.ID}]}|${Int[${Me.Corrupted.ID}]}|${Int[${Me.Mezzed.ID}]}
            /ini "KissAssist_Buffs.ini" "${Me.ID}" Debuffs "${DebuffList}"
            /delay 10
            /if (${DebugHeal}) /echo \amDEBUGHEALS WriteDebuffs Writing debuffs to ini file \agLine#: ${Macro.CurLine}
        }
        /if (!${IAmDeBuffed} && ${NeedCuring}) {
            /varset NeedCuring 0
            /varset DebuffList
            /ini "KissAssist_Buffs.ini" "${Me.ID}" Debuffs "${DebuffList}"
            /delay 10
            /if (${DebugHeal}) /echo \amDEBUGHEALS WriteDebuffs Clearing debuffs from ini file \agLine#: ${Macro.CurLine}
        }
        /if (${DebugHeal}) /echo \atDEBUGHEALS WriteDebuffs Leave \agLine#: ${Macro.CurLine}
    /return
| ----------------------------------------------------------------------------
| SUB: CheckCures
| ----------------------------------------------------------------------------
    Sub CheckCures
        /if (!${CuresOn}) /return
        /if (${Me.Invis} && !${AggroTargetID}) /return
        /if (${Medding} && ${MedCombat}) /return
        /if (${DebugHeal}) /echo \amDEBUGHEALS CheckCures Enter  \agLine#: ${Macro.CurLine}
        /declare i int local
        /declare j int local
        /declare IniIDList string local ${Ini["KissAssist_Buffs.ini"]}
        /declare IniIDCount int local ${Math.Calc[${IniIDList.Count[|]}-1]}
        /declare IniDebuffCount string local 0
        /declare IniDebuffList string local
        /declare CuretoCast string local
        /declare CTID int local
        /for i 1 to ${Cures.Size}
            /if (!${Cures[${i}].Length}) /continue
            /for j 1 to ${IniIDCount}
                /varset CuretoCast
                /varset IniDebuffCount ${Ini["KissAssist_Buffs.ini",${IniIDList.Arg[${j},|]},"Debuffs"]}
                /varset CTID ${Spawn[${IniIDList.Arg[${j},|]}].ID}
                /if (${IniDebuffCount.Arg[1,|]} && ${Spawn[${IniIDList.Arg[${j},|]}].ID} && ${Spawn[${IniIDList.Arg[${j},|]}].Distance}<100) {
                    /if (${IniDebuffCount.Arg[1,|]} && ${Cures[${i}].Arg[2,|].Length}==0) {
                        /varset CuretoCast ${Cures[${i}]}
                    } else /if (${IniDebuffCount.Arg[2,|]}>0 && ${Cures[${i}].Arg[2,|].Equal[poison]}) {
                        /varset CuretoCast ${Cures[${i}].Arg[1,|]}
                    } else /if (${IniDebuffCount.Arg[3,|]}>0 && ${Cures[${i}].Arg[2,|].Equal[disease]}) {
                        /varset CuretoCast ${Cures[${i}].Arg[1,|]}
                    } else /if (${IniDebuffCount.Arg[4,|]}>0 && ${Cures[${i}].Arg[2,|].Equal[curse]}) {
                        /varset CuretoCast ${Cures[${i}].Arg[1,|]}
                    } else /if (${IniDebuffCount.Arg[5,|]}>0 && ${Cures[${i}].Arg[2,|].Equal[corruption]}) {
                        /varset CuretoCast ${Cures[${i}].Arg[1,|]}
                    } else /if (${IniDebuffCount.Arg[6,|]}>0 && ${Cures[${i}].Arg[2,|].Equal[mezzed]}) {
                        /varset CuretoCast ${Cures[${i}].Arg[1,|]}
                    }
                    | Check cures for group component since they don't seem to work on out of group toons
                    /if (${Spell[${CuretoCast}].TargetType.Find[group v]} && !${Spawn[id ${IniIDList.Arg[${j},|]} group].ID}) {
                        /if (!${Defined[CureTimer${CTID}${i}]}) {
                            /declare CureTimer${CTID}${i} timer outer 30s
                            /if (${DebugHeal}) /echo \amDEBUGHEALS CheckCures /echo declare CureTimer${CTID}${i} \agLine#: ${Macro.CurLine}
                        } else /if (!${CureTimer${CTID}${i}}) {
                            /varset CureTimer${CTID}${i} 30s
                            /if (${DebugHeal}) /echo \amDEBUGHEALS CheckCures /echo varset CureTimer${CTID}${i} \agLine#: ${Macro.CurLine}
                        } 
                        /if (${DebugHeal} && !${CureTimer${CTID}${i}}) /echo CURING: >> ${Spawn[${IniIDList.Arg[${j},|]}].CleanName} << is not in your group and >> ${CuretoCast} << is a group spell.
                        /continue
                    }
                    /if (${Me.SpellReady[${Spell[${CuretoCast}].RankName}]} || ${Me.AltAbilityReady[${CuretoCast}]} || ${Me.CombatAbilityReady[${Spell[${CuretoCast}].RankName}]} || ${Me.AbilityReady[${CuretoCast}]} || ${Me.ItemReady[${CuretoCast}]}) {
                        /call CastWhat "${CuretoCast}" ${IniIDList.Arg[${j},|]} Cure 0
                    }
                    /if (${Macro.Return.Equal[CAST_SUCCESS]}) {
                        /call BroadCast ${IRCOn} ${EQBCOn} o "CURING: >> ${Spawn[${IniIDList.Arg[${j},|]}].CleanName} << with ${CuretoCast}"
                        /delay 10
                    }
                }
            /next j
        /next i
        /if (${DebugHeal}) /echo \amDEBUGHEALS CheckCures Leave \agLine#: ${Macro.CurLine}
    /return
 
The change has not been tested so use at your own risk.
Just replace the two routines, WriteDebuff and CheckCures.

you can use the generic cure or use the mezzed tag. Example:

Cures1=Radiant Cure
or
Cures1=Radiant Cure|mezzed

Code:
| ----------------------------------------------------------------------------
| SUB: WriteDebuffs
| ----------------------------------------------------------------------------
    Sub WriteDebuffs
    /if (${DebugHeal}) /echo \atDEBUGHEALS WriteDebuffs Enter \agLine#: ${Macro.CurLine}
        /declare DebuffList string local
        /declare IAmDeBuffed int local ${Math.Calc[${Int[${Me.Poisoned.ID}]}+${Int[${Me.Diseased.ID}]}+${Int[${Me.Cursed.ID}]}+${Int[${Me.Corrupted.ID}]}+${Int[${Me.Mezzed.ID}]}]}
        /if (${IAmDeBuffed} && !${NeedCuring}) {
            /varset NeedCuring 1
            /varset DebuffList ${IAmDeBuffed}|${Int[${Me.Poisoned.ID}]}|${Int[${Me.Diseased.ID}]}|${Int[${Me.Cursed.ID}]}|${Int[${Me.Corrupted.ID}]}|${Int[${Me.Mezzed.ID}]}
            /ini "KissAssist_Buffs.ini" "${Me.ID}" Debuffs "${DebuffList}"
            /delay 10
            /if (${DebugHeal}) /echo \amDEBUGHEALS WriteDebuffs Writing debuffs to ini file \agLine#: ${Macro.CurLine}
        }
        /if (!${IAmDeBuffed} && ${NeedCuring}) {
            /varset NeedCuring 0
            /varset DebuffList
            /ini "KissAssist_Buffs.ini" "${Me.ID}" Debuffs "${DebuffList}"
            /delay 10
            /if (${DebugHeal}) /echo \amDEBUGHEALS WriteDebuffs Clearing debuffs from ini file \agLine#: ${Macro.CurLine}
        }
        /if (${DebugHeal}) /echo \atDEBUGHEALS WriteDebuffs Leave \agLine#: ${Macro.CurLine}
    /return
| ----------------------------------------------------------------------------
| SUB: CheckCures
| ----------------------------------------------------------------------------
    Sub CheckCures
        /if (!${CuresOn}) /return
        /if (${Me.Invis} && !${AggroTargetID}) /return
        /if (${Medding} && ${MedCombat}) /return
        /if (${DebugHeal}) /echo \amDEBUGHEALS CheckCures Enter  \agLine#: ${Macro.CurLine}
        /declare i int local
        /declare j int local
        /declare IniIDList string local ${Ini["KissAssist_Buffs.ini"]}
        /declare IniIDCount int local ${Math.Calc[${IniIDList.Count[|]}-1]}
        /declare IniDebuffCount string local 0
        /declare IniDebuffList string local
        /declare CuretoCast string local
        /declare CTID int local
        /for i 1 to ${Cures.Size}
            /if (!${Cures[${i}].Length}) /continue
            /for j 1 to ${IniIDCount}
                /varset CuretoCast
                /varset IniDebuffCount ${Ini["KissAssist_Buffs.ini",${IniIDList.Arg[${j},|]},"Debuffs"]}
                /varset CTID ${Spawn[${IniIDList.Arg[${j},|]}].ID}
                /if (${IniDebuffCount.Arg[1,|]} && ${Spawn[${IniIDList.Arg[${j},|]}].ID} && ${Spawn[${IniIDList.Arg[${j},|]}].Distance}<100) {
                    /if (${IniDebuffCount.Arg[1,|]} && ${Cures[${i}].Arg[2,|].Length}==0) {
                        /varset CuretoCast ${Cures[${i}]}
                    } else /if (${IniDebuffCount.Arg[2,|]}>0 && ${Cures[${i}].Arg[2,|].Equal[poison]}) {
                        /varset CuretoCast ${Cures[${i}].Arg[1,|]}
                    } else /if (${IniDebuffCount.Arg[3,|]}>0 && ${Cures[${i}].Arg[2,|].Equal[disease]}) {
                        /varset CuretoCast ${Cures[${i}].Arg[1,|]}
                    } else /if (${IniDebuffCount.Arg[4,|]}>0 && ${Cures[${i}].Arg[2,|].Equal[curse]}) {
                        /varset CuretoCast ${Cures[${i}].Arg[1,|]}
                    } else /if (${IniDebuffCount.Arg[5,|]}>0 && ${Cures[${i}].Arg[2,|].Equal[corruption]}) {
                        /varset CuretoCast ${Cures[${i}].Arg[1,|]}
                    } else /if (${IniDebuffCount.Arg[6,|]}>0 && ${Cures[${i}].Arg[2,|].Equal[mezzed]}) {
                        /varset CuretoCast ${Cures[${i}].Arg[1,|]}
                    }
                    | Check cures for group component since they don't seem to work on out of group toons
                    /if (${Spell[${CuretoCast}].TargetType.Find[group v]} && !${Spawn[id ${IniIDList.Arg[${j},|]} group].ID}) {
                        /if (!${Defined[CureTimer${CTID}${i}]}) {
                            /declare CureTimer${CTID}${i} timer outer 30s
                            /if (${DebugHeal}) /echo \amDEBUGHEALS CheckCures /echo declare CureTimer${CTID}${i} \agLine#: ${Macro.CurLine}
                        } else /if (!${CureTimer${CTID}${i}}) {
                            /varset CureTimer${CTID}${i} 30s
                            /if (${DebugHeal}) /echo \amDEBUGHEALS CheckCures /echo varset CureTimer${CTID}${i} \agLine#: ${Macro.CurLine}
                        }
                        /if (${DebugHeal} && !${CureTimer${CTID}${i}}) /echo CURING: >> ${Spawn[${IniIDList.Arg[${j},|]}].CleanName} << is not in your group and >> ${CuretoCast} << is a group spell.
                        /continue
                    }
                    /if (${Me.SpellReady[${Spell[${CuretoCast}].RankName}]} || ${Me.AltAbilityReady[${CuretoCast}]} || ${Me.CombatAbilityReady[${Spell[${CuretoCast}].RankName}]} || ${Me.AbilityReady[${CuretoCast}]} || ${Me.ItemReady[${CuretoCast}]}) {
                        /call CastWhat "${CuretoCast}" ${IniIDList.Arg[${j},|]} Cure 0
                    }
                    /if (${Macro.Return.Equal[CAST_SUCCESS]}) {
                        /call BroadCast ${IRCOn} ${EQBCOn} o "CURING: >> ${Spawn[${IniIDList.Arg[${j},|]}].CleanName} << with ${CuretoCast}"
                        /delay 10
                    }
                }
            /next j
        /next i
        /if (${DebugHeal}) /echo \amDEBUGHEALS CheckCures Leave \agLine#: ${Macro.CurLine}
    /return


Try this out and I couldn't get it to work.
 
This code was incorporated into the last version of KissAssist. Have I actually been able to test it? No. I don't camp in a location where my tank gets mezzed.
 
Question - How to set CLR ini to dispell/cure Mez?

Users who are viewing this thread

Back
Top
Cart