X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fdomination.qc;h=a4cee747131100efe733169aa349c65b46defcd5;hb=e621c3ae269746abe26fdc553a0a8fb79954efc2;hp=281a0b4a4548df2f5583c43266be37cd6c619e36;hpb=032028bc6b28d76c43210256a5dadd0d3f71b4a1;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/domination.qc b/qcsrc/server/domination.qc index 281a0b4a4..a4cee7471 100644 --- a/qcsrc/server/domination.qc +++ b/qcsrc/server/domination.qc @@ -34,7 +34,6 @@ float pps_yellow; float pps_pink; void set_dom_state(entity e) { - // BIG ugly hack to make stat sending work e.dom_total_pps = total_pps; e.dom_pps_red = pps_red; e.dom_pps_blue = pps_blue; @@ -109,9 +108,9 @@ void dompoint_captured () if (head.noise != "") if(self.enemy) - sound(self.enemy, CHAN_AUTO, head.noise, VOL_BASE, ATTN_NORM); + sound(self.enemy, CH_TRIGGER, head.noise, VOL_BASE, ATTN_NORM); else - sound(self, CHAN_TRIGGER, head.noise, VOL_BASE, ATTN_NORM); + sound(self, CH_TRIGGER, head.noise, VOL_BASE, ATTN_NORM); if (head.noise1 != "") play2all(head.noise1); @@ -130,56 +129,55 @@ void dompoint_captured () self.delay = old_delay; self.team = old_team; - switch(self.team) - { - // "fix" pps when slightly under 0 because of approximation errors - case COLOR_TEAM1: - pps_red -= (points/wait_time); - if (pps_red < 0) pps_red = 0; - break; - case COLOR_TEAM2: - pps_blue -= (points/wait_time); - if (pps_blue < 0) pps_blue = 0; - break; - case COLOR_TEAM3: - pps_yellow -= (points/wait_time); - if (pps_yellow < 0) pps_yellow = 0; - break; - case COLOR_TEAM4: - pps_pink -= (points/wait_time); - if (pps_pink < 0) pps_pink = 0; - } - switch(self.goalentity.team) { - // "fix" pps when slightly over total_pps because of approximation errors case COLOR_TEAM1: - pps_red += (points/wait_time); - if (pps_red > total_pps) pps_red = total_pps; WaypointSprite_UpdateSprites(self.sprite, "dom-red", "", ""); break; case COLOR_TEAM2: - pps_blue += (points/wait_time); - if (pps_blue > total_pps) pps_blue = total_pps; WaypointSprite_UpdateSprites(self.sprite, "dom-blue", "", ""); break; case COLOR_TEAM3: - pps_yellow += (points/wait_time); - if (pps_yellow > total_pps) pps_yellow = total_pps; WaypointSprite_UpdateSprites(self.sprite, "dom-yellow", "", ""); break; case COLOR_TEAM4: - pps_pink += (points/wait_time); - if (pps_pink > total_pps) pps_pink = total_pps; WaypointSprite_UpdateSprites(self.sprite, "dom-pink", "", ""); } + total_pps = 0, pps_red = 0, pps_blue = 0, pps_yellow = 0, pps_pink = 0; + for(head = world; (head = find(head, classname, "dom_controlpoint")) != world; ) + { + if (autocvar_g_domination_point_amt) + points = autocvar_g_domination_point_amt; + else + points = head.frags; + if (autocvar_g_domination_point_rate) + wait_time = autocvar_g_domination_point_rate; + else + wait_time = head.wait; + switch(head.goalentity.team) + { + case COLOR_TEAM1: + pps_red += points/wait_time; + break; + case COLOR_TEAM2: + pps_blue += points/wait_time; + break; + case COLOR_TEAM3: + pps_yellow += points/wait_time; + break; + case COLOR_TEAM4: + pps_pink += points/wait_time; + } + total_pps += points/wait_time; + } + WaypointSprite_UpdateTeamRadar(self.sprite, RADARICON_DOMPOINT, colormapPaletteColor(self.goalentity.team - 1, 0)); WaypointSprite_Ping(self.sprite); self.captime = time; - FOR_EACH_PLAYER(head) + FOR_EACH_REALCLIENT(head) set_dom_state(head); }; @@ -366,12 +364,12 @@ void dom_controlpoint_setup() self.wait = 5; float points, waittime; - if (autocvar_g_domination_point_rate) - points = autocvar_g_domination_point_rate; + if (autocvar_g_domination_point_amt) + points = autocvar_g_domination_point_amt; else points = self.frags; - if (autocvar_g_domination_point_amt) - waittime = autocvar_g_domination_point_amt; + if (autocvar_g_domination_point_rate) + waittime = autocvar_g_domination_point_rate; else waittime = self.wait; @@ -392,8 +390,7 @@ void dom_controlpoint_setup() droptofloor(); waypoint_spawnforitem(self); - WaypointSprite_SpawnFixed("dom-neut", self.origin + '0 0 32', self, sprite); - WaypointSprite_UpdateTeamRadar(self.sprite, RADARICON_DOMPOINT, '0 1 1'); + WaypointSprite_SpawnFixed("dom-neut", self.origin + '0 0 32', self, sprite, RADARICON_DOMPOINT, '0 1 1'); };