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/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d | |
| parent | 80b15646d73587f4e15a2897314692b58aa1a47f (diff) | |
| download | tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.tar.gz tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.zip | |
r0.921
Diffstat (limited to 'TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d')
6 files changed, 100 insertions, 0 deletions
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DefCore.txt new file mode 100644 index 0000000..07ffdaf --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=MATT +Version=4,9,8 +Name=Teleport +Category=C4D_StaticBack|C4D_Magic +Value=12 +Components=IMUS=1;IASH=1 +Picture=0,0,64,64 diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescDE.txt new file mode 100644 index 0000000..bd7a8be --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescDE.txt @@ -0,0 +1 @@ +Teleportiert hinter einen Gegner.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescUS.txt new file mode 100644 index 0000000..62914d6 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescUS.txt @@ -0,0 +1 @@ +Teleports behind an enemy.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..cd389c0 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Names.txt new file mode 100644 index 0000000..9ed60b8 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Angriffsteleport +US:Assault Teleport diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Script.c new file mode 100644 index 0000000..60dc5f2 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Script.c @@ -0,0 +1,88 @@ +/*-- Teleport --*/ + +#strict + +func Range() +{ + var range=225; + return range; +} + + + +protected func Activate(object pCaster, object pRealCaster) +{ + // Effekt erzeugen + if(!pRealCaster) pRealCaster = pCaster; + + var possibleTargets = []; + var found=0; + var range=Range(); + for(var obj in FindObjects(Find_Distance(range),Find_OCF(OCF_CrewMember),Find_Hostile(GetOwner(pRealCaster)),Sort_Distance())) + { + var dir=-1; + if(GetDir(obj) == DIR_Left)dir=1; + + if(GBackSolid(AbsX(GetX(obj)+15*dir),AbsY(GetY(obj))) + || GBackSolid(AbsX(GetX(obj)+15*dir),AbsY(GetY(obj)+5)) + || GBackSolid(AbsX(GetX(obj)+15*dir),AbsY(GetY(obj)-9)))continue; + if(!PathFree(GetX(obj),GetY(obj),GetX(obj)+15*dir,GetY(obj) + 5))continue; + + var priority = 20 + ObjectDistance(pRealCaster, obj); + if(GBackSemiSolid(AbsX(obj->GetX()), AbsY(obj->GetY()))) + priority += 100; + + possibleTargets[GetLength(possibleTargets)] = [obj, priority]; + + } + + if(!GetLength(possibleTargets)) + { + var x = AbsX(GetX(pRealCaster)); + var y = AbsY(GetY(pRealCaster)); + var tim = CreateObject(TIM1, x, y, pRealCaster->GetOwner()); + tim->SetVisibility(VIS_Owner); + AddEffect("ScheduledRemove", tim, 1, 35 * 5, 0, MATT); + CreateParticle("RangeSpark", 0, 0, 0, 0,((range)*1000/200)*2, RGB(200, 200, 100), tim, true); + Sound("Error",0,0,0,GetOwner(pRealCaster)); + RemoveObject(); + return; + } + + + // find lowest prio target from list + var currentLowest = 0xffffff; + for(var pt in possibleTargets) + { + if(pt[1] >= currentLowest) continue; + currentLowest = pt[1]; + found = pt[0]; + } + + var dir=-1; + if(GetDir(found) == DIR_Left)dir=1; + + for(var cnt=0;cnt<5;cnt++) + { + CreateParticle("PSpark",AbsX(GetX(pRealCaster)+RandomX(-5,5)),AbsY(GetY(pRealCaster)+RandomX(-10,10)),0,0,150,GetColorDw(pRealCaster)); + CreateParticle("PSpark",AbsX(GetX(found)+15*dir+RandomX(-5,5)),AbsY(GetY(found)+RandomX(-10,10)),0,0,150,GetColorDw(pRealCaster)); + } + SetSpeed(GetXDir(found),GetYDir(found),pRealCaster); + SetPosition(GetX(found)+7*dir,GetY(found),pRealCaster); + + Sound("Scream"); + return(RemoveObject()); +} + + +func FxScheduledRemoveStop(target, effect, reason, temp) +{ + if(temp) return; + if(!target) return; + target->RemoveObject(); +} + +/* Zaubercombo */ + +public func GetSpellClass(object pMage) { return(AIR1); } +public func GetSpellCombo(pMage) { return ("222"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig) |
