]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
better triggering for warpzones/teleports
authorRudolf Polzer <divverent@alientrap.org>
Sun, 19 Sep 2010 13:26:53 +0000 (15:26 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Sun, 19 Sep 2010 13:26:53 +0000 (15:26 +0200)
qcsrc/server/t_teleporters.qc
qcsrc/warpzonelib/server.qc

index 8a28216c9c520289e1140c2d7a053aebd6fd39c7..26acf7f0ead9d4f59a5d2f5c1d8770afbf0ba3f3 100644 (file)
@@ -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)
index 7c53d6e4aaad911d83e4fba029ad3b527486fa62..d41418f05f0c3cdf2e59b5dbee8bbd31ee276758 100644 (file)
@@ -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
        {