Skip to content

Commit 60ef2d5

Browse files
committed
feat: Add support for save version 66.3 in the fast parser
1 parent 7521ac3 commit 60ef2d5

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

mgz/fast/header.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@ def parse_lobby(data, version, save):
175175
data.read(8)
176176
if save >= 64.3:
177177
data.read(16)
178+
if save >= 66.3:
179+
data.read(1)
178180
data.read(8)
179181
if version not in (Version.DE, Version.HD):
180182
data.read(1)
@@ -280,7 +282,9 @@ def parse_scenario(data, num_players, version, save):
280282
map_id, difficulty_id = unpack('<II', data)
281283
remainder = data.read()
282284
if version is Version.DE:
283-
if save >= 64.3:
285+
if save >= 66.3:
286+
settings_version = 4.5
287+
elif save >= 64.3:
284288
settings_version = 4.1
285289
elif save >= 63:
286290
settings_version = 3.9
@@ -406,7 +410,7 @@ def parse_de(data, version, save, skip=False):
406410
if save > 50:
407411
data.read(1)
408412
players = []
409-
for _ in range(num_players if save >= 37 else 8):
413+
for _ in range(num_players if 66.3 > save >= 37 else 8):
410414
data.read(4)
411415
color_id = unpack('<i', data)
412416
data.read(2)
@@ -424,6 +428,8 @@ def parse_de(data, version, save, skip=False):
424428
data.read(1)
425429
ai_name = de_string(data)
426430
name = de_string(data)
431+
if save >= 66.3:
432+
_name2 = de_string(data)
427433
type = unpack('<I', data)
428434
profile_id, number = unpack('<I4xi', data)
429435
if save < 25.22:
@@ -448,7 +454,7 @@ def parse_de(data, version, save, skip=False):
448454
prefer_random=prefer_random == 1
449455
))
450456
data.read(12)
451-
if save >= 37:
457+
if 66.3 > save >= 37:
452458
for _ in range(8 - num_players):
453459
if save >= 61.5:
454460
data.read(4)
@@ -509,6 +515,8 @@ def parse_de(data, version, save, skip=False):
509515
data.read(1)
510516
if save >= 63:
511517
data.read(5)
518+
if save >= 66.3:
519+
data.read(16)
512520
if not skip:
513521
de_string(data)
514522
data.read(8)

mgz/header/objects.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@
132132
If(lambda ctx: find_save_version(ctx) >= 66.3, Bytes(4)),
133133
)
134134

135+
135136
animated = "animated"/Struct(
136137
Embedded(static),
137138
"turn_speed"/Float32l

0 commit comments

Comments
 (0)