This macro incorporates the use of IF statements that can be stored in an ini file. This macro requires a custom plugin that can be used with any macro. Feel free to use in your custom macros. See below.
Warning!! The author of these mods assumes you have a good understanding of MQ2 macro syntax and MQ2 TLO's. If you don't understand what I am referring too.
Go here first: http://www.macroquest2.com/includes/wassup/manual.php
Go here next: http://macroquest2.com/wiki/index.php/Beginners_Guide_to_TLOs_and_MQ2DataVars
With that out of the way. This macro requires an additional Plugin: http://www.redguides.com/community/showthread.php/31813-If-Statement-Plugin
Here is an Example of my mages DPS section with included if statements:
KissAssist_CharterName.ini
Ifs_CharacterName.ini
Supported If Statement formats:
DPS1=${If[${Target.ID}, 1, 0]}
Currently supported Arrays:
Buffs (Only supports the Group.Member[${j}] level check)
GoMSpell
DPS
Heals (Taps and Nuke Heals Use: Spawn[${MyTargetID}], Normal Single Heals use: Spawn[${SHealThem}] Group Heals: use the ${Me} TLO, but you can be creative here.
You can also use any of the /declared outer variables in the macro as well as any of the local ones in the current routine. Just keep that in mind.
The Base logic in the macro has not changed, so if you run this macro before creating any IF statements, In theory it should run the same as the Vanilla version of KissAssist.
Keep in mind that your if statements will not over ride the existing macro logic, but only add to the logic.
Example:
You want to buff just the Rogues and the rangers in your group with a specific buff.
Buffs1=SomeMeleeBuff
Buffs1=${If[${Select[${Group.Member[${j}].Class.ShortName},ROG,RNG]},1,0]}
Instructions for getting started:
1. Download the macro and copy it into your MQ2 macro folder. Run the macro /mac kissassist_rgma.mac assist, or whatever you use for parameters. Let the macro run for a bit then /end the macro.
2. Open your kissassist_Charactername.ini file and change IfsOn=1 in the General section. Run the macro again to create the Ifs_CharacterName.ini file. /end the macro.
3. Now go to your macro folder and look for the new ini file(s). There should be a Ifs_CharacterName.ini file, for each character you ran the macro on. Now under the section that was created([kissassist]) start adding your if statements.
Currently Supported:
Buffs1 - Buffs25
GoMSpell1 - GoMSpell2
DPS1 - DPS15
Heals1 - Heals5 or Heals15 depending on your character type. Check your kissassist.ini file.
DPSBackoff
Things to Consider when creating ifs for this Macro:
You don't need to include anything in the If Statement that the KissAssist Core code already privides:
Things you may not be aware of.
Routine CastWhat Provides the Following Checks:
1. /if (${Me.CombatAbility[${castWhat}]} && !${Me.CombatAbilityTimer[${castWhat}]} && ${Me.CombatAbilityReady[${castWhat}]})
2. /if (${FindItem[=${castWhat}].ID} && ${FindItem[${castWhat}].Timer}==0)
3. /if ((${Me.AltAbility[${castWhat}]} || ${castWhat.Find[Banestrike]} && !${Banestrike.Find[|${Target.Race}|]} && ${Spawn[${MyTargetID}].Distance3D}<70 && ${CombatStart}) && ${Me.AltAbilityReady[${castWhat}]} && ${castWhat.NotEqual[twincast]} && ${Me.AltAbility[${castWhat}].Type}!=5 )
4. /if (${Me.Book[${castWhat}]} && ${Spell[${castWhat}].Mana}<=${Me.CurrentMana})
What this provides:
1. Combat Ability Checks:
2. Cast Item Checks:
3. Alternate Ability Checks:
4. Spell Checks:
====================================================================================================
Routine CombatCast Provides the Following Checks:
1. /if (${Spawn[${MyTargetID}].Type.Equal[Corpse]})
2. /if (!${Spawn[${MyTargetID}].ID})
3. /if (${Target.Mezzed.ID} && ${MainAssist.NotEqual[${Me}]} && ${Spell[${DPS[${i}].Arg[1,|]}].Category.NotEqual[Utility Detrimental]}) {
4. /if (${Target.PctHPs}>${DPSAt} && ${DPSOn}==1)
What this Provides: Do NOT do this If?
1. Your target is a corpse.
2. Your target has disappeared.
3. Your Target is Mezzed and your not the Main assist and what you are about to cast/do will wake the mob.
4. Your Targets HPs are still above the designated engage level.
====================================================================================================
Made a few changes to help better control heals and a few other changes. Can now cast Promised line of heals ahead of time.
Promis Heal If Example:
This will allow casting the promis heal on the target if a mob is on Xtarget and within 300 feet of the caster.
What is included in this Version of Kissassist that's not in the generic Kissassist?
Well, other than the obvious, I have listed the differences below:
Under construction. So more to come.
Download Here: (Updated 1/30/2016) 8.5.1
(Updated 10/10/2015) 8.4.1
Warning!! The author of these mods assumes you have a good understanding of MQ2 macro syntax and MQ2 TLO's. If you don't understand what I am referring too.
Go here first: http://www.macroquest2.com/includes/wassup/manual.php
Go here next: http://macroquest2.com/wiki/index.php/Beginners_Guide_to_TLOs_and_MQ2DataVars
With that out of the way. This macro requires an additional Plugin: http://www.redguides.com/community/showthread.php/31813-If-Statement-Plugin
Here is an Example of my mages DPS section with included if statements:
KissAssist_CharterName.ini
Rich (BB code):
[GoM]
GoMSHelp=Format - Spell|Target, MA Me or Mob, i.e. Rampaging Servant Rk. II|Mob
GoMSpell1=Relentless Servant
GoMSpell2=Spear of Blistersteel
[DPS]
DPSOn=1
DPSSkip=1
DPSInterval=5
DPS1=Malosenia|99
DPS2=Frenzied Burnout|98
DPS3=Thaumatize Pet|96
DPS4=Banestrike|95
DPS5=Fickle Magma|93
DPS6=Spear of Blistersteel|92
DPS7=Rain of Blistersteel|92
DPS8=Bolt of Molten Magma|90
DPS9=Rain of Scythes|90
DPS10=NULL
DPS11=NULL
DPS12=NULL
DPS13=NULL
DPS14=NULL
DPS15=NULL
Ifs_CharacterName.ini
Rich (BB code):
[kissassist]
; Check to malo
DPS1=${If[!${Target.Malod.ID} && !${Me.Song[Chromatic Haze].ID},1,0]}
; For Pet Frenzied Burnout
DPS2=${If[!${Me.Song[Chromatic Haze].ID} && ${Target.Named},1,0]}
; For Thaumatize Pet
DPS3=${If[!${Me.Song[Chromatic Haze].ID},1,0]}
; Check Banestrike
DPS4=${If[!${Me.Song[Chromatic Haze].ID},1,0]}
: Check Fickle Magma
DPS5=${If[!${Me.Song[Chromatic Haze].ID} && !${Me.Song[Flames of Power].ID},1,0]}
; Fire Nuke 1
DPS6=${If[(${Target.PctHPs}>20 || ${Target.Named}) && (${Me.XTarget[${XTSlot2}].ID} || ${Me.Song[Chromatic Haze].ID}) || ${Target.Distance}<30,1,0]}
; Rain Fire
DPS7=${If[(${Target.PctHPs}>20 || ${Target.Named}) && !${Me.XTarget[${XTSlot2}].ID} && !${Me.Song[Chromatic Haze].ID} && ${Target.Distance}>=30,1,0]}
; Fire Nuke 2
DPS8=${If[(${Target.PctHPs}>10 || ${Target.Named}) && (${Me.XTarget[${XTSlot2}].ID} || ${Me.Song[Chromatic Haze].ID}) || ${Target.Distance}<30,1,0]}
; Rain Steal
DPS9=${If[(${Target.PctHPs}>10 || ${Target.Named}) && !${Me.XTarget[${XTSlot2}].ID} && !${Me.Song[Chromatic Haze].ID} && ${Target.Distance}>=30,1,0]}
; GOM Spells
GoMSpell1=${If[!${Me.Song[Chromatic Haze].ID} && ${Target.PctHPs}>30,1,0]}
GoMSpell2=${If[1,1,0]}
;
Supported If Statement formats:
DPS1=${If[${Target.ID}, 1, 0]}
Currently supported Arrays:
Buffs (Only supports the Group.Member[${j}] level check)
GoMSpell
DPS
Heals (Taps and Nuke Heals Use: Spawn[${MyTargetID}], Normal Single Heals use: Spawn[${SHealThem}] Group Heals: use the ${Me} TLO, but you can be creative here.
You can also use any of the /declared outer variables in the macro as well as any of the local ones in the current routine. Just keep that in mind.
The Base logic in the macro has not changed, so if you run this macro before creating any IF statements, In theory it should run the same as the Vanilla version of KissAssist.
Keep in mind that your if statements will not over ride the existing macro logic, but only add to the logic.
Example:
You want to buff just the Rogues and the rangers in your group with a specific buff.
Buffs1=SomeMeleeBuff
Buffs1=${If[${Select[${Group.Member[${j}].Class.ShortName},ROG,RNG]},1,0]}
Instructions for getting started:
1. Download the macro and copy it into your MQ2 macro folder. Run the macro /mac kissassist_rgma.mac assist, or whatever you use for parameters. Let the macro run for a bit then /end the macro.
2. Open your kissassist_Charactername.ini file and change IfsOn=1 in the General section. Run the macro again to create the Ifs_CharacterName.ini file. /end the macro.
3. Now go to your macro folder and look for the new ini file(s). There should be a Ifs_CharacterName.ini file, for each character you ran the macro on. Now under the section that was created([kissassist]) start adding your if statements.
Currently Supported:
Buffs1 - Buffs25
GoMSpell1 - GoMSpell2
DPS1 - DPS15
Heals1 - Heals5 or Heals15 depending on your character type. Check your kissassist.ini file.
DPSBackoff
Things to Consider when creating ifs for this Macro:
You don't need to include anything in the If Statement that the KissAssist Core code already privides:
Things you may not be aware of.
Routine CastWhat Provides the Following Checks:
1. /if (${Me.CombatAbility[${castWhat}]} && !${Me.CombatAbilityTimer[${castWhat}]} && ${Me.CombatAbilityReady[${castWhat}]})
/if ((!${Spell[${castWhat}].Duration.TotalSeconds}||!${Melee.DiscID})
/if (${Spell[castWhat].EnduranceCost}>${Me.Endurance})
/if (${Spell[castWhat].EnduranceCost}>${Me.Endurance})
2. /if (${FindItem[=${castWhat}].ID} && ${FindItem[${castWhat}].Timer}==0)
3. /if ((${Me.AltAbility[${castWhat}]} || ${castWhat.Find[Banestrike]} && !${Banestrike.Find[|${Target.Race}|]} && ${Spawn[${MyTargetID}].Distance3D}<70 && ${CombatStart}) && ${Me.AltAbilityReady[${castWhat}]} && ${castWhat.NotEqual[twincast]} && ${Me.AltAbility[${castWhat}].Type}!=5 )
4. /if (${Me.Book[${castWhat}]} && ${Spell[${castWhat}].Mana}<=${Me.CurrentMana})
What this provides:
1. Combat Ability Checks:
Do I have the Ability? Is the timer of the ability zero and is the ability ready.
Is the Ability Duration zero or no other Ability active.
Do I have enough endurance to activate this ability?
Is the Ability Duration zero or no other Ability active.
Do I have enough endurance to activate this ability?
2. Cast Item Checks:
Do I have the Item and is the item ready to use?
3. Alternate Ability Checks:
Do I have the Ability and is the Ability Ready.(Just ignore the other stuff)
4. Spell Checks:
Do I have the spell in my book and do I have enough mana to cast the spell?
====================================================================================================
Routine CombatCast Provides the Following Checks:
1. /if (${Spawn[${MyTargetID}].Type.Equal[Corpse]})
2. /if (!${Spawn[${MyTargetID}].ID})
3. /if (${Target.Mezzed.ID} && ${MainAssist.NotEqual[${Me}]} && ${Spell[${DPS[${i}].Arg[1,|]}].Category.NotEqual[Utility Detrimental]}) {
4. /if (${Target.PctHPs}>${DPSAt} && ${DPSOn}==1)
What this Provides: Do NOT do this If?
1. Your target is a corpse.
2. Your target has disappeared.
3. Your Target is Mezzed and your not the Main assist and what you are about to cast/do will wake the mob.
4. Your Targets HPs are still above the designated engage level.
====================================================================================================
Made a few changes to help better control heals and a few other changes. Can now cast Promised line of heals ahead of time.
Promis Heal If Example:
Rich (BB code):
Heals2=${If[!${Target.Buff[Promised Reformation].ID} && ${AggroTargetID} && ${Spawn[id ${AggroTargetID}].Distance}<300,1,0]}
This will allow casting the promis heal on the target if a mob is on Xtarget and within 300 feet of the caster.
What is included in this Version of Kissassist that's not in the generic Kissassist?
Well, other than the obvious, I have listed the differences below:
- Added MobsPullerToIgnore to the kissassist_info.ini file allowing you to define the mobs you want your puller to ignore when pulling.
- Added PullOnReturn to the Kissassist_CharacterName.ini file. Default=0. This flag changes what the puller will do, when returning to camp, after failing to pull because, the puller moves out of range. Once the puller moves back into range the Puller will start checking for a mob to pull as they run back to camp. If a mob is found the puller will be diverted to the new mob to pull before returning to camp.
- Added Run/Walk Toggle when Returning back to camp when mobs get to far away from puller.
Under construction. So more to come.
Download Here: (Updated 1/30/2016) 8.5.1
(Updated 10/10/2015) 8.4.1
Attachments
Last edited:


Once you setup the ifs for each class you get everything that kiss does great plus amazing dps on mages, wizards, necros. Even enchanters.
