diff --git a/sc2reader/data/attributes.json b/sc2reader/data/attributes.json index e0d541bf..53563b8e 100644 --- a/sc2reader/data/attributes.json +++ b/sc2reader/data/attributes.json @@ -708,6 +708,7 @@ "Horn": "Horner", "Kara": "Karax", "Kerr": "Kerrigan", + "Meng": "Mengsk", "Nova": "Nova", "Rayn": "Raynor", "Stet": "Stetmann", diff --git a/sc2reader/readers.py b/sc2reader/readers.py index a61a5934..c7bac539 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -210,7 +210,13 @@ def __call__(self, data, replay): licenses=[ data.read_uint32() for i in range( - data.read_bits(13 if replay.base_build >= 70154 else 9) + data.read_bits( + 16 + if replay.base_build >= 77379 + else 13 + if replay.base_build >= 70154 + else 9 + ) ) ] if replay.base_build >= 19132 @@ -250,6 +256,20 @@ def __call__(self, data, replay): ] if replay.base_build >= 47185 else None, + brutal_plus_difficulty=data.read_uint32() + if replay.base_build >= 77379 + else None, + retry_mutation_indexes=[ + data.read_uint32() for i in range(data.read_bits(3)) + ] + if replay.base_build >= 77379 + else None, + ac_enemy_race=data.read_uint32() + if replay.base_build >= 77379 + else None, + ac_enemy_wave_type=data.read_uint32() + if replay.base_build >= 77379 + else None, ) for i in range(data.read_bits(5)) ], diff --git a/test_replays/4.11.0.77379/Oblivion Express.SC2Replay b/test_replays/4.11.0.77379/Oblivion Express.SC2Replay new file mode 100644 index 00000000..c1646f4d Binary files /dev/null and b/test_replays/4.11.0.77379/Oblivion Express.SC2Replay differ diff --git a/test_replays/test_replays.py b/test_replays/test_replays.py index 8d779eea..59500f69 100644 --- a/test_replays/test_replays.py +++ b/test_replays/test_replays.py @@ -701,6 +701,13 @@ def test_75689(self): replay = factory.load_replay(replayfilename) self.assertEqual(replay.players[0].trophy_id, 13) + def test_77379(self): + replay = sc2reader.load_replay( + "test_replays/4.11.0.77379/Oblivion Express.SC2Replay" + ) + self.assertEqual(replay.players[0].commander, "Mengsk") + self.assertEqual(replay.players[1].commander, "Stetmann") + def test_anonymous_replay(self): replayfilename = "test_replays/4.1.2.60604/1.SC2Replay" factory = sc2reader.factories.SC2Factory()