Label movement action arrays, z coord -> elevation

This commit is contained in:
GriffinR 2022-10-05 17:16:40 -04:00
parent b41b3614ad
commit 57e82c9264
16 changed files with 260 additions and 268 deletions

View File

@ -70,10 +70,10 @@
#define MOVEMENT_TYPE_WALK_IN_PLACE_UP 0x41
#define MOVEMENT_TYPE_WALK_IN_PLACE_LEFT 0x42
#define MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT 0x43
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN 0x44
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP 0x45
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT 0x46
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT 0x47
#define MOVEMENT_TYPE_WALK_IN_PLACE_FAST_DOWN 0x44
#define MOVEMENT_TYPE_WALK_IN_PLACE_FAST_UP 0x45
#define MOVEMENT_TYPE_WALK_IN_PLACE_FAST_LEFT 0x46
#define MOVEMENT_TYPE_WALK_IN_PLACE_FAST_RIGHT 0x47
#define MOVEMENT_TYPE_JOG_IN_PLACE_DOWN 0x48
#define MOVEMENT_TYPE_JOG_IN_PLACE_UP 0x49
#define MOVEMENT_TYPE_JOG_IN_PLACE_LEFT 0x4A

View File

@ -99,16 +99,16 @@ void TryOverrideObjectEventTemplateCoords(u8, u8, u8);
void UpdateObjectEventCurrentMovement(struct ObjectEvent *, struct Sprite *, bool8(struct ObjectEvent *, struct Sprite *));
u8 ObjectEventFaceOppositeDirection(struct ObjectEvent *, u8);
u8 GetOppositeDirection(u8);
u8 GetWalkInPlaceFastMovementAction(u32);
u8 GetWalkInPlaceFasterMovementAction(u32);
u8 GetStepInPlaceDelay8AnimId(u32);
u8 GetWalkInPlaceNormalMovementAction(u32);
u8 GetWalkInPlaceSlowMovementAction(u32);
u8 GetStepInPlaceDelay32AnimId(u32);
u8 GetWalkInPlaceFastMovementAction(u32);
u8 GetCollisionAtCoords(struct ObjectEvent *, s16, s16, u32);
void MoveCoords(u8, s16 *, s16 *);
bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *);
u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *);
u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z);
u8 GetObjectEventIdByPosition(u16 x, u16 y, u8 elevation);
void sub_8063E28(struct ObjectEvent *, struct Sprite *);
bool8 ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
void ShiftStillObjectEventCoords(struct ObjectEvent *);
@ -123,7 +123,7 @@ bool8 ObjectEventIsMovementOverridden(struct ObjectEvent *objectEvent);
u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent);
u8 GetWalkNormalMovementAction(u32);
u8 GetWalkFastMovementAction(u32);
u8 GetWalkFastestMovementAction(u32);
u8 GetWalkFasterMovementAction(u32);
u8 GetWalkSlowerMovementAction(u32 direction);
u8 GetTrainerFacingDirectionMovementType(u8 direction);
u8 GetFaceDirectionMovementAction(u32);
@ -160,11 +160,9 @@ u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority);
u16 GetObjectPaletteTag(u8 paletteIndex);
void SetSpritePosToMapCoords(s16 x, s16 y, s16 *x2, s16 *y2);
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible);
bool8 AreZCoordsCompatible(u8, u8);
u8 ZCoordToPriority(u8 z);
void ObjectEventUpdateZCoord(struct ObjectEvent *pObject);
void SetObjectSubpriorityByZCoord(u8 z, struct Sprite *sprite, u8 offset);
bool8 IsZCoordMismatchAt(u8, s16, s16);
u8 ElevationToPriority(u8 elevation);
void ObjectEventUpdateElevation(struct ObjectEvent *pObject);
void SetObjectSubpriorityByElevation(u8 elevation, struct Sprite *sprite, u8 offset);
void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables);
u8 AddCameraObject(u8 trackedSpriteId);
void UpdateObjectEventsForCameraUpdate(s16 x, s16 y);
@ -195,8 +193,8 @@ extern const struct OamData gObjectEventBaseOam_32x32;
extern const u16 gFieldEffectObjectPic_CutGrass[];
extern const u16 gFieldEffectPal_CutGrass[];
extern const u8 gReflectionEffectPaletteMap[];
u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z);
u8 sub_8063FDC(u32 direction);
u8 GetLedgeJumpDirection(s16 x, s16 y, u8 direction);
u8 GetGlideMovementAction(u32 direction);
u8 GetRideWaterCurrentMovementAction(u32 direction);
u8 GetPlayerRunMovementAction(u32 direction);
u8 GetPlayerRunSlowMovementAction(u32 direction);
@ -206,12 +204,13 @@ u8 GetAcroWheelieFaceDirectionMovementAction(u32 direction);
u8 GetAcroPopWheelieFaceDirectionMovementAction(u32 direction);
u8 GetAcroEndWheelieFaceDirectionMovementAction(u32 direction);
u8 GetAcroWheelieHopFaceDirectionMovementAction(u32 direction);
u8 GetAcroWheelieHopDirectionMovementAction(u32 direction);
u8 GetAcroWheelieJumpDirectionMovementAction(u32 direction);
u8 GetAcroWheelieHopMovementAction(u32 direction);
u8 GetAcroPopWheelieMoveMovementAction(u32 direction);
u8 GetAcroWheelieJumpMovementAction(u32 direction);
u8 GetJumpInPlaceTurnAroundMovementAction(u32 direction);
u8 GetAcroWheelieInPlaceDirectionMovementAction(u32 direction);
u8 GetAcroPopWheelieMoveDirectionMovementAction(u32 direction);
u8 GetAcroWheelieMoveDirectionMovementAction(u32 direction);
u8 GetAcroWheelieInPlaceMovementAction(u32 direction);
u8 GetAcroPopWheelieMoveMovementAction(u32 direction);
u8 GetAcroWheelieMoveMovementAction(u32 direction);
u8 GetJumpSpecialWithEffectMovementAction(u32 direction);
u8 GetFishingBiteDirectionAnimNum(u8 direction);
void TrySpawnObjectEvents(s16 cameraX, s16 cameraY);

View File

@ -26,7 +26,7 @@ void SetPlayerAvatarTransitionFlags(u16 flags);
bool8 IsPlayerFacingSurfableFishableWater(void);
void StartFishing(u8 secondaryId);
u8 GetPlayerAvatarObjectId(void);
u8 PlayerGetZCoord(void);
u8 PlayerGetElevation(void);
u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
void StartPlayerAvatarSummonMonForFieldMoveAnim(void);
void SetPlayerInvisibility(bool8);
@ -41,13 +41,13 @@ void StartPlayerAvatarVsSeekerAnim(void);
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender);
u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender);
u8 CheckForObjectEventCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior);
void PlayerGoSlowest(u8 direction);
void PlayerGoSlow(u8 direction);
void PlayerGoSpeed1(u8 direction);
void PlayerGoSpeed2(u8 direction);
void sub_805C134(u8 direction);
void PlayerWalkSlower(u8 direction);
void PlayerWalkSlow(u8 direction);
void PlayerWalkNormal(u8 direction);
void PlayerWalkFast(u8 direction);
void PlayerGlide(u8 direction);
void PlayerRideWaterCurrent(u8 direction);
void PlayerGoSpeed4(u8 direction);
void PlayerWalkFaster(u8 direction);
void PlayerRun(u8 direction);
void PlayerRunSlow(u8 direction);
void PlayerOnBikeCollide(u8 direction);

View File

@ -814,7 +814,7 @@ struct MapPosition
{
s16 x;
s16 y;
s8 height;
s8 elevation;
};
extern struct SaveBlock1* gSaveBlock1Ptr;

View File

@ -187,9 +187,9 @@ static void BikeTransition_MoveDirection(u8 direction)
{
if (collision == COLLISION_COUNT)
PlayerGoSpeed2(direction);
PlayerWalkFast(direction);
else if (PlayerIsMovingOnRockStairs(direction))
PlayerGoSpeed2(direction);
PlayerWalkFast(direction);
else
PlayerRideWaterCurrent(direction);
}
@ -201,7 +201,7 @@ static void BikeTransition_Downhill(u8 v)
u8 collision = GetBikeCollision(DIR_SOUTH);
if (collision == COLLISION_NONE)
PlayerGoSpeed4(DIR_SOUTH);
PlayerWalkFaster(DIR_SOUTH);
else if (collision == COLLISION_LEDGE_JUMP)
PlayerJumpLedge(DIR_SOUTH);
}
@ -209,7 +209,7 @@ static void BikeTransition_Downhill(u8 v)
static void BikeTransition_Uphill(u8 direction)
{
if (GetBikeCollision(direction) == COLLISION_NONE)
PlayerGoSpeed1(direction);
PlayerWalkNormal(direction);
}
static u8 GetBikeCollision(u8 direction)
@ -266,7 +266,7 @@ static bool8 MetatileBehaviorForbidsBiking(u8 metatileBehavior)
return TRUE;
if (!MetatileBehavior_IsFortreeBridge(metatileBehavior))
return FALSE;
if (PlayerGetZCoord() & 1)
if (PlayerGetElevation() & 1)
return FALSE;
return TRUE;
}

