Merge branch 'master' into clone-union
This commit is contained in:
+25
-13
@@ -14,10 +14,10 @@
|
||||
create_movement face_up_fast
|
||||
create_movement face_left_fast
|
||||
create_movement face_right_fast
|
||||
create_movement walk_slowest_down
|
||||
create_movement walk_slowest_up
|
||||
create_movement walk_slowest_left
|
||||
create_movement walk_slowest_right
|
||||
create_movement walk_slower_down
|
||||
create_movement walk_slower_up
|
||||
create_movement walk_slower_left
|
||||
create_movement walk_slower_right
|
||||
create_movement walk_slow_down
|
||||
create_movement walk_slow_up
|
||||
create_movement walk_slow_left
|
||||
@@ -55,10 +55,10 @@
|
||||
create_movement walk_in_place_fastest_up
|
||||
create_movement walk_in_place_fastest_left
|
||||
create_movement walk_in_place_fastest_right
|
||||
create_movement face_down_slow
|
||||
create_movement face_up_slow
|
||||
create_movement face_left_slow
|
||||
create_movement face_right_slow
|
||||
create_movement ride_water_current_down
|
||||
create_movement ride_water_current_up
|
||||
create_movement ride_water_current_lefft
|
||||
create_movement ride_water_current_right
|
||||
create_movement walk_fastest_down
|
||||
create_movement walk_fastest_up
|
||||
create_movement walk_fastest_left
|
||||
@@ -113,12 +113,24 @@
|
||||
create_movement rock_smash_break
|
||||
create_movement cut_tree
|
||||
|
||||
enum_start 0x91
|
||||
create_movement step_91
|
||||
create_movement step_92
|
||||
enum_start 0x94
|
||||
create_movement spin_down
|
||||
create_movement spin_up
|
||||
create_movement spin_left
|
||||
create_movement spin_right
|
||||
|
||||
enum_start 0x96
|
||||
create_movement step_96
|
||||
enum_start 0x9b
|
||||
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
|
||||
create_movement step_end
|
||||
|
||||
@@ -115,11 +115,11 @@ BirthIsland_Exterior_EventScript_RanFromDeoxys:: @ 8165348
|
||||
end
|
||||
|
||||
Movement_DeoxysApproach: @ 8165353
|
||||
walk_slowest_down
|
||||
walk_slowest_down
|
||||
walk_slowest_down
|
||||
walk_slowest_down
|
||||
walk_slowest_down
|
||||
walk_slowest_down
|
||||
walk_slowest_down
|
||||
walk_slower_down
|
||||
walk_slower_down
|
||||
walk_slower_down
|
||||
walk_slower_down
|
||||
walk_slower_down
|
||||
walk_slower_down
|
||||
walk_slower_down
|
||||
step_end
|
||||
|
||||
@@ -251,8 +251,8 @@ CinnabarIsland_Movement_BoatArrive:: @ 8167195
|
||||
walk_fast_left
|
||||
walk_fast_left
|
||||
walk_left
|
||||
walk_slowest_left
|
||||
walk_slowest_left
|
||||
walk_slower_left
|
||||
walk_slower_left
|
||||
step_end
|
||||
|
||||
CinnabarIsland_Movement_BillBoardBoat:: @ 816719D
|
||||
|
||||
@@ -170,7 +170,7 @@ FourIsland_PokemonDayCare_Movement_RetrieveMon:: @ 8171B71
|
||||
delay_16
|
||||
delay_16
|
||||
face_up
|
||||
walk_slowest_up
|
||||
walk_slower_up
|
||||
set_invisible
|
||||
delay_16
|
||||
delay_16
|
||||
@@ -179,7 +179,7 @@ FourIsland_PokemonDayCare_Movement_RetrieveMon:: @ 8171B71
|
||||
delay_16
|
||||
face_down
|
||||
set_visible
|
||||
walk_slowest_down
|
||||
walk_slower_down
|
||||
step_end
|
||||
|
||||
@ Unused. Possibly a commented script, or a typo end added to the above Movement script
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
"x": 36,
|
||||
"y": 15,
|
||||
"elevation": 3,
|
||||
"movement_type": "MOVEMENT_TYPE_WANDER_AROUND_SLOWEST",
|
||||
"movement_type": "MOVEMENT_TYPE_WANDER_AROUND_SLOWER",
|
||||
"movement_range_x": 4,
|
||||
"movement_range_y": 1,
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"movement_type": "MOVEMENT_TYPE_FACE_DOWN",
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "66",
|
||||
"trainer_type": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_1",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "EventScript_StrengthBoulder",
|
||||
"flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_1"
|
||||
@@ -38,7 +38,7 @@
|
||||
"movement_type": "MOVEMENT_TYPE_FACE_DOWN",
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "67",
|
||||
"trainer_type": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_2",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "EventScript_StrengthBoulder",
|
||||
"flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_2"
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"movement_type": "MOVEMENT_TYPE_FACE_DOWN",
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "68",
|
||||
"trainer_type": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_1",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "EventScript_StrengthBoulder",
|
||||
"flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_1"
|
||||
@@ -38,7 +38,7 @@
|
||||
"movement_type": "MOVEMENT_TYPE_FACE_DOWN",
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "69",
|
||||
"trainer_type": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_2",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "EventScript_StrengthBoulder",
|
||||
"flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_2"
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"movement_type": "MOVEMENT_TYPE_FACE_DOWN",
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "70",
|
||||
"trainer_type": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_1",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "EventScript_StrengthBoulder",
|
||||
"flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_1"
|
||||
@@ -38,7 +38,7 @@
|
||||
"movement_type": "MOVEMENT_TYPE_FACE_DOWN",
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "71",
|
||||
"trainer_type": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_2",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "EventScript_StrengthBoulder",
|
||||
"flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_2"
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
"movement_type": "MOVEMENT_TYPE_FACE_DOWN",
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "77",
|
||||
"trainer_type": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_2",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "EventScript_StrengthBoulder",
|
||||
"flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_5"
|
||||
@@ -94,7 +94,7 @@
|
||||
"movement_type": "MOVEMENT_TYPE_FACE_DOWN",
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "76",
|
||||
"trainer_type": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_1",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "EventScript_StrengthBoulder",
|
||||
"flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_3"
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
"movement_type": "MOVEMENT_TYPE_FACE_DOWN",
|
||||
"movement_range_x": 0,
|
||||
"movement_range_y": 0,
|
||||
"trainer_type": "88",
|
||||
"trainer_type": "FLAG_HIDE_VICTORY_ROAD_2F_BOULDER",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "EventScript_StrengthBoulder",
|
||||
"flag": "FLAG_HIDE_VICTORY_ROAD_3F_BOULDER"
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
#define MOVEMENT_TYPE_VS_SEEKER_4D 0x4D
|
||||
#define MOVEMENT_TYPE_VS_SEEKER_4E 0x4E
|
||||
#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_ACTION_FACE_DOWN 0x0
|
||||
@@ -93,10 +93,10 @@
|
||||
#define MOVEMENT_ACTION_FACE_UP_FAST 0x5
|
||||
#define MOVEMENT_ACTION_FACE_LEFT_FAST 0x6
|
||||
#define MOVEMENT_ACTION_FACE_RIGHT_FAST 0x7
|
||||
#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN 0x8
|
||||
#define MOVEMENT_ACTION_WALK_SLOWEST_UP 0x9
|
||||
#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT 0xA
|
||||
#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT 0xB
|
||||
#define MOVEMENT_ACTION_WALK_SLOWER_DOWN 0x8
|
||||
#define MOVEMENT_ACTION_WALK_SLOWER_UP 0x9
|
||||
#define MOVEMENT_ACTION_WALK_SLOWER_LEFT 0xA
|
||||
#define MOVEMENT_ACTION_WALK_SLOWER_RIGHT 0xB
|
||||
#define MOVEMENT_ACTION_WALK_SLOW_DOWN 0xC
|
||||
#define MOVEMENT_ACTION_WALK_SLOW_UP 0xD
|
||||
#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_LEFT 0x2F
|
||||
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT 0x30
|
||||
#define MOVEMENT_ACTION_FACE_DOWN_SLOW 0x31
|
||||
#define MOVEMENT_ACTION_FACE_UP_SLOW 0x32
|
||||
#define MOVEMENT_ACTION_FACE_LEFT_SLOW 0x33
|
||||
#define MOVEMENT_ACTION_FACE_RIGHT_SLOW 0x34
|
||||
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN 0x31
|
||||
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP 0x32
|
||||
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT 0x33
|
||||
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT 0x34
|
||||
#define MOVEMENT_ACTION_WALK_FASTEST_DOWN 0x35
|
||||
#define MOVEMENT_ACTION_WALK_FASTEST_UP 0x36
|
||||
#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_LEFT 0x92
|
||||
#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_DOWN 0xA5
|
||||
|
||||
// Duplicates of JUMP_SPECIAL?
|
||||
#define MOVEMENT_ACTION_0xA6 0xA6
|
||||
#define MOVEMENT_ACTION_0xA7 0xA7
|
||||
#define MOVEMENT_ACTION_0xA8 0xA8
|
||||
#define MOVEMENT_ACTION_0xA9 0xA9
|
||||
#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN 0xA6
|
||||
#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_UP 0xA7
|
||||
#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_LEFT 0xA8
|
||||
#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT 0xA9
|
||||
|
||||
#define MOVEMENT_ACTION_STEP_END 0xFE
|
||||
|
||||
|
||||
@@ -209,8 +209,14 @@
|
||||
#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 8
|
||||
#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 EV_ITEM_RAISE_LIMIT 100
|
||||
|
||||
#define PARTY_SIZE 6
|
||||
#define UNOWN_FORM_COUNT 28
|
||||
#define BOX_NAME_LENGTH 8
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ bool8 TryGetObjectEventIdByLocalIdAndMap(u8, u8, u8, u8 *);
|
||||
u8 GetObjectEventIdByXY(s16, s16);
|
||||
void SetObjectEventDirection(struct ObjectEvent *, u8);
|
||||
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 LoadSpecialObjectReflectionPalette(u16, u8);
|
||||
void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16);
|
||||
@@ -124,7 +124,7 @@ u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent);
|
||||
u8 GetWalkNormalMovementAction(u32);
|
||||
u8 GetWalkFastMovementAction(u32);
|
||||
u8 GetWalkFastestMovementAction(u32);
|
||||
u8 GetWalkSlowestMovementAction(u32 direction);
|
||||
u8 GetWalkSlowerMovementAction(u32 direction);
|
||||
u8 GetTrainerFacingDirectionMovementType(u8 direction);
|
||||
u8 GetFaceDirectionMovementAction(u32);
|
||||
u8 GetFaceDirectionFastMovementAction(u32);
|
||||
@@ -134,7 +134,7 @@ u8 GetSlideMovementAction(u32);
|
||||
u8 GetJumpInPlaceMovementAction(u32);
|
||||
u8 GetJumpMovementAction(u32);
|
||||
u8 GetJump2MovementAction(u32);
|
||||
bool8 NpcTakeStep(struct Sprite *sprite);
|
||||
bool8 UpdateWalkSlowerAnim(struct Sprite *sprite);
|
||||
void SetJumpSpriteData(struct Sprite *, u8, u8, u8);
|
||||
u8 DoJumpSpriteMovement(struct Sprite *);
|
||||
u8 DoJumpSpecialSpriteMovement(struct Sprite *);
|
||||
@@ -171,16 +171,16 @@ void UpdateObjectEventsForCameraUpdate(s16 x, s16 y);
|
||||
void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *);
|
||||
void SetMovementDelay(struct Sprite *, s16);
|
||||
bool8 WaitForMovementDelay(struct Sprite *);
|
||||
void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
|
||||
bool8 obj_npc_ministep(struct Sprite *sprite);
|
||||
void SetSpriteDataForNormalStep(struct Sprite *, u8);
|
||||
void SetSpriteDataForNormalStep2(struct Sprite *, u8);
|
||||
void SetSpriteDataForNormalStep(struct Sprite *, u8, u8);
|
||||
bool8 NpcTakeStep(struct Sprite *sprite);
|
||||
void SetWalkSlowerSpriteData(struct Sprite *, u8);
|
||||
void SetWalkSlowestSpriteData(struct Sprite *, u8);
|
||||
bool8 UpdateWalkSlowestAnim(struct Sprite *sprite);
|
||||
void SetWalkSlowSpriteData(struct Sprite *, u8);
|
||||
bool8 UpdateWalkSlowAnim(struct Sprite *sprite);
|
||||
void SetSpriteDataForNormalStep3(struct Sprite *, u8);
|
||||
bool8 sub_8068C18(struct Sprite *sprite);
|
||||
void DoShadowFieldEffect(struct ObjectEvent *);
|
||||
void SetSpriteDataForNormalStep4(struct Sprite *, u8);
|
||||
bool8 sub_8068CB4(struct Sprite *sprite);
|
||||
void SetRunSlowSpriteData(struct Sprite *, u8);
|
||||
bool8 UpdateRunSlowAnim(struct Sprite *sprite);
|
||||
void SetAndStartSpriteAnim(struct Sprite *, u8, u8);
|
||||
bool8 SpriteAnimEnded(struct Sprite *);
|
||||
u8 ObjectEventGetHeldMovementActionId(struct ObjectEvent *objectEvent);
|
||||
@@ -212,7 +212,7 @@ u8 GetJumpInPlaceTurnAroundMovementAction(u32 direction);
|
||||
u8 GetAcroWheelieInPlaceDirectionMovementAction(u32 direction);
|
||||
u8 GetAcroPopWheelieMoveDirectionMovementAction(u32 direction);
|
||||
u8 GetAcroWheelieMoveDirectionMovementAction(u32 direction);
|
||||
u8 sub_80641EC(u32 direction);
|
||||
u8 GetJumpSpecialWithEffectMovementAction(u32 direction);
|
||||
u8 GetFishingBiteDirectionAnimNum(u8 direction);
|
||||
void TrySpawnObjectEvents(s16 cameraX, s16 cameraY);
|
||||
void ResetObjectEvents(void);
|
||||
|
||||
@@ -56,7 +56,7 @@ void PlayerFaceDirection(u8 direction);
|
||||
void PlayerFaceDirectionFast(u8 direction);
|
||||
void PlayerTurnInPlace(u8 direction);
|
||||
void PlayerJumpLedge(u8 direction);
|
||||
void sub_805C260(void);
|
||||
void PlayerShakeHead(void);
|
||||
void player_step(u8 direction, u16 newKeys, u16 heldKeys);
|
||||
bool32 PlayerIsMovingOnRockStairs(u8 direction);
|
||||
void UpdatePlayerAvatarTransitionState(void);
|
||||
|
||||
+7
-1
@@ -211,7 +211,13 @@ static void CreateBattleStartTask(u8 transition, u16 song) // song == 0 means de
|
||||
static bool8 CheckSilphScopeInPokemonTower(u16 mapGroup, u16 mapNum)
|
||||
{
|
||||
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)))
|
||||
return TRUE;
|
||||
else
|
||||
|
||||
@@ -471,10 +471,10 @@ bool8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite
|
||||
[MOVEMENT_ACTION_FACE_UP_FAST] = sMovementActionFuncs_x05,
|
||||
[MOVEMENT_ACTION_FACE_LEFT_FAST] = sMovementActionFuncs_x06,
|
||||
[MOVEMENT_ACTION_FACE_RIGHT_FAST] = sMovementActionFuncs_x07,
|
||||
[MOVEMENT_ACTION_WALK_SLOWEST_DOWN] = sMovementActionFuncs_x08,
|
||||
[MOVEMENT_ACTION_WALK_SLOWEST_UP] = sMovementActionFuncs_x09,
|
||||
[MOVEMENT_ACTION_WALK_SLOWEST_LEFT] = sMovementActionFuncs_x0A,
|
||||
[MOVEMENT_ACTION_WALK_SLOWEST_RIGHT] = sMovementActionFuncs_x0B,
|
||||
[MOVEMENT_ACTION_WALK_SLOWER_DOWN] = sMovementActionFuncs_x08,
|
||||
[MOVEMENT_ACTION_WALK_SLOWER_UP] = sMovementActionFuncs_x09,
|
||||
[MOVEMENT_ACTION_WALK_SLOWER_LEFT] = sMovementActionFuncs_x0A,
|
||||
[MOVEMENT_ACTION_WALK_SLOWER_RIGHT] = sMovementActionFuncs_x0B,
|
||||
[MOVEMENT_ACTION_WALK_SLOW_DOWN] = sMovementActionFuncs_x0C,
|
||||
[MOVEMENT_ACTION_WALK_SLOW_UP] = sMovementActionFuncs_x0D,
|
||||
[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_LEFT] = sMovementActionFuncs_x2F,
|
||||
[MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT] = sMovementActionFuncs_x30,
|
||||
[MOVEMENT_ACTION_FACE_DOWN_SLOW] = sMovementActionFuncs_x31,
|
||||
[MOVEMENT_ACTION_FACE_UP_SLOW] = sMovementActionFuncs_x32,
|
||||
[MOVEMENT_ACTION_FACE_LEFT_SLOW] = sMovementActionFuncs_x33,
|
||||
[MOVEMENT_ACTION_FACE_RIGHT_SLOW] = sMovementActionFuncs_x34,
|
||||
[MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN] = sMovementActionFuncs_x31,
|
||||
[MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP] = sMovementActionFuncs_x32,
|
||||
[MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT] = sMovementActionFuncs_x33,
|
||||
[MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT] = sMovementActionFuncs_x34,
|
||||
[MOVEMENT_ACTION_WALK_FASTEST_DOWN] = sMovementActionFuncs_x35,
|
||||
[MOVEMENT_ACTION_WALK_FASTEST_UP] = sMovementActionFuncs_x36,
|
||||
[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_LEFT] = sMovementActionFuncs_x92,
|
||||
[MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT] = sMovementActionFuncs_x93,
|
||||
[MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN] = sMovementActionFuncs_x94,
|
||||
[MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP] = sMovementActionFuncs_x95,
|
||||
[MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT] = sMovementActionFuncs_x96,
|
||||
[MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT] = sMovementActionFuncs_x97,
|
||||
[MOVEMENT_ACTION_SPIN_DOWN] = sMovementActionFuncs_x94,
|
||||
[MOVEMENT_ACTION_SPIN_UP] = sMovementActionFuncs_x95,
|
||||
[MOVEMENT_ACTION_SPIN_LEFT] = sMovementActionFuncs_x96,
|
||||
[MOVEMENT_ACTION_SPIN_RIGHT] = sMovementActionFuncs_x97,
|
||||
[MOVEMENT_ACTION_0x98] = sMovementActionFuncs_x98,
|
||||
[MOVEMENT_ACTION_0x99] = sMovementActionFuncs_x99,
|
||||
[MOVEMENT_ACTION_0x9A] = sMovementActionFuncs_x9A,
|
||||
[MOVEMENT_ACTION_0x9B] = sMovementActionFuncs_x9B,
|
||||
[MOVEMENT_ACTION_0x9C] = sMovementActionFuncs_x9C,
|
||||
[MOVEMENT_ACTION_0x9D] = sMovementActionFuncs_x9D,
|
||||
[MOVEMENT_ACTION_0x9E] = sMovementActionFuncs_x9E,
|
||||
[MOVEMENT_ACTION_0x9F] = sMovementActionFuncs_x9F,
|
||||
[MOVEMENT_ACTION_WALK_SLOWEST_DOWN] = sMovementActionFuncs_x9B,
|
||||
[MOVEMENT_ACTION_WALK_SLOWEST_UP] = sMovementActionFuncs_x9C,
|
||||
[MOVEMENT_ACTION_WALK_SLOWEST_LEFT] = sMovementActionFuncs_x9D,
|
||||
[MOVEMENT_ACTION_WALK_SLOWEST_RIGHT] = sMovementActionFuncs_x9E,
|
||||
[MOVEMENT_ACTION_SHAKE_HEAD] = sMovementActionFuncs_x9F,
|
||||
[MOVEMENT_ACTION_0xA0] = sMovementActionFuncs_xA0,
|
||||
[MOVEMENT_ACTION_0xA1] = sMovementActionFuncs_xA1,
|
||||
[MOVEMENT_ACTION_0xA2] = sMovementActionFuncs_xA2,
|
||||
[MOVEMENT_ACTION_0xA3] = sMovementActionFuncs_xA3,
|
||||
[MOVEMENT_ACTION_FLY_UP] = sMovementActionFuncs_xA4,
|
||||
[MOVEMENT_ACTION_FLY_DOWN] = sMovementActionFuncs_xA5,
|
||||
[MOVEMENT_ACTION_0xA6] = sMovementActionFuncs_xA6,
|
||||
[MOVEMENT_ACTION_0xA7] = sMovementActionFuncs_xA7,
|
||||
[MOVEMENT_ACTION_0xA8] = sMovementActionFuncs_xA8,
|
||||
[MOVEMENT_ACTION_0xA9] = sMovementActionFuncs_xA9,
|
||||
[MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN] = sMovementActionFuncs_xA6,
|
||||
[MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_UP] = sMovementActionFuncs_xA7,
|
||||
[MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_LEFT] = sMovementActionFuncs_xA8,
|
||||
[MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT] = sMovementActionFuncs_xA9,
|
||||
};
|
||||
|
||||
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_Step4(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_LookAround_Step0(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,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WanderAroundSlowest[])(struct ObjectEvent *, struct Sprite *) = {
|
||||
u8 (*const gMovementTypeFuncs_WanderAroundSlower[])(struct ObjectEvent *, struct Sprite *) = {
|
||||
MovementType_WanderAround_Step0,
|
||||
MovementType_WanderAround_Step1,
|
||||
MovementType_WanderAround_Step2,
|
||||
MovementType_WanderAround_Step3,
|
||||
MovementType_WanderAround_Step4,
|
||||
MovementType_WanderAround_Step5Slowest,
|
||||
MovementType_WanderAround_Step5Slower,
|
||||
MovementType_WanderAround_Step6,
|
||||
};
|
||||
|
||||
|
||||
+576
-587
File diff suppressed because it is too large
Load Diff
@@ -1069,7 +1069,7 @@ void HandleBoulderFallThroughHole(struct ObjectEvent * object)
|
||||
{
|
||||
PlaySE(SE_FALL);
|
||||
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
@@ -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)
|
||||
{
|
||||
ObjectEventSetHeldMovement(playerObj, GetWalkSlowestMovementAction(DIR_NORTH));
|
||||
ObjectEventSetHeldMovement(playerObj, GetWalkSlowerMovementAction(DIR_NORTH));
|
||||
task->data[0]++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/metatile_behaviors.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/trainer_types.h"
|
||||
|
||||
static EWRAM_DATA struct ObjectEvent * sPlayerObjectPtr = NULL;
|
||||
static EWRAM_DATA u8 sTeleportSavedFacingDirection = DIR_NONE;
|
||||
@@ -831,7 +832,7 @@ static void QL_TryRecordNPCStepWithDuration32(struct ObjectEvent * objectEvent,
|
||||
|
||||
void PlayerGoSlowest(u8 direction)
|
||||
{
|
||||
PlayerSetAnimId(GetWalkSlowestMovementAction(direction), 2);
|
||||
PlayerSetAnimId(GetWalkSlowerMovementAction(direction), 2);
|
||||
}
|
||||
|
||||
void PlayerGoSlow(u8 direction)
|
||||
@@ -908,9 +909,9 @@ void PlayerJumpLedge(u8 direction)
|
||||
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)
|
||||
@@ -1295,7 +1296,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
|
||||
playerObjEventTemplate.objUnion.normal.movementType = MOVEMENT_TYPE_PLAYER;
|
||||
playerObjEventTemplate.objUnion.normal.movementRangeX = 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.script = NULL;
|
||||
playerObjEventTemplate.flagId = 0;
|
||||
@@ -1428,7 +1429,7 @@ static bool8 DoBoulderDust(struct Task *task, struct ObjectEvent *playerObject,
|
||||
ObjectEventClearHeldMovementIfFinished(playerObject);
|
||||
ObjectEventClearHeldMovementIfFinished(strengthObject);
|
||||
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[1] = strengthObject->currentCoords.y;
|
||||
gFieldEffectArguments[2] = strengthObject->previousElevation;
|
||||
@@ -1560,7 +1561,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct Objec
|
||||
{
|
||||
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
{
|
||||
QL_TryRecordPlayerStepWithDuration0(objectEvent, GetWalkSlowestMovementAction(GetOppositeDirection(task->data[1])));
|
||||
QL_TryRecordPlayerStepWithDuration0(objectEvent, GetWalkSlowerMovementAction(GetOppositeDirection(task->data[1])));
|
||||
ScriptContext2_Disable();
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
DestroyTask(FindTaskIdByFunc(PlayerAvatar_DoSecretBaseMatSpin));
|
||||
@@ -1617,7 +1618,7 @@ static void Task_StopSurfingInit(u8 taskId)
|
||||
return;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -10,6 +10,7 @@
|
||||
#include "field_specials.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
static EWRAM_DATA const struct YesNoFuncTable *gUnknown_20399C8 = 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)
|
||||
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;
|
||||
else if (InUnionRoom() != TRUE)
|
||||
return TRUE;
|
||||
|
||||
+6
-3
@@ -521,9 +521,9 @@ static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId
|
||||
|
||||
static bool32 IsDummyWarp(struct WarpData *warp)
|
||||
{
|
||||
if (warp->mapGroup != -1)
|
||||
if (warp->mapGroup != (s8)MAP_GROUP(UNDEFINED))
|
||||
return FALSE;
|
||||
else if (warp->mapNum != -1)
|
||||
else if (warp->mapNum != (s8)MAP_NUM(UNDEFINED))
|
||||
return FALSE;
|
||||
else if (warp->warpId != -1)
|
||||
return FALSE;
|
||||
@@ -896,7 +896,10 @@ bool8 sub_8055B38(u16 metatileBehavior)
|
||||
{
|
||||
if (MetatileBehavior_IsSurfable(metatileBehavior) != TRUE)
|
||||
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 FALSE;
|
||||
}
|
||||
|
||||
+110
-84
@@ -5,53 +5,74 @@
|
||||
#include "constants/maps.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
|
||||
EWRAM_DATA u8 sLocationHistory[3][2] = {};
|
||||
EWRAM_DATA u8 sRoamerLocation[2] = {};
|
||||
|
||||
#define saveRoamer (*(&gSaveBlock1Ptr->roamer))
|
||||
// Despite having a variable to track it, the roamer is
|
||||
// hard-coded to only ever be in map group 3
|
||||
#define ROAMER_MAP_GROUP 3
|
||||
|
||||
enum
|
||||
{
|
||||
MAP_GRP = 0, // map group
|
||||
MAP_NUM = 1, // map number
|
||||
MAP_GRP, // map group
|
||||
MAP_NUM, // map number
|
||||
};
|
||||
|
||||
const u8 sRoamerLocations[][7] = {
|
||||
{MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE22), 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE2), MAP_NUM(ROUTE1), MAP_NUM(ROUTE3), MAP_NUM(ROUTE22), 0xff, 0xff, 0xff},
|
||||
{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 ROAMER (&gSaveBlock1Ptr->roamer)
|
||||
EWRAM_DATA u8 sLocationHistory[3][2] = {};
|
||||
EWRAM_DATA u8 sRoamerLocation[2] = {};
|
||||
|
||||
#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(ROUTE6), MAP_NUM(ROUTE5), MAP_NUM(ROUTE7), MAP_NUM(ROUTE8), MAP_NUM(ROUTE11), 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE7), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE8), MAP_NUM(ROUTE16), 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE8), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE7), MAP_NUM(ROUTE10), MAP_NUM(ROUTE12), 0xff},
|
||||
{MAP_NUM(ROUTE9), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE10), MAP_NUM(ROUTE24), 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE10), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE12), 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE11), MAP_NUM(ROUTE6), MAP_NUM(ROUTE12), 0xff, 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE12), MAP_NUM(ROUTE10), MAP_NUM(ROUTE11), MAP_NUM(ROUTE13), 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE13), MAP_NUM(ROUTE12), MAP_NUM(ROUTE14), 0xff, 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE14), MAP_NUM(ROUTE13), MAP_NUM(ROUTE15), 0xff, 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE15), MAP_NUM(ROUTE14), MAP_NUM(ROUTE18), MAP_NUM(ROUTE19), 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE16), MAP_NUM(ROUTE7), MAP_NUM(ROUTE17), 0xff, 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE17), MAP_NUM(ROUTE16), MAP_NUM(ROUTE18), 0xff, 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE18), MAP_NUM(ROUTE15), MAP_NUM(ROUTE17), MAP_NUM(ROUTE19), 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE19), MAP_NUM(ROUTE15), MAP_NUM(ROUTE18), MAP_NUM(ROUTE20), 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE20), MAP_NUM(ROUTE19), MAP_NUM(ROUTE21_NORTH), 0xff, 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE1), MAP_NUM(ROUTE20), 0xff, 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE22), MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE23), 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE23), MAP_NUM(ROUTE22), MAP_NUM(ROUTE2), 0xff, 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE24), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), 0xff, 0xff, 0xff},
|
||||
{MAP_NUM(ROUTE25), MAP_NUM(ROUTE24), MAP_NUM(ROUTE9), 0xff, 0xff, 0xff, 0xff},
|
||||
{0xff, 0xff, 0xff, 0xff, 0xff, 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), ___, ___},
|
||||
{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), ___, ___},
|
||||
{MAP_NUM(ROUTE10), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE12), ___, ___, ___},
|
||||
{MAP_NUM(ROUTE11), MAP_NUM(ROUTE6), MAP_NUM(ROUTE12), ___, ___, ___, ___},
|
||||
{MAP_NUM(ROUTE12), MAP_NUM(ROUTE10), MAP_NUM(ROUTE11), MAP_NUM(ROUTE13), ___, ___, ___},
|
||||
{MAP_NUM(ROUTE13), MAP_NUM(ROUTE12), MAP_NUM(ROUTE14), ___, ___, ___, ___},
|
||||
{MAP_NUM(ROUTE14), MAP_NUM(ROUTE13), MAP_NUM(ROUTE15), ___, ___, ___, ___},
|
||||
{MAP_NUM(ROUTE15), MAP_NUM(ROUTE14), MAP_NUM(ROUTE18), MAP_NUM(ROUTE19), ___, ___, ___},
|
||||
{MAP_NUM(ROUTE16), MAP_NUM(ROUTE7), MAP_NUM(ROUTE17), ___, ___, ___, ___},
|
||||
{MAP_NUM(ROUTE17), MAP_NUM(ROUTE16), MAP_NUM(ROUTE18), ___, ___, ___, ___},
|
||||
{MAP_NUM(ROUTE18), MAP_NUM(ROUTE15), MAP_NUM(ROUTE17), MAP_NUM(ROUTE19), ___, ___, ___},
|
||||
{MAP_NUM(ROUTE19), MAP_NUM(ROUTE15), MAP_NUM(ROUTE18), MAP_NUM(ROUTE20), ___, ___, ___},
|
||||
{MAP_NUM(ROUTE20), MAP_NUM(ROUTE19), MAP_NUM(ROUTE21_NORTH), ___, ___, ___, ___},
|
||||
{MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE1), MAP_NUM(ROUTE20), ___, ___, ___, ___},
|
||||
{MAP_NUM(ROUTE22), MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE23), ___, ___, ___},
|
||||
{MAP_NUM(ROUTE23), MAP_NUM(ROUTE22), MAP_NUM(ROUTE2), ___, ___, ___, ___},
|
||||
{MAP_NUM(ROUTE24), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), ___, ___, ___},
|
||||
{MAP_NUM(ROUTE25), MAP_NUM(ROUTE24), MAP_NUM(ROUTE9), ___, ___, ___, ___},
|
||||
{___, ___, ___, ___, ___, ___, ___}
|
||||
};
|
||||
|
||||
#undef ___
|
||||
#define NUM_LOCATION_SETS (ARRAY_COUNT(sRoamerLocations) - 1)
|
||||
#define NUM_LOCATIONS_PER_SET (ARRAY_COUNT(sRoamerLocations[0]))
|
||||
|
||||
void ClearRoamerData(void)
|
||||
{
|
||||
u32 i;
|
||||
gSaveBlock1Ptr->roamer = (struct Roamer){};
|
||||
*ROAMER = (struct Roamer){};
|
||||
sRoamerLocation[MAP_GRP] = 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_NUM] = 0;
|
||||
@@ -77,24 +98,23 @@ void ClearRoamerData(void)
|
||||
|
||||
void CreateInitialRoamerMon(void)
|
||||
{
|
||||
struct Pokemon * tmpMon = &gEnemyParty[0];
|
||||
u16 roamerMon;
|
||||
|
||||
CreateMon(tmpMon, (roamerMon = GetRoamerSpecies()), 50, 0x20, 0, 0, 0, 0);
|
||||
saveRoamer.species = roamerMon;
|
||||
saveRoamer.level = 50;
|
||||
saveRoamer.status = 0;
|
||||
saveRoamer.active = TRUE;
|
||||
saveRoamer.ivs = GetMonData(tmpMon, MON_DATA_IVS);
|
||||
saveRoamer.personality = GetMonData(tmpMon, MON_DATA_PERSONALITY);
|
||||
saveRoamer.hp = GetMonData(tmpMon, MON_DATA_MAX_HP);
|
||||
saveRoamer.cool = GetMonData(tmpMon, MON_DATA_COOL);
|
||||
saveRoamer.beauty = GetMonData(tmpMon, MON_DATA_BEAUTY);
|
||||
saveRoamer.cute = GetMonData(tmpMon, MON_DATA_CUTE);
|
||||
saveRoamer.smart = GetMonData(tmpMon, MON_DATA_SMART);
|
||||
saveRoamer.tough = GetMonData(tmpMon, MON_DATA_TOUGH);
|
||||
sRoamerLocation[MAP_GRP] = 3;
|
||||
sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % (NELEMS(sRoamerLocations) - 1)][0];
|
||||
struct Pokemon * mon = &gEnemyParty[0];
|
||||
u16 species = GetRoamerSpecies();
|
||||
CreateMon(mon, species, 50, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0);
|
||||
ROAMER->species = species;
|
||||
ROAMER->level = 50;
|
||||
ROAMER->status = 0;
|
||||
ROAMER->active = TRUE;
|
||||
ROAMER->ivs = GetMonData(mon, MON_DATA_IVS);
|
||||
ROAMER->personality = GetMonData(mon, MON_DATA_PERSONALITY);
|
||||
ROAMER->hp = GetMonData(mon, MON_DATA_MAX_HP);
|
||||
ROAMER->cool = GetMonData(mon, MON_DATA_COOL);
|
||||
ROAMER->beauty = GetMonData(mon, MON_DATA_BEAUTY);
|
||||
ROAMER->cute = GetMonData(mon, MON_DATA_CUTE);
|
||||
ROAMER->smart = GetMonData(mon, MON_DATA_SMART);
|
||||
ROAMER->tough = GetMonData(mon, MON_DATA_TOUGH);
|
||||
sRoamerLocation[MAP_GRP] = ROAMER_MAP_GROUP;
|
||||
sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % NUM_LOCATION_SETS][0];
|
||||
}
|
||||
|
||||
void InitRoamer(void)
|
||||
@@ -107,8 +127,10 @@ void UpdateLocationHistoryForRoamer(void)
|
||||
{
|
||||
sLocationHistory[2][MAP_GRP] = sLocationHistory[1][MAP_GRP];
|
||||
sLocationHistory[2][MAP_NUM] = sLocationHistory[1][MAP_NUM];
|
||||
|
||||
sLocationHistory[1][MAP_GRP] = sLocationHistory[0][MAP_GRP];
|
||||
sLocationHistory[1][MAP_NUM] = sLocationHistory[0][MAP_NUM];
|
||||
|
||||
sLocationHistory[0][MAP_GRP] = gSaveBlock1Ptr->location.mapGroup;
|
||||
sLocationHistory[0][MAP_NUM] = gSaveBlock1Ptr->location.mapNum;
|
||||
}
|
||||
@@ -116,16 +138,17 @@ void UpdateLocationHistoryForRoamer(void)
|
||||
void RoamerMoveToOtherLocationSet(void)
|
||||
{
|
||||
u8 mapNum = 0;
|
||||
struct Roamer *roamer = &saveRoamer;
|
||||
|
||||
if (!roamer->active)
|
||||
if (!ROAMER->active)
|
||||
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)
|
||||
{
|
||||
mapNum = sRoamerLocations[Random() % (NELEMS(sRoamerLocations) - 1)][0];
|
||||
mapNum = sRoamerLocations[Random() % NUM_LOCATION_SETS][0];
|
||||
if (sRoamerLocation[MAP_NUM] != mapNum)
|
||||
{
|
||||
sRoamerLocation[MAP_NUM] = mapNum;
|
||||
@@ -145,20 +168,23 @@ void RoamerMove(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
struct Roamer *roamer = &saveRoamer;
|
||||
|
||||
if (!roamer->active)
|
||||
if (!ROAMER->active)
|
||||
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])
|
||||
{
|
||||
u8 mapNum;
|
||||
while (1)
|
||||
{
|
||||
mapNum = sRoamerLocations[locSet][(Random() % 6) + 1];
|
||||
if (!(sLocationHistory[2][MAP_GRP] == 3 && sLocationHistory[2][MAP_NUM] == mapNum) && mapNum != 0xFF)
|
||||
// Choose a new map (excluding the first) within this set
|
||||
// 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;
|
||||
}
|
||||
sRoamerLocation[MAP_NUM] = mapNum;
|
||||
@@ -171,9 +197,7 @@ void RoamerMove(void)
|
||||
|
||||
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;
|
||||
else
|
||||
return FALSE;
|
||||
@@ -181,20 +205,24 @@ bool8 IsRoamerAt(u8 mapGroup, u8 mapNum)
|
||||
|
||||
void CreateRoamerMonInstance(void)
|
||||
{
|
||||
struct Pokemon *mon;
|
||||
struct Roamer *roamer;
|
||||
|
||||
mon = &gEnemyParty[0];
|
||||
u32 status;
|
||||
struct Pokemon *mon = &gEnemyParty[0];
|
||||
ZeroEnemyPartyMons();
|
||||
roamer = &saveRoamer;
|
||||
CreateMonWithIVsPersonality(mon, roamer->species, roamer->level, roamer->ivs, roamer->personality);
|
||||
SetMonData(mon, MON_DATA_STATUS, &gSaveBlock1Ptr->roamer.status);
|
||||
SetMonData(mon, MON_DATA_HP, &gSaveBlock1Ptr->roamer.hp);
|
||||
SetMonData(mon, MON_DATA_COOL, &gSaveBlock1Ptr->roamer.cool);
|
||||
SetMonData(mon, MON_DATA_BEAUTY, &gSaveBlock1Ptr->roamer.beauty);
|
||||
SetMonData(mon, MON_DATA_CUTE, &gSaveBlock1Ptr->roamer.cute);
|
||||
SetMonData(mon, MON_DATA_SMART, &gSaveBlock1Ptr->roamer.smart);
|
||||
SetMonData(mon, MON_DATA_TOUGH, &gSaveBlock1Ptr->roamer.tough);
|
||||
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
|
||||
// using the status field and the following 3 bytes (cool, beauty, and cute).
|
||||
#ifdef BUGFIX
|
||||
status = ROAMER->status;
|
||||
SetMonData(mon, MON_DATA_STATUS, &status);
|
||||
#else
|
||||
SetMonData(mon, MON_DATA_STATUS, &ROAMER->status);
|
||||
#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)
|
||||
@@ -211,16 +239,15 @@ bool8 TryStartRoamerEncounter(void)
|
||||
}
|
||||
void UpdateRoamerHPStatus(struct Pokemon *mon)
|
||||
{
|
||||
saveRoamer.hp = GetMonData(mon, MON_DATA_HP);
|
||||
saveRoamer.status = GetMonData(mon, MON_DATA_STATUS);
|
||||
ROAMER->hp = GetMonData(mon, MON_DATA_HP);
|
||||
ROAMER->status = GetMonData(mon, MON_DATA_STATUS);
|
||||
|
||||
RoamerMoveToOtherLocationSet();
|
||||
}
|
||||
|
||||
void SetRoamerInactive(void)
|
||||
{
|
||||
struct Roamer *roamer = &saveRoamer;
|
||||
roamer->active = FALSE;
|
||||
ROAMER->active = FALSE;
|
||||
}
|
||||
|
||||
void GetRoamerLocation(u8 *mapGroup, u8 *mapNum)
|
||||
@@ -231,8 +258,7 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum)
|
||||
|
||||
u16 GetRoamerLocationMapSectionId(void)
|
||||
{
|
||||
struct Roamer *roamer = &saveRoamer;
|
||||
if (!saveRoamer.active)
|
||||
if (!ROAMER->active)
|
||||
return MAPSEC_NONE;
|
||||
return Overworld_GetMapHeaderByGroupAndId(sRoamerLocation[MAP_GRP], sRoamerLocation[MAP_NUM])->regionMapSectionId;
|
||||
}
|
||||
|
||||
+5
-4
@@ -2,6 +2,7 @@
|
||||
#include "script.h"
|
||||
#include "event_data.h"
|
||||
#include "quest_log.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
#define RAM_SCRIPT_MAGIC 51
|
||||
#define SCRIPT_STACK_SIZE 20
|
||||
@@ -511,9 +512,9 @@ bool32 ValidateRamScript(void)
|
||||
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
|
||||
if (scriptData->magic != RAM_SCRIPT_MAGIC)
|
||||
return FALSE;
|
||||
if (scriptData->mapGroup != 0xFF)
|
||||
if (scriptData->mapGroup != MAP_GROUP(UNDEFINED))
|
||||
return FALSE;
|
||||
if (scriptData->mapNum != 0xFF)
|
||||
if (scriptData->mapNum != MAP_NUM(UNDEFINED))
|
||||
return FALSE;
|
||||
if (scriptData->objectId != 0xFF)
|
||||
return FALSE;
|
||||
@@ -529,9 +530,9 @@ u8 *sub_8069E48(void)
|
||||
return NULL;
|
||||
if (scriptData->magic != RAM_SCRIPT_MAGIC)
|
||||
return NULL;
|
||||
if (scriptData->mapGroup != 0xFF)
|
||||
if (scriptData->mapGroup != MAP_GROUP(UNDEFINED))
|
||||
return NULL;
|
||||
if (scriptData->mapNum != 0xFF)
|
||||
if (scriptData->mapNum != MAP_NUM(UNDEFINED))
|
||||
return NULL;
|
||||
if (scriptData->objectId != 0xFF)
|
||||
return NULL;
|
||||
|
||||
+6
-8
@@ -10,6 +10,7 @@
|
||||
#include "constants/battle_setup.h"
|
||||
#include "constants/event_object_movement.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/trainer_types.h"
|
||||
|
||||
typedef u8 (*TrainerApproachFunc)(struct ObjectEvent *, s16, s16, s16);
|
||||
typedef bool8 (*TrainerSeeFunc)(u8, struct Task *, struct ObjectEvent *);
|
||||
@@ -93,12 +94,9 @@ bool8 CheckForTrainersWantingBattle(void)
|
||||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
if (gObjectEvents[i].active
|
||||
&& (
|
||||
gObjectEvents[i].trainerType == 1
|
||||
|| gObjectEvents[i].trainerType == 3
|
||||
)
|
||||
&& CheckTrainer(i)
|
||||
)
|
||||
&& (gObjectEvents[i].trainerType == TRAINER_TYPE_NORMAL
|
||||
|| gObjectEvents[i].trainerType == TRAINER_TYPE_BURIED)
|
||||
&& CheckTrainer(i))
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -129,12 +127,12 @@ static u8 GetTrainerApproachDistance(struct ObjectEvent *trainerObj)
|
||||
u8 approachDistance;
|
||||
|
||||
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);
|
||||
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++)
|
||||
{
|
||||
|
||||
+6
-9
@@ -638,14 +638,11 @@ void VsSeekerResetObjectMovementAfterChargeComplete(void)
|
||||
|
||||
for (i = 0; i < gMapHeader.events->objectEventCount; i++)
|
||||
{
|
||||
if ((
|
||||
templates[i].objUnion.normal.trainerType == TRAINER_TYPE_NORMAL
|
||||
|| 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_4F
|
||||
))
|
||||
if ((templates[i].objUnion.normal.trainerType == TRAINER_TYPE_NORMAL
|
||||
|| 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_4F))
|
||||
{
|
||||
movementType = GetRandomFaceDirectionMovementType();
|
||||
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++)
|
||||
{
|
||||
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].trainerIdx = GetTrainerFlagFromScript(templates[objectEventIdx].script);
|
||||
|
||||
@@ -182,7 +182,7 @@ static u16 GetCurrentMapWildMonHeaderId(void)
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
const struct WildPokemonHeader * wildHeader = &gWildMonHeaders[i];
|
||||
if (wildHeader->mapGroup == 0xFF)
|
||||
if (wildHeader->mapGroup == MAP_GROUP(UNDEFINED))
|
||||
break;
|
||||
|
||||
if (gWildMonHeaders[i].mapGroup == gSaveBlock1Ptr->location.mapGroup &&
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "overworld.h"
|
||||
#include "pokedex_area_markers.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
struct SeviiDexArea
|
||||
{
|
||||
@@ -181,7 +182,7 @@ s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites)
|
||||
alteringCaveNum = VarGet(VAR_ALTERING_CAVE_WILD_SET);
|
||||
if (alteringCaveNum > 8)
|
||||
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]);
|
||||
if (mapSecId == MAPSEC_ALTERING_CAVE)
|
||||
|
||||
Reference in New Issue
Block a user