From 9c40db978d54c9efb67d718e4e9ad49da7e304cd Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 23 Dec 2013 18:13:46 +1100 Subject: [PATCH] Fix some issues found during playtesting --- qcsrc/server/mutators/gamemode_domination.qc | 30 +++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/qcsrc/server/mutators/gamemode_domination.qc b/qcsrc/server/mutators/gamemode_domination.qc index 73148840a..83d3a5e95 100644 --- a/qcsrc/server/mutators/gamemode_domination.qc +++ b/qcsrc/server/mutators/gamemode_domination.qc @@ -396,12 +396,21 @@ void havocbot_role_dom() } } +MUTATOR_HOOKFUNCTION(dom_GetTeamCount) +{ + ret_float = domination_teams; + return 0; +} + MUTATOR_HOOKFUNCTION(dom_ResetMap) { + total_pps = 0, pps_red = 0, pps_blue = 0, pps_yellow = 0, pps_pink = 0; FOR_EACH_PLAYER(self) { PutClientInServer(); self.player_blocked = 1; + if(IS_REAL_CLIENT(self)) + set_dom_state(self); } return 1; } @@ -517,7 +526,6 @@ void ScoreRules_dom() sp_domticks = SFL_SORT_PRIO_PRIMARY; else sp_score = SFL_SORT_PRIO_PRIMARY; - CheckAllowedTeams(world); ScoreRules_basics(domination_teams, sp_score, sp_score, TRUE); ScoreInfo_SetLabel_TeamScore (ST_DOM_TICKS, "ticks", sp_domticks); ScoreInfo_SetLabel_PlayerScore(SP_DOM_TICKS, "ticks", sp_domticks); @@ -581,6 +589,16 @@ void dom_spawnteams() void dom_DelayedInit() // Do this check with a delay so we can wait for teams to be set up. { + CheckAllowedTeams(world); + domination_teams = ((autocvar_g_domination_teams_override < 2) ? autocvar_g_domination_default_teams : autocvar_g_domination_teams_override); + domination_teams = ((c4>=0) ? 4 : (c3>=0) ? 3 : 2); + + addstat(STAT_DOM_TOTAL_PPS, AS_FLOAT, dom_total_pps); + addstat(STAT_DOM_PPS_RED, AS_FLOAT, dom_pps_red); + addstat(STAT_DOM_PPS_BLUE, AS_FLOAT, dom_pps_blue); + if(domination_teams >= 3) addstat(STAT_DOM_PPS_YELLOW, AS_FLOAT, dom_pps_yellow); + if(domination_teams >= 4) addstat(STAT_DOM_PPS_PINK, AS_FLOAT, dom_pps_pink); + // if no teams are found, spawn defaults if(find(world, classname, "dom_team") == world || autocvar_g_domination_teams_override >= 2) { @@ -608,21 +626,13 @@ void dom_Initialize() precache_model("models/domination/dom_unclaimed.md3"); precache_sound("domination/claim.wav"); - domination_teams = ((autocvar_g_domination_teams_override < 2) ? autocvar_g_domination_default_teams : autocvar_g_domination_teams_override); - domination_teams = ((c4>=0) ? 4 : (c3>=0) ? 3 : 2); - - addstat(STAT_DOM_TOTAL_PPS, AS_FLOAT, dom_total_pps); - addstat(STAT_DOM_PPS_RED, AS_FLOAT, dom_pps_red); - addstat(STAT_DOM_PPS_BLUE, AS_FLOAT, dom_pps_blue); - if(domination_teams >= 3) addstat(STAT_DOM_PPS_YELLOW, AS_FLOAT, dom_pps_yellow); - if(domination_teams >= 4) addstat(STAT_DOM_PPS_PINK, AS_FLOAT, dom_pps_pink); - InitializeEntity(world, dom_DelayedInit, INITPRIO_GAMETYPE); } MUTATOR_DEFINITION(gamemode_domination) { + MUTATOR_HOOK(GetTeamCount, dom_GetTeamCount, CBC_ORDER_ANY); MUTATOR_HOOK(reset_map_players, dom_ResetMap, CBC_ORDER_ANY); MUTATOR_HOOK(PlayerSpawn, dom_PlayerSpawn, CBC_ORDER_ANY); MUTATOR_HOOK(ClientConnect, dom_ClientConnect, CBC_ORDER_ANY); -- 2.39.2