• 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

Problem - Why does my cleric keep spamming assurance (I have conditions)!

Joined
Dec 24, 2017
RedCents
1,813¢
BuffsOn=1
RebuffOn=1
ChecKBuffsTimer=10
PowerSource=NULL
BuffsCOn=1

Buffs1=Unified Hand of Assurance
BuffsCond1=(!${Target.Buff[${Spell[Arcornite Blessing].RankName}].ID} && !${Target.Buff[${Spell[Assurance].RankName}].ID} && !${Target.Buff[${Spell[Symbol of Emra].RankName}].ID})
Buffs2=Unified Hand of Emra
BuffsCond2=(${Target.Buff[${Spell[Arcornite Blessing].RankName}].ID} && !${Target.Buff[${Spell[Assurance].RankName}].ID} && !${Target.Buff[${Spell[Symbol of Emra].RankName}].ID}) || (${Target.Buff[${Spell[Arcornite Blessing].RankName}].ID} && !${Target.Buff[${Spell[Symbol of Emra].RankName}].ID})

Can anyone see anything wrong with these conditions? I know I am missing something... I am running KissAssistVer=10.0.4.1.96 - eqmule version.
 
KA gets it's buff information from a file that every toon running KA writes too. So it doesn't actually click on the target to check their buffs before deciding to cast a buff. My guys will cast group buffs maybe 3 times as it targets a new group member, before it catches that they all now have it. Are all your toons using KA?

Target isn't a reliable check for some stuff in KA. I found out because my Mage would occasionally nuke herself in the face because her "target", which was herself for a second to selfbuff, didn't have a malo debuff during DPS.

You can check yourself fine like{Me.Buff....}, but KA may be targeted on somebody else when it's running down the list and use their buffs when guessing what to cast on the next target.

If you want to perfectly relay info between toons you can look into mq2netbots or dannet.

Maybe try something like this? Works in 10.2.6 Vanilla KA, not sure if eqmules has class settings.
Code:
Buffs1=Unified Hand of Assurance|class|war,brd,ber,rog,clr
Buffs2=Unified Hand of Emra|class|enc,mag,wiz,nec,bst

or the older version of:
Code:
Buffs1=Unified Hand of Assurance|Melee
Buffs2=Unified Hand of Emra|Caster
 
Buffs3=Unified Hand of Assurance|Dual|Assurance

Is what I use on my cleric. I don't deal with Emra at all personally.

With that said, I would like to mention that your conditions are a bit more elaborate than they need to be.

${Target.Buff[Assurance].ID} is all that would be needed unless you're wanting to do a comparison of rank, which would require a bit more attention than you've provided.

The reason I say that it is all that would be needed is because ${Target.Buff[Some Text].ID} only requires a partial name, this avoids the need to check for a specific rank and allows it to check specifically for the spell of any rank.

${Target.Buff[Assurance Rk. II].ID} is a very specific buff check that will only return a value if the entire string including the specific rank is found. Where as ${Target.Buff[Assurance].ID} will return a value if any rank of Assurance is found on the target player.

the above method of using Dual means that the spell's name and the buff it provides are two different things. So the spell is called Unified Hand of Assurance, but the actual buff name is Assurance that I'm seeking to get from it. That removes the need to verify that the target has the buff already. Then moving to conditions you would need to check for the alternatives that you have listed.

Based on the style of Conditions I'm assuming you're using Kiss 10.2.6
| Added Conditions Check
/if (${ConditionsOn} && ${BuffsCOn} && ${If[${BuffsCond[${i}]},0,1]}) /continue

Is found in the sub CheckBuffs(int ForceGrp)

However, I'm not seeing it get a target prior to checking the conditions. Looking more into the CheckBuffs sub I'm finding that it's actually iterating through the group members with a for loop to check each group member. There-fore ${Target TLO's wouldn't function as one might expect.

For group buffs of this nature it's best to use the built in methods to control what to check, and then use those to check a target for buffs. IE:

Buffs3=Unified Hand of Assurance|Dual|Assurance|Me

Being as the macro uses an INI to check for buffs. One could also attempt to decipher the CheckINIBuffs sub in order to allow you to check each group member for the written buffs. That way but that in all honest is more effort that I have in me right now to get into.

Your best bet is to choose a buff set that works and stick to it as trying to handle each situation isn't always that simple. Otherwise, for cases of group buffs like this one, it would be best to check yourself the buffs in the conditions instead of a target and expect all group members will share the same buff sets. If you want to use conditions, set the target to yourself, then check yourself for the offending buffs that make you want to avoid casting the buff in question.

Buffs3=Unified Hand of Assurance|Dual|Assurance|Me
BuffsCond3=!${Me.Buff[Arcornite Blessing].ID} && !${Me.Buff[Symbol of Emra].ID}

The above should only cast Unified Hand of Assurance if you don't have Assurance already, and you don't have either buff Acornite Blessing or Symbol of Emra on either.

Target specific buffs become more complicated.
 
Last edited:
Problem - Why does my cleric keep spamming assurance (I have conditions)!

Users who are viewing this thread

Back
Top
Cart