X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fmutator%2Fgamemode_ca.qh;h=0982fcca8fb35e34fd71152cc81815b0282f6b7a;hp=5aba748fd5348207e81b7dacdbde39288fbde814;hb=ad968484aff56d9765a62a9428b99b6e0a508ac5;hpb=26693a3ac060825ce6c7f170d4e65f7ac2a1fb25 diff --git a/qcsrc/server/mutators/mutator/gamemode_ca.qh b/qcsrc/server/mutators/mutator/gamemode_ca.qh index 5aba748fd..0982fcca8 100644 --- a/qcsrc/server/mutators/mutator/gamemode_ca.qh +++ b/qcsrc/server/mutators/mutator/gamemode_ca.qh @@ -21,52 +21,30 @@ bool CA_CheckWinner(); void CA_RoundStart(); bool ca_isEliminated(entity e); -void SetLimits(int fraglimit_override, int leadlimit_override, float timelimit_override, float qualifying_override); - REGISTER_MUTATOR(ca, false) { + MUTATOR_STATIC(); MUTATOR_ONADD { - // game loads at time 1 - if (time > 1) error("This is a game type and it cannot be added at runtime."); - - allowed_to_spawn = true; + GameRules_teams(true); + GameRules_spawning_teams(autocvar_g_ca_team_spawns); + GameRules_limit_score(autocvar_g_ca_point_limit); + GameRules_limit_lead(autocvar_g_ca_point_leadlimit); ca_teams = autocvar_g_ca_teams_override; if (ca_teams < 2) ca_teams = cvar("g_ca_teams"); // read the cvar directly as it gets written earlier in the same frame - ca_teams = bound(2, ca_teams, 4); - - int teams = 0; - if(ca_teams >= 1) teams |= BIT(0); - if(ca_teams >= 2) teams |= BIT(1); - if(ca_teams >= 3) teams |= BIT(2); - if(ca_teams >= 4) teams |= BIT(3); - ca_teams = teams; // now set it? - - ScoreRules_basics(teams, SFL_SORT_PRIO_PRIMARY, 0, true); - ScoreInfo_SetLabel_TeamScore(ST_CA_ROUNDS, "rounds", SFL_SORT_PRIO_PRIMARY); - ScoreRules_basics_end(); + ca_teams = BITS(bound(2, ca_teams, 4)); + GameRules_scoring(ca_teams, SFL_SORT_PRIO_PRIMARY, 0, { + field_team(ST_CA_ROUNDS, "rounds", SFL_SORT_PRIO_PRIMARY); + }); + allowed_to_spawn = true; round_handler_Spawn(CA_CheckTeams, CA_CheckWinner, CA_RoundStart); round_handler_Init(5, autocvar_g_ca_warmup, autocvar_g_ca_round_timelimit); - EliminatedPlayers_Init(ca_isEliminated); - - ActivateTeamplay(); - SetLimits(autocvar_g_ca_point_limit, autocvar_g_ca_point_leadlimit, autocvar_timelimit_override, -1); - - if (autocvar_g_ca_team_spawns) - have_team_spawns = -1; // request team spawns - } - - MUTATOR_ONREMOVE - { - LOG_INFO("This is a game type and it cannot be removed at runtime."); - return -1; } - return 0; }