diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index dd846634..3c0950af 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -151,7 +151,7 @@ def handleSelectionEvent(self, event, replay): def handleResourceTradeEvent(self, event, replay): event.sender = event.player - event.recipient = replay.players[event.recipient_id] + event.recipient = replay.player[event.recipient_id] def handleHijackReplayGameEvent(self, event, replay): replay.resume_from_replay = True diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index 02a054dd..65eacc7e 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -650,14 +650,18 @@ def __init__(self, frame, pid, data): self.vespene = self.resources[1] if len(self.resources) >= 2 else None #: Amount terrazine sent - self.terrazon = self.resources[2] if len(self.resources) >= 3 else None + self.terrazine = self.resources[2] if len(self.resources) >= 3 else None #: Amount custom resource sent self.custom_resource = self.resources[3] if len(self.resources) >= 4 else None def __str__(self): return self._str_prefix() + " transfer {0} minerals, {1} gas, {2} terrazine, and {3} custom to {4}".format( - self.minerals, self.vespene, self.terrazine, self.custom, self.recipient + self.minerals, + self.vespene, + self.terrazine, + self.custom_resource, + self.recipient, ) @@ -688,7 +692,7 @@ def __str__(self): return ( self._str_prefix() + " requests {0} minerals, {1} gas, {2} terrazine, and {3} custom".format( - self.minerals, self.vespene, self.terrazine, self.custom + self.minerals, self.vespene, self.terrazine, self.custom_resource ) ) diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 97e18074..496f66e5 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -421,7 +421,7 @@ def __init__(self): 28: (SelectionEvent, self.selection_delta_event), 29: (create_control_group_event, self.control_group_update_event), 30: (None, self.selection_sync_check_event), - 31: (None, self.resource_trade_event), + 31: (ResourceTradeEvent, self.resource_trade_event), 32: (None, self.trigger_chat_message_event), 33: (None, self.ai_communicate_event), 34: (None, self.set_absolute_game_speed_event), diff --git a/test_replays/test_replays.py b/test_replays/test_replays.py index 2d0693ee..5e162327 100644 --- a/test_replays/test_replays.py +++ b/test_replays/test_replays.py @@ -305,6 +305,15 @@ def test_send_resources(self): replay = sc2reader.load_replay( "test_replays/2.0.4.24944/Backwater Complex (15).SC2Replay" ) + trade_events = [ + event for event in replay.events if event.name == "ResourceTradeEvent" + ] + self.assertEqual(len(trade_events), 5) + self.assertEqual(trade_events[0].sender.name, "Guardian") + self.assertEqual(trade_events[0].recipient.name, "Sturmkind") + self.assertEqual(trade_events[0].recipient_id, 2) + self.assertEqual(trade_events[0].minerals, 0) + self.assertEqual(trade_events[0].vespene, 750) def test_cn_replays(self): replay = sc2reader.load_replay("test_replays/2.0.5.25092/cn1.SC2Replay")