From 0640b7e79fc5643c17e17d80200b8e844b402aed Mon Sep 17 00:00:00 2001 From: Jonathan Gravel Date: Thu, 9 Jun 2016 00:17:13 -0400 Subject: [PATCH 1/2] ZergMacroTracker: Look for UpdateTargetAbilityEvent to track injects as well Fixes ggtrackerstack/ggtracker#49 once sc2reader changes are pushed as well. --- sc2parse/plugins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sc2parse/plugins.py b/sc2parse/plugins.py index 9144350..703fa7c 100644 --- a/sc2parse/plugins.py +++ b/sc2parse/plugins.py @@ -1129,7 +1129,7 @@ def ZergMacroTracker(replay): for player in replay.players: player.hatches = dict() - efilter = lambda e: e.name == "TargetAbilityEvent" and hasattr(e, "ability") and e.ability_name == 'SpawnLarva' + efilter = lambda e: e.name.endswith("TargetAbilityEvent") and hasattr(e, "ability") and e.ability_name == "SpawnLarva" for event in filter(efilter, replay.events): owner = event.player target_hatch = event.target From aa61415946873ba205ee6b154cc8cdb6a1ad8805 Mon Sep 17 00:00:00 2001 From: Jonathan Gravel Date: Sat, 11 Jun 2016 19:13:01 -0400 Subject: [PATCH 2/2] ZergMacroTracker: Unit test --- sc2parse/testfiles/replay33.SC2Replay | Bin 0 -> 51388 bytes sc2parse/tests.py | 13 +++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 sc2parse/testfiles/replay33.SC2Replay diff --git a/sc2parse/testfiles/replay33.SC2Replay b/sc2parse/testfiles/replay33.SC2Replay new file mode 100644 index 0000000000000000000000000000000000000000..d64f445877c7428c243b9b065bf7775746f087f8 GIT binary patch literal 51388 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 Qq0olfyP9-DM6U1u0h*3j#Q*>R literal 0 HcmV?d00001 diff --git a/sc2parse/tests.py b/sc2parse/tests.py index 0f67332..eaf7cf8 100644 --- a/sc2parse/tests.py +++ b/sc2parse/tests.py @@ -552,6 +552,19 @@ def dont_test_creepspread_speed(self): after = datetime.now() print after - before + def test_zerg_macro_injects(self): + # FIXME: Not handling queued injects in LOTV (ggtrackerstack issue#50) + # Will need tests for expansions < LOTV as well + replay = self.get_parsed_replay(33) + + hatches = sorted(replay.players[1].hatches.itervalues()) + injects = [h.injects for h in hatches] + self.assertEqual(injects, [ + [3774, 4508, 5297, 6343, 7346, 8147, 9668], + [3811, 4518, 5307, 6352, 7355, 8155, 9678], + [], + ]) + class SC2ReaderToEsdbPKDependentTestCases(TransactionTestCase): reset_sequences = True