From 903464914318778271c75424ab7e3d68c58c4624 Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Tue, 9 Apr 2019 01:00:29 +0200 Subject: Add hyper mode to gravity spell, which affects only hostile objects --- TemplePushing.c4s/System.c4g/Gravity.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'TemplePushing.c4s') diff --git a/TemplePushing.c4s/System.c4g/Gravity.c b/TemplePushing.c4s/System.c4g/Gravity.c index b4db7d8..a5ddca8 100644 --- a/TemplePushing.c4s/System.c4g/Gravity.c +++ b/TemplePushing.c4s/System.c4g/Gravity.c @@ -9,9 +9,17 @@ func FxFloatPSpellTimer(pClonk, iEffectNumber, iEffectTime) if(!EffectVar(1,pClonk,iEffectNumber)) return -1; EffectVar(0,pClonk,iEffectNumber)--; + var hyper = EffectVar(2, pClonk, iEffectNumber); + var iSearchRadius = GetRange(); var pObj; - CreateParticle("WhiteAura",GetX(pClonk),GetY(pClonk), RandomX(-1,1), RandomX(-1,1), 12*iSearchRadius,GetPlrColorDw(GetOwner(pClonk)), pClonk); + var auraColor = RGB(128, 128, 128); + var hyperExtra = 0; + if(hyper) + { + auraColor = GetPlrColorDw(GetOwner(pClonk)); + } + CreateParticle("WhiteAura",GetX(pClonk),GetY(pClonk), RandomX(-1,1), RandomX(-1,1), 12*iSearchRadius, auraColor, pClonk); var i=2; while(i--) { @@ -23,7 +31,7 @@ func FxFloatPSpellTimer(pClonk, iEffectNumber, iEffectTime) CastParticles("PSpark", 3, iSearchRadius/3, GetX(pClonk), GetY(pClonk)+8, 50, 70, RGBa(150,155,80, 75), RGBa(150,155,80, 75), pClonk); // Find objects and stop them - for(var obj in FindObjects(Find_Distance(iSearchRadius, GetX(pClonk), GetY(pClonk)), Find_Not(Find_Func("IgnoreFloatSpell")), Find_Not(Find_OCF(OCF_CrewMember)), Find_Not(Find_Effect("StopNSpell")), Find_NoContainer())) EffectVar(1,pClonk,iEffectNumber)->~DoStop(obj, pClonk); + for(var obj in FindObjects(Find_Distance(iSearchRadius, GetX(pClonk), GetY(pClonk)), Find_Not(Find_Func("IgnoreFloatSpell")), Find_Not(Find_OCF(OCF_CrewMember)), Find_Not(Find_Effect("StopNSpell")), Find_NoContainer())) EffectVar(1,pClonk,iEffectNumber)->~DoStop(obj, pClonk, hyper); return 1; } @@ -38,13 +46,12 @@ func FxStopNSpellTimer(pTarget, iNumber, iEffectTime) if (!FindObject2(Find_ID(GVTY), Find_Distance(GetRange(), GetX(pTarget), GetY(pTarget)))) return -1; } -func DoStop(object pObj, object pCaller) +func DoStop(object pObj, object pCaller, bool hyper) { + if(hyper && !Hostile(GetOwner(pCaller), GetController(pObj))) return; if(GetEffect("StopNSpell", pObj)) return; pObj->~MagicStop(pCaller); AddEffect("StopNSpell", pObj, 200, 1, 0, GVTY); - - return 0; } func FxFloatPSpellStart(pClonk, iEffectNumber, iTemp) @@ -59,4 +66,5 @@ private func FxFloatPSpellAdd(object pTarget, int iNumber) { // Effekt übernehmen EffectVar(0, pTarget, iNumber) += 180; + EffectVar(2, pTarget, iNumber) = true; } -- cgit v1.2.3-54-g00ecf