From 04249a841a364899361ac061983143c5108717d8 Mon Sep 17 00:00:00 2001 From: kadaverjack Date: Tue, 13 Dec 2005 23:19:35 +0000 Subject: [PATCH] fixed bots (no more spectating bots at mapchange) and removed botskins/-names that are no longer available git-svn-id: svn://svn.icculus.org/nexuiz/trunk@662 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/menu/creategame/gamemodes/lms.menu | 5 -- data/menu/data/gamemodes/lms.menu | 7 -- data/qcsrc/gamec/cl_client.c | 22 ++++- data/qcsrc/gamec/ctf.c | 2 +- data/qcsrc/gamec/g_world.c | 11 ++- data/qcsrc/gamec/mauvebot.c | 113 ++++++------------------ data/qcsrc/gamec/teamplay.c | 6 +- data/qcsrc/progs.src | 6 +- 8 files changed, 63 insertions(+), 109 deletions(-) diff --git a/data/menu/creategame/gamemodes/lms.menu b/data/menu/creategame/gamemodes/lms.menu index 4a59e4743..cb4b93448 100755 --- a/data/menu/creategame/gamemodes/lms.menu +++ b/data/menu/creategame/gamemodes/lms.menu @@ -5,11 +5,6 @@ Item Layout LMS origin '600 50' alignment [AlignFirst] - Derive Nex_Option_Switch LMSMode - { - text "Last Man Standing" - target "::Data::Game::LMS::LMSMode::Switch" - } Derive Nex_Option_EditBox LMSStartingShells { text "Starting shells" diff --git a/data/menu/data/gamemodes/lms.menu b/data/menu/data/gamemodes/lms.menu index e8e059882..da7531497 100755 --- a/data/menu/data/gamemodes/lms.menu +++ b/data/menu/data/gamemodes/lms.menu @@ -4,13 +4,6 @@ Item DataContainer LMS { - Item Data_Cvar LMSMode - { - cvarName "g_lms" - defValue 0 - - [DataLink_OnOffSwitch] - } Item Data_Cvar LMSStartingShells { cvarName "g_lms_start_ammo_shells" diff --git a/data/qcsrc/gamec/cl_client.c b/data/qcsrc/gamec/cl_client.c index 91a2188d5..19dd7e385 100644 --- a/data/qcsrc/gamec/cl_client.c +++ b/data/qcsrc/gamec/cl_client.c @@ -229,6 +229,21 @@ Called when a client spawns in the server */ void PutClientInServer (void) { + if(clienttype(self) == CLIENTTYPE_BOT) + { + if(cvar("g_lms")) + { + if(self.frags < 0) + { + self.classname = "player"; + } + } + else + { + self.classname = "player"; + } + } + // player is dead and becomes observer if(cvar("g_lms") && self.frags < 1) self.classname = "observer"; @@ -540,7 +555,9 @@ void ClientConnect (void) self.frags = lms_lowest_lives; } } - player_count += 1; + + if(clienttype(self) != CLIENTTYPE_BOT) + player_count += 1; } /* @@ -563,7 +580,8 @@ void ClientDisconnect (void) } DropAllRunes(self); // decrease player count for lms - player_count -= 1; + if(clienttype(self) != CLIENTTYPE_BOT) + player_count -= 1; // player was dead, decrease dead count if(cvar("g_lms") && self.frags < 1) lms_dead_count -= 1; diff --git a/data/qcsrc/gamec/ctf.c b/data/qcsrc/gamec/ctf.c index 34e27042d..934d852a0 100644 --- a/data/qcsrc/gamec/ctf.c +++ b/data/qcsrc/gamec/ctf.c @@ -463,7 +463,7 @@ void() item_flag_team2 = self.team = 14; // color 13 team (blue) self.items = IT_KEY1; // silver key (bluish enough) - self.skin = 1; + self.skin = 0; if (!self.model) self.model = "models/ctf/flag_blue.md3"; if (!self.noise) diff --git a/data/qcsrc/gamec/g_world.c b/data/qcsrc/gamec/g_world.c index 95750c489..f79a473ee 100644 --- a/data/qcsrc/gamec/g_world.c +++ b/data/qcsrc/gamec/g_world.c @@ -240,6 +240,10 @@ void worldspawn (void) // 63 testing lightstyle(63, "a"); + player_count = 0; + lms_dead_count = 0; + lms_lowest_lives = 0; + InitGameplayMode(); //if (cvar("g_domination")) // dom_init(); @@ -563,6 +567,7 @@ void() NextLevel = */ other = find (other, classname, "player"); } + WriteByte (MSG_ALL, SVC_INTERMISSION); }; @@ -631,7 +636,7 @@ void() CheckRules_World = if (gameover) // someone else quit the game already return; - +bprint("==== ", ftos(bot_number), "\n"); timelimit = cvar("timelimit") * 60; fraglimit = cvar("fraglimit"); @@ -652,8 +657,8 @@ void() CheckRules_World = { // goto next map if only one player is alive or // if there is only one player as spectator (could happen with g_lms_join_anytime 1) - if((player_count > 1 && (player_count - lms_dead_count) <= 1) || - (player_count == 1 && lms_dead_count == 1)) + if(((player_count + bot_number) > 1 && ((player_count + bot_number) - lms_dead_count) <= 1) || + ((player_count + bot_number) == 1 && lms_dead_count == 1)) NextLevel (); return; } diff --git a/data/qcsrc/gamec/mauvebot.c b/data/qcsrc/gamec/mauvebot.c index a419c22b4..70b1953af 100644 --- a/data/qcsrc/gamec/mauvebot.c +++ b/data/qcsrc/gamec/mauvebot.c @@ -25,8 +25,8 @@ string(float r) BotName = if (r == 1) { self.playermodel = "models/player/visitant.zym"; - self.playerskin = "0"; - return "Visitant"; + self.playerskin = "1"; + return "Fricka"; } else if (r == 2) { @@ -83,102 +83,47 @@ string(float r) BotName = return "Insurrectionist"; } else if (r == 11) - { - self.playermodel = "models/player/jeandarc.zym"; - self.playerskin = "0"; - return "Jeandarc"; - } - else if (r == 12) { self.playermodel = "models/player/lycanthrope.zym"; self.playerskin = "0"; return "Lycanthrope"; } - else if (r == 13) + else if (r == 12) { self.playermodel = "models/player/pyria.zym"; self.playerskin = "0"; return "Pyria"; } - else if (r == 14) + else if (r == 13) { self.playermodel = "models/player/shock.zym"; self.playerskin = "0"; return "Shock"; } - else if (r == 15) - { - self.playermodel = "models/player/marine.zym"; - self.playerskin = "1"; - return "Private"; - } - else if (r == 16) - { - self.playermodel = "models/player/nexus.zym"; - self.playerskin = "1"; - return "Mulder"; - } - else if (r == 17) - { - self.playermodel = "models/player/skadi.zym"; - self.playerskin = "1"; - return "Elite"; - } - else if (r == 18) + else if (r == 14) { self.playermodel = "models/player/lurk.zym"; self.playerskin = "1"; return "Reptile"; } - else if (r == 19) - { - self.playermodel = "models/player/crash.zym"; - self.playerskin = "2"; - return "mechanical"; - } - else if (r == 20) + else if (r == 15) { self.playermodel = "models/player/crash.zym"; - self.playerskin = "1"; + self.playerskin = "0"; return "Quark"; } - else if (r == 21) + else if (r == 16) { self.playermodel = "models/player/insurrectionist.zym"; self.playerskin = "1"; return "Anarchist"; } - else if (r == 22) - { - self.playermodel = "models/player/jeandarc.zym"; - self.playerskin = "1"; - return "Heroine"; - } - else if (r == 23) - { - self.playermodel = "models/player/lycanthrope.zym"; - self.playerskin = "1"; - return "Wolf"; - } - else if (r == 24) - { - self.playermodel = "models/player/pyria.zym"; - self.playerskin = "1"; - return "Soldier"; - } - else if (r == 25) + else if (r == 17) { - self.playermodel = "models/player/shock.zym"; + self.playermodel = "models/player/carni.zym"; self.playerskin = "1"; - return "Rebel"; + return "Armored Carni"; } - else - { - self.playermodel = "models/player/crash.zym"; - self.playerskin = "0"; - return "Crash"; - } - }; string () PickARandomName = @@ -195,7 +140,7 @@ string () PickARandomName = t = find(t, classname, "player"); } - if (y > 25) + if (y > 17) { self.playermodel = "models/player/marine.zym"; self.playerskin = "0"; @@ -205,7 +150,7 @@ string () PickARandomName = y = TRUE; while(y) { - test = ceil(random() * 25); + test = ceil(random() * 17); h = BotName(test); t = find(world, netname, h); if (t == world) @@ -231,22 +176,21 @@ void() add_MauveBot = self = oldself; return; } - - flo = floor(random() * 5); - if (flo == 0) - self.clientcolors = 0; - else if (flo == 1) - self.clientcolors = 3; - else if (flo == 2) - self.clientcolors = 4; - else if (flo == 3) - self.clientcolors = 12; - else if (flo == 4) - self.clientcolors = 13; - self.clientcolors = self.clientcolors + self.clientcolors * 16; - self.netname = PickARandomName(); + if(teamplay) + { + // keep teams balanced + JoinBestTeam(self, 0); + } + else + { + // MORE COLORS!!!!! :P + flo = floor(random() * 15); + self.clientcolors = flo + flo * 16; + } + self.netname = PickARandomName(); + ClientConnect(); self.classname = "player"; PutClientInServer(); @@ -277,9 +221,8 @@ void() remove_MauveBot = if (flo == i) { dropclient(ent); - // decrease player count for lms - player_count -= 1; - // bot was dead, so decrease dead count too + + // bot was dead, so decrease dead count if(cvar("g_lms") && self.frags < 1) lms_dead_count -= 1; if (bot_number > 0) diff --git a/data/qcsrc/gamec/teamplay.c b/data/qcsrc/gamec/teamplay.c index 3bf020594..4619b9e19 100644 --- a/data/qcsrc/gamec/teamplay.c +++ b/data/qcsrc/gamec/teamplay.c @@ -1,6 +1,6 @@ float COLOR_TEAM1 = 5; // red float COLOR_TEAM2 = 14; // blue -float COLOR_TEAM3 = 10; // pink +float COLOR_TEAM3 = 10; // pink float COLOR_TEAM4 = 13; // yellow @@ -20,7 +20,7 @@ float cb1, cb2, cb3, cb4; float g_domination, g_ctf, g_tdm; -float audit_teams_time; +float audit_teams_time; string TeamName(float t) @@ -351,7 +351,7 @@ void SetPlayerTeam(entity pl, float t, float s, float noprint) } // kill player when changing teams - if(teams_matter && self.classname == "player" && self.deadflag == DEAD_NO) + if(teams_matter && self.classname == "player" && self.deadflag == DEAD_NO && (color + 1) != self.team) Damage(self, self, self, 100000, DEATH_KILL, self.origin, '0 0 0'); } diff --git a/data/qcsrc/progs.src b/data/qcsrc/progs.src index f1a698a02..7232ab9ac 100644 --- a/data/qcsrc/progs.src +++ b/data/qcsrc/progs.src @@ -9,19 +9,19 @@ gamec/extensions.h gamec/miscfunctions.c -gamec/mauvebot.c - gamec/g_subs.c gamec/runematch.c -gamec/cl_physics.c gamec/g_violence.c gamec/g_damage.c gamec/teamplay.c +gamec/mauvebot.c +gamec/cl_physics.c + gamec/g_world.c gamec/g_decors.c gamec/g_casings.c -- 2.39.2