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
@@ -194,7 +194,7 @@ class Replay(Resource):
194
194
resume_user_info = None
195
195
196
196
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 ):
198
198
super (Replay , self ).__init__ (replay_file , filename , ** options )
199
199
self .datapack = None
200
200
self .raw_data = dict ()
@@ -289,13 +289,12 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en
289
289
self .load_players ()
290
290
291
291
# Load tracker events if requested
292
- if load_level >= 3 :
292
+ if load_level >= 3 and do_tracker_events :
293
293
self .load_level = 3
294
294
for data_file in ['replay.tracker.events' ]:
295
295
self ._read_data (data_file , self ._get_reader (data_file ))
296
296
self .load_tracker_events ()
297
297
298
-
299
298
# Load events if requested
300
299
if load_level >= 4 :
301
300
self .load_level = 4
@@ -305,6 +304,12 @@ def __init__(self, replay_file, filename=None, load_level=4, engine=sc2reader.en
305
304
306
305
# Run this replay through the engine as indicated
307
306
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
+
308
313
engine .run (self )
309
314
310
315
def load_details (self ):
0 commit comments