• 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

Guide - Guide - KissAssist 1x.x conditions - Help fill this out! (1 Viewer)

Joined
Jul 9, 2015
RedCents
1,978¢
Hi Guys,

I thought it might be helpful to myself and others if we could compile a list of how the conditions work and are broken down to help facilitate people creating conditions for KissAssist 10.x.

Follow this LINK to gain an overview and some more examples for the conditions.

I've also read a post by EQmule that shows an undocumented feature, in your kissassist ini if you set the ConditionsOn=0 to ConditionsOn=2, this will incorporate the conditions all into your main kissassist_SERVERNAME_NAME.ini, eliminating the need for the KissAssist_SERVERNAME_NAME_Conditions.ini file

I'll open up with a few examples and hopefully the correct examples and will finish with a few requests for further examples.

Some basic's I hope I've got right first.

${} = Do if whats between the brackets is TRUE.
!${} = Do if whats between the brackets is FALSE ( the ! (NOT) basically flips the results...false becomes true, etc ).
&& = Do only if whats on the left AND right are TRUE.
|| = Do only if whats on the left OR right are true.

Conditions work in the following basic way:

Cast {Buffs1=YourSpellOrAbility} if BuffsCond1= {YourConditionsHere} are met

If your trying to make your own conditions it sometimes makes it easier if you write out what you want to do, then once you know what you want to do, convert it into the code needed to work in KissAssist

Examples:

Rich (BB code):
Buffs1=Forgottenside|Me
BuffsCond1=!${Target.Buff[Voice of Precognition].ID}

This is for the Necromancer mana buff, it checks to see if you have the enchanter buff Voice of Precognition on you already and should not cast Forgottenside if you do.
Breaking it down abit:

