1616from sc2reader import readers
1717from sc2reader import exceptions
1818from sc2reader .data import builds as datapacks
19- from sc2reader .exceptions import SC2ReaderLocalizationError
19+ from sc2reader .exceptions import SC2ReaderLocalizationError , CorruptTrackerFileError
2020from sc2reader .objects import Participant , Observer , Computer , Team , PlayerSummary , Graph , BuildEntry , MapInfo
2121from sc2reader .constants import REGIONS , GAME_SPEED_FACTOR , LOBBY_PROPERTIES
2222
@@ -184,7 +184,7 @@ class Replay(Resource):
184184 #: SC2 Expansion. One of 'WoL', 'HotS'
185185 expasion = str ()
186186
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 ):
188188 super (Replay , self ).__init__ (replay_file , filename , ** options )
189189 self .datapack = None
190190 self .raw_data = dict ()
@@ -279,13 +279,12 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en
279279 self .load_players ()
280280
281281 # Load tracker events if requested
282- if load_level >= 3 :
282+ if load_level >= 3 and do_tracker_events :
283283 self .load_level = 3
284284 for data_file in ['replay.tracker.events' ]:
285285 self ._read_data (data_file , self ._get_reader (data_file ))
286286 self .load_tracker_events ()
287287
288-
289288 # Load events if requested
290289 if load_level >= 4 :
291290 self .load_level = 4
@@ -295,6 +294,12 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en
295294
296295 # Run this replay through the engine as indicated
297296 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+
298303 engine .run (self )
299304
300305 def load_details (self ):
0 commit comments