• 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 - Divine Protector's unity

mudpielen

Member
Joined
Nov 19, 2012
RedCents
552¢
Anyone using Divine Protectors AA in Kiss. If so how are you setting it. I replace the 4 buffs it replaces in my ini but it seems to recast every couple mins. I have messed around with it a bit an nothing seems to fix it
 
Anyone using Divine Protectors AA in Kiss. If so how are you setting it. I replace the 4 buffs it replaces in my ini but it seems to recast every couple mins. I have messed around with it a bit an nothing seems to fix it

I dont have that specific one, but here's what I have for the SK one... I have a conditions file with a condition line for it:

Buffs1=Dark Lord's Unity (Azia)
BuffsCond1=!${Me.Buff[${Spell[Shroud of the Krellnakor].RankName}].ID} || !${Me.Buff[${Spell[Tylix's Horror].RankName}].ID} || !${Me.Buff[${Spell[Drape of the Magmaforged].RankName}].ID} || !${Me.Buff[${Spell[Remorseless Demeanor].RankName}].ID} || !${Me.Buff[${Spell[Helot Skin].RankName}].ID} || !${Me.Buff[${Spell[Call of Nightfall].RankName}].ID}

just change the names of the individual buffs to suit yours, it should hopefully do the trick..

oh.. you also MAY need to put a |Me in your kiss ini after it, mine works without, but i think my druid's unity one required the |Me
 
Last edited:
Cool thanks i will give that shot, it seems to have worked. Didn't have to add the |ME

- - - Updated - - -

I dont have that specific one, but here's what I have for the SK one... I have a conditions file with a condition line for it:

Buffs1=Dark Lord's Unity (Azia)
BuffsCond1=!${Me.Buff[${Spell[Shroud of the Krellnakor].RankName}].ID} || !${Me.Buff[${Spell[Tylix's Horror].RankName}].ID} || !${Me.Buff[${Spell[Drape of the Magmaforged].RankName}].ID} || !${Me.Buff[${Spell[Remorseless Demeanor].RankName}].ID} || !${Me.Buff[${Spell[Helot Skin].RankName}].ID} || !${Me.Buff[${Spell[Call of Nightfall].RankName}].ID}

just change the names of the individual buffs to suit yours, it should hopefully do the trick..

oh.. you also MAY need to put a |Me in your kiss ini after it, mine works without, but i think my druid's unity one required the |Me

have a look at this an see if it is ok, it was fine lastnight then i log in today an it is casting again pretty much after every kill

BuffsCond1=!${Me.Buff[${Spell[Merciful Fate].RankName}].ID} || !${Me.Buff[${Spell[Armor of Steadfast Faith].RankName}].ID} || !${Me.Buff[${Spell[Remose for the Fallen].RankName}].ID} || !${Me.Buff[${Spell[Silent Piety].RankName}].ID}
 
if you plan on using the conditions on all 4 buffs should change it to &&

BuffsCond1=!${Me.Buff[${Spell[Merciful Fate].RankName}].ID} && !${Me.Buff[${Spell[Armor of Steadfast Faith].RankName}].ID} && !${Me.Buff[${Spell[Remose for the Fallen].RankName}].ID} && !${Me.Buff[${Spell[Silent Piety].RankName}].ID}


that way it will just cast it if you are missing any of it
 
if you plan on using the conditions on all 4 buffs should change it to &&

BuffsCond1=!${Me.Buff[${Spell[Merciful Fate].RankName}].ID} && !${Me.Buff[${Spell[Armor of Steadfast Faith].RankName}].ID} && !${Me.Buff[${Spell[Remose for the Fallen].RankName}].ID} && !${Me.Buff[${Spell[Silent Piety].RankName}].ID}


that way it will just cast it if you are missing any of it

Ok made changes an seeing if that fixes my issue thanks
 
if you plan on using the conditions on all 4 buffs should change it to &&

BuffsCond1=!${Me.Buff[${Spell[Merciful Fate].RankName}].ID} && !${Me.Buff[${Spell[Armor of Steadfast Faith].RankName}].ID} && !${Me.Buff[${Spell[Remose for the Fallen].RankName}].ID} && !${Me.Buff[${Spell[Silent Piety].RankName}].ID}


that way it will just cast it if you are missing any of it

No, not AND.. you want OR.. that way it recasts if any one of them are down.. not if ALL of them are down.. This way, one of the buffs dies out, it refreshes all of them.. If you put &&, the condition is when ALL those buffs drop.. which could be a long time, meanwhile the shorter buffs have been down for 2hrs etc
 
apparently yhe theory is if && is used is something like this, it will cast if 1 of them is not present.

if u dont have buff1 ANF buff2 AND buff3 and BUFF4 cast

this is checking if you have all 4 buffs and if you don't have all 4 then cast it, if you have 3 of the 4 then cast it.

using OR will check singles

if you don't have buff1 OR buff2 OR buff3 or Buff4 then cast, therefore if you have 3/4 buffs it wont recast

in a case like this the OR checks, if you have 0/4 it will cast. if you have 4/4 then 1 drops 3/4 it wont cast cause your asking it to recast OR.
 
apparently yhe theory is if && is used is something like this, it will cast if 1 of them is not present.

if u dont have buff1 ANF buff2 AND buff3 and BUFF4 cast

this is checking if you have all 4 buffs and if you don't have all 4 then cast it, if you have 3 of the 4 then cast it.

using OR will check singles

if you don't have buff1 OR buff2 OR buff3 or Buff4 then cast, therefore if you have 3/4 buffs it wont recast

in a case like this the OR checks, if you have 0/4 it will cast. if you have 4/4 then 1 drops 3/4 it wont cast cause your asking it to recast OR.

|| works though, i tested it.. I drop any single buff and it re-casts if unity AA is ready..

Its boolean logic... IF any one of those statements returns TRUE for the if statement, it will satisfy the buff condition.

If you use AND , it needs to have ALL statements to return true in order to satisfy the condition..

NULL || NULL || NULL || TRUE = TRUE
NULL || NULL || TRUE || TRUE = TRUE
NULL || TRUE || TRUE || TRUE = TRUE

But...

NULL && NULL && NULL && TRUE = FALSE
etc..
the ONLY way to return a TRUE from && 's is if ALL them are TRUE.. TRUE && TRUE && TRUE && TRUE = TRUE..

think OR gates and AND gates..

Your logic is incorrect regarding your "if you don't have buff1 OR buff2 OR buff3 or Buff4 then cast, therefore if you have 3/4 buffs it wont recast" it checks them all, and WILL recast if only one returns true.. AND will only cast when ALL return true (the statement being 'is buff down')
 
I would ask the devs for clarification on this statement, as I just tested the OR statement. if I have 3/4 using the OR its not recasting clicking all 4 off will recast it. Utilizing the && statement if I am missing any 1 then it recast
whats its asking is

if I don't have BUFF1 AND BUFF2 AND BUFF3 and BUFF4 - to cast. thefore the && is checking aginst the statement. Missing any one of the 4 will cause a recast

IF if dont have BUFF1 OR BUFF2 OR BUFF3 OR BUFF4 - not having 1 of these buffs will cast it, having any of the 4 will not cuase a recast
 
I would ask the devs for clarification on this statement, as I just tested the OR statement. if I have 3/4 using the OR its not recasting clicking all 4 off will recast it. Utilizing the && statement if I am missing any 1 then it recast
whats its asking is

if I don't have BUFF1 AND BUFF2 AND BUFF3 and BUFF4 - to cast. thefore the && is checking aginst the statement. Missing any one of the 4 will cause a recast

IF if dont have BUFF1 OR BUFF2 OR BUFF3 OR BUFF4 - not having 1 of these buffs will cast it, having any of the 4 will not cuase a recast

Well, the other part though, is the intent... Do you want to wait for all buffs down before you recast? (in which case i would use && && &&) or, do you want to recast when nay one of the four buffs go down? (in which case i would use || || ||) .. but i also noticed these unity buffs behave differrent for each class.. big surprise eq acting whacky with them..

Here's what I've done for the various classes I have, which works for each of them, respectively. Tested by letting it buff up, then dropping one buff, it recasts.. wait for unity refresh, drop the other buff, it recasts.. continuing until i've gone through all buffs on the list within the condition:

Cleric: Because he only has one buff i'm worried about, do it the old |dual| way
Buffs4=Saint's Unity|Dual|Armor of the Merciful
BuffsCond4=TRUE

Druid: I had to put |Me on this one because he would spam cast the unity AA every time it was up otherwise..
Buffs8=Wildtender's Unity|Me
BuffsCond8=!${Me.Buff[${Spell[Daggerspike Coat].RankName}].ID} || !${Me.Buff[${Spell[Mask of the Wildtender].RankName}].ID}

Enchanter: Also, I needed to put the |Me or it spam cast it..
Buffs2=Orator's Unity|Me
BuffsCond2=!${Me.Buff[${Spell[Shield of Scales].RankName}].ID} || !${Me.Buff[${Spell[Ward of the Transfixer].RankName}].ID}

And SK: For some reason it didnt need the |Me to work right..
Buffs1=Dark Lord's Unity (Azia)
BuffsCond1=!${Me.Buff[${Spell[Shroud of the Krellnakor].RankName}].ID} || !${Me.Buff[${Spell[Tylix's Horror].RankName}].ID} || !${Me.Buff[${Spell[Drape of the Magmaforged].RankName}].ID} || !${Me.Buff[${Spell[Remorseless Demeanor].RankName}].ID} || !${Me.Buff[${Spell[Helot Skin].RankName}].ID} || !${Me.Buff[${Spell[Call of Nightfall].RankName}].ID}
 
I see what your saying, and logically using the OR may seem correct. Lets use one of your examples:

Buffs2=Orator's Unity|Me
BuffsCond2=!${Me.Buff[${Spell[Shield of Scales].RankName}].ID} || !${Me.Buff[${Spell[Ward of the Transfixer].RankName}].ID}

by using this example, the OR statement is basically saying if you have 1 of those buffs then don't cast and only cast it if you don't have it at all. your asking if I font have OR therefore its just checking if you have 1 of them don't cast and only cast when you font have both.

now if we change it up:

BuffsCond2=!${Me.Buff[${Spell[Shield of Scales].RankName}].ID} && !${Me.Buff[${Spell[Ward of the Transfixer].RankName}].ID}

what I'm saying Is that using the && this is checking if you have BOTH and if you don't have both then to cast it, if you have 1 of the 2 then cast it because you don't HAVE both.

I have almost the same set up as you do. :)

I like to get an input from 1 of the devs as this will help clear up a lot.
 
Using the following example:
Rich (BB code):
BuffsCond1=!${Me.Buff[${Spell[Shroud of the Krellnakor].RankName}].ID} || !${Me.Buff[${Spell[Tylix's Horror].RankName}].ID} || !${Me.Buff[${Spell[Drape of the Magmaforged].RankName}].ID} || !${Me.Buff[${Spell[Remorseless Demeanor].RankName}].ID} || !${Me.Buff[${Spell[Helot Skin].RankName}].ID} || !${Me.Buff[${Spell[Call of Nightfall].RankName}].ID}

If any one of the Buffs is NOT on you. The statement will return TRUE.
If all 4 of the buffs are on you. The statement will return FALSE.

Using the following example:
Rich (BB code):
BuffsCond1=!${Me.Buff[${Spell[Merciful Fate].RankName}].ID} && !${Me.Buff[${Spell[Armor of Steadfast Faith].RankName}].ID} && !${Me.Buff[${Spell[Remose for the Fallen].RankName}].ID} && !${Me.Buff[${Spell[Silent Piety].RankName}].ID}

If NONE of the buffs are on you. The statement will return TRUE.
If any of the Buffs are on you. The statement will return FALSE.
 
so which is the correct usage in this example? AND or OR?

Think of it this way.. Imagine conditions weren't a thing and you had to write these as downshits... you would have to put an /if ( ) around your whole string of statments you want..

The condition has to be TRUE in order for it to execute.. the only thing different from this and a downshit is you dont see the /if or the ( ) surrounding the whole thing..

Does that help?
 
I did what Islandgirl671 said an the problem was gone. IT recast it when Silent piety drops. I haven't had any issues since.

BuffsCond1=!${Me.Buff[${Spell[Merciful Fate].RankName}].ID} && !${Me.Buff[${Spell[Armor of Steadfast Faith].RankName}].ID} && !${Me.Buff[${Spell[Remose for the Fallen].RankName}].ID} && !${Me.Buff[${Spell[Silent Piety].RankName}].ID}
 
I don't think there is a question is which works or doesn't, I think what me and Lord is trying to figure out which is the proper way to use this type of condition. apparently its working either way regardless, but like what we are saying and discussing the logical way to actually use this type of condition.

Ive had this same discussion a while back when I was using the OR statement. and the way I understood it is when using AND you are checking againt everything so if I have 3/4 of the buffs using AND it makes the statement false which is what ctaylor pointed out "If any of the Buffs are on you. The statement will return FALSE. " and since the statement is false its going to recast it so that the statement can be true. remember we are checking againt NOT !$

this is how I'm understanding it.
 
I don't think there is a question is which works or doesn't, I think what me and Lord is trying to figure out which is the proper way to use this type of condition. apparently its working either way regardless, but like what we are saying and discussing the logical way to actually use this type of condition.

Ive had this same discussion a while back when I was using the OR statement. and the way I understood it is when using AND you are checking againt everything so if I have 3/4 of the buffs using AND it makes the statement false which is what ctaylor pointed out "If any of the Buffs are on you. The statement will return FALSE. " and since the statement is false its going to recast it so that the statement can be true. remember we are checking againt NOT !$

this is how I'm understanding it.

Something is really wrong then if both our conditions work, because they are inherently different.. I'm using a 4 input OR gate and you are using a 4 input AND gate, based on the use of my || and your &&..

And using boolean logic, yours should only output TRUE when all 4 inputs report back True. !Buff.active being the input for all four.. so only if all 4 are down would it output TRUE (Based on logic....) now.. your saying it works, as is mud, so that is very strange..

Mine is set up the same way - 4 inputs into OR gates, same deal, !Buff.active inputs into all 4.. But, the way it would work is when any single one returns TRUE, the output will be TRUE.. and mine also works..

So.. something weird is going on, whether its how conditions are set up on the kiss mac, I haven't looked at the code for that yet, but if we did:

downshit1=/if (!${Me.Buff[${Spell[Merciful Fate].RankName}].ID} && !${Me.Buff[${Spell[Armor of Steadfast Faith].RankName}].ID} && !${Me.Buff[${Spell[Remose for the Fallen].RankName}].ID} && !${Me.Buff[${Spell[Silent Piety].RankName}].ID}) /alt activate Divine Protector's Unity (sorry, no idea what the alt act number is)

vs.

downshit1=/if (!${Me.Buff[${Spell[Merciful Fate].RankName}].ID} || !${Me.Buff[${Spell[Armor of Steadfast Faith].RankName}].ID} || !${Me.Buff[${Spell[Remose for the Fallen].RankName}].ID} || !${Me.Buff[${Spell[Silent Piety].RankName}].ID}) /alt activate Divine Protector's Unity

have very different results.. && ones will only fire off when ALL the buffs are down .. || ones will fire off when any single buff is down..
 
So if i want it to only check for the Silent Piety, becuase it is the shortest lasting one. Then what would need to be done? LorDeth??? The activation id is 1160 in the aa window
 
So if i want it to only check for the Silent Piety, becuase it is the shortest lasting one. Then what would need to be done? LorDeth??? The activation id is 1160 in the aa window

if its a 1 buff check you would just do !${Me.Buff[Silent Piety].ID} or do what William12 suggested and utilize the dual tag Buffs3=Divine Protector's Unity|Dual|Silent Piety
 
So if i want it to only check for the Silent Piety, becuase it is the shortest lasting one. Then what would need to be done? LorDeth??? The activation id is 1160 in the aa window

Here's what i would do in that case:

Buffs4=Divine Protector's Unity|Dual|Silent Piety
BuffsCond4=TRUE

That will only watch for that one buff. and being your short one, it'll keep them all running that way..
 
!TRUE==FALSE, !FALSE==TRUE, and NULL==FALSE, So !NULL==TRUE.

So:
!NULL||!NULL||!NULL||!NULL == TRUE||TRUE||TRUE||TRUE == TRUE
!NULL||!NULL||!NULL||!TRUE == TRUE||TRUE||TRUE||FALSE == TRUE
!NULL||!NULL||!TRUE||!TRUE == TRUE||TRUE||FALSE||FALSE == TRUE
!NULL||!TRUE||!TRUE||!TRUE == TRUE||FALSE||FALSE||FALSE == TRUE
!TRUE||!TRUE||!TRUE||!TRUE == FALSE||FALSE||FALSE||FALSE == FALSE

!NULL&&!NULL&&!NULL&&!NULL == TRUE&&TRUE&&TRUE&&TRUE == TRUE
!NULL&&!NULL&&!NULL&&!TRUE == TRUE&&TRUE&&TRUE&&FALSE == FALSE
!NULL&&!NULL&&!TRUE&&!TRUE == TRUE&&TRUE&&FALSE&&FALSE == FALSE
!NULL&&!TRUE&&!TRUE&&!TRUE == TRUE&&FALSE&&FALSE&&FALSE == FALSE
!TRUE&&!TRUE&&!TRUE&&!TRUE == FALSE&&FALSE&&FALSE&&FALSE == FALSE

So based on the above. If I want to cast the spell when all the buffs are down, then I would use &&'s. If I wanted to cast when any one of the buffs was down, but NOT when all the buffs were up, I would use ||.

I am not fully sure how the spell you are trying to buff with has anything to do with what is being tested for, if the spell being cast can show up as any 1 of the 4 buffs, then you need to check that NONE of them are up(&&).
 
I'm going to paste a log lol with the && condition

yeah this is really strange if its doing it for you having && between all your individual conditions, yet it fires off when any single one buff goes down..

to quote Spock.. "Fascinating"

"This is highly illogical captain!"
 
I stand corrected, now to make the changes on my end. thanks for the clarification. still unsure why on the toon I was originally testing it on is different then the others. but yes OR is definatly what we want to use in this type of condiotions
 
Here's what i would do in that case:

Buffs4=Divine Protector's Unity|Dual|Silent Piety
BuffsCond4=TRUE

That will only watch for that one buff. and being your short one, it'll keep them all running that way..

This got me what i wanted, thanks
 
I stand corrected, now to make the changes on my end. thanks for the clarification. still unsure why on the toon I was originally testing it on is different then the others. but yes OR is definatly what we want to use in this type of condiotions

you know what, our discussion got me thinking of some different conditions and how to implement them... as i mentioned, i tried putting ( ) around my whole condition line to see what it would do, and it worked.. which means, we could do things like (!buffA && !buffB) || (!buffA && ${target.named}) etc.. I have one for my defensive discs i want to do for my warrior..

the sky is almost the limit.. if i could figure out how to do a /stopdisc within kiss, then i'd be laughing all the way to the bank... I'm still stuck using shits to do that part..
ctaylor22 is there a way we can call an external command like /stopdisc or even a /keypress from a DPS or buffline within kiss?
 
here is an example I use in kiss for stop disc. this is just an example because I know what I'm looking for and what I want the outcome to be.


Sub ReturnToCampCheck
/if (${Me.Inventory[Ranged].Range}!=0 || ${Me.Inventory[Ammo].Range}!=0) {
/echo Activating Primary Bandolier in Retuen To Camp Check
/Bandolier Activate Primary
}
/if (${Me.Snared.ID} || ${Me.PctHPs} < 80) {
/if (${Spawn[=${MainAssist}].ID}==${Me.ID}) {
/call MercReactive
/if (${Me.XTarget} > 2) /alt act 110
/if (${Me.Snared.ID}) /echo I HAVE BEEN SNARED WHILE PULLING!
/if (!${Me.Snared.ID} && ${Me.PctHPs} < 80) /echo MY HP's Fell Below 80% WHILE PULLING
/if (${Me.AltAbilityReady[Warlord's Resurgence]}) /alt act 911
/if (${Me.CombatAbilityReady[Phantom Aggressor]}) {
/if (${Target.ID}) {
/disc Phantom Aggressor
}
}
/if (${Me.PctHPs} < 60) {
/if (${Me.PctHPs} < 60) /echo MY HP's Fell Below 60% WHILE PULLING
/if (${Me.ActiveDisc.ID}) {
/if (${Me.ActiveDisc.ID}!=4670) {
/stopdisc
}
}
/if (!${Me.ActiveDisc.ID}) {
/if (${Me.CombatAbilityReady[Fortitude Discipline]}) {
/echo --->Fortitude Discipline<--- FIRED WHILE PULLING
/disc Fortitude Discipline
}
}
/if (${Me.AltAbilityReady[Projection of Fury]}) {
/if (!${Me.CombatAbilityReady[Phantom Aggressor]}) {
/alt act 3213
}
}
}
}
}
/return
 
LOL. funny you should mention that. I have been working on a version of KISS that allows for the use of a new tag called command. if you want more information about this feature, I will be happy to let you do a little testing for me after the 10.2.4 version is released..
 
Problem - Divine Protector's unity

Users who are viewing this thread

Back
Top
Cart