summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d
diff options
context:
space:
mode:
Diffstat (limited to 'TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d')
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DefCore.txt9
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Graphics.pngbin0 -> 9129 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/ActMap.txt29
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DefCore.txt18
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Graphics.pngbin0 -> 6637 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsA.pngbin0 -> 6637 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsB.pngbin0 -> 6637 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsC.pngbin0 -> 6637 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsD.pngbin0 -> 6637 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsMetl.pngbin0 -> 10340 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Overlay.pngbin0 -> 4284 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayA.pngbin0 -> 10404 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayB.pngbin0 -> 10707 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayC.pngbin0 -> 11362 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayD.pngbin0 -> 11638 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayMetl.pngbin0 -> 4493 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Script.c109
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Script.c105
24 files changed, 278 insertions, 0 deletions
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DefCore.txt
new file mode 100644
index 0000000..8545ace
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DefCore.txt
@@ -0,0 +1,9 @@
+[DefCore]
+id=MGCY
+Version=4,9,8
+Name=MagicCrystalSpikes
+Category=C4D_Magic
+Width=1
+Height=1
+Value=25
+Picture=0,0,64,64
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescDE.txt
new file mode 100644
index 0000000..138b9b2
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescDE.txt
@@ -0,0 +1 @@
+Aus dem Boden vor dem Zauberer stoßen Kristallstacheln und schädigen Lebewesen, welche sich über einem Kristall befinden. Außerdem erhalten Lebewesen kontinuierlich schaden, wenn sie neben einem solchen Kristall verweilen.
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescUS.txt
new file mode 100644
index 0000000..a37ddff
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescUS.txt
@@ -0,0 +1 @@
+Summons numerous crystal spikes which damage entities on impact, while also dealing damage to any living clonks or animals standing next to them.
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Graphics.png
new file mode 100644
index 0000000..de7ae74
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/ActMap.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/ActMap.txt
new file mode 100644
index 0000000..5611746
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/ActMap.txt
@@ -0,0 +1,29 @@
+[Action]
+Name=Bohr
+Procedure=NONE
+Length=10
+Delay=2
+Facet=0,0,24,58
+NextAction=Exist
+PhaseCall=StossEffect
+Sound=Earthquake
+EndCall=SoundBamm
+
+[Action]
+Name=Exist
+Procedure=NONE
+Length=1
+Delay=1
+Facet=216,0,24,58
+NextAction=Exist
+EndCall=ExistTimer
+Sound=VolcanoCast
+
+[Action]
+Name=Remove
+Procedure=NONE
+Length=10
+Delay=4
+Facet=0,0,24,58
+EndCall=RemoveMe
+Reverse=1
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DefCore.txt
new file mode 100644
index 0000000..024172a
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DefCore.txt
@@ -0,0 +1,18 @@
+[DefCore]
+id=QBCY
+Name=BigCrystall
+Version=4,9,5
+Category=4
+Width=24
+Height=56
+Offset=-12,-28
+Mass=100
+Components=CRYS=4;
+Picture=0,56,64,64
+Vertices=3
+VertexY=-28,28,28
+VertexX=0,6,-6
+VertexFriction=50,100,100
+ColorByOwner=1
+StretchGrowth=1
+IncompleteActivity=1 \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescDE.txt
new file mode 100644
index 0000000..34ab750
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescDE.txt
@@ -0,0 +1 @@
+Wertvoll doch auch äußerst Spitz. \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescUS.txt
new file mode 100644
index 0000000..1dfbcf7
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescUS.txt
@@ -0,0 +1 @@
+A new object definition. \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Graphics.png
new file mode 100644
index 0000000..f490a20
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsA.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsA.png
new file mode 100644
index 0000000..f490a20
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsA.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsB.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsB.png
new file mode 100644
index 0000000..f490a20
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsB.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsC.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsC.png
new file mode 100644
index 0000000..f490a20
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsC.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsD.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsD.png
new file mode 100644
index 0000000..f490a20
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsD.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsMetl.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsMetl.png
new file mode 100644
index 0000000..14a097b
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsMetl.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Names.txt
new file mode 100644
index 0000000..09888b0
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Kristallstachel
+US:Crystal Spike
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Overlay.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Overlay.png
new file mode 100644
index 0000000..a7abc6d
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Overlay.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayA.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayA.png
new file mode 100644
index 0000000..8358372
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayA.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayB.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayB.png
new file mode 100644
index 0000000..57755c3
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayB.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayC.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayC.png
new file mode 100644
index 0000000..1aa4791
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayC.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayD.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayD.png
new file mode 100644
index 0000000..3afb2bf
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayD.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayMetl.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayMetl.png
new file mode 100644
index 0000000..5a3e193
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayMetl.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Script.c
new file mode 100644
index 0000000..1d25b23
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Script.c
@@ -0,0 +1,109 @@
+/*-- Crystal Spike --*/
+
+#strict
+
+local iMaxTime;
+
+local iExtra;
+
+public func IsBigCrystal(){ return(1); }
+
+func Initialize() {
+ var Randi = RandomX(1,4);
+ if(Randi == 1) SetGraphics("A",this(), GetID(), 1,GFXOV_MODE_ExtraGraphics);
+ if(Randi == 2) SetGraphics("B",this(), GetID(), 1,GFXOV_MODE_ExtraGraphics);
+ if(Randi == 3) SetGraphics("C",this(), GetID(), 1,GFXOV_MODE_ExtraGraphics);
+ if(Randi == 4) SetGraphics("D",this(), GetID(), 1,GFXOV_MODE_ExtraGraphics);
+ SetAction("Bohr");
+ return(1);
+}
+public func Set(inMaxTime, int iMetl){
+ iMaxTime = inMaxTime;
+ if(iMetl){ iExtra = iMetl;
+ SetGraphics("Metl",this(), GetID(), 1,GFXOV_MODE_ExtraGraphics);
+ }
+ return(1);
+}
+
+func StossEffect() {
+for(var pClonk in FindObjects(Find_Distance(20), Find_OCF(OCF_Living), Find_NoContainer ())){
+ if(GetAlive(pClonk)) {
+ if(!GetEffect("NoCrystallAttack",pClonk))
+ HitObject(pClonk);
+ }
+ }
+for(var pDing in FindObjects(Find_Distance(30), Find_Category(C4D_Object), Find_NoContainer ())){
+ HitDing(pDing);
+ }
+
+if(!Random(1)) {CreateParticle("Smoke",0,+21,RandomX(-4,4),-5,80,RGB(120,120,120)); }
+if(!Random(2)) {
+var ebk = CreateObject(1EBK,0,+21,GetOwner());
+if(ebk) SetSpeed(RandomX(-5,5),RandomX(-40,-80),ebk);
+ }
+}
+
+func ExistTimer() {
+if(!Random(20)) Sound("Sparkle");
+if(!Random(4)) {
+CreateParticle("NoGravSpark",RandomX(-8,8),RandomX(-28,26),0,-5,RandomX(10,30),GetTeamColor(GetPlayerTeam(GetOwner())));
+ }
+
+for(var pClonk in FindObjects(Find_Distance(40), Find_OCF(OCF_Living), Find_NoContainer ())){
+ if(GetAlive(pClonk)) if(!Random(20)) EffectObject(pClonk);
+ }
+
+if(iMaxTime > 0){
+if(GetActTime() > iMaxTime) SetAction("Remove");
+ }
+}
+
+global func CreateBigCrystal(int iX,int iY, int iCon, int iMTime, int iOwner) { // Erstell an der Position ein großen Kristall
+var pCrys = CreateObject(QBCY,iX,iY,iOwner);
+pCrys->Set(iMTime);
+SetCon(iCon,pCrys);
+return(pCrys);
+}
+func HitObject(object pClonk) {
+if(!pClonk) return(0);
+Sound("Crystal2",0,pClonk);
+if(!FindObject(NTMG)){
+ if(!Hostile(GetOwner(),GetOwner(pClonk))) return(0);
+ }
+if(GetAction(pClonk) ne "Tumble"){
+DoEnergy(RandomX(-10,-20)+iExtra,pClonk);
+Fling(pClonk, RandomX(-4,4), RandomX(-5,-9));
+ AddEffect("NoCrystallAttack",pClonk,100,1,pClonk);
+ }
+}
+func HitDing(object pDing) {
+if(GetID(pDing) == QBCY) return(0);
+if(pDing){ SetSpeed(RandomX(-4,4),RandomX(-20,-40),pDing);
+pDing->~Hit(); }
+}
+
+func EffectObject(object pClonk) {
+if(!FindObject(NTMG)){
+ if(!Hostile(GetOwner(),GetOwner(pClonk))) return(0);
+ }
+CreateParticle("NoGravSpark",GetX()-GetX(pClonk)+RandomX(-8,8),GetY()-GetY()+RandomX(-12,12),0,-5,RandomX(10,20),GetColorDw (this()));
+if(!Random(2))
+DoEnergy(-7,pClonk);
+}
+func RemoveMe(){
+RemoveObject(this());
+}
+func SoundBamm(){
+ Sound("RockBreak*");
+ Sound("Blast2",0,0,50);
+for(var i = 0; i < 5; i++){
+var ebk = CreateObject(1EBK,0,+21,GetOwner());
+if(ebk) SetSpeed(RandomX(-5,5),RandomX(-40,-80),ebk);
+ }
+}
+global func FxNoCrystallAttackTimer(object pTarget, int iIndex, int iTime)
+{
+ if(!pTarget) return (false);
+ if(iTime >= 20) return (-1);
+ return (true);
+} \ No newline at end of file
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Names.txt
new file mode 100644
index 0000000..10f34d9
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Kristallstachel
+US:Crystal Spikes
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Script.c
new file mode 100644
index 0000000..1da9bb2
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Script.c
@@ -0,0 +1,105 @@
+/* Crystal Spikes */
+
+#strict 2
+
+public func Activate(pCaster, pRealCaster)
+{
+ if(pRealCaster) pCaster = pRealCaster;
+ Sound("Magic1");
+
+ // Effekt prüfen
+ var iResult;
+ if (iResult = CheckEffect("CrystallSpikesNSpell", 0, 75)) return(iResult!=-1 && RemoveObject());
+
+ // Dinger erzeugen
+ var iCount = RandomX(4,7);
+ var sum = 0;
+
+ for(var i = 0; i < iCount; i++)
+ {
+ sum += PlaceCrystal(5 * (i - i/2), -5, pCaster);
+ }
+ if(!sum) return 0;
+
+ // Fertig; Zauber entfernen
+ RemoveObject();
+ return 1;
+}
+
+protected func PlaceCrystal(int startx, int starty, object pCaster)
+{
+ var dir = 2 * GetDir(pCaster) - 1;
+ startx += dir * (!!Random(3) * 50 + RandomX(0, 125));
+
+ var solid = false;
+ var deltax;
+ for (deltax = 0; deltax < 100 && !solid; deltax += (10 * RandomX(1, 3)))
+ {
+ for (var y = 0; GetY() + y < LandscapeHeight() && !solid; y += 10)
+ {
+ if (GBackSolid(startx + dir * deltax, y)) solid = true;
+ }
+ }
+ var x = startx + dir * deltax;
+ if (!solid || GetX() + startx >= LandscapeWidth() || GetX() + startx + LandscapeWidth() < 0) return;
+
+ var y;
+ solid = false;
+ var free = false;
+ var upy, downy;
+ for (y = starty; GetY() + y > 0 && !free; --y)
+ {
+ if (!solid)
+ {
+ if (GBackSolid(x, y)) solid = true;
+ }
+ else
+ {
+ if (!GBackSolid(x, y))
+ {
+ free = true;
+ upy = ++y;
+ }
+ }
+ }
+ var down = Random(2);
+ if (!free || down)
+ {
+ solid = false;
+ free = false;
+ for (y = starty; GetY() + y < LandscapeWidth() && !solid; ++y)
+ {
+ if (!free)
+ {
+ if (!GBackSolid(x, y)) free = true;
+ }
+ else
+ {
+ if (GBackSolid(x, y))
+ {
+ solid = true;
+ }
+ }
+ }
+ if (!solid)
+ {
+ if (!upy)
+ {
+ return;
+ }
+ else y = upy;
+ }
+ else
+ {
+ downy = y;
+ }
+ }
+ if (upy && downy && down) y = downy;
+
+ CreateBigCrystal(x, y + 3, RandomX(50, 100), RandomX(100, 200), GetOwner());
+ return 1;
+}
+
+public func GetSpellClass(object pMage) { return(EART); }
+public func GetSpellCombo(pMage) { return ("444"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig)
+