From dc86161a2cdc8dfdb5eb699a1602b5136199f498 Mon Sep 17 00:00:00 2001 From: caymansimpson Date: Thu, 14 Nov 2024 21:34:26 -0800 Subject: [PATCH 1/2] Added correct handling for pledge moves --- src/poke_env/environment/abstract_battle.py | 2 + unit_tests/environment/test_double_battle.py | 40 ++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/poke_env/environment/abstract_battle.py b/src/poke_env/environment/abstract_battle.py index 6dd86fb9b..563bc5280 100644 --- a/src/poke_env/environment/abstract_battle.py +++ b/src/poke_env/environment/abstract_battle.py @@ -443,6 +443,8 @@ def parse_message(self, split_message: List[str]): reveal_other_move = True elif override_move in {"Copycat", "Metronome", "Nature Power"}: pass + elif override_move in {"Grass Pledge", "Water Pledge", "Fire Pledge"}: + override_move = None elif self.logger is not None: self.logger.warning( "Unmanaged [from]move message received - move %s in cleaned up " diff --git a/unit_tests/environment/test_double_battle.py b/unit_tests/environment/test_double_battle.py index 9b9372980..6a7a35806 100644 --- a/unit_tests/environment/test_double_battle.py +++ b/unit_tests/environment/test_double_battle.py @@ -307,3 +307,43 @@ def test_gen_and_format(example_doubles_logs): assert battle.gen == 6 assert battle.battle_tag == "tag" assert battle.format == "gen6doublesou" + + +def test_pledge_moves(): + battle = DoubleBattle("tag", "username", MagicMock(), gen=8) + battle.player_role = "p2" + + events = [ + ["", "switch", "p1a: Indeedee", "Indeedee-F, L50, F", "100/100"], + ["", "switch", "p1b: Hatterene", "Hatterene, L50, F", "100/100"], + ["", "switch", "p2a: Primarina", "Primarina, L50, F, shiny", "169/169"], + ["", "switch", "p2b: Decidueye", "Decidueye-Hisui, L50, F, shiny", "171/171"], + ["", ""], + ["", "-terastallize", "p2a: Primarina", "Poison"], + ["", "-terastallize", "p1a: Indeedee", "Grass"], + ["", "move", "p2b: Decidueye", "Grass Pledge", "p1a: Indeedee"], + ["", "-waiting", "p2b: Decidueye", "p2a: Primarina"], + [ + "", + "move", + "p2a: Primarina", + "Water Pledge", + "p1b: Hatterene", + "[from]move: Grass Pledge", + ], + ["", "-combine"], + ["", "-damage", "p1b: Hatterene", "0 fnt"], + ["", "-sidestart", "p1: cloverspsyspamsep", "Grass Pledge"], + ["", "faint", "p1b: Hatterene"], + ["", "-damage", "p2a: Primarina", "153/169", "[from] item: Life Orb"], + ["", "move", "p1a: Indeedee", "Psychic", "p1: Hatterene", "[notarget]"], + ["", "-fail", "p1a: Indeedee"], + ["", ""], + ["", "upkeep"], + ] + + for event in events: + battle.parse_message(event) + + assert "grasspledge" not in battle.team["p2: Primarina"].moves + assert "waterpledge" in battle.team["p2: Primarina"].moves From 9f3487b84c612bff60cf232a982b2532bb203485 Mon Sep 17 00:00:00 2001 From: caymansimpson Date: Sun, 17 Nov 2024 13:52:44 -0800 Subject: [PATCH 2/2] Addressing Haris's feedback and clarifying tests --- unit_tests/environment/test_double_battle.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/unit_tests/environment/test_double_battle.py b/unit_tests/environment/test_double_battle.py index 6a7a35806..883e65286 100644 --- a/unit_tests/environment/test_double_battle.py +++ b/unit_tests/environment/test_double_battle.py @@ -319,8 +319,6 @@ def test_pledge_moves(): ["", "switch", "p2a: Primarina", "Primarina, L50, F, shiny", "169/169"], ["", "switch", "p2b: Decidueye", "Decidueye-Hisui, L50, F, shiny", "171/171"], ["", ""], - ["", "-terastallize", "p2a: Primarina", "Poison"], - ["", "-terastallize", "p1a: Indeedee", "Grass"], ["", "move", "p2b: Decidueye", "Grass Pledge", "p1a: Indeedee"], ["", "-waiting", "p2b: Decidueye", "p2a: Primarina"], [ @@ -334,12 +332,6 @@ def test_pledge_moves(): ["", "-combine"], ["", "-damage", "p1b: Hatterene", "0 fnt"], ["", "-sidestart", "p1: cloverspsyspamsep", "Grass Pledge"], - ["", "faint", "p1b: Hatterene"], - ["", "-damage", "p2a: Primarina", "153/169", "[from] item: Life Orb"], - ["", "move", "p1a: Indeedee", "Psychic", "p1: Hatterene", "[notarget]"], - ["", "-fail", "p1a: Indeedee"], - ["", ""], - ["", "upkeep"], ] for event in events: