From: Rudolf Polzer Date: Sun, 19 Sep 2010 13:26:53 +0000 (+0200) Subject: better triggering for warpzones/teleports X-Git-Tag: xonotic-v0.1.0preview~311^2~3 X-Git-Url: https://de.git.xonotic.org/?a=commitdiff_plain;h=212d23c4abc03cb9a8fe5151d74da8db8c0c7c52;p=xonotic%2Fxonotic-data.pk3dir.git better triggering for warpzones/teleports --- diff --git a/qcsrc/server/t_teleporters.qc b/qcsrc/server/t_teleporters.qc index 8a28216c9..26acf7f0e 100644 --- a/qcsrc/server/t_teleporters.qc +++ b/qcsrc/server/t_teleporters.qc @@ -152,6 +152,7 @@ void Teleport_Touch (void) entity oldself, e; vector o; float p; + string s; if (other.health < 1) return; @@ -208,14 +209,15 @@ void Teleport_Touch (void) o = e.origin + '0 0 1' * (1 - other.mins_z - 24); TeleportPlayer(self, other, o, e.mangle, v_forward * vlen(other.velocity), '0 0 0', '0 0 0', TELEPORT_FLAGS_TELEPORTER); - if(e.target) - { - oldself = self; - activator = other; - self = e; - SUB_UseTargets(); - self = oldself; - } + activator = other; + s = self.target; self.target = string_null; + SUB_UseTargets(); + if not(self.target) self.target = s; + + oldself = self; + self = e; + SUB_UseTargets(); + self = oldself; } void spawnfunc_info_teleport_destination (void) diff --git a/qcsrc/warpzonelib/server.qc b/qcsrc/warpzonelib/server.qc index 7c53d6e4a..d41418f05 100644 --- a/qcsrc/warpzonelib/server.qc +++ b/qcsrc/warpzonelib/server.qc @@ -111,14 +111,23 @@ void WarpZone_Touch (void) e = self.enemy; if(WarpZone_Teleport(other)) { - if(self.aiment.target) - { - oldself = self; - activator = other; - self = self.aiment; - SUB_UseTargets(); - self = oldself; - } + string save1, save2; + activator = other; + + save1 = self.target; self.target = string_null; + save2 = self.target3; self.target3 = string_null; + SUB_UseTargets(); + if not(self.target) self.target = save1; + if not(self.target3) self.target3 = save2; + + oldself = self; + self = self.aiment; + save1 = self.target; self.target = string_null; + save2 = self.target2; self.target2 = string_null; + SUB_UseTargets(); + if not(self.target) self.target = save1; + if not(self.target2) self.target2 = save2; + self = oldself; } else {