summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/Misc.c4d
diff options
context:
space:
mode:
authorJan <>2015-02-02 17:58:18 +0100
committerJan <_>2015-07-10 17:51:43 +0200
commitca61c54b9bd69af897e4cc9d4385137fb56fd11a (patch)
treea4363f466cea6de48ca81fadc08273d58698d2ff /TemplePushing.c4s/Misc.c4d
parent32a9632fbca3dd7a88bd3154b84a3773af39c276 (diff)
downloadtempelschubsen-ca61c54b9bd69af897e4cc9d4385137fb56fd11a.tar.gz
tempelschubsen-ca61c54b9bd69af897e4cc9d4385137fb56fd11a.zip
TemplePushingBeta.c4s
Diffstat (limited to 'TemplePushing.c4s/Misc.c4d')
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DefCore.txt8
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/ActMap.txt7
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DefCore.txt20
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/FSSpark.c4d/Graphics.pngbin0 -> 1468 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/FSSpark.c4d/Particle.txt14
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Graphics.pngbin0 -> 345 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle.c4d/Graphics.pngbin0 -> 409 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle.c4d/Particle.txt14
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle2.c4d/Graphics.pngbin0 -> 339 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle2.c4d/Particle.txt16
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Script.c176
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Graphics.pngbin0 -> 4517 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c125
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DefCore.txt10
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Graphics.pngbin0 -> 2192 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c41
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/ActMap.txt15
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DefCore.txt11
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Graphics.pngbin0 -> 2192 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark.c4d/Graphics.pngbin0 -> 1686 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark.c4d/Particle.txt15
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark2.c4d/Graphics.pngbin0 -> 1686 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark2.c4d/Particle.txt15
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Script.c167
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt17
-rw-r--r--TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.pngbin0 -> 2493 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c59
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c65
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblDE.txt12
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt12
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/DefCore.txt6
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/Graphics.pngbin0 -> 2862 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/DefCore.txt6
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/Graphics.pngbin0 -> 4172 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/DefCore.txt6
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/Graphics.pngbin0 -> 8994 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/DefCore.txt6
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/Graphics.pngbin0 -> 9076 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/DefCore.txt (renamed from TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/DefCore.txt)0
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/Graphics.png (renamed from TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Graphics.png)bin16625 -> 16625 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/Names.txt (renamed from TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Names.txt)0
60 files changed, 825 insertions, 46 deletions
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DefCore.txt
new file mode 100644
index 0000000..214c847
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DefCore.txt
@@ -0,0 +1,8 @@
+[DefCore]
+id=ICNL
+Name=Eisnadeln
+Version=4,9,5,4
+Category=131073
+Picture=0,0,64,64
+Value=12
+Components=ICRS=3;IICE=2; \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DescDE.txt
new file mode 100644
index 0000000..e7fbadb
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DescDE.txt
@@ -0,0 +1 @@
+Schießt Eisnadeln vom Zauberer weg. \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DescUS.txt
new file mode 100644
index 0000000..f56d320
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/DescUS.txt
@@ -0,0 +1 @@
+Shoots ice needles in the selected direction. \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/ActMap.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/ActMap.txt
new file mode 100644
index 0000000..7dec40a
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/ActMap.txt
@@ -0,0 +1,7 @@
+[Action]
+Name=Fly
+Procedure=FLOAT
+Length=1
+Delay=1
+NextAction=Fly
+FacetBase=1
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DefCore.txt
new file mode 100644
index 0000000..13db5ff
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DefCore.txt
@@ -0,0 +1,20 @@
+[DefCore]
+id=ICNA
+Name=Eisnadel
+Version=4,9,5
+Category=4
+MaxUserSelect=10
+Width=12
+Height=3
+Offset=-6,-1
+Value=10
+Mass=10
+Timer=2
+TimerCall=Check
+Vertices=1
+VertexX=1
+VertexFriction=20
+Rotate=1
+
+[Physical]
+Float=500 \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DescDE.txt
new file mode 100644
index 0000000..a5ea66e
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DescDE.txt
@@ -0,0 +1 @@
+Frostig. \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DescUS.txt
new file mode 100644
index 0000000..8cbca28
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/DescUS.txt
@@ -0,0 +1 @@
+Very cold. \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/FSSpark.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/FSSpark.c4d/Graphics.png
new file mode 100644
index 0000000..d598ba4
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/FSSpark.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/FSSpark.c4d/Particle.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/FSSpark.c4d/Particle.txt
new file mode 100644
index 0000000..b6f0130
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/FSSpark.c4d/Particle.txt
@@ -0,0 +1,14 @@
+[Particle]
+Name=FSSpark
+MaxCount=2000
+InitFn=StdInit
+ExecFn=StdExec
+DrawFn=Std
+Face=0,0,32,32,-16,-16
+Delay=0
+Repeats=6
+GravityAcc=0
+AlphaFade=4
+Additive=1
+Attach=1
+RByV=1 \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Graphics.png
new file mode 100644
index 0000000..b00b2f5
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle.c4d/Graphics.png
new file mode 100644
index 0000000..7fd2df2
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle.c4d/Particle.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle.c4d/Particle.txt
new file mode 100644
index 0000000..61c3b8b
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle.c4d/Particle.txt
@@ -0,0 +1,14 @@
+[Particle]
+Name=MaterialParticle
+MaxCount=350
+InitFn=StdInit
+ExecFn=StdExec
+DrawFn=Std
+CollisionFn=Die
+Face=0,0,28,43,-15,-5
+Repeats=10
+GravityAcc=70
+RByV=1
+Delay=175
+VertexCount=1
+AlphaFade=0 \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle2.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle2.c4d/Graphics.png
new file mode 100644
index 0000000..ba84750
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle2.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle2.c4d/Particle.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle2.c4d/Particle.txt
new file mode 100644
index 0000000..63d5355
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/MaterialParticle2.c4d/Particle.txt
@@ -0,0 +1,16 @@
+[Particle]
+Name=MaterialParticle2
+MaxCount=3500
+InitFn=StdInit
+ExecFn=StdExec
+DrawFn=Std
+CollisionFn=Die
+Face=0,0,28,43,-15,-5
+Repeats=1
+GravityAcc=0
+RByV=1
+Delay=0
+VertexCount=1
+AlphaFade=4
+Additive=1
+Attach=1 \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Script.c
new file mode 100644
index 0000000..98f3eaf
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Script.c
@@ -0,0 +1,176 @@
+/*-- Eislanze --*/
+
+#strict
+static const ICNA_Speed=50;
+
+local timer;
+local iOldX, iOldY;
+local Gift;
+local iAngle;
+local Caster;
+local Randi;
+
+func Initialize() {
+Gift=0;
+ timer=0;
+ return(1);
+}
+
+public func Activate(pCaster,Angle)
+{
+ SetAction("Fly");
+ var xDir,yDir;
+// SetR(Angle-100+RandomX(0,20));
+ iAngle = Angle-10+RandomX(0,20);
+ SetR(iAngle-90);
+ Caster = pCaster;
+// xDir=Cos(iAngle-90,ICNA_Speed);
+// yDir=Sin(iAngle-90,ICNA_Speed);
+// SetXDir(xDir+RandomX(-10,10));
+// SetYDir(yDir+RandomX(-10,10));
+// iOldX = GetX(); iOldY = GetY();
+}
+
+protected func Hit()
+{
+ if(CheckHit()) return();
+ CastParticles("MaterialParticle",20,50,0,0,20,60,RGB(50,120,255),RGB(00,120,255));
+ if(!Random(3)) RemoveObject();
+ if(GetR() > 180) iAngle = iAngle-iAngle*2;
+ if(GetR() < 180) iAngle = iAngle+iAngle*2;
+ var iMinAngleDiff = 360, iTargetAngle = iAngle;
+ var pObj;
+ while (pObj = FindObject(0, Sin(iAngle, 200)-200/2, -Cos(iAngle, 200)-200/2, 200, 200, OCF_CrewMember, 0,0, NoContainer(), pObj))
+ {
+ if (!GetAlive(pObj)) continue;
+ if(pObj == Caster) continue;
+ if(!PathFree(GetX(),GetY(),GetX(pObj),GetY(pObj))) continue;
+ var iThisTargetAngle = Angle(GetX(), GetY(), GetX(pObj), GetY(pObj));
+ if (iThisTargetAngle > 180) iThisTargetAngle -= 360;
+ if (Abs(iThisTargetAngle - iAngle) < iMinAngleDiff)
+ {
+ iMinAngleDiff = Abs(iThisTargetAngle - iAngle);
+ iTargetAngle = iThisTargetAngle;
+ }
+ }
+ iAngle = BoundBy(iTargetAngle, iAngle-Randi, iAngle+Randi);
+}
+
+protected func Check()
+{
+//CheckCrash(this());
+// SetXDir(Cos(GetR(), 245000) * 2, 0, 100000);
+// SetYDir(Sin(GetR(), 245000) * 2, 0, 100000);
+ Randi = RandomX(0,20);
+ SetR(iAngle);
+ SetXDir(Sin(iAngle, 50));
+ SetYDir(-Cos(iAngle, 50));
+
+ // SetXDir(Sin(iAngle, 80));
+ // SetYDir(-Cos(iAngle, 80));
+
+ var iMinAngleDiff = 360, iTargetAngle = iAngle;
+ var pObj;
+ while (pObj = FindObject(0, Sin(iAngle, 200)-200/2, -Cos(iAngle, 200)-200/2, 200, 200, OCF_CrewMember, 0,0, NoContainer(), pObj))
+ {
+ if (!GetAlive(pObj)) continue;
+ if(pObj == Caster) continue;
+ if(!PathFree(GetX(),GetY(),GetX(pObj),GetY(pObj))) continue;
+ var iThisTargetAngle = Angle(GetX(), GetY(), GetX(pObj), GetY(pObj));
+ if (iThisTargetAngle > 180) iThisTargetAngle -= 360;
+ if (Abs(iThisTargetAngle - iAngle) < iMinAngleDiff)
+ {
+ iMinAngleDiff = Abs(iThisTargetAngle - iAngle);
+ iTargetAngle = iThisTargetAngle;
+ }
+ }
+ iAngle = BoundBy(iTargetAngle, iAngle-Randi, iAngle+Randi);
+
+ if(++timer > 100)RemoveObject();
+ //if(!GetR() == iAngle-90){
+ //if(GetR() < iAngle-90) SetRDir(1);
+ //if(GetR() > iAngle-90) SetRDir(-1);
+ //}
+ //if(GetR() == iAngle-80+RandomX(0,20)) SetRDir(0);
+ if(ObjectDistance(this(),pObj) < 40) SetR(iAngle-90);
+
+if(!Gift==1)
+ {
+ // CreateParticle("PSpark",0,0,0,0,20,RGBa(0,RandomX(100,120),RandomX(160,255),90));
+ CreateParticle("PSpark",0,0,0,0,180,RGBa(0,RandomX(100,120),RandomX(160,255),120));
+ CreateParticle("FSSpark",0,0,0,0,150,RGB(0,RandomX(100,120),RandomX(160,255)));
+ //CreateParticle("PSpark",-GetXDir()/5,-GetYDir()/5,0,0,40,RGB(0,RandomX(100,120),RandomX(160,255)));
+ //CreateParticle("PSpark",-GetXDir()/2,-GetYDir()/2,0,0,40,RGB(0,RandomX(100,120),RandomX(160,255)));
+ CreateParticle("MaterialParticle2",0,0,RandomX(2,-2)-GetXDir()/2,RandomX(2,-2)-GetYDir()/2,250,RGB(0,RandomX(100,120),RandomX(160,255)));
+ }
+else
+{
+ CreateParticle("FSSpark",0,0,0,0,150,RGB(100,255,0));
+ CreateParticle("PSpark",0,0,0,0,180,RGBa(100,255,0,120));
+ CreateParticle("MaterialParticle2",0,0,RandomX(2,-2)-GetXDir()/2,RandomX(2,-2)-GetYDir()/2,250,RGB(100,255,0));
+ }
+ // Auf Treffer prüfen
+ CheckHit();
+ iOldX = GetX(); iOldY = GetY();
+/* var pClonk=0;
+ while(pClonk=FindObject(0,0,-1,0,0,OCF_Alive(),0,0,NoContainer(),pClonk))
+ {
+ if(!ObjectCount(NTMG))if(Hostile(GetOwner(),GetOwner(pClonk)))continue;
+ Punch(pClonk,4);
+ RemoveObject();
+ }*/
+}
+
+private func CheckHit()
+{
+ // Nur wenn schon passende Werte da sind
+ if(!iOldX && !iOldY) return();
+ // Distance zur letzten Position berechnen
+ var iXDist = GetX()-iOldX;
+ var iYDist = GetY()-iOldY;
+ // Treffer-Überprüfung
+ var iSteps = Abs(iXDist/4);
+ if(Abs(GetXDir())<Abs(GetYDir())) iSteps = Abs(iYDist/4);
+ var iX, iY, pObj;
+ // Mit Schleife alle Zwischenpunkte abklappern
+ for(var i = iSteps; i; i--)
+ {
+ iX = -iXDist*i/iSteps; iY = -iYDist*i/iSteps;
+ if(!iY) iY = 1;
+// CreateParticle("NoGravSpark", iX, iY, 0, 0, 30, RGB(i*255/iSteps, (iSteps-i)*255/iSteps));
+ var pFObj;
+ if(pFObj = FindObject(0, iX, iY, 0, 0, OCF_OnFire(), 0, 0, NoContainer())) {
+ if(!Random(3)) RemoveObject(this());
+ }
+ if(pObj = FindObject(0, iX, iY, 0, 0, OCF_Alive(), 0, 0, NoContainer())) return(HitLiving(pObj));
+ }
+}
+
+private func HitLiving (living,pObj)
+{
+if(living == Caster) return(0);
+CastParticles("MaterialParticle",20,50,0,0,20,60,RGB(50,120,255),RGB(00,120,255));
+Sound("Crystal2", this());
+if(!Gift==1)
+ {
+ Sound("Hited", living);
+ // Schaden machen
+ Punch(living, 12);
+ if(!Frozen(living)) Freeze(living, EffectVar(4));
+ return(RemoveObject());
+ }
+if(Gift==1)
+{
+ Sound("Hited", living);
+ // Schaden machen
+ Punch(living, (10));
+ return(RemoveObject());
+ }
+ }
+
+
+protected func Destruction()
+{
+ CreateParticle("PSpark", RandomX(-1,2), RandomX(-2,1), RandomX(-3,2), RandomX(-2,1), RandomX(150,90), RGB(010,035,94));
+ CreateParticle("PSpark", RandomX(-2,1), RandomX(-1,2), RandomX(-2,3), RandomX(-1,2), RandomX(150,90), RGB(012,040,94));
+} \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Graphics.png
new file mode 100644
index 0000000..d58fd63
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Names.txt
new file mode 100644
index 0000000..78ba18b
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Eisnadeln
+US:Ice needle \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c
new file mode 100644
index 0000000..1d439bf
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c
@@ -0,0 +1,125 @@
+/* Eisnadeln */
+
+#strict
+
+local Combo;
+
+
+
+func Activate(pCaster,pRealcaster) {
+Combo=0;
+Sound("Magic",0,pCaster);
+if(FindContents(ABRL,pCaster))
+{
+Combo=1;
+RemoveObject(FindContents(ABRL,pCaster));
+}
+ var pClonk;
+ if(pRealcaster) pClonk=pRealcaster;
+ else pClonk=pCaster;
+
+ // Zielen wenn möglich
+ if (pClonk->~DoSpellAim(this())) return(1);
+
+ var angle=-90;
+ if(GetDir(pClonk) == DIR_Right()) angle=90;
+ ActivateAngle(pClonk,angle);
+ RemoveObject();
+ return(1);
+}
+
+// Aktivierung nach Zielen (iAngle: -90=links; 0=oben; +90=rechts)
+public func ActivateAngle(object pCaller, int iAngle)
+ {
+ //var pEffer = CreateObject(_WE_,0,0,GetOwner(this()));
+ //GetTarget(object pTarget,int Interval, string Element, int ElementNumber, int R, int G, int B, int a)
+ //pEffer -> GetTarget(pCaller,0, "Water", 0, 100, 100, 255, 120);
+ var WasserF = FindContents(WBRL,pCaller);
+ if(WasserF)
+ {
+ RemoveObject(WasserF);
+ CreateContents(FLNT,this());
+ }
+ if(!FindContents(FLNT,this()))
+ {
+ for(var cnt=0;cnt<3;cnt++)
+ {
+ var f=CreateObject(ICNA,AbsX(GetX(pCaller))+Cos(iAngle-90,13),AbsY(GetY(pCaller))+Sin(iAngle-90,13),GetOwner(pCaller));
+ f->Activate(pCaller,iAngle);
+ if(Combo==1) f->LocalN("Gift",f)=1;
+ var combo = FindContents(ICE1,pCaller);
+ if(combo)
+ {
+ RemoveObject(combo);
+ f->CreateContents(ROCK);
+ }
+ }
+ AddEffect("RecallMFCSAiming",pCaller,20,1,0,GetID(),iAngle);
+
+ // Objekt löschen
+ RemoveObject();
+ return(1);
+ }
+ if(FindContents(FLNT,this()))
+ {
+ for(var cnt=0;cnt<6;cnt++)
+ {
+ var f=CreateObject(ICNA,AbsX(GetX(pCaller))+Cos(iAngle-90,13),AbsY(GetY(pCaller))+Sin(iAngle-90,13),GetOwner(pCaller));
+ f->Activate(pCaller,iAngle);
+ if(Combo==1) f->LocalN("Gift",f)=1;
+ var combo1 = FindContents(ICE1,pCaller);
+ if(combo1)
+ {
+ RemoveObject(combo1);
+ f->CreateContents(ROCK);
+ }
+ }
+ AddEffect("RecallMFCSAiming",pCaller,20,1,0,GetID(),iAngle);
+
+ // Objekt löschen
+ RemoveObject();
+ return(1);
+ }
+}
+public func HoldAimer(pCaller)
+{
+ return(true);
+}
+
+protected func FxRecallICNAAimingStart(pTarget,iEffectNumber,bTemp,par1){
+EffectVar(0,pTarget,iEffectNumber)=par1;
+EffectVar(1,pTarget,iEffectNumber)=0;
+EffectVar(2,pTarget,iEffectNumber)=0;
+return(1);}
+
+protected func FxRecallICNAAimingTimer(pTarget,iEffectNumber)
+{
+ if(GetAction(pTarget) eq "Magic")return(0);
+
+ if(!EffectVar(1,pTarget,iEffectNumber))
+ {
+ pTarget->~DoMagic(ICNA);
+ EffectVar(1,pTarget,iEffectNumber)=1;
+ }
+
+ if(!EffectVar(2,pTarget,iEffectNumber) && GetAction(pTarget) eq "AimMagic")
+ {
+ var pAimer=FindObject(AIMR,0,0,0,0,0,0,pTarget,NoContainer());
+ if(pAimer)
+ {
+ LocalN("iAngle",pAimer)=EffectVar(0,pTarget,iEffectNumber);
+ LocalN("pArrow",pAimer)->~UpdateAngle(EffectVar(0,pTarget,iEffectNumber));
+ pAimer->~UpdateAngle(EffectVar(0,pTarget,iEffectNumber));
+ pTarget->~AimingAngle(EffectVar(0,pTarget,iEffectNumber));
+ EffectVar(2,pTarget,iEffectNumber)=1;
+ }
+ }
+ if(!WildcardMatch(GetAction(pTarget),"*Magic*") && !WildcardMatch(GetAction(pTarget),"*Aim*"))return(-1);
+
+ if(EffectVar(2,pTarget,iEffectNumber) && EffectVar(1,pTarget,iEffectNumber))return(-1);
+}
+
+/* Zaubercombo */
+
+public func GetSpellClass(object pMage) { return(WATR); }
+public func GetSpellCombo(pMage) { return ("444"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig)
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DefCore.txt
new file mode 100644
index 0000000..92b2cae
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DefCore.txt
@@ -0,0 +1,10 @@
+[DefCore]
+id=LAVS
+Version=4,0,2
+Name=Lavastoß
+Category=131072
+Width=1
+Height=1
+Value=25
+Components=IBON=2;
+Picture=0,0,40,40
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DescDE.txt
new file mode 100644
index 0000000..45fcbe1
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DescDE.txt
@@ -0,0 +1 @@
+Entzündet getroffende Lebewesen.
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DescUS.txt
new file mode 100644
index 0000000..068fb1b
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/DescUS.txt
@@ -0,0 +1 @@
+Sets animals and clonks on fire.
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Graphics.png
new file mode 100644
index 0000000..4a566f5
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Names.txt
new file mode 100644
index 0000000..f90356d
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Lavaschuss
+US:Lavashot
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c
new file mode 100644
index 0000000..40c23c1
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c
@@ -0,0 +1,41 @@
+/*-- Lavaschuss --*/
+
+#strict
+
+func Activate(pCaster,pRealcaster) {
+ var pClonk;
+ if(pRealcaster) pClonk=pRealcaster;
+ else pClonk=pCaster;
+
+ var iResult;
+ if (iResult = CheckEffect("Blast", 0, 125)) return(iResult!=-1 && RemoveObject());
+
+ // Zielen wenn möglich
+ if (pClonk->~DoSpellAim(this())) return(1);
+
+ // Schuss erzeugen
+ var obj = CreateObject(_LVS, 0, 0, GetOwner(pClonk));
+ obj->Launch(pClonk, GetDir(pClonk), GetX(pClonk), GetY(pClonk), 0);
+ Sound("Inflame");
+ RemoveObject();
+ return(1);
+}
+
+// Aktivierung nach Zielen (iAngle: -90=links; 0=oben; +90=rechts)
+public func ActivateAngle(object pCaller, int iAngle)
+ {
+ // Schuss erzeugen
+ var obj = CreateObject(_LVS, 0, 0, GetOwner(pCaller));
+ obj->Launch(pCaller,GetDir(pCaller), GetX(pCaller), GetY(pCaller), (900-iAngle*10));
+ Sound("Inflame");
+
+ // Objekt löschen
+ RemoveObject();
+ return(1);
+ }
+
+// Zielspruch (für Artefaktzauber)
+public func IsAimerSpell() { return(1); }
+
+public func GetSpellClass(object pMage) { return(FIRE); }
+public func GetSpellCombo(pMage) { return ("445"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig)
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/ActMap.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/ActMap.txt
new file mode 100644
index 0000000..12e0a38
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/ActMap.txt
@@ -0,0 +1,15 @@
+[Action]
+Name=Advance
+Procedure=NONE
+Delay=1
+NextAction=Advance
+StartCall=Advance
+
+[Action]
+Name=Connect
+Procedure=NONE
+Length=30
+Delay=1
+EndCall=Remove
+PhaseCall=Sparkle
+ \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DefCore.txt
new file mode 100644
index 0000000..662d677
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DefCore.txt
@@ -0,0 +1,11 @@
+[DefCore]
+id=_LVS
+Name=Lavaschuss
+Version=4,9,5
+Category=1
+Width=1
+Height=1
+Mass=1
+Picture=0,0,40,40
+Vertices=0
+ \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DescDE.txt
new file mode 100644
index 0000000..05309b0
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DescDE.txt
@@ -0,0 +1 @@
+Heiße Entladung.
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DescUS.txt
new file mode 100644
index 0000000..9d565c4
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/DescUS.txt
@@ -0,0 +1 @@
+Flaming discharge.
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Graphics.png
new file mode 100644
index 0000000..4a566f5
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark.c4d/Graphics.png
new file mode 100644
index 0000000..255f4f7
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark.c4d/Particle.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark.c4d/Particle.txt
new file mode 100644
index 0000000..77dc4e1
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark.c4d/Particle.txt
@@ -0,0 +1,15 @@
+[Particle]
+Name=LightningSpark
+MaxCount=10000
+InitFn=StdInit
+ExecFn=StdExec
+DrawFn=Std
+#CollisionFn=Stop
+Face=0,0,26,26,-13,-13
+Repeats=1
+GravityAcc=0
+AlphaFade=100
+#VertexCount=1
+#VertexY=-50
+Additive=1
+Attach=1
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark2.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark2.c4d/Graphics.png
new file mode 100644
index 0000000..255f4f7
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark2.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark2.c4d/Particle.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark2.c4d/Particle.txt
new file mode 100644
index 0000000..5242de2
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/LightningSpark2.c4d/Particle.txt
@@ -0,0 +1,15 @@
+[Particle]
+Name=LightningSpark2
+MaxCount=10000
+InitFn=StdInit
+ExecFn=StdExec
+DrawFn=Std
+#CollisionFn=Stop
+Face=0,0,26,26,-13,-13
+Repeats=1
+GravityAcc=0
+AlphaFade=10
+#VertexCount=1
+#VertexY=-50
+Additive=1
+Attach=1
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Names.txt
new file mode 100644
index 0000000..546785a
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Blitz
+US:Lightning
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Script.c
new file mode 100644
index 0000000..06c981f
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Shot.c4d/Script.c
@@ -0,0 +1,167 @@
+/*-- Lavaschuss --*/
+
+#strict
+
+/* Locals */
+
+local iAdvX, iVarX, // Bewegung / Abweichung X
+ iAdvY, iVarY; // Bewegung / Abweichung Y
+local pCaster;
+
+func Initialize() {
+ //Killtrace Effect
+ AddEffect("KillTraceHelper",this(),175,0,this(),GetID(this()));
+ }
+
+/* Aktivierung */
+
+public func Activate(iStartX, iStartY, iAdvanceX, iRandomX, iAdvanceY, iRandomY)
+{
+ // Startposition
+ AddVertex(iStartX,iStartY);
+ // Bewegungsverhalten
+ iAdvX=iAdvanceX; iVarX=iRandomX;
+ iAdvY=iAdvanceY; iVarY=iRandomY;
+ // Aktion setzen
+ SetAction("Advance");
+ // Geräusch
+ if (!Random(5)) Sound("Inflame");
+ return(1);
+}
+
+public func Launch(pClonk, iDir, iX, iY, iAngle)
+{
+ pCaster=pClonk;
+ var XDir;
+ XDir = Cos(iAngle, 10, 10);
+// if (iDir == DIR_Left()) XDir = -Cos(iAngle, 10, 10);
+// else (XDir = +Cos(iAngle, 10, 10));
+ Activate(iX, iY, XDir, 0, -Sin(iAngle, 10, 10));
+ return(1);
+}
+
+private func Timer()
+{
+
+ var i=0;
+ var pObject = FindObject(0,-2,-2,4,4,OCF_Inflammable);
+ if(pObject)
+ if(pObject != pCaster) {
+ //Nicht benötigt, macht Query Catch Blow
+ //if(GetEffect("KillSymbols",pObject)) SetKillSymbols(pObject,GetEffect("KillSymbols",pObject),DFLM,GetEffect("KillTraceHelper",this()));
+ Incinerate(pObject);
+ }
+ // Partikel-Effekt
+ while(i<GetVertexNum()-1)
+ {
+ DrawParticleLine ("LightningSpark", GetVertex(i)-GetX(), GetVertex(i, 1)-GetY(),
+ GetVertex(i+1)-GetX(), GetVertex(i+1,1)-GetY(), 6, 60, RGB(250,100,0));
+ DrawParticleLine ("LightningSpark", GetVertex(i)-GetX(), GetVertex(i, 1)-GetY(),
+ GetVertex(i+1)-GetX(), GetVertex(i+1,1)-GetY(), 3, 25, RGB(250,050,025));
+ i++;
+
+ //CreateParticle("PSpark", RandomX(-3,4), RandomX(-1,2), RandomX(-2,1), RandomX(-1,2), RandomX(10,20), RGB(250,020,010));
+ //CreateParticle("PSpark", RandomX(-3,3), RandomX(-2,2), RandomX(-2,2), RandomX(-2,2), RandomX(20,50), RGB(250,050,020));
+
+
+ }
+}
+
+/* Bewegung */
+
+private func Advance()
+{
+ // Einschlag
+ var iVtx = GetVertexNum()-1, iVtxX = GetVertex(iVtx, 0), iVtxY = GetVertex(iVtx, 1);
+ if (GBackSolid(iVtxX-GetX(), iVtxY-GetY() ))
+ return(Remove());
+
+ // Neuen Eckpunkt
+ if (!AddVertex( iVtxX+iAdvX+RandomX(-5,5), iVtxY+iAdvY+RandomX(-5,5)))
+ return(Remove());
+
+ SetPosition(GetVertex(GetVertexNum()), GetVertex(GetVertexNum(), 1));
+
+ // Im Wasser?
+ if (GBackLiquid(iVtxX-GetX(), iVtxY-GetY() ))
+ {
+ var obj;
+ // Alle Lebewesen in der Nähe bekommen was ab
+ while (obj = FindObject( 0, iVtxX-GetX()-400, iVtxY-GetY()-400, 800, 800, OCF_Alive(), 0,0, NoContainer(),obj ) )
+ {
+ if(!PathFree(iVtxX, iVtxY, GetX(obj), GetY(obj))) continue;
+ if(!GBackLiquid(GetX(obj)-GetX(), GetY(obj)-GetY())) continue;
+ obj->~LightningStrike();
+ Punch(obj, 20);
+ //Regelt Query Catch Blow
+ //if(GetEffect("KillSymbols",obj)) SetKillSymbols(obj,GetEffect("KillSymbols",obj),_LVS);
+
+
+ DrawParticleLine ("LightningSpark2", iVtxX-GetX(), iVtxY-GetY(),
+ GetX(obj)-GetX(), GetY(obj)-GetY(), 6, 60, RGB(255,010,055));
+ DrawParticleLine ("LightningSpark2", iVtxX-GetX(), iVtxY-GetY(),
+ GetX(obj)-GetX(), GetY(obj)-GetY(), 3, 25, RGB(250,050,055));
+ }
+ return(Remove());
+ }
+
+ // Objektanziehung
+ iVtx = GetVertexNum()-1; iVtxX = GetVertex(iVtx, 0); iVtxY = GetVertex(iVtx, 1);
+ var obj;
+ if (iVtx>7)
+ while (obj = FindObject( 0, iVtxX-GetX()-25, iVtxY-GetY()-25, 50, 50, OCF_Alive(), 0,0, NoContainer(),obj ) )
+ {
+ if(obj==pCaster) continue;
+ if(!PathFree(iVtxX, iVtxY, GetX(obj), GetY(obj))) continue;
+ Attraction(obj);
+ break;
+ }
+
+ Timer();
+ // Weiter
+ return();
+}
+
+/* Effekte */
+
+private func Sparkle()
+{
+ Timer();
+ var iVtx = GetVertexNum()-1, iVtxX = GetVertex(iVtx, 0), iVtxY = GetVertex(iVtx, 1);
+
+ return(1);
+}
+
+/* Anziehung */
+
+private func Attraction(obj)
+{
+ // Einschlag in Objekt
+ AddVertex( GetVertex(0,0,obj)+GetX(obj),
+ GetVertex(0,1,obj)+GetY(obj) );
+ obj->~LightningStrike();
+ SetAction("Connect");
+ Punch(obj, 20);
+ Incinerate(obj);
+ //Übernimmt QueryCatchBlow
+ //if(GetEffect("KillSymbols",obj)) SetKillSymbols(obj,GetEffect("KillSymbols",obj),_LVS,GetEffect("KillTraceHelper",this()));
+}
+
+/* Ende */
+
+private func Remove()
+{
+ var i=0;
+ // Nachleuchten
+ while(i<GetVertexNum()-1)
+ {
+ Explode(2,this());
+ DrawParticleLine ("Blast", GetVertex(i)-GetX(), GetVertex(i, 1)-GetY(),
+ GetVertex(i+1)-GetX(), GetVertex(i+1,1)-GetY(), 6, 60, RGB(255,100,000));
+ DrawParticleLine ("Blast", GetVertex(i)-GetX(), GetVertex(i, 1)-GetY(),
+ GetVertex(i+1)-GetX(), GetVertex(i+1,1)-GetY(), 3, 25, RGB(250,150,155));
+ i++;
+ }
+
+ RemoveObject();
+}
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Names.txt
new file mode 100644
index 0000000..20da19d
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Extrazauber
+US:Additional Spells
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt
new file mode 100644
index 0000000..6b23cdb
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt
@@ -0,0 +1,17 @@
+[DefCore]
+id=TSWB
+Version=4,9,8
+Name=Snowball
+Category=C4D_Object
+Width=6
+Height=6
+Offset=-3,-3
+Vertices=4
+VertexX=2,-2,-2,2
+VertexY=2,-2,2,-2
+VertexFriction=100,100,100,100
+Mass=17
+Components=IICE=2
+Picture=6,0,32,32
+Collectible=1
+Fragile=1
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt
new file mode 100644
index 0000000..c369562
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt
@@ -0,0 +1 @@
+Eine leichte aber weitreichende Wurfwaffe, die aus Schnee ausgegraben werden kann.
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt
new file mode 100644
index 0000000..81f5b9f
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt
@@ -0,0 +1 @@
+A light throwing weapon shaped from snow. \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.png
new file mode 100644
index 0000000..431e6ff
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt
new file mode 100644
index 0000000..cc0cd4f
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Schneeball
+US:Snowball
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c
new file mode 100644
index 0000000..aa90954
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c
@@ -0,0 +1,59 @@
+/*-- Schneeball --*/
+
+#strict
+#include ICE1
+
+protected func Hit() {
+ CastPXS("Snow", 100, 20);
+ RemoveObject();
+ return(1);
+}
+
+protected func Departure(thrower) {
+ var proc = GetProcedure(thrower);
+ var comd = GetComDir(thrower);
+ // Ablegen -> Abbruch
+ if (GetPlrDownDouble(GetOwner(thrower)))
+ // Nur Ablegen in der Luft mit Befehlsrichtung? Luftwurf erlauben!
+ if (proc ne "FLIGHT" || GetComDir(thrower) == COMD_None)
+ return(0);
+
+ // Ablegen im stehenden Hangeln -> Abbruch
+ if (proc eq "HANGLE" && comd == COMD_None)
+ return(0);
+
+ // Ablegen im Schwimmen / Klettern -> Abbruch
+ if (proc eq "SWIM" || proc eq "SCALE")
+ return(0);
+
+ // Wurfrichtung rausfinden
+ var dir;
+ // Nach Befehlsrichtung, wenn sinnvolle Werte vorhanden
+ if (comd == COMD_Left() || comd == COMD_Right()) {
+ if (comd == COMD_Left()) dir = -1;
+ if (comd == COMD_Right()) dir = +1;
+ }
+ // sonst nach Blickrichtung
+ else {
+ if (GetDir(thrower) == DIR_Left()) dir = -1;
+ else dir = +1;
+ }
+
+ // Wurfgeschwindigkeiten berechnen
+ var x_dir = dir * GetPhysical("Throw", 0, thrower)/1000 + GetXDir(thrower) / 3;
+ var y_dir = -30;
+
+ if (!x_dir) return(0);
+
+ // Position anpassen
+ SetPosition(GetX() + x_dir / 5, GetY() - 2 + GetYDir(thrower) / 2);
+
+ // Geschwindigkeit setzen
+ SetXDir(x_dir);
+ SetYDir(y_dir);
+
+ Sound("Arrow");
+}
+
+func IsAlchemContainer() { return(true); }
+func AlchemProcessTime() { return(100); }
diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c
index 0577e73..4b2fee5 100644
--- a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c
+++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c
@@ -3,7 +3,7 @@
#strict 2
static const
- SETTING_Deathmatch = 0, SETTING_Extinguisher = 1, SETTING_FriendlyPushing = 2, SETTING_RotateInJump = 3,
+ SETTING_Deathmatch = 0, SETTING_SuddenDeath = 1, SETTING_Extinguisher = 2, SETTING_RotateInJump = 3,
SETTING_RelaunchesInc = 4, SETTING_RelaunchesDec = 5,
SETTING_DeathmatchScoreInc = 6, SETTING_DeathmatchScoreDec = 7,
SETTING_Ambience = 8;
@@ -13,7 +13,7 @@ local clonk, setupPlayer;
// Selected values
local section, mode;
-local extinguisherEnabled, friendlyPushingEnabled, rotateInJumpEnabled;
+local extinguisherEnabled, suddendeathEnabled, rotateInJumpEnabled;
local ambienceEnabled;
local numRelaunches;
local deathmatchEnabled, deathmatchWinScore;
@@ -28,10 +28,11 @@ protected func Initialize()
section = Sections[0];
Modes = [
- [MODE_Classic, "$ModeClassic$", ROCK],
- [MODE_SuddenDeath, "$ModeSuddenDeath$", SDDT],
- [MODE_Magic, "$ModeMagic$", SMGC],
- [MODE_Apocalyptic, "$ModeApocalyptic$", APCE]];
+ [MODE_Classic, "$ModeClassic$", CLSC],
+ [MODE_Magic, "$ModeMagic$", MLPG],
+ [MODE_Knightly, "$ModeKnightly$", MKNI],
+ [MODE_Apocalyptic, "$ModeApocalyptic$", APCE],
+ [MODE_Festive, "$ModeFestive$", FSTV]];
}
private func ShowSetup()
@@ -70,13 +71,12 @@ private func ShowModeMenu()
CheckPreselect(m[0] == mode, menuItemIndex++);
}
- clonk->AddMenuItem("$Back$", "ShowSectionMenu()", ROCK);
+ clonk->AddMenuItem("$Back$", "ShowSectionMenu()", SBCK);
}
private func SelectMode(int selectedMode)
{
mode = selectedMode;
- if (mode == MODE_SuddenDeath) deathmatchEnabled = false;
ShowMessage();
ShowSettingsMenu();
@@ -89,20 +89,17 @@ private func ShowSettingsMenu(bool preselect, int selectedSetting)
var menuItemIndex = 0;
// Deathmatch entry
- if (mode != MODE_SuddenDeath)
- {
- AddOptionMenuItem(GetName(0, DTHM), deathmatchEnabled, "SelectSetting(SETTING_Deathmatch)", DTHM);
- CheckPreselect(preselect && selectedSetting == SETTING_Deathmatch, menuItemIndex++);
- }
-
+ AddOptionMenuItem(GetName(0, DTHM), deathmatchEnabled, "SelectSetting(SETTING_Deathmatch)", DTHM);
+ CheckPreselect(preselect && selectedSetting == SETTING_Deathmatch, menuItemIndex++);
+
+ // Sudden Death entry
+ AddOptionMenuItem(GetName(0, SDDT), suddendeathEnabled, "SelectSetting(SETTING_SuddenDeath)", SDDT);
+ CheckPreselect(preselect && selectedSetting == SETTING_SuddenDeath, menuItemIndex++);
+
// Extinguisher entry
AddOptionMenuItem(GetName(0, _ETG), extinguisherEnabled, "SelectSetting(SETTING_Extinguisher)", _ETG);
CheckPreselect(preselect && selectedSetting == SETTING_Extinguisher, menuItemIndex++);
-
- // "Friendly Pushing" entry
- AddOptionMenuItem(GetName(0, FYPG), friendlyPushingEnabled, "SelectSetting(SETTING_FriendlyPushing)", FYPG);
- CheckPreselect(preselect && selectedSetting == SETTING_FriendlyPushing, menuItemIndex++);
-
+
// "Turn in jump" entry
AddOptionMenuItem(GetName(0, RIJP), rotateInJumpEnabled, "SelectSetting(SETTING_RotateInJump)", RIJP);
CheckPreselect(preselect && selectedSetting == SETTING_RotateInJump, menuItemIndex++);
@@ -113,22 +110,22 @@ private func ShowSettingsMenu(bool preselect, int selectedSetting)
if (!deathmatchEnabled)
{
- clonk->AddMenuItem("$Relaunches$ +", "SelectSetting(SETTING_RelaunchesInc)", SKUL);
+ clonk->AddMenuItem("$Relaunches$ +", "SelectSetting(SETTING_RelaunchesInc)", SREL);
CheckPreselect(preselect && selectedSetting == SETTING_RelaunchesInc, menuItemIndex++);
- clonk->AddMenuItem("$Relaunches$ -", "SelectSetting(SETTING_RelaunchesDec)", SKUL);
+ clonk->AddMenuItem("$Relaunches$ -", "SelectSetting(SETTING_RelaunchesDec)", SREL);
CheckPreselect(preselect && selectedSetting == SETTING_RelaunchesDec, menuItemIndex++);
}
else
{
- clonk->AddMenuItem("$Kills$ +", "SelectSetting(SETTING_DeathmatchScoreInc)", SWOR);
+ clonk->AddMenuItem("$Kills$ +", "SelectSetting(SETTING_DeathmatchScoreInc)", SKIL);
CheckPreselect(preselect && selectedSetting == SETTING_DeathmatchScoreInc, menuItemIndex++);
- clonk->AddMenuItem("$Kills$ -", "SelectSetting(SETTING_DeathmatchScoreDec)", SWOR);
+ clonk->AddMenuItem("$Kills$ -", "SelectSetting(SETTING_DeathmatchScoreDec)", SKIL);
CheckPreselect(preselect && selectedSetting == SETTING_DeathmatchScoreDec, menuItemIndex++);
}
- clonk->AddMenuItem("$Done$", "SetupDone()", GOLD);
+ clonk->AddMenuItem("$Done$", "SetupDone()", SDNE);
CheckPreselect(!preselect, menuItemIndex++);
- clonk->AddMenuItem("$Back$", "ShowModeMenu()", ROCK);
+ clonk->AddMenuItem("$Back$", "ShowModeMenu()", SBCK);
}
private func SelectSetting(int selectedSetting)
@@ -137,13 +134,13 @@ private func SelectSetting(int selectedSetting)
{
deathmatchEnabled = !deathmatchEnabled;
}
- else if (selectedSetting == SETTING_Extinguisher)
+ else if (selectedSetting == SETTING_SuddenDeath)
{
- extinguisherEnabled = !extinguisherEnabled;
+ suddendeathEnabled = !suddendeathEnabled;
}
- else if (selectedSetting == SETTING_FriendlyPushing)
+ else if (selectedSetting == SETTING_Extinguisher)
{
- friendlyPushingEnabled = !friendlyPushingEnabled;
+ extinguisherEnabled = !extinguisherEnabled;
}
else if (selectedSetting == SETTING_RotateInJump)
{
@@ -212,7 +209,7 @@ private func ShowMessage() { Message("@%s", 0, GetMessage()); }
private func GetMessage()
{
- var msgSection = Format("$Landscape$: %s", GetName(0, section));
+ var msgSection = Format("$Landscape$: {{%i}} %s", section, GetName(0, section));
var msgMode;
for (var m in Modes)
@@ -227,17 +224,17 @@ private func GetMessage()
var msgWinScore;
if (!deathmatchEnabled)
{
- msgWinScore = Format("{{SKUL}} $Relaunches$: %d", numRelaunches);
+ msgWinScore = Format("{{SREL}} $Relaunches$: %d", numRelaunches);
}
else
{
- msgWinScore = Format("{{SWOR}} %s: %d $Kills$", GetName(0, DTHM), deathmatchWinScore);
+ msgWinScore = Format("{{SKIL}} %s: %d $Kills$", GetName(0, DTHM), deathmatchWinScore);
}
var msgExtinguisher = Format("{{_ETG}} %s: %s", GetName(0, _ETG), IIf(extinguisherEnabled, "$Enabled$", "$Disabled$"));
- var msgFriendlyPushing = Format("{{FYPG}} %s: %s", GetName(0, FYPG), IIf(friendlyPushingEnabled, "$Enabled$", "$Disabled$"));
+ var msgSuddenDeath = Format("{{SDDT}} %s: %s", GetName(0, SDDT), IIf(suddendeathEnabled, "$Enabled$", "$Disabled$"));
var msgRotateInJump = Format("{{RIJP}} %s: %s", GetName(0, RIJP), IIf(rotateInJumpEnabled, "$Enabled$", "$Disabled$"));
var msgAmbience = Format("{{SABC}} $Ambience$: %s", IIf(ambienceEnabled, "$Enabled$", "$Disabled$"));
- return Format("%s|%s|%s|%s|%s|%s|%s", msgSection, msgMode, msgWinScore, msgExtinguisher, msgFriendlyPushing, msgRotateInJump, msgAmbience);
+ return Format("%s|%s|%s|%s|%s|%s|%s", msgSection, msgMode, msgWinScore, msgExtinguisher, msgSuddenDeath, msgRotateInJump, msgAmbience);
} \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblDE.txt b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblDE.txt
index bd28a61..bca11b8 100644
--- a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblDE.txt
+++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblDE.txt
@@ -1,13 +1,13 @@
-ModeClassic=Klassisches Schubsen
-ModeSuddenDeath=<c ffff00>Sudden Death</c>
-ModeMagic=<c 0000ff>Magisches Schubsen</c>
-ModeApocalyptic=<c ff0000>Apokalyptisches Schubsen</c>
+ModeClassic=<c e6b800>Klassisch</c>
+ModeMagic=<c 4700b2>Magisch</c>
+ModeKnightly=<c 99ff66>Mittelalterlich</c>
+ModeApocalyptic=<c b20000>Apokalyptisch</c>
+ModeFestive=<c f0ffff>Winterlich</c>
Back=Zurück
Done=Fertig
Relaunches=Relaunches
Kills=Kills
-SectionClassic=Klassisch
-Landscape=Landschaft
+Landscape=Sektion
Mode=Modus
Enabled=Aktiviert
Disabled=Deaktiviert
diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt
index cd1f9c1..fc24d29 100644
--- a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt
+++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt
@@ -1,13 +1,13 @@
-ModeClassic=Classic Pushing
-ModeSuddenDeath=<c ffff00>Sudden Death</c>
-ModeMagic=<c 0000ff>Magical Pushing</c>
-ModeApocalyptic=<c ff0000>Apocalyptical Pushing</c>
+ModeClassic=<c e6b800>Classic</c>
+ModeMagic=<c 4700b2>Magical</c>
+ModeKnightly=<c 99ff66>Medieval</c>
+ModeApocalyptic=<c b20000>Apocalyptical</c>
+ModeFestive=<c f0ffff >Winterly</c>
Back=Back
Done=Done
Relaunches=Relaunches
Kills=Kills
-SectionClassic=Classic
-Landscape=Landscape
+Landscape=Section
Mode=Mode
Enabled=Enabled
Disabled=Disabled
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/DefCore.txt
new file mode 100644
index 0000000..a787540
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/DefCore.txt
@@ -0,0 +1,6 @@
+[DefCore]
+id=SBCK
+Name=SymbolBack
+Version=4,9,5
+Category=C4D_StaticBack
+Picture=0,0,64,64
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/Graphics.png
new file mode 100644
index 0000000..6962715
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/Names.txt
new file mode 100644
index 0000000..dac0462
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Back.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Zurück
+US:Back
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/DefCore.txt
new file mode 100644
index 0000000..8be962d
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/DefCore.txt
@@ -0,0 +1,6 @@
+[DefCore]
+id=SDNE
+Name=SymbolDone
+Version=4,9,5
+Category=C4D_StaticBack
+Picture=0,0,64,64
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/Graphics.png
new file mode 100644
index 0000000..6b1e72c
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/Names.txt
new file mode 100644
index 0000000..c269c1e
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Done.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Fertig
+US:Done
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/DefCore.txt
new file mode 100644
index 0000000..5d0200a
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/DefCore.txt
@@ -0,0 +1,6 @@
+[DefCore]
+id=SKIL
+Name=SymbolForKill
+Version=4,9,5
+Category=C4D_StaticBack
+Picture=0,0,64,64
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/Graphics.png
new file mode 100644
index 0000000..ce75ea1
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/Names.txt
new file mode 100644
index 0000000..261742e
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Kill.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Relaunch
+US:Relaunch
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/DefCore.txt
new file mode 100644
index 0000000..de0a9a1
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/DefCore.txt
@@ -0,0 +1,6 @@
+[DefCore]
+id=SREL
+Name=SymbolForRelaunch
+Version=4,9,5
+Category=C4D_StaticBack
+Picture=0,0,64,64
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/Graphics.png
new file mode 100644
index 0000000..70c091a
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/Names.txt
new file mode 100644
index 0000000..261742e
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Relaunch.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Relaunch
+US:Relaunch
diff --git a/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/DefCore.txt
index 8668e4b..8668e4b 100644
--- a/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/DefCore.txt
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/DefCore.txt
diff --git a/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/Graphics.png
index bcce561..bcce561 100644
--- a/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Graphics.png
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/Names.txt
index cdbcf76..cdbcf76 100644
--- a/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Names.txt
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/Names.txt