summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Script.c
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/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Script.c
parent40fb3e5d61c44886b06d839a35adb0c11a5f918f (diff)
downloadtempelschubsen-32a9632fbca3dd7a88bd3154b84a3773af39c276.tar.gz
tempelschubsen-32a9632fbca3dd7a88bd3154b84a3773af39c276.zip
TemplePush v6.1.7601.18409.c4s
Diffstat (limited to 'TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Script.c')
-rw-r--r--TemplePushing.c4s/Misc.c4d/SpawnPointSpawner.c4d/SpawnPoint.c4d/Script.c57
1 files changed, 57 insertions, 0 deletions
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;
+}