summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s
diff options
context:
space:
mode:
Diffstat (limited to 'TemplePushing.c4s')
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/DefCore.txt10
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/DescDE.txt3
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/DescUS.txt4
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/Graphics.pngbin0 -> 1281 bytes
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Graphics.pngbin0 -> 21542 bytes
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Particle.txt14
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Graphics.pngbin0 -> 21542 bytes
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Particle.txt13
-rw-r--r--TemplePushing.c4s/Environment.c4d/Snow.c4d/Script.c21
-rw-r--r--TemplePushing.c4s/Icon.pngbin9955 -> 10297 bytes
-rw-r--r--TemplePushing.c4s/LobbySky.jpgbin61121 -> 0 bytes
-rw-r--r--TemplePushing.c4s/Material.c4g/Fleckig.pngbin712 -> 0 bytes
-rw-r--r--TemplePushing.c4s/Material.c4g/TexMap.txt2
-rw-r--r--TemplePushing.c4s/Material.c4g/WallStuff.pngbin33673 -> 0 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c69
-rw-r--r--TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c6
-rw-r--r--TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DefCore.txt7
-rw-r--r--TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Graphics.pngbin0 -> 135649 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Overlay.pngbin0 -> 106911 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Script.c12
-rw-r--r--TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Title.pngbin0 -> 5684 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/PlayerJoin.wavbin0 -> 37432 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DefCore.txt (renamed from TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt)4
-rw-r--r--TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescDE.txt (renamed from TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt)0
-rw-r--r--TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescUS.txt (renamed from TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt)0
-rw-r--r--TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Graphics.png (renamed from TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.png)bin2493 -> 2493 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Names.txt (renamed from TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt)0
-rw-r--r--TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Script.c (renamed from TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c)0
-rw-r--r--TemplePushing.c4s/Scenario.txt5
-rw-r--r--TemplePushing.c4s/Script.c58
-rw-r--r--TemplePushing.c4s/SectClassic.c4g/Scenarios.txt2
-rw-r--r--TemplePushing.c4s/SectLiquidTemple.c4g/Map.bmpbin11442 -> 11442 bytes
-rw-r--r--TemplePushing.c4s/SectLobby.c4g/Map.bmpbin3898 -> 3898 bytes
-rw-r--r--TemplePushing.c4s/SectLobby.c4g/Scenario.txt3
-rw-r--r--TemplePushing.c4s/Sections.c4d/Ambience.wavbin81765 -> 161065 bytes
-rw-r--r--TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wavbin47315 -> 32040 bytes
-rw-r--r--TemplePushing.c4s/Sections.c4d/FestiveAmbience.wavbin0 -> 132335 bytes
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c27
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectCloudTemple.c4d/Script.c18
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectLiquidTemple.c4d/Script.c38
-rw-r--r--TemplePushing.c4s/System.c4g/Airblast.c84
-rw-r--r--TemplePushing.c4s/System.c4g/Arrowpack.c3
-rw-r--r--TemplePushing.c4s/System.c4g/Curses.c30
-rw-r--r--TemplePushing.c4s/System.c4g/MagicLightning.c24
-rw-r--r--TemplePushing.c4s/System.c4g/Scroll.c4
-rw-r--r--TemplePushing.c4s/System.c4g/ShootInventory.c2
-rw-r--r--TemplePushing.c4s/System.c4g/Sun.c47
-rw-r--r--TemplePushing.c4s/System.c4g/Vanish.c15
-rw-r--r--TemplePushing.c4s/Teams.txt3
-rw-r--r--TemplePushing.c4s/Title.txt4
-rw-r--r--TemplePushing.c4s/Version.txt2
57 files changed, 422 insertions, 122 deletions
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/DefCore.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DefCore.txt
new file mode 100644
index 0000000..83248dc
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DefCore.txt
@@ -0,0 +1,10 @@
+[DefCore]
+id=SNOR
+Name=Snow-Rule
+Version=4,9,1,4
+Value=1
+Category=65
+MaxUserSelect=1
+Picture=0,0,32,32
+TimerCall=Snowing
+Timer=10 \ No newline at end of file
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescDE.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescDE.txt
new file mode 100644
index 0000000..1e86f99
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescDE.txt
@@ -0,0 +1,3 @@
+Eine Regel, die den Schnee nur effektmäßig fallen lässt.
+
+Original von bernhard Bonigl(boni) \ No newline at end of file
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescUS.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescUS.txt
new file mode 100644
index 0000000..75bc8e0
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescUS.txt
@@ -0,0 +1,4 @@
+An rule which let the snow fall down just like an effect.
+
+
+Made by Bernhard Bonigl(boni). \ No newline at end of file
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Graphics.png b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Graphics.png
new file mode 100644
index 0000000..918182b
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Names.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Names.txt
new file mode 100644
index 0000000..af18263
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Schneeeffekt
+US:Snoweffect
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Graphics.png b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Graphics.png
new file mode 100644
index 0000000..a8871b3
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Names.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Names.txt
new file mode 100644
index 0000000..2de86ab
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Schnee
+US:Snow
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Particle.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Particle.txt
new file mode 100644
index 0000000..f7918cd
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Particle.txt
@@ -0,0 +1,14 @@
+[Particle]
+Name=Snow
+MaxCount=7000
+InitFn=StdInit
+ExecFn=StdExec
+DrawFn=Std
+CollisionFn=Die
+Face=0,0,32,32,-16,-16
+Delay=0
+Repeats=1
+RByV=1
+VertexCount=1
+AlphaFade=7
+#Parallaxity=75,100
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Graphics.png b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Graphics.png
new file mode 100644
index 0000000..a8871b3
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Names.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Names.txt
new file mode 100644
index 0000000..2de86ab
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Schnee
+US:Snow
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Particle.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Particle.txt
new file mode 100644
index 0000000..d3ee890
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Particle.txt
@@ -0,0 +1,13 @@
+[Particle]
+Name=Snow2
+MaxCount=7000
+InitFn=StdInit
+ExecFn=StdExec
+DrawFn=Std
+CollisionFn=Die
+Face=0,0,32,32,-16,-16
+Delay=0
+Repeats=1
+RByV=1
+GravityAcc=0
+Parallaxity=75,100
diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Script.c b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Script.c
new file mode 100644
index 0000000..5757711
--- /dev/null
+++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Script.c
@@ -0,0 +1,21 @@
+/*-- Schnee-Effekt --*/
+
+#strict
+
+protected func Initialize() {
+ if(!IsNewgfx()) RemoveObject();
+ SetPosition(0,0);
+}
+
+func Snowing() {
+
+ PushParticles("Snow2",RandomX(-7,7));
+ for(var x; x<4; x++)
+ {
+ CreateParticle("Snow2",Random(LandscapeWidth()),0,0,25,RandomX(50,80),0);
+ CreateParticle("Snow2",Random(LandscapeWidth()),0,0,21,RandomX(30,50),0);
+ CreateParticle("Snow2",Random(LandscapeWidth()),0,0,17,RandomX(10,30),0);
+ CreateParticle("Snow2",Random(LandscapeWidth()),0,0,35,RandomX(80,100),0);
+ }
+}
+
diff --git a/TemplePushing.c4s/Icon.png b/TemplePushing.c4s/Icon.png
index c80e72e..15e0815 100644
--- a/TemplePushing.c4s/Icon.png
+++ b/TemplePushing.c4s/Icon.png
Binary files differ
diff --git a/TemplePushing.c4s/LobbySky.jpg b/TemplePushing.c4s/LobbySky.jpg
deleted file mode 100644
index 93c1576..0000000
--- a/TemplePushing.c4s/LobbySky.jpg
+++ /dev/null
Binary files differ
diff --git a/TemplePushing.c4s/Material.c4g/Fleckig.png b/TemplePushing.c4s/Material.c4g/Fleckig.png
deleted file mode 100644
index 1cf7988..0000000
--- a/TemplePushing.c4s/Material.c4g/Fleckig.png
+++ /dev/null
Binary files differ
diff --git a/TemplePushing.c4s/Material.c4g/TexMap.txt b/TemplePushing.c4s/Material.c4g/TexMap.txt
index 8baf784..3c83a21 100644
--- a/TemplePushing.c4s/Material.c4g/TexMap.txt
+++ b/TemplePushing.c4s/Material.c4g/TexMap.txt
@@ -24,7 +24,6 @@ OverloadTextures
17=Ice-Sponge
18=DuroLava-LIQUID
19=BackLava-Liquid
-20=Water-Fleckig
21=Oil-Smooth
22=Acid-Smooth
23=Lava-Smooth
@@ -35,7 +34,6 @@ OverloadTextures
28=FlyAshes-RoughDark
29=Earth-Smooth
30=Earth-Ridge
-31=Earth-Fleckig
32=Earth-Smooth2
33=Earth-Smooth3
34=Earth-Rough
diff --git a/TemplePushing.c4s/Material.c4g/WallStuff.png b/TemplePushing.c4s/Material.c4g/WallStuff.png
deleted file mode 100644
index 1a9ac64..0000000
--- a/TemplePushing.c4s/Material.c4g/WallStuff.png
+++ /dev/null
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c
index 1d439bf..eba7696 100644
--- a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c
@@ -1,25 +1,17 @@
-/* Eisnadeln */
+/* Ice Needles */
#strict
-local Combo;
-
-
-func Activate(pCaster,pRealcaster) {
-Combo=0;
-Sound("Magic",0,pCaster);
-if(FindContents(ABRL,pCaster))
+func Activate(pCaster,pRealcaster)
{
-Combo=1;
-RemoveObject(FindContents(ABRL,pCaster));
-}
+Sound("Magic",0,pCaster);
var pClonk;
if(pRealcaster) pClonk=pRealcaster;
else pClonk=pCaster;
// Zielen wenn möglich
- if (pClonk->~DoSpellAim(this())) return(1);
+ if (pClonk->~DoSpellAim(this(), pCaster)) return(1);
var angle=-90;
if(GetDir(pClonk) == DIR_Right()) angle=90;
@@ -30,57 +22,20 @@ RemoveObject(FindContents(ABRL,pCaster));
// 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);
- }
+{
+ 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);
}
+
AddEffect("RecallMFCSAiming",pCaller,20,1,0,GetID(),iAngle);
// Objekt löschen
RemoveObject();
return(1);
- }
-}
+}
+
public func HoldAimer(pCaller)
{
return(true);
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c
index 40c23c1..e5d7e1b 100644
--- a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c
+++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c
@@ -11,11 +11,11 @@ func Activate(pCaster,pRealcaster) {
if (iResult = CheckEffect("Blast", 0, 125)) return(iResult!=-1 && RemoveObject());
// Zielen wenn möglich
- if (pClonk->~DoSpellAim(this())) return(1);
+ if (pClonk->~DoSpellAim(this(), pCaster)) return(1);
// Schuss erzeugen
- var obj = CreateObject(_LVS, 0, 0, GetOwner(pClonk));
- obj->Launch(pClonk, GetDir(pClonk), GetX(pClonk), GetY(pClonk), 0);
+ var obj = CreateObject(LGTS, -GetX(), -GetY(), GetOwner(pClonk));
+ obj->Launch(GetX(pCaster)+GetVertex(0, VTX_X, pCaster), GetY(pCaster)+GetVertex(0, VTX_Y, pCaster), (!GetDir(pCaster))*1800);
Sound("Inflame");
RemoveObject();
return(1);
diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DefCore.txt
new file mode 100644
index 0000000..e259ed1
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DefCore.txt
@@ -0,0 +1,7 @@
+[DefCore]
+id=FSVC
+Name=Anoraks
+Version=4,9,5
+Category=C4D_Living
+Picture=6,0,64,64
+ColorByOwner=1
diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescDE.txt
new file mode 100644
index 0000000..d89a848
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescDE.txt
@@ -0,0 +1 @@
+Clonks tragen warme Anoraks, wenn der festliche Modus aktiviert ist.
diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescUS.txt
new file mode 100644
index 0000000..9c4124f
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescUS.txt
@@ -0,0 +1 @@
+Makes clonks wear anoraks if the festive mode is enabled.
diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Graphics.png
new file mode 100644
index 0000000..0a39a1c
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Names.txt
new file mode 100644
index 0000000..4741171
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Names.txt
@@ -0,0 +1,2 @@
+DE:Festliche Clonks
+US:Festive Clonks
diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Overlay.png b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Overlay.png
new file mode 100644
index 0000000..978f3b9
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Overlay.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Script.c
new file mode 100644
index 0000000..656a32b
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Script.c
@@ -0,0 +1,12 @@
+/*-- Festliche Clonks --*/
+
+#strict 2
+#appendto CLNK
+
+func Construction () {
+ if (mode == MODE_Festive)
+ {
+ if(GetID() == CLNK) SetGraphics(0, this, FSVC);
+ return (_inherited (...));
+ }
+}
diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Title.png b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Title.png
new file mode 100644
index 0000000..46ddf08
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Title.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/PlayerJoin.wav b/TemplePushing.c4s/Misc.c4d/PlayerJoin.wav
new file mode 100644
index 0000000..b384791
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/PlayerJoin.wav
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DefCore.txt
index 6b23cdb..468365a 100644
--- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt
+++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DefCore.txt
@@ -10,8 +10,10 @@ Vertices=4
VertexX=2,-2,-2,2
VertexY=2,-2,2,-2
VertexFriction=100,100,100,100
-Mass=17
+Mass=20
Components=IICE=2
Picture=6,0,32,32
Collectible=1
+Rotate=1
+StretchGrowth=1
Fragile=1
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescDE.txt
index c369562..c369562 100644
--- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt
+++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescDE.txt
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescUS.txt
index 81f5b9f..81f5b9f 100644
--- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt
+++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescUS.txt
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Graphics.png
index 431e6ff..431e6ff 100644
--- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.png
+++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Graphics.png
Binary files differ
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Names.txt
index cc0cd4f..cc0cd4f 100644
--- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt
+++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Names.txt
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Script.c
index aa90954..aa90954 100644
--- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c
+++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Script.c
diff --git a/TemplePushing.c4s/Scenario.txt b/TemplePushing.c4s/Scenario.txt
index 36923ea..20a56d9 100644
--- a/TemplePushing.c4s/Scenario.txt
+++ b/TemplePushing.c4s/Scenario.txt
@@ -1,6 +1,6 @@
[Head]
Icon=27
-Title=Temple Pushing r0.741b
+Title=Temple Pushing r0.8b
MaxPlayer=8
[Definitions]
@@ -23,6 +23,9 @@ Goals=MELE=1
BottomOpen=1
Gravity=83
+[Weather]
+Climate=0,0,0,0
+
[Player1]
Crew=CLNK=1
diff --git a/TemplePushing.c4s/Script.c b/TemplePushing.c4s/Script.c
index ea02517..97f88bd 100644
--- a/TemplePushing.c4s/Script.c
+++ b/TemplePushing.c4s/Script.c
@@ -3,9 +3,10 @@
#strict 2
static const MODE_Classic = 0, MODE_Magic = 1, MODE_Festive = 2, MODE_Apocalyptic = 3, MODE_Knightly = 4;
-static const SBRD_ScoreCol = 0, SBRD_RelaunchesCol = 1;
+static const SBRD_RelaunchesCol = 0;
static const MaxTeamCount = 2;
+static SBRD_ScoreCol;
static section, mode;
static numRelaunches;
static deathmatchEnabled, deathmatchWinScore;
@@ -19,9 +20,9 @@ func Initialize()
{
ShowLobby();
- // Create Thrones for recreational purposes...
+ // Create Thrones for recreational purposes
CreateObject(THRN, 590, 420, NO_OWNER);
- CreateObject(THRN, 470, 210, NO_OWNER);
+ CreateObject(THRN, 410, 210, NO_OWNER);
// Initial values
deathmatchWinScore = 20;
@@ -32,7 +33,7 @@ func Initialize()
// Create setup menu
var menu = CreateObject(SPMU, 0, 0, NO_OWNER);
- menu->LocalN("extinguisherEnabled") = false;
+ menu->LocalN("extinguisherEnabled") = true;
menu->LocalN("rotateInJumpEnabled") = true;
menu->LocalN("numRelaunches") = 10;
menu->LocalN("deathmatchWinScore") = 20;
@@ -81,6 +82,9 @@ func UpdateScoreboard(int player, bool leaver)
{
var playerID = GetPlayerID(player);
var text;
+
+ if (!deathmatchEnabled) SBRD_ScoreCol = 1;
+ if (deathmatchEnabled) SBRD_ScoreCol = 0;
// Ignore invalid player numbers
if (!playerID) return;
@@ -100,14 +104,6 @@ func UpdateScoreboard(int player, bool leaver)
}
}
- // Normal and deathmatch mode: Show score
- if (leaver)
- text = "{{SLVR}}";
- else
- text = Format("%d", playerScore[playerID]);
-
- SetScoreboardData(PlayerRow(player), SBRD_ScoreCol, text, playerScore[playerID]);
-
// Normal mode only: Show remaining relaunches
if (!deathmatchEnabled)
{
@@ -121,11 +117,24 @@ func UpdateScoreboard(int player, bool leaver)
SetScoreboardData(PlayerRow(player), SBRD_RelaunchesCol, text, relaunchesLeft);
}
+
+ // Normal and deathmatch mode: Show score
+ if (leaver)
+ text = "{{SLVR}}";
+ else
+ text = Format("%d", playerScore[playerID]);
+
+ SetScoreboardData(PlayerRow(player), SBRD_ScoreCol, text, playerScore[playerID]);
+
// Sort rows
+ if (!deathmatchEnabled)
+ {
+ SortScoreboard(SBRD_RelaunchesCol, true);
SortScoreboard(SBRD_ScoreCol, true);
- if (!deathmatchEnabled) SortScoreboard(SBRD_RelaunchesCol, true);
- SortScoreboard(SBRD_Caption);
+ }
+ else SortScoreboard(SBRD_ScoreCol, true);
+ // SortScoreboard(SBRD_Caption);
}
func ShowLobby()
@@ -170,7 +179,7 @@ func StartGame(object menu, string message)
}
if (mode == MODE_Festive)
{
- spawnPointSpawner->SetDefinitions([[TSWB,5], [SCRL, 5], [ROCK, 1]]);
+ spawnPointSpawner->SetDefinitions([[TSWB, 10], [SCRL, 5]]);
spawnPointSpawner->SetSpawnInterval(600);
}
if (mode == MODE_Knightly)
@@ -195,6 +204,14 @@ func StartGame(object menu, string message)
AddEffect("Bottom", 0, 20, 2);
AddEffect("SkyAdjust", 0, 20, 1);
}
+
+ // Effects for festive mode
+ if (mode == MODE_Festive)
+ {
+ if (ambienceEnabled) CreateObject(SNOR, 0, 0, NO_OWNER);
+ SetSkyAdjust(RGB(189, 189, 255));
+ SetGamma(RGB(0, 0, 50), RGB(100, 100, 128), RGB(200, 200, 255));
+ }
// Create melee goal
Log("Creating melee goal");
@@ -414,7 +431,7 @@ func OnClonkDeath(object clonk, int killedBy)
if (gameStarted && HandleKill(player, killedBy)) return;
// Relaunch
- if (GetPlayerID(player)) LaunchClonk(player, clonk, true);
+ if (GetPlayerID(player)) LaunchClonk(player, clonk, true);
}
func LaunchClonk(int player, object clonk, bool relaunch)
@@ -432,7 +449,6 @@ func LaunchClonk(int player, object clonk, bool relaunch)
}
clonk = newClonk;
}
-
ResetHealth(clonk);
SelectCrew(player, clonk, true);
@@ -485,8 +501,14 @@ func LaunchClonk(int player, object clonk, bool relaunch)
clonk->Schedule("SelectCrew(GetOwner(), this, true)", 20);
}
- PlayerMessage(player, "<c %x>{{FLAG}}</c>", clonk, GetPlrColorDw(player));
+ PlayerMessage(player, "{{SREL}}", clonk);
+ DrawParticleLine("PSpark", GetX(clonk), 0, GetX(clonk), GetY(clonk), 10, 150, RGBa(Random(255), Random(255), Random(255),50), RGBa(Random(255), Random(255), Random(255),50), 0);
+ DrawParticleLine("PSpark", GetX(clonk) + RandomX(5, 60), 0, GetX(clonk), GetY(clonk), 10, 150, RGBa(Random(255), Random(255), Random(255),50), RGBa(Random(255), Random(255), Random(255),50), 0);
+ DrawParticleLine("PSpark", GetX(clonk) - RandomX(5, 60), 0, GetX(clonk), GetY(clonk), 10, 150, RGBa(Random(255), Random(255), Random(255),50), RGBa(Random(255), Random(255), Random(255),50), 0);
+ Sound("PlayerJoin", 0, clonk, 100);
+ // CastParticles("MSpark", 50, 20, GetX(clonk), GetY(clonk), 50, 75, RGBa(128,128,255,0), RGBa(255,255,255,127));
SetPlrView(player, clonk);
+ ResetHealth(clonk);
}
func ResetHealth(object clonk)
diff --git a/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt b/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt
index ccb3138..45f9492 100644
--- a/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt
+++ b/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt
@@ -15,7 +15,7 @@ Gravity=83,0,10,200
SkyScrollMode=2
[Weather]
-Climate=100,0,0,100
+Climate=0,0,0,0
YearSpeed=20,10,0,100
Wind=0,100,-100,100
Lightning=28,0,0,100
diff --git a/TemplePushing.c4s/SectLiquidTemple.c4g/Map.bmp b/TemplePushing.c4s/SectLiquidTemple.c4g/Map.bmp
index 2f87447..6f7b273 100644
--- a/TemplePushing.c4s/SectLiquidTemple.c4g/Map.bmp
+++ b/TemplePushing.c4s/SectLiquidTemple.c4g/Map.bmp
Binary files differ
diff --git a/TemplePushing.c4s/SectLobby.c4g/Map.bmp b/TemplePushing.c4s/SectLobby.c4g/Map.bmp
index 50ea9e4..f53b185 100644
--- a/TemplePushing.c4s/SectLobby.c4g/Map.bmp
+++ b/TemplePushing.c4s/SectLobby.c4g/Map.bmp
Binary files differ
diff --git a/TemplePushing.c4s/SectLobby.c4g/Scenario.txt b/TemplePushing.c4s/SectLobby.c4g/Scenario.txt
index df1e96b..f7321eb 100644
--- a/TemplePushing.c4s/SectLobby.c4g/Scenario.txt
+++ b/TemplePushing.c4s/SectLobby.c4g/Scenario.txt
@@ -15,6 +15,9 @@ LiquidLevel=20,30,0,100
Gravity=83,0,10,200
SkyScrollMode=2
+[Weather]
+Climate=0,0,0,0
+
[Player1]
Crew=CLNK=1
diff --git a/TemplePushing.c4s/Sections.c4d/Ambience.wav b/TemplePushing.c4s/Sections.c4d/Ambience.wav
index 4682723..de426a5 100644
--- a/TemplePushing.c4s/Sections.c4d/Ambience.wav
+++ b/TemplePushing.c4s/Sections.c4d/Ambience.wav
Binary files differ
diff --git a/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav b/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav
index c17e78a..4861190 100644
--- a/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav
+++ b/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav
Binary files differ
diff --git a/TemplePushing.c4s/Sections.c4d/FestiveAmbience.wav b/TemplePushing.c4s/Sections.c4d/FestiveAmbience.wav
new file mode 100644
index 0000000..7b8ca6b
--- /dev/null
+++ b/TemplePushing.c4s/Sections.c4d/FestiveAmbience.wav
Binary files differ
diff --git a/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c
index 4f839d8..cbf4f40 100644
--- a/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c
+++ b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c
@@ -5,7 +5,7 @@
public func SectionName() { return "Classic"; }
public func SpawnpointLocations() { return [[550, 282], [603, 205], [682, 282], [784, 227], [912, 168], [1040, 120],
- [651, 467], [432, 438], [170, 118], [299, 170], [435, 230], [1175, 290], [105, 380], [910, 400], [560, 610]]; }
+ [648, 460], [432, 438], [170, 118], [299, 170], [441, 230], [1175, 290], [105, 380], [910, 400], [560, 610]]; }
protected func Initialize()
{
@@ -14,13 +14,17 @@ protected func Initialize()
if (ambienceEnabled)
{
- // Create background sound, fog and rain
- if (mode != MODE_Apocalyptic) SoundLevel("Ambience", 50);
+ // Background Sound
+ if (mode != MODE_Apocalyptic && mode != MODE_Festive) SoundLevel("Ambience", 70);
+
+ // Fog
for (var i; i < 300; ++i)
{
CreateParticle("Fog", Random(LandscapeWidth()), Random(LandscapeHeight()) + 500, RandomX(3, 9), 0, RandomX(1000, 1500));
}
- AddEffect("Rain", 0, 20, 1);
+
+ // Rain
+ if (mode != MODE_Festive) AddEffect("Rain", 0, 20, 1);
// Create sun and lenseflare
CreateObject(SONE, 0, 0, NO_OWNER);
@@ -40,11 +44,9 @@ protected func Initialize()
CreateObject(FRRN, 0, 0, NO_OWNER);
// Background sound
- Music();
SoundLevel("ExtremeAmbience", 100);
// Modulate brick color (object + material)
-
for (var brick in bricks)
{
brick->SetClrModulation(RGB(220, 20, 20));
@@ -52,4 +54,17 @@ protected func Initialize()
SetMaterialColor(Material("Brick"), 100, 0, 0, 150, 0, 0, 20, 0, 0);
}
+
+ if (mode == MODE_Festive)
+ {
+ // Chilly ambience
+ if (ambienceEnabled) SoundLevel("FestiveAmbience", 60);
+
+ // Modulate brick color (object + material)
+ for (var brick in bricks)
+ {
+ brick->SetClrModulation(RGB(189, 243, 255));
+ }
+ SetMaterialColor(Material("Brick"), 100, 100, 230, 150, 150, 255, 30, 30, 50);
+ }
} \ No newline at end of file
diff --git a/TemplePushing.c4s/Sections.c4d/SectCloudTemple.c4d/Script.c b/TemplePushing.c4s/Sections.c4d/SectCloudTemple.c4d/Script.c
index 987052e..b2f1c25 100644
--- a/TemplePushing.c4s/Sections.c4d/SectCloudTemple.c4d/Script.c
+++ b/TemplePushing.c4s/Sections.c4d/SectCloudTemple.c4d/Script.c
@@ -8,11 +8,9 @@ public func SpawnpointLocations() { return [[70, 100], [140, 310], [1105, 310],
protected func Initialize()
{
- // Water/Lava sources
- // var water = [CreateObject(WTFL, 615, 295, NO_OWNER), CreateObject(WTFL, 630, 285, NO_OWNER)];
- // TODO: Remove sound via appendto + adjust positions
+ Music();
- // Create Fog
+ // Create "Clouds"
for (var i; i < 100; ++i)
{
if (mode == MODE_Apocalyptic)
@@ -28,7 +26,7 @@ protected func Initialize()
if (ambienceEnabled)
{
// Create background sound
- if (mode != MODE_Apocalyptic) SoundLevel("CloudAmbience", 50);
+ if (mode != MODE_Apocalyptic && mode != MODE_Festive) SoundLevel("CloudAmbience", 50);
// Create sun and lenseflare
CreateObject(SONE, 0, 0, NO_OWNER);
@@ -48,11 +46,19 @@ protected func Initialize()
CreateObject(FRRN, 0, 0, NO_OWNER);
// Background sound
- Music();
SoundLevel("ExtremeAmbience", 100);
// Modulate brick and crystal colour
SetMaterialColor(Material("Brick"), 100, 0, 0, 150, 0, 0, 20, 0, 0);
SetMaterialColor(Material("SkyCrystal"), 245, 0, 0, 255, 0, 0, 20, 0, 0);
}
+
+ if (mode == MODE_Festive)
+ {
+ // Chilly ambience
+ SoundLevel("FestiveAmbience", 60);
+
+ // Modulate brick colour
+ SetMaterialColor(Material("Brick"), 100, 100, 230, 150, 150, 255, 30, 30, 50);
+ }
} \ No newline at end of file
diff --git a/TemplePushing.c4s/Sections.c4d/SectLiquidTemple.c4d/Script.c b/TemplePushing.c4s/Sections.c4d/SectLiquidTemple.c4d/Script.c
index 3ab2be2..f5eb2d8 100644
--- a/TemplePushing.c4s/Sections.c4d/SectLiquidTemple.c4d/Script.c
+++ b/TemplePushing.c4s/Sections.c4d/SectLiquidTemple.c4d/Script.c
@@ -4,33 +4,26 @@
public func SectionName() { return "LiquidTemple"; }
- public func SpawnpointLocations() { return [[100, 515], [290, 490], [480, 460], [180, 315], [370, 285], [1440, 515], [1250, 490], [1060, 460], [1360, 315], [1170, 285], [715, 330], [870, 450]/*, [615, 70], [925, 70]*/, [770, 90], [715, 210], [825, 390]]; }
+ public func SpawnpointLocations() { return [[100, 515], [290, 490], [480, 460], [180, 315], [370, 285], [1440, 515], [1250, 490], [1060, 460], [1360, 315], [1170, 285], [715, 330], [685, 420], [770, 90], [715, 210], [825, 390], [825, 270], [825, 150]]; }
protected func Initialize()
{
+ Music();
+
if (ambienceEnabled)
{
// Create lava rain
- AddEffect("LavaRain", 0, 20, 1);
-
- /*
- / Create sun and lensflare
- CreateObject(SONE, 0, 0, NO_OWNER);
- CreateObject(LENS, 0, 0, NO_OWNER);
- */
+ if (mode != MODE_Festive) AddEffect("LavaRain", 0, 20, 1);
// Create background sound
- if (mode != MODE_Apocalyptic) SoundLevel("LiquidAmbience", 50);
+ if (mode != MODE_Apocalyptic && mode != MODE_Festive) SoundLevel("LiquidAmbience", 50);
- /*
- {
- for (var i; i < 300; ++i)
+ /*
+ for (var i; i < 300; ++i)
{
- CreateParticle("Fog", Random(LandscapeWidth()), Random(LandscapeHeight()) + 300, 0, 1, RandomX(2000, 2500));
+ CreateParticle("Fog", Random(LandscapeWidth()), Random(LandscapeHeight()) + 300, 0, 1, RandomX(2000, 2500));
}
- return(1);
- }
- */
+ */
}
if (mode == MODE_Apocalyptic)
@@ -46,12 +39,23 @@ public func SectionName() { return "LiquidTemple"; }
CreateObject(FRRN, 0, 0, NO_OWNER);
// Background sound
- Music();
SoundLevel("ExtremeAmbience", 100);
// Modulate brick colour (material)
+ SetMaterialColor(Material("Brick"), 100, 0, 0, 150, 0, 0, 20, 0, 0);
+ }
+
+ if (mode == MODE_Festive)
+ {
+ // Chilly ambience
+ if (ambienceEnabled) SoundLevel("FestiveAmbience", 60);
+ // Modulate material colours
SetMaterialColor(Material("Brick"), 100, 0, 0, 150, 0, 0, 20, 0, 0);
+ SetMaterialColor(Material("DarkBrick"), 100, 100, 230, 150, 150, 255, 30, 30, 50);
+ SetMaterialColor(Material("BackWall"), 100, 100, 230, 150, 150, 255, 30, 30, 50);
+ SetMaterialColor(Material("Wall"), 100, 100, 230, 150, 150, 255, 30, 30, 50);
+ SetMaterialColor(Material("BackBrick"), 100, 100, 230, 150, 150, 255, 30, 30, 50);
}
}
diff --git a/TemplePushing.c4s/System.c4g/Airblast.c b/TemplePushing.c4s/System.c4g/Airblast.c
new file mode 100644
index 0000000..473263b
--- /dev/null
+++ b/TemplePushing.c4s/System.c4g/Airblast.c
@@ -0,0 +1,84 @@
+/* Airblast kill tracking */
+
+#strict
+
+#appendto ABLA
+
+func FxAirblastNSpellTimer(object pTarget, int iNumber, int iTime) {
+ var iPos, pObj, iX, iY, iSpeed, iRandom, iAngle, iSize, iStep;
+
+ var iPos = EffectVar(1,pTarget,iNumber);
+ // löschen falls schon zu weit alles weggeblasen
+ if(iPos >= EffectCall(pTarget,iNumber,"MaxRange")) return(-1);
+
+ iStep = -iPos/18+EffectCall(pTarget,iNumber,"MaxRange")/17;
+
+ iX = EffectVar(2,pTarget,iNumber);
+ iY = EffectVar(3,pTarget,iNumber);
+
+ iAngle = EffectVar(0,pTarget,iNumber);
+ iSize = iStep+iPos/5;
+
+ iX += Sin(iAngle, iPos);
+ iY -= Cos(iAngle, iPos);
+
+ //Log("%d,%d",iSize,iStep);
+
+
+ // Log("%d,%d,%d,%d",iX+Sin(iAngle,iPos)-iSize,iY-Cos(iAngle,iPos)-iSize,iSize*2,iSize*2);
+
+ // Objekte wegblasen
+ while(pObj=FindObject(0,iX-iSize,iY-iSize,iSize*2,iSize*2,OCF_Collectible()|OCF_Alive(),0,0,NoContainer(),pObj))
+ {
+ if(Stuck(pObj)) continue;
+ if (GetProcedure(pObj) eq "ATTACH") continue; // Keine getragenen Schilde, Alchemiebeutel, etc.
+ iSpeed=iStep*6;
+ if(iSpeed<0) iSpeed=0;
+
+ // Sound fürs Wegblasen
+ Sound("MgWndB", false, pObj);
+
+ //Log("%s: %d; %d,%d",GetName(pObj),iSpeed,Sin(iAngle,iSpeed+20),-iSpeed);
+
+ if(GetAlive(pObj))
+ {
+ iRandom=Random(3);
+ //DoEnergy(-1-iRandom,pObj);
+ //pObj->~CatchBlow(-1-iRandom,this());
+ pObj->SetKiller(EffectVar(6,pTarget,iNumber));
+ Fling(pObj,Sin(iAngle,iSpeed+20)/9,-iSpeed/2/9);
+ }
+ else
+ {
+ SetSpeed(Sin(iAngle,iSpeed+20),-iSpeed/2,pObj);
+
+ // Richtigen Controller setzen
+ SetController(EffectVar(6,pTarget,iNumber),pObj);
+ }
+ }
+
+ // Explosionen bei Kombo
+ var iMat;
+ if (EffectVar(4, pTarget, iNumber))
+ if (GBackSolid(iX, iY))
+ {
+ iMat = GetMaterial(iX,iY);
+ if (iMat >= 0 && iMat != Material("Vehicle"))
+ {
+ Explode(17, CreateObject(ROCK, iX,iY,EffectVar(5, pTarget, iNumber)));
+ return(-1);
+ }
+ }
+
+ var clr = iPos*255/EffectCall(pTarget,iNumber,"MaxRange");
+ CreateParticle("PSpark",iX,iY,0,0,iSize*15,RGBa(200,200,255,clr*127/255));
+
+ // alle 20 Pixel wird nach Objekten gesucht
+ EffectVar(1,pTarget,iNumber)+=iStep;
+ while(pObj=FindObject(0,iX-iSize,iY-iSize,iSize*2,iSize*2,OCF_Alive(),0,0,NoContainer(),pObj)) {
+ if(GetKiller(pObj)!=EffectVar(6,pTarget,iNumber)) {
+ DoEnergy(-1,pObj, 1,,EffectVar(6,pTarget,iNumber)+1);
+ DoEnergy(+1,pObj, 1,,EffectVar(6,pTarget,iNumber));
+ }
+ }
+}
diff --git a/TemplePushing.c4s/System.c4g/Arrowpack.c b/TemplePushing.c4s/System.c4g/Arrowpack.c
index e046e4c..5f86151 100644
--- a/TemplePushing.c4s/System.c4g/Arrowpack.c
+++ b/TemplePushing.c4s/System.c4g/Arrowpack.c
@@ -38,6 +38,9 @@ protected func Activate(object clonk)
// Start cooldown
coolingDown = true;
Schedule("coolingDown = false", RandomX(1, 20));
+
+ // Play sound
+ Sound("Arrow");
return 1;
} \ No newline at end of file
diff --git a/TemplePushing.c4s/System.c4g/Curses.c b/TemplePushing.c4s/System.c4g/Curses.c
new file mode 100644
index 0000000..7a1e86f
--- /dev/null
+++ b/TemplePushing.c4s/System.c4g/Curses.c
@@ -0,0 +1,30 @@
+/*-- Prevent Curse Scrolls from vanishing --*/
+
+#strict 2
+
+#appendto CAHE
+
+local pCasterClonk;
+
+public func Activate(pCaster,pRealcaster)
+{
+ var pClonk;
+ if(pRealcaster) pClonk=pRealcaster;
+ else pClonk=pCaster;
+
+ pCasterClonk = pClonk; // Caster speichern, damit es sich unter keinen Umständen selber wählen kann
+ // Auswählen wenn möglich
+ if (pClonk->~DoSpellSelect(this(),300)) return(1);
+
+ var pTarget;
+ // Clonk kann nicht auswählen: nächsten Gegner verfluchen
+ while(pTarget=FindObject(0,-300,-300,150,150,OCF_CrewMember,0,0,NoContainer(),pTarget))
+ if(SelectorTarget(pTarget))
+ return(ActivateTarget(pTarget));
+
+ // ansonsten geht nich
+ var iResult;
+ if (iResult = CheckEffect("*Curse*", 0, 125)) return(iResult!=-1 && RemoveObject());
+
+ return(0);
+}
diff --git a/TemplePushing.c4s/System.c4g/MagicLightning.c b/TemplePushing.c4s/System.c4g/MagicLightning.c
new file mode 100644
index 0000000..ebed7a5
--- /dev/null
+++ b/TemplePushing.c4s/System.c4g/MagicLightning.c
@@ -0,0 +1,24 @@
+/* Magic Lighting doesn't disappear --*/
+
+#strict
+
+#appendto MLGT
+
+func Activate(pCaster,pRealcaster) {
+ var pClonk;
+ if(pRealcaster) pClonk=pRealcaster;
+ else pClonk=pCaster;
+
+ var iResult;
+ if (iResult = CheckEffect("LightningNSpell", 0, 125)) return(iResult!=-1 && RemoveObject());
+
+ // Zielen wenn möglich
+ if (pClonk->~DoSpellAim(this(), pCaster)) return(1);
+
+ // Blitz erzeugen
+ var obj = CreateObject(LGTS, -GetX(), -GetY(), GetOwner(pClonk));
+ obj->Launch(GetX(pCaster)+GetVertex(0, VTX_X, pCaster), GetY(pCaster)+GetVertex(0, VTX_Y, pCaster), (!GetDir(pCaster))*1800);
+ Sound("Thunder*");
+ RemoveObject();
+ return(1);
+}
diff --git a/TemplePushing.c4s/System.c4g/Scroll.c b/TemplePushing.c4s/System.c4g/Scroll.c
index 076c30b..310652c 100644
--- a/TemplePushing.c4s/System.c4g/Scroll.c
+++ b/TemplePushing.c4s/System.c4g/Scroll.c
@@ -6,10 +6,10 @@ func Initialize()
{
if (mode == MODE_Festive)
{
- var spells = [ABLA, MFWV, MICS, MLGT, MGPL];
+ var spells = [ABLA, MFWV, MICS, MLGT, MGPL, ICNL];
SetSpell(spells[Random(GetLength(spells))]);
}
- else var spells = [ABLA, MBOT, MFRB, MDBT, GVTY, MMTR, MLGT, CFAL, MSSH, MINV, MQKE, MARK, MFWV, MGFL, LAVS, MGPL];
+ else var spells = [ABLA, MBOT, MFRB, MDBT, GVTY, MMTR, MLGT, CFAL, MSSH, MINV, MQKE, MARK, MFWV, MGFL, LAVS, MGPL, ICNL];
SetSpell(spells[Random(GetLength(spells))]);
return _inherited();
diff --git a/TemplePushing.c4s/System.c4g/ShootInventory.c b/TemplePushing.c4s/System.c4g/ShootInventory.c
index 20bfef3..6adcfcc 100644
--- a/TemplePushing.c4s/System.c4g/ShootInventory.c
+++ b/TemplePushing.c4s/System.c4g/ShootInventory.c
@@ -81,7 +81,7 @@ protected func Activate(object clonk)
}
else
{
- Exit(0, -10 + 20 * clonk->GetDir(), 0, 0 + 180 * clonk->GetDir(), -80 + 160 * clonk->GetDir(), -15);
+ Exit(0, -10 + 20 * clonk->GetDir(), 0, 0 + 360 * clonk->GetDir(), -80 + 160 * clonk->GetDir(), -15);
SetYDir(-15);
SetXDir(-80 + 160 * clonk->GetDir());
}
diff --git a/TemplePushing.c4s/System.c4g/Sun.c b/TemplePushing.c4s/System.c4g/Sun.c
new file mode 100644
index 0000000..9a52923
--- /dev/null
+++ b/TemplePushing.c4s/System.c4g/Sun.c
@@ -0,0 +1,47 @@
+/*-- Sun --*/
+
+#strict
+
+#appendto SONE
+
+private func BerechneSonneY()
+{
+ var ZeitObjekt = FindObject(TIME);
+ if(!ZeitObjekt)
+ SonneY = 30;
+
+ else return _inherited();
+}
+
+protected func TuWasBraves()
+{
+ // Bei vorhandenem Lenseflare (mit integrierter Sonne) kann dieses Objekt gelöscht werden
+ if(ObjectCount(LENS))
+ {
+ RemoveObject(this());
+ return();
+ }
+ // Hat es seinen Besitzer verloren? :(
+ if((!GetPlayerName(GetOwner())) || GetOwner()==-1)
+ {
+ RemoveObject(this());
+ return();
+ }
+ // Sonnenposition anpassen
+ BerechneSonne();
+ SetPosition(SonneX,SonneY);
+ // Nachts ausblenden
+ if(IsDay())
+ SetVisibility (VIS_Owner());
+ else
+ SetVisibility (VIS_None());
+ // Bei Nähe zur Sonne blenden
+ var VektorDist=GibVektorDist(GetOwner());
+ if(IsDay())
+ {
+ var Gelbstich = BoundBy((500-VektorDist)/5,0,100); // Prozentangabe 0 = weit weg, 100 = nahe; 500 Pixel sind dabei "weit weg"
+ SetGamma (RGB(000+(30*Gelbstich)/100,000+(30*Gelbstich)/100,000),
+ RGB(128+(60*Gelbstich)/100,128+(60*Gelbstich)/100,128),
+ RGB(255,255,255), GammaRampe_Lenseflare());
+ }
+} \ No newline at end of file
diff --git a/TemplePushing.c4s/System.c4g/Vanish.c b/TemplePushing.c4s/System.c4g/Vanish.c
index 37d1d78..8eae5cb 100644
--- a/TemplePushing.c4s/System.c4g/Vanish.c
+++ b/TemplePushing.c4s/System.c4g/Vanish.c
@@ -11,17 +11,24 @@ protected func Hit()
{
if (GetID() == FARW)
{
- Schedule("RemoveObject()", 80, 0, 0);
+ Schedule("CastParticles(\"MSpark\", 20, 5, 0, 0, 25, 30, RGBa(128,128,255,0), RGBa(255,255,255,127))", 69, 0, 0);
+ Schedule("RemoveObject()", 70, 0, 0);
}
else if (GetID() == SPER)
{
+ Schedule("CastParticles(\"MSpark\", 20, 5, 0, 0, 25, 30, RGBa(128,128,255,0), RGBa(255,255,255,127))", 49, 0, 0);
Schedule("RemoveObject()", 50, 0, 0);
}
+ else if (GetID() == TSWB)
+ {
+ CastParticles("Snow", 50, 20, 0, 0, 50, 80, RGBa(255,255,255,0), RGBa(255,255,255,0));
+ Schedule("RemoveObject()", 2, 0, 0);
+ }
else
{
- CastParticles("MSpark", 20,5, 0,0, 25, 30, RGBa(128,128,255,0), RGBa(255,255,255,127));
- RemoveObject();
- return 1;
+ CastParticles("MSpark", 20, 5, 0, 0, 25, 30, RGBa(128,128,255,0), RGBa(255,255,255,127));
+ Schedule("RemoveObject()", 5, 0, 0);
+ return _inherited();
}
}
diff --git a/TemplePushing.c4s/Teams.txt b/TemplePushing.c4s/Teams.txt
index 8f8d57c..cb09560 100644
--- a/TemplePushing.c4s/Teams.txt
+++ b/TemplePushing.c4s/Teams.txt
@@ -1,6 +1,9 @@
[Teams]
Active=1
+AllowHostilityChange=0
+AllowTeamSwitch=0
TeamColors=1
+TeamDistribution=Host
[Team]
id=1
Name=$TeamOne$
diff --git a/TemplePushing.c4s/Title.txt b/TemplePushing.c4s/Title.txt
index 53cf67b..eb1e2ec 100644
--- a/TemplePushing.c4s/Title.txt
+++ b/TemplePushing.c4s/Title.txt
@@ -1,2 +1,2 @@
-DE:Tempelschubsen r0.741b
-US:Temple Pushing r0.741b
+DE:Tempelschubsen r0.8b
+US:Temple Pushing r0.8b
diff --git a/TemplePushing.c4s/Version.txt b/TemplePushing.c4s/Version.txt
index 60b3fd0..03af619 100644
--- a/TemplePushing.c4s/Version.txt
+++ b/TemplePushing.c4s/Version.txt
@@ -1 +1 @@
-r0.741b
+r0.8b