From 97e94ea0a05686d60a6f5de8d369d040005b8eb1 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 9 Oct 2013 12:50:38 -0700 Subject: [PATCH] Remove arena gamemode --- gamemodes.cfg | 18 -- gfx/menu/luminos/gametype_arena.tga | Bin 27759 -> 0 bytes gfx/menu/wickedx/gametype_arena.tga | Bin 27759 -> 0 bytes gfx/menu/xaw/gametype_arena.tga | Bin 27326 -> 0 bytes qcsrc/client/hud.qc | 4 +- qcsrc/common/mapinfo.qc | 3 - qcsrc/common/mapinfo.qh | 3 - qcsrc/menu/xonotic/util.qc | 1 - qcsrc/server/autocvars.qh | 6 - qcsrc/server/bot/bot.qc | 2 +- qcsrc/server/command/cmd.qc | 3 +- qcsrc/server/command/vote.qc | 2 +- qcsrc/server/g_world.qc | 6 +- qcsrc/server/miscfunctions.qc | 2 +- qcsrc/server/mutators/gamemode_arena.qc | 288 ------------------------ qcsrc/server/mutators/gamemode_arena.qh | 2 - qcsrc/server/mutators/mutators.qh | 1 - qcsrc/server/progs.src | 2 - qcsrc/server/scores.qc | 4 +- qcsrc/server/spawnpoints.qc | 7 +- qcsrc/server/t_quake3.qc | 2 - qcsrc/server/teamplay.qc | 7 - 22 files changed, 10 insertions(+), 353 deletions(-) delete mode 100644 gfx/menu/luminos/gametype_arena.tga delete mode 100644 gfx/menu/wickedx/gametype_arena.tga delete mode 100644 gfx/menu/xaw/gametype_arena.tga delete mode 100644 qcsrc/server/mutators/gamemode_arena.qc delete mode 100644 qcsrc/server/mutators/gamemode_arena.qh diff --git a/gamemodes.cfg b/gamemodes.cfg index 665fa5584..feed7488b 100644 --- a/gamemodes.cfg +++ b/gamemodes.cfg @@ -27,7 +27,6 @@ alias cl_hook_gamestart_tdm alias cl_hook_gamestart_dom alias cl_hook_gamestart_ctf alias cl_hook_gamestart_lms -alias cl_hook_gamestart_arena alias cl_hook_gamestart_ca alias cl_hook_gamestart_kh alias cl_hook_gamestart_ons @@ -48,7 +47,6 @@ alias sv_hook_gamestart_tdm alias sv_hook_gamestart_dom alias sv_hook_gamestart_ctf alias sv_hook_gamestart_lms -alias sv_hook_gamestart_arena alias sv_hook_gamestart_ca alias sv_hook_gamestart_kh alias sv_hook_gamestart_ons @@ -73,8 +71,6 @@ seta fraglimit_override -1 "Frag limit overriding the mapinfo specified one (use seta leadlimit_override -1 "Lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)" seta capturelimit_override -1 "Capture limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)" seta captureleadlimit_override -1 "Capture llead imit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)" -seta g_arena_point_limit -1 "Arena point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)" -seta g_arena_point_leadlimit -1 "Arena point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)" seta g_domination_point_limit -1 "Domination point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)" seta g_domination_point_leadlimit -1 "Domination point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)" seta g_keyhunt_point_limit -1 "Keyhunt point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)" @@ -110,9 +106,6 @@ set g_ka_weapon_stay 0 set g_kh_respawn_delay 0 set g_kh_respawn_waves 0 set g_kh_weapon_stay 0 -set g_arena_respawn_delay 0 -set g_arena_respawn_waves 0 -set g_arena_weapon_stay 0 set g_ca_respawn_delay 0 set g_ca_respawn_waves 0 set g_ca_weapon_stay 0 @@ -136,16 +129,6 @@ set g_ft_respawn_delay 0 set g_ft_weapon_stay 0 -// ======= -// arena -// ======= -set g_arena 0 "Arena: many one-on-one rounds are played to find the winner" -set g_arena_maxspawned 2 "maximum number of players to spawn at once (the rest is spectating, waiting for their turn)" -set g_arena_roundbased 1 "if disabled, the next player will spawn as soon as someone dies" -set g_arena_round_timelimit 180 -set g_arena_warmup 5 "time, newly spawned players have to prepare themselves in round based matches" - - // ========= // assault // ========= @@ -166,7 +149,6 @@ seta g_ca_teams_override 0 set g_ca_teams 0 - // ================== // capture the flag // ================== diff --git a/gfx/menu/luminos/gametype_arena.tga b/gfx/menu/luminos/gametype_arena.tga deleted file mode 100644 index f49fa28ff938484647c6a5236d560c280161bd5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27759 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 M4mjxG{d=|eKMGR(cK`qY diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 398078ace..7489b3aa5 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -3704,9 +3704,7 @@ void HUD_InfoMessages(void) s = sprintf(_("^1Press ^3%s^1 for gamemode info"), getcommandkey("server info", "+show_info")); drawInfoMessage(s) - if(gametype == MAPINFO_TYPE_ARENA) - s = _("^1Wait for your turn to join"); - else if(gametype == MAPINFO_TYPE_LMS) + if(gametype == MAPINFO_TYPE_LMS) { entity sk; sk = playerslots[player_localnum]; diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 7949b4c22..171b66287 100644 --- a/qcsrc/common/mapinfo.qc +++ b/qcsrc/common/mapinfo.qc @@ -370,8 +370,6 @@ float _MapInfo_Generate(string pFilename) // 0: failure, 1: ok ent, 2: ok bsp MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_FREEZETAG; MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_CA; } - if( diameter < 4096) - MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_ARENA; if(spawnpoints >= 12 && diameter > 5120) MapInfo_Map_supportedGametypes |= MAPINFO_TYPE_KEYHUNT; } @@ -416,7 +414,6 @@ string _MapInfo_GetDefault(float t) case MAPINFO_TYPE_DOMINATION: return "200 20 0"; case MAPINFO_TYPE_CTF: return "300 20 10 0"; case MAPINFO_TYPE_LMS: return "9 20 0"; - case MAPINFO_TYPE_ARENA: return "10 20 0"; case MAPINFO_TYPE_CA: return "10 20 0"; case MAPINFO_TYPE_KEYHUNT: return "1000 20 3 0"; case MAPINFO_TYPE_ASSAULT: return "20 0"; diff --git a/qcsrc/common/mapinfo.qh b/qcsrc/common/mapinfo.qh index 40fea4fc2..eb93b8de8 100644 --- a/qcsrc/common/mapinfo.qh +++ b/qcsrc/common/mapinfo.qh @@ -39,9 +39,6 @@ REGISTER_GAMETYPE(_("Deathmatch"),dm,g_dm,DEATHMATCH,"timelimit=20 pointlimit=30 REGISTER_GAMETYPE(_("Last Man Standing"),lms,g_lms,LMS,"timelimit=20 lives=9 leadlimit=0"); #define g_lms IS_GAMETYPE(LMS) -REGISTER_GAMETYPE(_("Arena"),arena,g_arena,ARENA,"timelimit=20 pointlimit=10 leadlimit=0"); -#define g_arena IS_GAMETYPE(ARENA) - REGISTER_GAMETYPE(_("Race"),rc,g_race,RACE,"timelimit=20 qualifying_timelimit=5 laplimit=7 teamlaplimit=15 leadlimit=0"); #define g_race IS_GAMETYPE(RACE) diff --git a/qcsrc/menu/xonotic/util.qc b/qcsrc/menu/xonotic/util.qc index e5259cc8e..0021ec57b 100644 --- a/qcsrc/menu/xonotic/util.qc +++ b/qcsrc/menu/xonotic/util.qc @@ -595,7 +595,6 @@ float updateCompression() // note: include only those that should be in the menu! #define GAMETYPES \ - GAMETYPE(MAPINFO_TYPE_ARENA) \ GAMETYPE(MAPINFO_TYPE_ASSAULT) \ GAMETYPE(MAPINFO_TYPE_CTF) \ GAMETYPE(MAPINFO_TYPE_CA) \ diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 759aea6ad..065f93d5f 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -72,12 +72,6 @@ float autocvar_g_allow_oldnexbeam; float autocvar_g_antilag; float autocvar_g_antilag_bullets; float autocvar_g_antilag_nudge; -float autocvar_g_arena_maxspawned; -float autocvar_g_arena_point_leadlimit; -float autocvar_g_arena_point_limit; -float autocvar_g_arena_roundbased; -float autocvar_g_arena_round_timelimit; -float autocvar_g_arena_warmup; float autocvar_g_balance_armor_blockpercent; float autocvar_g_balance_armor_limit; float autocvar_g_balance_armor_regen; diff --git a/qcsrc/server/bot/bot.qc b/qcsrc/server/bot/bot.qc index 45c7af3b7..36fa2bf08 100644 --- a/qcsrc/server/bot/bot.qc +++ b/qcsrc/server/bot/bot.qc @@ -551,7 +551,7 @@ float bot_fixcount() FOR_EACH_REALCLIENT(head) { - if(IS_PLAYER(head) || g_lms || g_arena || head.caplayer == 1) + if(IS_PLAYER(head) || g_lms || head.caplayer == 1) ++activerealplayers; ++realplayers; } diff --git a/qcsrc/server/command/cmd.qc b/qcsrc/server/command/cmd.qc index 4850049e5..c70ffb43e 100644 --- a/qcsrc/server/command/cmd.qc +++ b/qcsrc/server/command/cmd.qc @@ -150,7 +150,7 @@ void ClientCommand_join(float request) { if(IS_CLIENT(self)) { - if(!IS_PLAYER(self) && !lockteams && !g_arena) + if(!IS_PLAYER(self) && !lockteams) { if(nJoinAllowed(self)) { @@ -394,7 +394,6 @@ void ClientCommand_spectate(float request) { if(IS_CLIENT(self)) { - if(g_arena) { return; } if(g_lms) { if(self.lms_spectate_warning) diff --git a/qcsrc/server/command/vote.qc b/qcsrc/server/command/vote.qc index bb90536cf..adb050718 100644 --- a/qcsrc/server/command/vote.qc +++ b/qcsrc/server/command/vote.qc @@ -463,7 +463,7 @@ void ReadyRestart_force() void ReadyRestart() { // no arena, assault support yet... - if(g_arena | g_assault | gameover | intermission_running | race_completing) + if(g_assault | gameover | intermission_running | race_completing) localcmd("restart\n"); else localcmd("\nsv_hook_gamerestart\n"); diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 68532192e..2ae8bf9e7 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -253,7 +253,6 @@ void cvar_changes_init() // mapinfo BADCVAR("fraglimit"); - BADCVAR("g_arena"); BADCVAR("g_assault"); BADCVAR("g_ca"); BADCVAR("g_ca_teams"); @@ -304,7 +303,6 @@ void cvar_changes_init() // does nothing visible BADCVAR("captureleadlimit_override"); - BADCVAR("g_arena_point_leadlimit"); BADCVAR("g_balance_kill_delay"); BADCVAR("g_ca_point_leadlimit"); BADCVAR("g_ctf_captimerecord_always"); @@ -1401,7 +1399,7 @@ void DumpStats(float final) { s = strcat(":player:see-labels:", GetPlayerScoreString(other, 0), ":"); s = strcat(s, ftos(rint(time - other.jointime)), ":"); - if(IS_PLAYER(other) || g_arena || other.caplayer == 1 || g_lms) + if(IS_PLAYER(other) || other.caplayer == 1 || g_lms) s = strcat(s, ftos(other.team), ":"); else s = strcat(s, "spectator:"); @@ -1855,7 +1853,7 @@ float WinningCondition_Scores(float limit, float leadlimit) if(WinningConditionHelper_zeroisworst) leadlimit = 0; // not supported in this mode - if(g_dm || g_tdm || g_arena || g_ca || (g_race && !g_race_qualifying) || g_nexball) + if(g_dm || g_tdm || g_ca || (g_race && !g_race_qualifying) || g_nexball) // these modes always score in increments of 1, thus this makes sense { if(leaderfrags != WinningConditionHelper_topscore) diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 0b5b42781..b4e9ad1f2 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -966,7 +966,7 @@ void readlevelcvars(void) g_warmup_allguns = cvar("g_warmup_allguns"); g_warmup_allow_timeout = cvar("g_warmup_allow_timeout"); - if ((g_race && g_race_qualifying == 2) || g_arena || g_assault || cvar("g_campaign")) + if ((g_race && g_race_qualifying == 2) || g_assault || cvar("g_campaign")) warmup_stage = 0; // these modes cannot work together, sorry g_pickup_respawntime_weapon = cvar("g_pickup_respawntime_weapon"); diff --git a/qcsrc/server/mutators/gamemode_arena.qc b/qcsrc/server/mutators/gamemode_arena.qc deleted file mode 100644 index bb6312ea1..000000000 --- a/qcsrc/server/mutators/gamemode_arena.qc +++ /dev/null @@ -1,288 +0,0 @@ -.float spawned; -float maxspawned; -float numspawned; -.entity spawnqueue_next; -.entity spawnqueue_prev; -.float spawnqueue_in; -entity spawnqueue_first; -entity spawnqueue_last; - -void Spawnqueue_Insert(entity e) -{ - if(e.spawnqueue_in) - return; - dprint(strcat("Into queue: ", e.netname, "\n")); - e.spawnqueue_in = TRUE; - e.spawnqueue_prev = spawnqueue_last; - e.spawnqueue_next = world; - if(spawnqueue_last) - spawnqueue_last.spawnqueue_next = e; - spawnqueue_last = e; - if(!spawnqueue_first) - spawnqueue_first = e; -} - -void Spawnqueue_Remove(entity e) -{ - if(!e.spawnqueue_in) - return; - dprint(strcat("Out of queue: ", e.netname, "\n")); - e.spawnqueue_in = FALSE; - if(e == spawnqueue_first) - spawnqueue_first = e.spawnqueue_next; - if(e == spawnqueue_last) - spawnqueue_last = e.spawnqueue_prev; - if(e.spawnqueue_prev) - e.spawnqueue_prev.spawnqueue_next = e.spawnqueue_next; - if(e.spawnqueue_next) - e.spawnqueue_next.spawnqueue_prev = e.spawnqueue_prev; - e.spawnqueue_next = world; - e.spawnqueue_prev = world; -} - -void Spawnqueue_Unmark(entity e) -{ - if(!e.spawned) - return; - e.spawned = FALSE; - numspawned = numspawned - 1; -} - -void Spawnqueue_Mark(entity e) -{ - if(e.spawned) - return; - e.spawned = TRUE; - numspawned = numspawned + 1; -} - -float Arena_CheckWinner() -{ - entity e; - - if(round_handler_GetEndTime() > 0 && round_handler_GetEndTime() - time <= 0) - { - Send_Notification(NOTIF_ALL, world, MSG_CENTER, CENTER_ROUND_OVER); - Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_ROUND_OVER); - round_handler_Init(5, autocvar_g_arena_warmup, autocvar_g_arena_round_timelimit); - return 1; - } - - if(numspawned > 1) - return 0; - - entity champion; - champion = world; - FOR_EACH_CLIENT(e) - { - if(e.spawned && IS_PLAYER(e)) - champion = e; - } - - if(champion) - { - Send_Notification(NOTIF_ALL, world, MSG_CENTER, CENTER_ROUND_PLAYER_WIN, champion.netname); - Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_ROUND_PLAYER_WIN, champion.netname); - UpdateFrags(champion, +1); - } - else - { - Send_Notification(NOTIF_ALL, world, MSG_CENTER, CENTER_ROUND_TIED); - Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_ROUND_TIED); - } - round_handler_Init(5, autocvar_g_arena_warmup, autocvar_g_arena_round_timelimit); - return 1; -} - -void Arena_AddChallengers() -{ - entity e; - if(time < 2) // don't force players to spawn so early - return; - e = self; - while(numspawned < maxspawned && spawnqueue_first) - { - self = spawnqueue_first; - - bprint ("^4", self.netname, "^4 is the next challenger\n"); - - Spawnqueue_Remove(self); - Spawnqueue_Mark(self); - - self.classname = "player"; - PutClientInServer(); - } - self = e; -} - -float prev_numspawned; -float Arena_CheckPlayers() -{ - Arena_AddChallengers(); - - if(numspawned >= 2) - { - if(prev_numspawned > 0) - Kill_Notification(NOTIF_ALL, world, MSG_CENTER_CPID, CPID_MISSING_PLAYERS); - prev_numspawned = -1; - return 1; - } - - if(prev_numspawned != numspawned && numspawned == 1) - { - if(maxspawned - numspawned > 0) - Send_Notification(NOTIF_ALL, world, MSG_CENTER, CENTER_MISSING_PLAYERS, maxspawned - numspawned); - prev_numspawned = numspawned; - } - - return 0; -} - -void Arena_RoundStart() -{ - entity e; - FOR_EACH_PLAYER(e) - e.player_blocked = 0; -} - -MUTATOR_HOOKFUNCTION(arena_ClientDisconnect) -{ - Spawnqueue_Unmark(self); - Spawnqueue_Remove(self); - return 1; -} - -MUTATOR_HOOKFUNCTION(arena_reset_map_players) -{ - FOR_EACH_CLIENT(self) - { - if(self.spawned) - { - PutClientInServer(); - self.player_blocked = 1; - } - else - PutObserverInServer(); - } - return 1; -} - -MUTATOR_HOOKFUNCTION(arena_MakePlayerObserver) -{ - if(self.version_mismatch) - { - self.frags = FRAGS_SPECTATOR; - Spawnqueue_Unmark(self); - Spawnqueue_Remove(self); - } - else - { - self.frags = FRAGS_LMS_LOSER; - Spawnqueue_Insert(self); - } - return 1; -} - -MUTATOR_HOOKFUNCTION(arena_PutClientInServer) -{ - if(!self.spawned) - self.classname = "observer"; - return 1; -} - -MUTATOR_HOOKFUNCTION(arena_ClientConnect) -{ - self.classname = "observer"; - Spawnqueue_Insert(self); - return 1; -} - -MUTATOR_HOOKFUNCTION(arena_PlayerSpawn) -{ - Spawnqueue_Remove(self); - Spawnqueue_Mark(self); - if(arena_roundbased) - self.player_blocked = 1; - return 1; -} - -MUTATOR_HOOKFUNCTION(arena_ForbidPlayerScore_Clear) -{ - return 1; -} - -MUTATOR_HOOKFUNCTION(arena_GiveFragsForKill) -{ - if(arena_roundbased) - frag_score = 0; // score will be given to the champion when the round ends - return 1; -} - -MUTATOR_HOOKFUNCTION(arena_PlayerDies) -{ - // put dead players in the spawn queue - if(arena_roundbased) - self.respawn_flags = (RESPAWN_FORCE | RESPAWN_SILENT); - else - self.respawn_flags = RESPAWN_SILENT; - Spawnqueue_Unmark(self); - return 1; -} - -MUTATOR_HOOKFUNCTION(arena_SV_StartFrame) -{ - if(gameover) return 1; - if(time <= game_starttime || !arena_roundbased) - Arena_AddChallengers(); - return 1; -} - -MUTATOR_HOOKFUNCTION(arena_FilterItem) -{ - if(autocvar_g_powerups <= 0) - if(self.flags & FL_POWERUP) - return TRUE; - - return FALSE; -} - -void arena_Initialize() -{ - maxspawned = max(2, autocvar_g_arena_maxspawned); - arena_roundbased = autocvar_g_arena_roundbased; - if(arena_roundbased) - { - round_handler_Spawn(Arena_CheckPlayers, Arena_CheckWinner, Arena_RoundStart); - round_handler_Init(5, autocvar_g_arena_warmup, autocvar_g_arena_round_timelimit); - } -} - -MUTATOR_DEFINITION(gamemode_arena) -{ - MUTATOR_HOOK(ClientDisconnect, arena_ClientDisconnect, CBC_ORDER_ANY); - MUTATOR_HOOK(reset_map_players, arena_reset_map_players, CBC_ORDER_ANY); - MUTATOR_HOOK(MakePlayerObserver, arena_MakePlayerObserver, CBC_ORDER_ANY); - MUTATOR_HOOK(PutClientInServer, arena_PutClientInServer, CBC_ORDER_ANY); - MUTATOR_HOOK(ClientConnect, arena_ClientConnect, CBC_ORDER_ANY); - MUTATOR_HOOK(PlayerSpawn, arena_PlayerSpawn, CBC_ORDER_ANY); - MUTATOR_HOOK(ForbidPlayerScore_Clear, arena_ForbidPlayerScore_Clear, CBC_ORDER_ANY); - MUTATOR_HOOK(GiveFragsForKill, arena_GiveFragsForKill, CBC_ORDER_ANY); - MUTATOR_HOOK(PlayerDies, arena_PlayerDies, CBC_ORDER_ANY); - MUTATOR_HOOK(SV_StartFrame, arena_SV_StartFrame, CBC_ORDER_ANY); - MUTATOR_HOOK(FilterItem, arena_FilterItem, CBC_ORDER_ANY); - - MUTATOR_ONADD - { - if(time > 1) // game loads at time 1 - error("This is a game type and it cannot be added at runtime."); - arena_Initialize(); - } - - MUTATOR_ONREMOVE - { - print("This is a game type and it cannot be removed at runtime."); - return -1; - } - - return 0; -} diff --git a/qcsrc/server/mutators/gamemode_arena.qh b/qcsrc/server/mutators/gamemode_arena.qh deleted file mode 100644 index a2f623a00..000000000 --- a/qcsrc/server/mutators/gamemode_arena.qh +++ /dev/null @@ -1,2 +0,0 @@ -// should be removed in the future, as other code should not have to care -float arena_roundbased; diff --git a/qcsrc/server/mutators/mutators.qh b/qcsrc/server/mutators/mutators.qh index e7a95de7e..3c17651a0 100644 --- a/qcsrc/server/mutators/mutators.qh +++ b/qcsrc/server/mutators/mutators.qh @@ -1,5 +1,4 @@ MUTATOR_DECLARATION(gamemode_assault); -MUTATOR_DECLARATION(gamemode_arena); MUTATOR_DECLARATION(gamemode_ca); MUTATOR_DECLARATION(gamemode_keyhunt); MUTATOR_DECLARATION(gamemode_freezetag); diff --git a/qcsrc/server/progs.src b/qcsrc/server/progs.src index e9e9a4b8c..c7b8533cb 100644 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@ -37,7 +37,6 @@ defs.qh // Should rename this, it has fields and globals mutators/base.qh mutators/mutators.qh mutators/gamemode_assault.qh -mutators/gamemode_arena.qh mutators/gamemode_ca.qh mutators/gamemode_ctf.qh mutators/gamemode_domination.qh @@ -228,7 +227,6 @@ round_handler.qc mutators/base.qc mutators/gamemode_assault.qc -mutators/gamemode_arena.qc mutators/gamemode_ca.qc mutators/gamemode_ctf.qc mutators/gamemode_domination.qc diff --git a/qcsrc/server/scores.qc b/qcsrc/server/scores.qc index 1537f6752..3ca296787 100644 --- a/qcsrc/server/scores.qc +++ b/qcsrc/server/scores.qc @@ -532,12 +532,12 @@ void WinningConditionHelper() s = strcat(s, ":human"); else s = strcat(s, ":bot"); - if(!IS_PLAYER(p) && !g_arena && p.caplayer != 1 && !g_lms) + if(!IS_PLAYER(p) && p.caplayer != 1 && !g_lms) s = strcat(s, ":spectator"); } else { - if(IS_PLAYER(p) || g_arena || p.caplayer == 1 || g_lms) + if(IS_PLAYER(p) || p.caplayer == 1 || g_lms) s = GetPlayerScoreString(p, 2); else s = "-666"; diff --git a/qcsrc/server/spawnpoints.qc b/qcsrc/server/spawnpoints.qc index 429bf8494..d78aee454 100644 --- a/qcsrc/server/spawnpoints.qc +++ b/qcsrc/server/spawnpoints.qc @@ -318,12 +318,7 @@ entity SelectSpawnPoint (float anypoint) } else { - float mindist; - if(g_arena && arena_roundbased) - mindist = 800; - else - mindist = 100; - firstspot = Spawn_FilterOutBadSpots(firstspot, mindist, teamcheck); + firstspot = Spawn_FilterOutBadSpots(firstspot, 100, teamcheck); // there is 50/50 chance of choosing a random spot or the furthest spot // (this means that roughly every other spawn will be furthest, so you diff --git a/qcsrc/server/t_quake3.qc b/qcsrc/server/t_quake3.qc index 7f8cb8292..12714e968 100644 --- a/qcsrc/server/t_quake3.qc +++ b/qcsrc/server/t_quake3.qc @@ -164,8 +164,6 @@ float DoesQ3ARemoveThisEntity() gametypename = "ffa"; if(teamplay) gametypename = "team"; - if(g_arena) - gametypename = "tournament"; if(g_ctf) gametypename = "ctf"; if(maxclients == 1) diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 81c877db9..60819d0ba 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -115,13 +115,6 @@ void InitGameplayMode() MUTATOR_ADD(gamemode_lms); } - if(g_arena) - { - fraglimit_override = autocvar_g_arena_point_limit; - leadlimit_override = autocvar_g_arena_point_leadlimit; - MUTATOR_ADD(gamemode_arena); - } - if(g_ca) { ActivateTeamplay(); -- 2.39.2