[nexuiz-commits] r8686 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Feb 28 14:42:21 EST 2010


Author: div0
Date: 2010-02-28 14:42:21 -0500 (Sun, 28 Feb 2010)
New Revision: 8686

Modified:
   trunk/data/qcsrc/server/t_teleporters.qc
Log:
require only one of the two entities to target the other for warpzones, instead of a cyclic connection

Now, warpzone layout is:

trigger_warpzone --killtarget--> target_position for origin and direction
                 --target------> trigger_warpzone --kiltarget--> target_position for origin and direction

         ^
         |
+--------X--------+
|         _       |
+--------|\-------+
           \
            \
             \  ^
              \ |
        +------\X--------+
        |       \        |
        +----------------+

Modified: trunk/data/qcsrc/server/t_teleporters.qc
===================================================================
--- trunk/data/qcsrc/server/t_teleporters.qc	2010-02-28 19:42:17 UTC (rev 8685)
+++ trunk/data/qcsrc/server/t_teleporters.qc	2010-02-28 19:42:21 UTC (rev 8686)
@@ -306,6 +306,12 @@
 
 void warpzone_updatetransform()
 {
+	if(!self.enemy || self.enemy.enemy != self)
+	{
+		objerror("Invalid warp zone detected. Killed.");
+		return;
+	}
+
 	// 1. update this, and the enemy, warp zone
 	self.warpzone_origin = self.aiment.origin;
 	self.warpzone_angles = self.aiment.angles;
@@ -405,17 +411,7 @@
 }
 void warpzone_findtarget (void)
 {
-	if(self.target == "")
-	{
-		objerror("Warp zone with no target");
-		return;
-	}
-	self.enemy = find(world, targetname, self.target);
-	if(self.enemy == world)
-	{
-		objerror("Warp zone with nonexisting target");
-		return;
-	}
+	entity e;
 
 	if(self.killtarget == "")
 	{
@@ -429,6 +425,17 @@
 		return;
 	}
 
+	// this way only one of the two ents needs to target
+	if(self.target != "")
+	{
+		e = find(world, targetname, self.target);
+		if(e)
+		{
+			self.enemy = e;
+			self.enemy.enemy = self;
+		}
+	}
+
 	// now enable touch
 	self.touch = warpzone_touch;
 }



More information about the nexuiz-commits mailing list