Skip to content

Commit 604e629

Browse files
committed
Fix LotV apm by squeezing events into rescaled game minutes.
1 parent 80ea580 commit 604e629

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

sc2reader/factories/plugins/replay.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,21 +100,30 @@ def APMTracker(replay):
100100
above actions divided by the number of seconds played by the player (not
101101
necessarily the whole game) multiplied by 60.
102102
"""
103+
104+
speed_multiplier = 1
105+
if replay.expansion == 'LotV':
106+
speed_multiplier = 1.4
107+
108+
game_seconds_per_second = 1.4
109+
if replay.expansion == 'LotV':
110+
game_seconds_per_second = 1.4
111+
103112
for player in replay.players:
104113
player.aps = defaultdict(int)
105114
player.apm = defaultdict(int)
106115
player.seconds_played = replay.length.seconds
107116

108117
for event in player.events:
109118
if event.name == 'SelectionEvent' or 'AbilityEvent' in event.name or 'Hotkey' in event.name:
110-
player.aps[event.second] += 1.4
111-
player.apm[int(event.second/60)] += 1.4
119+
player.aps[event.second/speed_multiplier] += game_seconds_per_second
120+
player.apm[int(event.second/60/speed_multiplier)] += game_seconds_per_second
112121

113122
elif event.name == 'PlayerLeaveEvent':
114-
player.seconds_played = event.second
123+
player.seconds_played = event.second/speed_multiplier
115124

116125
if len(player.apm) > 0:
117-
player.avg_apm = sum(player.aps.values())/float(player.seconds_played)*60
126+
player.avg_apm = sum(player.aps.values())/float(player.seconds_played)*60*speed_multiplier
118127
else:
119128
player.avg_apm = 0
120129

0 commit comments

Comments
 (0)