summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s
diff options
context:
space:
mode:
authorJan <>2015-02-02 17:55:29 +0100
committerJan <_>2015-07-10 17:49:45 +0200
commit32a9632fbca3dd7a88bd3154b84a3773af39c276 (patch)
treea226b9404844a73c7229e9d13db993c86b5be2c1 /TemplePushing.c4s
parent40fb3e5d61c44886b06d839a35adb0c11a5f918f (diff)
downloadtempelschubsen-32a9632fbca3dd7a88bd3154b84a3773af39c276.tar.gz
tempelschubsen-32a9632fbca3dd7a88bd3154b84a3773af39c276.zip
TemplePush v6.1.7601.18409.c4s
Diffstat (limited to 'TemplePushing.c4s')
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DefCore.txt7
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/Graphics.pngbin11259 -> 0 bytes
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/Script.c23
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Graphics.pngbin177 -> 0 bytes
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Script.c22
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/Graphics.pngbin6847 -> 0 bytes
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/Script.c7
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/Script.c7
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Script.c5
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DefCore.txt9
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/ActMap.txt4
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Graphics.pngbin206 -> 0 bytes
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Script.c176
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/Graphics.pngbin9715 -> 0 bytes
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Script.c24
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Graphics.pngbin10487 -> 0 bytes
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/Graphics.pngbin9715 -> 0 bytes
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Script.c21
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DefCore.txt9
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Script.c23
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/ActMap.txt4
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DefCore.txt12
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Graphics.pngbin206 -> 0 bytes
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Script.c176
-rw-r--r--TemplePushing.c4s/DescDE.rtf2
-rw-r--r--TemplePushing.c4s/DescUS.rtf2
-rw-r--r--TemplePushing.c4s/Environment.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Environment.c4d/Rain.wav (renamed from TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Rain.wav)bin381056 -> 381056 bytes
-rw-r--r--TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Graphics.png (renamed from TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Graphics.png)bin528 -> 528 bytes
-rw-r--r--TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Names.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Names.txt)0
-rw-r--r--TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Particle.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Particle.txt)2
-rw-r--r--TemplePushing.c4s/Environment.c4d/Thunders1.wav (renamed from TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Thunders1.wav)bin73868 -> 73868 bytes
-rw-r--r--TemplePushing.c4s/Environment.c4d/Thunders2.wav (renamed from TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Thunders2.wav)bin34716 -> 34716 bytes
-rw-r--r--TemplePushing.c4s/HochHinaus.jpgbin0 -> 91525 bytes
-rw-r--r--TemplePushing.c4s/Icon.pngbin9354 -> 9955 bytes
-rw-r--r--TemplePushing.c4s/Locals.c4d/Brick.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Locals.c4d/Brick.c4d/Script.c30
-rw-r--r--TemplePushing.c4s/Locals.c4d/Cannon.c4d/ActMap.txt8
-rw-r--r--TemplePushing.c4s/Locals.c4d/Cannon.c4d/DefCore.txt24
-rw-r--r--TemplePushing.c4s/Locals.c4d/Cannon.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Locals.c4d/Cannon.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Locals.c4d/Cannon.c4d/Graphics.pngbin26534 -> 0 bytes
-rw-r--r--TemplePushing.c4s/Locals.c4d/Cannon.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Locals.c4d/Cannon.c4d/Script.c176
-rw-r--r--TemplePushing.c4s/Locals.c4d/Cannon.c4d/StringTblDE.txt4
-rw-r--r--TemplePushing.c4s/Locals.c4d/Cannon.c4d/StringTblUS.txt4
-rw-r--r--TemplePushing.c4s/Locals.c4d/Cannon.c4d/Symbols.c4d/Graphics.pngbin20663 -> 0 bytes
-rw-r--r--TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Script.c28
-rw-r--r--TemplePushing.c4s/Locals.c4d/Fog.c4d/Graphics.pngbin4583 -> 0 bytes
-rw-r--r--TemplePushing.c4s/Locals.c4d/Fog.c4d/Particle.txt12
-rw-r--r--TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/ActMap.txt129
-rw-r--r--TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DefCore.txt11
-rw-r--r--TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Graphics.pngbin81997 -> 0 bytes
-rw-r--r--TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Script.c183
-rw-r--r--TemplePushing.c4s/Locals.c4d/Sonne.c4d/ActMap.txt17
-rw-r--r--TemplePushing.c4s/Locals.c4d/Sonne.c4d/DefCore.txt11
-rw-r--r--TemplePushing.c4s/Locals.c4d/Sonne.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Locals.c4d/Sonne.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Locals.c4d/Sonne.c4d/Graphics.pngbin48292 -> 0 bytes
-rw-r--r--TemplePushing.c4s/Locals.c4d/Sonne.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Locals.c4d/Sonne.c4d/Script.c191
-rw-r--r--TemplePushing.c4s/Material.c4g/Sky.jpgbin0 -> 83495 bytes
-rw-r--r--TemplePushing.c4s/Material.c4g/Sky2.jpgbin0 -> 91525 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/Brick.c4d/ActMap.txt (renamed from TemplePushing.c4s/Locals.c4d/Brick.c4d/ActMap.txt)2
-rw-r--r--TemplePushing.c4s/Misc.c4d/Brick.c4d/DefCore.txt (renamed from TemplePushing.c4s/Locals.c4d/Brick.c4d/DefCore.txt)0
-rw-r--r--TemplePushing.c4s/Misc.c4d/Brick.c4d/DescDE.txt (renamed from TemplePushing.c4s/Locals.c4d/Brick.c4d/DescDE.txt)0
-rw-r--r--TemplePushing.c4s/Misc.c4d/Brick.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/Brick.c4d/Graphics.png (renamed from TemplePushing.c4s/Locals.c4d/Brick.c4d/Graphics.png)bin5188 -> 5188 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/Brick.c4d/Names.txt (renamed from TemplePushing.c4s/Locals.c4d/Brick.c4d/Names.txt)0
-rw-r--r--TemplePushing.c4s/Misc.c4d/Brick.c4d/Script.c29
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DefCore.txt10
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Graphics.pngbin0 -> 4315 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Script.c243
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblDE.txt14
-rw-r--r--TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt14
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DefCore.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/DefCore.txt)4
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Graphics.png (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Graphics.png)bin5838 -> 5838 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Script.c57
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/DefCore.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/DefCore.txt)8
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/DescDE.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescDE.txt)0
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/DescUS.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescUS.txt)0
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Graphics.pngbin0 -> 122 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Script.c57
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/DefCore.txt6
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/Graphics.pngbin0 -> 7222 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/DefCore.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/DefCore.txt)6
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/Graphics.pngbin0 -> 4812 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/Symbols.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/DefCore.txt (renamed from TemplePushing.c4s/Teams.c4d/DefCore.txt)0
-rw-r--r--TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Graphics.png (renamed from TemplePushing.c4s/Teams.c4d/Graphics.png)bin16625 -> 16625 bytes
-rw-r--r--TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Names.txt (renamed from TemplePushing.c4s/Teams.c4d/Names.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DefCore.txt8
-rw-r--r--TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Graphics.pngbin0 -> 10354 bytes
-rw-r--r--TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Script.c5
-rw-r--r--TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DefCore.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/DefCore.txt)1
-rw-r--r--TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/Graphics.pngbin0 -> 8049 bytes
-rw-r--r--TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/Script.c8
-rw-r--r--TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/StringTblDE.txt1
-rw-r--r--TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/StringTblUS.txt1
-rw-r--r--TemplePushing.c4s/Rules.c4d/DescDE.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/DescDE.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/DescUS.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/DescUS.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/ActMap.txt (renamed from TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/ActMap.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/DefCore.txt (renamed from TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/DefCore.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/DescDE.txt (renamed from TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/DescDE.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/DescUS.txt (renamed from TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/DescUS.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Graphics.png (renamed from TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Graphics.png)bin6308 -> 6308 bytes
-rw-r--r--TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Names.txt (renamed from TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Names.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Script.c35
-rw-r--r--TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/DefCore.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/DefCore.txt)1
-rw-r--r--TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/DescDE.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/DescDE.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/DescUS.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/DescUS.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Graphics.png (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Graphics.png)bin6841 -> 6841 bytes
-rw-r--r--TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Names.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Names.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Script.c5
-rw-r--r--TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/DefCore.txt8
-rw-r--r--TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/DescDE.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/DescDE.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/DescUS.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/DescUS.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Graphics.png (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Graphics.png)bin10487 -> 10487 bytes
-rw-r--r--TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Names.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/Names.txt)0
-rw-r--r--TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Script.c5
-rw-r--r--TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DefCore.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/DefCore.txt)7
-rw-r--r--TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Graphics.pngbin0 -> 8820 bytes
-rw-r--r--TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Script.c5
-rw-r--r--TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DefCore.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/DefCore.txt)7
-rw-r--r--TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DescDE.txt1
-rw-r--r--TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/DescUS.txt1
-rw-r--r--TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Graphics.pngbin0 -> 7003 bytes
-rw-r--r--TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Script.c8
-rw-r--r--TemplePushing.c4s/Rules.c4d/Title.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Title.txt)0
-rw-r--r--TemplePushing.c4s/Scenario.txtbin3813 -> 533 bytes
-rw-r--r--TemplePushing.c4s/Script.c699
-rw-r--r--TemplePushing.c4s/SectClassic.c4g/Map.bmp (renamed from TemplePushing.c4s/Map.bmp)bin9526 -> 9594 bytes
-rw-r--r--TemplePushing.c4s/SectClassic.c4g/Scenarios.txt25
-rw-r--r--TemplePushing.c4s/SectHighUpSymm.c4g/Map.bmpbin0 -> 9594 bytes
-rw-r--r--TemplePushing.c4s/SectHighUpSymm.c4g/Scenario.txt26
-rw-r--r--TemplePushing.c4s/SectLobby.c4g/Map.bmpbin0 -> 3834 bytes
-rw-r--r--TemplePushing.c4s/SectSuddenDeath.c4g/Scenario.txt17
-rw-r--r--TemplePushing.c4s/Sections.c4d/Ambience.wav (renamed from TemplePushing.c4s/CliffPushing.c4d/Ambiente.wav)bin1608340 -> 1608340 bytes
-rw-r--r--TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav (renamed from TemplePushing.c4s/CliffPushing.c4d/ExtremeAmbiente.wav)bin929500 -> 929500 bytes
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectClassic.c4d/DefCore.txt (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/DefCore.txt)6
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Graphics.pngbin0 -> 8777 bytes
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c55
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/DefCore.txt (renamed from TemplePushing.c4s/Locals.c4d/Cannon.c4d/Symbols.c4d/DefCore.txt)6
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Graphics.pngbin0 -> 7971 bytes
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Script.c7
-rw-r--r--TemplePushing.c4s/StringTblDE.txt11
-rw-r--r--TemplePushing.c4s/StringTblUS.txt13
-rw-r--r--TemplePushing.c4s/System.c4g/ApocalypseEffects.c78
-rw-r--r--TemplePushing.c4s/System.c4g/Axe.c21
-rw-r--r--TemplePushing.c4s/System.c4g/Bounce.c17
-rw-r--r--TemplePushing.c4s/System.c4g/Clonk.c29
-rw-r--r--TemplePushing.c4s/System.c4g/EmptyGoblet.c29
-rw-r--r--TemplePushing.c4s/System.c4g/FireBomb.c21
-rw-r--r--TemplePushing.c4s/System.c4g/Flint.c21
-rw-r--r--TemplePushing.c4s/System.c4g/Frostwave.c7
-rw-r--r--TemplePushing.c4s/System.c4g/Goblet.c30
-rw-r--r--TemplePushing.c4s/System.c4g/Helpers.c15
-rw-r--r--TemplePushing.c4s/System.c4g/MagicFlint.c26
-rw-r--r--TemplePushing.c4s/System.c4g/Meteor.c12
-rw-r--r--TemplePushing.c4s/System.c4g/Rain.c25
-rw-r--r--TemplePushing.c4s/System.c4g/Scroll.c12
-rw-r--r--TemplePushing.c4s/System.c4g/ShootInventory.c53
-rw-r--r--TemplePushing.c4s/System.c4g/StringTblDE.txt2
-rw-r--r--TemplePushing.c4s/System.c4g/StringTblUS.txt2
-rw-r--r--TemplePushing.c4s/System.c4g/Sword.c21
-rw-r--r--TemplePushing.c4s/Teams.txt4
-rw-r--r--TemplePushing.c4s/Temp.c4d/Apocalypse_Hazard.pngbin0 -> 8611 bytes
-rw-r--r--TemplePushing.c4s/Temp.c4d/Deathmatch_Old.png (renamed from TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/Graphics.png)bin7358 -> 7358 bytes
-rw-r--r--TemplePushing.c4s/Temp.c4d/Maplang.bmpbin0 -> 33402 bytes
-rw-r--r--TemplePushing.c4s/Temp.c4d/Mapsymm.bmpbin0 -> 33138 bytes
-rw-r--r--TemplePushing.c4s/Temp.c4d/Names.txt2
-rw-r--r--TemplePushing.c4s/Temp.c4d/OldSuddenDeathMap.bmp (renamed from TemplePushing.c4s/SectSuddenDeath.c4g/Map.bmp)bin9526 -> 9526 bytes
-rw-r--r--TemplePushing.c4s/Temp.c4d/RotateInJump_Old.pngbin0 -> 6396 bytes
-rw-r--r--TemplePushing.c4s/Title.pngbin50891 -> 51657 bytes
-rw-r--r--TemplePushing.c4s/Title.txt4
-rw-r--r--TemplePushing.c4s/Version.txt2
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
deleted file mode 100644
index c9c7c9b..0000000
--- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/FlintRain.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 2ac7a18..0000000
--- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 30e20a2..0000000
--- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Armageddon.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index c5f3687..0000000
--- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicSpawnpoint.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 0fa62b6..0000000
--- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/MagicalPushing.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 351d65c..0000000
--- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 0fa62b6..0000000
--- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/OnlyScrolls.c4d/MagicalPushing.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index c5f3687..0000000
--- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
index aee9dd8..aee9dd8 100644
--- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Rain.wav
+++ b/TemplePushing.c4s/Environment.c4d/Rain.wav
Binary files differ
diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Graphics.png b/TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Graphics.png
index 5fd65db..5fd65db 100644
--- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Rain.c4d/Graphics.png
+++ b/TemplePushing.c4s/Environment.c4d/RainDrop.c4d/Graphics.png
Binary files differ
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
index 0d4f247..0d4f247 100644
--- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Thunders1.wav
+++ b/TemplePushing.c4s/Environment.c4d/Thunders1.wav
Binary files differ
diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Thunders2.wav b/TemplePushing.c4s/Environment.c4d/Thunders2.wav
index 02af2fe..02af2fe 100644
--- a/TemplePushing.c4s/CliffPushing.c4d/Rain.c4d/Thunders2.wav
+++ b/TemplePushing.c4s/Environment.c4d/Thunders2.wav
Binary files differ
diff --git a/TemplePushing.c4s/HochHinaus.jpg b/TemplePushing.c4s/HochHinaus.jpg
new file mode 100644
index 0000000..d060665
--- /dev/null
+++ b/TemplePushing.c4s/HochHinaus.jpg
Binary files differ
diff --git a/TemplePushing.c4s/Icon.png b/TemplePushing.c4s/Icon.png
index 80f75cc..c80e72e 100644
--- a/TemplePushing.c4s/Icon.png
+++ b/TemplePushing.c4s/Icon.png
Binary files differ
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
deleted file mode 100644
index abe856a..0000000
--- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 25b3618..0000000
--- a/TemplePushing.c4s/Locals.c4d/Cannon.c4d/Symbols.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 4c16706..0000000
--- a/TemplePushing.c4s/Locals.c4d/Fog.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index bc94254..0000000
--- a/TemplePushing.c4s/Locals.c4d/Lenseflare.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 62add4d..0000000
--- a/TemplePushing.c4s/Locals.c4d/Sonne.c4d/Graphics.png
+++ /dev/null
Binary files differ
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
new file mode 100644
index 0000000..b073dc3
--- /dev/null
+++ b/TemplePushing.c4s/Material.c4g/Sky.jpg
Binary files differ
diff --git a/TemplePushing.c4s/Material.c4g/Sky2.jpg b/TemplePushing.c4s/Material.c4g/Sky2.jpg
new file mode 100644
index 0000000..d060665
--- /dev/null
+++ b/TemplePushing.c4s/Material.c4g/Sky2.jpg
Binary files differ
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
index 1b531ea..1b531ea 100644
--- a/TemplePushing.c4s/Locals.c4d/Brick.c4d/Graphics.png
+++ b/TemplePushing.c4s/Misc.c4d/Brick.c4d/Graphics.png
Binary files differ
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
new file mode 100644
index 0000000..638c255
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/Graphics.png
Binary files differ
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
index 1543a79..1543a79 100644
--- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Graphics.png
+++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/Graphics.png
Binary files differ
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
new file mode 100644
index 0000000..4f75bf2
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Graphics.png
Binary files differ
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
new file mode 100644
index 0000000..0278731
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Ambience.c4d/Graphics.png
Binary files differ
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
new file mode 100644
index 0000000..0bb3195
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Leaver.c4d/Graphics.png
Binary files differ
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
index bcce561..bcce561 100644
--- a/TemplePushing.c4s/Teams.c4d/Graphics.png
+++ b/TemplePushing.c4s/Misc.c4d/TeamSymbols.c4d/Graphics.png
Binary files differ
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
new file mode 100644
index 0000000..c40dbad
--- /dev/null
+++ b/TemplePushing.c4s/Rules.c4d/Apocalypse.c4d/Graphics.png
Binary files differ
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
new file mode 100644
index 0000000..7a6774a
--- /dev/null
+++ b/TemplePushing.c4s/Rules.c4d/Deathmatch.c4d/Graphics.png
Binary files differ
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
index 6b89fed..6b89fed 100644
--- a/TemplePushing.c4s/Locals.c4d/Extinguisher.c4d/Graphics.png
+++ b/TemplePushing.c4s/Rules.c4d/Extinguisher.c4d/Graphics.png
Binary files differ
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
index d97f792..d97f792 100644
--- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/FriendlyPushing.c4d/Graphics.png
+++ b/TemplePushing.c4s/Rules.c4d/FriendlyPushing.c4d/Graphics.png
Binary files differ
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
index 351d65c..351d65c 100644
--- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/MagicSpawnpoints.c4d/Graphics.png
+++ b/TemplePushing.c4s/Rules.c4d/MagicalPushing.c4d/Graphics.png
Binary files differ
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
new file mode 100644
index 0000000..3be321f
--- /dev/null
+++ b/TemplePushing.c4s/Rules.c4d/RotateInJump.c4d/Graphics.png
Binary files differ
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
new file mode 100644
index 0000000..e313589
--- /dev/null
+++ b/TemplePushing.c4s/Rules.c4d/SuddenDeath.c4d/Graphics.png
Binary files differ
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
index 77752d8..8812ac7 100644
--- a/TemplePushing.c4s/Scenario.txt
+++ b/TemplePushing.c4s/Scenario.txt
Binary files differ
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
index f34737d..ee3c43c 100644
--- a/TemplePushing.c4s/Map.bmp
+++ b/TemplePushing.c4s/SectClassic.c4g/Map.bmp
Binary files differ
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
new file mode 100644
index 0000000..0cca27b
--- /dev/null
+++ b/TemplePushing.c4s/SectHighUpSymm.c4g/Map.bmp
Binary files differ
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
new file mode 100644
index 0000000..6d6a5b3
--- /dev/null
+++ b/TemplePushing.c4s/SectLobby.c4g/Map.bmp
Binary files differ
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
index 9bd2ab1..9bd2ab1 100644
--- a/TemplePushing.c4s/CliffPushing.c4d/Ambiente.wav
+++ b/TemplePushing.c4s/Sections.c4d/Ambience.wav
Binary files differ
diff --git a/TemplePushing.c4s/CliffPushing.c4d/ExtremeAmbiente.wav b/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav
index 3a5f174..3a5f174 100644
--- a/TemplePushing.c4s/CliffPushing.c4d/ExtremeAmbiente.wav
+++ b/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav
Binary files differ
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
new file mode 100644
index 0000000..11434fa
--- /dev/null
+++ b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Graphics.png
Binary files differ
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
new file mode 100644
index 0000000..9c2207d
--- /dev/null
+++ b/TemplePushing.c4s/Sections.c4d/SectHighUpSymm.c4d/Graphics.png
Binary files differ
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
new file mode 100644
index 0000000..5e231a7
--- /dev/null
+++ b/TemplePushing.c4s/Temp.c4d/Apocalypse_Hazard.png
Binary files differ
diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/Graphics.png b/TemplePushing.c4s/Temp.c4d/Deathmatch_Old.png
index 2bfe0a4..2bfe0a4 100644
--- a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Deathmatch.c4d/Graphics.png
+++ b/TemplePushing.c4s/Temp.c4d/Deathmatch_Old.png
Binary files differ
diff --git a/TemplePushing.c4s/Temp.c4d/Maplang.bmp b/TemplePushing.c4s/Temp.c4d/Maplang.bmp
new file mode 100644
index 0000000..cd806b8
--- /dev/null
+++ b/TemplePushing.c4s/Temp.c4d/Maplang.bmp
Binary files differ
diff --git a/TemplePushing.c4s/Temp.c4d/Mapsymm.bmp b/TemplePushing.c4s/Temp.c4d/Mapsymm.bmp
new file mode 100644
index 0000000..5b6893a
--- /dev/null
+++ b/TemplePushing.c4s/Temp.c4d/Mapsymm.bmp
Binary files differ
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
index 9b2fbf0..9b2fbf0 100644
--- a/TemplePushing.c4s/SectSuddenDeath.c4g/Map.bmp
+++ b/TemplePushing.c4s/Temp.c4d/OldSuddenDeathMap.bmp
Binary files differ
diff --git a/TemplePushing.c4s/Temp.c4d/RotateInJump_Old.png b/TemplePushing.c4s/Temp.c4d/RotateInJump_Old.png
new file mode 100644
index 0000000..b93b673
--- /dev/null
+++ b/TemplePushing.c4s/Temp.c4d/RotateInJump_Old.png
Binary files differ
diff --git a/TemplePushing.c4s/Title.png b/TemplePushing.c4s/Title.png
index 00a806c..7680d30 100644
--- a/TemplePushing.c4s/Title.png
+++ b/TemplePushing.c4s/Title.png
Binary files differ
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