From 280180cff37097f72994f8f87e376d543c05a967 Mon Sep 17 00:00:00 2001 From: div0 Date: Tue, 2 Sep 2008 13:34:10 +0000 Subject: [PATCH] huge patch that breaks everything: add a new stat "weapons", network weapon bits using that, allowing for up to 24 weapons (although their item entities are yet to be defined, maybe with an automatic replacement system) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@4288 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 15 +++ data/qcsrc/client/csqc_constants.qc | 18 ---- data/qcsrc/client/sbar.qc | 44 ++++----- data/qcsrc/common/constants.qh | 43 +++++++- data/qcsrc/server/cl_client.qc | 14 +-- data/qcsrc/server/cl_impulse.qc | 4 +- data/qcsrc/server/cl_player.qc | 2 +- data/qcsrc/server/cl_weapons.qc | 40 ++++---- data/qcsrc/server/cl_weaponsystem.qc | 33 +------ data/qcsrc/server/clientcommands.qc | 2 +- data/qcsrc/server/constants.qh | 37 ------- data/qcsrc/server/defs.qh | 24 +---- data/qcsrc/server/g_damage.qc | 32 +++--- data/qcsrc/server/g_world.qc | 1 + data/qcsrc/server/miscfunctions.qc | 30 +++--- data/qcsrc/server/t_items.qc | 132 +++++++++++-------------- data/qcsrc/server/w_common.qc | 4 +- data/qcsrc/server/w_crylink.qc | 8 +- data/qcsrc/server/w_electro.qc | 8 +- data/qcsrc/server/w_grenadelauncher.qc | 6 +- data/qcsrc/server/w_hagar.qc | 6 +- data/qcsrc/server/w_laser.qc | 6 +- data/qcsrc/server/w_nex.qc | 11 +-- data/qcsrc/server/w_rocketlauncher.qc | 4 +- data/qcsrc/server/w_shotgun.qc | 6 +- data/qcsrc/server/w_uzi.qc | 6 +- 26 files changed, 219 insertions(+), 317 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index 3f66f03db..3c2d6e436 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -1077,3 +1077,18 @@ sv_allowdownloads_inarchive 1 // for csprogs.dat set g_jump_grunt 0 // Do you make a grunting noise every time you jump? Is it the same grunting noise every time? alias allready "sv_cmd allready" + +seta cl_weaponpriority "9 8 7 6 5 4 3 2 1" +// impulse 200, 210, 220: +seta cl_weaponpriority0 "9 8 4" // explosives (RL Hagar Mortar) +// impulse 201, 211, 221: +seta cl_weaponpriority1 "7 6 5 1" // energy (Nex Crylink Electro Laser) +seta cl_weaponpriority2 "7 3" // hitscan exact (Nex MG) +seta cl_weaponpriority3 "7 3 2" // hitscan all (Nex MG Shotgun) +seta cl_weaponpriority4 "8 6 5 2" // spam (Hagar Crylink Electro Shotgun) +seta cl_weaponpriority5 "" +seta cl_weaponpriority6 "" +seta cl_weaponpriority7 "" +seta cl_weaponpriority8 "" +// impulse 209, 219, 229: +seta cl_weaponpriority9 "" diff --git a/data/qcsrc/client/csqc_constants.qc b/data/qcsrc/client/csqc_constants.qc index c921e86b2..0c9669a24 100644 --- a/data/qcsrc/client/csqc_constants.qc +++ b/data/qcsrc/client/csqc_constants.qc @@ -164,24 +164,6 @@ const float BUTTON_15 = 131072; const float BUTTON_16 = 262144; -const float NEX_IT_UZI = 1; -const float NEX_IT_SHOTGUN = 2; -const float NEX_IT_GRENADE_LAUNCHER = 4; -const float NEX_IT_ELECTRO = 8; -const float NEX_IT_CRYLINK = 16; -const float NEX_IT_NEX = 32; -const float NEX_IT_HAGAR = 64; -const float NEX_IT_ROCKET_LAUNCHER = 128; -const float NEX_IT_SHELLS = 256; -const float NEX_IT_BULLETS = 512; -const float NEX_IT_ROCKETS = 1024; -const float NEX_IT_CELLS = 2048; -const float NEX_IT_LASER = 4094; -const float NEX_IT_STRENGTH = 8192; -const float NEX_IT_INVINCIBLE = 16384; -const float NEX_IT_SPEED = 32768; -const float NEX_IT_SLOWMO = 65536; - const float DRAWFLAG_NORMAL = 0; const float DRAWFLAG_ADDITIVE = 1; const float DRAWFLAG_MODULATE = 2; diff --git a/data/qcsrc/client/sbar.qc b/data/qcsrc/client/sbar.qc index e125fc4cd..f59297ef9 100644 --- a/data/qcsrc/client/sbar.qc +++ b/data/qcsrc/client/sbar.qc @@ -1296,7 +1296,7 @@ void Sbar_Draw (void) { float i; float x, fade; - float stat_items; + float stat_items, stat_weapons; sbar_fontsize = Sbar_GetFontsize(); @@ -1402,6 +1402,7 @@ void Sbar_Draw (void) if (sb_lines && sbar_hudselector == 1) { stat_items = getstati(STAT_ITEMS); + stat_weapons = getstati(STAT_WEAPONS); sbar_x = (vid_conwidth - 320.0)*0.5; sbar_y = vid_conheight - 24.0 - 16.0; @@ -1411,19 +1412,14 @@ void Sbar_Draw (void) fade = bound(0.7, fade, 1); x = 1.0; - for(i = 0; i < 8; ++i) + for(i = WEP_FIRST; i <= WEP_LAST; ++i) { - if(stat_items & x) + if(stat_weapons & x) { - Sbar_DrawWeapon(i+1, fade, (i + 2 == activeweapon)); + Sbar_DrawWeapon(i-1, fade, (i == activeweapon)); } x *= 2; } - x *= 2*2*2*2; - if(stat_items & x) - { - Sbar_DrawWeapon(0, fade, (activeweapon == 1)); - } // armor x = getstati(STAT_ARMOR); @@ -1465,15 +1461,15 @@ void Sbar_Draw (void) // ammo x = getstati(STAT_AMMO); - if ((stat_items & (NEX_IT_SHELLS | NEX_IT_BULLETS | NEX_IT_ROCKETS | NEX_IT_CELLS)) || x != 0) + if ((stat_items & IT_AMMO) || x != 0) { - if (stat_items & NEX_IT_SHELLS) + if (stat_items & IT_SHELLS) drawpic(sbar + '296 0 0', "gfx/sb_shells", '24 24 0', '1 1 1', sbar_alpha_fg, 0); - else if (stat_items & NEX_IT_BULLETS) + else if (stat_items & IT_NAILS) drawpic(sbar + '296 0 0', "gfx/sb_bullets", '24 24 0', '1 1 1', sbar_alpha_fg, 0); - else if (stat_items & NEX_IT_ROCKETS) + else if (stat_items & IT_ROCKETS) drawpic(sbar + '296 0 0', "gfx/sb_rocket", '24 24 0', '1 1 1', sbar_alpha_fg, 0); - else if (stat_items & NEX_IT_CELLS) + else if (stat_items & IT_CELLS) drawpic(sbar + '296 0 0', "gfx/sb_cells", '24 24 0', '1 1 1', sbar_alpha_fg, 0); if(x > 10) Sbar_DrawXNum('224 0 0', x, 3, 24, '0.6 0.7 0.8', 1, 0); @@ -1492,6 +1488,7 @@ void Sbar_Draw (void) { stat_items = getstati(STAT_ITEMS); + stat_weapons = getstati(STAT_ITEMS); sbar_x = (vid_conwidth - 640.0)*0.5; sbar_y = vid_conheight - 47; @@ -1500,19 +1497,14 @@ void Sbar_Draw (void) fade = 3 - 2 * (time - weapontime); x = 1.0; - for(i = 0; i < 8; ++i) + for(i = WEP_FIRST; i <= WEP_LAST; ++i) { - if(stat_items & x) + if(stat_weapons & x) { - Sbar_DrawWeapon(i+1, fade, (i + 2 == activeweapon)); + Sbar_DrawWeapon(i-1, fade, (i == activeweapon)); } x *= 2; } - x *= 2*2*2*2; - if(stat_items & x) - { - Sbar_DrawWeapon(0, fade, (activeweapon == 1)); - } if (sb_lines > 24) drawpic(sbar, "gfx/sbar", '0 0 0', '1 1 1', sbar_alpha_fg, 0); @@ -1538,13 +1530,13 @@ void Sbar_Draw (void) if(activeweapon != 12) { // (519-3*24) = 447 - if (stat_items & NEX_IT_SHELLS) + if (stat_items & IT_SHELLS) drawpic(sbar + '519 0 0', "gfx/sb_shells", '0 0 0', '1 1 1', sbar_alpha_fg, 0); - else if (stat_items & NEX_IT_BULLETS) + else if (stat_items & IT_NAILS) drawpic(sbar + '519 0 0', "gfx/sb_bullets", '0 0 0', '1 1 1', sbar_alpha_fg, 0); - else if (stat_items & NEX_IT_ROCKETS) + else if (stat_items & IT_ROCKETS) drawpic(sbar + '519 0 0', "gfx/sb_rocket", '0 0 0', '1 1 1', sbar_alpha_fg, 0); - else if (stat_items & NEX_IT_CELLS) + else if (stat_items & IT_CELLS) drawpic(sbar + '519 0 0', "gfx/sb_cells", '0 0 0', '1 1 1', sbar_alpha_fg, 0); if(x > 10) Sbar_DrawXNum('447 12 0', x, 3, 24, '0.6 0.7 0.8', 1, 0); diff --git a/data/qcsrc/common/constants.qh b/data/qcsrc/common/constants.qh index 5e5aa7bef..1b1c895f3 100644 --- a/data/qcsrc/common/constants.qh +++ b/data/qcsrc/common/constants.qh @@ -14,7 +14,8 @@ // Revision 13: pointparticles // Revision 14: laser // Revision 15: zoom -#define CSQC_REVISION 15 +// Revision 16: multi-weapons +#define CSQC_REVISION 16 // probably put these in common/ // so server/ and client/ can be synced better @@ -204,6 +205,7 @@ const float TE_CSQC_ZOOMNOTIFY = 113; const float STAT_KH_KEYS = 32; const float STAT_CTF_STATE = 33; const float STAT_SYS_TICRATE = 34; +const float STAT_WEAPONS = 35; const float CTF_STATE_ATTACK = 1; const float CTF_STATE_DEFEND = 2; const float CTF_STATE_COMMANDER = 3; @@ -270,3 +272,42 @@ const float RACE_NET_CHECKPOINT_NEXT_SPEC_QUALIFYING = 5; // byte nextcheckpoint #define SP_SUICIDES 2 #define SP_SCORE 3 // game mode specific indices are not in common/, but in server/scores_rules.qc! + +// Weapon indexes +float WEP_FIRST = 1; +float WEP_LASER = 1; float WEPBIT_LASER = 1; // always: 2^(w-1) +float WEP_SHOTGUN = 2; float WEPBIT_SHOTGUN = 2; +float WEP_UZI = 3; float WEPBIT_UZI = 4; +float WEP_GRENADE_LAUNCHER = 4; float WEPBIT_GRENADE_LAUNCHER = 8; +float WEP_ELECTRO = 5; float WEPBIT_ELECTRO = 16; +float WEP_CRYLINK = 6; float WEPBIT_CRYLINK = 32; +float WEP_NEX = 7; float WEPBIT_NEX = 64; +float WEP_HAGAR = 8; float WEPBIT_HAGAR = 128; +float WEP_ROCKET_LAUNCHER = 9; float WEPBIT_ROCKET_LAUNCHER = 256; +float WEP_LAST = 9; float WEPBIT_ALL = 511; +float WEP_COUNT = 10; + +float IT_SHELLS = 256; +float IT_NAILS = 512; +float IT_ROCKETS = 1024; +float IT_CELLS = 2048; +float IT_AMMO = 3840; +float IT_STRENGTH = 8192; +float IT_INVINCIBLE = 16384; +float IT_HEALTH = 32768; +// union: + // for items: + float IT_KEY1 = 131072; + float IT_KEY2 = 262144; + // for players: + float IT_RED_FLAG_TAKEN = 32768; + float IT_RED_FLAG_LOST = 65536; + float IT_RED_FLAG_CARRING = 98304; + float IT_BLUE_FLAG_TAKEN = 131072; + float IT_BLUE_FLAG_LOST = 262144; + float IT_BLUE_FLAG_CARRING = 393216; +// end +float IT_5HP = 524288; +float IT_25HP = 1048576; +float IT_ARMOR_SHARD = 2097152; +float IT_ARMOR = 4194304; diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 7430e1da8..15963ee87 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -461,6 +461,7 @@ void PutObserverInServer (void) setsize (self, '0 0 0', '0 0 0'); self.oldorigin = self.origin; self.items = 0; + self.weapons = 0; self.model = ""; self.modelindex = 0; self.weapon = 0; @@ -630,7 +631,8 @@ void PutClientInServer (void) self.ammo_cells = start_ammo_cells; self.health = start_health; self.armorvalue = start_armorvalue; - self.items = start_items; + self.items = 0; + self.weapons = start_weapons; self.switchweapon = start_switchweapon; self.cnt = start_switchweapon; self.weapon = 0; @@ -1123,15 +1125,6 @@ void ClientConnect (void) // get version info from player stuffcmd(self, "cmd clientversion $gameversion\n"); - // send all weapon info strings - stuffcmd(self, "register_bestweapon clear\n"); // clear the Quake stuff - wep = WEP_FIRST; - while (wep <= WEP_LAST) - { - weapon_action(wep, WR_REGISTER); - wep = wep + 1; - } - // get other cvars from player GetCvars(0); @@ -1683,6 +1676,7 @@ void SpectateCopy(entity spectatee) { self.health = spectatee.health; self.impulse = 0; self.items = spectatee.items; + self.weapons = spectatee.weapons; self.punchangle = spectatee.punchangle; self.view_ofs = spectatee.view_ofs; self.v_angle = spectatee.v_angle; diff --git a/data/qcsrc/server/cl_impulse.qc b/data/qcsrc/server/cl_impulse.qc index 12f8502da..b008be8b6 100644 --- a/data/qcsrc/server/cl_impulse.qc +++ b/data/qcsrc/server/cl_impulse.qc @@ -264,7 +264,7 @@ void ImpulseCommands (void) switch(imp) { case 99: - self.items |= (IT_LASER | IT_UZI | IT_SHOTGUN | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER); + self.weapons |= WEPBIT_ALL; self.ammo_shells = g_pickup_shells_max; self.ammo_nails = g_pickup_nails_max; self.ammo_rockets = g_pickup_rockets_max; @@ -317,7 +317,7 @@ void ImpulseCommands (void) self.ammo_shells = 999; self.health = start_health; self.armorvalue = start_armorvalue; - self.items |= itemsInMap & (IT_LASER | IT_SHOTGUN | IT_UZI | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER); + self.weapons |= weaponsInMap; self.pauserotarmor_finished = time + cvar("g_balance_pause_armor_rot_spawn"); self.pauserothealth_finished = time + cvar("g_balance_pause_health_rot_spawn"); self.pauseregen_finished = time + cvar("g_balance_pause_health_regen_spawn"); diff --git a/data/qcsrc/server/cl_player.qc b/data/qcsrc/server/cl_player.qc index aeabcaec1..cbb5fe319 100644 --- a/data/qcsrc/server/cl_player.qc +++ b/data/qcsrc/server/cl_player.qc @@ -413,7 +413,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht else player_setanim(self.anim_pain2, FALSE, TRUE, TRUE); - if(deathtype != IT_LASER || attacker != self || self.health < 2 * cvar("g_balance_laser_primary_damage") * cvar("g_balance_selfdamagepercent") + 1) + if(deathtype != WEP_LASER || attacker != self || self.health < 2 * cvar("g_balance_laser_primary_damage") * cvar("g_balance_selfdamagepercent") + 1) // exclude pain sounds for laserjumps as long as you aren't REALLY low on health and would die of the next two { if(self.health > 75) // TODO make a "gentle" version? diff --git a/data/qcsrc/server/cl_weapons.qc b/data/qcsrc/server/cl_weapons.qc index 50ab57a41..41f0921f6 100644 --- a/data/qcsrc/server/cl_weapons.qc +++ b/data/qcsrc/server/cl_weapons.qc @@ -165,19 +165,19 @@ string W_Name(float weaponid) return "@!#%'n Tuba"; } -float W_ItemCode(float wpn) +float W_WeaponBit(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; + case WEP_LASER: return WEPBIT_LASER; + case WEP_SHOTGUN: return WEPBIT_SHOTGUN; + case WEP_UZI: return WEPBIT_UZI; + case WEP_GRENADE_LAUNCHER: return WEPBIT_GRENADE_LAUNCHER; + case WEP_ELECTRO: return WEPBIT_ELECTRO; + case WEP_CRYLINK: return WEPBIT_CRYLINK; + case WEP_NEX: return WEPBIT_NEX; + case WEP_HAGAR: return WEPBIT_HAGAR; + case WEP_ROCKET_LAUNCHER: return WEPBIT_ROCKET_LAUNCHER; default: return 0; } } @@ -210,7 +210,7 @@ void thrown_wep_think() // toss current weapon void W_ThrowWeapon(vector velo, vector delta, float doreduce) { - local float w, ammo; + local float w, ammo, wb; local entity wep, e; local .float ammofield; @@ -227,7 +227,7 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce) return; if (g_nixnex) return; - if (!cvar("g_pickup_items")) + if (!cvar("g_pickup_weapons")) return; e = self; @@ -241,13 +241,13 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce) SUB_SetFade(wep, time + 20, 1); ammofield = Item_CounterField(W_AmmoItemCode(w)); - w = W_ItemCode(w); - if(!(e.items & w)) + wb = W_WeaponBit(w); + if(!(e.weapons & wb)) { remove(wep); goto leave; } - Item_SpawnByItemCode(w); + Item_SpawnByWeaponCode(w); if(startitem_failed) goto leave; if(doreduce) @@ -257,7 +257,7 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce) e.ammofield -= ammo; } - if(e.items & w) + if(e.weapons & wb) if(e.health >= 1) sprint(e, strcat("You dropped the ^2", wep.netname, " with ", ftos(wep.ammofield), " ammo", "\n")); @@ -267,7 +267,7 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce) wep.think = thrown_wep_think; wep.classname = "droppedweapon"; wep.flags = wep.flags | FL_TOSSED; - e.items = e.items - (e.items & w); + e.weapons = e.weapons - (e.weapons & wb); e.switchweapon = w_getbestweapon(e); wep.colormap = e.colormap; if (e.switchweapon != e.weapon) @@ -451,10 +451,10 @@ void Nixnex_GiveCurrentWeapon() self.nixnex_nextincr = time + cvar("g_balance_nixnex_incrtime"); } - 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)); + self.weapons = 0; if(g_nixnex_with_laser) - self.items = self.items | IT_LASER; - self.items = self.items | W_ItemCode(nixnex_weapon); + self.weapons = self.weapons | WEPBIT_LASER; + self.weapons = self.weapons | W_WeaponBit(nixnex_weapon); if(self.switchweapon != nixnex_weapon) if(!client_hasweapon(self, self.switchweapon, TRUE, FALSE)) diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index e1ad9c97c..1ab5cd14c 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -324,7 +324,7 @@ void CL_SpawnWeaponentity() float client_hasweapon(entity cl, float wpn, float andammo, float complain) { - local float itemcode, f; + local float weaponbit, f; local entity oldself; if (wpn < WEP_FIRST || wpn > WEP_LAST) @@ -333,8 +333,8 @@ float client_hasweapon(entity cl, float wpn, float andammo, float complain) sprint(self, "Invalid weapon\n"); return FALSE; } - itemcode = W_ItemCode(wpn); - if (cl.items & itemcode) + weaponbit = W_WeaponBit(wpn); + if (cl.weapons & weaponbit) { if (andammo) { @@ -356,7 +356,7 @@ float client_hasweapon(entity cl, float wpn, float andammo, float complain) { // DRESK - 3/16/07 // Report Proper Weapon Status / Modified Weapon Ownership Message - if(itemsInMap & itemcode) + if(weaponsInMap & weaponbit) sprint(cl, strcat("You do not have the ^2", W_Name(wpn), "\n") ); else sprint(cl, strcat("The ^2", W_Name(wpn), "^7 is ^1NOT AVAILABLE^7 in this map\n") ); @@ -576,28 +576,3 @@ void W_SetupProjectileVelocity(entity missile) missile.velocity = W_CalculateProjectileVelocity(missile.owner.velocity, missile.velocity); } - -void weapon_register(float wepcode, float minammo) -{ - string s; - float itemcode; - s = strcat("register_bestweapon ", ftos(wepcode), " "); // char for bestweapon - s = strcat(s, ftos(wepcode), " "); // impulse - s = strcat(s, ftos(W_ItemCode(wepcode)), " "); // item code - s = strcat(s, ftos(wepcode), " "); // self.weapon code - - // ammo stat - itemcode = W_AmmoItemCode(wepcode); - if(itemcode == IT_SHELLS) - s = strcat(s, "6 "); - else if(itemcode == IT_NAILS) - s = strcat(s, "7 "); - else if(itemcode == IT_ROCKETS) - s = strcat(s, "8 "); - else // if(itemcode == IT_CELLS) - s = strcat(s, "9 "); - - s = strcat(s, ftos(minammo), "\n"); - //dprint(s); - stuffcmd(self, s); -} diff --git a/data/qcsrc/server/clientcommands.qc b/data/qcsrc/server/clientcommands.qc index 8e31d390f..a1d3e3634 100644 --- a/data/qcsrc/server/clientcommands.qc +++ b/data/qcsrc/server/clientcommands.qc @@ -401,7 +401,7 @@ void ReadyRestart() if(g_tourney) { tourneyInMatchStage = 1; //once the game is restarted the game is in match stage //reset weapons and ammo, health and armor to default: - start_items = IT_LASER | IT_SHOTGUN; + start_weapons = WEPBIT_LASER | WEPBIT_SHOTGUN; start_switchweapon = WEP_SHOTGUN; start_ammo_shells = cvar("g_start_ammo_shells"); start_ammo_nails = cvar("g_start_ammo_nails"); diff --git a/data/qcsrc/server/constants.qh b/data/qcsrc/server/constants.qh index 4e28e0aae..568f68da2 100644 --- a/data/qcsrc/server/constants.qh +++ b/data/qcsrc/server/constants.qh @@ -154,43 +154,6 @@ float DEATH_ROT = 10013; float DEATH_MIRRORDAMAGE = 10014; float DEATH_TURRET = 10100; - - - -float IT_LASER = 4096; -float IT_SHOTGUN = 1; -float IT_UZI = 2; -float IT_GRENADE_LAUNCHER = 4; -float IT_ELECTRO = 8; -float IT_CRYLINK = 16; -float IT_NEX = 32; -float IT_HAGAR = 64; -float IT_ROCKET_LAUNCHER = 128; - -float IT_SHELLS = 256; -float IT_NAILS = 512; -float IT_ROCKETS = 1024; -float IT_CELLS = 2048; - -float IT_STRENGTH = 8192; -float IT_INVINCIBLE = 16384; -float IT_HEALTH = 32768; - -float IT_KEY1 = 131072; -float IT_KEY2 = 262144; - -float IT_RED_FLAG_TAKEN = 32768; -float IT_RED_FLAG_LOST = 65536; -float IT_RED_FLAG_CARRING = 98304; -float IT_BLUE_FLAG_TAKEN = 131072; -float IT_BLUE_FLAG_LOST = 262144; -float IT_BLUE_FLAG_CARRING = 393216; - -float IT_5HP = 524288; -float IT_25HP = 1048576; -float IT_ARMOR_SHARD = 2097152; -float IT_ARMOR = 4194304; - vector PL_VIEW_OFS = '0 0 35'; vector PL_MIN = '-16 -16 -24'; vector PL_MAX = '16 16 45'; diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index 36ce052f6..c15e2cd9c 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -202,22 +202,6 @@ float WR_CHECKAMMO1 = 3; // checks ammo for weapon float WR_CHECKAMMO2 = 4; // checks ammo for weapon float WR_AIM = 5; // runs bot aiming code for this weapon float WR_PRECACHE = 6; // precaches models/sounds used by this weapon -float WR_REGISTER = 7; // send data about the weapon to the client self (for ClientConnect) - -// Weapon indexes -float WEP_LASER = 1; // float IT_LASER = 4096; -float WEP_SHOTGUN = 2; // float IT_SHOTGUN = 1; -float WEP_UZI = 3; // float IT_UZI = 2; -float WEP_GRENADE_LAUNCHER = 4; // float IT_GRENADE_LAUNCHER = 4; -float WEP_ELECTRO = 5; // float IT_ELECTRO = 8; -float WEP_CRYLINK = 6; // float IT_CRYLINK = 16; -float WEP_NEX = 7; // float IT_NEX = 32; -float WEP_HAGAR = 8; // float IT_HAGAR = 64; -float WEP_ROCKET_LAUNCHER = 9; // float IT_ROCKET_LAUNCHER = 128; -// For weapon cycling commands -float WEP_FIRST = 1; -float WEP_LAST = 9; -float WEP_COUNT = 10; void(entity client, string s) centerprint_builtin = #73; .vector dest1, dest2; @@ -372,11 +356,10 @@ void DropAllRunes(entity pl); typedef .float floatfield; floatfield Item_CounterField(float it); -float Item_WeaponCode(float it); -void Item_SpawnByItemCode(float it); +void Item_SpawnByWeaponCode(float it); float W_AmmoItemCode(float wpn); -float W_ItemCode(float wpn); +float W_WeaponBit(float wpn); string W_Name(float weaponid); void UpdateSelectedPlayer(); @@ -391,7 +374,7 @@ void ClearSelectedPlayer(); void FixIntermissionClient(entity e); void FixClientCvars(entity e); -float itemsInMap; +float weaponsInMap; void centerprint_atprio(entity e, float prio, string s); void centerprint_expire(entity e, float prio); @@ -494,3 +477,4 @@ float independent_players; string clientstuff; .float stat_sys_ticrate; .float phase; +.float weapons; diff --git a/data/qcsrc/server/g_damage.qc b/data/qcsrc/server/g_damage.qc index 7c21927b9..2342fa58b 100644 --- a/data/qcsrc/server/g_damage.qc +++ b/data/qcsrc/server/g_damage.qc @@ -105,7 +105,7 @@ string AppendItemcodes(string s, entity player) // w = player.switchweapon; if(w == 0) w = player.cnt; // previous weapon! - s = strcat(s, ftos(W_ItemCode(w))); + s = strcat(s, ftos(w)); if(time < player.strength_finished) s = strcat(s, "S"); if(time < player.invincible_finished) @@ -203,11 +203,11 @@ void Obituary (entity attacker, entity targ, float deathtype) bprint ("^1",s,"^1 ended it all with a ",ftos(targ.killcount)," scoring spree\n"); } else { - if (deathtype == IT_GRENADE_LAUNCHER) + if (deathtype == WEP_GRENADE_LAUNCHER) bprint ("^1",s, "^1 detonated\n"); - else if (deathtype == IT_ELECTRO) + else if (deathtype == WEP_ELECTRO) bprint ("^1",s, "^1 played with plasma\n"); - else if (deathtype == IT_ROCKET_LAUNCHER) + else if (deathtype == WEP_ROCKET_LAUNCHER) bprint ("^1",s, "^1 exploded\n"); else if (deathtype == DEATH_KILL) bprint ("^1",s, "^1 couldn't take it anymore\n"); @@ -283,23 +283,23 @@ void Obituary (entity attacker, entity targ, float deathtype) if(sv_gentle) { bprint ("^1",s, "^1 needs a restart thanks to ", a, "\n"); } else { - if (deathtype == IT_LASER) + if (deathtype == WEP_LASER) bprint ("^1",s, "^1 was blasted by ", a, "\n"); - else if (deathtype == IT_UZI) + else if (deathtype == WEP_UZI) bprint ("^1",s, "^1 was riddled full of holes by ", a, "\n"); - else if (deathtype == IT_SHOTGUN) + else if (deathtype == WEP_SHOTGUN) bprint ("^1",s, "^1 was gunned by ", a, "\n"); - else if (deathtype == IT_GRENADE_LAUNCHER) + else if (deathtype == WEP_GRENADE_LAUNCHER) bprint ("^1", s, "^1 was blasted by ", a, "\n"); - else if (deathtype == IT_ELECTRO) + else if (deathtype == WEP_ELECTRO) bprint ("^1",s, "^1 was blasted by ", a, "\n"); - else if (deathtype == IT_CRYLINK) + else if (deathtype == WEP_CRYLINK) bprint ("^1",s, "^1 was blasted by ", a, "\n"); - else if (deathtype == IT_NEX) + else if (deathtype == WEP_NEX) bprint ("^1",s, "^1 has been vaporized by ", a, "\n"); - else if (deathtype == IT_HAGAR) + else if (deathtype == WEP_HAGAR) bprint ("^1",s, "^1 was pummeled by ", a, "\n"); - else if (deathtype == IT_ROCKET_LAUNCHER) + else if (deathtype == WEP_ROCKET_LAUNCHER) bprint ("^1",s, "^1 was blasted by ", a, "\n"); else if (deathtype == DEATH_TELEFRAG) bprint ("^1",s, "^1 was telefragged by ", a, "\n"); @@ -572,20 +572,20 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float (deathtype == DEATH_SLIME) || (deathtype == DEATH_LAVA)) return; - if (targ.armorvalue && (deathtype == IT_NEX) && damage) + if (targ.armorvalue && (deathtype == WEP_NEX) && damage) { targ.armorvalue -= 1; centerprint(targ, strcat("^3Remaining extra lives: ",ftos(targ.armorvalue),"\n")); damage = 0; targ.hitsound += 1; } - else if (deathtype == IT_NEX && targ.items & IT_STRENGTH) + else if (deathtype == WEP_NEX && targ.items & IT_STRENGTH) { if(clienttype(attacker) == CLIENTTYPE_REAL) if(IsDifferentTeam(targ, attacker)) yoda = 1; } - if (deathtype == IT_LASER) + if (deathtype == WEP_LASER) { damage = 0; if (targ != attacker) diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index fec1be30f..83a3bacc7 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -353,6 +353,7 @@ void spawnfunc_worldspawn (void) } addstat(STAT_SYS_TICRATE, AS_FLOAT, stat_sys_ticrate); + addstat(STAT_WEAPONS, AS_INT, weapons); next_pingtime = time + 5; world_initialized = 1; diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index 3d5dc937f..ea29c45c4 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -697,7 +697,7 @@ float g_pickup_healthlarge_max; float g_pickup_healthmega; float g_pickup_healthmega_max; -float start_items; +float start_weapons; float start_switchweapon; float start_ammo_shells; float start_ammo_nails; @@ -758,7 +758,7 @@ void readlevelcvars(void) g_pickup_healthmega_max = cvar("g_pickup_healthmega_max"); // initialize starting values for players - start_items = 0; + start_weapons = 0; start_switchweapon = 0; start_ammo_shells = 0; start_ammo_nails = 0; @@ -769,28 +769,28 @@ void readlevelcvars(void) if(g_instagib) { - start_items = IT_NEX; + start_weapons = WEPBIT_NEX; start_switchweapon = WEP_NEX; weapon_action(start_switchweapon, WR_PRECACHE); start_ammo_cells = 999; } else if(g_rocketarena) { - start_items = IT_ROCKET_LAUNCHER; + start_weapons = WEPBIT_ROCKET_LAUNCHER; start_switchweapon = WEP_ROCKET_LAUNCHER; weapon_action(start_switchweapon, WR_PRECACHE); start_ammo_rockets = 999; } else if(g_nixnex) { - start_items = 0; + start_weapons = 0; // will be done later } else if(g_minstagib) { start_health = 100; start_armorvalue = 0; - start_items = IT_NEX; + start_weapons = WEPBIT_NEX; start_switchweapon = WEP_NEX; weapon_action(start_switchweapon, WR_PRECACHE); start_ammo_cells = cvar("g_minstagib_ammo_start"); @@ -829,55 +829,55 @@ void readlevelcvars(void) if (cvar("g_start_weapon_laser") || g_lms) { - start_items = start_items | IT_LASER; + start_weapons = start_weapons | WEPBIT_LASER; start_switchweapon = WEP_LASER; weapon_action(start_switchweapon, WR_PRECACHE); } if (cvar("g_start_weapon_shotgun") || g_lms) { - start_items = start_items | IT_SHOTGUN; + start_weapons = start_weapons | WEPBIT_SHOTGUN; start_switchweapon = WEP_SHOTGUN; weapon_action(start_switchweapon, WR_PRECACHE); } if (cvar("g_start_weapon_uzi") || g_lms || g_tourney) { - start_items = start_items | IT_UZI; + start_weapons = start_weapons | WEPBIT_UZI; start_switchweapon = WEP_UZI; weapon_action(start_switchweapon, WR_PRECACHE); } if (cvar("g_start_weapon_grenadelauncher") || g_lms || g_tourney) { - start_items = start_items | IT_GRENADE_LAUNCHER; + start_weapons = start_weapons | WEPBIT_GRENADE_LAUNCHER; start_switchweapon = WEP_GRENADE_LAUNCHER; weapon_action(start_switchweapon, WR_PRECACHE); } if (cvar("g_start_weapon_electro") || g_lms || g_tourney) { - start_items = start_items | IT_ELECTRO; + start_weapons = start_weapons | WEPBIT_ELECTRO; start_switchweapon = WEP_ELECTRO; weapon_action(start_switchweapon, WR_PRECACHE); } if (cvar("g_start_weapon_crylink") || g_lms || g_tourney) { - start_items = start_items | IT_CRYLINK; + start_weapons = start_weapons | WEPBIT_CRYLINK; start_switchweapon = WEP_CRYLINK; weapon_action(start_switchweapon, WR_PRECACHE); } if (cvar("g_start_weapon_nex") || g_lms || g_tourney) { - start_items = start_items | IT_NEX; + start_weapons = start_weapons | WEPBIT_NEX; start_switchweapon = WEP_NEX; weapon_action(start_switchweapon, WR_PRECACHE); } if (cvar("g_start_weapon_hagar") || g_lms || g_tourney) { - start_items = start_items | IT_HAGAR; + start_weapons = start_weapons | WEPBIT_HAGAR; start_switchweapon = WEP_HAGAR; weapon_action(start_switchweapon, WR_PRECACHE); } if (cvar("g_start_weapon_rocketlauncher") || g_lms || g_tourney) { - start_items = start_items | IT_ROCKET_LAUNCHER; + start_weapons = start_weapons | WEPBIT_ROCKET_LAUNCHER; start_switchweapon = WEP_ROCKET_LAUNCHER; weapon_action(start_switchweapon, WR_PRECACHE); } diff --git a/data/qcsrc/server/t_items.qc b/data/qcsrc/server/t_items.qc index eb5d82897..755ecd64a 100644 --- a/data/qcsrc/server/t_items.qc +++ b/data/qcsrc/server/t_items.qc @@ -54,8 +54,8 @@ void Item_Touch (void) // else if(self.items == IT_CELLS) // play2(other, "announce/robotic/ammo.ogg"); - if (self.items & IT_NEX) - W_GiveWeapon (other, IT_NEX, "Nex"); + if (self.weapons & WEPBIT_NEX) + W_GiveWeapon (other, WEP_NEX, "Nex"); if (self.ammo_cells) other.ammo_cells = min (other.ammo_cells + cvar("g_minstagib_ammo_drop"), 999); other.health = 100; @@ -93,9 +93,9 @@ void Item_Touch (void) { if (cvar("deathmatch") == 2 || cvar("g_weapon_stay")) { - if (self.flags & FL_WEAPON && other.items & self.items && self.classname != "droppedweapon") + if (self.flags & FL_WEAPON && other.weapons & self.weapons && self.classname != "droppedweapon") return; - if (other.items & self.items && self.flags & FL_TOSSED) // don't let players stack ammo by tossing weapons + if (other.weapons & self.weapons && self.flags & FL_TOSSED) // don't let players stack ammo by tossing weapons return; } @@ -132,17 +132,18 @@ void Item_Touch (void) } if (self.flags & FL_WEAPON) - if ((it = self.items - (self.items & other.items))) + if ((it = self.weapons - (self.weapons & other.weapons))) { pickedup = TRUE; - if (it & IT_UZI) W_GiveWeapon (other, IT_UZI, self.netname); - if (it & IT_SHOTGUN) W_GiveWeapon (other, IT_SHOTGUN, self.netname); - if (it & IT_GRENADE_LAUNCHER) W_GiveWeapon (other, IT_GRENADE_LAUNCHER, self.netname); - if (it & IT_ELECTRO) W_GiveWeapon (other, IT_ELECTRO, self.netname); - if (it & IT_NEX) W_GiveWeapon (other, IT_NEX, self.netname); - if (it & IT_HAGAR) W_GiveWeapon (other, IT_HAGAR, self.netname); - if (it & IT_ROCKET_LAUNCHER) W_GiveWeapon (other, IT_ROCKET_LAUNCHER, self.netname); - if (it & IT_CRYLINK) W_GiveWeapon (other, IT_CRYLINK, self.netname); + if (it & WEPBIT_UZI) W_GiveWeapon (other, WEP_UZI, self.netname); + if (it & WEPBIT_SHOTGUN) W_GiveWeapon (other, WEP_SHOTGUN, self.netname); + if (it & WEPBIT_GRENADE_LAUNCHER) W_GiveWeapon (other, WEP_GRENADE_LAUNCHER, self.netname); + if (it & WEPBIT_ELECTRO) W_GiveWeapon (other, WEP_ELECTRO, self.netname); + if (it & WEPBIT_NEX) W_GiveWeapon (other, WEP_NEX, self.netname); + if (it & WEPBIT_HAGAR) W_GiveWeapon (other, WEP_HAGAR, self.netname); + if (it & WEPBIT_ROCKET_LAUNCHER) W_GiveWeapon (other, WEP_ROCKET_LAUNCHER, self.netname); + if (it & WEPBIT_CRYLINK) W_GiveWeapon (other, WEP_CRYLINK, self.netname); + // %weaponaddpoint } if (self.strength_finished) @@ -226,7 +227,7 @@ float generic_pickupevalfunc(entity player, entity item) {return item.bot_pickup float weapon_pickupevalfunc(entity player, entity item) { // if we already have the weapon, rate it 1/5th normal value - if ((player.items & item.items) == item.items) + if ((player.weapons & item.weapons) == item.weapons) return item.bot_pickupbasevalue * 0.2; return item.bot_pickupbasevalue; }; @@ -257,18 +258,12 @@ float commodity_pickupevalfunc(entity player, entity item) if (player.health < item.max_health) c = c + max(0, 1 - player.health / item.max_health); - if (cvar("deathmatch") == 2) // weapon stay is on, so weapons the player already has are of no interest - if (item.flags & FL_WEAPON) - if (self.items & item.items) - if (item.classname != "droppedweapon") - c = 0; - return item.bot_pickupbasevalue * c; }; .float is_item; -void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, string itemname, float itemid, float itemflags, float(entity player, entity item) pickupevalfunc, float pickupbasevalue) +void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, string itemname, float itemid, float weaponid, float itemflags, float(entity player, entity item) pickupevalfunc, float pickupbasevalue) { startitem_failed = FALSE; @@ -374,7 +369,7 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, self.is_item = TRUE; } - itemsInMap |= itemid; + weaponsInMap |= weaponid; if(g_lms || g_instagib || g_rocketarena) { @@ -403,9 +398,7 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, precache_sound (pickupsound); precache_sound ("misc/itemrespawn.wav"); - if(itemid & (IT_STRENGTH | IT_INVINCIBLE | IT_HEALTH | IT_ARMOR | IT_KEY1 | IT_KEY2 | - IT_ROCKET_LAUNCHER | IT_HAGAR | IT_NEX | IT_CRYLINK | IT_ELECTRO | - IT_GRENADE_LAUNCHER | IT_UZI | IT_SHOTGUN | IT_LASER)) + if((itemid & (IT_STRENGTH | IT_INVINCIBLE | IT_HEALTH | IT_ARMOR | IT_KEY1 | IT_KEY2)) || (weaponid & WEPBIT_ALL)) self.target = "###item###"; // for finding the nearest item using find() } @@ -419,6 +412,7 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, self.respawntime = defaultrespawntime; self.netname = itemname; self.items = itemid; + self.weapons = weaponid; self.flags = FL_ITEM | itemflags; self.touch = Item_Touch; setmodel (self, self.mdl); // precision set below @@ -450,7 +444,7 @@ void minstagib_items (float itemid) self.ammo_cells = 25; StartItem ("models/weapons/g_nex.md3", "weapons/weaponpickup.wav", 15, - "Nex Gun", IT_NEX, FL_WEAPON, generic_pickupevalfunc, 1000); + "Nex Gun", 0, WEPBIT_NEX, FL_WEAPON, generic_pickupevalfunc, 1000); return; } @@ -463,7 +457,7 @@ void minstagib_items (float itemid) self.ammo_cells = 1; StartItem ("models/items/a_cells.md3", "misc/itempickup.wav", 45, - "Nex Ammo", IT_CELLS, 0, generic_pickupevalfunc, 100); + "Nex Ammo", IT_CELLS, 0, 0, generic_pickupevalfunc, 100); return; } @@ -483,7 +477,7 @@ void minstagib_items (float itemid) self.strength_finished = 30; StartItem ("models/items/g_strength.md3", "misc/powerup.wav", 120, - "Invisibility", IT_STRENGTH, FL_POWERUP, generic_pickupevalfunc, 1000); + "Invisibility", IT_STRENGTH, 0, FL_POWERUP, generic_pickupevalfunc, 1000); } // replace with extra lives if (itemid == IT_NAILS) @@ -491,7 +485,7 @@ void minstagib_items (float itemid) self.max_health = 1; StartItem ("models/items/g_h100.md3", "misc/megahealth.wav", 120, - "Extralife", IT_NAILS, FL_POWERUP, generic_pickupevalfunc, 1000); + "Extralife", IT_NAILS, 0, FL_POWERUP, generic_pickupevalfunc, 1000); } // replace with speed @@ -501,7 +495,7 @@ void minstagib_items (float itemid) self.invincible_finished = 30; StartItem ("models/items/g_invincible.md3", "misc/powerup_shield.wav", 120, - "Speed", IT_INVINCIBLE, FL_POWERUP, generic_pickupevalfunc, 1000); + "Speed", IT_INVINCIBLE, 0, FL_POWERUP, generic_pickupevalfunc, 1000); } } @@ -528,7 +522,7 @@ void spawnfunc_weapon_uzi (void) { if(!self.ammo_nails) self.ammo_nails = cvar("g_pickup_nails"); - StartItem ("models/weapons/g_uzi.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_UZI), IT_UZI, FL_WEAPON, weapon_pickupevalfunc, 5000); + StartItem ("models/weapons/g_uzi.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_UZI), 0, WEPBIT_UZI, FL_WEAPON, weapon_pickupevalfunc, 5000); if (self.modelindex) // don't precache if self was removed weapon_action(WEP_UZI, WR_PRECACHE); } @@ -546,7 +540,7 @@ void spawnfunc_weapon_shotgun (void) { if(!self.ammo_shells) self.ammo_shells = cvar("g_pickup_shells"); - StartItem ("models/weapons/g_shotgun.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_SHOTGUN), IT_SHOTGUN, FL_WEAPON, weapon_pickupevalfunc, 2500); + StartItem ("models/weapons/g_shotgun.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_SHOTGUN), 0, WEPBIT_SHOTGUN, FL_WEAPON, weapon_pickupevalfunc, 2500); if (self.modelindex) // don't precache if self was removed weapon_action(WEP_SHOTGUN, WR_PRECACHE); } @@ -555,7 +549,7 @@ void spawnfunc_weapon_grenadelauncher (void) { if(!self.ammo_rockets) self.ammo_rockets = cvar("g_pickup_rockets"); - StartItem ("models/weapons/g_gl.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_GRENADE_LAUNCHER), IT_GRENADE_LAUNCHER, FL_WEAPON, weapon_pickupevalfunc, 5000); + StartItem ("models/weapons/g_gl.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_GRENADE_LAUNCHER), 0, WEPBIT_GRENADE_LAUNCHER, FL_WEAPON, weapon_pickupevalfunc, 5000); if (self.modelindex) // don't precache if self was removed weapon_action(WEP_GRENADE_LAUNCHER, WR_PRECACHE); } @@ -564,7 +558,7 @@ void spawnfunc_weapon_electro (void) { if(!self.ammo_cells) self.ammo_cells = cvar("g_pickup_cells"); - StartItem ("models/weapons/g_electro.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_ELECTRO), IT_ELECTRO, FL_WEAPON, weapon_pickupevalfunc, 5000); + StartItem ("models/weapons/g_electro.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_ELECTRO), 0, WEPBIT_ELECTRO, FL_WEAPON, weapon_pickupevalfunc, 5000); if (self.modelindex) // don't precache if self was removed weapon_action(WEP_ELECTRO, WR_PRECACHE); } @@ -573,7 +567,7 @@ void spawnfunc_weapon_crylink (void) { if(!self.ammo_cells) self.ammo_cells = cvar("g_pickup_cells"); - StartItem ("models/weapons/g_crylink.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_CRYLINK), IT_CRYLINK, FL_WEAPON, weapon_pickupevalfunc, 2500); + StartItem ("models/weapons/g_crylink.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_CRYLINK), 0, WEPBIT_CRYLINK, FL_WEAPON, weapon_pickupevalfunc, 2500); if (self.modelindex) // don't precache if self was removed weapon_action(WEP_CRYLINK, WR_PRECACHE); } @@ -595,7 +589,7 @@ void spawnfunc_weapon_nex (void) nextime = 15 * nextime; else nextime = 15; - StartItem ("models/weapons/g_nex.md3", "weapons/weaponpickup.wav", nextime, W_Name(WEP_NEX), IT_NEX, FL_WEAPON, weapon_pickupevalfunc, 10000); + StartItem ("models/weapons/g_nex.md3", "weapons/weaponpickup.wav", nextime, W_Name(WEP_NEX), 0, WEPBIT_NEX, FL_WEAPON, weapon_pickupevalfunc, 10000); if (self.modelindex) // don't precache if self was removed weapon_action(WEP_NEX, WR_PRECACHE); } @@ -604,7 +598,7 @@ void spawnfunc_weapon_hagar (void) { if(!self.ammo_rockets) self.ammo_rockets = cvar("g_pickup_rockets"); - StartItem ("models/weapons/g_hagar.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_HAGAR), IT_HAGAR, FL_WEAPON, weapon_pickupevalfunc, 5000); + StartItem ("models/weapons/g_hagar.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_HAGAR), 0, WEPBIT_HAGAR, FL_WEAPON, weapon_pickupevalfunc, 5000); if (self.modelindex) // don't precache if self was removed weapon_action(WEP_HAGAR, WR_PRECACHE); } @@ -620,7 +614,7 @@ void spawnfunc_weapon_rocketlauncher (void) } if(!self.ammo_rockets) self.ammo_rockets = g_pickup_rockets; - StartItem ("models/weapons/g_rl.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_ROCKET_LAUNCHER), IT_ROCKET_LAUNCHER, FL_WEAPON, weapon_pickupevalfunc, 10000); + StartItem ("models/weapons/g_rl.md3", "weapons/weaponpickup.wav", 15, W_Name(WEP_ROCKET_LAUNCHER), 0, WEPBIT_ROCKET_LAUNCHER, FL_WEAPON, weapon_pickupevalfunc, 10000); if (self.modelindex) // don't precache if self was removed weapon_action(WEP_ROCKET_LAUNCHER, WR_PRECACHE); } @@ -628,7 +622,7 @@ void spawnfunc_weapon_rocketlauncher (void) void spawnfunc_item_rockets (void) { if(!self.ammo_rockets) self.ammo_rockets = g_pickup_rockets; - StartItem ("models/items/a_rockets.md3", "misc/itempickup.wav", 15, "rockets", IT_ROCKETS, 0, commodity_pickupevalfunc, 3000); + StartItem ("models/items/a_rockets.md3", "misc/itempickup.wav", 15, "rockets", IT_ROCKETS, 0, 0, commodity_pickupevalfunc, 3000); } void spawnfunc_item_shells (void); @@ -645,13 +639,13 @@ void spawnfunc_item_bullets (void) { if(!self.ammo_nails) self.ammo_nails = g_pickup_nails; - StartItem ("models/items/a_bullets.mdl", "misc/itempickup.wav", 15, "bullets", IT_NAILS, 0, commodity_pickupevalfunc, 2000); + StartItem ("models/items/a_bullets.mdl", "misc/itempickup.wav", 15, "bullets", IT_NAILS, 0, 0, commodity_pickupevalfunc, 2000); } void spawnfunc_item_cells (void) { if(!self.ammo_cells) self.ammo_cells = g_pickup_cells; - StartItem ("models/items/a_cells.md3", "misc/itempickup.wav", 15, "cells", IT_CELLS, 0, commodity_pickupevalfunc, 2000); + StartItem ("models/items/a_cells.md3", "misc/itempickup.wav", 15, "cells", IT_CELLS, 0, 0, commodity_pickupevalfunc, 2000); } void spawnfunc_item_shells (void) { @@ -667,7 +661,7 @@ void spawnfunc_item_shells (void) { if(!self.ammo_shells) self.ammo_shells = g_pickup_shells; - StartItem ("models/items/a_shells.md3", "misc/itempickup.wav", 15, "shells", IT_SHELLS, 0, commodity_pickupevalfunc, 500); + StartItem ("models/items/a_shells.md3", "misc/itempickup.wav", 15, "shells", IT_SHELLS, 0, 0, commodity_pickupevalfunc, 500); } void spawnfunc_item_armor_small (void) { @@ -675,7 +669,7 @@ void spawnfunc_item_armor_small (void) { self.armorvalue = g_pickup_armorsmall; if(!self.max_armorvalue) self.max_armorvalue = g_pickup_armorsmall_max; - StartItem ("models/items/g_a1.md3", "misc/armor1.wav", 15, "5 Armor", IT_ARMOR_SHARD, 0, commodity_pickupevalfunc, 1000); + StartItem ("models/items/g_a1.md3", "misc/armor1.wav", 15, "5 Armor", IT_ARMOR_SHARD, 0, 0, commodity_pickupevalfunc, 1000); } void spawnfunc_item_armor_medium (void) { @@ -683,7 +677,7 @@ void spawnfunc_item_armor_medium (void) { self.armorvalue = g_pickup_armormedium; if(!self.max_armorvalue) self.max_armorvalue = g_pickup_armormedium_max; - StartItem ("models/items/g_armormedium.md3", "misc/armor1.wav", 20, "25 Armor", IT_ARMOR, 0, commodity_pickupevalfunc, 20000); + StartItem ("models/items/g_armormedium.md3", "misc/armor1.wav", 20, "25 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, 20000); } void spawnfunc_item_armor_large (void) { @@ -691,7 +685,7 @@ void spawnfunc_item_armor_large (void) { self.armorvalue = g_pickup_armorlarge; if(!self.max_armorvalue) self.max_armorvalue = g_pickup_armorlarge_max; - StartItem ("models/items/g_a25.md3", "misc/armor25.wav", 30, "100 Armor", IT_ARMOR, 0, commodity_pickupevalfunc, 20000); + StartItem ("models/items/g_a25.md3", "misc/armor25.wav", 30, "100 Armor", IT_ARMOR, 0, 0, commodity_pickupevalfunc, 20000); } void spawnfunc_item_health_small (void) { @@ -699,7 +693,7 @@ void spawnfunc_item_health_small (void) { self.max_health = g_pickup_healthsmall_max; if(!self.health) self.health = g_pickup_healthsmall; - StartItem ("models/items/g_h1.md3", "misc/minihealth.wav", 15, "5 Health", IT_5HP, 0, commodity_pickupevalfunc, 20000); + StartItem ("models/items/g_h1.md3", "misc/minihealth.wav", 15, "5 Health", IT_5HP, 0, 0, commodity_pickupevalfunc, 20000); } void spawnfunc_item_health_medium (void) { @@ -707,7 +701,7 @@ void spawnfunc_item_health_medium (void) { self.max_health = g_pickup_healthmedium_max; if(!self.health) self.health = g_pickup_healthmedium; - StartItem ("models/items/g_h25.md3", "misc/mediumhealth.wav", 15, "25 Health", IT_25HP, 0, commodity_pickupevalfunc, 20000); + StartItem ("models/items/g_h25.md3", "misc/mediumhealth.wav", 15, "25 Health", IT_25HP, 0, 0, commodity_pickupevalfunc, 20000); } void spawnfunc_item_health_large (void) { @@ -715,7 +709,7 @@ void spawnfunc_item_health_large (void) { self.max_health = g_pickup_healthlarge_max; if(!self.health) self.health = g_pickup_healthlarge; - StartItem ("models/items/g_h50.md3", "misc/mediumhealth.wav", 20, "50 Health", IT_25HP, 0, commodity_pickupevalfunc, 20000); + StartItem ("models/items/g_h50.md3", "misc/mediumhealth.wav", 20, "50 Health", IT_25HP, 0, 0, commodity_pickupevalfunc, 20000); } void spawnfunc_item_health_mega (void) { @@ -732,7 +726,7 @@ void spawnfunc_item_health_mega (void) { self.max_health = g_pickup_healthmega_max; if(!self.health) self.health = g_pickup_healthmega; - StartItem ("models/items/g_h100.md3", "misc/megahealth.wav", 30, "100 Health", IT_HEALTH, 0, commodity_pickupevalfunc, 20000); + StartItem ("models/items/g_h100.md3", "misc/megahealth.wav", 30, "100 Health", IT_HEALTH, 0, 0, commodity_pickupevalfunc, 20000); } } @@ -755,7 +749,8 @@ void spawnfunc_item_strength (void) { } else { precache_sound("weapons/strength_fire.wav"); self.strength_finished = 30; - self.effects = EF_ADDITIVE;StartItem ("models/items/g_strength.md3", "misc/powerup.wav", 120, "Strength Powerup", IT_STRENGTH, FL_POWERUP, generic_pickupevalfunc, 100000); + self.effects = EF_ADDITIVE; + StartItem ("models/items/g_strength.md3", "misc/powerup.wav", 120, "Strength Powerup", IT_STRENGTH, 0, FL_POWERUP, generic_pickupevalfunc, 100000); } } @@ -771,7 +766,7 @@ void spawnfunc_item_invincible (void) { } else { self.invincible_finished = 30; self.effects = EF_ADDITIVE; - StartItem ("models/items/g_invincible.md3", "misc/powerup_shield.wav", 120, "Invulnerability", IT_INVINCIBLE, FL_POWERUP, generic_pickupevalfunc, 100000); + StartItem ("models/items/g_invincible.md3", "misc/powerup_shield.wav", 120, "Invulnerability", IT_INVINCIBLE, 0, FL_POWERUP, generic_pickupevalfunc, 100000); } } //void item_speed (void) {self.speed_finished = 30;StartItem ("models/items/g_speed.md3", "misc/powerup.wav", 120, "Speed Powerup", IT_SPEED, FL_POWERUP, generic_pickupevalfunc, 10000);} @@ -834,35 +829,18 @@ floatfield Item_CounterField(float it) } } -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; - } -} - -void Item_SpawnByItemCode(float it) +void Item_SpawnByWeaponCode(float it) { switch(it) { - case IT_SHOTGUN: spawnfunc_weapon_shotgun(); break; - case IT_UZI: spawnfunc_weapon_uzi(); break; - case IT_GRENADE_LAUNCHER: spawnfunc_weapon_grenadelauncher(); break; - case IT_ELECTRO: spawnfunc_weapon_electro(); break; - case IT_CRYLINK: spawnfunc_weapon_crylink(); break; - case IT_NEX: spawnfunc_weapon_nex(); break; - case IT_HAGAR: spawnfunc_weapon_hagar(); break; - case IT_ROCKET_LAUNCHER: spawnfunc_weapon_rocketlauncher(); break; + case WEP_SHOTGUN: spawnfunc_weapon_shotgun(); break; + case WEP_UZI: spawnfunc_weapon_uzi(); break; + case WEP_GRENADE_LAUNCHER: spawnfunc_weapon_grenadelauncher(); break; + case WEP_ELECTRO: spawnfunc_weapon_electro(); break; + case WEP_CRYLINK: spawnfunc_weapon_crylink(); break; + case WEP_NEX: spawnfunc_weapon_nex(); break; + case WEP_HAGAR: spawnfunc_weapon_hagar(); break; + case WEP_ROCKET_LAUNCHER: spawnfunc_weapon_rocketlauncher(); break; // add all other item spawn functions here default: error("requested item can't be spawned"); diff --git a/data/qcsrc/server/w_common.qc b/data/qcsrc/server/w_common.qc index 0f6514352..3ecd073d0 100644 --- a/data/qcsrc/server/w_common.qc +++ b/data/qcsrc/server/w_common.qc @@ -6,7 +6,7 @@ void W_GiveWeapon (entity e, float wep, string name) if (!wep) return; - e.items = e.items | wep; + e.weapons = e.weapons | wep; oldself = self; self = e; @@ -141,7 +141,7 @@ void fireBullet (vector start, vector dir, float spread, float damage, float for { if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)) { - if (dtype == IT_SHOTGUN) + if (dtype == WEP_SHOTGUN) pointparticles(particleeffectnum("shotgun_impact"), trace_endpos, trace_plane_normal * 1000, 1); else pointparticles(particleeffectnum("machinegun_impact"), trace_endpos, trace_plane_normal * 1000, 1); diff --git a/data/qcsrc/server/w_crylink.qc b/data/qcsrc/server/w_crylink.qc index b8fed7adc..7b8423527 100644 --- a/data/qcsrc/server/w_crylink.qc +++ b/data/qcsrc/server/w_crylink.qc @@ -20,7 +20,7 @@ void W_Crylink_Touch (void) f = cvar("g_balance_crylink_primary_bouncedamagefactor"); if(self.alpha) f *= self.alpha; - RadiusDamage (self, self.realowner, cvar("g_balance_crylink_primary_damage") * f, cvar("g_balance_crylink_primary_edgedamage") * f, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * f, IT_CRYLINK); + RadiusDamage (self, self.realowner, cvar("g_balance_crylink_primary_damage") * f, cvar("g_balance_crylink_primary_edgedamage") * f, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * f, WEP_CRYLINK); if (finalhit) { remove (self); @@ -49,7 +49,7 @@ void W_Crylink_Touch2 (void) f = cvar("g_balance_crylink_secondary_bouncedamagefactor"); if(self.alpha) f *= self.alpha; - RadiusDamage (self, self.realowner, cvar("g_balance_crylink_secondary_damage") * f, cvar("g_balance_crylink_secondary_edgedamage") * f, cvar("g_balance_crylink_secondary_radius"), world, cvar("g_balance_crylink_secondary_force") * f, IT_CRYLINK); + RadiusDamage (self, self.realowner, cvar("g_balance_crylink_secondary_damage") * f, cvar("g_balance_crylink_secondary_edgedamage") * f, cvar("g_balance_crylink_secondary_radius"), world, cvar("g_balance_crylink_secondary_force") * f, WEP_CRYLINK); if (finalhit) { remove (self); @@ -191,7 +191,7 @@ void W_Crylink_Attack3 (void) trailparticles(world, particleeffectnum("lightning_beam", w_shotorg, trace_endpos); if (trace_fraction < 1) - Damage(trace_ent, self, self, cvar("g_balance_crylink_primary_damage"), IT_CRYLINK, trace_endpos, '0 0 0'); + Damage(trace_ent, self, self, cvar("g_balance_crylink_primary_damage"), WEP_CRYLINK, trace_endpos, '0 0 0'); } */ @@ -234,7 +234,5 @@ float w_crylink(float req) return self.ammo_cells >= cvar("g_balance_crylink_primary_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_cells >= cvar("g_balance_crylink_secondary_ammo"); - else if (req == WR_REGISTER) - weapon_register(WEP_CRYLINK, min(cvar("g_balance_crylink_primary_ammo"), cvar("g_balance_crylink_secondary_ammo"))); return TRUE; }; diff --git a/data/qcsrc/server/w_electro.qc b/data/qcsrc/server/w_electro.qc index 30cf2b2ec..19b86c2c5 100644 --- a/data/qcsrc/server/w_electro.qc +++ b/data/qcsrc/server/w_electro.qc @@ -8,12 +8,12 @@ void W_Plasma_Explode (void) if (self.movetype == MOVETYPE_BOUNCE) { pointparticles(particleeffectnum("electro_ballexplode"), org2, '0 0 0', 1); - RadiusDamage (self, self.owner, cvar("g_balance_electro_secondary_damage"), cvar("g_balance_electro_secondary_edgedamage"), cvar("g_balance_electro_secondary_radius"), world, cvar("g_balance_electro_secondary_force"), IT_ELECTRO); + RadiusDamage (self, self.owner, cvar("g_balance_electro_secondary_damage"), cvar("g_balance_electro_secondary_edgedamage"), cvar("g_balance_electro_secondary_radius"), world, cvar("g_balance_electro_secondary_force"), WEP_ELECTRO); } else { pointparticles(particleeffectnum("electro_impact"), org2, '0 0 0', 1); - RadiusDamage (self, self.owner, cvar("g_balance_electro_primary_damage"), cvar("g_balance_electro_primary_edgedamage"), cvar("g_balance_electro_primary_radius"), world, cvar("g_balance_electro_primary_force"), IT_ELECTRO); + RadiusDamage (self, self.owner, cvar("g_balance_electro_primary_damage"), cvar("g_balance_electro_primary_edgedamage"), cvar("g_balance_electro_primary_radius"), world, cvar("g_balance_electro_primary_force"), WEP_ELECTRO); } sound (self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM); @@ -29,7 +29,7 @@ void W_Plasma_Explode_Combo (void) { sound (self, CHAN_PROJECTILE, "weapons/electro_impact_combo.wav", VOL_BASE, ATTN_NORM); self.event_damage = SUB_Null; - RadiusDamage (self, self.owner, cvar("g_balance_electro_combo_damage"), cvar("g_balance_electro_combo_edgedamage"), cvar("g_balance_electro_combo_radius"), world, cvar("g_balance_electro_combo_force"), IT_ELECTRO); + RadiusDamage (self, self.owner, cvar("g_balance_electro_combo_damage"), cvar("g_balance_electro_combo_edgedamage"), cvar("g_balance_electro_combo_radius"), world, cvar("g_balance_electro_combo_force"), WEP_ELECTRO); remove (self); } @@ -225,7 +225,5 @@ float w_electro(float req) return self.ammo_cells >= cvar("g_balance_electro_primary_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_cells >= cvar("g_balance_electro_secondary_ammo"); - else if (req == WR_REGISTER) - weapon_register(WEP_ELECTRO, min(cvar("g_balance_electro_primary_ammo"), cvar("g_balance_electro_secondary_ammo"))); return TRUE; }; diff --git a/data/qcsrc/server/w_grenadelauncher.qc b/data/qcsrc/server/w_grenadelauncher.qc index 8dc6bdd1b..e783c02c1 100644 --- a/data/qcsrc/server/w_grenadelauncher.qc +++ b/data/qcsrc/server/w_grenadelauncher.qc @@ -11,7 +11,7 @@ void W_Grenade_Explode (void) sound (self, CHAN_PROJECTILE, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM); self.event_damage = SUB_Null; - RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_primary_damage"), cvar("g_balance_grenadelauncher_primary_edgedamage"), cvar("g_balance_grenadelauncher_primary_radius"), world, cvar("g_balance_grenadelauncher_primary_force"), IT_GRENADE_LAUNCHER); + RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_primary_damage"), cvar("g_balance_grenadelauncher_primary_edgedamage"), cvar("g_balance_grenadelauncher_primary_radius"), world, cvar("g_balance_grenadelauncher_primary_force"), WEP_GRENADE_LAUNCHER); remove (self); } @@ -24,7 +24,7 @@ void W_Grenade_Explode2 (void) sound (self, CHAN_PROJECTILE, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM); self.event_damage = SUB_Null; - RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_secondary_damage"), cvar("g_balance_grenadelauncher_secondary_edgedamage"), cvar("g_balance_grenadelauncher_secondary_radius"), world, cvar("g_balance_grenadelauncher_secondary_force"), IT_GRENADE_LAUNCHER); + RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_secondary_damage"), cvar("g_balance_grenadelauncher_secondary_edgedamage"), cvar("g_balance_grenadelauncher_secondary_radius"), world, cvar("g_balance_grenadelauncher_secondary_force"), WEP_GRENADE_LAUNCHER); remove (self); } @@ -236,7 +236,5 @@ float w_glauncher(float req) return self.ammo_rockets >= cvar("g_balance_grenadelauncher_primary_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_rockets >= cvar("g_balance_grenadelauncher_secondary_ammo"); - else if (req == WR_REGISTER) - weapon_register(WEP_GRENADE_LAUNCHER, min(cvar("g_balance_grenadelauncher_primary_ammo"), cvar("g_balance_grenadelauncher_secondary_ammo"))); return TRUE; }; diff --git a/data/qcsrc/server/w_hagar.qc b/data/qcsrc/server/w_hagar.qc index 13ee49d47..f69f6f7a9 100644 --- a/data/qcsrc/server/w_hagar.qc +++ b/data/qcsrc/server/w_hagar.qc @@ -13,7 +13,7 @@ void W_Hagar_Explode (void) sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM); self.event_damage = SUB_Null; - RadiusDamage (self, self.realowner, cvar("g_balance_hagar_primary_damage"), cvar("g_balance_hagar_primary_edgedamage"), cvar("g_balance_hagar_primary_radius"), world, cvar("g_balance_hagar_primary_force"), IT_HAGAR); + RadiusDamage (self, self.realowner, cvar("g_balance_hagar_primary_damage"), cvar("g_balance_hagar_primary_edgedamage"), cvar("g_balance_hagar_primary_radius"), world, cvar("g_balance_hagar_primary_force"), WEP_HAGAR); remove (self); } @@ -33,7 +33,7 @@ void W_Hagar_Explode2 (void) sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM); self.event_damage = SUB_Null; - RadiusDamage (self, self.realowner, cvar("g_balance_hagar_secondary_damage"), cvar("g_balance_hagar_secondary_edgedamage"), cvar("g_balance_hagar_secondary_radius"), world, cvar("g_balance_hagar_secondary_force"), IT_HAGAR); + RadiusDamage (self, self.realowner, cvar("g_balance_hagar_secondary_damage"), cvar("g_balance_hagar_secondary_edgedamage"), cvar("g_balance_hagar_secondary_radius"), world, cvar("g_balance_hagar_secondary_force"), WEP_HAGAR); remove (self); } @@ -198,7 +198,5 @@ float w_hagar(float req) return self.ammo_rockets >= cvar("g_balance_hagar_primary_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_rockets >= cvar("g_balance_hagar_secondary_ammo"); - else if (req == WR_REGISTER) - weapon_register(WEP_HAGAR, min(cvar("g_balance_hagar_primary_ammo"), cvar("g_balance_hagar_secondary_ammo"))); return TRUE; }; diff --git a/data/qcsrc/server/w_laser.qc b/data/qcsrc/server/w_laser.qc index 6527e2ba4..c20245fb4 100644 --- a/data/qcsrc/server/w_laser.qc +++ b/data/qcsrc/server/w_laser.qc @@ -24,9 +24,9 @@ void W_Laser_Touch (void) self.event_damage = SUB_Null; if (self.dmg) - RadiusDamage (self, self.owner, cvar("g_balance_laser_secondary_damage"), cvar("g_balance_laser_secondary_edgedamage"), cvar("g_balance_laser_secondary_radius"), world, cvar("g_balance_laser_secondary_force"), IT_LASER); + RadiusDamage (self, self.owner, cvar("g_balance_laser_secondary_damage"), cvar("g_balance_laser_secondary_edgedamage"), cvar("g_balance_laser_secondary_radius"), world, cvar("g_balance_laser_secondary_force"), WEP_LASER); else - RadiusDamage (self, self.owner, cvar("g_balance_laser_primary_damage"), cvar("g_balance_laser_primary_edgedamage"), cvar("g_balance_laser_primary_radius"), world, cvar("g_balance_laser_primary_force"), IT_LASER); + RadiusDamage (self, self.owner, cvar("g_balance_laser_primary_damage"), cvar("g_balance_laser_primary_edgedamage"), cvar("g_balance_laser_primary_radius"), world, cvar("g_balance_laser_primary_force"), WEP_LASER); sound (self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM); remove (self); @@ -133,7 +133,5 @@ float w_laser(float req) return TRUE; else if (req == WR_CHECKAMMO2) return TRUE; - else if (req == WR_REGISTER) - weapon_register(WEP_LASER, 0); return TRUE; }; diff --git a/data/qcsrc/server/w_nex.qc b/data/qcsrc/server/w_nex.qc index 556cef3aa..10751f5eb 100644 --- a/data/qcsrc/server/w_nex.qc +++ b/data/qcsrc/server/w_nex.qc @@ -10,11 +10,11 @@ void W_Nex_Attack (void) // assure that nexdamage is high enough in minstagib if (g_minstagib || g_instagib) - FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, 1000, 800, IT_NEX); + FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, 1000, 800, WEP_NEX); else { yoda = 0; - FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, cvar("g_balance_nex_damage"), cvar("g_balance_nex_force"), IT_NEX); + FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, cvar("g_balance_nex_damage"), cvar("g_balance_nex_force"), WEP_NEX); if(yoda) if(flying) @@ -178,12 +178,5 @@ float w_nex(float req) } else if (req == WR_CHECKAMMO2) return FALSE; - else if (req == WR_REGISTER) - { - if(g_minstagib) - weapon_register(WEP_NEX, 1); - else - weapon_register(WEP_NEX, cvar("g_balance_nex_ammo")); - } return TRUE; }; diff --git a/data/qcsrc/server/w_rocketlauncher.qc b/data/qcsrc/server/w_rocketlauncher.qc index 799b8268a..8a0dacac7 100644 --- a/data/qcsrc/server/w_rocketlauncher.qc +++ b/data/qcsrc/server/w_rocketlauncher.qc @@ -12,7 +12,7 @@ void W_Rocket_Explode (void) //effect (org2, "models/sprites/rockexpl.spr", 0, 12, 35); self.event_damage = SUB_Null; - RadiusDamage (self, self.owner, cvar("g_balance_rocketlauncher_damage"), cvar("g_balance_rocketlauncher_edgedamage"), cvar("g_balance_rocketlauncher_radius"), world, cvar("g_balance_rocketlauncher_force"), IT_ROCKET_LAUNCHER); + RadiusDamage (self, self.owner, cvar("g_balance_rocketlauncher_damage"), cvar("g_balance_rocketlauncher_edgedamage"), cvar("g_balance_rocketlauncher_radius"), world, cvar("g_balance_rocketlauncher_force"), WEP_ROCKET_LAUNCHER); if (self.owner.weapon == WEP_ROCKET_LAUNCHER) { @@ -428,7 +428,5 @@ float w_rlauncher(float req) } else if (req == WR_CHECKAMMO2) return FALSE; - else if (req == WR_REGISTER) - weapon_register(WEP_ROCKET_LAUNCHER, cvar("g_balance_rocketlauncher_ammo")); return TRUE; }; diff --git a/data/qcsrc/server/w_shotgun.qc b/data/qcsrc/server/w_shotgun.qc index eb9b7cb6a..32e767aeb 100644 --- a/data/qcsrc/server/w_shotgun.qc +++ b/data/qcsrc/server/w_shotgun.qc @@ -15,7 +15,7 @@ void W_Shotgun_Attack (void) W_SetupShot (self, '25 8 -8', TRUE, 5, "weapons/shotgun_fire.wav"); for (sc = 0;sc < bullets;sc = sc + 1) - fireBullet (w_shotorg, w_shotdir, spread, d, f, IT_SHOTGUN, sc < 3); + fireBullet (w_shotorg, w_shotdir, spread, d, f, WEP_SHOTGUN, sc < 3); if (cvar("g_use_ammunition")) self.ammo_shells = self.ammo_shells - cvar("g_balance_shotgun_primary_ammo"); @@ -58,7 +58,7 @@ void W_Shotgun_Attack2 (void) W_SetupShot (self, '25 8 -8', TRUE, 5, "weapons/shotgun_fire.wav"); for (sc = 0;sc < bullets;sc = sc + 1) - fireBullet (w_shotorg, w_shotdir, spread, d, f, IT_SHOTGUN, sc < 3); + fireBullet (w_shotorg, w_shotdir, spread, d, f, WEP_SHOTGUN, sc < 3); if (cvar("g_use_ammunition")) self.ammo_shells = self.ammo_shells - cvar("g_balance_shotgun_secondary_ammo"); @@ -139,7 +139,5 @@ float w_shotgun(float req) return self.ammo_shells >= cvar("g_balance_shotgun_primary_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_shells >= cvar("g_balance_shotgun_secondary_ammo") * 3; - else if (req == WR_REGISTER) - weapon_register(WEP_SHOTGUN, min(cvar("g_balance_shotgun_primary_ammo"), cvar("g_balance_shotgun_secondary_ammo"))); return TRUE; }; diff --git a/data/qcsrc/server/w_uzi.qc b/data/qcsrc/server/w_uzi.qc index 9787d5756..d2a03e796 100644 --- a/data/qcsrc/server/w_uzi.qc +++ b/data/qcsrc/server/w_uzi.qc @@ -34,9 +34,9 @@ void W_Uzi_Attack (void) ATTACK_FINISHED(self) = time + cvar("g_balance_uzi_first_refire"); if (self.uzi_bulletcounter == 1) - fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_first_spread"), cvar("g_balance_uzi_first_damage"), cvar("g_balance_uzi_first_force"), IT_UZI, TRUE); + fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_first_spread"), cvar("g_balance_uzi_first_damage"), cvar("g_balance_uzi_first_force"), WEP_UZI, TRUE); else - fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_sustained_spread"), cvar("g_balance_uzi_sustained_damage"), cvar("g_balance_uzi_sustained_force"), IT_UZI, (self.uzi_bulletcounter & 3) == 0); + fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_sustained_spread"), cvar("g_balance_uzi_sustained_damage"), cvar("g_balance_uzi_sustained_force"), WEP_UZI, (self.uzi_bulletcounter & 3) == 0); pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -147,7 +147,5 @@ float w_uzi(float req) return self.ammo_nails >= cvar("g_balance_uzi_first_ammo"); else if (req == WR_CHECKAMMO2) return self.ammo_nails >= cvar("g_balance_uzi_first_ammo"); - else if (req == WR_REGISTER) - weapon_register(WEP_UZI, cvar("g_balance_uzi_first_ammo")); return TRUE; }; -- 2.39.2