Skip to content

Commit ea6a7a1

Browse files
committed
hack to make HotS 3.0 / 38215 use the LotV datapack
so that mineral fields will be recognized, which we use for base placement logic adjust APM upward for 3.0 because people expect 1.4x their true APM.
1 parent 0c9b272 commit ea6a7a1

File tree

6 files changed

+20
-6
lines changed

6 files changed

+20
-6
lines changed

sc2reader/data/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,8 @@ def load_build(expansion, version):
401401
hots_builds = dict()
402402
for version in ('base', '23925', '24247', '24764'):
403403
hots_builds[version] = load_build('HotS', version)
404+
hots_builds['38215'] = load_build('LotV', 'base')
405+
hots_builds['38215'].id = '38215'
404406

405407
# Load LotV Data
406408
lotv_builds = dict()

sc2reader/engine/plugins/apm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ def handleInitGame(self, event, replay):
2424
human.seconds_played = replay.length.seconds
2525

2626
def handlePlayerActionEvent(self, event, replay):
27-
event.player.aps[event.second] += 1
28-
event.player.apm[int(event.second/60)] += 1
27+
event.player.aps[event.second] += 1.4
28+
event.player.apm[int(event.second/60)] += 1.4
2929

3030
def handlePlayerLeaveEvent(self, event, replay):
3131
event.player.seconds_played = event.second

sc2reader/factories/plugins/replay.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ def APMTracker(replay):
107107

108108
for event in player.events:
109109
if event.name == 'SelectionEvent' or 'AbilityEvent' in event.name or 'Hotkey' in event.name:
110-
player.aps[event.second] += 1
111-
player.apm[int(event.second/60)] += 1
110+
player.aps[event.second] += 1.4
111+
player.apm[int(event.second/60)] += 1.4
112112

113113
elif event.name == 'PlayerLeaveEvent':
114114
player.seconds_played = event.second

sc2reader/resources.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,8 @@ def register_default_datapacks(self):
585585
self.register_datapack(datapacks['HotS']['base'], lambda r: r.expansion == 'HotS' and r.build < 23925)
586586
self.register_datapack(datapacks['HotS']['23925'], lambda r: r.expansion == 'HotS' and 23925 <= r.build < 24247)
587587
self.register_datapack(datapacks['HotS']['24247'], lambda r: r.expansion == 'HotS' and 24247 <= r.build <= 24764)
588-
self.register_datapack(datapacks['HotS']['24764'], lambda r: r.expansion == 'HotS' and 24764 <= r.build)
588+
self.register_datapack(datapacks['HotS']['24764'], lambda r: r.expansion == 'HotS' and 24764 <= r.build < 38215)
589+
self.register_datapack(datapacks['HotS']['38215'], lambda r: r.expansion == 'HotS' and 38215 <= r.build)
589590
self.register_datapack(datapacks['LotV']['base'], lambda r: r.expansion == 'LotV' and 34784 <= r.build)
590591

591592
# Internal Methods
79.8 KB
Binary file not shown.

test_replays/test_all.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,18 @@ def test_30_map(self):
439439
factory = sc2reader.factories.SC2Factory()
440440
replay =factory.load_replay(replayfilename,load_level=1,load_map= True)
441441

442-
442+
def test_30_apms(self):
443+
from sc2reader.factories.plugins.replay import APMTracker, SelectionTracker, toJSON
444+
445+
factory = sc2reader.factories.SC2Factory()
446+
factory.register_plugin("Replay", APMTracker())
447+
replay = factory.load_replay("test_replays/3.0.0.38215/fourth.SC2Replay")
448+
for player in replay.players:
449+
if player.name == 'Owl':
450+
print player.name, player.avg_apm
451+
self.assertTrue(player.avg_apm > 110)
452+
453+
443454
class TestGameEngine(unittest.TestCase):
444455
class TestEvent(object):
445456
name='TestEvent'

0 commit comments

Comments
 (0)