From 9808345d95abd6587f5e72a8b904370f98770666 Mon Sep 17 00:00:00 2001 From: Mittendrein Markus Date: Thu, 30 Jul 2015 17:53:37 +0200 Subject: Clean and improve float-spell --- TemplePushing.c4s/System.c4g/Gravity.c | 48 ++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 TemplePushing.c4s/System.c4g/Gravity.c (limited to 'TemplePushing.c4s/System.c4g') diff --git a/TemplePushing.c4s/System.c4g/Gravity.c b/TemplePushing.c4s/System.c4g/Gravity.c new file mode 100644 index 0000000..f20b898 --- /dev/null +++ b/TemplePushing.c4s/System.c4g/Gravity.c @@ -0,0 +1,48 @@ +/*-- Neues Script --*/ + +#strict 2 +#appendto GVTY + +func FxFloatPSpellTimer(pClonk, iEffectNumber, iEffectTime) +{ + if(!EffectVar(0,pClonk,iEffectNumber)) return -1; + if(!EffectVar(1,pClonk,iEffectNumber)) return -1; + EffectVar(0,pClonk,iEffectNumber)--; + + var iSearchRadius = GetRange(); + var pObj; + CreateParticle("Aura",GetX(pClonk),GetY(pClonk), RandomX(-1,1),RandomX(-1,1), 12*iSearchRadius,RGB(50,255,180)); + var i=2; + while(i--) + { + var angle = RandomX(-180, 180); + CreateParticle("PSpark",GetX(pClonk)+Sin(angle, iSearchRadius),GetY(pClonk)-Cos(angle, iSearchRadius), + -Sin(angle, iSearchRadius/3),Cos(angle, iSearchRadius/3),RandomX(50,70), + RGBa(150,155,80, 75),pClonk); + } + 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); + + return 1; +} + +func FxStopNSpellTimer(pTarget, iNumber, iEffectTime) +{ + if(iEffectTime>600) return -1; + + SetXDir(0,pTarget); + SetYDir(-2 * GetGravity(),pTarget,1000); + + if (!FindObject2(Find_ID(GVTY), Find_Distance(GetRange(), GetX(pTarget), GetY(pTarget)))) return -1; +} + +func DoStop(object pObj, object pCaller) +{ + if(GetEffect("StopNSpell", pObj)) return; + pObj->~MagicStop(pCaller); + AddEffect("StopNSpell", pObj, 200, 1, 0, GVTY); + + return 0; +} -- cgit v1.2.3-54-g00ecf