diff options
Diffstat (limited to 'TemplePushing.c4s/System.c4g/Freeze.c')
| -rw-r--r-- | TemplePushing.c4s/System.c4g/Freeze.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/TemplePushing.c4s/System.c4g/Freeze.c b/TemplePushing.c4s/System.c4g/Freeze.c new file mode 100644 index 0000000..d10457e --- /dev/null +++ b/TemplePushing.c4s/System.c4g/Freeze.c @@ -0,0 +1,36 @@ +/*-- Freeze --*/ + +#strict + +#appendto FREZ + + +global func FxFreezeTimer(pTarget, iEffectNumber, iEffectTime) +{ + // In Lava schwimmend? Dann schnell auftauen (nur für Monster und andere nicht brennbare Lebewesen wichtig) + if(GetMaterialVal("Incindiary", "Material", pTarget->GetMaterial())) + return -1; + // Partikeleffekte für den betroffenen + var id = GetID(pTarget); + CreateParticle("NoGravSpark",GetX(pTarget)+RandomX(-GetDefWidth(id)/2, GetDefWidth(id)/2),GetY(pTarget)+RandomX(-GetDefHeight(id)/2, GetDefHeight(id)/2),0,RandomX(-2, -4),RandomX(18,28),RGB(10,120,210), pTarget); + CreateParticle("Freeze",GetX(pTarget),GetY(pTarget),0,0,EffectVar(1, pTarget, iEffectNumber)*5+20,RGB(0,40,80),pTarget); + // Runterzählen + EffectVar(0, pTarget, iEffectNumber)-=1; + if(EffectVar(0, pTarget, iEffectNumber)<=0) return FX_Execute_Kill; + // Ein bischen tut Einfrieren auch weh + var dmg=EffectVar(4, pTarget, iEffectNumber); + var r=2; + if(dmg) r=1; + + if(!Random(r)) { + var d=RandomX(1200,dmg); + EffectVar(4, pTarget, iEffectNumber)=BoundBy(dmg-d, 0, 0xffffff); + // Damit der richtige Spieler den Schaden verursacht + var pFrom = GetCursor(EffectVar(2, pTarget, iEffectNumber)); + if(pFrom) + pFrom->DoEnergy(-d*2,pTarget, true); + else + DoEnergy(-d*2, pTarget, true); + } + return FX_OK; +}
\ No newline at end of file |
