From 231f6362538dbd7e17a329849e33ca58d4627dbd Mon Sep 17 00:00:00 2001 From: Jan <> Date: Mon, 3 Aug 2015 01:46:52 +0200 Subject: Limit lifetime of activated curse --- TemplePushing.c4s/System.c4g/Curses.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/TemplePushing.c4s/System.c4g/Curses.c b/TemplePushing.c4s/System.c4g/Curses.c index f436b8e..f0f4d8b 100644 --- a/TemplePushing.c4s/System.c4g/Curses.c +++ b/TemplePushing.c4s/System.c4g/Curses.c @@ -1,4 +1,5 @@ /*-- Prevent curse scrolls from vanishing --*/ +/*-- Limit lifetime of activated curse */ #strict 2 @@ -34,3 +35,27 @@ public func ActivateTarget(object pCaller, object pTarget) } return _inherited(pCaller, pTarget); } + +protected func FxCurseTimer(pClonk, iEffectNumber, iEffectTime) +{ + var rval = _inherited(pClonk, iEffectNumber, iEffectTime); + if (rval != FX_OK) return rval; + + if (EffectVar(2, pClonk, iEffectNumber) <= 0) + { + if (GetActivatedLifeTime() + --EffectVar(2, pClonk, iEffectNumber) <= 0) return FX_Execute_Kill; + } + + return FX_OK; +} + +protected func FxCurseIsActive(pClonk, iEffectNumber) +{ + // Old meaning of effect variable 2: true if still chasing target or false if activated + // New meaning: + // == 1: Still chasing target + // <= 0: Was activated and remaining lifetime is GetActivatedLifeTime() + value + return EffectVar(2, pClonk, iEffectNumber) <= 0; +} + +private func GetActivatedLifeTime() { return 720 / 2; } -- cgit v1.2.3-54-g00ecf