X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fteamplay.qc;h=900d4e99e3e8a0d01c64ae712fec3edaadc914dd;hp=0314104b1d3f353e9be1f235553a90f5cdc57617;hb=b85cb7338795fe08f22f5d833b44e74008eb9918;hpb=9bbaf653e6d235a7507c8ef15f644c081a0eb7e2 diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 0314104b1..900d4e99e 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -13,47 +13,6 @@ void TeamchangeFrags(entity e) PlayerScore_Clear(e); } -vector TeamColor(float teem) -{ - switch(teem) - { - case COLOR_TEAM1: - return '1 0.0625 0.0625'; - case COLOR_TEAM2: - return '0.0625 0.0625 1'; - case COLOR_TEAM3: - return '1 1 0.0625'; - case COLOR_TEAM4: - return '1 0.0625 1'; - default: - return '1 1 1'; - } -} - -string TeamName(float t) -{ - return strcat(Team_ColorName(t), " Team"); -} -string ColoredTeamName(float t) -{ - return strcat(Team_ColorCode(t), Team_ColorName(t), " Team^7"); -} -string TeamNoName(float t) -{ - // fixme: Search for team entities and get their .netname's! - if(t == 1) - return "Red Team"; - if(t == 2) - return "Blue Team"; - if(t == 3) - return "Yellow Team"; - if(t == 4) - return "Pink Team"; - return "Neutral Team"; -} - -void dom_init(); -void runematch_init(); void tdm_init(); void entcs_init(); @@ -134,7 +93,7 @@ void InitGameplayMode() ActivateTeamplay(); fraglimit_override = autocvar_g_domination_point_limit; leadlimit_override = autocvar_g_domination_point_leadlimit; - dom_init(); + MUTATOR_ADD(gamemode_domination); have_team_spawns = -1; // request team spawns } @@ -147,33 +106,20 @@ void InitGameplayMode() have_team_spawns = -1; // request team spawns } - if(g_runematch) - { - // ActivateTeamplay(); - fraglimit_override = autocvar_g_runematch_point_limit; - leadlimit_override = autocvar_g_runematch_point_leadlimit; - runematch_init(); - } - if(g_lms) { fraglimit_override = autocvar_g_lms_lives_override; leadlimit_override = 0; // not supported by LMS if(fraglimit_override == 0) fraglimit_override = -1; - lms_lowest_lives = 9999; - lms_next_place = 0; - ScoreRules_lms(); + MUTATOR_ADD(gamemode_lms); } if(g_arena) { fraglimit_override = autocvar_g_arena_point_limit; leadlimit_override = autocvar_g_arena_point_leadlimit; - maxspawned = autocvar_g_arena_maxspawned; - if(maxspawned < 2) - maxspawned = 2; - arena_roundbased = autocvar_g_arena_roundbased; + MUTATOR_ADD(gamemode_arena); } if(g_ca) @@ -181,16 +127,9 @@ void InitGameplayMode() ActivateTeamplay(); fraglimit_override = autocvar_g_ca_point_limit; leadlimit_override = autocvar_g_ca_point_leadlimit; - allowed_to_spawn = TRUE; - ca_teams = autocvar_g_ca_teams_override; - if(ca_teams < 2) - ca_teams = autocvar_g_ca_teams; - ca_teams = bound(2, ca_teams, 4); - addstat(STAT_REDALIVE, AS_INT, redalive_stat); - addstat(STAT_BLUEALIVE, AS_INT, bluealive_stat); - addstat(STAT_YELLOWALIVE, AS_INT, yellowalive_stat); - addstat(STAT_PINKALIVE, AS_INT, pinkalive_stat); + MUTATOR_ADD(gamemode_ca); } + if(g_keyhunt) { ActivateTeamplay(); @@ -210,7 +149,7 @@ void InitGameplayMode() if(g_assault) { ActivateTeamplay(); - ScoreRules_assault(); + MUTATOR_ADD(gamemode_assault); have_team_spawns = -1; // request team spawns } @@ -331,9 +270,7 @@ string getwelcomemessage(void) ret_string = ""; MUTATOR_CALLHOOK(BuildMutatorsPrettyString); modifications = ret_string; - - if(g_minstagib) - modifications = strcat(modifications, ", MinstaGib"); + if(g_weaponarena) { if(g_weaponarena_random) @@ -424,13 +361,13 @@ void SetPlayerTeam(entity pl, float t, float s, float noprint) float _color; if(t == 4) - _color = COLOR_TEAM4 - 1; + _color = NUM_TEAM_4 - 1; else if(t == 3) - _color = COLOR_TEAM3 - 1; + _color = NUM_TEAM_3 - 1; else if(t == 2) - _color = COLOR_TEAM2 - 1; + _color = NUM_TEAM_2 - 1; else - _color = COLOR_TEAM1 - 1; + _color = NUM_TEAM_1 - 1; SetPlayerColors(pl,_color); @@ -438,7 +375,7 @@ void SetPlayerTeam(entity pl, float t, float s, float noprint) LogTeamchange(pl.playerid, pl.team, 3); // log manual team join if(!noprint) - bprint(pl.netname, "^7 has changed from ", TeamNoName(s), " to ", TeamNoName(t), "\n"); + bprint(pl.netname, "^7 has changed from ", Team_NumberToColoredFullName(s), "^7 to ", Team_NumberToColoredFullName(t), "\n"); } } @@ -460,10 +397,10 @@ void CheckAllowedTeams (entity for_whom) head = findchain(classname, "onslaught_generator"); while (head) { - if (head.team == COLOR_TEAM1) c1 = 0; - if (head.team == COLOR_TEAM2) c2 = 0; - if (head.team == COLOR_TEAM3) c3 = 0; - if (head.team == COLOR_TEAM4) c4 = 0; + if (head.team == NUM_TEAM_1) c1 = 0; + if (head.team == NUM_TEAM_2) c2 = 0; + if (head.team == NUM_TEAM_3) c3 = 0; + if (head.team == NUM_TEAM_4) c4 = 0; head = head.chain; } } @@ -482,8 +419,6 @@ void CheckAllowedTeams (entity for_whom) // cover anything else by treating it like tdm with no teams spawned if(g_race) dm = race_teams; - else if(g_ca) - dm = ca_teams; else dm = 2; @@ -507,13 +442,13 @@ void CheckAllowedTeams (entity for_whom) { if(!(g_domination && head.netname == "")) { - if(head.team == COLOR_TEAM1) + if(head.team == NUM_TEAM_1) c1 = 0; - else if(head.team == COLOR_TEAM2) + else if(head.team == NUM_TEAM_2) c2 = 0; - else if(head.team == COLOR_TEAM3) + else if(head.team == NUM_TEAM_3) c3 = 0; - else if(head.team == COLOR_TEAM4) + else if(head.team == NUM_TEAM_4) c4 = 0; } head = find(head, classname, teament_name); @@ -543,13 +478,13 @@ void CheckAllowedTeams (entity for_whom) } // if player has a forced team, ONLY allow that one - if(self.team_forced == COLOR_TEAM1 && c1 >= 0) + if(self.team_forced == NUM_TEAM_1 && c1 >= 0) c2 = c3 = c4 = -1; - else if(self.team_forced == COLOR_TEAM2 && c2 >= 0) + else if(self.team_forced == NUM_TEAM_2 && c2 >= 0) c1 = c3 = c4 = -1; - else if(self.team_forced == COLOR_TEAM3 && c3 >= 0) + else if(self.team_forced == NUM_TEAM_3 && c3 >= 0) c1 = c2 = c4 = -1; - else if(self.team_forced == COLOR_TEAM4 && c4 >= 0) + else if(self.team_forced == NUM_TEAM_4 && c4 >= 0) c1 = c2 = c3 = -1; } @@ -586,7 +521,7 @@ void GetTeamCounts(entity ignore) bvalue = value; else bvalue = 0; - if(t == COLOR_TEAM1) + if(t == NUM_TEAM_1) { if(c1 >= 0) { @@ -594,7 +529,7 @@ void GetTeamCounts(entity ignore) cb1 = cb1 + bvalue; } } - if(t == COLOR_TEAM2) + if(t == NUM_TEAM_2) { if(c2 >= 0) { @@ -602,7 +537,7 @@ void GetTeamCounts(entity ignore) cb2 = cb2 + bvalue; } } - if(t == COLOR_TEAM3) + if(t == NUM_TEAM_3) { if(c3 >= 0) { @@ -610,7 +545,7 @@ void GetTeamCounts(entity ignore) cb3 = cb3 + bvalue; } } - if(t == COLOR_TEAM4) + if(t == NUM_TEAM_4) { if(c4 >= 0) { @@ -779,13 +714,13 @@ float JoinBestTeam(entity pl, float only_return_best, float forcebestteam) // if he's not on a valid team, then let other code put him on the smallest team if(!forcebestteam) { - if( c1 >= 0 && pl.team == COLOR_TEAM1) + if( c1 >= 0 && pl.team == NUM_TEAM_1) selectedteam = pl.team; - else if(c2 >= 0 && pl.team == COLOR_TEAM2) + else if(c2 >= 0 && pl.team == NUM_TEAM_2) selectedteam = pl.team; - else if(c3 >= 0 && pl.team == COLOR_TEAM3) + else if(c3 >= 0 && pl.team == NUM_TEAM_3) selectedteam = pl.team; - else if(c4 >= 0 && pl.team == COLOR_TEAM4) + else if(c4 >= 0 && pl.team == NUM_TEAM_4) selectedteam = pl.team; else selectedteam = -1; @@ -812,19 +747,19 @@ float JoinBestTeam(entity pl, float only_return_best, float forcebestteam) TeamchangeFrags(self); if(smallest == 1) { - SetPlayerColors(pl, COLOR_TEAM1 - 1); + SetPlayerColors(pl, NUM_TEAM_1 - 1); } else if(smallest == 2) { - SetPlayerColors(pl, COLOR_TEAM2 - 1); + SetPlayerColors(pl, NUM_TEAM_2 - 1); } else if(smallest == 3) { - SetPlayerColors(pl, COLOR_TEAM3 - 1); + SetPlayerColors(pl, NUM_TEAM_3 - 1); } else if(smallest == 4) { - SetPlayerColors(pl, COLOR_TEAM4 - 1); + SetPlayerColors(pl, NUM_TEAM_4 - 1); } else { @@ -854,21 +789,21 @@ void SV_ChangeTeam(float _color) scolor = self.clientcolors & 0x0F; dcolor = _color & 0x0F; - if(scolor == COLOR_TEAM1 - 1) + if(scolor == NUM_TEAM_1 - 1) steam = 1; - else if(scolor == COLOR_TEAM2 - 1) + else if(scolor == NUM_TEAM_2 - 1) steam = 2; - else if(scolor == COLOR_TEAM3 - 1) + else if(scolor == NUM_TEAM_3 - 1) steam = 3; - else // if(scolor == COLOR_TEAM4 - 1) + else // if(scolor == NUM_TEAM_4 - 1) steam = 4; - if(dcolor == COLOR_TEAM1 - 1) + if(dcolor == NUM_TEAM_1 - 1) dteam = 1; - else if(dcolor == COLOR_TEAM2 - 1) + else if(dcolor == NUM_TEAM_2 - 1) dteam = 2; - else if(dcolor == COLOR_TEAM3 - 1) + else if(dcolor == NUM_TEAM_3 - 1) dteam = 3; - else // if(dcolor == COLOR_TEAM4 - 1) + else // if(dcolor == NUM_TEAM_4 - 1) dteam = 4; CheckAllowedTeams(self); @@ -957,13 +892,13 @@ void ShufflePlayerOutOfTeam (float source_team) } if(source_team == 1) - steam = COLOR_TEAM1; + steam = NUM_TEAM_1; else if(source_team == 2) - steam = COLOR_TEAM2; + steam = NUM_TEAM_2; else if(source_team == 3) - steam = COLOR_TEAM3; + steam = NUM_TEAM_3; else // if(source_team == 4) - steam = COLOR_TEAM4; + steam = NUM_TEAM_4; lowest_bot = world; lowest_bot_score = 999999999; @@ -1058,7 +993,7 @@ void ShufflePlayerOutOfTeam (float source_team) if(selected.deadflag == DEAD_NO) Damage(selected, selected, selected, 100000, DEATH_AUTOTEAMCHANGE, selected.origin, '0 0 0'); - centerprint(selected, strcat("You have been moved into a different team to improve team balance\nYou are now on: ", ColoredTeamName(selected.team))); + centerprint(selected, strcat("You have been moved into a different team to improve team balance\nYou are now on: ", Team_ColoredFullName(selected.team))); } // code from here on is just to support maps that don't have team entities @@ -1082,12 +1017,12 @@ void tdm_spawnteams() numteams = autocvar_g_tdm_teams; numteams = bound(2, numteams, 4); - tdm_spawnteam("Red", COLOR_TEAM1-1); - tdm_spawnteam("Blue", COLOR_TEAM2-1); + tdm_spawnteam("Red", NUM_TEAM_1-1); + tdm_spawnteam("Blue", NUM_TEAM_2-1); if(numteams >= 3) - tdm_spawnteam("Yellow", COLOR_TEAM3-1); + tdm_spawnteam("Yellow", NUM_TEAM_3-1); if(numteams >= 4) - tdm_spawnteam("Pink", COLOR_TEAM4-1); + tdm_spawnteam("Pink", NUM_TEAM_4-1); } void tdm_delayedinit()