summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c
diff options
context:
space:
mode:
authorJan <>2015-02-02 17:58:18 +0100
committerJan <_>2015-07-10 17:51:43 +0200
commitca61c54b9bd69af897e4cc9d4385137fb56fd11a (patch)
treea4363f466cea6de48ca81fadc08273d58698d2ff /TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c
parent32a9632fbca3dd7a88bd3154b84a3773af39c276 (diff)
downloadtempelschubsen-ca61c54b9bd69af897e4cc9d4385137fb56fd11a.tar.gz
tempelschubsen-ca61c54b9bd69af897e4cc9d4385137fb56fd11a.zip
TemplePushingBeta.c4s
Diffstat (limited to 'TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c')
-rw-r--r--TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c
new file mode 100644
index 0000000..aa90954
--- /dev/null
+++ b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c
@@ -0,0 +1,59 @@
+/*-- Schneeball --*/
+
+#strict
+#include ICE1
+
+protected func Hit() {
+ CastPXS("Snow", 100, 20);
+ RemoveObject();
+ return(1);
+}
+
+protected func Departure(thrower) {
+ var proc = GetProcedure(thrower);
+ var comd = GetComDir(thrower);
+ // Ablegen -> Abbruch
+ if (GetPlrDownDouble(GetOwner(thrower)))
+ // Nur Ablegen in der Luft mit Befehlsrichtung? Luftwurf erlauben!
+ if (proc ne "FLIGHT" || GetComDir(thrower) == COMD_None)
+ return(0);
+
+ // Ablegen im stehenden Hangeln -> Abbruch
+ if (proc eq "HANGLE" && comd == COMD_None)
+ return(0);
+
+ // Ablegen im Schwimmen / Klettern -> Abbruch
+ if (proc eq "SWIM" || proc eq "SCALE")
+ return(0);
+
+ // Wurfrichtung rausfinden
+ var dir;
+ // Nach Befehlsrichtung, wenn sinnvolle Werte vorhanden
+ if (comd == COMD_Left() || comd == COMD_Right()) {
+ if (comd == COMD_Left()) dir = -1;
+ if (comd == COMD_Right()) dir = +1;
+ }
+ // sonst nach Blickrichtung
+ else {
+ if (GetDir(thrower) == DIR_Left()) dir = -1;
+ else dir = +1;
+ }
+
+ // Wurfgeschwindigkeiten berechnen
+ var x_dir = dir * GetPhysical("Throw", 0, thrower)/1000 + GetXDir(thrower) / 3;
+ var y_dir = -30;
+
+ if (!x_dir) return(0);
+
+ // Position anpassen
+ SetPosition(GetX() + x_dir / 5, GetY() - 2 + GetYDir(thrower) / 2);
+
+ // Geschwindigkeit setzen
+ SetXDir(x_dir);
+ SetYDir(y_dir);
+
+ Sound("Arrow");
+}
+
+func IsAlchemContainer() { return(true); }
+func AlchemProcessTime() { return(100); }