From: Rudolf Polzer 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.xonotic.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 cce5bf8ea..e2c68b24e 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)