]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Fix some issues found during playtesting
authorMario <mario.mario@y7mail.com>
Mon, 23 Dec 2013 07:13:46 +0000 (18:13 +1100)
committerMario <mario.mario@y7mail.com>
Mon, 23 Dec 2013 07:13:46 +0000 (18:13 +1100)
qcsrc/server/mutators/gamemode_domination.qc

index 73148840a9f315fb96412be07232208a55c36ecf..83d3a5e958c8ec6fca838097618d954330be14b5 100644 (file)
@@ -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);