summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMittendrein Markus <maxmitti@gmx.net>2016-03-03 23:31:53 +0100
committerMittendrein Markus <maxmitti@gmx.net>2016-03-03 23:31:53 +0100
commite07fef401e91b26f8b0f43382017603ad20c2a3f (patch)
tree810fc71556fbfbcda833fdc8699169d02f16a97f
parentb18adf79549c1a3fb17820b6da8936f79fcb07fb (diff)
downloadtempelschubsen-e07fef401e91b26f8b0f43382017603ad20c2a3f.tar.gz
tempelschubsen-e07fef401e91b26f8b0f43382017603ad20c2a3f.zip
Make clonks invincible for 50 frames after relaunch
-rw-r--r--TemplePushing.c4s/Script.c2
-rw-r--r--TemplePushing.c4s/System.c4g/FindObjectsLayer.c33
2 files changed, 35 insertions, 0 deletions
diff --git a/TemplePushing.c4s/Script.c b/TemplePushing.c4s/Script.c
index 54e1ec3..ac18165 100644
--- a/TemplePushing.c4s/Script.c
+++ b/TemplePushing.c4s/Script.c
@@ -607,6 +607,8 @@ func LaunchClonk(int player, object clonk, bool relaunch)
clonk->SetCrewEnabled(false);
clonk->SetCrewEnabled(true);
clonk->Schedule("SelectCrew(GetOwner(), this, true)", 20);
+ clonk->SetObjectLayer(clonk);
+ clonk->Schedule("SetObjectLayer(0)", 50);
}
// Respawn effects
diff --git a/TemplePushing.c4s/System.c4g/FindObjectsLayer.c b/TemplePushing.c4s/System.c4g/FindObjectsLayer.c
new file mode 100644
index 0000000..178a7b7
--- /dev/null
+++ b/TemplePushing.c4s/System.c4g/FindObjectsLayer.c
@@ -0,0 +1,33 @@
+#strict 2
+
+global func FindObjects()
+{
+ return _inherited(Find_And(Find_Layer(GetObjectLayer(this)), ...));
+}
+
+global func FindObject2()
+{
+ return _inherited(Find_And(Find_Layer(GetObjectLayer(this)), ...));
+}
+
+global func FindObject(a, b, c, d, e, f, g, h, i, object findNext)
+{
+ var ret = findNext, layer = GetObjectLayer(this);
+ for(;;)
+ {
+ ret = _inherited(a, b, c, d, e, f, g, h, i, ret);
+ if (GetObjectLayer(ret) == layer) return ret;
+ if (ret == 0) return 0;
+ }
+}
+
+global func FindObjectOwner(a, b, c, d, e, f, g, h, i, object findNext)
+{
+ var ret = findNext, layer = GetObjectLayer(this);
+ for(;;)
+ {
+ ret = _inherited(a, b, c, d, e, f, g, h, i, ret);
+ if (GetObjectLayer(ret) == layer) return ret;
+ if (ret == 0) return 0;
+ }
+}