From 345e22677b4c51af82ead4f772f0287635c7a54f Mon Sep 17 00:00:00 2001 From: lordhavoc Date: Sat, 14 May 2005 23:04:56 +0000 Subject: [PATCH] renamed nullfunction to SUB_Null and gave it a definition to hush compiler warnings added g_fullbrightitems cvar removed norespawn field, instead dropped weapons check if their classname is "droppedweapon", and VanishOrRemove (called by SetFade stuff) checks FL_CLIENT (since players are the only thing that fade and can respawn), this fixes a buildup of expired muzzleflash effects (thanks to Spike for reporting this) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@401 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- qcsrc/default.cfg | 1 + qcsrc/gamec/cl_client.c | 2 +- qcsrc/gamec/cl_player.c | 15 +++++++++------ qcsrc/gamec/defs.h | 1 - qcsrc/gamec/g_casings.c | 2 +- qcsrc/gamec/g_damage.c | 2 -- qcsrc/gamec/g_subs.c | 14 +++++++------- qcsrc/gamec/g_triggers.c | 2 +- qcsrc/gamec/g_violence.c | 5 +---- qcsrc/gamec/g_world.c | 2 +- qcsrc/gamec/t_items.c | 13 +++++++------ qcsrc/gamec/t_jumppads.c | 2 +- qcsrc/gamec/t_plats.c | 6 +++--- qcsrc/gamec/w_crylink.c | 6 +++--- qcsrc/gamec/w_electro.c | 2 +- qcsrc/gamec/w_grenadelauncher.c | 6 +++--- qcsrc/gamec/w_hagar.c | 2 +- qcsrc/gamec/w_laser.c | 2 +- qcsrc/gamec/w_rocketlauncher.c | 2 +- 19 files changed, 43 insertions(+), 44 deletions(-) diff --git a/qcsrc/default.cfg b/qcsrc/default.cfg index 5e5549e0c..417336e70 100755 --- a/qcsrc/default.cfg +++ b/qcsrc/default.cfg @@ -40,6 +40,7 @@ pausable 0 set g_instagib 0 set g_rocketarena 0 set g_fullbrightplayers 0 +set g_fullbrightitems 0 set g_casings 0 seta g_maplist "nexdm01 nexdm02 nexdm03 nexdm04 nexdm05 nexdm06 nexdm07 nexdm08 nexdm09 nexdm10 nexdm11 nexdm12 nexdm13 nexdm14 nexdm15 nexdm16 nexdmextra1" diff --git a/qcsrc/gamec/cl_client.c b/qcsrc/gamec/cl_client.c index a1cbf1b16..147ed7e68 100644 --- a/qcsrc/gamec/cl_client.c +++ b/qcsrc/gamec/cl_client.c @@ -91,7 +91,7 @@ void PutClientInServer (void) //self.speed_finished = 0; //self.slowmo_finished = 0; // players have no think function - self.think = nullfunction; + self.think = SUB_Null; self.nextthink = 0; self.deadflag = DEAD_NO; diff --git a/qcsrc/gamec/cl_player.c b/qcsrc/gamec/cl_player.c index 8ae739535..3fb88cbd1 100644 --- a/qcsrc/gamec/cl_player.c +++ b/qcsrc/gamec/cl_player.c @@ -33,7 +33,6 @@ void CopyBody(float keepvelocity) self.modelindex = oldself.modelindex; self.movetype = oldself.movetype; self.nextthink = oldself.nextthink; - self.norespawn = TRUE; self.skin = oldself.skin; self.solid = oldself.solid; self.takedamage = oldself.takedamage; @@ -109,10 +108,11 @@ void SpawnThrownWeapon (vector org, float w) 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'; - self.norespawn = 1; //SUB_SetFade(self, time + 20); if (w == WEP_UZI) @@ -198,7 +198,6 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht save = bound(0, damage * 0.6, self.armorvalue); take = bound(0, damage - save, damage); - self.armorvalue = self.armorvalue - save; if (save > 10) sound (self, CHAN_BODY, "misc/armorimpact.wav", 1, ATTN_NORM); @@ -212,9 +211,13 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht if (take > 100) TossGib (world, "models/gibs/chunk.mdl", hitloc, force * -0.1,1); - self.health = self.health - take; - self.dmg_save = self.dmg_save + save * 0.25; - self.dmg_take = self.dmg_take + take * 0.25; + if (!(self.flags & FL_GODMODE)) + { + self.armorvalue = self.armorvalue - save; + self.health = self.health - take; + } + self.dmg_save = self.dmg_save + max(save - 10, 0); + self.dmg_take = self.dmg_take + max(take - 10, 0); self.dmg_inflictor = inflictor; if (self.health <= 2) { diff --git a/qcsrc/gamec/defs.h b/qcsrc/gamec/defs.h index c4e51ecdc..dd4377c8f 100644 --- a/qcsrc/gamec/defs.h +++ b/qcsrc/gamec/defs.h @@ -61,7 +61,6 @@ entity dest; .string playermodel; .string playerskin; -.float norespawn; .float respawntime; //.float chasecam; diff --git a/qcsrc/gamec/g_casings.c b/qcsrc/gamec/g_casings.c index 93ebb713f..34266d89c 100644 --- a/qcsrc/gamec/g_casings.c +++ b/qcsrc/gamec/g_casings.c @@ -5,7 +5,7 @@ void() casingtouch = if (time >= self.attack_finished) sound (self, CHAN_WEAPON, "weapons/tink1.wav", 0.5, ATTN_NORM); self.attack_finished = time + 0.2; - //self.touch = nullfunction; // one tink is enough + //self.touch = SUB_Null; // one tink is enough //self.dest = self.origin - self.groundentity.origin; }; diff --git a/qcsrc/gamec/g_damage.c b/qcsrc/gamec/g_damage.c index d9b4870fc..c797b7887 100644 --- a/qcsrc/gamec/g_damage.c +++ b/qcsrc/gamec/g_damage.c @@ -109,8 +109,6 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float if (attacker.team == targ.team) if (teamplay == 1 || (teamplay == 3 && attacker != targ)) damage = 0; - if (targ.flags & FL_GODMODE) - damage = 0; // apply strength multiplier if (attacker.items & IT_STRENGTH) { diff --git a/qcsrc/gamec/g_subs.c b/qcsrc/gamec/g_subs.c index 7f3f24083..63d45a76e 100644 --- a/qcsrc/gamec/g_subs.c +++ b/qcsrc/gamec/g_subs.c @@ -1,4 +1,4 @@ -nosave var void nullfunction (void); +void() SUB_Null = {}; void(vector destangle, float tspeed, void() func) SUB_CalcAngleMove; void() SUB_CalcMoveDone; @@ -26,20 +26,20 @@ void SUB_Remove (void) ================== SUB_VanishOrRemove -Makes ent invisible or removes it if ent.norespawn +Makes client invisible or removes non-client ================== */ void SUB_VanishOrRemove (entity ent) { - if (ent.norespawn) + if (ent.flags & FL_CLIENT) { - // remove - remove (ent); + // vanish + ent.effects = EF_NODRAW; } else { - // vanish - ent.effects = EF_NODRAW; + // remove + remove (ent); } } diff --git a/qcsrc/gamec/g_triggers.c b/qcsrc/gamec/g_triggers.c index 040a89f76..7c3c0aae4 100644 --- a/qcsrc/gamec/g_triggers.c +++ b/qcsrc/gamec/g_triggers.c @@ -163,7 +163,7 @@ void() multi_trigger = else { // we can't just remove (self) here, because this is a touch function // called wheil C code is looping through area links... - self.touch = nullfunction; + self.touch = SUB_Null; self.nextthink = time + 0.1; self.think = SUB_Remove; diff --git a/qcsrc/gamec/g_violence.c b/qcsrc/gamec/g_violence.c index 73b9d3294..2ac98fb16 100644 --- a/qcsrc/gamec/g_violence.c +++ b/qcsrc/gamec/g_violence.c @@ -14,7 +14,7 @@ void GibDamage (entity inflictor, entity attacker, float damage, float deathtype self.health = self.health - damage; if (self.health <= -12) { - self.event_damage = nullfunction; + self.event_damage = SUB_Null; SUB_VanishOrRemove (self); } } @@ -32,10 +32,7 @@ void GibTouch () void TossGib (entity gib, string mdlname, vector org, vector v, float destroyontouch) { if (gib == world) - { gib = spawn (); - gib.norespawn = TRUE; - } gib.classname = "gib"; gib.movetype = MOVETYPE_BOUNCE; gib.solid = SOLID_CORPSE; diff --git a/qcsrc/gamec/g_world.c b/qcsrc/gamec/g_world.c index 58b2b71e3..f146182e4 100644 --- a/qcsrc/gamec/g_world.c +++ b/qcsrc/gamec/g_world.c @@ -588,6 +588,6 @@ void() CheckRules_World = else if (checkrules_leaderfrags == fraglimit - 3) sound(world, CHAN_AUTO, "announcer/3fragsleft.wav", 1, ATTN_NONE); } - if (checkrules_leader != checkrules_oldleader && checkrules_leaderfrags > checkrules_oldleaderfrags) + if (checkrules_leader != checkrules_oldleader)// && checkrules_leaderfrags > checkrules_oldleaderfrags) bprint("^1",checkrules_leader.netname, " has taken the lead with ", ftos(checkrules_leaderfrags), " frags\n"); }; diff --git a/qcsrc/gamec/t_items.c b/qcsrc/gamec/t_items.c index b263d1cc6..df66b0059 100644 --- a/qcsrc/gamec/t_items.c +++ b/qcsrc/gamec/t_items.c @@ -40,9 +40,8 @@ void Item_Touch (void) // probably want to switch to an even better weapon after items are given _switchweapon = other.switchweapon == w_getbestweapon(other); - if (self.ammo_shells){ + 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) @@ -85,7 +84,7 @@ void Item_Touch (void) self = oldself; - if (self.norespawn) + if (self.classname == "droppedweapon") remove (self); else { @@ -135,16 +134,18 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, self.touch = Item_Touch; if (itemflags & FL_POWERUP) - { self.effects = self.effects | EF_ADDITIVE; - } // Savage: remove thrown items after a certain period of time ("garbage collection") - if(self.norespawn) { + if (self.classname == "droppedweapon") + { self.think = RemoveItem; self.nextthink = time + 60; } + if (cvar("g_fullbrightitems")) + self.effects = self.effects | EF_FULLBRIGHT; + } void weapon_uzi (void) {self.ammo_nails = 120;StartItem ("models/weapons/g_uzi.md3", "weapons/weaponpickup.wav", 15, "Uzi", IT_UZI, FL_WEAPON);} diff --git a/qcsrc/gamec/t_jumppads.c b/qcsrc/gamec/t_jumppads.c index e238dfbbb..056b25b8d 100644 --- a/qcsrc/gamec/t_jumppads.c +++ b/qcsrc/gamec/t_jumppads.c @@ -44,7 +44,7 @@ void() trigger_push_touch = if (self.spawnflags & PUSH_ONCE) { - self.touch = nullfunction; + self.touch = SUB_Null; self.think = SUB_Remove; self.nextthink = time; } diff --git a/qcsrc/gamec/t_plats.c b/qcsrc/gamec/t_plats.c index 5e0824020..3570ab7eb 100644 --- a/qcsrc/gamec/t_plats.c +++ b/qcsrc/gamec/t_plats.c @@ -113,7 +113,7 @@ void() plat_crush = void() plat_use = { - self.use = nullfunction; + self.use = SUB_Null; if (self.state != 4) objerror ("plat_use: not in up state"); plat_go_down(); @@ -381,7 +381,7 @@ void() func_rotating = // wait for targets to spawn self.nextthink = self.ltime + 999999999; - self.think = nullfunction; + self.think = SUB_Null; }; .float height; @@ -442,5 +442,5 @@ void() func_bobbing = controller.nextthink = time + 1; controller.think = func_bobbing_controller_think; self.nextthink = self.ltime + 999999999; - self.think = nullfunction; + self.think = SUB_Null; }; diff --git a/qcsrc/gamec/w_crylink.c b/qcsrc/gamec/w_crylink.c index d2634200e..de8b21f9a 100644 --- a/qcsrc/gamec/w_crylink.c +++ b/qcsrc/gamec/w_crylink.c @@ -33,12 +33,12 @@ void(float req) w_crylink = void W_Crylink_Touch (void) { - self.event_damage = nullfunction; + self.event_damage = SUB_Null; //te_smallflash(self.origin); RadiusDamage (self, self.owner, cvar("g_balance_crylink_damage"), cvar("g_balance_crylink_edgedamage"), cvar("g_balance_crylink_radius"), world, cvar("g_balance_crylink_force"), IT_CRYLINK); - self.touch = nullfunction; - self.norespawn = TRUE; + self.touch = SUB_Null; setmodel (self, "models/plasma.mdl"); + setsize (self, '0 0 0', '0 0 0'); self.gravity = 1; self.glow_size = 0; self.glow_color = 0; diff --git a/qcsrc/gamec/w_electro.c b/qcsrc/gamec/w_electro.c index 75458ac5f..0d9f28918 100644 --- a/qcsrc/gamec/w_electro.c +++ b/qcsrc/gamec/w_electro.c @@ -40,7 +40,7 @@ void W_Plasma_Explode (void) WriteCoord (MSG_BROADCAST, 0); WriteByte (MSG_BROADCAST, 155); - self.event_damage = nullfunction; + self.event_damage = SUB_Null; RadiusDamage (self, self.owner, cvar("g_balance_electro_damage"), cvar("g_balance_electro_edgedamage"), cvar("g_balance_electro_radius"), world, cvar("g_balance_electro_force"), IT_ELECTRO); sound (self, CHAN_IMPACT, "weapons/plasmahit.wav", 1, ATTN_NORM); diff --git a/qcsrc/gamec/w_grenadelauncher.c b/qcsrc/gamec/w_grenadelauncher.c index d080e3f05..6221a0a11 100644 --- a/qcsrc/gamec/w_grenadelauncher.c +++ b/qcsrc/gamec/w_grenadelauncher.c @@ -5,7 +5,7 @@ void() glauncher_select_01; float() glauncher_check = { - if (self.ammo_rockets >= 3) + if (self.ammo_rockets >= 2) return TRUE; return FALSE; }; @@ -32,7 +32,7 @@ void W_Grenade_Explode (void) { ImpactEffect (self, IT_GRENADE_LAUNCHER); - self.event_damage = nullfunction; + self.event_damage = SUB_Null; RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_damage"), cvar("g_balance_grenadelauncher_edgedamage"), cvar("g_balance_grenadelauncher_radius"), world, cvar("g_balance_grenadelauncher_force"), IT_GRENADE_LAUNCHER); remove (self); @@ -60,7 +60,7 @@ void W_Grenade_Attack (void) sound (self, CHAN_WEAPON, "weapons/grenade_fire.wav", 1, ATTN_NORM); self.punchangle_x = -4; - self.ammo_rockets = self.ammo_rockets - 3; + self.ammo_rockets = self.ammo_rockets - 2; org = self.origin + self.view_ofs + v_forward * 15 + v_right * 5 + v_up * -12; te_smallflash(org); diff --git a/qcsrc/gamec/w_hagar.c b/qcsrc/gamec/w_hagar.c index db1b5632d..8269c2c7b 100644 --- a/qcsrc/gamec/w_hagar.c +++ b/qcsrc/gamec/w_hagar.c @@ -32,7 +32,7 @@ void W_Hagar_Explode (void) { ImpactEffect (self, IT_HAGAR); - self.event_damage = nullfunction; + self.event_damage = SUB_Null; RadiusDamage (self, self.owner, cvar("g_balance_hagar_damage"), cvar("g_balance_hagar_edgedamage"), cvar("g_balance_hagar_radius"), world, cvar("g_balance_hagar_force"), IT_HAGAR); remove (self); diff --git a/qcsrc/gamec/w_laser.c b/qcsrc/gamec/w_laser.c index 512a539ee..d449332d2 100644 --- a/qcsrc/gamec/w_laser.c +++ b/qcsrc/gamec/w_laser.c @@ -50,7 +50,7 @@ void W_Laser_Touch (void) te_customflash(self.origin, 160, 0.2, '1 0 0'); - self.event_damage = nullfunction; + self.event_damage = SUB_Null; RadiusDamage (self, self.owner, cvar("g_balance_laser_damage"), cvar("g_balance_laser_edgedamage"), cvar("g_balance_laser_radius"), world, cvar("g_balance_laser_force"), IT_LASER); sound (self, CHAN_IMPACT, "weapons/laserimpact.wav", 1, ATTN_NORM); diff --git a/qcsrc/gamec/w_rocketlauncher.c b/qcsrc/gamec/w_rocketlauncher.c index 41262c8fd..e365a7a9b 100644 --- a/qcsrc/gamec/w_rocketlauncher.c +++ b/qcsrc/gamec/w_rocketlauncher.c @@ -33,7 +33,7 @@ void W_Rocket_Explode (void) { ImpactEffect (self, IT_ROCKET_LAUNCHER); - self.event_damage = nullfunction; + 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); remove (self); -- 2.39.2