r1783 - branches/nexuiz-2.0/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Jul 28 07:23:57 EDT 2006
Author: div0
Date: 2006-07-28 07:23:57 -0400 (Fri, 28 Jul 2006)
New Revision: 1783
Modified:
branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
Log:
weapon throw code on death and on pressing THROW merged; fixes "double weapon throw" bug
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc 2006-07-28 11:22:05 UTC (rev 1782)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc 2006-07-28 11:23:57 UTC (rev 1783)
@@ -111,7 +111,7 @@
if (self.weapon != WEP_LASER
&& !cvar("g_minstagib") && !cvar("g_instagib")
&& !cvar("g_rocketarena") && !cvar("g_lms") && cvar("g_pickup_items") && !cvar("g_nixnex"))
- W_ThrowWeapon();
+ W_ThrowWeapon(self.velocity * 0.5 + v_forward * 750, '0 0 0', TRUE);
}
else
{
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc 2006-07-28 11:22:05 UTC (rev 1782)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc 2006-07-28 11:23:57 UTC (rev 1783)
@@ -122,45 +122,15 @@
void SpawnThrownWeapon (vector org, float w)
{
- local entity oldself;
-
if (!cvar("g_pickup_items"))
if (!cvar("g_minstagib"))
return;
+ if (!w)
+ return;
if (w == IT_LASER)
return;
- oldself = self;
- self = spawn();
- // this will cause it to be removed later
- self.classname = "droppedweapon";
-
- setorigin(self, org);
- self.velocity = randomvec() * 100 + '0 0 200';
- SUB_SetFade(self, time + 20, 1);
-
- if (w == WEP_UZI)
- weapon_uzi ();
- else if (w == WEP_SHOTGUN)
- weapon_shotgun ();
- else if (w == WEP_GRENADE_LAUNCHER)
- weapon_grenadelauncher ();
- else if (w == WEP_ELECTRO)
- weapon_electro ();
- else if (w == WEP_CRYLINK)
- weapon_crylink ();
- else if (w == WEP_NEX)
- weapon_nex ();
- else if (w == WEP_HAGAR)
- weapon_hagar ();
- else if (w == WEP_ROCKET_LAUNCHER)
- weapon_rocketlauncher ();
-
- // making absolutely sure...
- self.classname = "droppedweapon";
- self.colormap = oldself.colormap;
-
- self = oldself;
+ W_ThrowWeapon(randomvec() * 100 + '0 0 200', org - self.origin, FALSE);
}
void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
@@ -321,7 +291,7 @@
// become fully visible
self.alpha = 1;
// throw a weapon
- SpawnThrownWeapon (self.origin + (self.mins + self.maxs) * 0.5, self.weapon);
+ SpawnThrownWeapon (self.origin + (self.mins + self.maxs) * 0.5, self.switchweapon);
// print an obituary message
Obituary (attacker, self, deathtype);
DropAllRunes(self);
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc 2006-07-28 11:22:05 UTC (rev 1782)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc 2006-07-28 11:23:57 UTC (rev 1783)
@@ -34,7 +34,7 @@
};
// toss current weapon
-void() W_ThrowWeapon
+void(vector velo, vector delta, float doreduce) W_ThrowWeapon
{
local float w, ammo;
local entity wep, e;
@@ -43,10 +43,10 @@
wep = spawn();
self = wep;
w = e.weapon;
- setorigin(wep, e.origin);
+ setorigin(wep, e.origin + delta);
makevectors(e.angles);
wep.classname = "droppedweapon";
- wep.velocity = e.velocity * 0.5 + v_forward * 750;
+ wep.velocity = velo; // e.velocity * 0.5 + v_forward * 750;
SUB_SetFade(wep, time + 20, 1);
if(w == WEP_SHOTGUN)
@@ -58,9 +58,12 @@
return;
}
weapon_shotgun();
- ammo = min(e.ammo_shells, wep.ammo_shells);
- wep.ammo_shells = ammo;
- e.ammo_shells -= ammo;
+ if(doreduce)
+ {
+ ammo = min(e.ammo_shells, wep.ammo_shells);
+ wep.ammo_shells = ammo;
+ e.ammo_shells -= ammo;
+ }
}
else if(w == WEP_UZI)
{
@@ -71,9 +74,12 @@
return;
}
weapon_uzi();
- ammo = min(e.ammo_nails, wep.ammo_nails);
- wep.ammo_nails = ammo;
- e.ammo_nails -= ammo;
+ if(doreduce)
+ {
+ ammo = min(e.ammo_nails, wep.ammo_nails);
+ wep.ammo_nails = ammo;
+ e.ammo_nails -= ammo;
+ }
}
else if(w == WEP_GRENADE_LAUNCHER)
{
@@ -84,9 +90,12 @@
return;
}
weapon_grenadelauncher();
- ammo = min(e.ammo_rockets, wep.ammo_rockets);
- wep.ammo_rockets = ammo;
- e.ammo_rockets -= ammo;
+ if(doreduce)
+ {
+ ammo = min(e.ammo_rockets, wep.ammo_rockets);
+ wep.ammo_rockets = ammo;
+ e.ammo_rockets -= ammo;
+ }
}
else if(w == WEP_ELECTRO)
{
@@ -97,9 +106,12 @@
return;
}
weapon_electro();
- ammo = min(e.ammo_cells, wep.ammo_cells);
- wep.ammo_cells = ammo;
- e.ammo_cells -= ammo;
+ if(doreduce)
+ {
+ ammo = min(e.ammo_cells, wep.ammo_cells);
+ wep.ammo_cells = ammo;
+ e.ammo_cells -= ammo;
+ }
}
else if(w == WEP_CRYLINK)
{
@@ -110,9 +122,12 @@
return;
}
weapon_crylink();
- ammo = min(e.ammo_cells, wep.ammo_cells);
- wep.ammo_cells = ammo;
- e.ammo_cells -= ammo;
+ if(doreduce)
+ {
+ ammo = min(e.ammo_cells, wep.ammo_cells);
+ wep.ammo_cells = ammo;
+ e.ammo_cells -= ammo;
+ }
}
else if(w == WEP_NEX)
{
@@ -123,9 +138,12 @@
return;
}
weapon_nex();
- ammo = min(e.ammo_cells, wep.ammo_cells);
- wep.ammo_cells = ammo;
- e.ammo_cells -= ammo;
+ if(doreduce)
+ {
+ ammo = min(e.ammo_cells, wep.ammo_cells);
+ wep.ammo_cells = ammo;
+ e.ammo_cells -= ammo;
+ }
}
else if(w == WEP_HAGAR)
{
@@ -136,9 +154,12 @@
return;
}
weapon_hagar();
- ammo = min(e.ammo_rockets, wep.ammo_rockets);
- wep.ammo_rockets = ammo;
- e.ammo_rockets -= ammo;
+ if(doreduce)
+ {
+ ammo = min(e.ammo_rockets, wep.ammo_rockets);
+ wep.ammo_rockets = ammo;
+ e.ammo_rockets -= ammo;
+ }
}
else if(w == WEP_ROCKET_LAUNCHER)
{
@@ -149,9 +170,12 @@
return;
}
weapon_rocketlauncher();
- ammo = min(e.ammo_rockets, wep.ammo_rockets);
- wep.ammo_rockets = ammo;
- e.ammo_rockets -= ammo;
+ if(doreduce)
+ {
+ ammo = min(e.ammo_rockets, wep.ammo_rockets);
+ wep.ammo_rockets = ammo;
+ e.ammo_rockets -= ammo;
+ }
}
if(e.items & w)
More information about the nexuiz-commits
mailing list