From 82ced57c88d3acc5da9b2b7cd1528aba29a7ef03 Mon Sep 17 00:00:00 2001 From: kadaverjack Date: Thu, 16 Mar 2006 19:09:47 +0000 Subject: [PATCH] weapon stay option and health regenerates to 100 now git-svn-id: svn://svn.icculus.org/nexuiz/trunk@1165 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/menu/creategame/weapon.menu | 5 ++++ data/menu/data/weapon.menu | 14 +++++++++++ data/qcsrc/server/gamec/cl_client.c | 4 +-- data/qcsrc/server/gamec/t_items.c | 39 ++++++++++++++++------------- 4 files changed, 42 insertions(+), 20 deletions(-) diff --git a/data/menu/creategame/weapon.menu b/data/menu/creategame/weapon.menu index 572212105..22f85223c 100644 --- a/data/menu/creategame/weapon.menu +++ b/data/menu/creategame/weapon.menu @@ -59,6 +59,11 @@ Item Window Weapon text "Strength Time" target "Data::Weapon::StrengthTime::Text" } + Derive Nex_Option_Switch WeaponStay + { + text "Weapon Stay" + target "Data::Weapon::WeaponStay::Switch" + } Derive Nex_Option_EditBox LaserDamage { text "Laser Damage" diff --git a/data/menu/data/weapon.menu b/data/menu/data/weapon.menu index 4253dc16f..55b904090 100644 --- a/data/menu/data/weapon.menu +++ b/data/menu/data/weapon.menu @@ -39,6 +39,20 @@ Item DataContainer Weapon [DataLink_Setting] } + Item Data_Cvar WeaponStay + { + cvarName "deathmatch" + defValue "1" + + Item DataLink_TextSwitch Switch + { + valueList "'1' '2'" + + descList "'Off' 'On'" + link "##up" + } + } + Item Data_Cvar LaserDamage { cvarName "g_balance_laser_damage" diff --git a/data/qcsrc/server/gamec/cl_client.c b/data/qcsrc/server/gamec/cl_client.c index 3168904d9..7968b4936 100644 --- a/data/qcsrc/server/gamec/cl_client.c +++ b/data/qcsrc/server/gamec/cl_client.c @@ -969,9 +969,9 @@ void player_regen (void) if (time > self.pauseregen_finished) { if (self.health < maxh) - self.health = bound(0, self.health + (maxh- self.health) * cvar("g_balance_health_regen") * frametime, 1000); + self.health = bound(0, self.health + (maxh - self.health) * cvar("g_balance_health_regen") * frametime + 0.001, 1000); if (self.armorvalue < maxa) - self.armorvalue = bound(0, self.armorvalue + (maxa - self.armorvalue) * cvar("g_balance_armor_regen") * frametime, 1000); + self.armorvalue = bound(0, self.armorvalue + (maxa - self.armorvalue) * cvar("g_balance_armor_regen") * frametime + 0.001, 1000); } } } diff --git a/data/qcsrc/server/gamec/t_items.c b/data/qcsrc/server/gamec/t_items.c index dd04eaa94..95c079983 100644 --- a/data/qcsrc/server/gamec/t_items.c +++ b/data/qcsrc/server/gamec/t_items.c @@ -89,23 +89,26 @@ void Item_Touch (void) } else { - if (self.ammo_shells) - other.ammo_shells = min (other.ammo_shells + self.ammo_shells, 999); - if (self.ammo_nails) - other.ammo_nails = min (other.ammo_nails + self.ammo_nails, 999); - if (self.ammo_rockets) - other.ammo_rockets = min (other.ammo_rockets + self.ammo_rockets, 999); - if (self.ammo_cells) - other.ammo_cells = min (other.ammo_cells + self.ammo_cells, 999); - - if (self.items & IT_UZI) W_GiveWeapon (other, IT_UZI, "Machine gun"); - if (self.items & IT_SHOTGUN) W_GiveWeapon (other, IT_SHOTGUN, "Shotgun"); - if (self.items & IT_GRENADE_LAUNCHER) W_GiveWeapon (other, IT_GRENADE_LAUNCHER, "Mortar"); - if (self.items & IT_ELECTRO) W_GiveWeapon (other, IT_ELECTRO, "Electro"); - if (self.items & IT_NEX) W_GiveWeapon (other, IT_NEX, "Nex"); - if (self.items & IT_HAGAR) W_GiveWeapon (other, IT_HAGAR, "Hagar"); - if (self.items & IT_ROCKET_LAUNCHER) W_GiveWeapon (other, IT_ROCKET_LAUNCHER, "Rocket Launcher"); - if (self.items & IT_CRYLINK) W_GiveWeapon (other, IT_CRYLINK, "Crylink"); + if (cvar("deathmatch") != 2 || !self.flags & FL_WEAPON || !other.items & self.items || self.classname == "droppedweapon") + { + if (self.ammo_shells) + other.ammo_shells = min (other.ammo_shells + self.ammo_shells, 999); + if (self.ammo_nails) + other.ammo_nails = min (other.ammo_nails + self.ammo_nails, 999); + if (self.ammo_rockets) + other.ammo_rockets = min (other.ammo_rockets + self.ammo_rockets, 999); + if (self.ammo_cells) + other.ammo_cells = min (other.ammo_cells + self.ammo_cells, 999); + + if (self.items & IT_UZI) W_GiveWeapon (other, IT_UZI, "Machine gun"); + if (self.items & IT_SHOTGUN) W_GiveWeapon (other, IT_SHOTGUN, "Shotgun"); + if (self.items & IT_GRENADE_LAUNCHER) W_GiveWeapon (other, IT_GRENADE_LAUNCHER, "Mortar"); + if (self.items & IT_ELECTRO) W_GiveWeapon (other, IT_ELECTRO, "Electro"); + if (self.items & IT_NEX) W_GiveWeapon (other, IT_NEX, "Nex"); + if (self.items & IT_HAGAR) W_GiveWeapon (other, IT_HAGAR, "Hagar"); + if (self.items & IT_ROCKET_LAUNCHER) W_GiveWeapon (other, IT_ROCKET_LAUNCHER, "Rocket Launcher"); + if (self.items & IT_CRYLINK) W_GiveWeapon (other, IT_CRYLINK, "Crylink"); + } if (self.strength_finished) other.strength_finished = max(other.strength_finished, time) + cvar("g_balance_powerup_strength_time"); @@ -148,7 +151,7 @@ void Item_Touch (void) if (self.classname == "droppedweapon") remove (self); - else + else if (cvar("deathmatch") != 2 || !self.flags & FL_WEAPON) { self.solid = SOLID_NOT; self.model = string_null; -- 2.39.2