Hey all. I've tried to search several ways for anyone previously asking this question and couldn't find anything that seemed to address it, I apologize if I simply failed to find it.
I have an issue with my cleric. She seems to refuse to cast any Cures based on the HP of the target. The feedback looks like this -
View attachment 61796
It does it for all types of cures though. I can't find a setting in the INI that seems to check HP before casting a cure. My INI on cures looks like this -
View attachment 61798
Anyone know what's happening? Thanks!
Yeah this is weird. I was taking a look at kissassist.mac and it looks like CheckCures calls CastWhat calls CastSpell which can then call CastInteruptHeals. In CastInteruptHeals it looks at some variable SHealPct which gets set in SingleHeal...so it sort of looks like if you possibly have any single target heal configured or the last one (not sure on this part exactly) that has a heal percentage that's > 65, that seems like it can trigger the cure to be canceled via this code in CastInterupHeals:
/if (${Target.Type.NotEqual[npc]} && ${SHealPct}>65 && ${Target.PctHPs}>${SHealPct} && !${CIHSpell.Find[promised]}) {
/stopcast
/varset CastResult CAST_CANCELLED
/echo ${CIHSpell} interrupted. Target is above required ${SHealPct}% health. ${Target}
The above echo looks to match the message you've included. What's extremely weird to me is that I'm 99% sure I've used cures before on my cleric and it's worked. But then again I also know that my cleric has single target heals where the heal percentage is configured to be < 65...so maybe that's why it worked, but for you, SHealPct seems to be set to 90 based on the message you're seeing and for me it was getting set to something < 65 so it wasn't canceling the cast for me.
Now CastSpell only conditionally calls CastInteruptHeals based on this code:
else /if (${sentFrom.Equal[Cure]} && (${CastingInterruptOn}&32)==32) {
/call CastInteruptHeals "${WhatSpell}" ${miscFlag}
} else /if (${sentFrom.Equal[MezMobs]} && (${CastingInterruptOn}&16)==16) {
So it looks like if you set CastingInterruptOn to 1 in your .ini file, it will get set to a value where the above condition will be true....so I think if you set it to 0, it would cure...but that's probably not what you want really either since you do probably want to interrupt other casts. So 1 way you could try to work around the issue would be to comment out the call to CastInteruptHeals from CastSpell (that's I've show above for just the cure condition....so it shouldn't ever do the health check to see if it is going to cancel the cure.
So you could try and change the above code to something like this:
else /if (${sentFrom.Equal[Cure]} && (${CastingInterruptOn}&32)==32) {
| /call CastInteruptHeals "${WhatSpell}" ${miscFlag} **** add the 'l' at the start of this line to prevent the call to interrupt the cure ***
} else /if (${sentFrom.Equal[MezMobs]} && (${CastingInterruptOn}&16)==16) {
That's a hacky sort of work around for you maybe. I'm not sure but I think the logic in CastInteruptHeals seems off to me somehow, especially for a cure spell...so maybe it's a valid change. I'm not sure under what conditions you would possibly want to interrupt a cure....but if there was some, I don't think CastInteruptHeals is currently set up for it.