16
16
from sc2reader import readers
17
17
from sc2reader import exceptions
18
18
from sc2reader .data import builds as datapacks
19
- from sc2reader .exceptions import SC2ReaderLocalizationError
19
+ from sc2reader .exceptions import SC2ReaderLocalizationError , CorruptTrackerFileError
20
20
from sc2reader .objects import Participant , Observer , Computer , Team , PlayerSummary , Graph , BuildEntry , MapInfo
21
21
from sc2reader .constants import REGIONS , GAME_SPEED_FACTOR , LOBBY_PROPERTIES
22
22
@@ -184,7 +184,7 @@ class Replay(Resource):
184
184
#: SC2 Expansion. One of 'WoL', 'HotS'
185
185
expasion = str ()
186
186
187
- def __init__ (self , replay_file , filename = None , load_level = 4 , engine = sc2reader .engine , ** options ):
187
+ def __init__ (self , replay_file , filename = None , load_level = 4 , engine = sc2reader .engine , do_tracker_events = True , ** options ):
188
188
super (Replay , self ).__init__ (replay_file , filename , ** options )
189
189
self .datapack = None
190
190
self .raw_data = dict ()
@@ -279,13 +279,12 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en
279
279
self .load_players ()
280
280
281
281
# Load tracker events if requested
282
- if load_level >= 3 :
282
+ if load_level >= 3 and do_tracker_events :
283
283
self .load_level = 3
284
284
for data_file in ['replay.tracker.events' ]:
285
285
self ._read_data (data_file , self ._get_reader (data_file ))
286
286
self .load_tracker_events ()
287
287
288
-
289
288
# Load events if requested
290
289
if load_level >= 4 :
291
290
self .load_level = 4
@@ -295,6 +294,12 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en
295
294
296
295
# Run this replay through the engine as indicated
297
296
if engine :
297
+ resume_events = [ev for ev in self .game_events if ev .name == 'HijackReplayGameEvent' ]
298
+ if self .base_build <= 26490 and self .tracker_events and len (resume_events ) > 0 :
299
+ raise CorruptTrackerFileError (
300
+ "Cannot run engine on resumed games with tracker events. Run again with the " +
301
+ "do_tracker_events=False option to generate context without tracker events." )
302
+
298
303
engine .run (self )
299
304
300
305
def load_details (self ):
0 commit comments