From 414da1603f13a6812d512eafdfa729e33327dafd Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 31 Jan 2009 13:46:11 +0000 Subject: [PATCH] bloodloss git-svn-id: svn://svn.icculus.org/nexuiz/trunk@5703 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 2 ++ .../menu/nexuiz/dialog_multiplayer_create_mutators.c | 8 ++++++++ data/qcsrc/server/cl_client.qc | 12 +++++++++++- data/qcsrc/server/cl_physics.qc | 3 +++ data/qcsrc/server/defs.qh | 2 +- data/qcsrc/server/miscfunctions.qc | 1 + 6 files changed, 26 insertions(+), 2 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index c63268561..41fde0aad 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -667,6 +667,8 @@ set g_balance_pause_armor_rot_spawn 10 set g_balance_pause_health_rot_spawn 10 set g_balance_pause_health_regen_spawn 0 +set g_bloodloss 0 "amount of health below which blood loss occurs" + set g_footsteps 0 "serverside footstep sounds" // effects diff --git a/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c b/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c index 82eaf8e20..2cf9f5530 100644 --- a/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c +++ b/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c @@ -86,6 +86,8 @@ string toStringNexuizMutatorsDialog(entity me) s = strcat(s, ", Vampire"); if(cvar("g_weapon_stay")) s = strcat(s, ", Weapons stay"); + if(cvar("g_bloodloss") > 0) + s = strcat(s, ", Bloodloss"); if(s == "") return "None"; else @@ -177,6 +179,12 @@ void fillNexuizMutatorsDialog(entity me) me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.8, s); + me.TR(me); + s = makeNexuizSlider(10, 50, 1, "g_bloodloss"); + me.TD(me, 1, 2, e = makeNexuizSliderCheckBox(0, 1, s, "Blood loss")); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.8, s); me.gotoRC(me, 0, 2); me.setFirstColumn(me, me.currentColumn); me.TD(me, 1, 4, makeNexuizTextLabel(0, "Weapon arenas:")); diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 84a3851d5..d62228f77 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -1,5 +1,6 @@ .float spectatee_status; .float zoomstate; +.float bloodloss_timer; .entity clientdata; float ClientData_Send(entity to, float sf) @@ -2222,7 +2223,7 @@ void PlayerPreThink (void) self.oldorigin = self.origin; - if (self.BUTTON_CROUCH && !self.hook.state) + if ((self.BUTTON_CROUCH && !self.hook.state) || self.health <= g_bloodloss) { if (!self.crouch) { @@ -2245,6 +2246,15 @@ void PlayerPreThink (void) } } } + + if(self.health <= g_bloodloss && self.deadflag == DEAD_NO) + { + if(self.bloodloss_timer < time) + { + self.event_damage(self, self, 1, DEATH_ROT, self.origin, '0 0 0'); + self.bloodloss_timer = time + 0.5 + random() * 0.5; + } + } FixPlayermodel(); diff --git a/data/qcsrc/server/cl_physics.qc b/data/qcsrc/server/cl_physics.qc index 2435e6b24..3ec24e878 100644 --- a/data/qcsrc/server/cl_physics.qc +++ b/data/qcsrc/server/cl_physics.qc @@ -52,6 +52,9 @@ void PlayerJump (void) if(!sv_pogostick) if (!(self.flags & FL_JUMPRELEASED)) return; + + if(self.health <= g_bloodloss) + return; if(g_runematch) { diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index 3377fc3ca..b538aca67 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -19,7 +19,7 @@ string records_reply, lsmaps_reply, maplist_reply; // cached replies float ctf_score_value(string parameter); float g_dm, g_domination, g_ctf, g_tdm, g_keyhunt, g_onslaught, g_assault, g_arena, g_lms, g_runematch, g_race; -float g_cloaked, g_footsteps, g_jump_grunt, g_grappling_hook, g_laserguided_missile, g_midair, g_minstagib, g_nixnex, g_nixnex_with_laser, g_norecoil, g_vampire, g_minstagib_invis_alpha; +float g_cloaked, g_footsteps, g_jump_grunt, g_grappling_hook, g_laserguided_missile, g_midair, g_minstagib, g_nixnex, g_nixnex_with_laser, g_norecoil, g_vampire, g_minstagib_invis_alpha, g_bloodloss; float g_warmup_limit; float g_warmup_allguns; float g_warmup_allow_timeout; diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index 176d78006..076f466b3 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -999,6 +999,7 @@ void readlevelcvars(void) g_nixnex_with_laser = cvar("g_nixnex_with_laser"); g_norecoil = cvar("g_norecoil"); g_vampire = cvar("g_vampire"); + g_bloodloss = cvar("g_bloodloss"); sv_maxidle = cvar("sv_maxidle"); sv_maxidle_spectatorsareidle = cvar("sv_maxidle_spectatorsareidle"); sv_pogostick = cvar("sv_pogostick"); -- 2.39.2