!$(Don't cast BuffsX=){Target.Buff(check your target for a buff)[[Voice of Precognition(Buff to look for)].ID (.ID is to get the ID for the buff/spell/AA)

Rich (BB code):
DPS2=Banestrike|96
DPSCond2=${Me.AltAbilityReady[Banestrike]} && ${Target.PctHPs} > 20

This is for using Banestrike against a mob.

${Me.AltAbilityReady[Banestrike]} (checks to see of the AA ability Banestrike is ready) && ${Target.PctHPs} > 20 (If the Targets Hitpoints are greater than 20%) (if both conditions are TRUE it will cast Banestrike)


Rich (BB code):
DPS4=Livio's Malosenia|96
DPSCond4=${Int[${Target.ID}]} && ${Int[${Target.Buff[Livio's Affliction].ID}]}==0

This is for the Shaman DoT/Malo spell.

${Int[${Target.ID}]} && ${Int[${Target.Buff[Livio's Affliction].ID}]}==0

Ok I think the above condition works in this way: ${Int[${Target.ID}]} (get the ID number for the target) && (AND) ${Int[${Target.Buff[Livio's Affliction].ID}]} (Check the Target (aka ID number) and see if it already has Livio's Affliction on the target) ==0 (if it doesn't already have the buff it will return a value of 0 and so cast the spell)

Rich (BB code):
DPS1=Helix of the Undying|99
DPSCond1=${Target.Body.Name.Equal[Undead]}

This is for classes that can cast the Undead slow AA.

${Target.Body.Name.Equal[Undead]} (checks the target is undead)

With the {Target.Body.Name.Equal[Undead]} you can change the [Undead] to the type you want, ie Undead, Plant, humanoid etc.

Rich (BB code):
Aggro1=Jolting Cut Kicks
AggroCond1=${Me.PctAggro} > 70 && !${Melee.AggroMode}

This checks to see if you have 70% or greater of the aggro {Me.PctAggro} > 70, and also checks your NOT in aggromode ie the Tank {Melee.AggroMode}

Rich (BB code):
DPSC2=Dichotomic Fury|99
DPSCond2=!${Me.Song[Ruaabri's Fury].ID}
DPSC16=Krenk's Feralgia|99
DPSCond16=!${Me.SpellReady[Dichotomic Fury]}
DPSC17=Visoracius' Maelstrom|99
DPSCond17=!${Me.SpellReady[Dichotomic Fury]} && !${Me.SpellReady[${Spell[Krenk's Feralgia].RankName}]}
DPSC18=Frozen Miasma|99
DPSCond18=!${Me.SpellReady[Dichotomic Fury]} && !${Me.SpellReady[${Spell[Visoracius' Maelstrom].RankName}]} && !${Me.SpellReady[${Spell[Krenk's Feralgia].RankName}]}
DPSC19=Kromtus Lance|99
DPSCond19=!${Me.SpellReady[Dichotomic Fury]} && !${Me.SpellReady[${Spell[Visoracius' Maelstrom].RankName}]} && !${Me.SpellReady[${Spell[Frozen Miasma].RankName}]} && !${Me.SpellReady[${Spell[Krenk's Feralgia].RankName}]}
DPSC20=Krieg's Bite|99
DPSCond20=!${Me.SpellReady[Dichotomic Fury]} && !${Me.SpellReady[${Spell[Visoracius' Maelstrom].RankName}]} && !${Me.SpellReady[${Spell[Frozen Miasma].RankName}]} && !${Me.SpellReady[${Spell[Kromtus Lance].RankName}]} && !${Me.SpellReady[${Spell[Krenk's Feralgia].RankName}]}

This example provided by william12 shows how to setup DPS/DPSCond if you want a cascading effect in regards to casting your spell's/abilities in set order, you'd generally do this if to benefit from a specific way that the spells/abilities need to be cast, the addition of .RankName} is done in order for this to work correctly. ${Me.Song[BUFFNAME].ID} checks your song window for a buff rather than the normal buff area which can be done with ${Me.Buff[BUFFNAME].ID}

Rich (BB code):
${Spawn[${Target.ID}].NearestSpawn[9,pcpet radius 35].ID}

kaen01 Posted this code, it's for determining how many pets are near a target, in this case it determines if there are 9 or more within melee radius and returns a true value if that is a TRUE, so you can use this as a condition for determining if the mage spell series Bolt of Many fires (the one that needs lots of pets there to boost it's damage)

Code:
!${Me.TargetOfTarget.CleanName.Equal[${Me.CleanName}]}
This checks to see if you are the mobs target, if your not it will trigger, useful for agro abilities on tanks.

Any further examples people can think of so I can expand this post and give the novices amongst us the ability to have a go at writing conditions for KissAssist 10.x.
If you can provide the example and brief breakdown of how it works, it will help other to work the examples backwards and change them to fit what ever class they want.

Kind Regards

Vorpal!
 
Last edited:
To keep it as simple as possible:

${} = Do if whats between the brackets is TRUE.
!${} = Do if whats between the brackets is FALSE ( the ! (NOT) basically flips the results...false becomes true, etc ).
&& = Do only if whats on the left AND right are TRUE.
|| = Do only if whats on the left OR right are true.

The computer only really understands simple things
0 - OFF - FALSE ( NULL falls into this category mathmatically...its basically 0 )
1 (or any number) - ON - TRUE

As we see Math applies, using <, >, =, etc. so that means operators apply also and are good for forcing the order in which things are evaluated using parenthesis (inner most to outter most):

/if (${TRUE} && ${TRUE} || ${FALSE}) = FALSE ( Not 100% on my example here...but the idea is grouping things with parenthesis to evaluate as blocks )
/if (${TRUE} && (${TRUE} || ${FALSE})) = TRUE
Same statement but evaluated differently


Keeping the above in mind
${Target.Buff[Voice of Precognition].ID} returns a number ( TRUE ) if the buff is present and NULL ( FALSE ) if not.
!${Target.Buff[Voice of Precognition].ID} = if this doesnt return a number (TRUE) do something

Trying to keep it basic but using the basics you can make some pretty complex decisions
Hope it was helpful
 
Last edited:
Hi,

So this little snippet in the Buffs Section

Buffs3=Quiescent Gambit
BuffsCond3=${Cast.Ready[${Spell[Quiescent Gambit].ID}]}

Would cast Gambit every time it was ready?
 
Yeah, although it's abit redundant because it's already set to be cast with it being in the buff section, would simply be as good to say this:

Rich (BB code):
Buffs3=Quiescent Gambit
BuffsCond3=TRUE
 
Cast.ready Altabilityready combatabilityready etc, are completely unnecessary as conditions and will only slow things down cause it will force kiss to check them again since all of the xxxxxReady tlo's are already checked internally (it's already a kiss feature)
 
Cast.ready Altabilityready combatabilityready etc, are completely unnecessary as conditions and will only slow things down cause it will force kiss to check them again since all of the xxxxxReady tlo's are already checked internally (it's already a kiss feature)

You would still want to use them if you only want to cast a certain spell/aa/disc after you already used another one.

Beastlord example
DPSC2=Dichotomic Fury|99
DPSCond2=!${Me.Song[Ruaabri's Fury].ID}
DPSC16=Krenk's Feralgia|99
DPSCond16=!${Me.SpellReady[Dichotomic Fury]}
DPSC17=Visoracius' Maelstrom|99
DPSCond17=!${Me.SpellReady[Dichotomic Fury]} && !${Me.SpellReady[${Spell[Krenk's Feralgia].RankName}]}
DPSC18=Frozen Miasma|99
DPSCond18=!${Me.SpellReady[Dichotomic Fury]} && !${Me.SpellReady[${Spell[Visoracius' Maelstrom].RankName}]} && !${Me.SpellReady[${Spell[Krenk's Feralgia].RankName}]}
DPSC19=Kromtus Lance|99
DPSCond19=!${Me.SpellReady[Dichotomic Fury]} && !${Me.SpellReady[${Spell[Visoracius' Maelstrom].RankName}]} && !${Me.SpellReady[${Spell[Frozen Miasma].RankName}]} && !${Me.SpellReady[${Spell[Krenk's Feralgia].RankName}]}
DPSC20=Krieg's Bite|99
DPSCond20=!${Me.SpellReady[Dichotomic Fury]} && !${Me.SpellReady[${Spell[Visoracius' Maelstrom].RankName}]} && !${Me.SpellReady[${Spell[Frozen Miasma].RankName}]} && !${Me.SpellReady[${Spell[Kromtus Lance].RankName}]} && !${Me.SpellReady[${Spell[Krenk's Feralgia].RankName}]}

why have it like this ? Because I want it to never not cast dicho fury first. And yes you need RankName in the check because without it they were not working.

this would be my burn order.

DPSC3=Ruaabri's Fury|99
DPSCond3=${NameList.Find[${Target.CleanName}]} && !${Me.Song[Dichotomic Fury].ID} || ${Me.XTarget}>2 && !${Me.Song[Dichotomic Fury].ID}
DPSC4=Savage Rancor|99
DPSCond4=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPSC5=Group Bestial Alignment|99
DPSCond5=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPSC6=Fundament: Third Spire of the Savage lord|99
DPSCond6=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPSC7=Frenzy Of Spirit|99
DPSCond7=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPSC8=Attack of the Warders|99
DPSCond8=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPSC9=Bestial Bloodrage|99
DPSCond9=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPSC10=Bloodlust|99
DPSCond10=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPSC11=Frenzied Swipes|99
DPSCond11=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPSC12=Feroiousness|99
DPSCond12=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPSC13=Glistenwing Blood|99
DPSCond13=${NameList.Find[${Target.CleanName}]}
DPSC14=Kirchen's Chill|99
DPSCond14=${NameList.Find[${Target.CleanName}]}
DPSC15=Hemocoraxius' Endemic|99
DPSCond15=${NameList.Find[${Target.CleanName}]}

You cant use Namelist that's something I added so I could tell it to only burn on names in the kissassist_info.ini file instead of ${Target.Named} So just changed them all to ${Target.Named}
 
Stickied and made this a Wiki post to get some more traction here, I've been approached with lots of questions on this so I think this guide if very useful.
 
This is a great thread and I am I not annoying people with some of my questions.

Rich (BB code):
DPS34=Cloudburst Stormstrike|97
DPSCond34=${Math.Calc[${Target.ID} && ${Target.PctHPs}>1].Int}


So if I am understanding this,

This piece of code is saying what? If both the targets HP's are > 1 then cast the spell?

And can someone tell me what Math.Calc does?
 
TBH not sure why you'd put the Math.Calc in that, lets break it down since it's the only way I have to explain as I'm still trying to learn all of this via examples.

Math allows you to access the Math Type members, of which Calc is one, Calc means perform a calculation, the example from the wiki is Performs a mathematical calculation n where n is Calc[n]

The thing to remember is the golden rule, follow the brackets, inside the square brackets you have 2 conditions, ${Target.ID} and ${Target.PctHPs}>1
${Target.ID} will return the ID number of the target, the ${Target.PctHPs} will return the current hps of the target.

Now the bit I can't answer for you, without someone doing clear example and reason, is why you bracket those 2 conditions within ${Math.Calc[CONDTIONSHERE].Int} as it seems to be all your doing is turning the conditions into Integers (ie numbers).
 
I dont' understand at all what this code is doing. This is from the INI w/ Conditions by Ihc385 that I use. Like you I am trying to learn this so I can make the conditions the way I want. Believe it or not I use to Program VB when it first came out, I wish there was a way to step through a macro like VB's F5. If I could see what was going on each step of the code, the scales on my eyes may go away.
 
Just to add my 2 redcents....

Keep in mind you need to look at conditional statements as a math expression.

Like we all (should have) learned in school.... their is a math hierarchy ...

Processing from left to right.... Parenthesis then exponentials then division/Multiplication then addition/subtraction.

Whatever is encapsulated within parenthesis ( ) gets evaluated first... going from left to right.... anything inside that initial parenthesis ( ) also gets processed in the same manner .. parenthesis then exponential units are evaluated... then division and multiplication at the same hierarchy level.. and finally addition and subtraction...

That's the pure math method of evaluation.... but conditional coding follows the same golden rule.... whatever the frig you have within ( ) gets processed first.... logically... from left to right... and is either evaluated as:
TRUE
FALSE
TRUE because it has an actual value..
FALSE because it has no value {NULL}

Then you get into the && ( and ).. || ( or ) processing,.....
The golden rule there... ALL parts within the evaluated expression MUST be true.... or the ENTIRE expression is considered FALSE.

( (the sun shines yellow) && (the sky is blue) && (the moon orbits around the earth) ) equals a TRUE condition because all statements within the whole expression are true.

( (the sun shines yellow) && (the sky is blue) && (the earth is flat) ) equals a FALSE condition because just ONE portion of the entire encapsulated expression is false.... making the entire expression FALSE.

Now we move on to the || trickery... where we may have portions of an expression that evaluate as false.... but have an additional logical expression offering a second logical condition.. that MAY evaluate to making the entire condition TRUE.

( ( (the sun shines yellow) && (the sky is blue) && (the earth is flat) ) || ( Every person needs water to survive ) )

Notice how the encapsulation is set .... the entire ( (the sun shines yellow) && (the sky is blue) && (the earth is flat) ) portion is evaluated as one TRUE or FALSE item ... and the ( Every person needs water to survive ) is evaluated as a completely separate TRUE or FALSE item ... BUT... both evaluations are compared to in the master encapsulation of ( ).. which says either expression 1 OR expression 2 needs to be true.. for the entire evaluation to be TRUE.


Take that entire expression and change the || (or) to an (and) && and we get the opposite effect:

( ( (the sun shines yellow) && (the sky is blue) && (the earth is flat) ) && ( Every person needs water to survive ) )

Sub expression one is false... && sub expression two is true ..... but... because we used the (and) && .... BOTH sub expressions need to be TRUE for the entire master expression to be TRUE...

We can get even more granular ... but I'm just trying to break down the very very very basics of logical expression evaluation for those who do not have a programming or strong math background.


Ok class: We'll stop today's lesson here.. and let you all go have a bathroom break... because i can digitally see some of you squirming in your seats atm.
 
Last edited:
So, if I am headed down the right road and not about to hit the curb,

This is saying: Basically

DPS2=Concussive Intuition|99
DPSCond2=${Target.ID} && ${Target.PctHPs}>20 && ${Me.PctAggro}>50
^ ^
Get target ID AND IF Target HP's > 20 AND IF My Agro is > 50% THEN
activate Concussive Intution.

And this code is saying

DPS6=Fury of Ro|99
DPSCond6=!${Me.Buff[Fury of Kerafyrm].ID}

IF I am NOT buffed with Fury of Kerafym then activate Fury of Ro

DPS7=Focus of Arcanum|99
DPSCond7=TRUE

This One? the TRUE us say if I don't have it, Activate it.







Small dim light bulb is on maybe?
 
Last edited:
So, if I am headed down the right road and not about to hit the curb,

This is saying: Basically

DPS2=Concussive Intuition|99
DPSCond2=${Target.ID} && ${Target.PctHPs}>20 && ${Me.PctAggro}>50
^ ^
Get target ID AND IF Target HP's > 20 AND IF My Agro is > 50% THEN
activate Concussive Intution.

Small dim light bulb is on.

Technically.. YES.

However there is no need for ${Target.ID} in the condition.... since your DPS routine will not fire if you do not have a target ... and there is no need to state the ${Target.PctHPs}>20 if you have DPSSkip=20 in your ini settings... because you are having the DPS routine ignore and NOT cast/activate/do anything on the target if it is at or below 20% hps.

All you would need to say in the conditional is:

Rich (BB code):
DPS2=Concussive Intuition|99
DPSCond2=${Me.PctAggro}>50
 
So if you set a global DPSSkip=20, then you would need to specify if you wanted something else in a particular situation.

- - - Updated - - -

Quick Question..

When KA is activated, does it check conditions ONE time and store that info in variables, or does it parse the conditions and ini file constantly?

- - - Updated - - -

Another quick question

DPS29=Force of Flame|99|Weave
DPSCond29=Code that would say, If We are in Global Cool Down then to this, if Not, don't.
 
So if you set a global DPSSkip=20, then you would need to specify if you wanted something else in a particular situation.

- - - Updated - - -

Quick Question..

When KA is activated, does it check conditions ONE time and store that info in variables, or does it parse the conditions and ini file constantly?

- - - Updated - - -

Another quick question

DPS29=Force of Flame|99|Weave
DPSCond29=Code that would say, If We are in Global Cool Down then to this, if Not, don't.

My guess is it would parse it each time it does the sub so constantly.
 
Mage example with conditions dps section only (its not done but its a good start) Replace ${NameList.Find[${Target.CleanName}]} with ${Target.Named}

Rich (BB code):
[DPS]
DPSCOn=1
DPS1=Silent Casting|99
DPSCond1=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPS2=Improved Twincast|99
DPSCond2=${NameList.Find[${Target.CleanName}]}  && !${Me.Buff[Twincast].ID} || ${Me.XTarget}>2 && !${Me.Buff[Twincast].ID}
DPS3=Fundament: First Spire of the Element|99
DPSCond3=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPS4=Heart of Flames|99
DPSCond4=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPS5=Frenzied Burnout|99
DPSCond5=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2
DPS6=Elemental Union|99
DPSCond6=${NameList.Find[${Target.CleanName}]} && !${Me.Buff[Heart of Flames].ID} || ${Me.XTarget}>2 && !${Me.Buff[Heart of Flames].ID}
DPS7=Twincast|99
DPSCond7=${NameList.Find[${Target.CleanName}]}  && !${Me.Buff[Twincast].ID} && !${Me.Buff[Improved Twincast].ID} || ${Me.XTarget}>2 && !${Me.Buff[Twincast].ID} && !${Me.Buff[Improved Twincast].ID}
DPS8=Host of the Elements|99
DPSCond8=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2

DPS9=Malosinete|99
DPSCond9=!${Target.Buff[Malosinete].ID} && ${Me.AltAbilityReady[Malosinete]}
DPS10=Eradicate Magic|99
DPSCond10=${Target.Beneficial.ID} && !${Target.Beneficial[38728].ID} && !${Target.Beneficial[38727].ID} && ${Me.XTarget} && ${Me.AltAbilityReady[Eradicate Magic]}
DPS11=Remorseless Servant|99
DPSCond11=!${Me.Song[Conjurer's Synergy].ID} && !${Me.Buff[${Spell[Twincast].RankName}].ID} && !${Me.Buff[${Spell[Improved Twincast].RankName}].ID}
DPS12=Dichotomic Companion|99
DPSCond12=!${Me.SpellReady[${Spell[Remorseless Servant].RankName}]}
DPS13=Chaotic Fire|99
DPSCond13=!${Me.Buff[${Spell[Twincast].RankName}].ID} && !${Me.Buff[${Spell[Improved Twincast].RankName}].ID} && !${Me.Song[Beguiler's Synergy].ID} && !${Me.Song[Conjurer's Synergy].ID}
DPS14=Storm of Many|99
DPSCond14=!${Me.Song[Flames of Power].ID} && ${SpawnCount[pet Radius 30]}>5

DPS15=Spear of Molten Shieldstone|99
DPSCond15=!${Me.SpellReady[${Spell[Remorseless Servant].RankName}]} || ${Me.Song[Conjurer's Synergy].ID}
DPS16=Bolt of Molten Shieldstone|99
DPSCond16=!${Me.SpellReady[${Spell[Remorseless Servant].RankName}]} && !${Me.SpellReady[${Spell[Spear of Molten Shieldstone].RankName}]} || ${Me.Song[Conjurer's Synergy].ID} && !${Me.SpellReady[${Spell[Spear of Molten Shieldstone].RankName}]}
DPS17=Shock of Darksteel|99
DPSCond17=!${Me.SpellReady[${Spell[Bolt of Molten Shieldstone].RankName}]} && !${Me.SpellReady[${Spell[Remorseless Servant].RankName}]} && !${Me.SpellReady[${Spell[Spear of Molten Shieldstone].RankName}]} || ${Me.Song[Conjurer's Synergy].ID} && !${Me.SpellReady[${Spell[Bolt of Molten Shieldstone].RankName}]} && !${Me.SpellReady[${Spell[Spear of Molten Shieldstone].RankName}]}
 
TBH not sure why you'd put the Math.Calc in that, lets break it down since it's the only way I have to explain as I'm still trying to learn all of this via examples.

Math allows you to access the Math Type members, of which Calc is one, Calc means perform a calculation, the example from the wiki is Performs a mathematical calculation n where n is Calc[n]

The thing to remember is the golden rule, follow the brackets, inside the square brackets you have 2 conditions, ${Target.ID} and ${Target.PctHPs}>1
${Target.ID} will return the ID number of the target, the ${Target.PctHPs} will return the current hps of the target.

Now the bit I can't answer for you, without someone doing clear example and reason, is why you bracket those 2 conditions within ${Math.Calc[CONDTIONSHERE].Int} as it seems to be all your doing is turning the conditions into Integers (ie numbers).

Math.Calc was being used to make sure NULL was returned as a 0(false) because on the initial release of the new kissassist it was kind of choking on NULL values (empty string) and this was a temporary fix
 
Does this support named? I'd like to figure out a way inside of KISS to set up so that my SK pop's defensive abilities during named pulls. I've been toying with holyshits and downshits but i cant seem to make one work. It seems like this is cleaner.

Could I do something like

Healson=1
HealsCOn=1
Heals1=Bonebrood Mantle|70
HealCon1=${Target.Named} && ${Me.PctHPs}<75
 
Didnt the EQ devs add the "rare creature" consideration function? While I doubt itll be 100%, wouldnt a condition that checks for that to be true or false give a pretty accurate determination for named mobs?
 
Is there a TLO or function i can query to see if named=true? If i can check the spots i'm camping this could work
 
In looking at William's Mage Burn, I wanted to know/understand the first condition involving Target.CleanName? What is this condition determining? Another example, I saw in another area involved Me.XTarget[1].CleanName.

DPS1=Silent Casting|99
DPSCond1=${NameList.Find[${Target.CleanName}]} || ${Me.XTarget}>2

${NameList.Find[${Target.CleanName}]}
${Me.XTarget[1].CleanName}

Thanks for any explanation.
 
What condition would you write to say, "If there is a bard or enchanter in group, don't cast spell?" Thanks in advance for any help.
 
Try
Rich (BB code):
(${SpawnCount[pc class enchanter group]}==0 && ${SpawnCount[pc class bard group]}==0)
 
I wanted to use Mystical Intervention to heal my tank, but only if the mob the tank currently has on target is under 90% health.


${Spawn[${Me.XTarget[${xtlookingat}].ID}].PctHPs} <= 90

Would this work?
 
Might be easier just to assign one your higher xtargets like 10 to MA's target then you could do
Rich (BB code):
${Spawn[${Me.XTarget[10].ID}].PctHPs} <= 90

I don't know what xtlookingat is. Its not in the Official KissAsssist
 
In game slash command for hotkeys.

"/xtarget set 10 gat" will set xtarget slot 10 to watch Group Assist's target (gat). Just going to add that into my hotkey when I "/mac kissassist" so that the toon always watches whatever xtarget I assign it to watch in the ini.
 
Is there a condition to make a Char do something first before it does anything else. Namely I want my Shaman to slow the target before it does anything else.
 
noob here. How would i set a condition to cast a buff only on certain classes in the group?

This doesn't work:

Buffs2=Ferine Avatar
BuffsCond2=${Select[${Target.Class.ShortName},MNK,ROG,RNG,BER]}
 
noob here. How would i set a condition to cast a buff only on certain classes in the group?

This doesn't work:

Buffs2=Ferine Avatar
BuffsCond2=${Select[${Target.Class.ShortName},MNK,ROG,RNG,BER]}

Anybody know how to limit it to specific classes?

- - - Updated - - -

Not sure what im missing here.

in kissassist_toonname.ini

[Buffs]
BuffsOn=1
BuffsCOn=1
BuffsSize=20
Buffs1=Ferine Avatar

in the kissassist_toonname_conditions.ini
[Buffs]
BuffsCOn=1
Buffs1=Ferine Avatar
BuffsCond1=${Select[${Target.Class.ShortName},MNK,ROG,RNG,BER]}

What the heck am i doing wrong?
 
In respect to named mobs wouldn't it be easier putting certain conditions in as burn as burns only fire off on named mobs anyway?
 
Guide - Guide - KissAssist 1x.x conditions - Help fill this out!

Users who are viewing this thread

Back
Top
Cart