Skip to content

Commit 5023314

Browse files
authored
Merge pull request #285 from coderwilson/coder_nem_4
Better defend command logic
2 parents b63fff2 + 20ba7b4 commit 5023314

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

Diff for: players/base.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class PlayerMagicNumbers(IntEnum):
2121
LUCK = 0x34
2222
ACCURACY = 0x36
2323
BATTLE_OVERDRIVE = 0x5BC
24+
DEFENDING = 0x617
2425
OVERDRIVE = 0x39
2526
AFFECTION_POINTER = 0x00D2CABC
2627
SLVL = 0x00D32097
@@ -218,7 +219,14 @@ def defend(self):
218219
logger.debug("Defending")
219220
# Update matches memory.main.turn_ready.
220221
# Updated 11/27/22, still to be validated.
221-
while memory.main.turn_ready():
222+
223+
# Make sure we are not already in defend state_berserk
224+
while self.is_defending():
225+
pass
226+
memory.main.wait_frames(1) # Buffer for safety
227+
228+
#Now tap to defending status.
229+
while not self.is_defending():
222230
xbox.tap_y()
223231

224232
def navigate_to_battle_menu(self, target: int):
@@ -348,6 +356,10 @@ def is_status_ok(self) -> bool:
348356

349357
def escaped(self) -> bool:
350358
return self._read_char_battle_state_address(PlayerMagicNumbers.ESCAPED)
359+
360+
def is_defending(self) -> bool:
361+
defend_byte = self._read_char_battle_state_address(offset=PlayerMagicNumbers.DEFENDING)
362+
return (defend_byte >> 3) == 1
351363

352364
def hp(self, combat=False) -> int:
353365
if not combat:

0 commit comments

Comments
 (0)