• 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 - Casting Interrupted

Gnits

Active member
Joined
Mar 24, 2017
RedCents
674¢
I get a message that says {some spell} interrupted due to The Main Assist Needs a Heal.

I am a dps class, why do I need this?
 
Yea, it was an oversite in the Interrupt code. I fixed it before the last update, but I think it got overlooked when creating the final copy.

This is the change that is needed. This:

Rich (BB code):
/if (${HealsOn}) {
            /if (!${IAmMA} && ${Spawn[${MainAssist}].PctHPs}<70 && ${Spawn[${MainAssist} ${MainAssistType}].ID} && ${Spawn[${MainAssist} ${MainAssistType}].Type.NotEqual[corpse]}) {
                /stopcast

Needs to be changed to this:

Rich (BB code):
/if (${HealsOn}) {
            /if (!${IAmMA} && ${Spawn[${MainAssist}].PctHPs}<70 && ${Spawn[${MainAssist} ${MainAssistType}].ID} && ${Spawn[${MainAssist} ${MainAssistType}].Type.NotEqual[corpse]} && ${Select[${Me.Class.ShortName},nec,mag]}==0) {
                /stopcast

Here is the complete routine with the change.

Rich (BB code):
    Sub CastInteruptDPS(string CIDSpell)
        /if (${DebugCast}) /echo \atDEBUGCAST CastInteruptDPS Enter \agLine#: ${Macro.CurLine}
        /if (!${Int[${Me.Casting.ID}]}) /return
        /if (${Target.Type.Equal[pc]}) /return
        /if (${Target.PctHPs}<1 || ${Target.Type.Equal[corpse]} || !${Int[${Target.ID}]}) {
            /stopcast
            /varset CastResult CAST_CANCELLED
            /echo ${CIDSpell} interrupted due to Killing corpses is not required.
            /if (${DebugCast}) /echo \atDEBUGCAST CastInteruptDPSCheckDPS1: ${Target.PctHPs} ${Target.Type} ${Int[${Target.ID}]} \agLine#: ${Macro.CurLine}
        }
        /if (${HealsOn}) {
            /if (!${IAmMA} && ${Spawn[${MainAssist}].PctHPs}<70 && ${Spawn[${MainAssist} ${MainAssistType}].ID} && ${Spawn[${MainAssist} ${MainAssistType}].Type.NotEqual[corpse]} && ${Select[${Me.Class.ShortName},nec,mag]}==0) {
                /stopcast
                /varset CastResult CAST_CANCELLED
                /echo ${CIDSpell} interrupted due to The Main Assist Needs a Heal.
                /if (${DebugCast}) /echo \atDEBUGCAST CastInteruptDPS CheckDPS2: ${HealsOn}  ${Spawn[${MainAssist}].PctHPs} ${Spawn[${MainAssist} ${MainAssistType}].ID}  ${Spawn[${MainAssist} ${MainAssistType}].Type} \agLine#: ${Macro.CurLine}
            } else /if (${Select[${Role},pettank,petpullertank,hunterpettank]}>0 && ${Me.Pet.ID} && ${Me.Pet.PctHPs}<80) {
                /stopcast
                /varset CastResult CAST_CANCELLED
                /echo ${CIDSpell} interrupted due to my Pet Tank needs a heal.
                /if (${DebugCast}) /echo \atDEBUGCAST CastInteruptDPS CheckDPS3: ${HealsOn}  ${Me.Pet.ID} ${Me.Pet.PctHPs} \agLine#: ${Macro.CurLine}
            }
        }
        /if (${DebugCast}) /echo \atDEBUGCAST CastInteruptDPS Leave \agLine#: ${Macro.CurLine}
    /return
 
@ctaylor22 this proposed change wouldn't work for beastlords. It also wouldn't work for anyone who puts a defensive self-only spell in their heal section (for example, an enchanter casting a rune when they get knocked down to low health or a tank using a defensive proc on themselves). It seems like instead of having a condition that says "if I am not a mage or necromancer" the condition would need to be "if I do not have a targetable heal in my KISS ini".

As it stands, I have to just put all such abilities in my DPS section and not use the heal section at all except on priest classes, which doesn't work very well (an emergency heal in the DPS section has to contend with anything else that's already there, and in practice rarely ends up firing).
 
Yea, I know. This was meant to fix the pet classes that would never be healers of other characters. This was not meant to be a fix all, you can do that by just turning off Casting Interrupts(CastingInterruptOn=0).

One of the things we may do in the future is to allow for CastingInterruptsOn to be set in a way you can turnoff/turnon each individual interrupt per character, so that 1/0 work as they do now, but 2/4/8/6/10/12 will allow you to use any combonation. But this goes outside of the K.I.S.S. framework, so I wouldn't expect it to get added to the core kiss macro.
 
The best that can be done for now would be to add this code:

Find this code around Line 950.

Code:
    /if (${GMailOn}) /call GmailIniParse
| -------------------------------------------------------------------------------------
| Assign Main Tank from command line parameter or targeted player, merc or pet
| -------------------------------------------------------------------------------------

and change it to:

Code:
    /if (${GMailOn}) /call GmailIniParse
    /if (${CastingInterruptOn}==1) /varset CastingInterruptOn 14
| -------------------------------------------------------------------------------------
| Assign Main Tank from command line parameter or targeted player, merc or pet
| -------------------------------------------------------------------------------------

Now find this code around line 2721.

Code:
                        /if (${CastingInterruptOn}) {
                            /if (${DebugCast}) /echo \atDEBUGCAST CastSpell ENTER Interrupts SentFrom ${sentFrom} Spell:${WhatSpell} CastID:${Me.Casting.ID} \agLine#: ${Macro.CurLine}
                            /if (${sentFrom.Equal[SingleHeal]}) {
                               /call CastInteruptHeals "${WhatSpell}"
                            } else /if (${Select[${sentFrom},dps,gom,burn]}>0) {
                               /call CastInteruptDPS "${WhatSpell}"
                            } else /if (${Select[${sentFrom},buffs,buffs-nomem]}>0) {
                               /call CastInteruptBuffs "${WhatSpell}"
                            }
                            /if (${DebugCast}) /echo \atDEBUGCAST CastSpell LEAVE Interrupts SentFrom ${sentFrom} \agLine#: ${Macro.CurLine}   
                        }

and change it to this:

Code:
                        /if (${CastingInterruptOn}) {
                            /if (${DebugCast}) /echo \atDEBUGCAST CastSpell ENTER Interrupts SentFrom ${sentFrom} Spell:${WhatSpell} CastID:${Me.Casting.ID} \agLine#: ${Macro.CurLine}
                            /if (${sentFrom.Equal[SingleHeal]}) {
                               /if ((${CastingInterruptOn}&2)==2) /call CastInteruptHeals "${WhatSpell}"
                            } else /if (${Select[${sentFrom},dps,gom,burn]}>0) {
                               /if ((${CastingInterruptOn}&4)==4) /call CastInteruptDPS "${WhatSpell}"
                            } else /if (${Select[${sentFrom},buffs,buffs-nomem]}>0) {
                               /if ((${CastingInterruptOn}&8)==8) /call CastInteruptBuffs "${WhatSpell}"
                            }
                            /if (${DebugCast}) /echo \atDEBUGCAST CastSpell LEAVE Interrupts SentFrom ${sentFrom} \agLine#: ${Macro.CurLine}   
                        }

Now in your ini file CastingInterruptOn has to be set to reflect what routines you want to check for interrupts. This is a binary bitwise check so use the following:

While healing check for interrupts:
CastingInterruptOn=2
While DPSing check for interrupts:
CastingInterruptOn=4
While Buffing check for interrupts:
CastingInterruptOn=8

Now if you want to use a combination of them just add the values together and set CastingInterruptOn to that value. Example:

You want to check for interrupts when healing(2) and when Buffing(8) set CastingInterruptOn=10

Now just for those of you who are going to try and punch holes in this, by being nitpicky. Valid values, in the ini file, for CastingInterruptOn are 0/1/2/4/6/8/10/12

And none of the above code has been tested, so make copies of your current macro before applying these changes.
 
I appreciate all of this. I have not looked at it all but it is obvious thought was put into it. I will report back.
 
Question - Casting Interrupted

Users who are viewing this thread

Back
Top
Cart