@@ -83,10 +83,7 @@ def __call__(self, data, replay):
8383 data .read (4 ).strip ('\00 ' )[::- 1 ]
8484 ]
8585
86- # Hack added for 24247 and higher in HotS
87- if info [2 ]!= 16 and self .offset :
88- info [2 ]= info [2 ]- 1
89-
86+ if info [2 ]!= 16 : info [2 ]-= 1 # Convert from 1-offset to 0-offset
9087 #print hex(info[1]), "P"+str(info[2]), info[3]
9188 attribute_events .append (Attribute (info ))
9289
@@ -97,8 +94,6 @@ class AttributesEventsReader_17326(AttributesEventsReader_Base):
9794 # The header length is increased from 4 to 5 bytes from patch 17326 and on.
9895 header_length = 5
9996
100- class AttributesEventsReader_24247 (AttributesEventsReader_17326 ):
101- offset = True
10297
10398class DetailsReader_Base (Reader ):
10499 Details = namedtuple ('Details' ,['players' ,'map' ,'unknown1' ,'unknown2' ,'os' ,'file_time' ,'utc_adjustment' ,'unknown4' ,'unknown5' ,'unknown6' ,'unknown7' ,'unknown8' ,'unknown9' ,'unknown10' ])
@@ -173,6 +168,8 @@ class DetailsReader_Beta(DetailsReader_Base):
173168 Details = namedtuple ('Details' ,['players' ,'map' ,'unknown1' ,'unknown2' ,'os' ,'file_time' ,'utc_adjustment' ,'unknown4' ,'unknown5' ,'unknown6' ,'unknown7' ,'unknown8' ,'unknown9' ,'unknown10' , 'unknown11' , 'unknown12' ])
174169
175170class MessageEventsReader_Base (Reader ):
171+ POFFSET = - 1
172+
176173 def __call__ (self , data , replay ):
177174 # The replay.message.events file is a single long list containing three
178175 # different element types (minimap pings, player messages, and some sort
@@ -186,6 +183,7 @@ def __call__(self, data, replay):
186183 # All the element types share the same time, pid, flags header.
187184 frame += data .read_timestamp ()
188185 pid = data .read_bits (5 )
186+ if pid != 16 : pid += self .POFFSET
189187 t = data .read_bits (3 )
190188 flags = data .read_byte ()
191189
@@ -208,13 +206,16 @@ def __call__(self, data, replay):
208206
209207 return AttributeDict (pings = pings , messages = messages , packets = packets )
210208
209+ class MessageEventsReader_Beta_24247 (MessageEventsReader_Base ):
210+ POFFSET = 0
211211
212212class GameEventsReader_Base (object ):
213213 PLAYER_JOIN_FLAGS = 4
214214 PLAYER_ABILITY_FLAGS = 17
215215 ABILITY_TEAM_FLAG = False
216216 UNIT_INDEX_BITS = 8
217217 HOTKEY_OVERLAY = 0
218+ POFFSET = - 1
218219
219220 def __call__ (self , data , replay ):
220221 EVENT_DISPATCH = {
@@ -249,6 +250,7 @@ def __call__(self, data, replay):
249250 while event_start != data_length :
250251 fstamp += read_timestamp ()
251252 pid = read_bits (5 )
253+ if pid != 16 : pid += self .POFFSET
252254 event_type = read_bits (7 )
253255
254256 # Check for a lookup
@@ -354,7 +356,7 @@ def player_hotkey_event(self, data, fstamp, pid, event_type):
354356 raise ParseError ("Hotkey Action '{0}' unknown" .format (hotkey ))
355357
356358 def player_send_resource_event (self , data , fstamp , pid , event_type ):
357- target = data .read_bits (4 )
359+ target = data .read_bits (4 )- 1 # Convert from 1-offset to 0-offset
358360 unknown = data .read_bits (4 ) #??
359361 minerals = data .read_bits (32 )
360362 vespene = data .read_bits (32 )
@@ -553,13 +555,4 @@ class GameEventsReader_Beta_23925(GameEventsReader_Beta):
553555 PLAYER_JOIN_FLAGS = 32
554556
555557class GameEventsReader_Beta_24247 (GameEventsReader_Beta_23925 ):
556- POFFSET = 1
557-
558- def player_send_resource_event (self , data , fstamp , pid , event_type ):
559- target = data .read_bits (4 )- 1
560- unknown = data .read_bits (4 ) #??
561- minerals = data .read_bits (32 )
562- vespene = data .read_bits (32 )
563- terrazine = data .read_bits (32 ) #??
564- custom = data .read_bits (32 ) #??
565- return SendResourceEvent (fstamp , pid , event_type , target , minerals , vespene , terrazine , custom )
558+ POFFSET = 0
0 commit comments