summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pokemontools/vba/battle.py7
-rw-r--r--pokemontools/vba/vba.py17
2 files changed, 24 insertions, 0 deletions
diff --git a/pokemontools/vba/battle.py b/pokemontools/vba/battle.py
index 87cd7b1..17c0d5d 100644
--- a/pokemontools/vba/battle.py
+++ b/pokemontools/vba/battle.py
@@ -55,6 +55,13 @@ class Battle(EmulatorController):
"""
return self.is_fight_pack_run_menu()
+ def is_switch_prompt(self):
+ """
+ Detects if the battle is waiting for the player to choose whether or
+ not to switch pokemon.
+ """
+ return self.emulator.is_battle_switch_prompt()
+
def is_mandatory_switch(self):
"""
Detects if the battle is waiting for the player to choose a next
diff --git a/pokemontools/vba/vba.py b/pokemontools/vba/vba.py
index 47cadd7..79eb77e 100644
--- a/pokemontools/vba/vba.py
+++ b/pokemontools/vba/vba.py
@@ -599,6 +599,23 @@ class crystal(object):
def is_in_link_battle(self):
return self.vba.read_memory_at(0xc2dc) != 0
+ def is_battle_switch_prompt(self):
+ """
+ Checks if the game is currently displaying the yes/no prompt for
+ whether or not to switch pokemon.
+ """
+ # get on-screen text
+ text = self.get_text()
+
+ requirements = [
+ "YES",
+ "NO",
+ "Will ",
+ "change POKMON?",
+ ]
+
+ return all([requirement in text for requirement in requirements])
+
def unlock_flypoints(self):
"""
Unlocks different destinations for flying.