@@ -118,6 +118,7 @@ def __call__(self, data, replay):
118
118
tandem_leader_user_id = data .read_bits (4 ) if replay .base_build >= 34784 and data .read_bool () else None ,
119
119
commander = data .read_aligned_bytes (data .read_bits (9 )) if replay .base_build >= 34784 else None ,
120
120
commander_level = data .read_uint32 () if replay .base_build >= 36442 else None ,
121
+ has_silence_penalty = data .read_bool () if replay .base_build >= 38215 else None ,
121
122
) for i in range (data .read_bits (5 ))],
122
123
random_seed = data .read_uint32 (),
123
124
host_user_id = data .read_bits (4 ) if data .read_bool () else None ,
@@ -1723,6 +1724,50 @@ def control_group_update_event(self, data):
1723
1724
}[data .read_bits (2 )](),
1724
1725
)
1725
1726
1727
+ class GameEventsReader_38215 (GameEventsReader_36442 ):
1728
+
1729
+ def command_event (self , data ):
1730
+ # this function is exactly the same as command_event() from GameEventsReader_36442
1731
+ # with the only change being that flags now has 25 bits instead of 23.
1732
+ return dict (
1733
+ flags = data .read_bits (25 ),
1734
+ ability = dict (
1735
+ ability_link = data .read_uint16 (),
1736
+ ability_command_index = data .read_bits (5 ),
1737
+ ability_command_data = data .read_uint8 () if data .read_bool () else None ,
1738
+ ) if data .read_bool () else None ,
1739
+ data = { # Choice
1740
+ 0 : lambda : ('None' , None ),
1741
+ 1 : lambda : ('TargetPoint' , dict (
1742
+ point = dict (
1743
+ x = data .read_bits (20 ),
1744
+ y = data .read_bits (20 ),
1745
+ z = data .read_uint32 () - 2147483648 ,
1746
+ )
1747
+ )),
1748
+ 2 : lambda : ('TargetUnit' , dict (
1749
+ flags = data .read_uint16 (),
1750
+ timer = data .read_uint8 (),
1751
+ unit_tag = data .read_uint32 (),
1752
+ unit_link = data .read_uint16 (),
1753
+ control_player_id = data .read_bits (4 ) if data .read_bool () else None ,
1754
+ upkeep_player_id = data .read_bits (4 ) if data .read_bool () else None ,
1755
+ point = dict (
1756
+ x = data .read_bits (20 ),
1757
+ y = data .read_bits (20 ),
1758
+ z = data .read_uint32 () - 2147483648 ,
1759
+ ),
1760
+ )),
1761
+ 3 : lambda : ('Data' , dict (
1762
+ data = data .read_uint32 ()
1763
+ )),
1764
+ }[data .read_bits (2 )](),
1765
+ sequence = data .read_uint32 () + 1 ,
1766
+ other_unit_tag = data .read_uint32 () if data .read_bool () else None ,
1767
+ unit_group = data .read_uint32 () if data .read_bool () else None ,
1768
+ )
1769
+
1770
+
1726
1771
class TrackerEventsReader (object ):
1727
1772
1728
1773
def __init__ (self ):
0 commit comments