r4905 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Mon Oct 27 04:10:32 EDT 2008


Author: div0
Date: 2008-10-27 04:10:22 -0400 (Mon, 27 Oct 2008)
New Revision: 4905

Modified:
   trunk/data/qcsrc/server/g_world.qc
   trunk/data/qcsrc/server/miscfunctions.qc
   trunk/data/qcsrc/server/w_seeker.qc
Log:
make removing entities safer by clearing ALL their fields before removing (can't the engine do this?);
fix TAG Seeker aiming at respawning players


Modified: trunk/data/qcsrc/server/g_world.qc
===================================================================
--- trunk/data/qcsrc/server/g_world.qc	2008-10-27 07:47:56 UTC (rev 4904)
+++ trunk/data/qcsrc/server/g_world.qc	2008-10-27 08:10:22 UTC (rev 4905)
@@ -209,6 +209,7 @@
 	world_already_spawned = TRUE;
 
 	remove = remove_safely; // during spawning, watch what you remove!
+	remove_empty_template = spawn(); // make an empty entity
 
 	compressShortVector_init();
 

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2008-10-27 07:47:56 UTC (rev 4904)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2008-10-27 08:10:22 UTC (rev 4905)
@@ -1293,9 +1293,10 @@
 	objerror_builtin(s);
 }
 
+entity remove_empty_template;
 void remove_unsafely(entity e)
-{
-	e.classname = "";
+{ 
+	copyentity(remove_empty_template, e); // zero all fields
 	remove_builtin(e);
 }
 

Modified: trunk/data/qcsrc/server/w_seeker.qc
===================================================================
--- trunk/data/qcsrc/server/w_seeker.qc	2008-10-27 07:47:56 UTC (rev 4904)
+++ trunk/data/qcsrc/server/w_seeker.qc	2008-10-27 08:10:22 UTC (rev 4905)
@@ -51,6 +51,10 @@
         self.switchweapon = self.switchweapon * cvar("g_balance_seeker_missile_decel");
 
     if (self.enemy != world)
+		if (self.enemy.takedamage != DAMAGE_AIM || self.enemy.deadflag != DEAD_NO)
+			self.enemy = world;
+
+    if (self.enemy != world)
     {
         e               = self.enemy;
         turnrate        = cvar("g_balance_seeker_missile_turnrate");		    // how fast to turn
@@ -144,8 +148,13 @@
     self.frame = self.frame +1;
     self.nextthink = time + 0.05;
 
+    if (self.enemy != world)
+		if (self.enemy.takedamage != DAMAGE_AIM || self.enemy.deadflag != DEAD_NO)
+			self.enemy = world;
+
     if(self.frame == 5)
-    {   self.think           = Seeker_Missile_Think;
+    {
+		self.think           = Seeker_Missile_Think;
         self.nextthink       = time + cvar("g_balance_seeker_missile_activate_delay");
         self.effects         = EF_LOWPRECISION | EF_NOSHADOW | EF_ROCKET;
 
@@ -153,7 +162,6 @@
             self.movetype    = MOVETYPE_BOUNCEMISSILE;
         else
             self.movetype    = MOVETYPE_FLYMISSILE;
-
     }
 }
 
@@ -295,9 +303,8 @@
     self.event_damage = SUB_Null;
     sound (self, CHAN_PROJECTILE, "weapons/laserimpact.wav", 1, ATTN_NORM);
 
-    if (other.classname == "player")
+    if (other.takedamage && other.deadflag == DEAD_NO)
     {
-
         entity e;
         e           = spawn();
         e.cnt       = cvar("g_balance_seeker_missile_count");




More information about the nexuiz-commits mailing list