Merge branch 'master' into clone-union

This commit is contained in:
GriffinR
2022-02-22 18:42:20 -05:00
committed by GitHub
29 changed files with 851 additions and 813 deletions
+25 -13
View File
@@ -14,10 +14,10 @@
create_movement face_up_fast create_movement face_up_fast
create_movement face_left_fast create_movement face_left_fast
create_movement face_right_fast create_movement face_right_fast
create_movement walk_slowest_down create_movement walk_slower_down
create_movement walk_slowest_up create_movement walk_slower_up
create_movement walk_slowest_left create_movement walk_slower_left
create_movement walk_slowest_right create_movement walk_slower_right
create_movement walk_slow_down create_movement walk_slow_down
create_movement walk_slow_up create_movement walk_slow_up
create_movement walk_slow_left create_movement walk_slow_left
@@ -55,10 +55,10 @@
create_movement walk_in_place_fastest_up create_movement walk_in_place_fastest_up
create_movement walk_in_place_fastest_left create_movement walk_in_place_fastest_left
create_movement walk_in_place_fastest_right create_movement walk_in_place_fastest_right
create_movement face_down_slow create_movement ride_water_current_down
create_movement face_up_slow create_movement ride_water_current_up
create_movement face_left_slow create_movement ride_water_current_lefft
create_movement face_right_slow create_movement ride_water_current_right
create_movement walk_fastest_down create_movement walk_fastest_down
create_movement walk_fastest_up create_movement walk_fastest_up
create_movement walk_fastest_left create_movement walk_fastest_left
@@ -113,12 +113,24 @@
create_movement rock_smash_break create_movement rock_smash_break
create_movement cut_tree create_movement cut_tree
enum_start 0x91 enum_start 0x94
create_movement step_91 create_movement spin_down
create_movement step_92 create_movement spin_up
create_movement spin_left
create_movement spin_right
enum_start 0x96 enum_start 0x9b
create_movement step_96 create_movement walk_slowest_down
create_movement walk_slowest_up
create_movement walk_slowest_left
create_movement walk_slowest_right
create_movement shake_head
enum_start 0xa6
create_movement jump_special_with_effect_down
create_movement jump_special_with_effect_up
create_movement jump_special_with_effect_left
create_movement jump_special_with_effect_right
enum_start 0xfe enum_start 0xfe
create_movement step_end create_movement step_end
+7 -7
View File
@@ -115,11 +115,11 @@ BirthIsland_Exterior_EventScript_RanFromDeoxys:: @ 8165348
end end
Movement_DeoxysApproach: @ 8165353 Movement_DeoxysApproach: @ 8165353
walk_slowest_down walk_slower_down
walk_slowest_down walk_slower_down
walk_slowest_down walk_slower_down
walk_slowest_down walk_slower_down
walk_slowest_down walk_slower_down
walk_slowest_down walk_slower_down
walk_slowest_down walk_slower_down
step_end step_end
+2 -2
View File
@@ -251,8 +251,8 @@ CinnabarIsland_Movement_BoatArrive:: @ 8167195
walk_fast_left walk_fast_left
walk_fast_left walk_fast_left
walk_left walk_left
walk_slowest_left walk_slower_left
walk_slowest_left walk_slower_left
step_end step_end
CinnabarIsland_Movement_BillBoardBoat:: @ 816719D CinnabarIsland_Movement_BillBoardBoat:: @ 816719D
@@ -170,7 +170,7 @@ FourIsland_PokemonDayCare_Movement_RetrieveMon:: @ 8171B71
delay_16 delay_16
delay_16 delay_16
face_up face_up
walk_slowest_up walk_slower_up
set_invisible set_invisible
delay_16 delay_16
delay_16 delay_16
@@ -179,7 +179,7 @@ FourIsland_PokemonDayCare_Movement_RetrieveMon:: @ 8171B71
delay_16 delay_16
face_down face_down
set_visible set_visible
walk_slowest_down walk_slower_down
step_end step_end
@ Unused. Possibly a commented script, or a typo end added to the above Movement script @ Unused. Possibly a commented script, or a typo end added to the above Movement script
+1 -1
View File
@@ -51,7 +51,7 @@
"x": 36, "x": 36,
"y": 15, "y": 15,
"elevation": 3, "elevation": 3,
"movement_type": "MOVEMENT_TYPE_WANDER_AROUND_SLOWEST", "movement_type": "MOVEMENT_TYPE_WANDER_AROUND_SLOWER",
"movement_range_x": 4, "movement_range_x": 4,
"movement_range_y": 1, "movement_range_y": 1,
"trainer_type": "TRAINER_TYPE_NONE", "trainer_type": "TRAINER_TYPE_NONE",
+2 -2
View File
@@ -24,7 +24,7 @@
"movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
"movement_range_x": 0, "movement_range_x": 0,
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "66", "trainer_type": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_1",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder", "script": "EventScript_StrengthBoulder",
"flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_1" "flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_1"
@@ -38,7 +38,7 @@
"movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
"movement_range_x": 0, "movement_range_x": 0,
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "67", "trainer_type": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_2",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder", "script": "EventScript_StrengthBoulder",
"flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_2" "flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_2"
+2 -2
View File
@@ -24,7 +24,7 @@
"movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
"movement_range_x": 0, "movement_range_x": 0,
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "68", "trainer_type": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_1",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder", "script": "EventScript_StrengthBoulder",
"flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_1" "flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_1"
@@ -38,7 +38,7 @@
"movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
"movement_range_x": 0, "movement_range_x": 0,
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "69", "trainer_type": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_2",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder", "script": "EventScript_StrengthBoulder",
"flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_2" "flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_2"
+2 -2
View File
@@ -24,7 +24,7 @@
"movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
"movement_range_x": 0, "movement_range_x": 0,
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "70", "trainer_type": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_1",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder", "script": "EventScript_StrengthBoulder",
"flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_1" "flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_1"
@@ -38,7 +38,7 @@
"movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
"movement_range_x": 0, "movement_range_x": 0,
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "71", "trainer_type": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_2",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder", "script": "EventScript_StrengthBoulder",
"flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_2" "flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_2"
+2 -2
View File
@@ -52,7 +52,7 @@
"movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
"movement_range_x": 0, "movement_range_x": 0,
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "77", "trainer_type": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_2",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder", "script": "EventScript_StrengthBoulder",
"flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_5" "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_5"
@@ -94,7 +94,7 @@
"movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
"movement_range_x": 0, "movement_range_x": 0,
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "76", "trainer_type": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_1",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder", "script": "EventScript_StrengthBoulder",
"flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_3" "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_3"
+1 -1
View File
@@ -122,7 +122,7 @@
"movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
"movement_range_x": 0, "movement_range_x": 0,
"movement_range_y": 0, "movement_range_y": 0,
"trainer_type": "88", "trainer_type": "FLAG_HIDE_VICTORY_ROAD_2F_BOULDER",
"trainer_sight_or_berry_tree_id": "0", "trainer_sight_or_berry_tree_id": "0",
"script": "EventScript_StrengthBoulder", "script": "EventScript_StrengthBoulder",
"flag": "FLAG_HIDE_VICTORY_ROAD_3F_BOULDER" "flag": "FLAG_HIDE_VICTORY_ROAD_3F_BOULDER"
+29 -33
View File
@@ -82,7 +82,7 @@
#define MOVEMENT_TYPE_VS_SEEKER_4D 0x4D #define MOVEMENT_TYPE_VS_SEEKER_4D 0x4D
#define MOVEMENT_TYPE_VS_SEEKER_4E 0x4E #define MOVEMENT_TYPE_VS_SEEKER_4E 0x4E
#define MOVEMENT_TYPE_VS_SEEKER_4F 0x4F #define MOVEMENT_TYPE_VS_SEEKER_4F 0x4F
#define MOVEMENT_TYPE_WANDER_AROUND_SLOWEST 0x50 #define MOVEMENT_TYPE_WANDER_AROUND_SLOWER 0x50
#define MOVEMENT_TYPES_COUNT 0x51 #define MOVEMENT_TYPES_COUNT 0x51
#define MOVEMENT_ACTION_FACE_DOWN 0x0 #define MOVEMENT_ACTION_FACE_DOWN 0x0
@@ -93,10 +93,10 @@
#define MOVEMENT_ACTION_FACE_UP_FAST 0x5 #define MOVEMENT_ACTION_FACE_UP_FAST 0x5
#define MOVEMENT_ACTION_FACE_LEFT_FAST 0x6 #define MOVEMENT_ACTION_FACE_LEFT_FAST 0x6
#define MOVEMENT_ACTION_FACE_RIGHT_FAST 0x7 #define MOVEMENT_ACTION_FACE_RIGHT_FAST 0x7
#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN 0x8 #define MOVEMENT_ACTION_WALK_SLOWER_DOWN 0x8
#define MOVEMENT_ACTION_WALK_SLOWEST_UP 0x9 #define MOVEMENT_ACTION_WALK_SLOWER_UP 0x9
#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT 0xA #define MOVEMENT_ACTION_WALK_SLOWER_LEFT 0xA
#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT 0xB #define MOVEMENT_ACTION_WALK_SLOWER_RIGHT 0xB
#define MOVEMENT_ACTION_WALK_SLOW_DOWN 0xC #define MOVEMENT_ACTION_WALK_SLOW_DOWN 0xC
#define MOVEMENT_ACTION_WALK_SLOW_UP 0xD #define MOVEMENT_ACTION_WALK_SLOW_UP 0xD
#define MOVEMENT_ACTION_WALK_SLOW_LEFT 0xE #define MOVEMENT_ACTION_WALK_SLOW_LEFT 0xE
@@ -134,10 +134,10 @@
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP 0x2E #define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP 0x2E
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT 0x2F #define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT 0x2F
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT 0x30 #define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT 0x30
#define MOVEMENT_ACTION_FACE_DOWN_SLOW 0x31 #define MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN 0x31
#define MOVEMENT_ACTION_FACE_UP_SLOW 0x32 #define MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP 0x32
#define MOVEMENT_ACTION_FACE_LEFT_SLOW 0x33 #define MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT 0x33
#define MOVEMENT_ACTION_FACE_RIGHT_SLOW 0x34 #define MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT 0x34
#define MOVEMENT_ACTION_WALK_FASTEST_DOWN 0x35 #define MOVEMENT_ACTION_WALK_FASTEST_DOWN 0x35
#define MOVEMENT_ACTION_WALK_FASTEST_UP 0x36 #define MOVEMENT_ACTION_WALK_FASTEST_UP 0x36
#define MOVEMENT_ACTION_WALK_FASTEST_LEFT 0x37 #define MOVEMENT_ACTION_WALK_FASTEST_LEFT 0x37
@@ -235,33 +235,29 @@
#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP 0x91 #define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP 0x91
#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT 0x92 #define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT 0x92
#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT 0x93 #define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT 0x93
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN 0x94
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP 0x95
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT 0x96
#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT 0x97
// 98-A3 are unknown
#define MOVEMENT_ACTION_0x98 0x98
#define MOVEMENT_ACTION_0x99 0x99
#define MOVEMENT_ACTION_0x9A 0x9A
#define MOVEMENT_ACTION_0x9B 0x9B
#define MOVEMENT_ACTION_0x9C 0x9C
#define MOVEMENT_ACTION_0x9D 0x9D
#define MOVEMENT_ACTION_0x9E 0x9E
#define MOVEMENT_ACTION_0x9F 0x9F
#define MOVEMENT_ACTION_0xA0 0xA0
#define MOVEMENT_ACTION_0xA1 0xA1
#define MOVEMENT_ACTION_0xA2 0xA2
#define MOVEMENT_ACTION_0xA3 0xA3
#define MOVEMENT_ACTION_SPIN_DOWN 0x94
#define MOVEMENT_ACTION_SPIN_UP 0x95
#define MOVEMENT_ACTION_SPIN_LEFT 0x96
#define MOVEMENT_ACTION_SPIN_RIGHT 0x97
#define MOVEMENT_ACTION_0x98 0x98
#define MOVEMENT_ACTION_0x99 0x99
#define MOVEMENT_ACTION_0x9A 0x9A
#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN 0x9B
#define MOVEMENT_ACTION_WALK_SLOWEST_UP 0x9C
#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT 0x9D
#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT 0x9E
#define MOVEMENT_ACTION_SHAKE_HEAD 0x9F
#define MOVEMENT_ACTION_0xA0 0xA0
#define MOVEMENT_ACTION_0xA1 0xA1
#define MOVEMENT_ACTION_0xA2 0xA2
#define MOVEMENT_ACTION_0xA3 0xA3
#define MOVEMENT_ACTION_FLY_UP 0xA4 #define MOVEMENT_ACTION_FLY_UP 0xA4
#define MOVEMENT_ACTION_FLY_DOWN 0xA5 #define MOVEMENT_ACTION_FLY_DOWN 0xA5
#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN 0xA6
// Duplicates of JUMP_SPECIAL? #define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_UP 0xA7
#define MOVEMENT_ACTION_0xA6 0xA6 #define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_LEFT 0xA8
#define MOVEMENT_ACTION_0xA7 0xA7 #define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT 0xA9
#define MOVEMENT_ACTION_0xA8 0xA8
#define MOVEMENT_ACTION_0xA9 0xA9
#define MOVEMENT_ACTION_STEP_END 0xFE #define MOVEMENT_ACTION_STEP_END 0xFE
+7 -1
View File
@@ -209,8 +209,14 @@
#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 8 #define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 8
#define FRIENDSHIP_EVENT_FAINT_LARGE 9 #define FRIENDSHIP_EVENT_FAINT_LARGE 9
#define PARTY_SIZE 6 #define MAX_PER_STAT_IVS 31
#define MAX_IV_MASK 31
#define USE_RANDOM_IVS (MAX_PER_STAT_IVS + 1)
#define MAX_PER_STAT_EVS 255
#define MAX_TOTAL_EVS 510 #define MAX_TOTAL_EVS 510
#define EV_ITEM_RAISE_LIMIT 100
#define PARTY_SIZE 6
#define UNOWN_FORM_COUNT 28 #define UNOWN_FORM_COUNT 28
#define BOX_NAME_LENGTH 8 #define BOX_NAME_LENGTH 8
+12 -12
View File
@@ -64,7 +64,7 @@ bool8 TryGetObjectEventIdByLocalIdAndMap(u8, u8, u8, u8 *);
u8 GetObjectEventIdByXY(s16, s16); u8 GetObjectEventIdByXY(s16, s16);
void SetObjectEventDirection(struct ObjectEvent *, u8); void SetObjectEventDirection(struct ObjectEvent *, u8);
void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup);
u16 GetObjectEventFlagByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); u16 GetBoulderRevealFlagByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup);
void LoadPlayerObjectReflectionPalette(u16, u8); void LoadPlayerObjectReflectionPalette(u16, u8);
void LoadSpecialObjectReflectionPalette(u16, u8); void LoadSpecialObjectReflectionPalette(u16, u8);
void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16); void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16);
@@ -124,7 +124,7 @@ u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent);
u8 GetWalkNormalMovementAction(u32); u8 GetWalkNormalMovementAction(u32);
u8 GetWalkFastMovementAction(u32); u8 GetWalkFastMovementAction(u32);
u8 GetWalkFastestMovementAction(u32); u8 GetWalkFastestMovementAction(u32);
u8 GetWalkSlowestMovementAction(u32 direction); u8 GetWalkSlowerMovementAction(u32 direction);
u8 GetTrainerFacingDirectionMovementType(u8 direction); u8 GetTrainerFacingDirectionMovementType(u8 direction);
u8 GetFaceDirectionMovementAction(u32); u8 GetFaceDirectionMovementAction(u32);
u8 GetFaceDirectionFastMovementAction(u32); u8 GetFaceDirectionFastMovementAction(u32);
@@ -134,7 +134,7 @@ u8 GetSlideMovementAction(u32);
u8 GetJumpInPlaceMovementAction(u32); u8 GetJumpInPlaceMovementAction(u32);
u8 GetJumpMovementAction(u32); u8 GetJumpMovementAction(u32);
u8 GetJump2MovementAction(u32); u8 GetJump2MovementAction(u32);
bool8 NpcTakeStep(struct Sprite *sprite); bool8 UpdateWalkSlowerAnim(struct Sprite *sprite);
void SetJumpSpriteData(struct Sprite *, u8, u8, u8); void SetJumpSpriteData(struct Sprite *, u8, u8, u8);
u8 DoJumpSpriteMovement(struct Sprite *); u8 DoJumpSpriteMovement(struct Sprite *);
u8 DoJumpSpecialSpriteMovement(struct Sprite *); u8 DoJumpSpecialSpriteMovement(struct Sprite *);
@@ -171,16 +171,16 @@ void UpdateObjectEventsForCameraUpdate(s16 x, s16 y);
void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *); void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *);
void SetMovementDelay(struct Sprite *, s16); void SetMovementDelay(struct Sprite *, s16);
bool8 WaitForMovementDelay(struct Sprite *); bool8 WaitForMovementDelay(struct Sprite *);
void oamt_npc_ministep_reset(struct Sprite *, u8, u8); void SetSpriteDataForNormalStep(struct Sprite *, u8, u8);
bool8 obj_npc_ministep(struct Sprite *sprite); bool8 NpcTakeStep(struct Sprite *sprite);
void SetSpriteDataForNormalStep(struct Sprite *, u8); void SetWalkSlowerSpriteData(struct Sprite *, u8);
void SetSpriteDataForNormalStep2(struct Sprite *, u8); void SetWalkSlowestSpriteData(struct Sprite *, u8);
bool8 UpdateWalkSlowestAnim(struct Sprite *sprite);
void SetWalkSlowSpriteData(struct Sprite *, u8);
bool8 UpdateWalkSlowAnim(struct Sprite *sprite); bool8 UpdateWalkSlowAnim(struct Sprite *sprite);
void SetSpriteDataForNormalStep3(struct Sprite *, u8);
bool8 sub_8068C18(struct Sprite *sprite);
void DoShadowFieldEffect(struct ObjectEvent *); void DoShadowFieldEffect(struct ObjectEvent *);
void SetSpriteDataForNormalStep4(struct Sprite *, u8); void SetRunSlowSpriteData(struct Sprite *, u8);
bool8 sub_8068CB4(struct Sprite *sprite); bool8 UpdateRunSlowAnim(struct Sprite *sprite);
void SetAndStartSpriteAnim(struct Sprite *, u8, u8); void SetAndStartSpriteAnim(struct Sprite *, u8, u8);
bool8 SpriteAnimEnded(struct Sprite *); bool8 SpriteAnimEnded(struct Sprite *);
u8 ObjectEventGetHeldMovementActionId(struct ObjectEvent *objectEvent); u8 ObjectEventGetHeldMovementActionId(struct ObjectEvent *objectEvent);
@@ -212,7 +212,7 @@ u8 GetJumpInPlaceTurnAroundMovementAction(u32 direction);
u8 GetAcroWheelieInPlaceDirectionMovementAction(u32 direction); u8 GetAcroWheelieInPlaceDirectionMovementAction(u32 direction);
u8 GetAcroPopWheelieMoveDirectionMovementAction(u32 direction); u8 GetAcroPopWheelieMoveDirectionMovementAction(u32 direction);
u8 GetAcroWheelieMoveDirectionMovementAction(u32 direction); u8 GetAcroWheelieMoveDirectionMovementAction(u32 direction);
u8 sub_80641EC(u32 direction); u8 GetJumpSpecialWithEffectMovementAction(u32 direction);
u8 GetFishingBiteDirectionAnimNum(u8 direction); u8 GetFishingBiteDirectionAnimNum(u8 direction);
void TrySpawnObjectEvents(s16 cameraX, s16 cameraY); void TrySpawnObjectEvents(s16 cameraX, s16 cameraY);
void ResetObjectEvents(void); void ResetObjectEvents(void);
+1 -1
View File
@@ -56,7 +56,7 @@ void PlayerFaceDirection(u8 direction);
void PlayerFaceDirectionFast(u8 direction); void PlayerFaceDirectionFast(u8 direction);
void PlayerTurnInPlace(u8 direction); void PlayerTurnInPlace(u8 direction);
void PlayerJumpLedge(u8 direction); void PlayerJumpLedge(u8 direction);
void sub_805C260(void); void PlayerShakeHead(void);
void player_step(u8 direction, u16 newKeys, u16 heldKeys); void player_step(u8 direction, u16 newKeys, u16 heldKeys);
bool32 PlayerIsMovingOnRockStairs(u8 direction); bool32 PlayerIsMovingOnRockStairs(u8 direction);
void UpdatePlayerAvatarTransitionState(void); void UpdatePlayerAvatarTransitionState(void);
+7 -1
View File
@@ -211,7 +211,13 @@ static void CreateBattleStartTask(u8 transition, u16 song) // song == 0 means de
static bool8 CheckSilphScopeInPokemonTower(u16 mapGroup, u16 mapNum) static bool8 CheckSilphScopeInPokemonTower(u16 mapGroup, u16 mapNum)
{ {
if (mapGroup == MAP_GROUP(POKEMON_TOWER_1F) if (mapGroup == MAP_GROUP(POKEMON_TOWER_1F)
&& ((u16)(mapNum - MAP_NUM(POKEMON_TOWER_1F)) <= 6) && (mapNum == MAP_NUM(POKEMON_TOWER_1F)
|| mapNum == MAP_NUM(POKEMON_TOWER_2F)
|| mapNum == MAP_NUM(POKEMON_TOWER_3F)
|| mapNum == MAP_NUM(POKEMON_TOWER_4F)
|| mapNum == MAP_NUM(POKEMON_TOWER_5F)
|| mapNum == MAP_NUM(POKEMON_TOWER_6F)
|| mapNum == MAP_NUM(POKEMON_TOWER_7F))
&& !(CheckBagHasItem(ITEM_SILPH_SCOPE, 1))) && !(CheckBagHasItem(ITEM_SILPH_SCOPE, 1)))
return TRUE; return TRUE;
else else
@@ -471,10 +471,10 @@ bool8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite
[MOVEMENT_ACTION_FACE_UP_FAST] = sMovementActionFuncs_x05, [MOVEMENT_ACTION_FACE_UP_FAST] = sMovementActionFuncs_x05,
[MOVEMENT_ACTION_FACE_LEFT_FAST] = sMovementActionFuncs_x06, [MOVEMENT_ACTION_FACE_LEFT_FAST] = sMovementActionFuncs_x06,
[MOVEMENT_ACTION_FACE_RIGHT_FAST] = sMovementActionFuncs_x07, [MOVEMENT_ACTION_FACE_RIGHT_FAST] = sMovementActionFuncs_x07,
[MOVEMENT_ACTION_WALK_SLOWEST_DOWN] = sMovementActionFuncs_x08, [MOVEMENT_ACTION_WALK_SLOWER_DOWN] = sMovementActionFuncs_x08,
[MOVEMENT_ACTION_WALK_SLOWEST_UP] = sMovementActionFuncs_x09, [MOVEMENT_ACTION_WALK_SLOWER_UP] = sMovementActionFuncs_x09,
[MOVEMENT_ACTION_WALK_SLOWEST_LEFT] = sMovementActionFuncs_x0A, [MOVEMENT_ACTION_WALK_SLOWER_LEFT] = sMovementActionFuncs_x0A,
[MOVEMENT_ACTION_WALK_SLOWEST_RIGHT] = sMovementActionFuncs_x0B, [MOVEMENT_ACTION_WALK_SLOWER_RIGHT] = sMovementActionFuncs_x0B,
[MOVEMENT_ACTION_WALK_SLOW_DOWN] = sMovementActionFuncs_x0C, [MOVEMENT_ACTION_WALK_SLOW_DOWN] = sMovementActionFuncs_x0C,
[MOVEMENT_ACTION_WALK_SLOW_UP] = sMovementActionFuncs_x0D, [MOVEMENT_ACTION_WALK_SLOW_UP] = sMovementActionFuncs_x0D,
[MOVEMENT_ACTION_WALK_SLOW_LEFT] = sMovementActionFuncs_x0E, [MOVEMENT_ACTION_WALK_SLOW_LEFT] = sMovementActionFuncs_x0E,
@@ -512,10 +512,10 @@ bool8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite
[MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP] = sMovementActionFuncs_x2E, [MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP] = sMovementActionFuncs_x2E,
[MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT] = sMovementActionFuncs_x2F, [MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT] = sMovementActionFuncs_x2F,
[MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT] = sMovementActionFuncs_x30, [MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT] = sMovementActionFuncs_x30,
[MOVEMENT_ACTION_FACE_DOWN_SLOW] = sMovementActionFuncs_x31, [MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN] = sMovementActionFuncs_x31,
[MOVEMENT_ACTION_FACE_UP_SLOW] = sMovementActionFuncs_x32, [MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP] = sMovementActionFuncs_x32,
[MOVEMENT_ACTION_FACE_LEFT_SLOW] = sMovementActionFuncs_x33, [MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT] = sMovementActionFuncs_x33,
[MOVEMENT_ACTION_FACE_RIGHT_SLOW] = sMovementActionFuncs_x34, [MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT] = sMovementActionFuncs_x34,
[MOVEMENT_ACTION_WALK_FASTEST_DOWN] = sMovementActionFuncs_x35, [MOVEMENT_ACTION_WALK_FASTEST_DOWN] = sMovementActionFuncs_x35,
[MOVEMENT_ACTION_WALK_FASTEST_UP] = sMovementActionFuncs_x36, [MOVEMENT_ACTION_WALK_FASTEST_UP] = sMovementActionFuncs_x36,
[MOVEMENT_ACTION_WALK_FASTEST_LEFT] = sMovementActionFuncs_x37, [MOVEMENT_ACTION_WALK_FASTEST_LEFT] = sMovementActionFuncs_x37,
@@ -611,28 +611,28 @@ bool8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite
[MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP] = sMovementActionFuncs_x91, [MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP] = sMovementActionFuncs_x91,
[MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT] = sMovementActionFuncs_x92, [MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT] = sMovementActionFuncs_x92,
[MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT] = sMovementActionFuncs_x93, [MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT] = sMovementActionFuncs_x93,
[MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN] = sMovementActionFuncs_x94, [MOVEMENT_ACTION_SPIN_DOWN] = sMovementActionFuncs_x94,
[MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP] = sMovementActionFuncs_x95, [MOVEMENT_ACTION_SPIN_UP] = sMovementActionFuncs_x95,
[MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT] = sMovementActionFuncs_x96, [MOVEMENT_ACTION_SPIN_LEFT] = sMovementActionFuncs_x96,
[MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT] = sMovementActionFuncs_x97, [MOVEMENT_ACTION_SPIN_RIGHT] = sMovementActionFuncs_x97,
[MOVEMENT_ACTION_0x98] = sMovementActionFuncs_x98, [MOVEMENT_ACTION_0x98] = sMovementActionFuncs_x98,
[MOVEMENT_ACTION_0x99] = sMovementActionFuncs_x99, [MOVEMENT_ACTION_0x99] = sMovementActionFuncs_x99,
[MOVEMENT_ACTION_0x9A] = sMovementActionFuncs_x9A, [MOVEMENT_ACTION_0x9A] = sMovementActionFuncs_x9A,
[MOVEMENT_ACTION_0x9B] = sMovementActionFuncs_x9B, [MOVEMENT_ACTION_WALK_SLOWEST_DOWN] = sMovementActionFuncs_x9B,
[MOVEMENT_ACTION_0x9C] = sMovementActionFuncs_x9C, [MOVEMENT_ACTION_WALK_SLOWEST_UP] = sMovementActionFuncs_x9C,
[MOVEMENT_ACTION_0x9D] = sMovementActionFuncs_x9D, [MOVEMENT_ACTION_WALK_SLOWEST_LEFT] = sMovementActionFuncs_x9D,
[MOVEMENT_ACTION_0x9E] = sMovementActionFuncs_x9E, [MOVEMENT_ACTION_WALK_SLOWEST_RIGHT] = sMovementActionFuncs_x9E,
[MOVEMENT_ACTION_0x9F] = sMovementActionFuncs_x9F, [MOVEMENT_ACTION_SHAKE_HEAD] = sMovementActionFuncs_x9F,
[MOVEMENT_ACTION_0xA0] = sMovementActionFuncs_xA0, [MOVEMENT_ACTION_0xA0] = sMovementActionFuncs_xA0,
[MOVEMENT_ACTION_0xA1] = sMovementActionFuncs_xA1, [MOVEMENT_ACTION_0xA1] = sMovementActionFuncs_xA1,
[MOVEMENT_ACTION_0xA2] = sMovementActionFuncs_xA2, [MOVEMENT_ACTION_0xA2] = sMovementActionFuncs_xA2,
[MOVEMENT_ACTION_0xA3] = sMovementActionFuncs_xA3, [MOVEMENT_ACTION_0xA3] = sMovementActionFuncs_xA3,
[MOVEMENT_ACTION_FLY_UP] = sMovementActionFuncs_xA4, [MOVEMENT_ACTION_FLY_UP] = sMovementActionFuncs_xA4,
[MOVEMENT_ACTION_FLY_DOWN] = sMovementActionFuncs_xA5, [MOVEMENT_ACTION_FLY_DOWN] = sMovementActionFuncs_xA5,
[MOVEMENT_ACTION_0xA6] = sMovementActionFuncs_xA6, [MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN] = sMovementActionFuncs_xA6,
[MOVEMENT_ACTION_0xA7] = sMovementActionFuncs_xA7, [MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_UP] = sMovementActionFuncs_xA7,
[MOVEMENT_ACTION_0xA8] = sMovementActionFuncs_xA8, [MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_LEFT] = sMovementActionFuncs_xA8,
[MOVEMENT_ACTION_0xA9] = sMovementActionFuncs_xA9, [MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT] = sMovementActionFuncs_xA9,
}; };
static bool8 (*const sMovementActionFuncs_x00[])(struct ObjectEvent *, struct Sprite *) = { static bool8 (*const sMovementActionFuncs_x00[])(struct ObjectEvent *, struct Sprite *) = {
@@ -4,7 +4,7 @@ static bool8 MovementType_WanderAround_Step2(struct ObjectEvent *objectEvent, st
static bool8 MovementType_WanderAround_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_WanderAround_Step5Slowest(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step5Slower(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_LookAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_LookAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
@@ -170,13 +170,13 @@ u8 (*const gMovementTypeFuncs_WanderAround[])(struct ObjectEvent *, struct Sprit
MovementType_WanderAround_Step6, MovementType_WanderAround_Step6,
}; };
u8 (*const gMovementTypeFuncs_WanderAroundSlowest[])(struct ObjectEvent *, struct Sprite *) = { u8 (*const gMovementTypeFuncs_WanderAroundSlower[])(struct ObjectEvent *, struct Sprite *) = {
MovementType_WanderAround_Step0, MovementType_WanderAround_Step0,
MovementType_WanderAround_Step1, MovementType_WanderAround_Step1,
MovementType_WanderAround_Step2, MovementType_WanderAround_Step2,
MovementType_WanderAround_Step3, MovementType_WanderAround_Step3,
MovementType_WanderAround_Step4, MovementType_WanderAround_Step4,
MovementType_WanderAround_Step5Slowest, MovementType_WanderAround_Step5Slower,
MovementType_WanderAround_Step6, MovementType_WanderAround_Step6,
}; };
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1069,7 +1069,7 @@ void HandleBoulderFallThroughHole(struct ObjectEvent * object)
{ {
PlaySE(SE_FALL); PlaySE(SE_FALL);
RemoveObjectEventByLocalIdAndMap(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); RemoveObjectEventByLocalIdAndMap(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
FlagClear(GetObjectEventFlagByLocalIdAndMap(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup)); FlagClear(GetBoulderRevealFlagByLocalIdAndMap(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup));
} }
} }
+1 -1
View File
@@ -1600,7 +1600,7 @@ static bool8 waterfall_2_wait_anim_finish_probably(struct Task * task, struct Ob
static bool8 waterfall_3_move_player_probably(struct Task * task, struct ObjectEvent * playerObj) static bool8 waterfall_3_move_player_probably(struct Task * task, struct ObjectEvent * playerObj)
{ {
ObjectEventSetHeldMovement(playerObj, GetWalkSlowestMovementAction(DIR_NORTH)); ObjectEventSetHeldMovement(playerObj, GetWalkSlowerMovementAction(DIR_NORTH));
task->data[0]++; task->data[0]++;
return FALSE; return FALSE;
} }
+8 -7
View File
@@ -25,6 +25,7 @@
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/metatile_behaviors.h" #include "constants/metatile_behaviors.h"
#include "constants/moves.h" #include "constants/moves.h"
#include "constants/trainer_types.h"
static EWRAM_DATA struct ObjectEvent * sPlayerObjectPtr = NULL; static EWRAM_DATA struct ObjectEvent * sPlayerObjectPtr = NULL;
static EWRAM_DATA u8 sTeleportSavedFacingDirection = DIR_NONE; static EWRAM_DATA u8 sTeleportSavedFacingDirection = DIR_NONE;
@@ -831,7 +832,7 @@ static void QL_TryRecordNPCStepWithDuration32(struct ObjectEvent * objectEvent,
void PlayerGoSlowest(u8 direction) void PlayerGoSlowest(u8 direction)
{ {
PlayerSetAnimId(GetWalkSlowestMovementAction(direction), 2); PlayerSetAnimId(GetWalkSlowerMovementAction(direction), 2);
} }
void PlayerGoSlow(u8 direction) void PlayerGoSlow(u8 direction)
@@ -908,9 +909,9 @@ void PlayerJumpLedge(u8 direction)
PlayerSetAnimId(GetJump2MovementAction(direction), 8); PlayerSetAnimId(GetJump2MovementAction(direction), 8);
} }
void sub_805C260(void) void PlayerShakeHead(void)
{ {
PlayerSetAnimId(MOVEMENT_ACTION_0x9F, 0); PlayerSetAnimId(MOVEMENT_ACTION_SHAKE_HEAD, 0);
} }
void HandleEnforcedLookDirectionOnPlayerStopMoving(void) void HandleEnforcedLookDirectionOnPlayerStopMoving(void)
@@ -1295,7 +1296,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
playerObjEventTemplate.objUnion.normal.movementType = MOVEMENT_TYPE_PLAYER; playerObjEventTemplate.objUnion.normal.movementType = MOVEMENT_TYPE_PLAYER;
playerObjEventTemplate.objUnion.normal.movementRangeX = 0; playerObjEventTemplate.objUnion.normal.movementRangeX = 0;
playerObjEventTemplate.objUnion.normal.movementRangeY = 0; playerObjEventTemplate.objUnion.normal.movementRangeY = 0;
playerObjEventTemplate.objUnion.normal.trainerType = 0; playerObjEventTemplate.objUnion.normal.trainerType = TRAINER_TYPE_NONE;
playerObjEventTemplate.objUnion.normal.trainerRange_berryTreeId = 0; playerObjEventTemplate.objUnion.normal.trainerRange_berryTreeId = 0;
playerObjEventTemplate.script = NULL; playerObjEventTemplate.script = NULL;
playerObjEventTemplate.flagId = 0; playerObjEventTemplate.flagId = 0;
@@ -1428,7 +1429,7 @@ static bool8 DoBoulderDust(struct Task *task, struct ObjectEvent *playerObject,
ObjectEventClearHeldMovementIfFinished(playerObject); ObjectEventClearHeldMovementIfFinished(playerObject);
ObjectEventClearHeldMovementIfFinished(strengthObject); ObjectEventClearHeldMovementIfFinished(strengthObject);
QL_TryRecordPlayerStepWithDuration0(playerObject, GetWalkInPlaceNormalMovementAction((u8)task->data[2])); QL_TryRecordPlayerStepWithDuration0(playerObject, GetWalkInPlaceNormalMovementAction((u8)task->data[2]));
QL_TryRecordNPCStepWithDuration32(strengthObject, GetWalkSlowestMovementAction((u8)task->data[2])); QL_TryRecordNPCStepWithDuration32(strengthObject, GetWalkSlowerMovementAction((u8)task->data[2]));
gFieldEffectArguments[0] = strengthObject->currentCoords.x; gFieldEffectArguments[0] = strengthObject->currentCoords.x;
gFieldEffectArguments[1] = strengthObject->currentCoords.y; gFieldEffectArguments[1] = strengthObject->currentCoords.y;
gFieldEffectArguments[2] = strengthObject->previousElevation; gFieldEffectArguments[2] = strengthObject->previousElevation;
@@ -1560,7 +1561,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct Objec
{ {
if (ObjectEventClearHeldMovementIfFinished(objectEvent)) if (ObjectEventClearHeldMovementIfFinished(objectEvent))
{ {
QL_TryRecordPlayerStepWithDuration0(objectEvent, GetWalkSlowestMovementAction(GetOppositeDirection(task->data[1]))); QL_TryRecordPlayerStepWithDuration0(objectEvent, GetWalkSlowerMovementAction(GetOppositeDirection(task->data[1])));
ScriptContext2_Disable(); ScriptContext2_Disable();
gPlayerAvatar.preventStep = FALSE; gPlayerAvatar.preventStep = FALSE;
DestroyTask(FindTaskIdByFunc(PlayerAvatar_DoSecretBaseMatSpin)); DestroyTask(FindTaskIdByFunc(PlayerAvatar_DoSecretBaseMatSpin));
@@ -1617,7 +1618,7 @@ static void Task_StopSurfingInit(u8 taskId)
return; return;
} }
SetSurfBlob_BobState(playerObjEvent->fieldEffectSpriteId, 2); SetSurfBlob_BobState(playerObjEvent->fieldEffectSpriteId, 2);
QL_TryRecordPlayerStepWithDuration0(playerObjEvent, sub_80641EC((u8)gTasks[taskId].data[0])); QL_TryRecordPlayerStepWithDuration0(playerObjEvent, GetJumpSpecialWithEffectMovementAction((u8)gTasks[taskId].data[0]));
gTasks[taskId].func = Task_WaitStopSurfing; gTasks[taskId].func = Task_WaitStopSurfing;
} }
+3 -1
View File
@@ -10,6 +10,7 @@
#include "field_specials.h" #include "field_specials.h"
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/items.h" #include "constants/items.h"
#include "constants/maps.h"
static EWRAM_DATA const struct YesNoFuncTable *gUnknown_20399C8 = NULL; static EWRAM_DATA const struct YesNoFuncTable *gUnknown_20399C8 = NULL;
static EWRAM_DATA TaskFunc gUnknown_20399CC = NULL; static EWRAM_DATA TaskFunc gUnknown_20399CC = NULL;
@@ -94,7 +95,8 @@ bool8 itemid_link_can_give_berry(u16 itemId)
{ {
if (itemId != ITEM_ENIGMA_BERRY) if (itemId != ITEM_ENIGMA_BERRY)
return TRUE; return TRUE;
else if (!gSaveBlock1Ptr->location.mapGroup && gSaveBlock1Ptr->location.mapNum == 1) else if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRADE_CENTER)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRADE_CENTER))
return FALSE; return FALSE;
else if (InUnionRoom() != TRUE) else if (InUnionRoom() != TRUE)
return TRUE; return TRUE;
+6 -3
View File
@@ -521,9 +521,9 @@ static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId
static bool32 IsDummyWarp(struct WarpData *warp) static bool32 IsDummyWarp(struct WarpData *warp)
{ {
if (warp->mapGroup != -1) if (warp->mapGroup != (s8)MAP_GROUP(UNDEFINED))
return FALSE; return FALSE;
else if (warp->mapNum != -1) else if (warp->mapNum != (s8)MAP_NUM(UNDEFINED))
return FALSE; return FALSE;
else if (warp->warpId != -1) else if (warp->warpId != -1)
return FALSE; return FALSE;
@@ -896,7 +896,10 @@ bool8 sub_8055B38(u16 metatileBehavior)
{ {
if (MetatileBehavior_IsSurfable(metatileBehavior) != TRUE) if (MetatileBehavior_IsSurfable(metatileBehavior) != TRUE)
return FALSE; return FALSE;
if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B3F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B3F)) || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B4F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B4F))) if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B3F)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B3F))
|| (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B4F)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B4F)))
return TRUE; return TRUE;
return FALSE; return FALSE;
} }
+110 -84
View File
@@ -5,53 +5,74 @@
#include "constants/maps.h" #include "constants/maps.h"
#include "constants/region_map_sections.h" #include "constants/region_map_sections.h"
EWRAM_DATA u8 sLocationHistory[3][2] = {}; // Despite having a variable to track it, the roamer is
EWRAM_DATA u8 sRoamerLocation[2] = {}; // hard-coded to only ever be in map group 3
#define ROAMER_MAP_GROUP 3
#define saveRoamer (*(&gSaveBlock1Ptr->roamer))
enum enum
{ {
MAP_GRP = 0, // map group MAP_GRP, // map group
MAP_NUM = 1, // map number MAP_NUM, // map number
}; };
const u8 sRoamerLocations[][7] = { #define ROAMER (&gSaveBlock1Ptr->roamer)
{MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE22), 0xff, 0xff, 0xff}, EWRAM_DATA u8 sLocationHistory[3][2] = {};
{MAP_NUM(ROUTE2), MAP_NUM(ROUTE1), MAP_NUM(ROUTE3), MAP_NUM(ROUTE22), 0xff, 0xff, 0xff}, EWRAM_DATA u8 sRoamerLocation[2] = {};
{MAP_NUM(ROUTE3), MAP_NUM(ROUTE2), MAP_NUM(ROUTE4), 0xff, 0xff, 0xff, 0xff},
{MAP_NUM(ROUTE4), MAP_NUM(ROUTE3), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), MAP_NUM(ROUTE24), 0xff, 0xff}, #define ___ MAP_NUM(UNDEFINED) // For empty spots in the location table
// Note: There are two potential softlocks that can occur with this table if its maps are
// changed in particular ways. They can be avoided by ensuring the following:
// - There must be at least 2 location sets that start with a different map,
// i.e. every location set cannot start with the same map. This is because of
// the while loop in RoamerMoveToOtherLocationSet.
// - Each location set must have at least 3 unique maps. This is because of
// the while loop in RoamerMove. In this loop the first map in the set is
// ignored, and an additional map is ignored if the roamer was there recently.
// - Additionally, while not a softlock, it's worth noting that if for any
// map in the location table there is not a location set that starts with
// that map then the roamer will be significantly less likely to move away
// from that map when it lands there.
static const u8 sRoamerLocations[][7] = {
{MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE22), ___, ___, ___},
{MAP_NUM(ROUTE2), MAP_NUM(ROUTE1), MAP_NUM(ROUTE3), MAP_NUM(ROUTE22), ___, ___, ___},
{MAP_NUM(ROUTE3), MAP_NUM(ROUTE2), MAP_NUM(ROUTE4), ___, ___, ___, ___},
{MAP_NUM(ROUTE4), MAP_NUM(ROUTE3), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), MAP_NUM(ROUTE24), ___, ___},
{MAP_NUM(ROUTE5), MAP_NUM(ROUTE4), MAP_NUM(ROUTE6), MAP_NUM(ROUTE7), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE24)}, {MAP_NUM(ROUTE5), MAP_NUM(ROUTE4), MAP_NUM(ROUTE6), MAP_NUM(ROUTE7), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE24)},
{MAP_NUM(ROUTE6), MAP_NUM(ROUTE5), MAP_NUM(ROUTE7), MAP_NUM(ROUTE8), MAP_NUM(ROUTE11), 0xff, 0xff}, {MAP_NUM(ROUTE6), MAP_NUM(ROUTE5), MAP_NUM(ROUTE7), MAP_NUM(ROUTE8), MAP_NUM(ROUTE11), ___, ___},
{MAP_NUM(ROUTE7), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE8), MAP_NUM(ROUTE16), 0xff, 0xff}, {MAP_NUM(ROUTE7), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE8), MAP_NUM(ROUTE16), ___, ___},
{MAP_NUM(ROUTE8), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE7), MAP_NUM(ROUTE10), MAP_NUM(ROUTE12), 0xff}, {MAP_NUM(ROUTE8), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE7), MAP_NUM(ROUTE10), MAP_NUM(ROUTE12), ___},
{MAP_NUM(ROUTE9), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE10), MAP_NUM(ROUTE24), 0xff, 0xff}, {MAP_NUM(ROUTE9), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE10), MAP_NUM(ROUTE24), ___, ___},
{MAP_NUM(ROUTE10), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE12), 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE10), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE12), ___, ___, ___},
{MAP_NUM(ROUTE11), MAP_NUM(ROUTE6), MAP_NUM(ROUTE12), 0xff, 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE11), MAP_NUM(ROUTE6), MAP_NUM(ROUTE12), ___, ___, ___, ___},
{MAP_NUM(ROUTE12), MAP_NUM(ROUTE10), MAP_NUM(ROUTE11), MAP_NUM(ROUTE13), 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE12), MAP_NUM(ROUTE10), MAP_NUM(ROUTE11), MAP_NUM(ROUTE13), ___, ___, ___},
{MAP_NUM(ROUTE13), MAP_NUM(ROUTE12), MAP_NUM(ROUTE14), 0xff, 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE13), MAP_NUM(ROUTE12), MAP_NUM(ROUTE14), ___, ___, ___, ___},
{MAP_NUM(ROUTE14), MAP_NUM(ROUTE13), MAP_NUM(ROUTE15), 0xff, 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE14), MAP_NUM(ROUTE13), MAP_NUM(ROUTE15), ___, ___, ___, ___},
{MAP_NUM(ROUTE15), MAP_NUM(ROUTE14), MAP_NUM(ROUTE18), MAP_NUM(ROUTE19), 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE15), MAP_NUM(ROUTE14), MAP_NUM(ROUTE18), MAP_NUM(ROUTE19), ___, ___, ___},
{MAP_NUM(ROUTE16), MAP_NUM(ROUTE7), MAP_NUM(ROUTE17), 0xff, 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE16), MAP_NUM(ROUTE7), MAP_NUM(ROUTE17), ___, ___, ___, ___},
{MAP_NUM(ROUTE17), MAP_NUM(ROUTE16), MAP_NUM(ROUTE18), 0xff, 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE17), MAP_NUM(ROUTE16), MAP_NUM(ROUTE18), ___, ___, ___, ___},
{MAP_NUM(ROUTE18), MAP_NUM(ROUTE15), MAP_NUM(ROUTE17), MAP_NUM(ROUTE19), 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE18), MAP_NUM(ROUTE15), MAP_NUM(ROUTE17), MAP_NUM(ROUTE19), ___, ___, ___},
{MAP_NUM(ROUTE19), MAP_NUM(ROUTE15), MAP_NUM(ROUTE18), MAP_NUM(ROUTE20), 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE19), MAP_NUM(ROUTE15), MAP_NUM(ROUTE18), MAP_NUM(ROUTE20), ___, ___, ___},
{MAP_NUM(ROUTE20), MAP_NUM(ROUTE19), MAP_NUM(ROUTE21_NORTH), 0xff, 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE20), MAP_NUM(ROUTE19), MAP_NUM(ROUTE21_NORTH), ___, ___, ___, ___},
{MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE1), MAP_NUM(ROUTE20), 0xff, 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE1), MAP_NUM(ROUTE20), ___, ___, ___, ___},
{MAP_NUM(ROUTE22), MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE23), 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE22), MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE23), ___, ___, ___},
{MAP_NUM(ROUTE23), MAP_NUM(ROUTE22), MAP_NUM(ROUTE2), 0xff, 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE23), MAP_NUM(ROUTE22), MAP_NUM(ROUTE2), ___, ___, ___, ___},
{MAP_NUM(ROUTE24), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE24), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), ___, ___, ___},
{MAP_NUM(ROUTE25), MAP_NUM(ROUTE24), MAP_NUM(ROUTE9), 0xff, 0xff, 0xff, 0xff}, {MAP_NUM(ROUTE25), MAP_NUM(ROUTE24), MAP_NUM(ROUTE9), ___, ___, ___, ___},
{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} {___, ___, ___, ___, ___, ___, ___}
}; };
#undef ___
#define NUM_LOCATION_SETS (ARRAY_COUNT(sRoamerLocations) - 1)
#define NUM_LOCATIONS_PER_SET (ARRAY_COUNT(sRoamerLocations[0]))
void ClearRoamerData(void) void ClearRoamerData(void)
{ {
u32 i; u32 i;
gSaveBlock1Ptr->roamer = (struct Roamer){}; *ROAMER = (struct Roamer){};
sRoamerLocation[MAP_GRP] = 0; sRoamerLocation[MAP_GRP] = 0;
sRoamerLocation[MAP_NUM] = 0; sRoamerLocation[MAP_NUM] = 0;
for (i = 0; i < 3; i++) for (i = 0; i < ARRAY_COUNT(sLocationHistory); i++)
{ {
sLocationHistory[i][MAP_GRP] = 0; sLocationHistory[i][MAP_GRP] = 0;
sLocationHistory[i][MAP_NUM] = 0; sLocationHistory[i][MAP_NUM] = 0;
@@ -77,24 +98,23 @@ void ClearRoamerData(void)
void CreateInitialRoamerMon(void) void CreateInitialRoamerMon(void)
{ {
struct Pokemon * tmpMon = &gEnemyParty[0]; struct Pokemon * mon = &gEnemyParty[0];
u16 roamerMon; u16 species = GetRoamerSpecies();
CreateMon(mon, species, 50, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0);
CreateMon(tmpMon, (roamerMon = GetRoamerSpecies()), 50, 0x20, 0, 0, 0, 0); ROAMER->species = species;
saveRoamer.species = roamerMon; ROAMER->level = 50;
saveRoamer.level = 50; ROAMER->status = 0;
saveRoamer.status = 0; ROAMER->active = TRUE;
saveRoamer.active = TRUE; ROAMER->ivs = GetMonData(mon, MON_DATA_IVS);
saveRoamer.ivs = GetMonData(tmpMon, MON_DATA_IVS); ROAMER->personality = GetMonData(mon, MON_DATA_PERSONALITY);
saveRoamer.personality = GetMonData(tmpMon, MON_DATA_PERSONALITY); ROAMER->hp = GetMonData(mon, MON_DATA_MAX_HP);
saveRoamer.hp = GetMonData(tmpMon, MON_DATA_MAX_HP); ROAMER->cool = GetMonData(mon, MON_DATA_COOL);
saveRoamer.cool = GetMonData(tmpMon, MON_DATA_COOL); ROAMER->beauty = GetMonData(mon, MON_DATA_BEAUTY);
saveRoamer.beauty = GetMonData(tmpMon, MON_DATA_BEAUTY); ROAMER->cute = GetMonData(mon, MON_DATA_CUTE);
saveRoamer.cute = GetMonData(tmpMon, MON_DATA_CUTE); ROAMER->smart = GetMonData(mon, MON_DATA_SMART);
saveRoamer.smart = GetMonData(tmpMon, MON_DATA_SMART); ROAMER->tough = GetMonData(mon, MON_DATA_TOUGH);
saveRoamer.tough = GetMonData(tmpMon, MON_DATA_TOUGH); sRoamerLocation[MAP_GRP] = ROAMER_MAP_GROUP;
sRoamerLocation[MAP_GRP] = 3; sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % NUM_LOCATION_SETS][0];
sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % (NELEMS(sRoamerLocations) - 1)][0];
} }
void InitRoamer(void) void InitRoamer(void)
@@ -107,8 +127,10 @@ void UpdateLocationHistoryForRoamer(void)
{ {
sLocationHistory[2][MAP_GRP] = sLocationHistory[1][MAP_GRP]; sLocationHistory[2][MAP_GRP] = sLocationHistory[1][MAP_GRP];
sLocationHistory[2][MAP_NUM] = sLocationHistory[1][MAP_NUM]; sLocationHistory[2][MAP_NUM] = sLocationHistory[1][MAP_NUM];
sLocationHistory[1][MAP_GRP] = sLocationHistory[0][MAP_GRP]; sLocationHistory[1][MAP_GRP] = sLocationHistory[0][MAP_GRP];
sLocationHistory[1][MAP_NUM] = sLocationHistory[0][MAP_NUM]; sLocationHistory[1][MAP_NUM] = sLocationHistory[0][MAP_NUM];
sLocationHistory[0][MAP_GRP] = gSaveBlock1Ptr->location.mapGroup; sLocationHistory[0][MAP_GRP] = gSaveBlock1Ptr->location.mapGroup;
sLocationHistory[0][MAP_NUM] = gSaveBlock1Ptr->location.mapNum; sLocationHistory[0][MAP_NUM] = gSaveBlock1Ptr->location.mapNum;
} }
@@ -116,16 +138,17 @@ void UpdateLocationHistoryForRoamer(void)
void RoamerMoveToOtherLocationSet(void) void RoamerMoveToOtherLocationSet(void)
{ {
u8 mapNum = 0; u8 mapNum = 0;
struct Roamer *roamer = &saveRoamer;
if (!roamer->active) if (!ROAMER->active)
return; return;
sRoamerLocation[MAP_GRP] = 3; sRoamerLocation[MAP_GRP] = ROAMER_MAP_GROUP;
// Choose a location set that starts with a map
// different from the roamer's current map
while (1) while (1)
{ {
mapNum = sRoamerLocations[Random() % (NELEMS(sRoamerLocations) - 1)][0]; mapNum = sRoamerLocations[Random() % NUM_LOCATION_SETS][0];
if (sRoamerLocation[MAP_NUM] != mapNum) if (sRoamerLocation[MAP_NUM] != mapNum)
{ {
sRoamerLocation[MAP_NUM] = mapNum; sRoamerLocation[MAP_NUM] = mapNum;
@@ -145,20 +168,23 @@ void RoamerMove(void)
} }
else else
{ {
struct Roamer *roamer = &saveRoamer; if (!ROAMER->active)
if (!roamer->active)
return; return;
while (locSet < (NELEMS(sRoamerLocations) - 1)) while (locSet < NUM_LOCATION_SETS)
{ {
// Find the location set that starts with the roamer's current map
if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0]) if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0])
{ {
u8 mapNum; u8 mapNum;
while (1) while (1)
{ {
mapNum = sRoamerLocations[locSet][(Random() % 6) + 1]; // Choose a new map (excluding the first) within this set
if (!(sLocationHistory[2][MAP_GRP] == 3 && sLocationHistory[2][MAP_NUM] == mapNum) && mapNum != 0xFF) // Also exclude a map if the roamer was there 2 moves ago
mapNum = sRoamerLocations[locSet][(Random() % (NUM_LOCATIONS_PER_SET - 1)) + 1];
if (!(sLocationHistory[2][MAP_GRP] == ROAMER_MAP_GROUP
&& sLocationHistory[2][MAP_NUM] == mapNum)
&& mapNum != MAP_NUM(UNDEFINED))
break; break;
} }
sRoamerLocation[MAP_NUM] = mapNum; sRoamerLocation[MAP_NUM] = mapNum;
@@ -171,9 +197,7 @@ void RoamerMove(void)
bool8 IsRoamerAt(u8 mapGroup, u8 mapNum) bool8 IsRoamerAt(u8 mapGroup, u8 mapNum)
{ {
struct Roamer *roamer = &saveRoamer; if (ROAMER->active && mapGroup == sRoamerLocation[MAP_GRP] && mapNum == sRoamerLocation[MAP_NUM])
if (roamer->active && mapGroup == sRoamerLocation[MAP_GRP] && mapNum == sRoamerLocation[MAP_NUM])
return TRUE; return TRUE;
else else
return FALSE; return FALSE;
@@ -181,20 +205,24 @@ bool8 IsRoamerAt(u8 mapGroup, u8 mapNum)
void CreateRoamerMonInstance(void) void CreateRoamerMonInstance(void)
{ {
struct Pokemon *mon; u32 status;
struct Roamer *roamer; struct Pokemon *mon = &gEnemyParty[0];
mon = &gEnemyParty[0];
ZeroEnemyPartyMons(); ZeroEnemyPartyMons();
roamer = &saveRoamer; CreateMonWithIVsPersonality(mon, ROAMER->species, ROAMER->level, ROAMER->ivs, ROAMER->personality);
CreateMonWithIVsPersonality(mon, roamer->species, roamer->level, roamer->ivs, roamer->personality); // The roamer's status field is u8, but SetMonData expects status to be u32, so will set the roamer's status
SetMonData(mon, MON_DATA_STATUS, &gSaveBlock1Ptr->roamer.status); // using the status field and the following 3 bytes (cool, beauty, and cute).
SetMonData(mon, MON_DATA_HP, &gSaveBlock1Ptr->roamer.hp); #ifdef BUGFIX
SetMonData(mon, MON_DATA_COOL, &gSaveBlock1Ptr->roamer.cool); status = ROAMER->status;
SetMonData(mon, MON_DATA_BEAUTY, &gSaveBlock1Ptr->roamer.beauty); SetMonData(mon, MON_DATA_STATUS, &status);
SetMonData(mon, MON_DATA_CUTE, &gSaveBlock1Ptr->roamer.cute); #else
SetMonData(mon, MON_DATA_SMART, &gSaveBlock1Ptr->roamer.smart); SetMonData(mon, MON_DATA_STATUS, &ROAMER->status);
SetMonData(mon, MON_DATA_TOUGH, &gSaveBlock1Ptr->roamer.tough); #endif
SetMonData(mon, MON_DATA_HP, &ROAMER->hp);
SetMonData(mon, MON_DATA_COOL, &ROAMER->cool);
SetMonData(mon, MON_DATA_BEAUTY, &ROAMER->beauty);
SetMonData(mon, MON_DATA_CUTE, &ROAMER->cute);
SetMonData(mon, MON_DATA_SMART, &ROAMER->smart);
SetMonData(mon, MON_DATA_TOUGH, &ROAMER->tough);
} }
bool8 TryStartRoamerEncounter(void) bool8 TryStartRoamerEncounter(void)
@@ -211,16 +239,15 @@ bool8 TryStartRoamerEncounter(void)
} }
void UpdateRoamerHPStatus(struct Pokemon *mon) void UpdateRoamerHPStatus(struct Pokemon *mon)
{ {
saveRoamer.hp = GetMonData(mon, MON_DATA_HP); ROAMER->hp = GetMonData(mon, MON_DATA_HP);
saveRoamer.status = GetMonData(mon, MON_DATA_STATUS); ROAMER->status = GetMonData(mon, MON_DATA_STATUS);
RoamerMoveToOtherLocationSet(); RoamerMoveToOtherLocationSet();
} }
void SetRoamerInactive(void) void SetRoamerInactive(void)
{ {
struct Roamer *roamer = &saveRoamer; ROAMER->active = FALSE;
roamer->active = FALSE;
} }
void GetRoamerLocation(u8 *mapGroup, u8 *mapNum) void GetRoamerLocation(u8 *mapGroup, u8 *mapNum)
@@ -231,8 +258,7 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum)
u16 GetRoamerLocationMapSectionId(void) u16 GetRoamerLocationMapSectionId(void)
{ {
struct Roamer *roamer = &saveRoamer; if (!ROAMER->active)
if (!saveRoamer.active)
return MAPSEC_NONE; return MAPSEC_NONE;
return Overworld_GetMapHeaderByGroupAndId(sRoamerLocation[MAP_GRP], sRoamerLocation[MAP_NUM])->regionMapSectionId; return Overworld_GetMapHeaderByGroupAndId(sRoamerLocation[MAP_GRP], sRoamerLocation[MAP_NUM])->regionMapSectionId;
} }
+5 -4
View File
@@ -2,6 +2,7 @@
#include "script.h" #include "script.h"
#include "event_data.h" #include "event_data.h"
#include "quest_log.h" #include "quest_log.h"
#include "constants/maps.h"
#define RAM_SCRIPT_MAGIC 51 #define RAM_SCRIPT_MAGIC 51
#define SCRIPT_STACK_SIZE 20 #define SCRIPT_STACK_SIZE 20
@@ -511,9 +512,9 @@ bool32 ValidateRamScript(void)
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data; struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (scriptData->magic != RAM_SCRIPT_MAGIC) if (scriptData->magic != RAM_SCRIPT_MAGIC)
return FALSE; return FALSE;
if (scriptData->mapGroup != 0xFF) if (scriptData->mapGroup != MAP_GROUP(UNDEFINED))
return FALSE; return FALSE;
if (scriptData->mapNum != 0xFF) if (scriptData->mapNum != MAP_NUM(UNDEFINED))
return FALSE; return FALSE;
if (scriptData->objectId != 0xFF) if (scriptData->objectId != 0xFF)
return FALSE; return FALSE;
@@ -529,9 +530,9 @@ u8 *sub_8069E48(void)
return NULL; return NULL;
if (scriptData->magic != RAM_SCRIPT_MAGIC) if (scriptData->magic != RAM_SCRIPT_MAGIC)
return NULL; return NULL;
if (scriptData->mapGroup != 0xFF) if (scriptData->mapGroup != MAP_GROUP(UNDEFINED))
return NULL; return NULL;
if (scriptData->mapNum != 0xFF) if (scriptData->mapNum != MAP_NUM(UNDEFINED))
return NULL; return NULL;
if (scriptData->objectId != 0xFF) if (scriptData->objectId != 0xFF)
return NULL; return NULL;
+6 -8
View File
@@ -10,6 +10,7 @@
#include "constants/battle_setup.h" #include "constants/battle_setup.h"
#include "constants/event_object_movement.h" #include "constants/event_object_movement.h"
#include "constants/event_objects.h" #include "constants/event_objects.h"
#include "constants/trainer_types.h"
typedef u8 (*TrainerApproachFunc)(struct ObjectEvent *, s16, s16, s16); typedef u8 (*TrainerApproachFunc)(struct ObjectEvent *, s16, s16, s16);
typedef bool8 (*TrainerSeeFunc)(u8, struct Task *, struct ObjectEvent *); typedef bool8 (*TrainerSeeFunc)(u8, struct Task *, struct ObjectEvent *);
@@ -93,12 +94,9 @@ bool8 CheckForTrainersWantingBattle(void)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++) for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{ {
if (gObjectEvents[i].active if (gObjectEvents[i].active
&& ( && (gObjectEvents[i].trainerType == TRAINER_TYPE_NORMAL
gObjectEvents[i].trainerType == 1 || gObjectEvents[i].trainerType == TRAINER_TYPE_BURIED)
|| gObjectEvents[i].trainerType == 3 && CheckTrainer(i))
)
&& CheckTrainer(i)
)
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
@@ -129,12 +127,12 @@ static u8 GetTrainerApproachDistance(struct ObjectEvent *trainerObj)
u8 approachDistance; u8 approachDistance;
PlayerGetDestCoords(&x, &y); PlayerGetDestCoords(&x, &y);
if (trainerObj->trainerType == 1) // can only see in one direction if (trainerObj->trainerType == TRAINER_TYPE_NORMAL) // can only see in one direction
{ {
approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->facingDirection - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->facingDirection - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
return CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, trainerObj->facingDirection); return CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, trainerObj->facingDirection);
} }
else // can see in all directions else // TRAINER_TYPE_SEE_ALL_DIRECTIONS, TRAINER_TYPE_BURIED
{ {
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
+6 -9
View File
@@ -638,14 +638,11 @@ void VsSeekerResetObjectMovementAfterChargeComplete(void)
for (i = 0; i < gMapHeader.events->objectEventCount; i++) for (i = 0; i < gMapHeader.events->objectEventCount; i++)
{ {
if (( if ((templates[i].objUnion.normal.trainerType == TRAINER_TYPE_NORMAL
templates[i].objUnion.normal.trainerType == TRAINER_TYPE_NORMAL || templates[i].objUnion.normal.trainerType == TRAINER_TYPE_BURIED)
|| templates[i].objUnion.normal.trainerType == TRAINER_TYPE_BURIED && (templates[i].objUnion.normal.movementType == MOVEMENT_TYPE_VS_SEEKER_4D
) && ( || templates[i].objUnion.normal.movementType == MOVEMENT_TYPE_VS_SEEKER_4E
templates[i].objUnion.normal.movementType == MOVEMENT_TYPE_VS_SEEKER_4D || templates[i].objUnion.normal.movementType == MOVEMENT_TYPE_VS_SEEKER_4F))
|| templates[i].objUnion.normal.movementType == MOVEMENT_TYPE_VS_SEEKER_4E
|| templates[i].objUnion.normal.movementType == MOVEMENT_TYPE_VS_SEEKER_4F
))
{ {
movementType = GetRandomFaceDirectionMovementType(); movementType = GetRandomFaceDirectionMovementType();
TryGetObjectEventIdByLocalIdAndMap(templates[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objEventId); TryGetObjectEventIdByLocalIdAndMap(templates[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objEventId);
@@ -808,7 +805,7 @@ static void GatherNearbyTrainerInfo(void)
for (objectEventIdx = 0; objectEventIdx < gMapHeader.events->objectEventCount; objectEventIdx++) for (objectEventIdx = 0; objectEventIdx < gMapHeader.events->objectEventCount; objectEventIdx++)
{ {
if (templates[objectEventIdx].objUnion.normal.trainerType == 1 || templates[objectEventIdx].objUnion.normal.trainerType == 3) if (templates[objectEventIdx].objUnion.normal.trainerType == TRAINER_TYPE_NORMAL || templates[objectEventIdx].objUnion.normal.trainerType == TRAINER_TYPE_BURIED)
{ {
sVsSeeker->trainerInfo[vsSeekerObjectIdx].script = templates[objectEventIdx].script; sVsSeeker->trainerInfo[vsSeekerObjectIdx].script = templates[objectEventIdx].script;
sVsSeeker->trainerInfo[vsSeekerObjectIdx].trainerIdx = GetTrainerFlagFromScript(templates[objectEventIdx].script); sVsSeeker->trainerInfo[vsSeekerObjectIdx].trainerIdx = GetTrainerFlagFromScript(templates[objectEventIdx].script);
+1 -1
View File
@@ -182,7 +182,7 @@ static u16 GetCurrentMapWildMonHeaderId(void)
for (i = 0; ; i++) for (i = 0; ; i++)
{ {
const struct WildPokemonHeader * wildHeader = &gWildMonHeaders[i]; const struct WildPokemonHeader * wildHeader = &gWildMonHeaders[i];
if (wildHeader->mapGroup == 0xFF) if (wildHeader->mapGroup == MAP_GROUP(UNDEFINED))
break; break;
if (gWildMonHeaders[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && if (gWildMonHeaders[i].mapGroup == gSaveBlock1Ptr->location.mapGroup &&
+2 -1
View File
@@ -6,6 +6,7 @@
#include "overworld.h" #include "overworld.h"
#include "pokedex_area_markers.h" #include "pokedex_area_markers.h"
#include "constants/region_map_sections.h" #include "constants/region_map_sections.h"
#include "constants/maps.h"
struct SeviiDexArea struct SeviiDexArea
{ {
@@ -181,7 +182,7 @@ s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites)
alteringCaveNum = VarGet(VAR_ALTERING_CAVE_WILD_SET); alteringCaveNum = VarGet(VAR_ALTERING_CAVE_WILD_SET);
if (alteringCaveNum > 8) if (alteringCaveNum > 8)
alteringCaveNum = 0; alteringCaveNum = 0;
for (i = 0, areaCount = 0; gWildMonHeaders[i].mapGroup != 0xFF; i++) for (i = 0, areaCount = 0; gWildMonHeaders[i].mapGroup != MAP_GROUP(UNDEFINED); i++)
{ {
mapSecId = GetMapSecIdFromWildMonHeader(&gWildMonHeaders[i]); mapSecId = GetMapSecIdFromWildMonHeader(&gWildMonHeaders[i]);
if (mapSecId == MAPSEC_ALTERING_CAVE) if (mapSecId == MAPSEC_ALTERING_CAVE)