diff options
Diffstat (limited to 'TemplePushing.c4s')
| -rw-r--r-- | TemplePushing.c4s/System.c4g/Goblet.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/TemplePushing.c4s/System.c4g/Goblet.c b/TemplePushing.c4s/System.c4g/Goblet.c index b665574..7877443 100644 --- a/TemplePushing.c4s/System.c4g/Goblet.c +++ b/TemplePushing.c4s/System.c4g/Goblet.c @@ -46,7 +46,11 @@ private func FillCheck() private func RemoveBadEffect(object clonk) { // Unfreeze clonk if frozen - if (Frozen(clonk)) Unfreeze(clonk); + if (Frozen(clonk)) + { + Unfreeze(clonk); + return true; + } // Extinguish clonk if on fire if (clonk->OnFire()) @@ -56,7 +60,7 @@ private func RemoveBadEffect(object clonk) } // Remove a curse if at least one is present - if (RemoveAnyEffect("*Curse*", clonk)) return true; + if (RemoveAnyEffect("*Curse*", clonk, "!CAHE->FxCurseIsActive")) return true; // Remove plague effect if present if (RemoveAnyEffect("Poison", clonk)) return true; @@ -64,18 +68,19 @@ private func RemoveBadEffect(object clonk) // Remove a negative spell if at least one is present if (RemoveAnyEffect("*NSpell", clonk)) return true; - // Fail there is no bad effect to remove + // Fail if there is no bad effect to remove return false; } -private func RemoveAnyEffect(string name, object target) +private func RemoveAnyEffect(string name, object target, string checkCall) { // Create an array of effect numbers matching name and target var effectNumbers = []; - for (var i = 0; i < GetEffectCount(); ++i) + for (var i = 0; i < GetEffectCount(name, target); ++i) { var effectNumber = GetEffect(name, target, i); if (effectNumber == 0) break; + if (checkCall && eval(Format("%s(Object(%d), %d)", checkCall, ObjectNumber(target), effectNumber))) continue; effectNumbers[GetLength(effectNumbers)] = effectNumber; } @@ -83,7 +88,7 @@ private func RemoveAnyEffect(string name, object target) if (GetLength(effectNumbers) == 0) return false; // Randomly select an effect to remove - RemoveEffect(0, target, Random(effectNumbers)); + RemoveEffect(0, target, effectNumbers[Random(GetLength(effectNumbers))]); return true; // Success } |
