diff options
| author | Jan <> | 2015-07-10 18:11:22 +0200 |
|---|---|---|
| committer | Jan <_> | 2015-07-10 18:47:01 +0200 |
| commit | f1ece16c08d8c01e1d49a25f0314a96c021e73cb (patch) | |
| tree | 9bc9f547f2524dee8e62f168f317df465a6cbcdd /TemplePushing.c4s/System.c4g/Frostwave.c | |
| parent | 80b15646d73587f4e15a2897314692b58aa1a47f (diff) | |
| download | tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.tar.gz tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.zip | |
r0.921
Diffstat (limited to 'TemplePushing.c4s/System.c4g/Frostwave.c')
| -rw-r--r-- | TemplePushing.c4s/System.c4g/Frostwave.c | 158 |
1 files changed, 79 insertions, 79 deletions
diff --git a/TemplePushing.c4s/System.c4g/Frostwave.c b/TemplePushing.c4s/System.c4g/Frostwave.c index d30db5e..682e502 100644 --- a/TemplePushing.c4s/System.c4g/Frostwave.c +++ b/TemplePushing.c4s/System.c4g/Frostwave.c @@ -1,99 +1,99 @@ /*-- Frostwave --*/ - + #strict 2 - + #appendto MFWV - + local maxRadius; - + protected func Initialize() { - maxRadius = 90; + maxRadius = 90; } - + func Activate(object caster, object realcaster) { - if (realcaster) caster = realcaster; - - if (AddEffect("FrostwaveNSpell", this, 130, 1, this, 0, caster, maxRadius) <= 0) - { - RemoveObject(); - return 1; - } - - Sound("MgWind*"); - return 1; + if (realcaster) caster = realcaster; + + if (AddEffect("FrostwaveNSpell", this, 130, 1, this, 0, caster, maxRadius) <= 0) + { + RemoveObject(); + return 1; + } + + Sound("MgWind*"); + return 1; } - + func FxFrostwaveNSpellStart(object target, int number, int temp, object caster, int maxRadius) { - if (temp) return; - - // Initial radius - EffectVar(1, target, number) = 20; - - // Position - EffectVar(2, target, number) = caster->GetX(); - EffectVar(3, target, number) = caster->GetY(); - - // Caster - EffectVar(4, target, number) = caster; - EffectVar(6, target, number) = caster->GetController(); - - // Maximum radius - EffectVar(7, target, number) = maxRadius; - - // Combo - var combo = caster->FindContents(ICE1); - if (combo) - { - EffectVar(5, target, number) = true; - combo->RemoveObject(); - } - - return 1; + if (temp) return; + + // Initial radius + EffectVar(1, target, number) = 20; + + // Position + EffectVar(2, target, number) = caster->GetX(); + EffectVar(3, target, number) = caster->GetY(); + + // Caster + EffectVar(4, target, number) = caster; + EffectVar(6, target, number) = caster->GetController(); + + // Maximum radius + EffectVar(7, target, number) = maxRadius; + + // Combo + var combo = caster->FindContents(ICE1); + if (combo) + { + EffectVar(5, target, number) = true; + combo->RemoveObject(); + } + + return 1; } - + func FxFrostwaveNSpellTimer(object target, int number, int time) { - var radius = EffectVar(1, target, number); - - // Remove if maximum radius is reached - if (radius >= EffectVar(7, target, number)) return -1; - - // Position - var absX = EffectVar(2, target, number), relX = AbsX(absX); - var absY = EffectVar(3, target, number), relY = AbsY(absY); - - // Combo? - var searchOCF = OCF_Alive; - if (EffectVar(5, target, number)) searchOCF |= OCF_Collectible; - - // Effects! - CreateParticle("FrostWave", relX, relY, RandomX(-1, 1), RandomX(-1, 1), 400 + 10 * radius, RGB(255, 255, 255)); - - // Fling enemies - var caster = EffectVar(4, target, number); - for (var obj in FindObjects( - Find_Distance(radius + 5, relX, relY), Find_Not(Find_Distance(radius - 5)), - Find_OCF(searchOCF), Find_NoContainer(), Find_Not(caster))) - { - var angle = Angle(absX, absY, obj->GetX(), obj->GetY()); - obj->SetKiller(EffectVar(6, target, number)); - Fling(obj, Sin(angle, 80) / 9, -Cos(angle, 80) / 9); - if (!Frozen(obj)) Freeze(obj, caster); - } - - // Increase radius - EffectVar(1, target, number) += 8; - - return 1; + var radius = EffectVar(1, target, number); + + // Remove if maximum radius is reached + if (radius >= EffectVar(7, target, number)) return -1; + + // Position + var absX = EffectVar(2, target, number), relX = AbsX(absX); + var absY = EffectVar(3, target, number), relY = AbsY(absY); + + // Combo? + var searchOCF = OCF_Alive; + if (EffectVar(5, target, number)) searchOCF |= OCF_Collectible; + + // Effects! + CreateParticle("FrostWave", relX, relY, RandomX(-1, 1), RandomX(-1, 1), 400 + 10 * radius, RGB(255, 255, 255)); + + // Fling enemies + var caster = EffectVar(4, target, number); + for (var obj in FindObjects( + Find_Distance(radius + 5, relX, relY), Find_Not(Find_Distance(radius - 5)), + Find_OCF(searchOCF), Find_NoContainer(), Find_Not(caster))) + { + var angle = Angle(absX, absY, obj->GetX(), obj->GetY()); + obj->SetKiller(EffectVar(6, target, number)); + Fling(obj, Sin(angle, 80) / 9, -Cos(angle, 80) / 9); + if (!Frozen(obj)) Freeze(obj, caster); + } + + // Increase radius + EffectVar(1, target, number) += 8; + + return 1; } - + /* Zaubercombo */ - + public func GetSpellClass() { return WATR; } public func GetSpellCombo() { return "335"; } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig) - + /* Custom radius */ -public func SetMaxRadius(int radius) { maxRadius = radius; } +public func SetMaxRadius(int radius) { maxRadius = radius; }
\ No newline at end of file |
