summaryrefslogtreecommitdiffstats
path: root/Targets.c4d/Knights.c4d
diff options
context:
space:
mode:
Diffstat (limited to 'Targets.c4d/Knights.c4d')
-rw-r--r--Targets.c4d/Knights.c4d/System.c4g/Script.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/Targets.c4d/Knights.c4d/System.c4g/Script.c b/Targets.c4d/Knights.c4d/System.c4g/Script.c
new file mode 100644
index 0000000..e9a8e69
--- /dev/null
+++ b/Targets.c4d/Knights.c4d/System.c4g/Script.c
@@ -0,0 +1,73 @@
+#strict 2
+#appendto CPT2 nowarn
+
+func IsRemoteControllable() { return false; }
+
+func FindGate(bool right) { return FindObject(0, 0, 0, 0, 0, 0, (right && "GateRight") || "GateLeft", this); }
+
+func SensorCallbacks()
+{
+ var ret = [];
+ for(var part in [[false, "$TWR2_LeftGate$", ["LeftGateOpen", "LeftGateClose", "ControlLeft"]], [true, "$TWR2_RightGate$", ["RightGateOpen", "RightGateClose", "ControlRight"]]])
+ {
+ if(FindGate(part[0]))
+ {
+ ret[] = [Format("$TWR2_GateOpen$", part[1]), part[2][0]];
+ ret[] = [Format("$TWR2_GateClose$", part[1]), part[2][1]];
+ ret[] = [Format("$TWR2_GateOpenClose$", part[1]), part[2][2]];
+ }
+ }
+
+ if((GetID() == CPT3 || GetID() == CPT4) && this->FindDrawbridge())
+ {
+ ret[] = ["$TWR2_DrawBridgeUp$", "ControlUp"];
+ ret[] = ["$TWR2_DrawBridgeDown$", "ControlDownSingle"];
+ ret[] = ["$TWR2_DrawBridgeUpDown$", "ToggleDrawBridge"];
+ }
+
+ return ret;
+}
+
+func LeftGateOpen() { return GateOpen(false); }
+func LeftGateClose() { return GateClose(false); }
+
+func RightGateOpen() { return GateOpen(true); }
+func RightGateClose() { return GateClose(true); }
+
+func GateOpen(bool right) { return GateOpenClose(right, false); }
+func GateClose(bool right) { return GateOpenClose(right, true); }
+
+func GateOpenClose(bool right, bool close)
+{
+ var gate = FindGate(right);
+ if(gate)
+ {
+ gate->Activate();
+
+ if(close)
+ {
+ gate->Close();
+ }
+ else
+ {
+ gate->Open();
+ }
+ }
+}
+
+func ToggleDrawBridge()
+{
+ var bridge = this->FindDrawbridge();
+ if(bridge)
+ {
+ if(bridge->IsUp())
+ {
+ return bridge->ControlDown();
+ }
+ else
+ {
+ return bridge->ControlUp();
+ }
+ }
+}
+