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
@@ -194,7 +194,7 @@ class Replay(Resource):
194194 resume_user_info = None
195195
196196
197- def __init__ (self , replay_file , filename = None , load_level = 4 , engine = sc2reader .engine , ** options ):
197+ def __init__ (self , replay_file , filename = None , load_level = 4 , engine = sc2reader .engine , do_tracker_events = True , ** options ):
198198 super (Replay , self ).__init__ (replay_file , filename , ** options )
199199 self .datapack = None
200200 self .raw_data = dict ()
@@ -289,13 +289,12 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en
289289 self .load_players ()
290290
291291 # Load tracker events if requested
292- if load_level >= 3 :
292+ if load_level >= 3 and do_tracker_events :
293293 self .load_level = 3
294294 for data_file in ['replay.tracker.events' ]:
295295 self ._read_data (data_file , self ._get_reader (data_file ))
296296 self .load_tracker_events ()
297297
298-
299298 # Load events if requested
300299 if load_level >= 4 :
301300 self .load_level = 4
@@ -305,6 +304,12 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en
305304
306305 # Run this replay through the engine as indicated
307306 if engine :
307+ resume_events = [ev for ev in self .game_events if ev .name == 'HijackReplayGameEvent' ]
308+ if self .base_build <= 26490 and self .tracker_events and len (resume_events ) > 0 :
309+ raise CorruptTrackerFileError (
310+ "Cannot run engine on resumed games with tracker events. Run again with the " +
311+ "do_tracker_events=False option to generate context without tracker events." )
312+
308313 engine .run (self )
309314
310315 def load_details (self ):
0 commit comments