diff options
| author | Mittendrein Markus <maxmitti@gmx.net> | 2016-02-08 23:05:49 +0100 |
|---|---|---|
| committer | Mittendrein Markus <maxmitti@gmx.net> | 2016-02-08 23:48:42 +0100 |
| commit | 210552204ad900b1e338b3fe515b88be93996753 (patch) | |
| tree | fd3a4bebec7dfc3e5d4d73eae62addc1da678088 /TemplePushing.c4s/System.c4g | |
| parent | 4605b884b226dc244bbfe19481a45e5019f41df8 (diff) | |
| download | tempelschubsen-210552204ad900b1e338b3fe515b88be93996753.tar.gz tempelschubsen-210552204ad900b1e338b3fe515b88be93996753.zip | |
Fix RemoveAnyEffect and RemoveBadEffect in Goblet append
Diffstat (limited to 'TemplePushing.c4s/System.c4g')
| -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 } |
