From e8462895c145d27c5b560e7626ad3ce5c2690df1 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sat, 31 Jan 2026 22:25:47 -0500 Subject: [PATCH 1/4] Add move/outlaw symbols --- headers/functions/overlay29.h | 7 ++++ symbols/overlay29.yml | 63 +++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index dbe42416..7f19ce52 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -266,10 +266,13 @@ bool CheckSpawnThreshold(enum monster_id monster_id); bool HasLowHealth(struct entity* entity); bool AreEntitiesAdjacent(struct entity* first, struct entity* second); bool IsHero(struct entity* entity); +int16_t FindMoveOnMonster(struct entity* entity, enum move_id move_id); +bool DoesMonsterHaveMove(struct entity* entity, enum move_id move_id); bool IsSpecialStoryAllyOrClient(struct entity* entity); void ResetTriggerFlags(struct entity* entity); bool IsSpecialStoryAlly(struct monster* monster); bool IsExperienceLocked(struct monster* monster); +struct entity* FindMonsterWithBehavior(enum monster_behavior monster_behavior); bool IsMonsterLoneOutlaw(struct monster* monster); bool IsSecretBazaarNpc(struct entity* entity); bool IsTeamMemberOnFirstTurnInFixedRoom(struct monster* monster); @@ -646,6 +649,7 @@ struct move_target_and_range GetEntityMoveTargetAndRange(struct entity* entity, bool is_ai); struct natural_gift_item_info* GetEntityNaturalGiftInfo(struct entity* entity); enum type_id GetEntityWeatherBallType(struct entity* entity); +void UseMoveByMoveId(struct entity* entity, enum move_id move_id, bool add_move_if_not_exists); void ActivateMotorDrive(struct entity* entity); void TryActivateFrisk(struct entity* attacker, struct entity* defender); void TryActivateBadDreams(struct entity* entity); @@ -693,6 +697,8 @@ void TryAftermathExplosion(struct entity* user, struct entity* target, struct po void TryWarp(struct entity* user, struct entity* target, enum warp_type warp_type, struct position* position); void EnsureCanStandCurrentTile(struct entity* entity); +void UseMove(struct entity* entity, uint16_t move_index, undefined4 param_3, undefined4 param_4, + undefined4 param5); void TryActivateNondamagingDefenderAbility(struct entity* entity); void TryActivateNondamagingDefenderExclusiveItem(struct entity* attacker, struct entity* defender); int GetMoveRangeDistance(struct entity* user, struct move* move, bool check_two_turn_moves); @@ -957,6 +963,7 @@ bool GetTargetMonsterNotFoundFlag(void); bool FloorHasMissionMonster(struct mission_destination_info* mission_dst); struct mission* GetMissionIfActiveOnFloor(struct dungeon_floor_pair* pair, uint8_t mission_id); void GenerateMissionEggMonster(struct mission* mission); +void TeleportFleeingOutlaw(); void InitAlertBoxInfo(void); void FreeAlertBoxInfo(void); void SetMessageLogGroupStartFlag(bool should_start_group); diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 513a1d4b..47012b85 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -2919,6 +2919,28 @@ overlay29: r0: entity pointer return: bool + - name: FindMoveOnMonster + address: + EU: 0x22FC3DC + NA: 0x22FB9E0 + JP: 0x22FCEB4 + description: |- + Searches for a move in an entity's moveset by move ID, and returns the moveset index of the move if found. Returns -1 if the move is not found. + + r0: entity pointer + r1: move ID to search for + return: the moveset index of the move if found, or -1 if not found + - name: DoesMonsterHaveMove + address: + EU: 0x22FC450 + NA: 0x22FBA54 + JP: 0x22FCF28 + description: |- + Checks if an entity has a specific move (move ID) in their moveset. + + r0: entity pointer + r1: move ID to search for + return: true if the entity has the given move ID, or false otherwise - name: IsSpecialStoryAllyOrClient address: EU: 0x22FC46C @@ -2962,6 +2984,16 @@ overlay29: r0: monster pointer return: bool + - name: FindMonsterWithBehavior + address: + EU: 0x22FC5E8 + NA: 0x22FBBEC + JP: 0x22FD0B4 + description: |- + Searches the dungeon for a monster with a certain monster behavior, and returns the first matching entity. + + r0: monster behavior to search for + return: the first entity in the dungeon with the given monster behavior, or null if not found - name: IsMonsterLoneOutlaw address: EU: 0x22FC7DC @@ -6362,6 +6394,18 @@ overlay29: r0: entity pointer return: type ID + - name: UseMoveByMoveId + address: + EU: 0x231B984 + NA: 0x231AF24 + JP: 0x231C3F4 + description: |- + Makes the entity use a specific move by its move ID. If the entity doesn't have the specified move and add_move_if_not_exists is true, + overwrites the first move in the entity's moveset with the specified move. + + r0: entity pointer + r1: move ID + r2: if true and the entity doesn't have the specified move, the entity's first move is overwritten with the specified move - name: ActivateMotorDrive address: EU: 0x231BAC0 @@ -6837,6 +6881,19 @@ overlay29: will be warped to the leader. Otherwise, the monster is warped randomly. r0: Entity pointer + - name: UseMove + address: + EU: 0x2321EC4 + NA: 0x232145C + JP: 0x2322908 + description: |- + Makes the given entity use a move at the given index in the entity's moveset. + + r0: Entity pointer + r1: Moveset index + r2: ? + r3: ? + stack[0]: ? - name: TryActivateNondamagingDefenderAbility address: EU: 0x23224E0 @@ -9405,6 +9462,12 @@ overlay29: Note: unverified, ported from Irdkwia's notes r0: mission struct + - name: TeleportFleeingOutlaw + address: + EU: 0x234BAA4 + NA: 0x234AEA4 + JP: 0x234C114 + description: "If there is a fleeing outlaw on the floor with the move Teleport, makes that outlaw use Teleport." - name: InitAlertBoxInfo address: EU: 0x234BBA4 From 1eee0ad0ad9e72d59a6e37417d2bcd5206972271 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sat, 31 Jan 2026 22:43:22 -0500 Subject: [PATCH 2/4] Rename IsMonsterCornered to CanMonsterMoveOrSwapWithAllyInAnyDirection --- headers/functions/overlay29.h | 2 +- symbols/overlay29.yml | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 7f19ce52..74667693 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -334,7 +334,7 @@ bool CanMonsterMoveInDirection(struct entity* monster, enum direction_id directi enum mobility_type GetDirectionalMobilityType(struct entity* monster, enum mobility_type base_mobility, enum direction_id direction); -bool IsMonsterCornered(struct entity* monster); +bool CanMonsterMoveOrSwapWithAllyInAnyDirection(struct entity* monster); bool CanMonsterMoveOrSwapWithAllyInDirection(struct entity* monster, enum direction_id direction); bool CanAttackInDirection(struct entity* monster, enum direction_id direction); bool CanAiMonsterMoveInDirection(struct entity* monster, enum direction_id direction, diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 47012b85..ebe70070 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -3609,16 +3609,18 @@ overlay29: r1: Base mobility type r2: Direction of mobility return: Final mobility type - - name: IsMonsterCornered + - name: CanMonsterMoveOrSwapWithAllyInAnyDirection + aliases: + - IsMonsterCornered address: EU: 0x2301B44 NA: 0x2301118 JP: 0x230251C description: |- - True if the given monster is cornered (it can't move in any direction) + True if the given monster can move in any direction. r0: Entity pointer - return: True if the monster can't move in any direction, false otherwise. + return: True if the monster can move in any direction, false otherwise. - name: CanMonsterMoveOrSwapWithAllyInDirection address: EU: 0x2301B84 From a6595f5959957b4c664f30c311f3fd84ccf636cb Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Tue, 3 Feb 2026 13:05:43 -0500 Subject: [PATCH 3/4] Add void args --- headers/functions/overlay29.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 74667693..ba97e7ce 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -963,7 +963,7 @@ bool GetTargetMonsterNotFoundFlag(void); bool FloorHasMissionMonster(struct mission_destination_info* mission_dst); struct mission* GetMissionIfActiveOnFloor(struct dungeon_floor_pair* pair, uint8_t mission_id); void GenerateMissionEggMonster(struct mission* mission); -void TeleportFleeingOutlaw(); +void TeleportFleeingOutlaw(void); void InitAlertBoxInfo(void); void FreeAlertBoxInfo(void); void SetMessageLogGroupStartFlag(bool should_start_group); From de18f0187e3cab7105e0f1241377cff95a669579 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Tue, 3 Feb 2026 20:09:21 -0500 Subject: [PATCH 4/4] Add no params indicator --- symbols/overlay29.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index ebe70070..e8628e16 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -9469,7 +9469,10 @@ overlay29: EU: 0x234BAA4 NA: 0x234AEA4 JP: 0x234C114 - description: "If there is a fleeing outlaw on the floor with the move Teleport, makes that outlaw use Teleport." + description: |- + If there is a fleeing outlaw on the floor with the move Teleport, makes that outlaw use Teleport. + + No params. - name: InitAlertBoxInfo address: EU: 0x234BBA4