summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.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/Deflection.c4d
parent80b15646d73587f4e15a2897314692b58aa1a47f (diff)
downloadtempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.tar.gz
tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.zip
r0.921
Diffstat (limited to 'TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d')
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DefCore.txt8
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Graphics.pngbin0 -> 8232 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Script.c112
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblUS.txt1
8 files changed, 126 insertions, 0 deletions
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DefCore.txt
new file mode 100644
index 0000000..0b8f6bd
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DefCore.txt
@@ -0,0 +1,8 @@
+[DefCore]
+id=MDFL
+Name=MagicDeflection
+Category=1
+Picture=0,0,64,64
+Version=4,9,5,4
+Value=32
+Components=IROC=5;IMUS=1; \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescDE.txt
new file mode 100644
index 0000000..e0d86c7
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescDE.txt
@@ -0,0 +1 @@
+Wirft Objekte zurück, die den Clonk treffen würden. \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescUS.txt
new file mode 100644
index 0000000..c07f55a
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescUS.txt
@@ -0,0 +1 @@
+Throws objects back, which would hit the clonk.
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Graphics.png
new file mode 100644
index 0000000..bb77e89
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Names.txt
new file mode 100644
index 0000000..35a510e
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Zurückwerfen
+US:Deflection
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Script.c
new file mode 100644
index 0000000..b3e4179
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Script.c
@@ -0,0 +1,112 @@
+/* Zurückwerfen */
+
+#strict 2
+
+func Activate(pCaster,pRealcaster)
+{
+ var pClonk=pRealcaster;
+ if(!pClonk) pClonk=pCaster;
+
+ // Auswählen wenn möglich
+ if (pCaster->~DoSpellSelect(this,300)) return 1;
+
+ // Clonk kann nicht auswählen: Clonk bekommst selbst ein Schild
+ if (SelectorTarget(pClonk))
+ return ActivateTarget(pClonk, pClonk);
+
+ // ansonsten geth nich
+ RemoveObject();
+ return 0;
+}
+
+public func ActivateTarget(object pCaller, object pTarget)
+{
+ // Effekt geben
+ AddEffect("DeflectionPSpell",pTarget,250,2,0,GetID());
+ // Objekt löschen
+ return RemoveObject();
+}
+
+public func SelectorTarget(object pTarget)
+{
+ // nur außerhalb von Gebäuden
+ if(Contained(pTarget)) return;
+ // muss ein Mannschaftsmitglied sein
+ if(!(GetOCF(pTarget)&OCF_CrewMember)) return;
+ // muss verbündet sein oder NTMG muss aktiviert sein
+ if(Hostile(GetOwner(),GetOwner(pTarget)) && !ObjectCount(NTMG)) return;
+ // sichtbar
+ if(!Visible(GetOwner(),pTarget)) return;
+ // darf noch keinen Effekt haben
+ if(GetEffect("DeflectionPSpell", pTarget)) return;
+ return 1;
+}
+
+func FxDeflectionPSpellStart(pClonk, iEffectNumber, iTemp)
+{
+ if(iTemp) return;
+ // Zeit setzen
+ EffectVar(0,pClonk,iEffectNumber)+=450;
+}
+
+func FxDeflectionPSpellTimer(pClonk, iEffectNumber, iEffectTime)
+{
+ // Zeit um
+ if(!EffectVar(0,pClonk,iEffectNumber)--) return -1;
+ // Nicht in Gebäuden
+ if(Contained(pClonk)) return;
+ //Funken an der benötigten Stelle
+ for(var pObj in FindObjects(Find_OCF(OCF_HitSpeed1),Find_Layer(GetObjectLayer()), Find_NoContainer(), Find_Category(C4D_Object), Find_Distance(21, GetX(pClonk), GetY(pClonk)), Find_Not(Find_Distance(11, GetX(pClonk), GetY(pClonk)))))
+ {
+ // Wenn das Objekt auf den Clonk zufliegt
+ if( (GetXDir(pObj)<0) == (GetX(pObj)>GetX(pClonk)) || (GetYDir(pObj)<0) == (GetY(pObj)>GetY(pClonk)))
+ {
+ // Eigenen Stab ignorieren
+ if(GetEffect("StaffFlight", pObj))
+ if(EffectVar(0, pObj, GetEffect("StaffFlight", pObj))==pClonk)
+ continue;
+ if(Abs(GetXDir(pObj))<5) SetXDir(GetXDir(pObj)+RandomX(-10,10), pObj);
+ if(Abs(GetYDir(pObj))<5) SetYDir(3, pObj);
+ SetSpeed(-GetXDir(pObj),-GetYDir(pObj), pObj);
+ CreateParticle("NoGravSpark", AbsX(GetX(pObj)), AbsY(GetY(pObj)), 0, 0, 80, RGB(80,50,50));
+ if(!GetEffect("IntDeflected", pObj))
+ EffectVar(0,pClonk,iEffectNumber) = Max(EffectVar(0,pClonk,iEffectNumber)-50,0);
+ AddEffect("IntDeflected", pObj, 1, 20);
+ Sound("Rip", 0, pObj);
+ }
+ }
+ // Partikel Kreiseffekt
+ if(Mod(iEffectTime,4)) return;
+ var iAngle = iEffectTime*10;
+ while(iAngle>=360) iAngle -= 360;
+ var px= Sin(iAngle, 15);
+ var py= Cos(iAngle, 15);
+ CreateParticle("NoGravSpark", px+GetX(pClonk), py+GetY(pClonk), 0, 0, 50, RGB(50,80,50), pClonk);
+ CreateParticle("NoGravSpark",-py+GetX(pClonk), px+GetY(pClonk), 0, 0, 50, RGB(50,50,80), pClonk);
+ CreateParticle("NoGravSpark",-px+GetX(pClonk),-py+GetY(pClonk), 0, 0, 50, RGB(50,80,50), pClonk);
+ CreateParticle("NoGravSpark", py+GetX(pClonk),-px+GetY(pClonk), 0, 0, 50, RGB(50,50,80), pClonk);
+ return 1;
+}
+
+private func FxDeflectionPSpellEffect(string szNewEffectName, object pTarget, int iNumber)
+{
+ // Andere Effekte aufnehmen
+ if(szNewEffectName == "DeflectionPSpell")
+ {
+ if(EffectVar(0,pTarget,iNumber)>50) return -1;
+ return -2;
+ }
+}
+
+private func FxDeflectionPSpellAdd(object pTarget, int iNumber, string szNewEffectName, int iNewEffectTimer, int iChange0, int iChange1, int iChange2, int iTime) {
+ // Effekt übernehmen
+ EffectVar(0,pTarget,iNumber) += 300;
+ if(EffectVar(0,pTarget,iNumber)> 600) EffectVar(0,pTarget,iNumber)=600;
+}
+
+protected func FxDeflectionPSpellInfo() { return "{{MDFL}} $SpellInfo$"; }
+
+/* Zaubercombo */
+
+public func GetSpellStaff() { return SMAR; }
+public func GetSpellStaffCombo() { return ("56"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig)
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblDE.txt
new file mode 100644
index 0000000..4491f18
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblDE.txt
@@ -0,0 +1 @@
+SpellInfo=Objekte werden zurückgeworfen.
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblUS.txt
new file mode 100644
index 0000000..211193a
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblUS.txt
@@ -0,0 +1 @@
+SpellInfo=Objects will be reflected.