diff --git a/mgz/model/__init__.py b/mgz/model/__init__.py index 70093ec..34cbc57 100644 --- a/mgz/model/__init__.py +++ b/mgz/model/__init__.py @@ -183,7 +183,7 @@ def parse_match(handle): if player['team_id'] > 1: by_team[player['team_id']].append(number) elif player['team_id'] == 1: - by_team[number].append(number) + by_team[number + 9].append(number) team_ids = by_team.values() else: team_ids = set([frozenset(s) for s in allies.values()]) @@ -327,8 +327,8 @@ def parse_match(handle): data['save_version'], data['log_version'], data['de']['build'] if data['version'] is Version.DE else None, - datetime.fromtimestamp(data['de']['timestamp']) if data['de']['timestamp'] else None, - timedelta(seconds=data['de']['spec_delay']), + datetime.fromtimestamp(data['de']['timestamp']) if data['version'] is Version.DE and data['de']['timestamp'] else None, + timedelta(seconds=data['de']['spec_delay']) if data['version'] is Version.DE else None, get_hash(data), actions, inputs.inputs diff --git a/mgz/summary/__init__.py b/mgz/summary/__init__.py index 3203e94..5e811b4 100644 --- a/mgz/summary/__init__.py +++ b/mgz/summary/__init__.py @@ -3,16 +3,22 @@ from mgz.model.compat import ModelSummary from mgz.util import Version import logging +import zlib logger = logging.getLogger(__name__) class SummaryStub: def __call__(self, data, playback=None, fallback=False): - header = decompress(data) - version, game, save, log = parse_version(header, data) - data.seek(0) - if version is Version.DE and save > 13.34 and not fallback: + try: + header = decompress(data) + version, game, save, log = parse_version(header, data) + data.seek(0) + supported = (version is Version.DE and save > 13.34) # or version is Version.USERPATCH15 + print(supported, fallback, supported and not fallback) + except zlib.error: + supported = False + if supported and not fallback: logger.info("using model summary") try: return ModelSummary(data, playback) diff --git a/mgz/summary/teams.py b/mgz/summary/teams.py index 688cac4..71a2467 100644 --- a/mgz/summary/teams.py +++ b/mgz/summary/teams.py @@ -12,7 +12,7 @@ def get_teams_data(header): if player.resolved_team_id > 1: by_team[player.resolved_team_id].append(id + 1) elif player.resolved_team_id == 1: - by_team[id].append(id + 1) + by_team[id + 9].append(id + 1) return set([frozenset(s) for s in by_team.values()]) allies = {} for number, player in enumerate(header.initial.players[1:]): diff --git a/tests/test_model.py b/tests/test_model.py index b333c35..49ff2c2 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -22,7 +22,7 @@ def test_players(self): players = self.match.players self.assertEqual(len(players), 2) self.assertEqual(players[0].name, '[Heresy]LaaaaaN') - self.assertEqual(players[0].number, 2) + self.assertEqual(players[0].number, 1) self.assertEqual(players[0].color, 'Red') self.assertEqual(players[0].civilization, 'Malians') self.assertFalse(players[0].winner)