From: Rudolf Polzer <divverent@alientrap.org>
Date: Thu, 12 Jan 2012 13:19:10 +0000 (+0100)
Subject: preparations for timed superweapons (are safe, as we have no superweapons at the... 
X-Git-Tag: xonotic-v0.6.0~177^2~2
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=d5ff576aa9bbb6ed6068f8186295b1727d71cf44;p=xonotic%2Fxonotic-data.pk3dir.git

preparations for timed superweapons (are safe, as we have no superweapons at the moment)
---

diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc
index cce5bf8ea5..e2c68b24ec 100644
--- a/qcsrc/server/t_items.qc
+++ b/qcsrc/server/t_items.qc
@@ -131,7 +131,7 @@ void Item_Show (entity e, float mode)
 
 		e.spawnshieldtime = 1;
 	}
-	else if((e.flags & FL_WEAPON) && !(get_weaponinfo(e.weapon).items & IT_SUPERWEAPON) && g_weapon_stay)
+	else if((e.flags & FL_WEAPON) && !(e.flags & FL_NO_WEAPON_STAY) && g_weapon_stay)
 	{
 		// make the item translucent and not touchable
 		e.model = e.mdl;
@@ -265,7 +265,7 @@ void Item_RespawnCountdown (void)
 
 void Item_ScheduleRespawnIn(entity e, float t)
 {
-	if((e.flags & FL_POWERUP) || ((e.flags & FL_WEAPON) && (get_weaponinfo(e.weapon).items & IT_SUPERWEAPON)))
+	if((e.flags & FL_POWERUP) || (e.items & IT_SUPERWEAPON))
 	{
 		e.think = Item_RespawnCountdown;
 		e.nextthink = time + max(0, t - ITEM_RESPAWN_TICKS);
@@ -934,23 +934,6 @@ void weapon_defaultspawnfunc(float wpn)
 	entity oldself;
 	float i, j;
 
-	// set the respawntime in advance (so replaced weapons can copy it)
-
-	if(!self.respawntime)
-	{
-		e = get_weaponinfo(wpn);
-		if(e.items & IT_SUPERWEAPON)
-		{
-			self.respawntime = g_pickup_respawntime_superweapon;
-			self.respawntimejitter = g_pickup_respawntimejitter_superweapon;
-		}
-		else
-		{
-			self.respawntime = g_pickup_respawntime_weapon;
-			self.respawntimejitter = g_pickup_respawntimejitter_weapon;
-		}
-	}
-
 	if(self.classname != "droppedweapon" && self.classname != "replacedweapon")
 	{
 		e = get_weaponinfo(wpn);
@@ -1016,7 +999,24 @@ void weapon_defaultspawnfunc(float wpn)
 
 	e = get_weaponinfo(wpn);
 
-	if(e.items && !(e.items & IT_SUPERWEAPON))
+	if(e.items & IT_SUPERWEAPON)
+		self.items |= IT_SUPERWEAPON;
+
+	if(!self.respawntime)
+	{
+		if(self.items & IT_SUPERWEAPON)
+		{
+			self.respawntime = g_pickup_respawntime_superweapon;
+			self.respawntimejitter = g_pickup_respawntimejitter_superweapon;
+		}
+		else
+		{
+			self.respawntime = g_pickup_respawntime_weapon;
+			self.respawntimejitter = g_pickup_respawntimejitter_weapon;
+		}
+	}
+
+	if(e.items)
 	{
 		for(i = 0, j = 1; i < 24; ++i, j *= 2)
 		{
@@ -1028,10 +1028,10 @@ void weapon_defaultspawnfunc(float wpn)
 			}
 		}
 	}
-	else
-	{
+
+	// no weapon-stay on superweapons
+	if(self.items & IT_SUPERWEAPON)
 		self.flags |= FL_NO_WEAPON_STAY;
-	}
 
 	// weapon stay isn't supported for teamed weapons
 	if(self.team)