diff options
Diffstat (limited to 'TemplePushing.c4s')
224 files changed, 1340 insertions, 1958 deletions
diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DefCore.txt b/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DefCore.txt deleted file mode 100644 index ab2cba9..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DefCore.txt +++ /dev/null @@ -1,7 +0,0 @@ -[DefCore] -id=RAIN -Name=Rain -Version=4,9,5 -Category=C4D_StaticBack -MaxUserSelect=1 -Value=1
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DescDE.txt b/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DescDE.txt deleted file mode 100644 index 55fe10e..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Es regnet den ganzen Tag, aber irgendwie seh ich kein einzigen Tropfen Wasser!
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DescUS.txt b/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DescUS.txt deleted file mode 100644 index ba66ef1..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -It rains the whole time, but there is no only drop of water
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DescDE.txt b/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DescDE.txt deleted file mode 100644 index d63d0bf..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Es regnet Flints und es entstehen Wurmlöcher die ins Nichts führen. Was will man mehr?
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DescUS.txt b/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DescUS.txt deleted file mode 100644 index 36b2f0e..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -It's raining men!
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/Graphics.png b/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/Graphics.png Binary files differdeleted file mode 100644 index c9c7c9b..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/Script.c deleted file mode 100644 index 8fdcf9d..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/Script.c +++ /dev/null @@ -1,23 +0,0 @@ -/*-- Flintregen --*/ - -#strict - -protected func Initialize() { - SetPosition(0,0); - AddEffect("Flnt",0,1,20,0,GetID()); - return(1); -} - -func FxFlntTimer() -{ - if (!Random(20)) - { - //Wurmloch - CreateObject(MGWP,Random(LandscapeWidth()),Random(LandscapeHeight()))->Activate(FindObject()); - //Und einmal Free-Shaken - ShakeFree(Random(LandscapeWidth()),Random(LandscapeHeight()),Random(100)); - } - //Zum Schluss noch ein kleines Geschenk des Himmels - var flnt = CreateObject(SFLN,Random(LandscapeWidth()),0); - return(1); -} diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Graphics.png b/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Graphics.png Binary files differdeleted file mode 100644 index 2ac7a18..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Names.txt b/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Names.txt deleted file mode 100644 index d439aa7..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Regen -US:Rain
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Script.c deleted file mode 100644 index f31a3f9..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Script.c +++ /dev/null @@ -1,22 +0,0 @@ -/*-- Regen --*/ - -#strict - -protected func Initialize() { - SetPosition(0,0); - AddEffect("Rain",0,1,1,0,GetID()); - SoundLevel("Rain",100); - return(1); -} - -func FxRainTimer() -{ - var color = RGB(150,150,255); - if (FindObject(RCKF)) color = RGB(100,0,0); - for (var i;i<3;i++) - CreateParticle("Rain",Random(LandscapeWidth()),0,0,200,Random(300),RGB(170,170,255)); - if (!Random(200)) Sound("Thunders*"); - if (!Random(50) && FindObject(FRRN)) CreateObject(DFLM,Random(LandscapeWidth())); - return(1); -} - diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DescDE.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DescDE.txt deleted file mode 100644 index ecf7b67..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Lässt es Feuer regnen und sichert den Nachschub an Terra-Flints.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DescUS.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DescUS.txt deleted file mode 100644 index 98c639e..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -Let fire rains and creates flints in the inventory of each clonk.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/Graphics.png b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/Graphics.png Binary files differdeleted file mode 100644 index 30e20a2..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/Script.c deleted file mode 100644 index e037351..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/Script.c +++ /dev/null @@ -1,7 +0,0 @@ -/*-- Feuerregen --*/ - -#strict - -protected func Activate(iPlr) { - MessageWindow(GetDesc(),iPlr); -} diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DescDE.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DescDE.txt deleted file mode 100644 index 70921c2..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Jeder Spieler muss versuchen 10 Gegner zu töten, damit sein Team gewinnt.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DescUS.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DescUS.txt deleted file mode 100644 index c1eba93..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -That player wich kills 10 enemys wins the game.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/Script.c deleted file mode 100644 index cbb211d..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/Script.c +++ /dev/null @@ -1,7 +0,0 @@ -/*-- Deathmatch --*/ - -#strict - -protected func Activate(iPlr) { - MessageWindow(GetDesc(),iPlr); -} diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Script.c deleted file mode 100644 index fb43957..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Script.c +++ /dev/null @@ -1,5 +0,0 @@ -/*-- Friendly Pushing --*/ - -#strict - -protected func Activate(int plr) { MessageWindow(GetDesc(), plr); } diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DefCore.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DefCore.txt deleted file mode 100644 index f57caf8..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DefCore.txt +++ /dev/null @@ -1,9 +0,0 @@ -[DefCore] -id=MSPW -Version=4,9,8 -Name=MagicSpawnpoints -Category=C4D_StaticBack|C4D_Rule -MaxUserSelect=1 -Width=1 -Height=1 -Picture=0,0,64,64 diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DescDE.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DescDE.txt deleted file mode 100644 index 4370091..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Im Spiel finden sich Spawnpoints, die als sicherer Nachschub an Schriftrollen dienen.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DescUS.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DescUS.txt deleted file mode 100644 index f1ebe61..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -Creates some spawnpoints in the game wich are creating scrolls.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/ActMap.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/ActMap.txt deleted file mode 100644 index f29cad6..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/ActMap.txt +++ /dev/null @@ -1,4 +0,0 @@ -[Action] -Name=Invis -Facet=10,0,10,10 -NextAction=Hold diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DescDE.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DescDE.txt deleted file mode 100644 index 9124f18..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Lässt Schriftrollen als Nachschub erscheinen.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DescUS.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DescUS.txt deleted file mode 100644 index ea35e3e..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -Spawns scrolls.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Graphics.png b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Graphics.png Binary files differdeleted file mode 100644 index c5f3687..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Names.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Names.txt deleted file mode 100644 index a0ef292..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Magischer Spawnpunkt -US:Magic Spawnpoint
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Script.c deleted file mode 100644 index 1f93fc8..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Script.c +++ /dev/null @@ -1,176 +0,0 @@ -/*-- Spawnpoint --*/ - -#strict - -local initialized, angle, player, spawntimer,WpID; - -func IsWaypoint() { return(1); } - -global func PlaceSpawnpoint(id idObj, int iX, int iY, int timer) -{ - var spwn = CreateObject(SPNP, iX, iY, -1); - spwn->CreateContents(idObj); - if(timer) - spwn->LocalN("spawntimer") = timer; - return(spwn); -} - -protected func Initialize() -{ - WpID = [SCRL]; - // Standardtimer = 1000 Frames - spawntimer = 1000; - SetClrModulation(RGBa(0,0,0,255)); -} - -protected func Timer() -{ - if(!player) player = CreateArray(); - // Noch nicht initialisiert? - if(!initialized) - // Ein Inhaltsobjekt? - if(Contents()) - // Initialisieren - return(Initialized()); - // Kein Inhalt? - if(!Contents()) - { - return(CreateContents(WpID[Random(GetLength(WpID))])); - } - // Tolle Effekt starten - angle += 10; - if(angle >= 360) angle = 0; - SetObjDrawTransform(1000, 0,0,0, 1000, Sin(angle, 8)*1000 - 2000,0, 1); - if(Random(2)) CreateParticle("NoGravSpark", RandomX(-5,5), RandomX(5,10), 0, -5, 25, RGBa(210, 210, 255, 100)); - // Alle Timer runterzählen - DecreaseTimer(); -} - -private func Initialized() -{ - // Unsichtbar werden - SetAction("Invis"); - // Objekt als Layer auflegen - SetGraphics(0, 0, GetID(Contents()), 1, 1); - // Transformation - SetObjDrawTransform(1000, 0,0,0, 1000, -5000,0, 1); - // Sammeleffekt starten -// AddEffect("Collect", this(), 1, 3, this()); - // Objekt(e) erzeugen - // Waffen-Bleiben-Regel -//player = CreateArray(); - // Initialisiert - initialized = true; -} - -/* Timer runterzählen */ - -private func DecreaseTimer() -{ - // Waffen-Bleiben-Regel - if(FindObject(WPST)) - { - for(var i=0 ; i < GetPlayerCount() ; i++) - // Spielertimer runterzählen - { - if(player[GetPlayerByIndex(i)]) - player[GetPlayerByIndex(i)] -= 5; - if(player[GetPlayerByIndex(i)] <= 0 && !(Local() & 2**GetPlayerByIndex(i))) - { - // Spieler kann das Objekt wieder einsammeln - player[GetPlayerByIndex(i)] = 0; - Local() += 2**GetPlayerByIndex(i); - } - } - } - else - { - // Timer runterzählen - player[0] -= 5; - if(player[0] <= 0) - { - // Objekt ist wieder da - player[0] = 0; - Local() = true; - SetVisibility(VIS_All()); - } - } -} - -/* Einsammel-Effekte */ -/* -public func FxCollectTimer() -{ - // Ist ein Clonk hier? -> Einsammeln lassen - var pObj; - for(var pClonk in FindObjects(Find_AtPoint(), Find_OCF(OCF_CrewMember()), Find_OCF(OCF_CrewMember()), Find_NoContainer())) - if(CheckCollect(GetOwner(pClonk))) - { - pObj = FindContents(); - // Kann der Clonk einsammeln? - Collect(pObj, pClonk); - if(Contained(pObj) == this()) RemoveObject(pObj); - else - { - Sound("Grab", 0, pClonk, 0, GetOwner(pClonk)+1); - Collected(GetOwner(pClonk)); - } - } -}*/ - -public func RejectEntrance(object pClonk) -{ - // Objekt ist ein Clonk? - if(!(GetOCF(pClonk) & OCF_CrewMember) && !(pClonk->~CanCollectFromSpawnpoints())) return(1); - // Ich hab Contents? - if(!Contents()) return(1); - // Darf einsammeln - if(CheckCollect(GetOwner(pClonk))) - { - var pObj = Contents(); - // Kann der Clonk einsammeln? - if(ObjectCount(0, 0, 0, 0, 0, 0, 0, 0, pClonk) >= 1) - return(1); - - Collect(pObj, pClonk); - CreateContents(WpID[Random(GetLength(WpID))]); - Initialized(); - if(Contained(pObj) == this()) RemoveObject(pObj); - else - { - Sound("Grab", 0, pClonk, 0, GetOwner(pClonk)+1); - Collected(GetOwner(pClonk)); - } - } - return(1); -} - -private func CheckCollect(int iPlr) // Überprüft, ob ein Spieler das Objekt einsammeln darf -{ - // Waffen-Bleiben-Regel - if(FindObject(WPST)) - return(Local() & 2**iPlr); - else - return(Local()); -} - -private func Collected(int iPlr) // Regelt, dass ein Spieler das Objekt einsammelt -{ - // Waffen-Bleiben-Regel - if(FindObject(WPST)) - { - // Spielertimer hochsetzen - player[iPlr] = spawntimer; - // Nicht mehr sichtbar für den Spieler - Local() -= 2**iPlr; - } - else - { - // Timer hochsetzen - player[0] = spawntimer; - // Nicht mehr einsammelbar - Local() = false; - // Nicht mehr sichtbar - SetVisibility(VIS_God()); - } -} diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/Graphics.png b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/Graphics.png Binary files differdeleted file mode 100644 index 0fa62b6..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Names.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Names.txt deleted file mode 100644 index 26991ea..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Magische Spawnpunktspawner -US:Magic Spawnpoint Spawner diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Script.c deleted file mode 100644 index 0de4e94..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Script.c +++ /dev/null @@ -1,24 +0,0 @@ -/*-- Magische Spawnpoints --*/ - -#strict - -protected func Activate(iPlr) { - MessageWindow(GetDesc(),iPlr); -} - -func Initialize() -{ - SetGamma(RGB(5,5,10),RGB(80,80,150),RGB(200,200,255)); - CreateObject(MSPN,550,282); - CreateObject(MSPN,603,205); - CreateObject(MSPN,682,282); - CreateObject(MSPN,784,227); - CreateObject(MSPN,912,168); - CreateObject(MSPN,1040,120); - CreateObject(MSPN,651,449); - CreateObject(MSPN,432,438); - CreateObject(MSPN,170,118); - CreateObject(MSPN,299,170); - CreateObject(MSPN,435,230); - return(1); -}
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DescDE.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DescDE.txt deleted file mode 100644 index 96cfed2..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -In den Spawnpoints erscheinen nur Schriftrollen.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DescUS.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DescUS.txt deleted file mode 100644 index 4fb171e..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -Spawnpoints contents just magic scrolls.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Graphics.png b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Graphics.png Binary files differdeleted file mode 100644 index 351d65c..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DescDE.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DescDE.txt deleted file mode 100644 index e8257be..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Anstatt Gegenständen erscheinen nur Schriftrollen
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DescUS.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DescUS.txt deleted file mode 100644 index f2b1ba6..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -Instead of objects spawnpoints contents just scrolls
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/Graphics.png b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/Graphics.png Binary files differdeleted file mode 100644 index 0fa62b6..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/Names.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/Names.txt deleted file mode 100644 index 8e9cb1f..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Magisches Schubsen -US:Magical Push diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Names.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Names.txt deleted file mode 100644 index ac705b1..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Nur Schriftrollen -US:Only scrolls
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Script.c deleted file mode 100644 index 43af0ec..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Script.c +++ /dev/null @@ -1,21 +0,0 @@ -/*-- Nur Schriftrollen --*/ - -#strict - -protected func Activate(iPlr) { - MessageWindow(GetDesc(),iPlr); -} - -func Initialize() -{ -SetGamma(RGB(5,5,10),RGB(80,80,150),RGB(200,200,255)); - var pObj; - if (!FindObject(SPNP)) SPWN->Initialize(); - while (pObj = FindObject(SPNP,0,0,0,0,0,0,0,0,pObj)) - { - pObj->Initialize(); - RemoveObject(FindContents(0,pObj)); - CreateContents(SCRL,pObj); - } -return(10); -} diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DefCore.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DefCore.txt deleted file mode 100644 index 41af2f9..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DefCore.txt +++ /dev/null @@ -1,9 +0,0 @@ -[DefCore] -id=SPWN -Version=4,9,8 -Name=Spawnpoint Spawner -Category=C4D_StaticBack|C4D_Rule -MaxUserSelect=1 -Width=1 -Height=1 -Picture=0,0,64,64 diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DescDE.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DescDE.txt deleted file mode 100644 index 3c5c1ff..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Im Spiel finden sich Spawnpoints, die als sicherer Nachschub an Waffen und Tränken dienen.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DescUS.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DescUS.txt deleted file mode 100644 index 7a978dc..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -Creates some spawnpoints in the game wich are creating weapons and potions.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Names.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Names.txt deleted file mode 100644 index 86138a6..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Spawnpointspawner -US:Spawnpoint Spawner diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Script.c deleted file mode 100644 index f1c3a97..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Script.c +++ /dev/null @@ -1,23 +0,0 @@ -/*-- Spawnpoints --*/ - -#strict - -protected func Activate(iPlr) { - MessageWindow(GetDesc(),iPlr); -} - -func Initialize() -{ - CreateObject(SPNP,550,282); - CreateObject(SPNP,603,205); - CreateObject(SPNP,682,282); - CreateObject(SPNP,784,227); - CreateObject(SPNP,912,168); - CreateObject(SPNP,1040,120); - CreateObject(SPNP,651,449); - CreateObject(SPNP,432,438); - CreateObject(SPNP,170,118); - CreateObject(SPNP,299,170); - CreateObject(SPNP,435,230); - return(1); -}
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/ActMap.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/ActMap.txt deleted file mode 100644 index f29cad6..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/ActMap.txt +++ /dev/null @@ -1,4 +0,0 @@ -[Action] -Name=Invis -Facet=10,0,10,10 -NextAction=Hold diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DefCore.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DefCore.txt deleted file mode 100644 index d95cd88..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DefCore.txt +++ /dev/null @@ -1,12 +0,0 @@ -[DefCore] -id=SPNP -Name=Spawnpoint -Version=4,9,5 -Category=25165825 -Width=10 -Height=10 -Offset=-5,-5 -Picture=0,0,10,10 -Timer=5 -TimerCall=Timer -Collectible=1
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Graphics.png b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Graphics.png Binary files differdeleted file mode 100644 index c5f3687..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Names.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Names.txt deleted file mode 100644 index c6a1143..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Spawnpunkt -US:Spawnpoint
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Script.c deleted file mode 100644 index c4ec93a..0000000 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Script.c +++ /dev/null @@ -1,176 +0,0 @@ -/*-- Spawnpoint --*/ - -#strict - -local initialized, angle, player, spawntimer,WpID; - -func IsWaypoint() { return(1); } - -global func PlaceSpawnpoint(id idObj, int iX, int iY, int timer) -{ - var spwn = CreateObject(SPNP, iX, iY, -1); - spwn->CreateContents(idObj); - if(timer) - spwn->LocalN("spawntimer") = timer; - return(spwn); -} - -protected func Initialize() -{ - WpID = [FLNT,SCRL,AXE1,TFLN,COKI,SFLN,PMON,PSTO,EFLN,FBMP,SWOR]; - // Standardtimer = 600 Frames - spawntimer = 600; - SetClrModulation(RGBa(0,0,0,255)); -} - -protected func Timer() -{ - if(!player) player = CreateArray(); - // Noch nicht initialisiert? - if(!initialized) - // Ein Inhaltsobjekt? - if(Contents()) - // Initialisieren - return(Initialized()); - // Kein Inhalt? - if(!Contents()) - { - return(CreateContents(WpID[Random(GetLength(WpID))])); - } - // Tolle Effekt starten - angle += 10; - if(angle >= 360) angle = 0; - SetObjDrawTransform(1000, 0,0,0, 1000, Sin(angle, 8)*1000 - 2000,0, 1); - if(Random(2)) CreateParticle("NoGravSpark", RandomX(-5,5), RandomX(5,10), 0, -5, 25, RGBa(210, 210, 255, 100)); - // Alle Timer runterzählen - DecreaseTimer(); -} - -private func Initialized() -{ - // Unsichtbar werden - SetAction("Invis"); - // Objekt als Layer auflegen - SetGraphics(0, 0, GetID(Contents()), 1, 1); - // Transformation - SetObjDrawTransform(1000, 0,0,0, 1000, -5000,0, 1); - // Sammeleffekt starten -// AddEffect("Collect", this(), 1, 3, this()); - // Objekt(e) erzeugen - // Waffen-Bleiben-Regel -//player = CreateArray(); - // Initialisiert - initialized = true; -} - -/* Timer runterzählen */ - -private func DecreaseTimer() -{ - // Waffen-Bleiben-Regel - if(FindObject(WPST)) - { - for(var i=0 ; i < GetPlayerCount() ; i++) - // Spielertimer runterzählen - { - if(player[GetPlayerByIndex(i)]) - player[GetPlayerByIndex(i)] -= 5; - if(player[GetPlayerByIndex(i)] <= 0 && !(Local() & 2**GetPlayerByIndex(i))) - { - // Spieler kann das Objekt wieder einsammeln - player[GetPlayerByIndex(i)] = 0; - Local() += 2**GetPlayerByIndex(i); - } - } - } - else - { - // Timer runterzählen - player[0] -= 5; - if(player[0] <= 0) - { - // Objekt ist wieder da - player[0] = 0; - Local() = true; - SetVisibility(VIS_All()); - } - } -} - -/* Einsammel-Effekte */ -/* -public func FxCollectTimer() -{ - // Ist ein Clonk hier? -> Einsammeln lassen - var pObj; - for(var pClonk in FindObjects(Find_AtPoint(), Find_OCF(OCF_CrewMember()), Find_OCF(OCF_CrewMember()), Find_NoContainer())) - if(CheckCollect(GetOwner(pClonk))) - { - pObj = FindContents(); - // Kann der Clonk einsammeln? - Collect(pObj, pClonk); - if(Contained(pObj) == this()) RemoveObject(pObj); - else - { - Sound("Grab", 0, pClonk, 0, GetOwner(pClonk)+1); - Collected(GetOwner(pClonk)); - } - } -}*/ - -public func RejectEntrance(object pClonk) -{ - // Objekt ist ein Clonk? - if(!(GetOCF(pClonk) & OCF_CrewMember) && !(pClonk->~CanCollectFromSpawnpoints())) return(1); - // Ich hab Contents? - if(!Contents()) return(1); - // Darf einsammeln - if(CheckCollect(GetOwner(pClonk))) - { - var pObj = Contents(); - // Kann der Clonk einsammeln? - if(ObjectCount(0, 0, 0, 0, 0, 0, 0, 0, pClonk) >= 1) - return(1); - - Collect(pObj, pClonk); - CreateContents(WpID[Random(GetLength(WpID))]); - Initialized(); - if(Contained(pObj) == this()) RemoveObject(pObj); - else - { - Sound("Grab", 0, pClonk, 0, GetOwner(pClonk)+1); - Collected(GetOwner(pClonk)); - } - } - return(1); -} - -private func CheckCollect(int iPlr) // Überprüft, ob ein Spieler das Objekt einsammeln darf -{ - // Waffen-Bleiben-Regel - if(FindObject(WPST)) - return(Local() & 2**iPlr); - else - return(Local()); -} - -private func Collected(int iPlr) // Regelt, dass ein Spieler das Objekt einsammelt -{ - // Waffen-Bleiben-Regel - if(FindObject(WPST)) - { - // Spielertimer hochsetzen - player[iPlr] = spawntimer; - // Nicht mehr sichtbar für den Spieler - Local() -= 2**iPlr; - } - else - { - // Timer hochsetzen - player[0] = spawntimer; - // Nicht mehr einsammelbar - Local() = false; - // Nicht mehr sichtbar - SetVisibility(VIS_God()); - } -} diff --git a/TemplePushing.c4s/DescDE.rtf b/TemplePushing.c4s/DescDE.rtf index 0d1b7ba..93d7b70 100644 --- a/TemplePushing.c4s/DescDE.rtf +++ b/TemplePushing.c4s/DescDE.rtf @@ -11,7 +11,7 @@ Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpad \jcompress\viewkind4\viewscale140\nolnhtadjtbl\rsidroot15076825 \fet0\sectd \linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3 \pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}} {\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain -\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {\b\fs20\insrsid15076825 Klippenschubsen}{\fs20\insrsid15214486 +\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {\b\fs20\insrsid15076825 Tempelschubsen}{\fs20\insrsid15214486 \par }{\fs16\insrsid15214486 \par }{\fs16\insrsid10121665 Es war ein finsterer und st\'fcrmischer Tag, und das Tageslicht war fast nicht }{\fs16\insrsid13972291 mehr }{\fs16\insrsid10121665 zu erkennen. Der Regen}{\fs16\insrsid3302305 }{\fs16\insrsid10121665 pl\'e4 tscherte, und nur der Schal}{\fs16\insrsid3302305 l des Donners durchbrach die un}{\fs16\insrsid10121665 h}{\fs16\insrsid3302305 e}{\fs16\insrsid10121665 imliche Stille. Dies sollte }{\fs16\insrsid12083888 die letzte Schlacht zwischen den}{ diff --git a/TemplePushing.c4s/DescUS.rtf b/TemplePushing.c4s/DescUS.rtf index 5967f05..48f6839 100644 --- a/TemplePushing.c4s/DescUS.rtf +++ b/TemplePushing.c4s/DescUS.rtf @@ -11,7 +11,7 @@ Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpad \dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale170\nolnhtadjtbl\rsidroot15076825 \fet0\sectd \linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2 \pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang -{\pntxtb (}{\pntxta )}}\pard\plain \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {\b\fs20\lang2057\langfe1031\langnp2057\insrsid7554459\charrsid14899991 Cliff Pushing}{ +{\pntxtb (}{\pntxta )}}\pard\plain \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {\b\fs20\lang2057\langfe1031\langnp2057\insrsid7554459\charrsid14899991 Temple Pushing}{ \fs20\lang2057\langfe1031\langnp2057\insrsid15214486\charrsid14899991 \par }{\fs16\lang2057\langfe1031\langnp2057\insrsid15214486\charrsid14899991 \par }{\fs16\lang2057\langfe1031\langnp2057\insrsid7554459\charrsid7554459 It was a dark and stormy day}{\fs16\lang2057\langfe1031\langnp2057\insrsid10121665\charrsid7554459 , }{\fs16\lang2057\langfe1031\langnp2057\insrsid7554459\charrsid7554459 diff --git a/TemplePushing.c4s/Environment.c4d/Names.txt b/TemplePushing.c4s/Environment.c4d/Names.txt new file mode 100644 index 0000000..bec4e41 --- /dev/null +++ b/TemplePushing.c4s/Environment.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Umwelt +US:Environment diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Rain.wav b/TemplePushing.c4s/Environment.c4d/Rain.wav Binary files differindex aee9dd8..aee9dd8 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Rain.wav +++ b/TemplePushing.c4s/Environment.c4d/Rain.wav diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Graphics.png b/TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Graphics.png Binary files differindex 5fd65db..5fd65db 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Graphics.png +++ b/TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Graphics.png diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Names.txt b/TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Names.txt index b836a4c..b836a4c 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Names.txt +++ b/TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Names.txt diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Particle.txt b/TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Particle.txt index 867e00a..e22f269 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Particle.txt +++ b/TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Particle.txt @@ -1,5 +1,5 @@ [Particle] -Name=Rain +Name=Raindrop MaxCount=600 InitFn=StdInit ExecFn=StdExec diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Thunders1.wav b/TemplePushing.c4s/Environment.c4d/Thunders1.wav Binary files differindex 0d4f247..0d4f247 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Thunders1.wav +++ b/TemplePushing.c4s/Environment.c4d/Thunders1.wav diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Thunders2.wav b/TemplePushing.c4s/Environment.c4d/Thunders2.wav Binary files differindex 02af2fe..02af2fe 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Thunders2.wav +++ b/TemplePushing.c4s/Environment.c4d/Thunders2.wav diff --git a/TemplePushing.c4s/HochHinaus.jpg b/TemplePushing.c4s/HochHinaus.jpg Binary files differnew file mode 100644 index 0000000..d060665 --- /dev/null +++ b/TemplePushing.c4s/HochHinaus.jpg diff --git a/TemplePushing.c4s/Icon.png b/TemplePushing.c4s/Icon.png Binary files differindex 80f75cc..c80e72e 100644 --- a/TemplePushing.c4s/Icon.png +++ b/TemplePushing.c4s/Icon.png diff --git a/TemplePushing.c4s/Locals.c4d/Brick.c4d/DescUS.txt b/TemplePushing.c4s/Locals.c4d/Brick.c4d/DescUS.txt deleted file mode 100644 index aaada9e..0000000 --- a/TemplePushing.c4s/Locals.c4d/Brick.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -A brick as a object.
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Brick.c4d/Script.c b/TemplePushing.c4s/Locals.c4d/Brick.c4d/Script.c deleted file mode 100644 index 02b3933..0000000 --- a/TemplePushing.c4s/Locals.c4d/Brick.c4d/Script.c +++ /dev/null @@ -1,30 +0,0 @@ -/*-- Brick --*/ - -#strict -local pSchatten; -local fVer,iYL,iYH; - -func Initialize() { - SetAction("Flying"); - SetPhase(Random(2)); - SetDir(Random(2)); - ContactTop(); - iYL = 650; - iYH = 100; - return(1); -} - -func ContactBottom() { SetYDir(-10); } -func ContactTop() { SetYDir(10); } - -func CheckHit() -{ - if (GetXDir() == 0 && GetYDir() == 0) - { - SetXDir(RandomX(-100,100)); - SetYDir(RandomX(-100,100)); - } - if (GetY() >= iYL) ContactBottom(); - if (GetY() <= iYH) ContactTop(); - return(1); -}
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/ActMap.txt b/TemplePushing.c4s/Locals.c4d/Cannon.c4d/ActMap.txt deleted file mode 100644 index 52447a1..0000000 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/ActMap.txt +++ /dev/null @@ -1,8 +0,0 @@ -[Action] -Name=Ready -Directions=2 -FlipDir=1 -Length=19 -Delay=0 -Facet=0,0,32,28 -NextAction=Hold diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/DefCore.txt b/TemplePushing.c4s/Locals.c4d/Cannon.c4d/DefCore.txt deleted file mode 100644 index c6c3b15..0000000 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/DefCore.txt +++ /dev/null @@ -1,24 +0,0 @@ -[DefCore] -id=CANN -Version=4,9,8 -Name=Cannon -Category=C4D_Vehicle|C4D_SelectVehicle|C4D_SelectKnowledge|C4D_SelectHomebase -MaxUserSelect=2 -Width=32 -Height=28 -Offset=-16,-14 -Vertices=3 -VertexX=1,-8,7 -VertexY=1,13,13 -VertexCNAT=4,9,10 -VertexFriction=100,10,10 -Value=35 -Mass=110 -Components=METL=3 -Picture=608,0,64,64 -CollectionLimit=10 -Rebuy=1 -Grab=1 -GrabPutGet=C4D_GrabGet|C4D_GrabPut -UprightAttach=8 -VehicleControl=1 diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/DescDE.txt b/TemplePushing.c4s/Locals.c4d/Cannon.c4d/DescDE.txt deleted file mode 100644 index 76bb149..0000000 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Mächtige Langstreckenwaffe. Benötigt für einen Schuss eine Ladung Schießpulver.
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/DescUS.txt b/TemplePushing.c4s/Locals.c4d/Cannon.c4d/DescUS.txt deleted file mode 100644 index 993a638..0000000 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -Heavy artillery. Requires one load of gunpowder per shot.
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Graphics.png b/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Graphics.png Binary files differdeleted file mode 100644 index abe856a..0000000 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Names.txt b/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Names.txt deleted file mode 100644 index 2a69811..0000000 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Haubitze -US:Cannon diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Script.c b/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Script.c deleted file mode 100644 index c77c034..0000000 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Script.c +++ /dev/null @@ -1,176 +0,0 @@ -/*-- Haubitze --*/ - -#strict -local WpID; - -/* Initialisierung */ - -protected func Initialize() -{ - WpID = [FLNT,EFLN,SFLN,TFLN]; - AddEffect("CreateCon",this(),100,150,this()); - SetAction("Ready"); - SetPhase(10); -} - -/* Steuerung */ - -protected func ControlConf(int conf) -{ - if(AimStdConf(conf)) - Sound("CatapultSet"); -} - -public func ControlUp(object clonk) // Zielen: hoch (klassisch) -{ - [$TxtAimup$|Image=CAN1:2] - AimUp(clonk, 4, "ControlConf"); -} - -public func ControlDig(object clonk) // Zielen: runter (klassisch) -{ - [$TxtAimdown$|Method=Classic|Image=CAN1:0] - AimDown(clonk, 4, "ControlConf"); -} - -public func ControlDown() -{ - [$TxtAimdown$|Method=JumpAndRun|Image=CAN1:0] // Beschreibung fuer JnR -} - -public func ControlUpdate(object clonk, int comdir) // Zielen: JnR -{ - AimUpdate(clonk, comdir, 4, "ControlConf"); -} - -public func ControlDownSingle() // Sicht zurücksetzen -{ - [$TxtResetview$|Method=None] -} - -public func ControlThrow(pClonk) // Feuern / Inhalt -{ - [$TxtFire$|Image=CAN1:1] - // Der Clonk will doch bestimmt nur etwas nachladen: nicht vorzeitig abfeuern - var pThing; - if (pThing = pClonk->Contents()) - if (AllowLoad(GetID(pThing))) - return(0); - // Abfeuern wenn möglich, sonst Objekt herausnehmen - return(Fire()); -} - -public func ControlCommand(string szCommand,object pTarget,int iX,int iY) -{ - // Feuern - if(szCommand eq "MoveTo") - if(Distance(GetX(),GetY(),iX,iY)>50) - { - HaltPushers(); - return(FireAt(iX,iY)); - } -} - -/* Prozesse */ - -private func HaltPushers() -{ - var pClonk; - // Alle Clonks die die Haubitze anfassen, sollen stoppen - while(pClonk=FindObject(0,0,0,0,0,0,"Push",this(),0,pClonk)) - SetComDir(COMD_Stop(),pClonk); -} - -public func Fire(bool fAuto) -{ - var pProjectile=FindOtherContents(GUNP); - // Ich brauch kein Schießpulver! - // Projektil fehlt - if (!pProjectile) - { - Sound("Click"); - return(0); - } - - // Austritt berechnen - var iX = (GetPhase()+3)*(GetDir()*2-1); - var iY = GetPhase()-14; - var iAngle = BoundBy(GetPhase()*5-5,0,90); - var iXDir = Sin(iAngle,32*(GetDir()*2-1)); - var iYDir = Cos(iAngle,-18); - - // Projektil abfeuern - Exit(pProjectile,iX,iY,Random(360),iXDir,iYDir,+30); - - // Sicht verfolgen (wenn kein automatischer Schuss) - if(!fAuto) - if(GetPlrViewMode(GetController())!=2) - SetPlrView(GetController(),pProjectile); - // Sound - Sound("Blast2"); - // Rauch - for (var i = 0; i < 6; ++i) - Smoke(iX+RandomX(-5,+5),iY+RandomX(-5,+5),RandomX(5,12)); - // Erfolgreich geschossen - return(1); -} - -/* Zielfunktionen */ - -public func FireAt(int iX,int iY,int fAuto) -{ - var iAngle; - // Zielwinkel - iAngle = Angle(GetX(),GetY(),iX,iY); - // Bei größerer Distanz höher zielen - if(Inside(iX-GetX(),+1,+300)) - iAngle -= Abs(iX-GetX())/12; - if(Inside(iX-GetX(),-300,-1)) - iAngle += Abs(iX-GetX())/12; - // Zielen - AimToAngle(iAngle); - // Feuern - return(Fire(fAuto)); -} - -public func AimToAngle(int iAngle) -{ - // Winkel anpassen - while(iAngle > 180) iAngle-=360; - // Richtung - if(iAngle > 0) SetDir(DIR_Right()); - if(iAngle < 0) SetDir(DIR_Left()); - // Zielrichtung - SetPhase(BoundBy( 19*Abs(iAngle)/90, 0,18)); -} - -/* Laden */ - -protected func Collection() { Sound("Connect"); } - -protected func RejectCollect(id idObj, object pObj) -{ - return(!AllowLoad(idObj)); -} - -private func AllowLoad(id idObj) -{ - // Noch jede Menge Platz - if (ContentsCount() < 9) return(1); - // Niemals mehr als 10 Objekte laden: Wird gebraucht, wenn aus ControlThrow aufgerufen! - if (ContentsCount() >= 10) return(0); - // Nicht mehr als 9 Projektile laden, wenn noch Platz für Pulver gebraucht wird - // Laden o.k. - return(1); -} - -/* Forschung */ - -public func GetResearchBase() { return(CATA); } - -func FxCreateConTimer() -{ - if (ContentsCount() < 10) - CreateContents(WpID[Random(5)]); - return(1); - } diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/StringTblDE.txt b/TemplePushing.c4s/Locals.c4d/Cannon.c4d/StringTblDE.txt deleted file mode 100644 index 43693bc..0000000 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/StringTblDE.txt +++ /dev/null @@ -1,4 +0,0 @@ -TxtAimup=Zielen: auf -TxtAimdown=Zielen: ab -TxtFire=Feuern -TxtResetview=Sicht zurücksetzen diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/StringTblUS.txt b/TemplePushing.c4s/Locals.c4d/Cannon.c4d/StringTblUS.txt deleted file mode 100644 index b55ce20..0000000 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/StringTblUS.txt +++ /dev/null @@ -1,4 +0,0 @@ -TxtAimup=Aim: up -TxtAimdown=Aim: down -TxtFire=Fire -TxtResetview=Reset view diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Symbols.c4d/Graphics.png b/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Symbols.c4d/Graphics.png Binary files differdeleted file mode 100644 index 25b3618..0000000 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Symbols.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Script.c b/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Script.c deleted file mode 100644 index 87dbd75..0000000 --- a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Script.c +++ /dev/null @@ -1,28 +0,0 @@ -/*-- Löschobjekt --*/ - -#strict - -func Check() -{ - if(GetAction()ne"Idle") return(0); - while(Var()=FindObject(0,0,0,0,0,OCF_OnFire(),0,0,0,Var())) - if(!FindObject(GetID(),0,0,0,0,0,"IsOnFire",Var()) && GetAlive(Var(0))) - ObjectSetAction(CreateObject(GetID(),0,0,-1),"IsOnFire",Var()); - return(1); -} - -func DoExtinguish() -{ - if(!GetAlive(GetActionTarget())) return(RemoveObject()); - if(GetActTime()>200 && !Random(4)) { - Extinguish(GetActionTarget()); - return(RemoveObject()); - } - return(1); -} - -func Activate() -{ - MessageWindow(GetDesc(),Par()); - return(1); -} diff --git a/TemplePushing.c4s/Locals.c4d/Fog.c4d/Graphics.png b/TemplePushing.c4s/Locals.c4d/Fog.c4d/Graphics.png Binary files differdeleted file mode 100644 index 4c16706..0000000 --- a/TemplePushing.c4s/Locals.c4d/Fog.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/Locals.c4d/Fog.c4d/Particle.txt b/TemplePushing.c4s/Locals.c4d/Fog.c4d/Particle.txt deleted file mode 100644 index dca46a3..0000000 --- a/TemplePushing.c4s/Locals.c4d/Fog.c4d/Particle.txt +++ /dev/null @@ -1,12 +0,0 @@ -[Particle] -Name=Fog -MaxCount=300 -InitFn=StdInit -ExecFn=StdExec -DrawFn=Std -Face=0,0,80,160,-40,-80 -Delay=0 -Repeats=1 -Reverse=0 -GravityAcc=0 -Additive=0
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/ActMap.txt b/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/ActMap.txt deleted file mode 100644 index bbf5a41..0000000 --- a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/ActMap.txt +++ /dev/null @@ -1,129 +0,0 @@ -[Action] -Name=SeiBrav -Procedure=FLOAT -Length=1 -Delay=1 -EndCall=TuWasBraves -NextAction=SeiBrav -Facet=0,0,192,192,-96,-96 - -[Action] -Name=IchWillNurSpielerZaehlen -Procedure=FLOAT -Length=1 -Delay=10 -FacetBase=0 -EndCall=PruefeAlleSpieler -NextAction=IchWillNurSpielerZaehlen - -[Action] -Name=Fleck0 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=0,192,39,39,-19,-19 - -[Action] -Name=Fleck1 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=58,192,89,89,-44,-44 - -[Action] -Name=Fleck2 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=29,231,20,20,-10,-10 - -[Action] -Name=Fleck3 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=0,281,61,61,-30,-30 - -[Action] -Name=Fleck4 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=0,231,29,29,-14,-14 - -[Action] -Name=Fleck5 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=192,64,19,19,-9,-9 - -[Action] -Name=Fleck6 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=192,92,6,6,-3,-3 - -[Action] -Name=Fleck7 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=192,83,9,9,-4,-4 - -[Action] -Name=Fleck8 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=147,192,38,38,-19,-19 - -[Action] -Name=Fleck9 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=354,0,70,70,-35,-35 - -[Action] -Name=Fleck10 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=39,192,19,19,-9,-9 - -[Action] -Name=Fleck11 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=211,64,28,28,-14,-14 - -[Action] -Name=Fleck12 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=256,0,98,98,-49,-49 - -[Action] -Name=Fleck13 -Procedure=FLOAT -Length=1 -Delay=0 -NextAction=Hold -Facet=192,98,195,195,-97,-97
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DefCore.txt b/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DefCore.txt deleted file mode 100644 index 79c4c82..0000000 --- a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DefCore.txt +++ /dev/null @@ -1,11 +0,0 @@ -[DefCore] -id=LENS -Version=4,9,8 -Name=Lenseflare -Category=C4D_StaticBack|C4D_Environment|C4D_MouseIgnore -MaxUserSelect=1 -Width=1 -Height=1 -Offset=-1,-1 -Picture=192,0,64,64 -BlitMode=1 diff --git a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DescDE.txt b/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DescDE.txt deleted file mode 100644 index b708475..0000000 --- a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Dieses Objekt fügt Sonnenlicht und Blendeneffekte ins Szenario ein.
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DescUS.txt b/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DescUS.txt deleted file mode 100644 index d29ea89..0000000 --- a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -This object adds sunlight and lense effects to the scenario.
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Graphics.png b/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Graphics.png Binary files differdeleted file mode 100644 index bc94254..0000000 --- a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Names.txt b/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Names.txt deleted file mode 100644 index acac2d2..0000000 --- a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Blendenflecke -US:Lense Flare diff --git a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Script.c b/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Script.c deleted file mode 100644 index ed5fbf2..0000000 --- a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Script.c +++ /dev/null @@ -1,183 +0,0 @@ -/*-- Lenseflare --*/ -// Sonnenskript includieren -#include SONE - -#strict - -local SonneX, SonneY; - -// Initialisierung -protected func Initialize() -{ - // Nur für den Herrn und Meister sichtbar - SetVisibility (VIS_Owner(), this()); - if(!FindObject(GetID())) - // Das erste Lenseflare-Objekt prüft nur, dass jeder Spieler auch sein Umweltobjekt hat - { - SetOwner(-1,this()); // Unparteiisch sein! - SetCategory(1 | C4D_MouseIgnore(),this()); // Nicht bewegen - SetAction("IchWillNurSpielerZaehlen"); - return(); - } -} - -// Initialisierung als Haupt-Lenseflare -public func WerdeHauptlenseflareFuerDeinenHerrn() -{ - SetCategory(C4D_StaticBack()|C4D_Background()| C4D_MouseIgnore()); - for(var i=0; i<MIJON(); ++i) - { - Local(i) = CreateObject(GetID()); - SetOwner(GetOwner(),Local(i)); - SetCategory(C4D_StaticBack()| C4D_MouseIgnore()|C4D_Foreground(),Local(i)); - ObjectSetAction(Local(i),Format("Fleck%d",i%14)); - } - SetAction("SeiBrav"); -} - -// Erstellt einen Lenseflare und weist ihm einen Besitzer zu -private func ErstelleLenseflare(FuerDiesenSpieler) -{ - var Flare = CreateObject(GetID()); - SetOwner(FuerDiesenSpieler,Flare); - Flare->WerdeHauptlenseflareFuerDeinenHerrn(); -} - - -// Von "SeiBrav" aufgerufen -protected func TuWasBraves() -{ - // Hat es seinen Besitzer verloren? :( - if((!GetPlayerName(GetOwner())) || GetOwner()==-1) - { - for(var i=0; i<MIJON(); ++i) - RemoveObject(Local(i)); - RemoveObject(this()); - return(); - } - // Sonnenposition anpassen - BerechneSonne(); - SetPosition(SonneX,SonneY); - // unskalierten Vektor ermitteln - var VektorX=GibVektorX(GetOwner()); - var VektorY=GibVektorY(GetOwner()); - var VektorDist=GibVektorDist(GetOwner()); - // Die Modulation ist für alle Flares gleich - var FarbModulation = RGBa(GibFarbMod(),GibFarbMod(),GibFarbMod(),GibAlphaMod(VektorDist)); - // Genauso auch die Abstandsangabe - var Abstaende = 1000-BoundBy((3000-VektorDist*10)/3,0,1000); // Promilleangabe 0 = nahe, 1000 = weit weg; 300 Pixel sind dabei "weit weg" - var AbstaendeAbsolut = (50*Abstaende)/10; // Wieviele 1/100 Pixel zwischen den einzelnen Lenseflares sind - // Ist unsere liebe Sonne überhaupt sichtbar (also Tag + unverdeckt) - var SonneSichtbar = IsDay() && (!GBackSemiSolid(0,0)); - // Tagsüber die Sonne einblenden - if(IsDay()) - { - SetVisibility (VIS_Owner()); - } - else - { - SetVisibility (VIS_None()); - } - // Alle Lenseflares durchgehen - for(var i=0; i<MIJON(); ++i) - { - if(SonneSichtbar) - { - // Tags sichtbar - SetVisibility (VIS_Owner(), Local(i)); - SetClrModulation(FarbModulation,Local(i)); - var LensDist = (i*AbstaendeAbsolut)/100; - SetPosition(GibLensPosX(LensDist,VektorX,VektorDist), GibLensPosY(LensDist,VektorY,VektorDist),Local(i)); - } - else - // Nachts unsichtbar ODER bei verdeckter Sonne - SetVisibility (VIS_None(), Local(i)); - } - // Sofern der Spieler alleine ist - if(GetPlayerCount()==1) - 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()); - } -} - -// Für die Farbmodulation (Entfernung + Nacht) -private func GibHelligkeit() -{ - var ZeitObjekt = FindObject(TIME); - if(!ZeitObjekt) - return(100); - return(Local(2, ZeitObjekt)); -} - -private func GibSonnenMod() // Dämmerung -{ - var Helligkeit = GibHelligkeit(); - // Folgende Farbwerte sind in Promille - var Rot = 1000; - var Grun = 1000; - var Blau = 1000; - if(Inside(Helligkeit,1,20)) // Dämmerung -> Rotstich - { - var RotStich = Cos(Helligkeit*4,500); - Grun -= RotStich/2; - Blau -= RotStich; - } - // Nun die Farbe berechnen - return(RGB((255*Rot)/1000,(255*Grun)/1000,(255*Blau)/1000)); -} - -private func GibFarbMod() -{ - return((255*GibHelligkeit())/100); -} - -private func GibAlphaMod(iEntfernung) -{ - var Staerke = BoundBy((2000-iEntfernung)/20,75,100); // Prozentangabe 75 = weit weg, 100 = nahe; 2000 Pixel sind dabei "weit weg" - return(255-(255*Staerke)/100); -} - -// Genutzte Gammarampe -global func GammaRampe_Lenseflare() -{ - return(2); -} - -// Den (unskalierten) Vektor. Er wird skaliert, um die Lenseflare-Positionen zu errechnen -private func GibVektorX(iSpieler) -{ - return(GibMittelpunktX(iSpieler) - SonneX); -} - -private func GibVektorY(iSpieler) -{ - return(GibMittelpunktY(iSpieler) - SonneY); -} - -// Skaliere den Vektor mit der gewünschten Entfernung Lenseflare->Sonne -private func GibLensPosX(iEntfernung, VektorX, VektorDist) -{ - // Skalierung in Promille - var Skalierung = (iEntfernung*1000) / VektorDist; - var TempX = (VektorX * Skalierung)/1000; - return(TempX + SonneX); -} - -private func GibLensPosY(iEntfernung, VektorY, VektorDist) -{ - // Skalierung in Promille - var Skalierung = (iEntfernung*1000) / VektorDist; - var TempY = (VektorY * Skalierung)/1000; - return(TempY + SonneY); -} - -// Wieviele Lenseflares hätten's denn gerne -private func MIJON() -{ - // etwa alle 50 Pixel einen Lenseflare - return(LandscapeWidth() / 2 / 50); -}
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/ActMap.txt b/TemplePushing.c4s/Locals.c4d/Sonne.c4d/ActMap.txt deleted file mode 100644 index 03847bb..0000000 --- a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/ActMap.txt +++ /dev/null @@ -1,17 +0,0 @@ -[Action] -Name=SeiBrav -Procedure=FLOAT -Length=1 -Delay=1 -EndCall=TuWasBraves -NextAction=SeiBrav -Facet=0,0,192,192,-96,-96 - -[Action] -Name=IchWillNurSpielerZaehlen -Procedure=FLOAT -Length=1 -Delay=10 -FacetBase=0 -EndCall=PruefeAlleSpieler -NextAction=IchWillNurSpielerZaehlen
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/DefCore.txt b/TemplePushing.c4s/Locals.c4d/Sonne.c4d/DefCore.txt deleted file mode 100644 index 0781943..0000000 --- a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/DefCore.txt +++ /dev/null @@ -1,11 +0,0 @@ -[DefCore] -id=SONE -Version=4,9,8 -Name=Sun -Category=C4D_StaticBack|C4D_Environment -MaxUserSelect=1 -Width=1 -Height=1 -Offset=-1,-1 -Picture=192,0,64,64 -BlitMode=1 diff --git a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/DescDE.txt b/TemplePushing.c4s/Locals.c4d/Sonne.c4d/DescDE.txt deleted file mode 100644 index e2177c9..0000000 --- a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Die Sonne. Sie scheint und zieht über den Himmel.
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/DescUS.txt b/TemplePushing.c4s/Locals.c4d/Sonne.c4d/DescUS.txt deleted file mode 100644 index d99b86e..0000000 --- a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -The sun shines and wanders across the sky.
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/Graphics.png b/TemplePushing.c4s/Locals.c4d/Sonne.c4d/Graphics.png Binary files differdeleted file mode 100644 index 62add4d..0000000 --- a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/Graphics.png +++ /dev/null diff --git a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/Names.txt b/TemplePushing.c4s/Locals.c4d/Sonne.c4d/Names.txt deleted file mode 100644 index e88af87..0000000 --- a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Sonne -US:Sun diff --git a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/Script.c b/TemplePushing.c4s/Locals.c4d/Sonne.c4d/Script.c deleted file mode 100644 index ded97c5..0000000 --- a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/Script.c +++ /dev/null @@ -1,191 +0,0 @@ -/*-- Sonne --*/ - -#strict - -local SonneX, SonneY; - -func IsLight() { return(1); } - -// Initialisierung -protected func Initialize() -{ - // In den Hintergrund mit dir. - SetCategory(C4D_StaticBack()|C4D_Background()); - // Action setzen - SetAction("SeiBrav"); - // Nur für den Herrn und Meister sichtbar - SetVisibility (VIS_Owner(), this()); - if(!FindObject(GetID())) - // Das erste Sonnen-Objekt prüft nur, dass jeder Spieler auch sein Umweltobjekt hat - { - SetOwner(-1,this()); // Unparteiisch sein! - SetCategory(1,this()); // Nicht bewegen - SetAction("IchWillNurSpielerZaehlen"); - return(); - } -} - -// Sucht einen Spieler, der keine Sonne hat (-1 für Erfolglos) -private func FindeFreienSpieler() -{ - for(var i=0; i<16; ++i) - if(GetPlayerName(i)&&(!FindObjectOwner(GetID(),i))) - return(i); - return(-1); -} - -// Prüft alle Spieler durch, ob denn auch jeder seine Sonne hat -protected func PruefeAlleSpieler() -{ - var FreierSpieler; - while((FreierSpieler=FindeFreienSpieler())!=-1) - ErstelleLenseflare(FreierSpieler); -} - -// Erstellt eine Sonne und weist ihm einen Besitzer zu -private func ErstelleLenseflare(FuerDiesenSpieler) -{ - CreateObject(GetID(),0,0,FuerDiesenSpieler); -} - - -// Von "SeiBrav" aufgerufen -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()); - // Sofern der Spieler alleine ist, blenden - var VektorDist=GibVektorDist(GetOwner()); - if(GetPlayerCount()==1) - 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()); - } -} - -// Interner Kruscht! -// Bildschirmmittelpunkt -private func GibMittelpunktX(iSpieler) -{ - if(IsNetwork()) - return(GetX(GetCursor(iSpieler))); - else - return(GetPlrViewX(iSpieler)); -} - -private func GibMittelpunktY(iSpieler) -{ - if(IsNetwork()) - return(GetY(GetCursor(iSpieler))); - else - return(GetPlrViewY(iSpieler)); -} - -// Sonnenkoordinate -private func BerechneSonne() -{ - BerechneSonneX(); - BerechneSonneY(); -} -private func BerechneSonneX() -{ - var ZeitObjekt = FindObject(TIME); - if(!ZeitObjekt) - SonneX = LandscapeWidth() / 2; - else - { - // Da die Winkelangaben aufgrund ihres Integer-Wesens zu ungenau für eine schöne Laufbahn sind - // muss hier getrickst werden. Über Sin/Cos werden die Eckpunkte eines n-Ecks errechnet, auf den Linien - // dazwischen fährt dann die Sonne. - var Winkel = GibTageszeit()*360/100 +90; - var VonEck = LandscapeWidth()/2+Cos(Winkel,LandscapeWidth()/2); - Winkel = (GibTageszeit()+1)*360/100 +90; - var ZuEck = LandscapeWidth()/2+Cos(Winkel,LandscapeWidth()/2); - // Wieviele Ticks verstreichen während einem "Punkt" bei Tageszeit? - // Sprich: Wieviele Zwischenschritte liegen zwischen VonEck und ZuEck? - var Zwischenschritte = PrivateCall(ZeitObjekt,"TimeResolution") / 100; - // Schrittweite in 1/100000 Pixel - var Schrittweite = (ZuEck-VonEck)*100000 / (Zwischenschritte*TIME_Tick()); - // Wieviel TIME-Ticks sind seit der letzten "vollen" Tageszeit vergangen? - var Vergangen = Local(1, ZeitObjekt) - GibTageszeit()*100; - Vergangen=Vergangen*TIME_Tick()+FrameCounter()%10; - SonneX = VonEck + (Vergangen*Schrittweite)/100000; // 100000 = 100000 wegen der 1/100000 Schrittweite - } -} - -private func BerechneSonneY() -{ - var ZeitObjekt = FindObject(TIME); - if(!ZeitObjekt) - SonneY = 150; - else - { - // Da die Winkelangaben aufgrund ihres Integer-Wesens zu ungenau für eine schöne Laufbahn sind - // muss hier getrickst werden. Über Sin/Cos werden die Eckpunkte eines n-Ecks errechnet, auf den Linien - // dazwischen fährt dann die Sonne. - var Winkel = GibTageszeit()*360/100 +90; - var VonEck = GetHorizonHeight(0)-Sin(Winkel,300)-50; - Winkel = (GibTageszeit()+1)*360/100 +90; - var ZuEck = GetHorizonHeight(0)-Sin(Winkel,300)-50; - // Wieviele Ticks verstreichen während einem "Punkt" bei Tageszeit? - // Sprich: Wieviele Zwischenschritte liegen zwischen VonEck und ZuEck? - var Zwischenschritte = PrivateCall(ZeitObjekt,"TimeResolution") / 100; - // Schrittweite in 1/100000 Pixel - var Schrittweite = (ZuEck-VonEck)*100000 / Zwischenschritte; - Schrittweite/=TIME_Tick(); // Jedes Time-Tick besteht aus 10 einzelnen Ticks - // Wieviel TIME-Ticks sind seit der letzten "vollen" Tageszeit vergangen? - var Vergangen = Local(1, ZeitObjekt) - GibTageszeit()*100; - Vergangen=Vergangen*TIME_Tick()+FrameCounter()%10; - SonneY = VonEck + (Vergangen*Schrittweite)/100000; // 100000 = 100000 wegen der 1/100000 Schrittweite - } -} - -private func TIME_Tick() -{ - return(10); -} - -private func GibTageszeit() -{ - var ZeitObjekt = FindObject(TIME); - if (!ZeitObjekt) return(-1); - return(Local(1, ZeitObjekt)*100/PrivateCall(ZeitObjekt,"TimeResolution")); // 0-100=Mittag-Mittag -} - -private func GibVektorDist(iSpieler) -{ - return(Distance(GibMittelpunktX(iSpieler),GibMittelpunktY(iSpieler),SonneX,SonneY)); -} - -// Bodenhöhe. Aus dem Schmetterling übernommen und aktuelle Syntax und global gemacht und so. k? -private func GetHorizonHeight(iX) -{ - var iY = - GetY(); // Zu globaler Koordinate wandeln - iX -= GetX(); // Zu globaler Koordinate wandeln - while ( (iY<LandscapeHeight())&&(!GBackSemiSolid(iX,iY))) - { - iY+=10; - } - return(iY+GetY()); -}
\ No newline at end of file diff --git a/TemplePushing.c4s/Material.c4g/Sky.jpg b/TemplePushing.c4s/Material.c4g/Sky.jpg Binary files differnew file mode 100644 index 0000000..b073dc3 --- /dev/null +++ b/TemplePushing.c4s/Material.c4g/Sky.jpg diff --git a/TemplePushing.c4s/Material.c4g/Sky2.jpg b/TemplePushing.c4s/Material.c4g/Sky2.jpg Binary files differnew file mode 100644 index 0000000..d060665 --- /dev/null +++ b/TemplePushing.c4s/Material.c4g/Sky2.jpg diff --git a/TemplePushing.c4s/Locals.c4d/Brick.c4d/ActMap.txt b/TemplePushing.c4s/Misc.c4d/Brick.c4d/ActMap.txt index 39397ac..03f7ca9 100644 --- a/TemplePushing.c4s/Locals.c4d/Brick.c4d/ActMap.txt +++ b/TemplePushing.c4s/Misc.c4d/Brick.c4d/ActMap.txt @@ -3,4 +3,4 @@ Name=Flying Procedure=FLOAT Directions=2 Length=2 -Facet=0,0,20,20
\ No newline at end of file +Facet=0,0,20,20 diff --git a/TemplePushing.c4s/Locals.c4d/Brick.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/Brick.c4d/DefCore.txt index bef6342..bef6342 100644 --- a/TemplePushing.c4s/Locals.c4d/Brick.c4d/DefCore.txt +++ b/TemplePushing.c4s/Misc.c4d/Brick.c4d/DefCore.txt diff --git a/TemplePushing.c4s/Locals.c4d/Brick.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/Brick.c4d/DescDE.txt index c69e382..c69e382 100644 --- a/TemplePushing.c4s/Locals.c4d/Brick.c4d/DescDE.txt +++ b/TemplePushing.c4s/Misc.c4d/Brick.c4d/DescDE.txt diff --git a/TemplePushing.c4s/Misc.c4d/Brick.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/Brick.c4d/DescUS.txt new file mode 100644 index 0000000..7339045 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Brick.c4d/DescUS.txt @@ -0,0 +1 @@ +A brick as an object.
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Brick.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Brick.c4d/Graphics.png Binary files differindex 1b531ea..1b531ea 100644 --- a/TemplePushing.c4s/Locals.c4d/Brick.c4d/Graphics.png +++ b/TemplePushing.c4s/Misc.c4d/Brick.c4d/Graphics.png diff --git a/TemplePushing.c4s/Locals.c4d/Brick.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Brick.c4d/Names.txt index b311575..b311575 100644 --- a/TemplePushing.c4s/Locals.c4d/Brick.c4d/Names.txt +++ b/TemplePushing.c4s/Misc.c4d/Brick.c4d/Names.txt diff --git a/TemplePushing.c4s/Misc.c4d/Brick.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/Brick.c4d/Script.c new file mode 100644 index 0000000..4a70dd2 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Brick.c4d/Script.c @@ -0,0 +1,29 @@ +/*-- Brick --*/ + +#strict 2 + +local yMin, yMax; + +protected func Initialize() +{ + SetAction("Flying"); + SetPhase(Random(2)); + SetDir(Random(2)); + ContactTop(); + yMin = 100; + yMax = 650; +} + +protected func ContactBottom() { SetYDir(-10); } +protected func ContactTop() { SetYDir(10); } + +func CheckHit() +{ + if (GetXDir() == 0 && GetYDir() == 0) + { + SetXDir(RandomX(-100, 100)); + SetYDir(RandomX(-100, 100)); + } + if (GetY() >= yMax) ContactBottom(); + if (GetY() <= yMin) ContactTop(); +} diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DefCore.txt new file mode 100644 index 0000000..01a88ad --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DefCore.txt @@ -0,0 +1,10 @@ +[DefCore] +id=SPMU +Name=Setup Menu +Version=4,9,5 +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,64,64 +Timer=1 +TimerCall=KeepMenuOpen diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DescDE.txt new file mode 100644 index 0000000..aa1c8e5 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DescDE.txt @@ -0,0 +1 @@ +Einstellungsmenü das beim Start des Szenarios angezeigt wird.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DescUS.txt new file mode 100644 index 0000000..e694245 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DescUS.txt @@ -0,0 +1 @@ +Setup menu shown at the beginning of the scenario.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..638c255 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Names.txt new file mode 100644 index 0000000..568f093 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Einstellungsmenü +US:Setup Menu
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c new file mode 100644 index 0000000..0577e73 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c @@ -0,0 +1,243 @@ +/*-- Setup Menu --*/ + +#strict 2 + +static const + SETTING_Deathmatch = 0, SETTING_Extinguisher = 1, SETTING_FriendlyPushing = 2, SETTING_RotateInJump = 3, + SETTING_RelaunchesInc = 4, SETTING_RelaunchesDec = 5, + SETTING_DeathmatchScoreInc = 6, SETTING_DeathmatchScoreDec = 7, + SETTING_Ambience = 8; + +local Sections, Modes; +local clonk, setupPlayer; + +// Selected values +local section, mode; +local extinguisherEnabled, friendlyPushingEnabled, rotateInJumpEnabled; +local ambienceEnabled; +local numRelaunches; +local deathmatchEnabled, deathmatchWinScore; + +protected func Initialize() +{ + Sections = []; + for (var i = 0, def; def = GetDefinition(i, C4D_StaticBack); ++i) + { + if (DefinitionCall(def, "SectionName")) Sections[GetLength(Sections)] = def; + } + section = Sections[0]; + + Modes = [ + [MODE_Classic, "$ModeClassic$", ROCK], + [MODE_SuddenDeath, "$ModeSuddenDeath$", SDDT], + [MODE_Magic, "$ModeMagic$", SMGC], + [MODE_Apocalyptic, "$ModeApocalyptic$", APCE]]; +} + +private func ShowSetup() +{ + ShowMessage(); + ShowSectionMenu(); +} + +private func ShowSectionMenu() +{ + CreateMenu(GetID(), clonk, 0, C4MN_Extra_None, 0, 0, C4MN_Style_Context); + + for (var i = 0; i < GetLength(Sections); ++i) + { + clonk->AddMenuItem(GetName(0, Sections[i]), Format("SelectSection(%i)", Sections[i]), Sections[i]); + CheckPreselect(Sections[i] == section, i); + } +} + +private func SelectSection(id selectedSection) +{ + section = selectedSection; + ShowMessage(); + + ShowModeMenu(); +} + +private func ShowModeMenu() +{ + CreateMenu(GetID(), clonk, 0, C4MN_Extra_None, 0, 0, C4MN_Style_Context); + + var menuItemIndex = 0; + for (var m in Modes) + { + clonk->AddMenuItem(m[1], Format("SelectMode(%d)", m[0]), m[2]); + CheckPreselect(m[0] == mode, menuItemIndex++); + } + + clonk->AddMenuItem("$Back$", "ShowSectionMenu()", ROCK); +} + +private func SelectMode(int selectedMode) +{ + mode = selectedMode; + if (mode == MODE_SuddenDeath) deathmatchEnabled = false; + ShowMessage(); + + ShowSettingsMenu(); +} + +private func ShowSettingsMenu(bool preselect, int selectedSetting) +{ + CreateMenu(GetID(), clonk, 0, C4MN_Extra_None, 0, 0, C4MN_Style_Context); + + var menuItemIndex = 0; + + // Deathmatch entry + if (mode != MODE_SuddenDeath) + { + AddOptionMenuItem(GetName(0, DTHM), deathmatchEnabled, "SelectSetting(SETTING_Deathmatch)", DTHM); + CheckPreselect(preselect && selectedSetting == SETTING_Deathmatch, 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++); + + // Ambience entry + AddOptionMenuItem("$Ambience$", ambienceEnabled, "SelectSetting(SETTING_Ambience)", SABC); + CheckPreselect(preselect && selectedSetting == SETTING_Ambience, menuItemIndex++); + + if (!deathmatchEnabled) + { + clonk->AddMenuItem("$Relaunches$ +", "SelectSetting(SETTING_RelaunchesInc)", SKUL); + CheckPreselect(preselect && selectedSetting == SETTING_RelaunchesInc, menuItemIndex++); + clonk->AddMenuItem("$Relaunches$ -", "SelectSetting(SETTING_RelaunchesDec)", SKUL); + CheckPreselect(preselect && selectedSetting == SETTING_RelaunchesDec, menuItemIndex++); + } + else + { + clonk->AddMenuItem("$Kills$ +", "SelectSetting(SETTING_DeathmatchScoreInc)", SWOR); + CheckPreselect(preselect && selectedSetting == SETTING_DeathmatchScoreInc, menuItemIndex++); + clonk->AddMenuItem("$Kills$ -", "SelectSetting(SETTING_DeathmatchScoreDec)", SWOR); + CheckPreselect(preselect && selectedSetting == SETTING_DeathmatchScoreDec, menuItemIndex++); + } + + clonk->AddMenuItem("$Done$", "SetupDone()", GOLD); + CheckPreselect(!preselect, menuItemIndex++); + clonk->AddMenuItem("$Back$", "ShowModeMenu()", ROCK); +} + +private func SelectSetting(int selectedSetting) +{ + if (selectedSetting == SETTING_Deathmatch) + { + deathmatchEnabled = !deathmatchEnabled; + } + else if (selectedSetting == SETTING_Extinguisher) + { + extinguisherEnabled = !extinguisherEnabled; + } + else if (selectedSetting == SETTING_FriendlyPushing) + { + friendlyPushingEnabled = !friendlyPushingEnabled; + } + else if (selectedSetting == SETTING_RotateInJump) + { + rotateInJumpEnabled = !rotateInJumpEnabled; + } + else if (selectedSetting == SETTING_Ambience) + { + ambienceEnabled = !ambienceEnabled; + } + else if (selectedSetting == SETTING_RelaunchesInc) + { + ++numRelaunches; + } + else if (selectedSetting == SETTING_RelaunchesDec) + { + numRelaunches = Max(numRelaunches - 1, 0); + } + else if (selectedSetting == SETTING_DeathmatchScoreInc) + { + ++deathmatchWinScore; + } + else if (selectedSetting == SETTING_DeathmatchScoreDec) + { + deathmatchWinScore = Max(deathmatchWinScore - 1, 1); + } + + ShowMessage(); + + ShowSettingsMenu(true, selectedSetting); +} + +private func SetupDone() +{ + ShowMessage(); + GameCall("StartGame", this, GetMessage()); +} + +private func AddOptionMenuItem(string caption, bool enabled, string command, id idItem) +{ + clonk->AddMenuItem(IIf(enabled, caption, Format("<c a0a0a0>%s</c>", caption)), command, idItem); +} + +private func CheckPreselect(bool preselect, int menuItemIndex) +{ + if (preselect) clonk->SelectMenuItem(menuItemIndex); +} + +private func KeepMenuOpen() +{ + // Find new player? + if (!GetPlayerID(setupPlayer)) + { + clonk = 0; + if (GetPlayerCount() == 0) return; + setupPlayer = GetPlayerByIndex(0); + } + + // Find clonk + if (!clonk || !clonk->GetAlive()) clonk = GetCrew(setupPlayer); + + // (Re)open menu + if (clonk && !clonk->GetMenu()) ShowSetup(); +} + +private func ShowMessage() { Message("@%s", 0, GetMessage()); } + +private func GetMessage() +{ + var msgSection = Format("$Landscape$: %s", GetName(0, section)); + + var msgMode; + for (var m in Modes) + { + if (m[0] == mode) + { + msgMode = Format("$Mode$: {{%i}} %s", m[2], m[1]); + break; + } + } + + var msgWinScore; + if (!deathmatchEnabled) + { + msgWinScore = Format("{{SKUL}} $Relaunches$: %d", numRelaunches); + } + else + { + msgWinScore = Format("{{SWOR}} %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 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); +}
\ 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 new file mode 100644 index 0000000..bd28a61 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblDE.txt @@ -0,0 +1,14 @@ +ModeClassic=Klassisches Schubsen +ModeSuddenDeath=<c ffff00>Sudden Death</c> +ModeMagic=<c 0000ff>Magisches Schubsen</c> +ModeApocalyptic=<c ff0000>Apokalyptisches Schubsen</c> +Back=Zurück +Done=Fertig +Relaunches=Relaunches +Kills=Kills +SectionClassic=Klassisch +Landscape=Landschaft +Mode=Modus +Enabled=Aktiviert +Disabled=Deaktiviert +Ambience=Ambiente diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt new file mode 100644 index 0000000..cd1f9c1 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt @@ -0,0 +1,14 @@ +ModeClassic=Classic Pushing +ModeSuddenDeath=<c ffff00>Sudden Death</c> +ModeMagic=<c 0000ff>Magical Pushing</c> +ModeApocalyptic=<c ff0000>Apocalyptical Pushing</c> +Back=Back +Done=Done +Relaunches=Relaunches +Kills=Kills +SectionClassic=Classic +Landscape=Landscape +Mode=Mode +Enabled=Enabled +Disabled=Disabled +Ambience=Ambience diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DefCore.txt index f7f528c..76d56e6 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/DefCore.txt +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DefCore.txt @@ -1,7 +1,7 @@ [DefCore] -id=SMGC +id=SPSR Version=4,9,8 -Name=SymbolMagic +Name=SpawnPointSpawner Category=C4D_StaticBack Width=1 Height=1 diff --git a/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DescDE.txt new file mode 100644 index 0000000..960aedf --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DescDE.txt @@ -0,0 +1 @@ +Im Spiel finden sich Spawn Points, die als sicherer Nachschub an Waffen und Tränken dienen.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DescUS.txt new file mode 100644 index 0000000..6719be2 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DescUS.txt @@ -0,0 +1 @@ +Creates some spawn points in the game which are creating weapons and potions.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Graphics.png Binary files differindex 1543a79..1543a79 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Graphics.png +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Names.txt new file mode 100644 index 0000000..f74bd88 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Spawn Point Spawner +US:Spawn Point Spawner
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Script.c new file mode 100644 index 0000000..380ee86 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Script.c @@ -0,0 +1,57 @@ +/*-- Spawn Point Spawner --*/ + +#strict 2 + +local locations, definitions, spawnInterval; +local sumProbability; +local gamma; + +public func CreateSpawnPoints() +{ + for (var pos in locations) + { + var spawnpoint = CreateObject(SNPT, pos[0], pos[1], NO_OWNER); + if (gamma) spawnpoint->SetGamma(gamma[0], gamma[1], gamma[2]); + spawnpoint->Enable(this); + } +} + +// [[x1, y1], [x2, y2], ...] +public func SetLocations(array locations) +{ + LocalN("locations") = locations; +} + +// [[FLNT, 50], [SFLN, 20], ...] +public func SetDefinitions(array definitions) +{ + LocalN("definitions") = definitions; + + sumProbability = 0; + for (var def in definitions) + { + sumProbability += def[1]; + } +} + +public func SetSpawnpointGamma(int color1, int color2, int color3) +{ + gamma = [color1, color2, color3]; +} + +public func GetSpawnInterval() { return spawnInterval; } + +public func SetSpawnInterval(int spawnInterval) +{ + LocalN("spawnInterval") = spawnInterval; +} + +public func GetRandomDefinition() +{ + var rnd = Random(sumProbability); + for (var def in definitions) + { + rnd -= def[1]; + if (rnd < 0) return def[0]; + } +} diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/DefCore.txt index 8016aaa..b977367 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DefCore.txt +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/DefCore.txt @@ -1,12 +1,12 @@ [DefCore] -id=MSPN -Name=MagicSpawnpoint +id=SNPT +Name=SpawnPoint Version=4,9,5 -Category=25165825 +Category=C4D_StaticBack|C4D_Foreground|C4D_MouseIgnore Width=10 Height=10 Offset=-5,-5 Picture=0,0,10,10 Timer=5 TimerCall=Timer -Collectible=1
\ No newline at end of file +Collectible=1 diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/DescDE.txt index b469ce9..b469ce9 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescDE.txt +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/DescDE.txt diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/DescUS.txt index 3308b95..3308b95 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescUS.txt +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/DescUS.txt diff --git a/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..4f75bf2 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Names.txt new file mode 100644 index 0000000..1315255 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Spawn Point +US:Spawn Point
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Script.c new file mode 100644 index 0000000..def8ef0 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Script.c @@ -0,0 +1,57 @@ +/*-- Spawnpoint --*/ + +#strict 2 + +local spawner; +local framesUntilRespawn; +local angle; + +public func Enable(object spawner) +{ + LocalN("spawner") = spawner; +} + +private func SpawnObject() +{ + CreateContents(spawner->GetRandomDefinition()); + SetGraphics(0, 0, Contents()->GetID(), GFX_Overlay, GFXOV_MODE_Base); + SetObjDrawTransform(1000, 0, 0, 0, 1000, -5000, 0, 1); +} + +private func Timer() +{ + if (!Contents()) + { + framesUntilRespawn -= 5; + if (framesUntilRespawn <= 0) SpawnObject(); + } + + angle = (angle + 10) % 360; + SetObjDrawTransform(1000, 0, 0, 0, 1000, Sin(angle, 8) * 1000 - 2000, 0, 1); + if (Random(2)) CreateParticle("NoGravSpark", RandomX(-5, 5), RandomX(5, 10), 0, -5, 25, RGBa(210, 210, 255, 100)); +} + +protected func RejectEntrance(object container) +{ + // Still in countdown? + if (!gameStarted) return true; + + // Container has to be a crew member + if (!(container->GetOCF() & OCF_CrewMember)) return true; + + // Ready? + if (!Contents()) return true; + + // Try to let container collect the object + container->Collect(Contents()); + + // Object still there? Then something went wrong + if (Contents()) return true; + + container->Sound("Grab", false, 0, 0, GetOwner(container) + 1); + + SetGraphics(0, 0, 0, GFX_Overlay, GFXOV_MODE_Base); + framesUntilRespawn = spawner->GetSpawnInterval(); + + return true; +} diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/DefCore.txt new file mode 100644 index 0000000..0e1cca2 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/DefCore.txt @@ -0,0 +1,6 @@ +[DefCore] +id=SABC +Name=SymbolForAmbience +Version=4,9,5 +Category=C4D_StaticBack +Picture=0,0,64,64 diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..0278731 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/Names.txt new file mode 100644 index 0000000..72d8d41 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Ambiente +US:Ambience
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/DefCore.txt index 3da4878..41fde4b 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DefCore.txt +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/DefCore.txt @@ -1,8 +1,6 @@ [DefCore] -id=FLRN -Name=Sudden Death +id=SLVR +Name=SymbolForLeaver Version=4,9,5 Category=C4D_StaticBack -MaxUserSelect=1 -Value=1 Picture=0,0,64,64
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..0bb3195 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/Names.txt new file mode 100644 index 0000000..710cac9 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Leaver +US:Leaver
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Names.txt new file mode 100644 index 0000000..eac2f57 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Symbole +US:Symbols diff --git a/TemplePushing.c4s/Teams.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/DefCore.txt index 8668e4b..8668e4b 100644 --- a/TemplePushing.c4s/Teams.c4d/DefCore.txt +++ b/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/DefCore.txt diff --git a/TemplePushing.c4s/Teams.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Graphics.png Binary files differindex bcce561..bcce561 100644 --- a/TemplePushing.c4s/Teams.c4d/Graphics.png +++ b/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Graphics.png diff --git a/TemplePushing.c4s/Teams.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Names.txt index cdbcf76..cdbcf76 100644 --- a/TemplePushing.c4s/Teams.c4d/Names.txt +++ b/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Names.txt diff --git a/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DefCore.txt b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DefCore.txt new file mode 100644 index 0000000..dc029af --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=APCE +Name=Apocalypse +Version=4,9,5 +Category=C4D_StaticBack|C4D_Rule +Width=1 +Height=1 +Picture=0,0,64,64
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DescDE.txt b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DescDE.txt new file mode 100644 index 0000000..907f5df --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DescDE.txt @@ -0,0 +1 @@ +Feuerregen und keine Spawnpoints. Dafür unendlich Teraflints.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DescUS.txt b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DescUS.txt new file mode 100644 index 0000000..e803d8b --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DescUS.txt @@ -0,0 +1 @@ +Fire rain and unlimited teraflints instead of spawnpoints.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Graphics.png b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..c40dbad --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Graphics.png diff --git a/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Names.txt b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Names.txt new file mode 100644 index 0000000..d5f8556 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Apokalypse +US:Apocalypse
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Script.c b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Script.c new file mode 100644 index 0000000..2eee807 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Script.c @@ -0,0 +1,5 @@ +/*-- Apocalypse --*/ + +#strict 2 + +protected func Activate(int player) { MessageWindow(GetDesc(), player); } diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DefCore.txt b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DefCore.txt index ed84dcf..e59df19 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DefCore.txt +++ b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DefCore.txt @@ -3,7 +3,6 @@ id=DTHM Version=4,9,8 Name=Deathmatch Category=C4D_StaticBack|C4D_Rule -MaxUserSelect=1 Width=1 Height=1 Picture=0,0,64,64 diff --git a/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DescDE.txt b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DescDE.txt new file mode 100644 index 0000000..275b739 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DescDE.txt @@ -0,0 +1 @@ +Das Team, das zuerst eine bestimmte Anzahl Gegner tötet, gewinnt.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DescUS.txt b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DescUS.txt new file mode 100644 index 0000000..c2d218e --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DescUS.txt @@ -0,0 +1 @@ +The team that kills a certain number of enemies first wins the game.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/Graphics.png b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..7a6774a --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/Graphics.png diff --git a/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/Script.c b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/Script.c new file mode 100644 index 0000000..a7b5772 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/Script.c @@ -0,0 +1,8 @@ +/*-- Deathmatch --*/ + +#strict 2 + +protected func Activate(int player) +{ + MessageWindow(Format("$InfoMessage$", deathmatchWinScore), player); +} diff --git a/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/StringTblDE.txt b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/StringTblDE.txt new file mode 100644 index 0000000..7934d6d --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/StringTblDE.txt @@ -0,0 +1 @@ +InfoMessage=Das Team, das zuerst %d Gegner tötet, gewinnt.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/StringTblUS.txt b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/StringTblUS.txt new file mode 100644 index 0000000..12fd314 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/StringTblUS.txt @@ -0,0 +1 @@ +InfoMessage=The team that kills %d enemies first wins the game.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/DescDE.txt b/TemplePushing.c4s/Rules.c4d/DescDE.txt index bf4504d..bf4504d 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/DescDE.txt +++ b/TemplePushing.c4s/Rules.c4d/DescDE.txt diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/DescUS.txt b/TemplePushing.c4s/Rules.c4d/DescUS.txt index 022d0bf..022d0bf 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/DescUS.txt +++ b/TemplePushing.c4s/Rules.c4d/DescUS.txt diff --git a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/ActMap.txt b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/ActMap.txt index 8a13109..8a13109 100644 --- a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/ActMap.txt +++ b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/ActMap.txt diff --git a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/DefCore.txt b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/DefCore.txt index 626702c..626702c 100644 --- a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/DefCore.txt +++ b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/DefCore.txt diff --git a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/DescDE.txt b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/DescDE.txt index f8cae0d..f8cae0d 100644 --- a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/DescDE.txt +++ b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/DescDE.txt diff --git a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/DescUS.txt b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/DescUS.txt index 0c93c3f..0c93c3f 100644 --- a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/DescUS.txt +++ b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/DescUS.txt diff --git a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Graphics.png b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Graphics.png Binary files differindex 6b89fed..6b89fed 100644 --- a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Graphics.png +++ b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Graphics.png diff --git a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Names.txt b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Names.txt index 2466655..2466655 100644 --- a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Names.txt +++ b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Names.txt diff --git a/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Script.c b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Script.c new file mode 100644 index 0000000..b776159 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Script.c @@ -0,0 +1,35 @@ +/*-- Extinguisher --*/ + +#strict 2 + +private func Check() +{ + if (!ActIdle()) return; + for (var obj in FindObjects(Find_OCF(OCF_OnFire))) + { + if (!FindObject2(Find_ID(GetID()), Find_Action("IsOnFire"), Find_ActionTarget(obj), Find_OCF(OCF_Alive))) + { + var extinguisher = CreateObject(GetID(), 0, 0, NO_OWNER); + extinguisher->SetAction("IsOnFire", obj); + } + } +} + +private func DoExtinguish() +{ + var target = GetActionTarget(); + if (!target || !target->GetAlive()) + { + RemoveObject(); + return; + } + + if (GetActTime() > 200) + { + target->Extinguish(); + RemoveObject(); + return; + } +} + +protected func Activate(int player) { MessageWindow(GetDesc(), player); } diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/DefCore.txt b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/DefCore.txt index 1ddf7c5..8caa63b 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/DefCore.txt +++ b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/DefCore.txt @@ -3,7 +3,6 @@ id=FYPG Version=4,9,8 Name=Friendly Pushing Category=C4D_StaticBack|C4D_Rule -MaxUserSelect=1 Width=1 Height=1 Picture=0,0,64,64 diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/DescDE.txt b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/DescDE.txt index 729840e..729840e 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/DescDE.txt +++ b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/DescDE.txt diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/DescUS.txt b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/DescUS.txt index 6b5d08d..6b5d08d 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/DescUS.txt +++ b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/DescUS.txt diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Graphics.png b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Graphics.png Binary files differindex d97f792..d97f792 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Graphics.png +++ b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Graphics.png diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Names.txt b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Names.txt index 34d3e41..34d3e41 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Names.txt +++ b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Names.txt diff --git a/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Script.c b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Script.c new file mode 100644 index 0000000..5e1233e --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Script.c @@ -0,0 +1,5 @@ +/*-- Friendly Pushing --*/ + +#strict 2 + +protected func Activate(int player) { MessageWindow(GetDesc(), player); } diff --git a/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/DefCore.txt b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/DefCore.txt new file mode 100644 index 0000000..fc00032 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=MLPG +Version=4,9,8 +Name=MagicalPushing +Category=C4D_StaticBack +Width=1 +Height=1 +Picture=0,0,64,64
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/DescDE.txt b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/DescDE.txt index e8257be..e8257be 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/DescDE.txt +++ b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/DescDE.txt diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/DescUS.txt b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/DescUS.txt index f2b1ba6..f2b1ba6 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/DescUS.txt +++ b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/DescUS.txt diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Graphics.png b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Graphics.png Binary files differindex 351d65c..351d65c 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Graphics.png +++ b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Graphics.png diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/Names.txt b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Names.txt index 8e9cb1f..8e9cb1f 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/Names.txt +++ b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Names.txt diff --git a/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Script.c b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Script.c new file mode 100644 index 0000000..1ff7e74 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Script.c @@ -0,0 +1,5 @@ +/*-- Magical Pushing --*/ + +#strict 2 + +protected func Activate(int player) { MessageWindow(GetDesc(), player); } diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DefCore.txt b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DefCore.txt index 0342fe5..abb327f 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DefCore.txt +++ b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DefCore.txt @@ -1,9 +1,8 @@ [DefCore] -id=FRRN -Version=4,9,8 -Name=Armageddon +id=RIJP +Name=RotateInJump +Version=4,9,5 Category=C4D_StaticBack|C4D_Rule -MaxUserSelect=1 Width=1 Height=1 Picture=0,0,64,64 diff --git a/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DescDE.txt b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DescDE.txt new file mode 100644 index 0000000..df53b35 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DescDE.txt @@ -0,0 +1 @@ +Clonks können auch beim Springen die Richtung wechseln.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DescUS.txt b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DescUS.txt new file mode 100644 index 0000000..e966d00 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DescUS.txt @@ -0,0 +1 @@ +Allows the Clonk to change his direction while jumping.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Graphics.png b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..3be321f --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Graphics.png diff --git a/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Names.txt b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Names.txt new file mode 100644 index 0000000..71c92a9 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Rotation im Sprung +US:Rotate in jump
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Script.c b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Script.c new file mode 100644 index 0000000..cde903c --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Script.c @@ -0,0 +1,5 @@ +/*-- Turn in jump --*/ + +#strict 2 + +protected func Activate(int player) { MessageWindow(GetDesc(), player); } diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DefCore.txt b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DefCore.txt index 4515779..e282958 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DefCore.txt +++ b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DefCore.txt @@ -1,9 +1,8 @@ [DefCore] -id=JSTS -Version=4,9,8 -Name=JustScrolls +id=SDDT +Name=SuddenDeath +Version=4,9,5 Category=C4D_StaticBack|C4D_Rule -MaxUserSelect=1 Width=1 Height=1 Picture=0,0,64,64 diff --git a/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DescDE.txt b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DescDE.txt new file mode 100644 index 0000000..51022ea --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DescDE.txt @@ -0,0 +1 @@ +Jeder Treffer ist fatal; Spawnpoints spawnen nur Steine.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DescUS.txt b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DescUS.txt new file mode 100644 index 0000000..5b266ce --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DescUS.txt @@ -0,0 +1 @@ +Every hit is fatal; Spawnpoints only spawn rocks.
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Graphics.png b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..e313589 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Graphics.png diff --git a/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Names.txt b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Names.txt new file mode 100644 index 0000000..59f13a7 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Sudden Death +US:Sudden Death
\ No newline at end of file diff --git a/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Script.c b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Script.c new file mode 100644 index 0000000..d406c12 --- /dev/null +++ b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Script.c @@ -0,0 +1,8 @@ +/*-- Neues Objekt --*/ + +#strict + +func Initialize() { + + return(1); +} diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Title.txt b/TemplePushing.c4s/Rules.c4d/Title.txt index 0cec1dc..0cec1dc 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Title.txt +++ b/TemplePushing.c4s/Rules.c4d/Title.txt diff --git a/TemplePushing.c4s/Scenario.txt b/TemplePushing.c4s/Scenario.txt Binary files differindex 77752d8..8812ac7 100644 --- a/TemplePushing.c4s/Scenario.txt +++ b/TemplePushing.c4s/Scenario.txt diff --git a/TemplePushing.c4s/Script.c b/TemplePushing.c4s/Script.c index a37985f..7c0b225 100644 --- a/TemplePushing.c4s/Script.c +++ b/TemplePushing.c4s/Script.c @@ -2,217 +2,438 @@ #strict 2 -static const MODE_Normal = 0, MODE_ScrollsOnly = 1, MODE_Cancer = 2; -static const MENU_Landscape = 0, MENU_Mode = 1, MENU_Settings = 2; +static const MODE_Classic = 0, MODE_SuddenDeath = 1, MODE_Magic = 2, MODE_Apocalyptic = 3; -static setupDone, setupPlayer; -static gameMode; -static landscape; -static deathmatchEnabled, deathmatchKillLimit; -static relaunches, playerScore, teamScore; -static g_iSaveSectIndex,szSection; -static pChooser,iDif; +static section, mode; +static numRelaunches; +static deathmatchEnabled, deathmatchWinScore; +static playerDeaths, playerScore, teamScore; +static ambienceEnabled; +static loadingSection; +static gameStartMessage, countdown, gameStarted, gameOver; func Initialize() { - // Create background sound, fog and rain - SoundLevel("Ambiente", 50); - for (var i; i < 300; ++i) - { - CreateParticle("Fog", Random(LandscapeWidth()), Random(LandscapeHeight()) + 500, RandomX(3, 9), 0, RandomX(1000, 1500)); - } - CreateObject(RAIN, 0, 0, NO_OWNER); + ShowLobby(); - // Moving brick - CreateObject(BRK2, 225, 150, NO_OWNER); - CreateObject(BRK2, 985, 150, NO_OWNER); - // Initial values - deathmatchKillLimit = 20; - setupDone = false; - setupPlayer = -1; - relaunches = CreateArray(); + deathmatchWinScore = 20; + playerDeaths = CreateArray(); playerScore = CreateArray(); teamScore = CreateArray(); - - // Initialize scoreboard - SetScoreboardData(SBRD_Caption, 0, "{{MELE}}"); - SetScoreboardData(SBRD_Caption, 1, "{{GBLT}}"); - SetScoreboardData(SBRD_Caption, 2, "{{CXIV}}"); - DoScoreboardShow(1); - + countdown = 5; + + // Create setup menu + var menu = CreateObject(SPMU, 0, 0, NO_OWNER); + menu->LocalN("extinguisherEnabled") = false; + menu->LocalN("rotateInJumpEnabled") = true; + menu->LocalN("numRelaunches") = 10; + menu->LocalN("deathmatchWinScore") = 25; + menu->LocalN("ambienceEnabled") = true; + ScriptGo(true); } +func TeamRow(int team) { return 1 + team * 1000; } +func PlayerRow(int player) { return TeamRow(GetPlayerTeam(player)) + GetPlayerID(player); } + func InitializePlayer(int player) { - if (!setupDone && setupPlayer == -1) + if (LobbyActive()) return; + + var team = GetPlayerTeam(player); + playerDeaths[GetPlayerID(player)] = 0; + if (team) SetScoreboardData(TeamRow(team), SBRD_Caption, Format("<c %x>%s</c>", GetTeamColor(team), GetTeamName(team)), TeamRow(team)); + SetScoreboardData(PlayerRow(player), SBRD_Caption, GetTaggedPlayerName(player), PlayerRow(player)); + UpdateScoreboard(player); + SortScoreboard(SBRD_Caption); + LaunchClonk(player, GetCrew(player)); +} + +func RemovePlayer(int player) +{ + if (!LobbyActive()) { - setupPlayer = player; - ShowSetup(); + // Leaver? + var relaunchesLeft = numRelaunches - playerDeaths[GetPlayerID(player)]; + if (!deathmatchEnabled && relaunchesLeft >= 0 || deathmatchEnabled && !gameOver) SetScoreboardData(PlayerRow(player), 0, "{{SLVR}}"); } +} - /*if (!iDif && GetCrew(GetPlayerCount() - 1)) InitializePlayer2(0); - if (!FindObject(DTHM)) relaunches[player] = 10;*/ +func UpdateScoreboard(int player) +{ + if (!GetPlayerID(player)) return; - UpdateScoreboard(); + if (!deathmatchEnabled) + { + var relaunchesLeft = numRelaunches - playerDeaths[GetPlayerID(player)]; + SetScoreboardData(PlayerRow(player), 0, Format("%d", IIf(relaunchesLeft < 0, "{{SKUL}}", relaunchesLeft))); + } + else + { + SetScoreboardData(PlayerRow(player), 0, Format("%d", playerScore[GetPlayerID(player)])); + var team = GetPlayerTeam(player); + if (team) SetScoreboardData(TeamRow(team), 0, Format("%d", teamScore[team])); + } } -func RemovePlayer(int player, int team) +func ShowLobby() { - playerScore[player] = 0; - UpdateScoreboard(); + LoadScenarioSection("Lobby"); +} - // Player leaves and is still in setup? - if (!setupDone && setupPlayer == player) +func StartGame(object menu, string message) +{ + // Copy settings from menu + var sectionID = menu->LocalN("section"); + mode = menu->LocalN("mode"); + var extinguisherEnabled = menu->LocalN("extinguisherEnabled"); + var friendlyPushingEnabled = menu->LocalN("friendlyPushingEnabled"); + var rotateInJumpEnabled = menu->LocalN("rotateInJumpEnabled"); + ambienceEnabled = menu->LocalN("ambienceEnabled"); + numRelaunches = menu->LocalN("numRelaunches"); + deathmatchEnabled = menu->LocalN("deathmatchEnabled"); + deathmatchWinScore = menu->LocalN("deathmatchWinScore"); + menu->RemoveObject(); + + // Change scenario section + loadingSection = true; + //Log("Before LoadScenarioSection()"); + LoadScenarioSection(DefinitionCall(sectionID, "SectionName")); + //Log("After LoadScenarioSection()"); + loadingSection = false; + section = CreateObject(sectionID, 0, 0, NO_OWNER); + + // Create spawnpoints + if (mode != MODE_Apocalyptic) { - // Try to find any other player to continue setup - for (var i = 0; i < GetPlayerCount(); ++i) + //Log("Creating spawnpoints"); + + var spawnPointSpawner = CreateObject(SPSR, 0, 0, NO_OWNER); + spawnPointSpawner->SetLocations(section->SpawnpointLocations()); + + if (mode != MODE_Magic) { - setupPlayer = GetPlayerByIndex(i); - if (setupPlayer != player) - { - ShowSetup(); - return; - } + spawnPointSpawner->SetDefinitions([[ROCK, 9], [SCRL, 9], [FLNT, 9], [SFLN, 9], [STFN, 4], [EFLN, 4], [FBMP, 4]]); + spawnPointSpawner->SetSpawnInterval(750); + } + else + { + spawnPointSpawner->SetDefinitions([[SCRL, 14], [GBLT, 1]]); + spawnPointSpawner->SetSpawnInterval(1000); + spawnPointSpawner->SetSpawnpointGamma(RGB(5, 5, 10), RGB(80, 80, 150), RGB(200, 200, 255)); } + spawnPointSpawner->CreateSpawnPoints(); } - // No other players? - setupPlayer = -1; -} + // Effects for apocalypse mode + if (mode == MODE_Apocalyptic) + { + AddEffect("CreateTeraFlints", 0, 20, 90); + AddEffect("ShakeScreen", 0, 20, 50); + AddEffect("Bottom", 0, 20, 2); + AddEffect("SkyAdjust", 0, 20, 1); + } -func ShowSetup(int menuStage, int selection, bool back) -{ - var clonk = GetCrew(setupPlayer); - - // Clonk already in setup menu? - if (clonk->GetMenu()) return; + // Create melee goal + //Log("Creating melee goal"); + CreateObject(MELE, 0, 0, NO_OWNER); - //int CreateMenu (id idSymbol, object pMenuObject, object pCommandObject, int iExtra, string szCaption, int iExtraData, int iStyle, bool fPermanent, id idMenuID); - //int AddMenuItem (string szCaption, string szCommand, id idItem, object pMenuObject, int iCount, int iParameter, string szInfoCaption, int iExtra, any XPar1, any XPar2); + // Create rules + //Log("Creating rules"); + if (extinguisherEnabled) CreateObject(_ETG, 0, 0, NO_OWNER); + if (friendlyPushingEnabled) CreateObject(FYPG, 0, 0, NO_OWNER); + if (rotateInJumpEnabled) CreateObject(RIJP, 0, 0, NO_OWNER); - CreateMenu(ROCK, clonk, 0, C4MN_Extra_None, 0, 0, C4MN_Style_Context); + //Log("Creating mode rules"); + if (mode == MODE_SuddenDeath) + { + CreateObject(SDDT, 0, 0, NO_OWNER); + } + else if (mode == MODE_Magic) + { + CreateObject(MLPG, 0, 0, NO_OWNER); + } + else if (mode == MODE_Apocalyptic) + { + CreateObject(APCE, 0, 0, NO_OWNER); + } - if (menuStage == MENU_Landscape) + // Deathmatch? + if (deathmatchEnabled) { - clonk->AddMenuItem("Default landscape", "ShowSetup(MENU_Mode, 0)", ROCK); + //Log("Creating deathmatch rule"); + CreateObject(DTHM, 0, 0, NO_OWNER); + SetScoreboardData(SBRD_Caption, 0, "{{DTHM}}"); + SetScoreboardData(0, SBRD_Caption, "$WinScore$"); + SetScoreboardData(0, 0, Format("%d", deathmatchWinScore)); } - else if (menuStage == MENU_Mode) + else { - if (!back) landscape = selection; - - // List modes + SetScoreboardData(SBRD_Caption, 0, "{{SKUL}}"); + } + + // Initialize players + //Log("Initializing players"); + for (var i = 0; i < GetPlayerCount(); ++i) + { + InitializePlayer(GetPlayerByIndex(i)); + } + + //Log("Starting countdown"); + gameStartMessage = message; + ShowCountdown(); + + //Log("StartGame() done"); +} + +func ShowCountdown() +{ + if (countdown == 0) + { + gameStartMessage = 0; + Message(""); + Schedule("SetMaxPlayer(0)", 60 * 38); - var modes = [ - ["Normal", MODE_Normal], - ["Scrolls only", MODE_ScrollsOnly], - ["Cancer", MODE_Cancer]]; - - var itemIndex = 0; - for (var mode in modes) + // Reenable crew + for (var i = 0; i < GetPlayerCount(); ++i) { - clonk->AddMenuItem(mode[0], Format("ShowSetup(MENU_Settings, %d)", mode[1]), ROCK); - if (mode[1] == gameMode) clonk->SelectMenuItem(itemIndex); - ++itemIndex; + var player = GetPlayerByIndex(i); + var clonk = GetCrew(player); + if (!clonk) continue; // Happens if player still in team choice menu + + // Relaunch if clonk does not stand. + if (clonk->GetAction() != "Walk") + { + clonk->Kill(); + clonk = GetCrew(player); + } + + clonk->SetCrewEnabled(true); + SelectCrew(player, clonk, true); + + // Make sure all clonks start with equal health + clonk->Extinguish(); + ResetHealth(clonk); } - clonk->AddMenuItem("Back", "ShowSetup(MENU_Landscape, 0, true)", ROCK); + gameStarted = true; } - else if (menuStage == MENU_Settings) + else { - if (!back) gameMode = selection; - clonk->AddMenuItem("Back", "ShowSetup(MENU_Mode, 0, true)", ROCK); + Message("@<c ffff00>%d</c>|%s", 0, countdown, gameStartMessage); + Schedule("GameCall(\"ShowCountdown\")", 38); } -} - -func Script2() -{ - // Reopen setup menu if it was closed (by player or runtime join) - if (!setupDone && setupPlayer != -1) ShowSetup(); - - UpdateScoreboard(); - goto(1); - return 1; + --countdown; } -func OnClonkDeath(object clonk, int killedBy) +func LobbyActive() { return !section; } + +func HandleKill(int killed, int killer) { - var isDeathmatch = !!FindObject(DTHM); - var player = clonk->GetOwner(); - var team = GetPlayerTeam(player); - var teamKill = GetPlayerID(killedBy) == 0 || killedBy == player || team != 0 && team == GetPlayerTeam(killedBy); + // Assume suicide if killer cannot be determined + if (killer == NO_OWNER) killer = killed; - // Killed by opponent? + var killedEliminated = false; + var killedID = GetPlayerID(killed), killerID = GetPlayerID(killer); + var killedTeam = GetPlayerTeam(killed), killerTeam = GetPlayerTeam(killer); + var teamKill = killer == killed || killedTeam != 0 && killedTeam == killerTeam; + + ++playerDeaths[killedID]; + + // Update kill score if (!teamKill) { - ++playerScore[killedBy]; - if (isDeathmatch) CheckDeathmatchKillCount(); + ++playerScore[killerID]; + if (killerTeam) ++teamScore[killerTeam]; } - else + else // Decrement score on suicide or team kill { - // Deathmatch: Decrement score on suicide or team kill. - if (isDeathmatch) --playerScore[killedBy]; + if (playerScore[killerID] > 0) + { + --playerScore[killerID]; + if (killerTeam) --teamScore[killerTeam]; + } } - - // Update relaunch counter - if (!isDeathmatch) + + // Show relaunch message or eliminate player if no relaunches left + var relaunchesLeft; + if (!deathmatchEnabled) { - // No relaunches left? - if (relaunches[player] - 1 < 0) + relaunchesLeft = numRelaunches - playerDeaths[killedID]; + if (relaunchesLeft < 0) { - EliminatePlayer(player); - return; + EliminatePlayer(killed); + killedEliminated = true; } - else + else if (relaunchesLeft == 0) { - --relaunches[player]; + PlayerMessage(killed, "$MsgLastRelaunch$"); } + else if (relaunchesLeft == 1) + { + PlayerMessage(killed, "$MsgOneRelaunch$"); + } + else // More than one relaunch left + { + PlayerMessage(killed, "$MsgRelaunch$", 0, relaunchesLeft); + } + } + + // Check for deathmatch winner + if (deathmatchEnabled) + { + // Teams enabled? + if (killerTeam) + { + // Winner? + if (teamScore[killerTeam] >= deathmatchWinScore) + { + // Eliminate all players of losing teams + for (var player in GetPlayers()) + { + if (GetPlayerTeam(player) != killerTeam) EliminatePlayer(player); + } + gameOver = true; + killedEliminated = true; + } + } + else // No teams? + { + // Winner? + if (playerScore[killerID] >= deathmatchWinScore) + { + // Eliminate all losing players + for (var player in GetPlayers()) + { + if (player != killer) EliminatePlayer(player); + } + gameOver = true; + killedEliminated = true; + } + } + } + + UpdateScoreboard(killed); + UpdateScoreboard(killer); + + return killedEliminated; +} + +func GetPlayers() +{ + var players = CreateArray(GetPlayerCount()); + for (var i = 0; i < GetPlayerCount(); ++i) + { + players[i] = GetPlayerByIndex(i); + } + return players; +} - // Show relaunch message. Warn player if it was his last relaunch. - if (relaunches[player] == 0) +func OnClonkDeath(object clonk, int killedBy) +{ + if (loadingSection) return; + + var player = clonk->GetOwner(); + + // Do nothing if Clonk does not belong to a player + if (GetPlayerID(player) == 0) return; + + // Handle kill and return if player got eliminated + if (gameStarted && HandleKill(player, killedBy)) return; + + // Relaunch + if (GetPlayerID(player)) LaunchClonk(player, clonk, true); +} + +func LaunchClonk(int player, object clonk, bool forceCreate) +{ + if (!clonk || forceCreate) + { + var newClonk = CreateObject(CLNK, 0, 0, player); + if (clonk) { - PlayerMessage(player, "$MsgLastRelaunch$"); + newClonk->GrabObjectInfo(clonk); } else { - PlayerMessage(player, "$MsgRelaunch$", 0, relaunches[player]); + MakeCrewMember(newClonk, player); } + clonk = newClonk; + } + + ResetHealth(clonk); + SelectCrew(player, clonk, true); + + // Move clonk to random position + + var NumCheckPos = 10; + var positions = CreateArray(NumCheckPos); + + for (var i = 0; i < NumCheckPos; ++i) + { + var wipf = PlaceAnimal(WIPF); + positions[i] = IIf(wipf, [wipf->GetX(), wipf->GetY()], [LandscapeWidth() / 2, LandscapeHeight() / 2]); + if (wipf) wipf->RemoveObject(); } - // Create new clonk at random position - var positions = [[168, 120], [301, 150], [914, 150], [1050, 120]]; - var position = positions[Random(GetLength(positions))]; - var newclonk = CreateObject(CLNK, position[0], position[1], player); - newclonk->GrabObjectInfo(clonk); + // Prevent spawning too close to an enemy - // Armageddon? - if (FindObject(FRRN)) + var bestPosition = positions[0], bestDistance = 0; + for (var pos in positions) { - AddEffect("DoTerra", newclonk, 200, 50); - AddEffect("Bottom", newclonk, 200, 2); + var closestHostileClonk = FindObject2(Find_OCF(OCF_CrewMember | OCF_Alive), Find_Hostile(player), Sort_Distance(pos[0], pos[1])); + if (!closestHostileClonk) break; + var distance = Distance(pos[0], pos[1], closestHostileClonk->GetX(), closestHostileClonk->GetY()); + if (distance > bestDistance) + { + bestPosition = pos; + bestDistance = distance; + } } - SelectCrew(player, newclonk, true); + clonk->SetPosition(bestPosition[0], bestPosition[1]); + + // Still in countdown? + if (!LobbyActive() && !gameStarted) + { + clonk->SetCrewEnabled(false); + } + + // No corpses in apocalopyse mode + if (mode == MODE_Apocalyptic) clonk->LocalN("removeOnDeath") = true; + + if (FindObject(RIJP)) clonk->LocalN("rotateInJump") = true; + + SetPlrView(player, clonk); } -func CheckDeathmatchKillCount() +func ResetHealth(object clonk) { - var gameOver = false; + if (mode == MODE_SuddenDeath) + { + clonk->DoEnergy(1 - clonk->GetEnergy()); + } + else + { + clonk->DoEnergy(100); + } +} +func CheckDeathmatchKillCount() +{ if (GetTeamCount() == 0) { - var winner = -1; - + var winner = NO_OWNER; + // Check if a player has reached the kill limit for (var i = 0; i < GetPlayerCount(); ++i) { var plr = GetPlayerByIndex(i); - if (playerScore[plr] >= deathmatchKillLimit) + if (playerScore[plr] >= deathmatchWinScore) { winner = plr; - gameOver = true; break; } } @@ -236,10 +457,9 @@ func CheckDeathmatchKillCount() { var plr = GetPlayerByIndex(i), team = GetPlayerTeam(plr); teamScore[team] += playerScore[plr]; - if (teamScore >= deathmatchKillLimit) + if (teamScore >= deathmatchWinScore) { winnerTeam = team; - gameOver = true; break; } } @@ -254,215 +474,4 @@ func CheckDeathmatchKillCount() } } } - - UpdateScoreboard(); - - if (gameOver) GameOver(2014); -} - -func UpdateScoreboard() -{ - for (var plr; plr < GetPlayerCount(); ++plr) - { - SortScoreboard(0, true); - plr = GetPlayerByIndex(plr); - SetScoreboardData(plr, 0, GetTaggedPlayerName(plr), relaunches[plr]); - SetScoreboardData(plr, 2, Format("%d", playerScore[plr])); - if (relaunches[plr] < 0) - { - SetScoreboardData(plr, 1, Format("<c c80000>%s</c>", "$Death$")); - } - else if (relaunches[plr] <= 1) - { - SetScoreboardData(plr, 1, Format("<c c80000>%d</c>", relaunches[plr])); - } - else - { - SetScoreboardData(plr, 1, Format("%d", relaunches[plr])); - } - } -} - -/*-----------------------Spielmodi-----------------------*/ - -//Auswahl -func InitializePlayer2(iPlr) -{ - pChooser=GetHiRank(iPlr); - CreateMenu(EFLN,pChooser,0,0,0,0,1); - AddMenuItem("$Mode1$","SetDif",ROCK,pChooser,0,1); - AddMenuItem("$Mode2$","SetDif",FLRN,pChooser,0,2); - AddMenuItem("$Mode3$","SetDif",SMGC,pChooser,0,3); - AddMenuItem("$Mode4$","SetDif",FXV1,pChooser,0,4); - AddMenuItem("$Random$","SetDif",RMMG,pChooser,0,RandomX(1,4)); - return(1); -} - -func SetDif(dummy,i) -{ - if (i == 1) Message("$Mode1$"); - if (i == 2) Message("$Mode2$"); - if (i == 3) Message("$Mode3$"); - if (i == 4) Message("$Mode4$"); - - if (i==1) CreateObject(SPWN); - if (i==2) - { - Schedule("ChangeSection(\"SuddenDeath\")",10); - Message("$Load$"); - } - if (i==3) - { - CreateObject(MSPW); - SetGamma(RGB(5,5,10),RGB(80,80,150),RGB(200,200,255)); - } - if (i==4) UltimateExtreme(); -return(1); -} - -func UltimateExtreme() -{ - RemoveAll(SPNP); - RemoveAll(MSPN); - RemoveObject(FindObject(SPWN)); - CastObjects(RCKF,10); - CreateObject(FRRN); - MusicLevel(0); - SoundLevel("ExtremeAmbiente",100); - SoundLevel("Ambiente",0); - for (var Plr;Plr < GetPlayerCount();Plr ++) - { - relaunches[Plr] = 5; - AddEffect("DoTerra",GetHiRank(Plr),200,50); - AddEffect("Bottom",GetHiRank(Plr),200,2); - } - var brick; - for (var i;i<ObjectCount(BRK2);i++) - if (brick = FindObject(BRK2,0,0,0,0,0,0,0,0,brick)) - SetClrModulation(RGB(220,20,20),brick); - AddEffect("War",0,200,1); - SetMaterialColor(Material("Brick"),100,0,0,150,0,0,20,0,0); - SetGameSpeed(50); - return(1); -} - -/*----------------Landschaftstausch-------------------*/ -func ChangeSection() -{ - for (var i;i<GetPlayerCount();i++) - SaveSectObj(GetHiRank(i)); - LoadScenarioSection("SuddenDeath"); - return(RestoreSectObjs()); -} - -global func RestoreSectObjs() - { - var obj,X,Y; - for (var i= 20;i>0;i--) - { - CreateObject(BRK2,i*90,0); - CreateObject(SPNP,Random(LandscapeWidth()),Random(LandscapeHeight()+500)); - } - CastObjects(CANN,RandomX(10,20),Random(150),LandscapeWidth()/2); - CreateObject(RAIN); - CreateObject(FLRN); - CreateObject(MELE); - // Alles gespeicherte wieder herstellen - if (g_iSaveSectIndex) - while (g_iSaveSectIndex--) - if (obj=Global(20+g_iSaveSectIndex)) - { obj->SetObjectStatus(1); Global(20+g_iSaveSectIndex)=0; } - g_iSaveSectIndex=0; - for (var iPlr;iPlr<GetPlayerCount();iPlr++) - { - while (!GBackSolid(X,Y) || !GBackSolid(X-1,Y)) - { - if (Y == LandscapeHeight()) - { - Y = 0; - X ++; - } - Y ++; - } - SetPosition(X,0,GetHiRank(iPlr)); - } - } - -global func SaveSectObj(object obj) -{ - // No object? - if (!obj) return; - - // Object already processed? (Avoid infinite recursion) - var pTest, i; - while (pTest = Global(20 + i++)) - { - if (pTest == obj) return; - } - - // Save contents - var contentsCount = obj->ContentsCount(); - for (var i = 0; i < contentsCount; ++i) - { - SaveSectObj(obj->Contents(i)); - } - - // Save object - Global(20 + g_iSaveSectIndex++) = obj; - obj->SetObjectStatus(C4OS_INACTIVE); -} - -/*-------------- Effects -----------------*/ - -global func FxDoTerraTimer(object target) -{ - if (target->ContentsCount() < 3) target->CreateContents(EFLN); - ShakeViewPort(10); - return 1; -} - -global func FxBottomTimer(object target) -{ - if (target->GetY() >= LandscapeHeight() - 20) target->SetPosition(target->GetX() + RandomX(-10, 10), 0); - return 1; -} - -global func FxWarStart(object target, int effectNumber) -{ - EffectVar(0, 0, effectNumber) = 255; - EffectVar(1, 0, effectNumber) = 1; - return 1; -} - -global func FxWarTimer(object target, int effectNumber) -{ - // Remove corpses - for (var obj in FindObjects(Find_OCF(OCF_CrewMember), Find_Not(Find_OCF(OCF_Alive)))) - { - obj->RemoveObject(); - } - - if (EffectVar(1, 0, effectNumber) == 1) - { - --EffectVar(0, 0, effectNumber); - } - else - { - ++EffectVar(0, 0, effectNumber); - } - - if (EffectVar(0, 0, effectNumber) < 0) - { - EffectVar(1, 0, effectNumber) = 0; - } - else if (EffectVar(0, 0, effectNumber) > 255) - { - EffectVar(1, 0, effectNumber) = 1; - } - - var color = EffectVar(0, 0, effectNumber); - SetSkyAdjust(RGB(255, color / 2, color / 4), RGB(128, color / 2, color / 4)); - SetGamma(RGB(2, 0, 0), RGB(128, color / 2, color / 4), RGB(180, color /2 , color / 4)); - - return 1; }
\ No newline at end of file diff --git a/TemplePushing.c4s/Map.bmp b/TemplePushing.c4s/SectClassic.c4g/Map.bmp Binary files differindex f34737d..ee3c43c 100644 --- a/TemplePushing.c4s/Map.bmp +++ b/TemplePushing.c4s/SectClassic.c4g/Map.bmp diff --git a/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt b/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt new file mode 100644 index 0000000..0ca3cbe --- /dev/null +++ b/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt @@ -0,0 +1,25 @@ +[Landscape] +Sky=Clouds1;Default +ExactLandscape=0 +NewStyleLandscape=2 +NoScan=1 +MapWidth=80,0,64,250 +MapHeight=80,0,40,250 +Amplitude=10,10,0,100 +Phase=50,50,0,100 +Period=10,10,0,100 +Random=20,20,0,100 +Liquid=Water-Smooth +LiquidLevel=20,30,0,100 +Gravity=83,0,10,200 +SkyScrollMode=2 + +[Weather] +Climate=100,0,0,100 +YearSpeed=20,10,0,100 +Wind=0,100,-100,100 +Lightning=28,0,0,100 + +[Disasters] +Meteorite=100,0,0,100 +Earthquake=28,0,0,100 diff --git a/TemplePushing.c4s/SectHighUpSymm.c4g/Map.bmp b/TemplePushing.c4s/SectHighUpSymm.c4g/Map.bmp Binary files differnew file mode 100644 index 0000000..0cca27b --- /dev/null +++ b/TemplePushing.c4s/SectHighUpSymm.c4g/Map.bmp diff --git a/TemplePushing.c4s/SectHighUpSymm.c4g/Scenario.txt b/TemplePushing.c4s/SectHighUpSymm.c4g/Scenario.txt new file mode 100644 index 0000000..93acb0b --- /dev/null +++ b/TemplePushing.c4s/SectHighUpSymm.c4g/Scenario.txt @@ -0,0 +1,26 @@ +[Landscape] +Sky=Clouds1;Default +BottomOpen=1 +ExactLandscape=0 +NewStyleLandscape=2 +NoScan=1 +MapWidth=80,0,64,250 +MapHeight=80,0,40,250 +Amplitude=10,10,0,100 +Phase=50,50,0,100 +Period=10,10,0,100 +Random=20,20,0,100 +Liquid=Water-Smooth +LiquidLevel=20,30,0,100 +Gravity=83,0,10,200 +SkyScrollMode=2 + +[Weather] +Climate=100,0,0,100 +YearSpeed=20,10,0,100 +Wind=0,100,-100,100 +Lightning=28,0,0,100 + +[Disasters] +Meteorite=100,0,0,100 +Earthquake=28,0,0,100 diff --git a/TemplePushing.c4s/SectLobby.c4g/Map.bmp b/TemplePushing.c4s/SectLobby.c4g/Map.bmp Binary files differnew file mode 100644 index 0000000..6d6a5b3 --- /dev/null +++ b/TemplePushing.c4s/SectLobby.c4g/Map.bmp diff --git a/TemplePushing.c4s/SectSuddenDeath.c4g/Scenario.txt b/TemplePushing.c4s/SectSuddenDeath.c4g/Scenario.txt deleted file mode 100644 index 32de6d1..0000000 --- a/TemplePushing.c4s/SectSuddenDeath.c4g/Scenario.txt +++ /dev/null @@ -1,17 +0,0 @@ -[Head] -NoInitialize=1 - -[Landscape] -Sky=SD -TopOpen=1 -BottomOpen=1 -MapWidth=150 -MapHeight=100 -MapZoom=13,0,13,13 -NoScan=1 -ExactLandscape=0 - -[Weather] -Climate=10,0 -Wind=1,100 -Lightning=0,1
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Ambiente.wav b/TemplePushing.c4s/Sections.c4d/Ambience.wav Binary files differindex 9bd2ab1..9bd2ab1 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Ambiente.wav +++ b/TemplePushing.c4s/Sections.c4d/Ambience.wav diff --git a/TemplePushing.c4s/CliffPushing.c4d/ExtremeAmbiente.wav b/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav Binary files differindex 3a5f174..3a5f174 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/ExtremeAmbiente.wav +++ b/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DefCore.txt b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/DefCore.txt index f7f528c..34bf046 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DefCore.txt +++ b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/DefCore.txt @@ -1,7 +1,7 @@ [DefCore] -id=SMGC -Version=4,9,8 -Name=SymbolMagic +id=SNCC +Name=SectClassic +Version=4,9,5 Category=C4D_StaticBack Width=1 Height=1 diff --git a/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Graphics.png b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..11434fa --- /dev/null +++ b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Graphics.png diff --git a/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Names.txt b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Names.txt new file mode 100644 index 0000000..091768f --- /dev/null +++ b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Klassisch +US:Classic
\ No newline at end of file diff --git a/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c new file mode 100644 index 0000000..5761717 --- /dev/null +++ b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c @@ -0,0 +1,55 @@ +/*-- Classic scenario section --*/ + +#strict 2 + +public func SectionName() { return "Classic"; } + +public func SpawnpointLocations() { return [[550, 282], [603, 205], [682, 282], [784, 227], [912, 168], [1040, 120], + [651, 449], [432, 438], [170, 118], [299, 170], [435, 230], [1175, 290], [105, 380], [910, 400], [560, 610]]; } + +protected func Initialize() +{ + // Moving bricks + var bricks = [CreateObject(BRK2, 225, 150, NO_OWNER), CreateObject(BRK2, 985, 150, NO_OWNER)]; + + if (ambienceEnabled) + { + // Create background sound, fog and rain + if (mode != MODE_Apocalyptic) SoundLevel("Ambience", 50); + 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); + + // Create sun and lenseflare + CreateObject(SONE, 0, 0, NO_OWNER); + CreateObject(LENS, 0, 0, NO_OWNER); + } + + if (mode == MODE_Apocalyptic) + { + // Rock fall + for (var i = 0; i < 10; ++i) + { + CreateObject(RCKF, 0, 0, NO_OWNER); + } + + // Fire rain + AddEffect("FireRain", 0, 20, 1); + 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)); + } + + SetMaterialColor(Material("Brick"), 100, 0, 0, 150, 0, 0, 20, 0, 0); + } +}
\ No newline at end of file diff --git a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Symbols.c4d/DefCore.txt b/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/DefCore.txt index 6fbcc4b..0a249c6 100644 --- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Symbols.c4d/DefCore.txt +++ b/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/DefCore.txt @@ -1,7 +1,7 @@ [DefCore] -id=CAN1 -Version=4,9,8 -Name=Symbol +id=SHUS +Name=SectHighUpSymm +Version=4,9,5 Category=C4D_StaticBack Width=1 Height=1 diff --git a/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Graphics.png b/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..9c2207d --- /dev/null +++ b/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Graphics.png diff --git a/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Names.txt b/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Names.txt new file mode 100644 index 0000000..2f7c818 --- /dev/null +++ b/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Irgendetwas mit 'Hoch droben', 'Himmelsschubsen' o.Ä. +US:Irgendetwas mit Medien
\ No newline at end of file diff --git a/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Script.c b/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Script.c new file mode 100644 index 0000000..cf4bde0 --- /dev/null +++ b/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Script.c @@ -0,0 +1,7 @@ +/*-- Unnamed scenario section --*/ + +#strict 2 + +public func SectionName() { return "HighUpSymm"; } + +public func SpawnpointLocations() { return []; } // TODO diff --git a/TemplePushing.c4s/StringTblDE.txt b/TemplePushing.c4s/StringTblDE.txt index 1d00755..45b7ea1 100644 --- a/TemplePushing.c4s/StringTblDE.txt +++ b/TemplePushing.c4s/StringTblDE.txt @@ -1,11 +1,8 @@ -TeamTerraThrowers=Terrawerfer -TeamFireFreaks=Feuerfanatiker +TeamOne=Tempelspringer +TeamTwo=Klippenschubser MsgRelaunch=Du hast noch %d Relaunchs. +MsgOneRelaunch=Du hast nur noch einen Relaunch. MsgLastRelaunch=Das war dein letzter Relaunch. -Mode1=Modus - Klassisches Schubsen -Mode2=Modus - <c ffff00>Sudden Death</c> -Mode3=Modus - <c 0000ff>Magisches Schubsen</c> -Mode4=Modus - <c ff0000>Apokalyptisches Schubsen</c> -Random=Zufällig Death=Tot Load=Landschaft wird geladen... +WinScore=Sieg diff --git a/TemplePushing.c4s/StringTblUS.txt b/TemplePushing.c4s/StringTblUS.txt index 739b1ba..2cf5687 100644 --- a/TemplePushing.c4s/StringTblUS.txt +++ b/TemplePushing.c4s/StringTblUS.txt @@ -1,11 +1,8 @@ -TeamTerraThrowers=Terra Throwers -TeamFireFreaks=Fire Freaks +TeamOne=Temple Jumpers +TeamTwo=Cliff Pushers MsgRelaunch=You have %d relaunchs remaining. +MsgOneRelaunch=You only have one relaunch remaining. MsgLastRelaunch=This was your last relaunch. -Mode1=Mode - Classic Pushing -Mode2=Mode - <c ffff00>Sudden Death</c> -Mode3=Mode - <c 0000ff>Magical Pushing</c> -Mode4=Mode - <c ff0000>Apocalyptical Pushing</c> -Random=Random -Death=Death +Death=Dead Load=Loading Landscape... +WinScore=Goal diff --git a/TemplePushing.c4s/System.c4g/ApocalypseEffects.c b/TemplePushing.c4s/System.c4g/ApocalypseEffects.c new file mode 100644 index 0000000..cefa608 --- /dev/null +++ b/TemplePushing.c4s/System.c4g/ApocalypseEffects.c @@ -0,0 +1,78 @@ +/*-- Apocalypse Effects --*/ + +#strict 2 + +global func FxCreateTeraFlintsTimer() +{ + for (var i = 0; i < GetPlayerCount(); ++i) + { + var clonk = GetCrew(GetPlayerByIndex(i)); + if (!clonk) continue; + + var teraflint = CreateObject(EFLN, 0, 0, NO_OWNER); + if (!clonk->Collect(teraflint)) teraflint->RemoveObject(); + } + + return 1; +} + +global func FxShakeScreenTimer() +{ + ShakeViewPort(10); + return 1; +} + +global func FxSkyAdjustStart(object target, int effectNumber) +{ + EffectVar(0, 0, effectNumber) = 255; + EffectVar(1, 0, effectNumber) = 1; + return 1; +} + +global func FxSkyAdjustTimer(object target, int effectNumber) +{ + var color = EffectVar(0, 0, effectNumber); + var decrease = EffectVar(1, 0, effectNumber); + + // Increase/decrease color value + if (decrease) + { + --color; + } + else + { + ++color; + } + + // Switch direction? + if (color <= 0) + { + color = 0; + decrease = false; + } + else if (color >= 255) + { + color = 255; + decrease = true; + } + + // Apply color + SetSkyAdjust(RGB(255, color / 2, color / 4), RGB(128, color / 2, color / 4)); + SetGamma(RGB(2, 0, 0), RGB(128, color / 2, color / 4), RGB(180, color /2 , color / 4)); + + EffectVar(0, 0, effectNumber) = color; + EffectVar(1, 0, effectNumber) = decrease; + + return 1; +} + +global func FxBottomTimer() +{ + for (var i = 0; i < GetPlayerCount(); ++i) + { + var clonk = GetCrew(GetPlayerByIndex(i)); + if (clonk && clonk->GetY() >= LandscapeHeight() - 20) clonk->SetPosition(clonk->GetX() + RandomX(-10, 10), 0); + } + + return 1; +}
\ No newline at end of file diff --git a/TemplePushing.c4s/System.c4g/Axe.c b/TemplePushing.c4s/System.c4g/Axe.c deleted file mode 100644 index a718d58..0000000 --- a/TemplePushing.c4s/System.c4g/Axe.c +++ /dev/null @@ -1,21 +0,0 @@ -#strict -#appendto AXE1 - -func Activate(pClonk) -{ - [$Shot$|Image=GNPW] - Sound("Blast2"); - Exit(this(),-10+20*GetDir(pClonk)); - SetXDir(-80+160*GetDir(pClonk)); - SetYDir(-10); - return(1); -} - -func Hit() -{ - if (Random(2)) return(_inherited()); - else - SetYDir(-20); - Sound("BOING"); - return(1); -} diff --git a/TemplePushing.c4s/System.c4g/Bounce.c b/TemplePushing.c4s/System.c4g/Bounce.c new file mode 100644 index 0000000..e52c395 --- /dev/null +++ b/TemplePushing.c4s/System.c4g/Bounce.c @@ -0,0 +1,17 @@ +/*-- Makes some objects bounce after hit --*/ + +#strict 2 + +#appendto AXE1 +#appendto EFLN +#appendto SWOR + +protected func Hit() +{ + if (Random(2)) return _inherited(); + SetYDir(-20); + + Sound("Boing"); + + return 1; +} diff --git a/TemplePushing.c4s/System.c4g/Clonk.c b/TemplePushing.c4s/System.c4g/Clonk.c index 2308576..8c395b4 100644 --- a/TemplePushing.c4s/System.c4g/Clonk.c +++ b/TemplePushing.c4s/System.c4g/Clonk.c @@ -1,6 +1,11 @@ +/* Clonk */ + #strict 2 #appendto CLNK +local rotateInJump; +local removeOnDeath; + protected func ControlSpecial() { [$Push$|Image=CXIV] @@ -22,6 +27,28 @@ protected func ControlSpecial() if (GetLength(clonks) == 0) return 0; // Randomly select clonk to be pushed - Fling(clonks[Random(GetLength(clonks))], -1 + GetDir() * 2, -1); + var target = clonks[Random(GetLength(clonks))]; + Fling(target, -1 + GetDir() * 2, -1); + target->SetKiller(GetOwner()); + return 1; } + +protected func ControlLeft() +{ + if (rotateInJump && GetAction() == "Jump") SetDir(DIR_Left); + return _inherited(); +} + +protected func ControlRight() +{ + if (rotateInJump && GetAction() == "Jump") SetDir(DIR_Right); + return _inherited(); +} + +protected func Death(int killedBy) +{ + var ret = _inherited(killedBy); + if (removeOnDeath) RemoveObject(); + return ret; +}
\ No newline at end of file diff --git a/TemplePushing.c4s/System.c4g/EmptyGoblet.c b/TemplePushing.c4s/System.c4g/EmptyGoblet.c deleted file mode 100644 index 655a1b3..0000000 --- a/TemplePushing.c4s/System.c4g/EmptyGoblet.c +++ /dev/null @@ -1,29 +0,0 @@ -#strict -#appendto EGBL - -func Activate(pClonk) -{ - [$Shot$|Image=GNPW] - Sound("Blast2"); - Exit(this(),-10+20*GetDir(pClonk)); - SetXDir(-80+160*GetDir(pClonk)); - SetYDir(-10); - return(1); -} - -func Hit() -{ - if (Random(2)) return(_inherited()); - else - SetYDir(-20); - Sound("BOING"); - return(1); -} -/*-- Neues Script --*/ - -#strict - -func Initialize() { - - return(1); -} diff --git a/TemplePushing.c4s/System.c4g/FireBomb.c b/TemplePushing.c4s/System.c4g/FireBomb.c deleted file mode 100644 index 85ea01c..0000000 --- a/TemplePushing.c4s/System.c4g/FireBomb.c +++ /dev/null @@ -1,21 +0,0 @@ -#strict -#appendto FBMP - -func Activate(pClonk) -{ - [$Shot$|Image=GNPW] - Sound("Blast2"); - Exit(this(),-10+20*GetDir(pClonk)); - SetXDir(-80+160*GetDir(pClonk)); - SetYDir(-10); - return(1); -} - -func Hit() -{ - if (Random(2)) return(_inherited()); - else - SetYDir(-20); - Sound("BOING"); - return(1); -} diff --git a/TemplePushing.c4s/System.c4g/Flint.c b/TemplePushing.c4s/System.c4g/Flint.c deleted file mode 100644 index 82309e0..0000000 --- a/TemplePushing.c4s/System.c4g/Flint.c +++ /dev/null @@ -1,21 +0,0 @@ -#strict -#appendto FLNT - -func Activate(pClonk) -{ - [$Shot$|Image=GNPW] - Sound("Blast2"); - Exit(this(),-10+20*GetDir(pClonk)); - SetXDir(-80+160*GetDir(pClonk)); - SetYDir(-10); - return(1); -} - -func Hit() -{ - if (Random(2)) return(_inherited()); - else - SetYDir(-20); - Sound("BOING"); - return(1); -}
\ No newline at end of file diff --git a/TemplePushing.c4s/System.c4g/Frostwave.c b/TemplePushing.c4s/System.c4g/Frostwave.c new file mode 100644 index 0000000..3437c6a --- /dev/null +++ b/TemplePushing.c4s/System.c4g/Frostwave.c @@ -0,0 +1,7 @@ +/*-- Frostwave --*/ + +#strict 2 + +#appendto MFWV + +func FxFrostwaveNSpellMaxRange() { return(90); } diff --git a/TemplePushing.c4s/System.c4g/Goblet.c b/TemplePushing.c4s/System.c4g/Goblet.c index a916e35..0f9506f 100644 --- a/TemplePushing.c4s/System.c4g/Goblet.c +++ b/TemplePushing.c4s/System.c4g/Goblet.c @@ -1,21 +1,17 @@ -#strict -#appendto GBLT +/*-- Goblet --*/ -func Activate(pClonk) -{ - [$Shot$|Image=GNPW] - Sound("Blast2"); - Exit(this(),-10+20*GetDir(pClonk)); - SetXDir(-80+160*GetDir(pClonk)); - SetYDir(-10); - return(1); -} +#strict 2 + +#appendto GBLT -func Hit() +private func FillCheck() { - if (Random(2)) return(_inherited()); - else - SetYDir(-20); - Sound("BOING"); - return(1); + var ret = _inherited(); + if (iTimer >= 5) + { + var clonk = Contained(); + if (clonk && clonk->GetOCF() & OCF_CrewMember) clonk->DoEnergy(10); + iTimer = 0; + } + return ret; } diff --git a/TemplePushing.c4s/System.c4g/Helpers.c b/TemplePushing.c4s/System.c4g/Helpers.c new file mode 100644 index 0000000..f22a3c5 --- /dev/null +++ b/TemplePushing.c4s/System.c4g/Helpers.c @@ -0,0 +1,15 @@ +/*-- Helpers --*/ + +#strict 2 + +global func IIf(expression, truePart, falsePart) +{ + if (expression) + { + return truePart; + } + else + { + return falsePart; + } +} diff --git a/TemplePushing.c4s/System.c4g/MagicFlint.c b/TemplePushing.c4s/System.c4g/MagicFlint.c new file mode 100644 index 0000000..a158248 --- /dev/null +++ b/TemplePushing.c4s/System.c4g/MagicFlint.c @@ -0,0 +1,26 @@ +/*-- Summon flint --*/ + +#strict 2 + +#appendto MGFL + +public func Activate(object caster, object realcaster) +{ + var result = CheckEffect("FlintNSpell", 0, 125); + if (result) + { + RemoveObject(); + return result != -1; + } + + Sound("Magic*"); + CreateParticle("MSpark", 0,0, 1000, RGBa(255,50,50,150)); + + if (realcaster) caster = realcaster; + + var flints = [FLNT, SFLN, EFLN]; + caster->CreateContents(flints[Random(GetLength(flints))]); + + RemoveObject(); + return 1; +} diff --git a/TemplePushing.c4s/System.c4g/Meteor.c b/TemplePushing.c4s/System.c4g/Meteor.c index 600733a..af1d3e8 100644 --- a/TemplePushing.c4s/System.c4g/Meteor.c +++ b/TemplePushing.c4s/System.c4g/Meteor.c @@ -1,7 +1,9 @@ -#strict +#strict 2 + #appendto METO -protected func Hit() { - if (FindObject(RCKF)) Explode(Random(75)); - Explode(explosion_base+Random(12)); -}
\ No newline at end of file +protected func Hit() +{ + if (FindObject(RCKF)) Explode(Random(75)); + Explode(explosion_base + Random(12)); +} diff --git a/TemplePushing.c4s/System.c4g/Rain.c b/TemplePushing.c4s/System.c4g/Rain.c new file mode 100644 index 0000000..c44285f --- /dev/null +++ b/TemplePushing.c4s/System.c4g/Rain.c @@ -0,0 +1,25 @@ +/*-- Regen --*/ + +#strict 2 + +global func FxRainStart() +{ + SoundLevel("Rain", 100); + return 1; +} + +global func FxRainTimer() +{ + for (var i; i < 3; ++i) + { + CreateParticle("Raindrop", Random(LandscapeWidth()), 0, 0, 200, Random(300), RGB(170, 170, 255)); + } + if (!Random(200)) Sound("Thunders*"); + return 1; +} + +global func FxFireRainTimer() +{ + if (!Random(50)) CreateObject(DFLM, Random(LandscapeWidth()), 0, NO_OWNER); + return 1; +}
\ No newline at end of file diff --git a/TemplePushing.c4s/System.c4g/Scroll.c b/TemplePushing.c4s/System.c4g/Scroll.c index a66bb32..07a55d6 100644 --- a/TemplePushing.c4s/System.c4g/Scroll.c +++ b/TemplePushing.c4s/System.c4g/Scroll.c @@ -1,10 +1,10 @@ -#strict +#strict 2 + #appendto SCRL -static SpID; func Initialize() { - SpID=[ABLA,MBOT,MFRB,MDBT,GVTY,MBRG,MMTR,MLGT,CAHE,MSSH,MINV,MFFS,MQKE,ELX1,MICS,MARK]; - SetSpell(SpID[Random(16)]); - return(_inherited()); -}
\ No newline at end of file + var spells = [ABLA, MBOT, MFRB, MDBT, GVTY, MMTR, MLGT, CFAL, MSSH, MINV, MQKE, MARK, MFWV, MGFL]; + SetSpell(spells[Random(GetLength(spells))]); + return _inherited(); +} diff --git a/TemplePushing.c4s/System.c4g/ShootInventory.c b/TemplePushing.c4s/System.c4g/ShootInventory.c new file mode 100644 index 0000000..f2636dd --- /dev/null +++ b/TemplePushing.c4s/System.c4g/ShootInventory.c @@ -0,0 +1,53 @@ +/*-- Shoot inventory object --*/ + +#strict 2 + +#appendto AXE1 +#appendto EGBL +#appendto EFLN +#appendto GBLT +#appendto ROCK +#appendto SWOR + +protected func Activate(object clonk) +{ + [$Shoot$|Image=GNPW] + + // Sound + if (GetID() == EGBL) + { + Sound("Crystal3"); + } + else if (GetID() == GBLT) + { + Sound("Crystal3"); + } + else + { + Sound("Blast2"); + } + + // Make shooting clonk responsible for possible kill + SetController(clonk->GetOwner()); + + // Shoot + if (GetID() == EGBL) + { + Exit(0, -20 + 40 * clonk->GetDir()); + SetXDir(-100 + 200 * clonk->GetDir()); + } + else if (GetID() == ROCK) + { + Exit(0, -15 + 30 * clonk->GetDir()); + SetXDir(-100 + 200 * clonk->GetDir()); + } + else + { + Exit(0, -10 + 20 * clonk->GetDir()); + SetXDir(-80 + 160 * clonk->GetDir()); + } + + SetYDir(-10); + + return 1; +}
\ No newline at end of file diff --git a/TemplePushing.c4s/System.c4g/StringTblDE.txt b/TemplePushing.c4s/System.c4g/StringTblDE.txt index 8e22f20..a6b917f 100644 --- a/TemplePushing.c4s/System.c4g/StringTblDE.txt +++ b/TemplePushing.c4s/System.c4g/StringTblDE.txt @@ -1,2 +1,2 @@ -Shot=Schießen +Shoot=Schießen Push=Schubsen
\ No newline at end of file diff --git a/TemplePushing.c4s/System.c4g/StringTblUS.txt b/TemplePushing.c4s/System.c4g/StringTblUS.txt index 42b3635..e1bd4ca 100644 --- a/TemplePushing.c4s/System.c4g/StringTblUS.txt +++ b/TemplePushing.c4s/System.c4g/StringTblUS.txt @@ -1,2 +1,2 @@ -Shot=Shoot +Shoot=Shoot Push=Push
\ No newline at end of file diff --git a/TemplePushing.c4s/System.c4g/Sword.c b/TemplePushing.c4s/System.c4g/Sword.c deleted file mode 100644 index 4f98bd7..0000000 --- a/TemplePushing.c4s/System.c4g/Sword.c +++ /dev/null @@ -1,21 +0,0 @@ -#strict -#appendto SWOR - -func Activate(pClonk) -{ - [$Shot$|Image=GNPW] - Sound("Blast2"); - Exit(this(),-10+20*GetDir(pClonk)); - SetXDir(-80+160*GetDir(pClonk)); - SetYDir(-10); - return(1); -} - -func Hit() -{ - if (Random(2)) return(_inherited()); - else - SetYDir(-20); - Sound("BOING"); - return(1); -} diff --git a/TemplePushing.c4s/Teams.txt b/TemplePushing.c4s/Teams.txt index 9ef40b8..8f8d57c 100644 --- a/TemplePushing.c4s/Teams.txt +++ b/TemplePushing.c4s/Teams.txt @@ -3,14 +3,14 @@ Active=1 TeamColors=1 [Team] id=1 - Name=$TeamTerraThrowers$ + Name=$TeamOne$ PlrStartIndex=1 Color=16711680 IconSpec=TMS1:0 [Team] id=2 - Name=$TeamFireFreaks$ + Name=$TeamTwo$ PlrStartIndex=2 Color=16751360 IconSpec=TMS1:1 diff --git a/TemplePushing.c4s/Temp.c4d/Apocalypse_Hazard.png b/TemplePushing.c4s/Temp.c4d/Apocalypse_Hazard.png Binary files differnew file mode 100644 index 0000000..5e231a7 --- /dev/null +++ b/TemplePushing.c4s/Temp.c4d/Apocalypse_Hazard.png diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/Graphics.png b/TemplePushing.c4s/Temp.c4d/Deathmatch_Old.png Binary files differindex 2bfe0a4..2bfe0a4 100644 --- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/Graphics.png +++ b/TemplePushing.c4s/Temp.c4d/Deathmatch_Old.png diff --git a/TemplePushing.c4s/Temp.c4d/Maplang.bmp b/TemplePushing.c4s/Temp.c4d/Maplang.bmp Binary files differnew file mode 100644 index 0000000..cd806b8 --- /dev/null +++ b/TemplePushing.c4s/Temp.c4d/Maplang.bmp diff --git a/TemplePushing.c4s/Temp.c4d/Mapsymm.bmp b/TemplePushing.c4s/Temp.c4d/Mapsymm.bmp Binary files differnew file mode 100644 index 0000000..5b6893a --- /dev/null +++ b/TemplePushing.c4s/Temp.c4d/Mapsymm.bmp diff --git a/TemplePushing.c4s/Temp.c4d/Names.txt b/TemplePushing.c4s/Temp.c4d/Names.txt new file mode 100644 index 0000000..23fb108 --- /dev/null +++ b/TemplePushing.c4s/Temp.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Extraobjekte +US:Additional Objects
\ No newline at end of file diff --git a/TemplePushing.c4s/SectSuddenDeath.c4g/Map.bmp b/TemplePushing.c4s/Temp.c4d/OldSuddenDeathMap.bmp Binary files differindex 9b2fbf0..9b2fbf0 100644 --- a/TemplePushing.c4s/SectSuddenDeath.c4g/Map.bmp +++ b/TemplePushing.c4s/Temp.c4d/OldSuddenDeathMap.bmp diff --git a/TemplePushing.c4s/Temp.c4d/RotateInJump_Old.png b/TemplePushing.c4s/Temp.c4d/RotateInJump_Old.png Binary files differnew file mode 100644 index 0000000..b93b673 --- /dev/null +++ b/TemplePushing.c4s/Temp.c4d/RotateInJump_Old.png diff --git a/TemplePushing.c4s/Title.png b/TemplePushing.c4s/Title.png Binary files differindex 00a806c..7680d30 100644 --- a/TemplePushing.c4s/Title.png +++ b/TemplePushing.c4s/Title.png diff --git a/TemplePushing.c4s/Title.txt b/TemplePushing.c4s/Title.txt index 2790ff7..899e405 100644 --- a/TemplePushing.c4s/Title.txt +++ b/TemplePushing.c4s/Title.txt @@ -1,2 +1,2 @@ -DE:Klippenschubsen r1.0 -US:Cliff Pushing r1.0
\ No newline at end of file +DE:Tempelschubsen v6.1.7601.18409 +US:TemplePush v6.1.7601.18409
\ No newline at end of file diff --git a/TemplePushing.c4s/Version.txt b/TemplePushing.c4s/Version.txt index 01603de..947dd79 100644 --- a/TemplePushing.c4s/Version.txt +++ b/TemplePushing.c4s/Version.txt @@ -1 +1 @@ -1.1b +v6.1.7601.18409
\ No newline at end of file |
