diff --git a/assets/src/ba_data/python/bastd/activity/coopscorescreen.py b/assets/src/ba_data/python/bastd/activity/coopscorescreen.py index c5564180..d97ad1e7 100644 --- a/assets/src/ba_data/python/bastd/activity/coopscorescreen.py +++ b/assets/src/ba_data/python/bastd/activity/coopscorescreen.py @@ -821,7 +821,8 @@ class CoopScoreScreen(ba.Activity): tdelay2 = times[i][1] Text(str(display_scores[i][0]) if self._score_type == 'points' else ba.timestring(display_scores[i][0] * 10, - timeformat=ba.TimeFormat.MILLISECONDS), + timeformat=ba.TimeFormat.MILLISECONDS, + suppress_format_warning=True), position=(ts_h_offs + 20 + h_offs_extra, v_offs_extra + ts_height / 2 + -ts_height * (i + 1) / 10 + v_offs + 11.0), diff --git a/assets/src/ba_data/python/bastd/game/race.py b/assets/src/ba_data/python/bastd/game/race.py index 2721db3b..a3ad59d5 100644 --- a/assets/src/ba_data/python/bastd/game/race.py +++ b/assets/src/ba_data/python/bastd/game/race.py @@ -285,9 +285,13 @@ class RaceGame(ba.TeamGameActivity): ba.playsound(self._score_sound) player.team.gamedata['finished'] = True assert self._timer is not None + _cur_time = ba.time( + timeformat=ba.TimeFormat.MILLISECONDS) + _start_time = self._timer.getstarttime( + timeformat=ba.TimeFormat.MILLISECONDS) self._last_team_time = ( - player.team.gamedata['time']) = ( - ba.time() - self._timer.getstarttime()) + player.team.gamedata['time']) = (_cur_time - + _start_time) self._check_end_game() # Team has yet to finish. @@ -545,7 +549,10 @@ class RaceGame(ba.TeamGameActivity): # Sort players by distance and update their ranks. p_list = [[player.gamedata['distance'], player] for player in self.players] + p_list.sort(reverse=True) + # FIXME - need another way to sort p_list. + # It tries to compare ba.Player objects. for i, plr in enumerate(p_list): try: plr[1].gamedata['rank'] = i @@ -700,14 +707,19 @@ class RaceGame(ba.TeamGameActivity): # final time differs from what they see onscreen by a tiny bit) assert self._timer is not None if self._timer.has_started(): + _cur_time = self._timer.getstarttime( + timeformat=ba.TimeFormat.MILLISECONDS) self._timer.stop( endtime=None if self._last_team_time is None else ( - self._timer.getstarttime() + self._last_team_time)) + _cur_time + self._last_team_time)) results = ba.TeamGameResults() for team in self.teams: - results.set_team_score(team, team.gamedata['time']) + if team.gamedata['time'] is not None: + results.set_team_score(team, team.gamedata['time']) + # If game have ended before we + # get any result, use 'fail' screen # We don't announce a winner in ffa mode since its probably been a # while since the first place guy crossed the finish line so it seems @@ -725,6 +737,6 @@ class RaceGame(ba.TeamGameActivity): ba.print_error('got no player in PlayerSpazDeathMessage') return if not player.gamedata['finished']: - self.respawn_player(player, respawn_time=1000) + self.respawn_player(player, respawn_time=1) else: super().handlemessage(msg)