r1797 - branches/nexuiz-2.0/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Thu Aug 3 04:53:53 EDT 2006
Author: div0
Date: 2006-08-03 04:53:53 -0400 (Thu, 03 Aug 2006)
New Revision: 1797
Modified:
branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
branches/nexuiz-2.0/data/qcsrc/server/defs.qh
branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc
branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
Log:
weapon throw code cleanup
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc 2006-08-02 11:36:39 UTC (rev 1796)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc 2006-08-03 08:53:53 UTC (rev 1797)
@@ -24,6 +24,53 @@
return FALSE;
};
+string W_Name(float weaponid)
+{
+ if(weaponid == WEP_LASER) return "Laser";
+ if(weaponid == WEP_UZI) return "Machine Gun";
+ if(weaponid == WEP_SHOTGUN) return "Shotgun";
+ if(weaponid == WEP_GRENADE_LAUNCHER) return "Mortar";
+ if(weaponid == WEP_ELECTRO) return "Electro";
+ if(weaponid == WEP_NEX) return "Nex";
+ if(weaponid == WEP_HAGAR) return "Hagar";
+ if(weaponid == WEP_ROCKET_LAUNCHER) return "Rocket Launcher";
+ if(weaponid == WEP_CRYLINK) return "Crylink";
+ return "@!#%'n Tuba";
+}
+
+float W_ItemCode(float wpn)
+{
+ switch(wpn)
+ {
+ case WEP_LASER: return IT_LASER;
+ case WEP_SHOTGUN: return IT_SHOTGUN;
+ case WEP_UZI: return IT_UZI;
+ case WEP_GRENADE_LAUNCHER: return IT_GRENADE_LAUNCHER;
+ case WEP_ELECTRO: return IT_ELECTRO;
+ case WEP_CRYLINK: return IT_CRYLINK;
+ case WEP_NEX: return IT_NEX;
+ case WEP_HAGAR: return IT_HAGAR;
+ case WEP_ROCKET_LAUNCHER: return IT_ROCKET_LAUNCHER;
+ default: return 0;
+ }
+}
+
+float W_AmmoItemCode(float wpn)
+{
+ switch(wpn)
+ {
+ case WEP_SHOTGUN: return IT_SHELLS;
+ case WEP_UZI: return IT_NAILS;
+ case WEP_GRENADE_LAUNCHER: return IT_ROCKETS;
+ case WEP_ELECTRO: return IT_CELLS;
+ case WEP_CRYLINK: return IT_CELLS;
+ case WEP_NEX: return IT_CELLS;
+ case WEP_HAGAR: return IT_ROCKETS;
+ case WEP_ROCKET_LAUNCHER: return IT_ROCKETS;
+ default: return 0;
+ }
+}
+
// think function for tossed weapons
void() thrown_wep_think
{
@@ -38,6 +85,7 @@
{
local float w, ammo;
local entity wep, e;
+ local .float ammofield;
w = self.weapon;
if(w == WEP_LASER)
@@ -55,186 +103,27 @@
wep.velocity = velo; // e.velocity * 0.5 + v_forward * 750;
SUB_SetFade(wep, time + 20, 1);
- if(w == WEP_SHOTGUN)
+ ammofield = Item_CounterField(W_AmmoItemCode(w));
+ w = W_ItemCode(w);
+ if(!(e.items & w))
{
- w = IT_SHOTGUN;
- if(!(e.items & w))
- {
- remove(wep);
- self = e;
- return;
- }
- weapon_shotgun();
- if(startitem_failed)
- {
- self = e;
- return;
- }
- if(doreduce)
- {
- ammo = min(e.ammo_shells, wep.ammo_shells);
- wep.ammo_shells = ammo;
- e.ammo_shells -= ammo;
- }
+ remove(wep);
+ goto leave;
}
- else if(w == WEP_UZI)
+ (Item_SpawnFunc(w))();
+ if(startitem_failed)
+ goto leave;
+ if(doreduce)
{
- w = IT_UZI;
- if(!(e.items & w))
- {
- remove(wep);
- self = e;
- return;
- }
- weapon_uzi();
- if(startitem_failed)
- {
- self = e;
- return;
- }
- if(doreduce)
- {
- ammo = min(e.ammo_nails, wep.ammo_nails);
- wep.ammo_nails = ammo;
- e.ammo_nails -= ammo;
- }
+ ammo = min(e.ammofield, wep.ammofield);
+ wep.ammofield = ammo;
+ e.ammofield -= ammo;
}
- else if(w == WEP_GRENADE_LAUNCHER)
- {
- w = IT_GRENADE_LAUNCHER;
- if(!(e.items & w))
- {
- self = e;
- remove(wep);
- return;
- }
- weapon_grenadelauncher();
- if(startitem_failed)
- {
- self = e;
- return;
- }
- if(doreduce)
- {
- ammo = min(e.ammo_rockets, wep.ammo_rockets);
- wep.ammo_rockets = ammo;
- e.ammo_rockets -= ammo;
- }
- }
- else if(w == WEP_ELECTRO)
- {
- w = IT_ELECTRO;
- if(!(e.items & w))
- {
- self = e;
- remove(wep);
- return;
- }
- weapon_electro();
- if(startitem_failed)
- {
- self = e;
- return;
- }
- if(doreduce)
- {
- ammo = min(e.ammo_cells, wep.ammo_cells);
- wep.ammo_cells = ammo;
- e.ammo_cells -= ammo;
- }
- }
- else if(w == WEP_CRYLINK)
- {
- w = IT_CRYLINK;
- if(!(e.items & w))
- {
- self = e;
- remove(wep);
- return;
- }
- weapon_crylink();
- if(startitem_failed)
- {
- self = e;
- return;
- }
- if(doreduce)
- {
- ammo = min(e.ammo_cells, wep.ammo_cells);
- wep.ammo_cells = ammo;
- e.ammo_cells -= ammo;
- }
- }
- else if(w == WEP_NEX)
- {
- w = IT_NEX;
- if(!(e.items & w))
- {
- self = e;
- remove(wep);
- return;
- }
- weapon_nex();
- if(startitem_failed)
- {
- self = e;
- return;
- }
- if(doreduce)
- {
- ammo = min(e.ammo_cells, wep.ammo_cells);
- wep.ammo_cells = ammo;
- e.ammo_cells -= ammo;
- }
- }
- else if(w == WEP_HAGAR)
- {
- w = IT_HAGAR;
- if(!(e.items & w))
- {
- self = e;
- remove(wep);
- return;
- }
- weapon_hagar();
- if(startitem_failed)
- {
- self = e;
- return;
- }
- if(doreduce)
- {
- ammo = min(e.ammo_rockets, wep.ammo_rockets);
- wep.ammo_rockets = ammo;
- e.ammo_rockets -= ammo;
- }
- }
- else if(w == WEP_ROCKET_LAUNCHER)
- {
- w = IT_ROCKET_LAUNCHER;
- if(!(e.items & w))
- {
- self = e;
- remove(wep);
- return;
- }
- weapon_rocketlauncher();
- if(startitem_failed)
- {
- self = e;
- return;
- }
- if(doreduce)
- {
- ammo = min(e.ammo_rockets, wep.ammo_rockets);
- wep.ammo_rockets = ammo;
- e.ammo_rockets -= ammo;
- }
- }
if(e.items & w)
if(e.health >= 1)
sprint(e, strcat("You dropped the ^2", wep.netname, "\n"));
+
wep.owner = e;
setorigin(wep, wep.origin);
wep.nextthink = time + 0.5;
@@ -246,6 +135,8 @@
wep.colormap = e.colormap;
if (e.switchweapon != e.weapon)
e.cnt = e.weapon;
+
+:leave
self = e;
};
@@ -426,20 +317,6 @@
nixnex_nextweapon = id;
}
-string W_Name(float weaponid)
-{
- if(weaponid == WEP_LASER) return "Laser";
- if(weaponid == WEP_UZI) return "Machine Gun";
- if(weaponid == WEP_SHOTGUN) return "Shotgun";
- if(weaponid == WEP_GRENADE_LAUNCHER) return "Mortar";
- if(weaponid == WEP_ELECTRO) return "Electro";
- if(weaponid == WEP_NEX) return "Nex";
- if(weaponid == WEP_HAGAR) return "Hagar";
- if(weaponid == WEP_ROCKET_LAUNCHER) return "Rocket Launcher";
- if(weaponid == WEP_CRYLINK) return "Crylink";
- return "@!#%'n Tuba";
-}
-
void Nixnex_GiveCurrentWeapon()
{
float dt;
@@ -499,7 +376,7 @@
self.items = self.items - (self.items & (IT_LASER | IT_SHOTGUN | IT_UZI | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER));
if(cvar("g_nixnex_with_laser"))
self.items = self.items + IT_LASER;
- self.items = self.items - (self.items & weapon_translateindextoflag(nixnex_weapon)) + weapon_translateindextoflag(nixnex_weapon);
+ self.items = self.items | W_ItemCode(nixnex_weapon);
if(self.switchweapon != nixnex_weapon)
if(!client_hasweapon(self, self.switchweapon, TRUE, FALSE))
Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc 2006-08-02 11:36:39 UTC (rev 1796)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc 2006-08-03 08:53:53 UTC (rev 1797)
@@ -229,33 +229,6 @@
self.exteriorweaponentity.nextthink = time;
};
-// convertion from index (= impulse) to flag in .items
-float(float index) weapon_translateindextoflag =
-{
- if (index == WEP_LASER)
- return IT_LASER;
- else if (index == WEP_SHOTGUN)
- return IT_SHOTGUN;
- else if (index == WEP_UZI)
- return IT_UZI;
- else if (index == WEP_GRENADE_LAUNCHER)
- return IT_GRENADE_LAUNCHER;
- else if (index == WEP_ELECTRO)
- return IT_ELECTRO;
- else if (index == WEP_CRYLINK)
- return IT_CRYLINK;
- else if (index == WEP_NEX)
- return IT_NEX;
- else if (index == WEP_HAGAR)
- return IT_HAGAR;
- else if (index == WEP_ROCKET_LAUNCHER)
- return IT_ROCKET_LAUNCHER;
- else if (index == WEP_LASER)
- return IT_LASER;
- else
- return 0;
-};
-
float(entity cl, float wpn, float andammo, float complain) client_hasweapon =
{
local float itemcode, f;
@@ -267,7 +240,7 @@
sprint(self, "Invalid weapon\n");
return FALSE;
}
- itemcode = weapon_translateindextoflag(wpn);
+ itemcode = W_ItemCode(wpn);
if (cl.items & itemcode)
{
if (andammo)
Modified: branches/nexuiz-2.0/data/qcsrc/server/defs.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/defs.qh 2006-08-02 11:36:39 UTC (rev 1796)
+++ branches/nexuiz-2.0/data/qcsrc/server/defs.qh 2006-08-03 08:53:53 UTC (rev 1797)
@@ -271,3 +271,15 @@
float teams_matter;
float startitem_failed;
+
+
+
+typedef .float floatfield;
+typedef void(void) spawnfunc;
+floatfield Item_CounterField(float it);
+float Item_WeaponCode(float it);
+spawnfunc Item_SpawnFunc(float it);
+
+float W_AmmoItemCode(float wpn);
+float W_ItemCode(float wpn);
+string W_Name(float weaponid);
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc 2006-08-02 11:36:39 UTC (rev 1796)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc 2006-08-03 08:53:53 UTC (rev 1797)
@@ -51,7 +51,7 @@
// w = player.switchweapon;
if(w == 0)
w = player.cnt; // previous weapon!
- s = strcat(s, ftos(weapon_translateindextoflag(w)));
+ s = strcat(s, ftos(W_ItemCode(w)));
if(time < player.strength_finished)
s = strcat(s, "S");
if(time < player.invincible_finished)
Modified: branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc 2006-08-02 11:36:39 UTC (rev 1796)
+++ branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc 2006-08-03 08:53:53 UTC (rev 1797)
@@ -1,6 +1,3 @@
-string W_Name(float weaponid);
-float(float index) weapon_translateindextoflag;
-
float logfile_open;
float logfile;
Modified: branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_items.qc 2006-08-02 11:36:39 UTC (rev 1796)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_items.qc 2006-08-03 08:53:53 UTC (rev 1797)
@@ -570,3 +570,57 @@
}
+
+
+
+floatfield Item_CounterField(float it)
+{
+ switch(it)
+ {
+ case IT_SHELLS: return ammo_shells;
+ case IT_NAILS: return ammo_nails;
+ case IT_ROCKETS: return ammo_rockets;
+ case IT_CELLS: return ammo_cells;
+ case IT_5HP: return health;
+ case IT_25HP: return health;
+ case IT_HEALTH: return health;
+ case IT_ARMOR_SHARD: return armorvalue;
+ case IT_ARMOR: return armorvalue;
+ // add more things here (health, armor)
+ default: error("requested item has no counter field");
+ }
+}
+
+float Item_WeaponCode(float it)
+{
+ switch(it)
+ {
+ case IT_LASER: return WEP_LASER;
+ case IT_SHOTGUN: return WEP_SHOTGUN;
+ case IT_UZI: return WEP_UZI;
+ case IT_GRENADE_LAUNCHER: return WEP_GRENADE_LAUNCHER;
+ case IT_ELECTRO: return WEP_ELECTRO;
+ case IT_CRYLINK: return WEP_CRYLINK;
+ case IT_NEX: return WEP_NEX;
+ case IT_HAGAR: return WEP_HAGAR;
+ case IT_ROCKET_LAUNCHER: return WEP_ROCKET_LAUNCHER;
+ default: return 0;
+ }
+}
+
+spawnfunc Item_SpawnFunc(float it)
+{
+ switch(it)
+ {
+ case IT_SHOTGUN: return weapon_shotgun;
+ case IT_UZI: return weapon_uzi;
+ case IT_GRENADE_LAUNCHER: return weapon_grenadelauncher;
+ case IT_ELECTRO: return weapon_electro;
+ case IT_CRYLINK: return weapon_crylink;
+ case IT_NEX: return weapon_nex;
+ case IT_HAGAR: return weapon_hagar;
+ case IT_ROCKET_LAUNCHER: return weapon_rocketlauncher;
+ // add all other item spawn functions here
+ default: error("requested item can't be spawned");
+ }
+}
More information about the nexuiz-commits
mailing list