View File

@ -134,7 +134,7 @@ static bool8 MovementType_CopyPlayer_Step2(struct ObjectEvent *objectEvent, stru
static bool8 MovementType_Buried_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_WalkInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_WalkSlowlyInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_WalkInPlaceFast_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_JogInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
@ -580,8 +580,8 @@ u8 (*const gMovementTypeFuncs_WalkInPlace[])(struct ObjectEvent *, struct Sprite
MovementType_MoveInPlace_Step1,
};
u8 (*const gMovementTypeFuncs_WalkSlowlyInPlace[])(struct ObjectEvent *, struct Sprite *) = {
MovementType_WalkSlowlyInPlace_Step0,
u8 (*const gMovementTypeFuncs_WalkInPlaceFast[])(struct ObjectEvent *, struct Sprite *) = {
MovementType_WalkInPlaceFast_Step0,
MovementType_MoveInPlace_Step1,
};

View File

@ -49,7 +49,7 @@ static void GetGroundEffectFlags_Seaweed(struct ObjectEvent *, u32 *);
static void GetGroundEffectFlags_JumpLanding(struct ObjectEvent *, u32 *);
static u8 ObjectEventCheckForReflectiveSurface(struct ObjectEvent *);
static u8 GetReflectionTypeByMetatileBehavior(u32);
static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z);
static void InitObjectPriorityByElevation(struct Sprite *sprite, u8 elevation);
static void ObjectEventUpdateSubpriority(struct ObjectEvent *, struct Sprite *);
static void DoTracksGroundEffect_None(struct ObjectEvent *, struct Sprite *, u8);
static void DoTracksGroundEffect_Footprints(struct ObjectEvent *, struct Sprite *, u8);
@ -76,7 +76,9 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8);
static void ResetObjectEventFldEffData(struct ObjectEvent *);
static u8 TryLoadObjectPalette(const struct SpritePalette *spritePalette);
static u8 FindObjectEventPaletteIndexByTag(u16);
static bool8 ObjectEventDoesZCoordMatch(struct ObjectEvent *, u8);
static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *, u8);
static bool8 IsElevationMismatchAt(u8 elevation, s16 x, s16 y);
static bool8 AreElevationsCompatible(u8 a, u8 b);
static void ObjectCB_CameraObject(struct Sprite *);
static void CameraObject_0(struct Sprite *);
static void CameraObject_1(struct Sprite *);
@ -144,7 +146,7 @@ static void MovementType_MountainDisguise(struct Sprite *);
static void MovementType_CopyPlayerInGrass(struct Sprite *);
static void MovementType_Buried(struct Sprite *);
static void MovementType_WalkInPlace(struct Sprite *);
static void MovementType_WalkSlowlyInPlace(struct Sprite *);
static void MovementType_WalkInPlaceFast(struct Sprite *);
static void MovementType_JogInPlace(struct Sprite *);
static void MovementType_Invisible(struct Sprite *);
static void MovementType_RaiseHandAndStop(struct Sprite *);
@ -280,10 +282,10 @@ static void (*const sMovementTypeCallbacks[MOVEMENT_TYPES_COUNT])(struct Sprite
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = MovementType_WalkInPlace,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = MovementType_WalkInPlace,
[MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT] = MovementType_WalkInPlace,
[MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN] = MovementType_WalkSlowlyInPlace,
[MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = MovementType_WalkSlowlyInPlace,
[MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = MovementType_WalkSlowlyInPlace,
[MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = MovementType_WalkSlowlyInPlace,
[MOVEMENT_TYPE_WALK_IN_PLACE_FAST_DOWN] = MovementType_WalkInPlaceFast,
[MOVEMENT_TYPE_WALK_IN_PLACE_FAST_UP] = MovementType_WalkInPlaceFast,
[MOVEMENT_TYPE_WALK_IN_PLACE_FAST_LEFT] = MovementType_WalkInPlaceFast,
[MOVEMENT_TYPE_WALK_IN_PLACE_FAST_RIGHT] = MovementType_WalkInPlaceFast,
[MOVEMENT_TYPE_JOG_IN_PLACE_DOWN] = MovementType_JogInPlace,
[MOVEMENT_TYPE_JOG_IN_PLACE_UP] = MovementType_JogInPlace,
[MOVEMENT_TYPE_JOG_IN_PLACE_LEFT] = MovementType_JogInPlace,
@ -409,10 +411,10 @@ static const u8 gInitialMovementTypeFacingDirections[MOVEMENT_TYPES_COUNT] = {
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = DIR_NORTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = DIR_WEST,
[MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT] = DIR_EAST,
[MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN] = DIR_SOUTH,
[MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = DIR_NORTH,
[MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = DIR_WEST,
[MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST,
[MOVEMENT_TYPE_WALK_IN_PLACE_FAST_DOWN] = DIR_SOUTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_FAST_UP] = DIR_NORTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_FAST_LEFT] = DIR_WEST,
[MOVEMENT_TYPE_WALK_IN_PLACE_FAST_RIGHT] = DIR_EAST,
[MOVEMENT_TYPE_JOG_IN_PLACE_DOWN] = DIR_SOUTH,
[MOVEMENT_TYPE_JOG_IN_PLACE_UP] = DIR_NORTH,
[MOVEMENT_TYPE_JOG_IN_PLACE_LEFT] = DIR_WEST,
@ -896,7 +898,7 @@ static const struct Coords16 sDirectionToVectors[] = {
[DIR_NORTHEAST] = { 1, -1},
};
static const u8 gFaceDirectionMovementActions[] = {
static const u8 sFaceDirectionMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_FACE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_FACE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_FACE_UP,
@ -904,7 +906,7 @@ static const u8 gFaceDirectionMovementActions[] = {
[DIR_EAST] = MOVEMENT_ACTION_FACE_RIGHT,
};
static const u8 gFaceDirectionFastMovementActions[] = {
static const u8 sFaceDirectionFastMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_FACE_DOWN_FAST,
[DIR_SOUTH] = MOVEMENT_ACTION_FACE_DOWN_FAST,
[DIR_NORTH] = MOVEMENT_ACTION_FACE_UP_FAST,
@ -912,7 +914,7 @@ static const u8 gFaceDirectionFastMovementActions[] = {
[DIR_EAST] = MOVEMENT_ACTION_FACE_RIGHT_FAST,
};
static const u8 gWalkSlowestMovementActions[] = {
static const u8 sWalkSlowestMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_WALK_SLOWEST_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_WALK_SLOWEST_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_WALK_SLOWEST_UP,
@ -920,7 +922,7 @@ static const u8 gWalkSlowestMovementActions[] = {
[DIR_EAST] = MOVEMENT_ACTION_WALK_SLOWEST_RIGHT,
};
static const u8 gUnknown_83A64FB[] = {
static const u8 sWalkSlowerMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_WALK_SLOWER_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_WALK_SLOWER_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_WALK_SLOWER_UP,
@ -928,7 +930,7 @@ static const u8 gUnknown_83A64FB[] = {
[DIR_EAST] = MOVEMENT_ACTION_WALK_SLOWER_RIGHT,
};
static const u8 gUnknown_83A6500[] = {
static const u8 sWalkSlowMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_WALK_SLOW_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_WALK_SLOW_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_WALK_SLOW_UP,
@ -936,7 +938,7 @@ static const u8 gUnknown_83A6500[] = {
[DIR_EAST] = MOVEMENT_ACTION_WALK_SLOW_RIGHT,
};
static const u8 gUnknown_83A6505[] = {
static const u8 sWalkNormalMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_WALK_NORMAL_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_WALK_NORMAL_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_WALK_NORMAL_UP,
@ -944,7 +946,7 @@ static const u8 gUnknown_83A6505[] = {
[DIR_EAST] = MOVEMENT_ACTION_WALK_NORMAL_RIGHT,
};
static const u8 gUnknown_83A650A[] = {
static const u8 sWalkFastMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_WALK_FAST_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_WALK_FAST_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_WALK_FAST_UP,
@ -952,7 +954,7 @@ static const u8 gUnknown_83A650A[] = {
[DIR_EAST] = MOVEMENT_ACTION_WALK_FAST_RIGHT,
};
static const u8 gUnknown_83A650F[] = {
static const u8 sGlideMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_GLIDE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_GLIDE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_GLIDE_UP,
@ -960,7 +962,7 @@ static const u8 gUnknown_83A650F[] = {
[DIR_EAST] = MOVEMENT_ACTION_GLIDE_RIGHT,
};
static const u8 gUnknown_83A6514[] = {
static const u8 sRideWaterCurrentMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP,
@ -968,7 +970,7 @@ static const u8 gUnknown_83A6514[] = {
[DIR_EAST] = MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT,
};
static const u8 gUnknown_83A6519[] = {
static const u8 sWalkFasterMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_WALK_FASTER_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_WALK_FASTER_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_WALK_FASTER_UP,
@ -976,7 +978,7 @@ static const u8 gUnknown_83A6519[] = {
[DIR_EAST] = MOVEMENT_ACTION_WALK_FASTER_RIGHT,
};
static const u8 gUnknown_83A651E[] = {
static const u8 sSlideMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_SLIDE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_SLIDE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_SLIDE_UP,
@ -984,7 +986,7 @@ static const u8 gUnknown_83A651E[] = {
[DIR_EAST] = MOVEMENT_ACTION_SLIDE_RIGHT,
};
static const u8 gUnknown_83A6523[] = {
static const u8 sPlayerRunMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_PLAYER_RUN_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_PLAYER_RUN_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_PLAYER_RUN_UP,
@ -992,7 +994,7 @@ static const u8 gUnknown_83A6523[] = {
[DIR_EAST] = MOVEMENT_ACTION_PLAYER_RUN_RIGHT,
};
static const u8 gUnknown_83A6528[] = {
static const u8 sPlayerRunSlowMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_PLAYER_RUN_DOWN_SLOW,
[DIR_SOUTH] = MOVEMENT_ACTION_PLAYER_RUN_DOWN_SLOW,
[DIR_NORTH] = MOVEMENT_ACTION_PLAYER_RUN_UP_SLOW,
@ -1000,7 +1002,7 @@ static const u8 gUnknown_83A6528[] = {
[DIR_EAST] = MOVEMENT_ACTION_PLAYER_RUN_RIGHT_SLOW,
};
static const u8 gUnknown_83A652D[] = {
static const u8 sSpinMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_SPIN_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_SPIN_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_SPIN_UP,
@ -1008,7 +1010,7 @@ static const u8 gUnknown_83A652D[] = {
[DIR_EAST] = MOVEMENT_ACTION_SPIN_RIGHT,
};
static const u8 gUnknown_83A6532[] = {
static const u8 sJump2MovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_JUMP_2_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_JUMP_2_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_JUMP_2_UP,
@ -1016,7 +1018,7 @@ static const u8 gUnknown_83A6532[] = {
[DIR_EAST] = MOVEMENT_ACTION_JUMP_2_RIGHT,
};
static const u8 gUnknown_83A6537[] = {
static const u8 sJumpInPlaceMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_JUMP_IN_PLACE_UP,
@ -1024,7 +1026,7 @@ static const u8 gUnknown_83A6537[] = {
[DIR_EAST] = MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT,
};
static const u8 gUnknown_83A653C[] = {
static const u8 sJumpInPlaceTurnAroundMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP,
@ -1032,7 +1034,7 @@ static const u8 gUnknown_83A653C[] = {
[DIR_EAST] = MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT,
};
static const u8 gUnknown_83A6541[] = {
static const u8 sJumpMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_JUMP_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_JUMP_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_JUMP_UP,
@ -1040,7 +1042,7 @@ static const u8 gUnknown_83A6541[] = {
[DIR_EAST] = MOVEMENT_ACTION_JUMP_RIGHT,
};
static const u8 gUnknown_83A6546[] = {
static const u8 sJumpSpecialMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_JUMP_SPECIAL_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_JUMP_SPECIAL_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_JUMP_SPECIAL_UP,
@ -1048,7 +1050,7 @@ static const u8 gUnknown_83A6546[] = {
[DIR_EAST] = MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT,
};
static const u8 gUnknown_83A654B[] = {
static const u8 sJumpSpecialWithEffectMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_UP,
@ -1056,7 +1058,7 @@ static const u8 gUnknown_83A654B[] = {
[DIR_EAST] = MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT,
};
static const u8 gUnknown_83A6550[] = {
static const u8 sWalkInPlaceSlowMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP,
@ -1064,7 +1066,7 @@ static const u8 gUnknown_83A6550[] = {
[DIR_EAST] = MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT,
};
static const u8 gUnknown_83A6555[] = {
static const u8 sWalkInPlaceNormalMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP,
@ -1072,7 +1074,7 @@ static const u8 gUnknown_83A6555[] = {
[DIR_EAST] = MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT,
};
static const u8 gUnknown_83A655A[] = {
static const u8 sWalkInPlaceFastMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP,
@ -1080,7 +1082,7 @@ static const u8 gUnknown_83A655A[] = {
[DIR_EAST] = MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT,
};
static const u8 gUnknown_83A655F[] = {
static const u8 sWalkInPlaceFasterMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_UP,
@ -1088,7 +1090,7 @@ static const u8 gUnknown_83A655F[] = {
[DIR_EAST] = MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_RIGHT,
};
static const u8 gUnknown_83A6564[] = {
static const u8 sAcroWheelieFaceDirectionMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP,
@ -1096,7 +1098,7 @@ static const u8 gUnknown_83A6564[] = {
[DIR_EAST] = MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT,
};
static const u8 gUnknown_83A6569[] = {
static const u8 sAcroPopWheelieFaceDirectionMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP,
@ -1104,7 +1106,7 @@ static const u8 gUnknown_83A6569[] = {
[DIR_EAST] = MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT,
};
static const u8 gUnknown_83A656E[] = {
static const u8 sAcroEndWheelieFaceDirectionMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP,
@ -1112,7 +1114,7 @@ static const u8 gUnknown_83A656E[] = {
[DIR_EAST] = MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT,
};
static const u8 gUnknown_83A6573[] = {
static const u8 sAcroWheelieHopFaceDirectionMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP,
@ -1120,7 +1122,7 @@ static const u8 gUnknown_83A6573[] = {
[DIR_EAST] = MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT,
};
static const u8 gUnknown_83A6578[] = {
static const u8 sAcroWheelieHopMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP,
@ -1128,7 +1130,7 @@ static const u8 gUnknown_83A6578[] = {
[DIR_EAST] = MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT,
};
static const u8 gUnknown_83A657D[] = {
static const u8 sAcroWheelieJumpMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP,
@ -1136,7 +1138,7 @@ static const u8 gUnknown_83A657D[] = {
[DIR_EAST] = MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT,
};
static const u8 gUnknown_83A6582[] = {
static const u8 sAcroWheelieInPlaceMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP,
@ -1144,7 +1146,7 @@ static const u8 gUnknown_83A6582[] = {
[DIR_EAST] = MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT,
};
static const u8 gUnknown_83A6587[] = {
static const u8 sAcroPopWheelieMoveMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP,
@ -1152,7 +1154,7 @@ static const u8 gUnknown_83A6587[] = {
[DIR_EAST] = MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT,
};
static const u8 gUnknown_83A658C[] = {
static const u8 sAcroWheelieMoveMovementActions[] = {
[DIR_NONE] = MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN,
[DIR_SOUTH] = MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN,
[DIR_NORTH] = MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP,
@ -1607,7 +1609,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
if (!objectEvent->inanimate)
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection));
SetObjectSubpriorityByZCoord(objectEvent->previousElevation, sprite, 1);
SetObjectSubpriorityByElevation(objectEvent->previousElevation, sprite, 1);
UpdateObjectEventVisibility(objectEvent, sprite);
return objectEventId;
}
@ -1644,7 +1646,7 @@ u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate)
return TrySpawnObjectEventTemplate(objectEventTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
}
int SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z)
int SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation)
{
struct ObjectEventTemplate objectEventTemplate;
@ -1655,7 +1657,7 @@ int SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8
objectEventTemplate.inConnection = 0;
objectEventTemplate.x = x;
objectEventTemplate.y = y;
objectEventTemplate.elevation = z;
objectEventTemplate.elevation = elevation;
objectEventTemplate.movementType = movementBehavior;
objectEventTemplate.movementRangeX = 0;
objectEventTemplate.movementRangeY = 0;
@ -1729,7 +1731,7 @@ u8 AddPseudoObjectEvent(u16 graphicsId, SpriteCallback callback, s16 x, s16 y, u
return spriteId;
}
u8 CreateVirtualObject(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
u8 CreateVirtualObject(u8 graphicsId, u8 a1, s16 x, s16 y, u8 elevation, u8 direction)
{
u8 spriteId;
struct Sprite *sprite;
@ -1753,7 +1755,7 @@ u8 CreateVirtualObject(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
sprite->oam.paletteNum = graphicsInfo->paletteSlot;
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = a1;
sprite->data[1] = z;
sprite->data[1] = elevation;
if (graphicsInfo->paletteSlot == 10)
{
LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
@ -1764,8 +1766,8 @@ u8 CreateVirtualObject(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
SetSubspriteTables(sprite, subspriteTables);
sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
}
InitObjectPriorityByZCoord(sprite, z);
SetObjectSubpriorityByZCoord(z, sprite, 1);
InitObjectPriorityByElevation(sprite, elevation);
SetObjectSubpriorityByElevation(elevation, sprite, 1);
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(direction));
}
return spriteId;
@ -1951,7 +1953,7 @@ static void ReloadMapObjectWithOffset(u8 objectEventId, s16 x, s16 y)
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection));
}
ResetObjectEventFldEffData(objectEvent);
SetObjectSubpriorityByZCoord(objectEvent->previousElevation, sprite, 1);
SetObjectSubpriorityByElevation(objectEvent->previousElevation, sprite, 1);
}
}
@ -2347,7 +2349,7 @@ void UpdateObjectEventCoordsForCameraUpdate(void)
}
}
u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z)
u8 GetObjectEventIdByPosition(u16 x, u16 y, u8 elevation)
{
u8 i;
@ -2355,21 +2357,20 @@ u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z)
{
if (gObjectEvents[i].active)
{
if (gObjectEvents[i].currentCoords.x == x && gObjectEvents[i].currentCoords.y == y && ObjectEventDoesZCoordMatch(&gObjectEvents[i], z))
{
if (gObjectEvents[i].currentCoords.x == x
&& gObjectEvents[i].currentCoords.y == y
&& ObjectEventDoesElevationMatch(&gObjectEvents[i], elevation))
return i;
}
}
}
return OBJECT_EVENTS_COUNT;
}
static bool8 ObjectEventDoesZCoordMatch(struct ObjectEvent *objectEvent, u8 z)
static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *objectEvent, u8 elevation)
{
if (objectEvent->currentElevation != 0 && z != 0 && objectEvent->currentElevation != z)
{
if (objectEvent->currentElevation != 0 && elevation != 0 && objectEvent->currentElevation != elevation)
return FALSE;
}
return TRUE;
}
@ -4370,7 +4371,7 @@ static bool8 CopyablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, st
direction = playerDirection;
direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction);
ObjectEventMoveDestCoords(objectEvent, direction, &x, &y);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastestMovementAction(direction));
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFasterMovementAction(direction));
if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
@ -4540,12 +4541,12 @@ static bool8 MovementType_WalkInPlace_Step0(struct ObjectEvent *objectEvent, str
return TRUE;
}
movement_type_def(MovementType_WalkSlowlyInPlace, gMovementTypeFuncs_WalkSlowlyInPlace)
movement_type_def(MovementType_WalkInPlaceFast, gMovementTypeFuncs_WalkInPlaceFast)
static bool8 MovementType_WalkSlowlyInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
static bool8 MovementType_WalkInPlaceFast_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceSlowMovementAction(objectEvent->facingDirection));
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceFastMovementAction(objectEvent->facingDirection));
sprite->data[1] = 1;
return TRUE;
}
@ -4555,7 +4556,7 @@ movement_type_def(MovementType_JogInPlace, gMovementTypeFuncs_JogInPlace)
static bool8 MovementType_JogInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceFastMovementAction(objectEvent->facingDirection));
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceFasterMovementAction(objectEvent->facingDirection));
sprite->data[1] = 1;
return TRUE;
}
@ -4858,7 +4859,7 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir)
return COLLISION_IMPASSABLE;
else if (objectEvent->trackedByCamera && !CanCameraMoveInDirection(direction))
return COLLISION_IMPASSABLE;
else if (IsZCoordMismatchAt(objectEvent->currentElevation, x, y))
else if (IsElevationMismatchAt(objectEvent->currentElevation, x, y))
return COLLISION_ELEVATION_MISMATCH;
else if (DoesObjectCollideWithObjectAt(objectEvent, x, y))
return COLLISION_OBJECT_EVENT;
@ -4873,7 +4874,7 @@ u8 GetCollisionFlagsAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 d
flags |= 1;
if (MapGridGetCollisionAt(x, y) || GetMapBorderIdAt(x, y) == CONNECTION_INVALID || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction) || (objectEvent->trackedByCamera && !CanCameraMoveInDirection(direction)))
flags |= 2;
if (IsZCoordMismatchAt(objectEvent->currentElevation, x, y))
if (IsElevationMismatchAt(objectEvent->currentElevation, x, y))
flags |= 4;
if (DoesObjectCollideWithObjectAt(objectEvent, x, y))
flags |= 8;
@ -4930,10 +4931,8 @@ static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16
{
if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y))
{
if (AreZCoordsCompatible(objectEvent->currentElevation, curObject->currentElevation))
{
if (AreElevationsCompatible(objectEvent->currentElevation, curObject->currentElevation))
return TRUE;
}
}
}
}
@ -4953,14 +4952,12 @@ bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup)
return FALSE;
}
void sub_80639D4(u8 localId, u8 mapNum, u8 mapGroup)
static void SetBerryTreeJustPicked(u8 localId, u8 mapNum, u8 mapGroup)
{
u8 objectEventId;
if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId))
{
gSprites[gObjectEvents[objectEventId].spriteId].data[7] |= 0x04;
}
}
void MoveCoords(u8 direction, s16 *x, s16 *y)
@ -4969,7 +4966,8 @@ void MoveCoords(u8 direction, s16 *x, s16 *y)
*y += sDirectionToVectors[direction].y;
}
void sub_8063A44(u8 direction, s16 *x, s16 *y)
// Unused
static void MoveCoordsInMapCoordIncrement(u8 direction, s16 *x, s16 *y)
{
*x += sDirectionToVectors[direction].x << 4;
*y += sDirectionToVectors[direction].y << 4;
@ -5184,8 +5182,8 @@ u8 name(u32 idx) \
return animIds[direction]; \
}
dirn_to_anim(GetFaceDirectionMovementAction, gFaceDirectionMovementActions);
dirn_to_anim(GetFaceDirectionFastMovementAction, gFaceDirectionFastMovementActions);
dirn_to_anim(GetFaceDirectionMovementAction, sFaceDirectionMovementActions);
dirn_to_anim(GetFaceDirectionFastMovementAction, sFaceDirectionFastMovementActions);
u8 GetWalkSlowestMovementAction(u32 idx)
{
@ -5193,45 +5191,45 @@ u8 GetWalkSlowestMovementAction(u32 idx)
if (direction > DIR_EAST)
direction = DIR_NONE;
return gWalkSlowestMovementActions[direction];
return sWalkSlowestMovementActions[direction];
}
dirn_to_anim(GetWalkSlowerMovementAction, gUnknown_83A64FB);
dirn_to_anim(GetWalkSlowMovementAction, gUnknown_83A6500);
dirn_to_anim(GetWalkNormalMovementAction, gUnknown_83A6505);
dirn_to_anim(GetWalkFastMovementAction, gUnknown_83A650A);
dirn_to_anim(sub_8063FDC, gUnknown_83A650F);
dirn_to_anim(GetRideWaterCurrentMovementAction, gUnknown_83A6514);
dirn_to_anim(GetWalkFastestMovementAction, gUnknown_83A6519);
dirn_to_anim(GetSlideMovementAction, gUnknown_83A651E);
dirn_to_anim(GetPlayerRunMovementAction, gUnknown_83A6523);
dirn_to_anim(GetPlayerRunSlowMovementAction, gUnknown_83A6528);
dirn_to_anim(GetSpinMovementAction, gUnknown_83A652D);
dirn_to_anim(GetJump2MovementAction, gUnknown_83A6532);
dirn_to_anim(GetJumpInPlaceMovementAction, gUnknown_83A6537);
dirn_to_anim(GetJumpInPlaceTurnAroundMovementAction, gUnknown_83A653C);
dirn_to_anim(GetJumpMovementAction, gUnknown_83A6541);
dirn_to_anim(GetJumpSpecialMovementAction, gUnknown_83A6546);
dirn_to_anim(GetJumpSpecialWithEffectMovementAction, gUnknown_83A654B);
dirn_to_anim(GetStepInPlaceDelay32AnimId, gUnknown_83A6550);
dirn_to_anim(GetWalkInPlaceNormalMovementAction, gUnknown_83A6555);
dirn_to_anim(GetWalkInPlaceSlowMovementAction, gUnknown_83A655A);
dirn_to_anim(GetWalkInPlaceFastMovementAction, gUnknown_83A655F);
dirn_to_anim(GetWalkSlowerMovementAction, sWalkSlowerMovementActions);
dirn_to_anim(GetWalkSlowMovementAction, sWalkSlowMovementActions);
dirn_to_anim(GetWalkNormalMovementAction, sWalkNormalMovementActions);
dirn_to_anim(GetWalkFastMovementAction, sWalkFastMovementActions);
dirn_to_anim(GetGlideMovementAction, sGlideMovementActions);
dirn_to_anim(GetRideWaterCurrentMovementAction, sRideWaterCurrentMovementActions);
dirn_to_anim(GetWalkFasterMovementAction, sWalkFasterMovementActions);
dirn_to_anim(GetSlideMovementAction, sSlideMovementActions);
dirn_to_anim(GetPlayerRunMovementAction, sPlayerRunMovementActions);
dirn_to_anim(GetPlayerRunSlowMovementAction, sPlayerRunSlowMovementActions);
dirn_to_anim(GetSpinMovementAction, sSpinMovementActions);
dirn_to_anim(GetJump2MovementAction, sJump2MovementActions);
dirn_to_anim(GetJumpInPlaceMovementAction, sJumpInPlaceMovementActions);
dirn_to_anim(GetJumpInPlaceTurnAroundMovementAction, sJumpInPlaceTurnAroundMovementActions);
dirn_to_anim(GetJumpMovementAction, sJumpMovementActions);
dirn_to_anim(GetJumpSpecialMovementAction, sJumpSpecialMovementActions);
dirn_to_anim(GetJumpSpecialWithEffectMovementAction, sJumpSpecialWithEffectMovementActions);
dirn_to_anim(GetWalkInPlaceSlowMovementAction, sWalkInPlaceSlowMovementActions);
dirn_to_anim(GetWalkInPlaceNormalMovementAction, sWalkInPlaceNormalMovementActions);
dirn_to_anim(GetWalkInPlaceFastMovementAction, sWalkInPlaceFastMovementActions);
dirn_to_anim(GetWalkInPlaceFasterMovementAction, sWalkInPlaceFasterMovementActions);
bool8 ObjectEventFaceOppositeDirection(struct ObjectEvent *objectEvent, u8 direction)
{
return ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetOppositeDirection(direction)));
}
dirn_to_anim(GetAcroWheelieFaceDirectionMovementAction, gUnknown_83A6564);
dirn_to_anim(GetAcroPopWheelieFaceDirectionMovementAction, gUnknown_83A6569);
dirn_to_anim(GetAcroEndWheelieFaceDirectionMovementAction, gUnknown_83A656E);
dirn_to_anim(GetAcroWheelieHopFaceDirectionMovementAction, gUnknown_83A6573);
dirn_to_anim(GetAcroWheelieHopDirectionMovementAction, gUnknown_83A6578);
dirn_to_anim(GetAcroWheelieJumpDirectionMovementAction, gUnknown_83A657D);
dirn_to_anim(GetAcroWheelieInPlaceDirectionMovementAction, gUnknown_83A6582);
dirn_to_anim(GetAcroPopWheelieMoveDirectionMovementAction, gUnknown_83A6587);
dirn_to_anim(GetAcroWheelieMoveDirectionMovementAction, gUnknown_83A658C);
dirn_to_anim(GetAcroWheelieFaceDirectionMovementAction, sAcroWheelieFaceDirectionMovementActions);
dirn_to_anim(GetAcroPopWheelieFaceDirectionMovementAction, sAcroPopWheelieFaceDirectionMovementActions);
dirn_to_anim(GetAcroEndWheelieFaceDirectionMovementAction, sAcroEndWheelieFaceDirectionMovementActions);
dirn_to_anim(GetAcroWheelieHopFaceDirectionMovementAction, sAcroWheelieHopFaceDirectionMovementActions);
dirn_to_anim(GetAcroWheelieHopMovementAction, sAcroWheelieHopMovementActions);
dirn_to_anim(GetAcroWheelieJumpMovementAction, sAcroWheelieJumpMovementActions);
dirn_to_anim(GetAcroWheelieInPlaceMovementAction, sAcroWheelieInPlaceMovementActions);
dirn_to_anim(GetAcroPopWheelieMoveMovementAction, sAcroPopWheelieMoveMovementActions);
dirn_to_anim(GetAcroWheelieMoveMovementAction, sAcroWheelieMoveMovementActions);
u8 GetOppositeDirection(u8 direction)
{
@ -8330,30 +8328,30 @@ static u8 GetReflectionTypeByMetatileBehavior(u32 behavior)
return 0;
}
u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
u8 GetLedgeJumpDirection(s16 x, s16 y, u8 direction)
{
static bool8 (*const gUnknown_83A705C[])(u8) = {
MetatileBehavior_IsJumpSouth,
MetatileBehavior_IsJumpNorth,
MetatileBehavior_IsJumpWest,
MetatileBehavior_IsJumpEast,
static bool8 (*const ledgeBehaviorFuncs[])(u8) = {
[DIR_SOUTH - 1] = MetatileBehavior_IsJumpSouth,
[DIR_NORTH - 1] = MetatileBehavior_IsJumpNorth,
[DIR_WEST - 1] = MetatileBehavior_IsJumpWest,
[DIR_EAST - 1] = MetatileBehavior_IsJumpEast,
};
u8 b;
u8 index = z;
u8 behavior;
u8 index = direction;
if (index == 0)
return 0;
else if (index > 4)
index -= 4;
if (index == DIR_NONE)
return DIR_NONE;
else if (index > DIR_EAST)
index -= DIR_EAST;
index--;
b = MapGridGetMetatileBehaviorAt(x, y);
behavior = MapGridGetMetatileBehaviorAt(x, y);
if (gUnknown_83A705C[index](b) == 1)
if (ledgeBehaviorFuncs[index](behavior) == TRUE)
return index + 1;
return 0;
return DIR_NONE;
}
static void SetObjectEventSpriteOamTableForLongGrass(struct ObjectEvent *objEvent, struct Sprite *sprite)
@ -8369,90 +8367,86 @@ static void SetObjectEventSpriteOamTableForLongGrass(struct ObjectEvent *objEven
sprite->subspriteTableNum = 4;
if (ZCoordToPriority(objEvent->previousElevation) == 1)
if (ElevationToPriority(objEvent->previousElevation) == 1)
sprite->subspriteTableNum = 5;
}
bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y)
static bool8 IsElevationMismatchAt(u8 elevation, s16 x, s16 y)
{
u8 mapZ;
u8 mapElevation;
if (z == 0)
if (elevation == 0)
return FALSE;
mapZ = MapGridGetElevationAt(x, y);
mapElevation = MapGridGetElevationAt(x, y);
if (mapZ == 0 || mapZ == 0xF)
if (mapElevation == 0 || mapElevation == 15)
return FALSE;
if (mapZ != z)
if (mapElevation != elevation)
return TRUE;
return FALSE;
}
static const u8 sUnknown_083A706C[] = {
0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
static const u8 sElevationToSubpriority[] = {
115, 115, 83, 115, 83, 115, 83, 115, 83, 115, 83, 115, 83, 0, 0, 115
};
// Each byte corresponds to a sprite priority for an object event.
// This is directly the inverse of sObjectEventPriorities_083A708C.
static const u8 sObjectEventPriorities_083A707C[] = {
static const u8 sElevationToPriority[] = {
2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
};
// Each byte corresponds to a sprite priority for an object event.
// This is the inverse of sObjectEventPriorities_083A707C.
// 1 = Above player sprite
// 2 = Below player sprite
static const u8 sObjectEventPriorities_083A708C[] = {
static const u8 sElevationToSubspriteTableNum[] = {
1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
};
void UpdateObjectEventZCoordAndPriority(struct ObjectEvent *objEvent, struct Sprite *sprite)
static void UpdateObjectEventElevationAndPriority(struct ObjectEvent *objEvent, struct Sprite *sprite)
{
if (objEvent->fixedPriority)
return;
ObjectEventUpdateZCoord(objEvent);
ObjectEventUpdateElevation(objEvent);
sprite->subspriteTableNum = sObjectEventPriorities_083A708C[objEvent->previousElevation];
sprite->oam.priority = sObjectEventPriorities_083A707C[objEvent->previousElevation];
sprite->subspriteTableNum = sElevationToSubspriteTableNum[objEvent->previousElevation];
sprite->oam.priority = sElevationToPriority[objEvent->previousElevation];
}
static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z)
static void InitObjectPriorityByElevation(struct Sprite *sprite, u8 elevation)
{
sprite->subspriteTableNum = sObjectEventPriorities_083A708C[z];
sprite->oam.priority = sObjectEventPriorities_083A707C[z];
sprite->subspriteTableNum = sElevationToSubspriteTableNum[elevation];
sprite->oam.priority = sElevationToPriority[elevation];
}
u8 ZCoordToPriority(u8 z)
u8 ElevationToPriority(u8 elevation)
{
return sObjectEventPriorities_083A707C[z];
return sElevationToPriority[elevation];
}
void ObjectEventUpdateZCoord(struct ObjectEvent *objEvent)
void ObjectEventUpdateElevation(struct ObjectEvent *objEvent)
{
u8 z = MapGridGetElevationAt(objEvent->currentCoords.x, objEvent->currentCoords.y);
u8 z2 = MapGridGetElevationAt(objEvent->previousCoords.x, objEvent->previousCoords.y);
u8 curElevation = MapGridGetElevationAt(objEvent->currentCoords.x, objEvent->currentCoords.y);
u8 prevElevation = MapGridGetElevationAt(objEvent->previousCoords.x, objEvent->previousCoords.y);
if (z == 0xF || z2 == 0xF)
if (curElevation == 15 || prevElevation == 15)
return;
objEvent->currentElevation = z;
objEvent->currentElevation = curElevation;
if (z != 0 && z != 0xF)
objEvent->previousElevation = z;
if (curElevation != 0 && curElevation != 15)
objEvent->previousElevation = curElevation;
}
void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
void SetObjectSubpriorityByElevation(u8 elevation, struct Sprite *sprite, u8 subpriority)
{
s32 tmp = sprite->centerToCornerVecY;
u32 tmpa = *(u16 *)&sprite->y;
u32 tmpb = *(u16 *)&gSpriteCoordOffsetY;
s32 tmp2 = (tmpa - tmp) + tmpb;
u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
sprite->subpriority = tmp3 + sUnknown_083A706C[a] + b;
sprite->subpriority = tmp3 + sElevationToSubpriority[elevation] + subpriority;
}
static void ObjectEventUpdateSubpriority(struct ObjectEvent *objEvent, struct Sprite *sprite)
@ -8460,10 +8454,10 @@ static void ObjectEventUpdateSubpriority(struct ObjectEvent *objEvent, struct Sp
if (objEvent->fixedPriority)
return;
SetObjectSubpriorityByZCoord(objEvent->previousElevation, sprite, 1);
SetObjectSubpriorityByElevation(objEvent->previousElevation, sprite, 1);
}
bool8 AreZCoordsCompatible(u8 a, u8 b)
static bool8 AreElevationsCompatible(u8 a, u8 b)
{
if (a == 0 || b == 0)
return TRUE;
@ -8759,7 +8753,7 @@ static void DoGroundEffects_OnSpawn(struct ObjectEvent *objEvent, struct Sprite
if (objEvent->triggerGroundEffectsOnMove)
{
flags = 0;
UpdateObjectEventZCoordAndPriority(objEvent, sprite);
UpdateObjectEventElevationAndPriority(objEvent, sprite);
GetAllGroundEffectFlags_OnSpawn(objEvent, &flags);
SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite);
DoFlaggedGroundEffects(objEvent, sprite, flags);
@ -8775,7 +8769,7 @@ static void DoGroundEffects_OnBeginStep(struct ObjectEvent *objEvent, struct Spr
if (objEvent->triggerGroundEffectsOnMove)
{
flags = 0;
UpdateObjectEventZCoordAndPriority(objEvent, sprite);
UpdateObjectEventElevationAndPriority(objEvent, sprite);
GetAllGroundEffectFlags_OnBeginStep(objEvent, &flags);
SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite);
filters_out_some_ground_effects(objEvent, &flags);
@ -8792,7 +8786,7 @@ static void DoGroundEffects_OnFinishStep(struct ObjectEvent *objEvent, struct Sp
if (objEvent->triggerGroundEffectsOnStop)
{
flags = 0;
UpdateObjectEventZCoordAndPriority(objEvent, sprite);
UpdateObjectEventElevationAndPriority(objEvent, sprite);
GetAllGroundEffectFlags_OnFinishStep(objEvent, &flags);
SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite);
FilterOutStepOnPuddleGroundEffectIfJumping(objEvent, &flags);
@ -8855,7 +8849,7 @@ void UnfreezeObjectEvents(void)
}
#define tObjectEventId data[0]
#define tZCoord data[1]
#define tElevation data[1]
#define tInvisible data[2]
#define tDirection data[3]
@ -9251,7 +9245,7 @@ void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *sprite)
{
DoObjectUnionRoomWarpYDisplacement(sprite);
SetObjectSubpriorityByZCoord(sprite->tZCoord, sprite, 1);
SetObjectSubpriorityByElevation(sprite->tElevation, sprite, 1);
UpdateObjectEventSpriteVisibility(sprite, sprite->tInvisible);
}
@ -9425,7 +9419,7 @@ bool32 RfuUnionObjectIsWarping(u8 objectEventId)
#undef tUnionRoomWarpAnimState
#undef tUnionRoomWarpAnimNo
#undef tInvisible
#undef tZCoord
#undef tElevation
#undef tObjectEventId
u32 StartFieldEffectForObjectEvent(u8 fieldEffectId, struct ObjectEvent * objectEvent)

View File

@ -345,7 +345,7 @@ static void Task_QuestLogPlayback_OpenStartMenu(u8 taskId)
static void GetPlayerPosition(struct MapPosition *position)
{
PlayerGetDestCoords(&position->x, &position->y);
position->height = PlayerGetZCoord();
position->elevation = PlayerGetElevation();
}
static void GetInFrontOfPlayerPosition(struct MapPosition *position)
@ -355,9 +355,9 @@ static void GetInFrontOfPlayerPosition(struct MapPosition *position)
GetXYCoordsOneStepInFrontOfPlayer(&position->x, &position->y);
PlayerGetDestCoords(&x, &y);
if (MapGridGetElevationAt(x, y) != 0)
position->height = PlayerGetZCoord();
position->elevation = PlayerGetElevation();
else
position->height = 0;
position->elevation = 0;
}
static u16 GetPlayerCurMetatileBehavior(void)
@ -410,9 +410,9 @@ const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatil
s32 i;
if (!MetatileBehavior_IsCounter(MapGridGetMetatileBehaviorAt(position->x, position->y)))
objectEventId = GetObjectEventIdByXYZ(position->x, position->y, position->height);
objectEventId = GetObjectEventIdByPosition(position->x, position->y, position->elevation);
else
objectEventId = GetObjectEventIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height);
objectEventId = GetObjectEventIdByPosition(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->elevation);
if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
return NULL;
@ -434,14 +434,14 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8
u8 objectEventId;
const u8 *script;
objectEventId = GetObjectEventIdByXYZ(position->x, position->y, position->height);
objectEventId = GetObjectEventIdByPosition(position->x, position->y, position->elevation);
if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
{
if (MetatileBehavior_IsCounter(metatileBehavior) != TRUE)
return NULL;
// Look for an object event on the other side of the counter.
objectEventId = GetObjectEventIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height);
objectEventId = GetObjectEventIdByPosition(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->elevation);
if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
return NULL;
}
@ -462,7 +462,7 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8
static const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
{
u8 signpostType;
const struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
const struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation);
if (bgEvent == NULL)
return NULL;
@ -632,7 +632,7 @@ static bool8 TryStartStepBasedScript(struct MapPosition *position, u16 metatileB
static bool8 TryStartCoordEventScript(struct MapPosition *position)
{
const u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
const u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation);
if (script == NULL)
return FALSE;
@ -814,7 +814,7 @@ static void SetUpWalkIntoSignScript(const u8 *script, u8 playerDirection)
static const u8 *GetSignpostScriptAtMapPosition(struct MapPosition * position)
{
const struct BgEvent * event = GetBackgroundEventAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
const struct BgEvent * event = GetBackgroundEventAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation);
if (event == NULL)
return NULL;
if (event->bgUnion.script != NULL)
@ -959,7 +959,7 @@ static bool8 IsArrowWarpMetatileBehavior(u16 metatileBehavior, u8 direction)
static s8 GetWarpEventAtMapPosition(struct MapHeader *mapHeader, struct MapPosition *position)
{
return GetWarpEventAtPosition(mapHeader, position->x - 7, position->y - 7, position->height);
return GetWarpEventAtPosition(mapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation);
}
static void SetupWarp(struct MapHeader *unused, s8 warpEventId, struct MapPosition *position)
@ -1083,7 +1083,7 @@ void HandleBoulderActivateVictoryRoadSwitch(u16 x, u16 y)
{
for (i = 0; i < n; i++)
{
if (events[i].x + 7 == x && events[i].y + 7 == y)
if (events[i].x + MAP_OFFSET == x && events[i].y + MAP_OFFSET == y)
{
QuestLog_CutRecording();
ScriptContext_SetupScript(events[i].script);
@ -1095,7 +1095,7 @@ void HandleBoulderActivateVictoryRoadSwitch(u16 x, u16 y)
const u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position)
{
return GetCoordEventScriptAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
return GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation);
}
static const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
@ -1119,7 +1119,7 @@ bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior)
{
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsUnableToEmerge(metatileBehavior))
{
if (SetDiveWarpEmerge(position->x - 7, position->y - 7))
if (SetDiveWarpEmerge(position->x - MAP_OFFSET, position->y - MAP_OFFSET))
{
StoreInitialPlayerAvatarState();
DoDiveWarp();
@ -1129,7 +1129,7 @@ bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior)
}
else if (MetatileBehavior_IsDiveable(metatileBehavior) == TRUE)
{
if (SetDiveWarpDive(position->x - 7, position->y - 7))
if (SetDiveWarpDive(position->x - MAP_OFFSET, position->y - MAP_OFFSET))
{
StoreInitialPlayerAvatarState();
DoDiveWarp();
@ -1149,12 +1149,12 @@ static u8 TrySetDiveWarp(void)
metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsUnableToEmerge(metatileBehavior))
{
if (SetDiveWarpEmerge(x - 7, y - 7) == TRUE)
if (SetDiveWarpEmerge(x - MAP_OFFSET, y - MAP_OFFSET) == TRUE)
return 1;
}
else if (MetatileBehavior_IsDiveable(metatileBehavior) == TRUE)
{
if (SetDiveWarpDive(x - 7, y - 7) == TRUE)
if (SetDiveWarpDive(x - MAP_OFFSET, y - MAP_OFFSET) == TRUE)
return 2;
}
return 0;

View File

@ -1998,7 +1998,7 @@ static bool8 LavaridgeGym1FWarpEffect_2(struct Task *task, struct ObjectEvent *
} else
{
task->data[1]++;
ObjectEventSetHeldMovement(objectEvent, GetWalkInPlaceFastMovementAction(objectEvent->facingDirection));
ObjectEventSetHeldMovement(objectEvent, GetWalkInPlaceFasterMovementAction(objectEvent->facingDirection));
PlaySE(SE_LAVARIDGE_FALL_WARP);
}
}

View File

@ -387,7 +387,7 @@ u32 FldEff_LongGrass(void)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]);
sprite->oam.priority = ElevationToPriority(gFieldEffectArguments[2]);
sprite->data[0] = gFieldEffectArguments[2];
sprite->data[1] = gFieldEffectArguments[0];
sprite->data[2] = gFieldEffectArguments[1];
@ -1381,7 +1381,7 @@ void UpdateJumpImpactEffect(struct Sprite *sprite)
else
{
UpdateObjectEventSpriteVisibility(sprite, FALSE);
SetObjectSubpriorityByZCoord(sprite->data[0], sprite, 0);
SetObjectSubpriorityByElevation(sprite->data[0], sprite, 0);
}
}
@ -1400,7 +1400,7 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 z, u8 of
const struct ObjectEventGraphicsInfo * graphicsInfo; // Unused Variable
struct Sprite *linkedSprite;
SetObjectSubpriorityByZCoord(z, sprite, offset);
SetObjectSubpriorityByElevation(z, sprite, offset);
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
struct ObjectEvent * objectEvent = &gObjectEvents[i];

View File

@ -928,7 +928,7 @@ static void ExitStairsMovement(s16 *speedX, s16 *speedY, s16 *offsetX, s16 *offs
direction = DIR_WEST;
else
direction = DIR_EAST;
ObjectEventForceSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], GetWalkInPlaceSlowMovementAction(direction));
ObjectEventForceSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], GetWalkInPlaceFastMovementAction(direction));
GetStairsMovementDirection(metatileBehavior, speedX, speedY);
*offsetX = *speedX * 16;
*offsetY = *speedY * 16;

View File

@ -329,27 +329,27 @@ static u8 DoForcedMovementInCurrentDirection(MovementAction movementAction)
static bool8 ForcedMovement_Slip(void)
{
return DoForcedMovementInCurrentDirection(PlayerGoSpeed2);
return DoForcedMovementInCurrentDirection(PlayerWalkFast);
}
static bool8 ForcedMovement_WalkSouth(void)
{
return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed1);
return DoForcedMovement(DIR_SOUTH, PlayerWalkNormal);
}
static bool8 ForcedMovement_WalkNorth(void)
{
return DoForcedMovement(DIR_NORTH, PlayerGoSpeed1);
return DoForcedMovement(DIR_NORTH, PlayerWalkNormal);
}
static bool8 ForcedMovement_WalkWest(void)
{
return DoForcedMovement(DIR_WEST, PlayerGoSpeed1);
return DoForcedMovement(DIR_WEST, PlayerWalkNormal);
}
static bool8 ForcedMovement_WalkEast(void)
{
return DoForcedMovement(DIR_EAST, PlayerGoSpeed1);
return DoForcedMovement(DIR_EAST, PlayerWalkNormal);
}
static bool8 ForcedMovement_SpinRight(void)
@ -412,22 +412,22 @@ static u8 ForcedMovement_Slide(u8 direction, MovementAction movementAction)
static bool8 ForcedMovement_SlideSouth(void)
{
return ForcedMovement_Slide(DIR_SOUTH, PlayerGoSpeed2);
return ForcedMovement_Slide(DIR_SOUTH, PlayerWalkFast);
}
static bool8 ForcedMovement_SlideNorth(void)
{
return ForcedMovement_Slide(DIR_NORTH, PlayerGoSpeed2);
return ForcedMovement_Slide(DIR_NORTH, PlayerWalkFast);
}
static bool8 ForcedMovement_SlideWest(void)
{
return ForcedMovement_Slide(DIR_WEST, PlayerGoSpeed2);
return ForcedMovement_Slide(DIR_WEST, PlayerWalkFast);
}
static bool8 ForcedMovement_SlideEast(void)
{
return ForcedMovement_Slide(DIR_EAST, PlayerGoSpeed2);
return ForcedMovement_Slide(DIR_EAST, PlayerWalkFast);
}
static bool8 ForcedMovement_MatJump(void)
@ -508,8 +508,8 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys)
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
{
// speed 2 is fast, same speed as running
PlayerGoSpeed2(direction);
// Same speed as running
PlayerWalkFast(direction);
return;
}
@ -526,9 +526,9 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys)
else
{
if (PlayerIsMovingOnRockStairs(direction))
PlayerGoSlow(direction);
PlayerWalkSlow(direction);
else
PlayerGoSpeed1(direction);
PlayerWalkNormal(direction);
}
}
@ -598,7 +598,7 @@ static bool8 CanStopSurfing(s16 x, s16 y, u8 direction)
{
if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
&& MapGridGetElevationAt(x, y) == 3
&& GetObjectEventIdByXYZ(x, y, 3) == OBJECT_EVENTS_COUNT)
&& GetObjectEventIdByPosition(x, y, 3) == OBJECT_EVENTS_COUNT)
{
QuestLogRecordPlayerAvatarGfxTransitionWithDuration(sQuestLogSurfDismountActionIds[direction], 16);
CreateStopSurfingTask(direction);
@ -610,9 +610,9 @@ static bool8 CanStopSurfing(s16 x, s16 y, u8 direction)
}
}
static bool8 ShouldJumpLedge(s16 x, s16 y, u8 z)
static bool8 ShouldJumpLedge(s16 x, s16 y, u8 direction)
{
if (GetLedgeJumpDirection(x, y, z) != 0)
if (GetLedgeJumpDirection(x, y, direction) != DIR_NONE)
return TRUE;
else
return FALSE;
@ -830,29 +830,29 @@ static void QL_TryRecordNPCStepWithDuration32(struct ObjectEvent * objectEvent,
QuestLogRecordNPCStepWithDuration(objectEvent->localId, objectEvent->mapNum, objectEvent->mapGroup, movementAction, 32);
}
void PlayerGoSlowest(u8 direction)
void PlayerWalkSlower(u8 direction)
{
PlayerSetAnimId(GetWalkSlowerMovementAction(direction), 2);
}
void PlayerGoSlow(u8 direction)
void PlayerWalkSlow(u8 direction)
{
PlayerSetAnimId(GetWalkSlowMovementAction(direction), 2);
}
void PlayerGoSpeed1(u8 direction)
void PlayerWalkNormal(u8 direction)
{
PlayerSetAnimId(GetWalkNormalMovementAction(direction), 2);
}
void PlayerGoSpeed2(u8 direction)
void PlayerWalkFast(u8 direction)
{
PlayerSetAnimId(GetWalkFastMovementAction(direction), 2);
}
void sub_805C134(u8 direction)
void PlayerGlide(u8 direction)
{
PlayerSetAnimId(sub_8063FDC(direction), 2);
PlayerSetAnimId(GetGlideMovementAction(direction), 2);
}
void PlayerRideWaterCurrent(u8 direction)
@ -860,10 +860,9 @@ void PlayerRideWaterCurrent(u8 direction)
PlayerSetAnimId(GetRideWaterCurrentMovementAction(direction), 2);
}
// fastest speed (4 speed)
void PlayerGoSpeed4(u8 direction)
void PlayerWalkFaster(u8 direction)
{
PlayerSetAnimId(GetWalkFastestMovementAction(direction), 2);
PlayerSetAnimId(GetWalkFasterMovementAction(direction), 2);
}
void PlayerRun(u8 direction)
@ -885,7 +884,7 @@ void PlayerOnBikeCollide(u8 direction)
void PlayerNotOnBikeCollide(u8 direction)
{
PlayCollisionSoundIfNotFacingWarp(direction);
PlayerSetAnimId(GetStepInPlaceDelay32AnimId(direction), 2);
PlayerSetAnimId(GetWalkInPlaceSlowMovementAction(direction), 2);
}
void PlayerFaceDirection(u8 direction)
@ -900,7 +899,7 @@ void PlayerFaceDirectionFast(u8 direction)
void PlayerTurnInPlace(u8 direction)
{
PlayerSetAnimId(GetWalkInPlaceSlowMovementAction(direction), 1);
PlayerSetAnimId(GetWalkInPlaceFastMovementAction(direction), 1);
}
void PlayerJumpLedge(u8 direction)
@ -965,13 +964,13 @@ static void PlayerStandingHoppingWheelie(u8 direction)
static void PlayerMovingHoppingWheelie(u8 direction)
{
PlaySE(SE_BIKE_HOP);
PlayerSetAnimId(GetAcroWheelieHopDirectionMovementAction(direction), 2);
PlayerSetAnimId(GetAcroWheelieHopMovementAction(direction), 2);
}
static void PlayerLedgeHoppingWheelie(u8 direction)
{
PlaySE(SE_BIKE_HOP);
PlayerSetAnimId(GetAcroWheelieJumpDirectionMovementAction(direction), 8);
PlayerSetAnimId(GetAcroWheelieJumpMovementAction(direction), 8);
}
static void PlayerAcroTurnJump(u8 direction)
@ -983,17 +982,17 @@ static void PlayerAcroTurnJump(u8 direction)
static void PlayerAcroWheelieCollide(u8 direction)
{
PlaySE(SE_WALL_HIT);
PlayerSetAnimId(GetAcroWheelieInPlaceDirectionMovementAction(direction), 2);
PlayerSetAnimId(GetAcroWheelieInPlaceMovementAction(direction), 2);
}
static void PlayerAcroPopWheelie(u8 direction)
{
PlayerSetAnimId(GetAcroPopWheelieMoveDirectionMovementAction(direction), 2);
PlayerSetAnimId(GetAcroPopWheelieMoveMovementAction(direction), 2);
}
static void PlayerAcroWheelieMove(u8 direction)
{
PlayerSetAnimId(GetAcroWheelieMoveDirectionMovementAction(direction), 2);
PlayerSetAnimId(GetAcroWheelieMoveMovementAction(direction), 2);
}
static bool8 (*const sArrowWarpMetatileBehaviorChecks[])(u8) = {
@ -1090,7 +1089,7 @@ u8 GetPlayerMovementDirection(void)
return gObjectEvents[gPlayerAvatar.objectEventId].movementDirection;
}
u8 PlayerGetZCoord(void)
u8 PlayerGetElevation(void)
{
return gObjectEvents[gPlayerAvatar.objectEventId].previousElevation;
}
@ -1215,7 +1214,7 @@ bool8 IsPlayerFacingSurfableFishableWater(void)
MoveCoords(playerObjEvent->facingDirection, &x, &y);
if (GetCollisionAtCoords(playerObjEvent, x, y, playerObjEvent->facingDirection) == COLLISION_ELEVATION_MISMATCH
&& PlayerGetZCoord() == 3
&& PlayerGetElevation() == 3
&& MetatileAtCoordsIsWaterTile(x, y) == TRUE)
return TRUE;
else

