From 4d5f9f96cfccabde56514890d4f67e1572acec66 Mon Sep 17 00:00:00 2001 From: kadaverjack Date: Tue, 9 May 2006 13:59:13 +0000 Subject: [PATCH] - fixed bug that players didn't die when health rots to 0 - custom name pre-/suffixes for bots - moved origin for casings a bit (so you can actually see them in 1st person view) and fixed angle git-svn-id: svn://svn.icculus.org/nexuiz/trunk@1387 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/default.cfg | 2 ++ data/qcsrc/server/gamec/bots.c | 11 ++++++++--- data/qcsrc/server/gamec/cl_client.c | 7 +++++-- data/qcsrc/server/gamec/constants.h | 3 ++- data/qcsrc/server/gamec/g_damage.c | 8 ++++++-- data/qcsrc/server/gamec/w_shotgun.c | 8 ++++---- data/qcsrc/server/gamec/w_uzi.c | 4 ++-- 7 files changed, 29 insertions(+), 14 deletions(-) diff --git a/data/default.cfg b/data/default.cfg index 38c7653d4..324e66d09 100644 --- a/data/default.cfg +++ b/data/default.cfg @@ -128,6 +128,8 @@ seta cl_playerdetailreduction 0 // the higher, the less detailed set bot_number 0 // number of bots in server set bot_usemodelnames 0 // whether bots should be named after the models set bot_nofire 0 // makes bots not attack at all, mainly for testing in g_waypointeditor mode +seta bot_prefix "[BOT]" +seta bot_suffix "" // general bot AI cvars set bot_ai_strategyinterval 2 set bot_ai_enemydetectioninterval 0.5 diff --git a/data/qcsrc/server/gamec/bots.c b/data/qcsrc/server/gamec/bots.c index fbed4f8f9..667f14bb5 100644 --- a/data/qcsrc/server/gamec/bots.c +++ b/data/qcsrc/server/gamec/bots.c @@ -1334,9 +1334,12 @@ string(float r) bot_skinfornumber = void() bot_setnameandstuff = { - local string name; + local string name, prefix, suffix; local float r, b, shirt, pants; + prefix = cvar_string("bot_prefix"); + suffix = cvar_string("bot_suffix"); + // this is really only a default, JoinBestTeam is called later pants = bound(0, floor(random() * 13), 13); //shirt = bound(0, floor(random() * 16), 15); @@ -1389,8 +1392,10 @@ void() bot_setnameandstuff = // randomly pick a skin bot_skinfornumber(floor(random() * BOTSKINS)); } - - self.netname = name; + if(!cvar("g_campaign")) + self.netname = strzone(strcat(prefix, name, suffix)); + else + self.netname = name; }; float(entity e) bot_shouldattack = diff --git a/data/qcsrc/server/gamec/cl_client.c b/data/qcsrc/server/gamec/cl_client.c index b0bcd9750..35442cbcc 100644 --- a/data/qcsrc/server/gamec/cl_client.c +++ b/data/qcsrc/server/gamec/cl_client.c @@ -1150,9 +1150,9 @@ void player_regen (void) if (time > self.pauseregen_finished) { if (self.health < maxh) - self.health = bound(0, self.health + (maxh- self.health) * regen_mod*cvar("g_balance_health_regen") * frametime, 1000); + self.health = bound(0, self.health + (maxh- self.health) * regen_mod*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); } } else @@ -1171,8 +1171,11 @@ void player_regen (void) self.armorvalue = bound(0, self.armorvalue + (maxa - self.armorvalue) * cvar("g_balance_armor_regen") * frametime + 0.001, 1000); } } + if (self.health > limith) self.health = limith; + if(self.health < 1) + self.event_damage(self, self, 1, DEATH_ROT, self.origin, '0 0 0'); if (self.armorvalue > limita) self.armorvalue = limita; } diff --git a/data/qcsrc/server/gamec/constants.h b/data/qcsrc/server/gamec/constants.h index 3fae61d5f..3c1f57c61 100644 --- a/data/qcsrc/server/gamec/constants.h +++ b/data/qcsrc/server/gamec/constants.h @@ -147,7 +147,8 @@ float DEATH_SWAMP = 10008; float DEATH_TEAMCHANGE = 10009; float DEATH_AUTOTEAMCHANGE = 10010; float DEATH_CAMP = 10011; -float DEATH_SHOOTING_STAR = 10012; +float DEATH_SHOOTING_STAR = 10012; +float DEATH_ROT = 10013; float IT_LASER = 4096; float IT_SHOTGUN = 1; diff --git a/data/qcsrc/server/gamec/g_damage.c b/data/qcsrc/server/gamec/g_damage.c index 686b55ab6..c55d64715 100644 --- a/data/qcsrc/server/gamec/g_damage.c +++ b/data/qcsrc/server/gamec/g_damage.c @@ -95,8 +95,6 @@ void Obituary (entity attacker, entity targ, float deathtype) if (targ == attacker) { - if (deathtype == DEATH_NOAMMO) - centerprint(targ, strcat("^1You were killed for running out of ammo...\n\n\n")); if (deathtype == DEATH_TEAMCHANGE) { m = "You are now on: "; @@ -126,6 +124,10 @@ void Obituary (entity attacker, entity targ, float deathtype) } else if (deathtype == DEATH_CAMP) centerprint(targ, strcat("^1Die camper!\n\n\n")); + else if (deathtype == DEATH_NOAMMO) + centerprint(targ, strcat("^1You were killed for running out of ammo...\n\n\n")); + else if (deathtype == DEATH_ROT) + centerprint(targ, strcat("^1You grew too old without taking your medcine\n\n\n")); else centerprint(targ, strcat("^1You killed your own dumb self!\n\n\n")); @@ -137,6 +139,8 @@ void Obituary (entity attacker, entity targ, float deathtype) bprint ("^1",s, "^1 exploded\n"); else if (deathtype == DEATH_KILL) bprint ("^1",s, "^1 couldn't take it anymore\n"); + else if (deathtype == DEATH_ROT) + bprint ("^1",s, "^1 died\n"); else if (deathtype == DEATH_NOAMMO) { bprint ("^7",s, " ^7committed suicide. What's the point of living without ammo?\n"); diff --git a/data/qcsrc/server/gamec/w_shotgun.c b/data/qcsrc/server/gamec/w_shotgun.c index 0c6154093..589726075 100644 --- a/data/qcsrc/server/gamec/w_shotgun.c +++ b/data/qcsrc/server/gamec/w_shotgun.c @@ -71,8 +71,8 @@ void W_Shotgun_Attack (void) // casing code if (cvar("g_casings") >= 1) { - org = W_MuzzleOrigin (self, '10 10 -8'); - SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 + 10) * v_up), 2, v_forward,'0 250 0', 100, 1); + org = W_MuzzleOrigin (self, '20 10 -8'); + SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 - 30) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 1); } self.punchangle_x = -5; @@ -109,8 +109,8 @@ void W_Shotgun_Attack2 (void) // casing code if (cvar("g_casings") >= 1) { - org = W_MuzzleOrigin (self, '10 10 -8'); - SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 + 10) * v_up), 2, v_forward,'0 250 0', 100, 1); + org = W_MuzzleOrigin (self, '20 10 -8'); + SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 - 30) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 1); } self.punchangle_x = -5; diff --git a/data/qcsrc/server/gamec/w_uzi.c b/data/qcsrc/server/gamec/w_uzi.c index 72f5b9129..0ed6b592f 100644 --- a/data/qcsrc/server/gamec/w_uzi.c +++ b/data/qcsrc/server/gamec/w_uzi.c @@ -84,8 +84,8 @@ void W_Uzi_Attack (void) // casing code if (cvar("g_casings") >= 2) { - org = W_MuzzleOrigin (self, '10 6 -8'); - SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 + 10) * v_up), 2, v_forward,'0 250 0', 100, 2); + org = W_MuzzleOrigin (self, '15 6 -8'); + SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3); } } // weapon frames -- 2.39.2