Skip to content

Commit 7946a05

Browse files
committed
Make sure that attribute pids match everywhere else.
HotS.24247+ switches to 0-indexing for pids instead of the 1-indexing that it had used in the past for everything except for the attribute.events file. This makes sure the numbers line up.
1 parent ef5d880 commit 7946a05

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

sc2reader/readers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def __call__(self, data, replay):
6262

6363
class AttributesEventsReader_Base(Reader):
6464
header_length = 4
65+
offset=False
6566

6667
def __call__(self, data, replay):
6768
# The replay.attribute.events file is comprised of a small header and
@@ -81,6 +82,11 @@ def __call__(self, data, replay):
8182
data.read_byte(),
8283
data.read(4).strip('\00 ')[::-1]
8384
]
85+
86+
# Hack added for 24247 and higher in HotS
87+
if info[2]!=16 and self.offset:
88+
info[2]= info[2]-1
89+
8490
#print hex(info[1]), "P"+str(info[2]), info[3]
8591
attribute_events.append(Attribute(info))
8692

@@ -91,6 +97,8 @@ class AttributesEventsReader_17326(AttributesEventsReader_Base):
9197
# The header length is increased from 4 to 5 bytes from patch 17326 and on.
9298
header_length = 5
9399

100+
class AttributesEventsReader_24247(AttributesEventsReader_17326):
101+
offset=True
94102

95103
class DetailsReader_Base(Reader):
96104
Details = namedtuple('Details',['players','map','unknown1','unknown2','os','file_time','utc_adjustment','unknown4','unknown5','unknown6','unknown7','unknown8','unknown9','unknown10'])

sc2reader/resources.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,7 @@ def register_default_readers(self):
555555
self.register_reader('replay.message.events', readers.MessageEventsReader_Base())
556556
self.register_reader('replay.attributes.events', readers.AttributesEventsReader_Base(), lambda r: r.build < 17326)
557557
self.register_reader('replay.attributes.events', readers.AttributesEventsReader_17326(), lambda r: r.build >= 17326)
558+
self.register_reader('replay.attributes.events', readers.AttributesEventsReader_24247(), lambda r: r.build >= 24247 and r.expansion=='HotS')
558559
self.register_reader('replay.game.events', readers.GameEventsReader_16117(), lambda r: 16117 <= r.build < 16561)
559560
self.register_reader('replay.game.events', readers.GameEventsReader_16561(), lambda r: 16561 <= r.build < 18574)
560561
self.register_reader('replay.game.events', readers.GameEventsReader_18574(), lambda r: 18574 <= r.build < 19595)

0 commit comments

Comments
 (0)