View File

@ -145,7 +145,7 @@ bool8 SetUpFieldMove_Cut(void)
for (j = 0; j < CUT_SIDE; j++)
{
x = gPlayerFacingPosition.x - 1 + j;
if (MapGridGetElevationAt(x, y) == gPlayerFacingPosition.height)
if (MapGridGetElevationAt(x, y) == gPlayerFacingPosition.elevation)
{
if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
{
@ -214,7 +214,7 @@ bool8 FldEff_CutGrass(void)
for (j = 0; j < CUT_SIDE; j++)
{
x = gPlayerFacingPosition.x - 1 + j;
if (MapGridGetElevationAt(x, y) == gPlayerFacingPosition.height)
if (MapGridGetElevationAt(x, y) == gPlayerFacingPosition.elevation)
{
if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
{

View File

@ -28,8 +28,8 @@ bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId)
u8 mapObjId;
GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
gPlayerFacingPosition.height = PlayerGetZCoord();
mapObjId = GetObjectEventIdByXYZ(gPlayerFacingPosition.x, gPlayerFacingPosition.y, gPlayerFacingPosition.height);
gPlayerFacingPosition.elevation = PlayerGetElevation();
mapObjId = GetObjectEventIdByPosition(gPlayerFacingPosition.x, gPlayerFacingPosition.y, gPlayerFacingPosition.elevation);
if (gObjectEvents[mapObjId].graphicsId != graphicsId)
return FALSE;
gSpecialVar_LastTalked = gObjectEvents[mapObjId].localId;

View File

@ -3032,7 +3032,7 @@ static void LoadCableClubPlayer(s32 linkPlayerId, s32 myPlayerId, struct CableCl
GetLinkPlayerCoords(linkPlayerId, &x, &y);
player->pos.x = x;
player->pos.y = y;
player->pos.height = GetLinkPlayerElevation(linkPlayerId);
player->pos.elevation = GetLinkPlayerElevation(linkPlayerId);
player->metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
}
@ -3085,7 +3085,7 @@ static const u8 *TryInteractWithPlayer(struct CableClubPlayer *player)
otherPlayerPos = player->pos;
otherPlayerPos.x += gDirectionToVectors[player->facing].x;
otherPlayerPos.y += gDirectionToVectors[player->facing].y;
otherPlayerPos.height = 0;
otherPlayerPos.elevation = 0;
linkPlayerId = GetLinkPlayerIdAt(otherPlayerPos.x, otherPlayerPos.y);
if (linkPlayerId != 4)
@ -3295,7 +3295,7 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1
objEvent->previousCoords.y = y;
SetSpritePosToMapCoords(x, y, &objEvent->initialCoords.x, &objEvent->initialCoords.y);
objEvent->initialCoords.x += 8;
ObjectEventUpdateZCoord(objEvent);
ObjectEventUpdateElevation(objEvent);
}
static void SetLinkPlayerObjectRange(u8 linkPlayerId, u8 dir)
@ -3434,7 +3434,7 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer
{
objEvent->directionSequenceIndex = 16;
ShiftObjectEventCoords(objEvent, x, y);
ObjectEventUpdateZCoord(objEvent);
ObjectEventUpdateElevation(objEvent);
return TRUE;
}
}
@ -3536,8 +3536,8 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
struct ObjectEvent *objEvent = &gObjectEvents[linkPlayerObjEvent->objEventId];
sprite->x = objEvent->initialCoords.x;
sprite->y = objEvent->initialCoords.y;
SetObjectSubpriorityByZCoord(objEvent->previousElevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(objEvent->previousElevation);
SetObjectSubpriorityByElevation(objEvent->previousElevation, sprite, 1);
sprite->oam.priority = ElevationToPriority(objEvent->previousElevation);
if (!linkPlayerObjEvent->movementMode != MOVEMENT_MODE_FREE)
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(linkDirection(objEvent)));

View File

@ -791,11 +791,11 @@ static void BuyMenuDrawMapMetatileLayer(u16 *dest, s16 offset1, s16 offset2, con
static void BuyMenuCollectObjectEventData(void)
{
s16 facingX, facingY;
u8 x, y, z;
u8 x, y, elevation;
u8 num = 0;
GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY);
z = PlayerGetZCoord();
elevation = PlayerGetElevation();
for (y = 0; y < OBJECT_EVENTS_COUNT; y++)
sViewportObjectEvents[y][OBJECT_EVENT_ID] = OBJECT_EVENTS_COUNT;
@ -804,7 +804,7 @@ static void BuyMenuCollectObjectEventData(void)
{
for (x = 0; x < 7; x++)
{
u8 eventObjId = GetObjectEventIdByXYZ(facingX - 3 + x, facingY - 2 + y, z);
u8 eventObjId = GetObjectEventIdByPosition(facingX - 3 + x, facingY - 2 + y, elevation);
if (eventObjId != OBJECT_EVENTS_COUNT)
{
sViewportObjectEvents[num][OBJECT_EVENT_ID] = eventObjId;