r4437 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Sep 9 14:12:19 EDT 2008


Author: div0
Date: 2008-09-09 14:12:19 -0400 (Tue, 09 Sep 2008)
New Revision: 4437

Modified:
   trunk/data/qcsrc/server/cl_player.qc
   trunk/data/qcsrc/server/portals.qc
   trunk/data/qcsrc/server/portals.qh
Log:
again: remove portals when owner dies, but this time without crash


Modified: trunk/data/qcsrc/server/cl_player.qc
===================================================================
--- trunk/data/qcsrc/server/cl_player.qc	2008-09-09 13:36:42 UTC (rev 4436)
+++ trunk/data/qcsrc/server/cl_player.qc	2008-09-09 18:12:19 UTC (rev 4437)
@@ -506,6 +506,7 @@
 			kh_Key_DropAll(self, TRUE);
 		if(self.flagcarried)
 			DropFlag(self.flagcarried);
+		Portal_ClearAllLater(self);
 		// clear waypoints
 		WaypointSprite_PlayerDead();
 		// make the corpse upright (not tilted)

Modified: trunk/data/qcsrc/server/portals.qc
===================================================================
--- trunk/data/qcsrc/server/portals.qc	2008-09-09 13:36:42 UTC (rev 4436)
+++ trunk/data/qcsrc/server/portals.qc	2008-09-09 18:12:19 UTC (rev 4437)
@@ -543,6 +543,24 @@
 	if(own.portal_out)
 		Portal_Remove(own.portal_out, 0);
 }
+void Portal_RemoveLater_Think()
+{
+	Portal_Remove(self, self.cnt);
+}
+void Portal_RemoveLater(entity portal, float kill)
+{
+	Portal_MakeBrokenPortal(portal);
+	portal.cnt = kill;
+	portal.think = Portal_RemoveLater_Think;
+	portal.nextthink = time;
+}
+void Portal_ClearAllLater(entity own)
+{
+	if(own.portal_in)
+		Portal_RemoveLater(own.portal_in, 0);
+	if(own.portal_out)
+		Portal_RemoveLater(own.portal_out, 0);
+}
 void Portal_ClearWithID(entity own, float id)
 {
 	if(own.portal_in)

Modified: trunk/data/qcsrc/server/portals.qh
===================================================================
--- trunk/data/qcsrc/server/portals.qh	2008-09-09 13:36:42 UTC (rev 4436)
+++ trunk/data/qcsrc/server/portals.qh	2008-09-09 18:12:19 UTC (rev 4437)
@@ -1,4 +1,5 @@
 void Portal_ClearAll(entity own);
+void Portal_ClearAllLater(entity own);
 float Portal_SpawnOutPortalAtTrace(entity own, vector dir, float id);
 float Portal_SpawnInPortalAtTrace(entity own, vector dir, float id);
 void Portal_ClearWithID(entity own, float id);




More information about the nexuiz-commits mailing list