summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d
diff options
context:
space:
mode:
authorJan <>2015-07-10 18:11:22 +0200
committerJan <_>2015-07-10 18:47:01 +0200
commitf1ece16c08d8c01e1d49a25f0314a96c021e73cb (patch)
tree9bc9f547f2524dee8e62f168f317df465a6cbcdd /TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d
parent80b15646d73587f4e15a2897314692b58aa1a47f (diff)
downloadtempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.tar.gz
tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.zip
r0.921
Diffstat (limited to 'TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d')
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DefCore.txt8
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Graphics.pngbin0 -> 10192 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Script.c88
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
new file mode 100644
index 0000000..cd389c0
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Graphics.png
Binary files differ
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)