diff --git a/include/constants/global.h b/include/constants/global.h index acc1f353d5..6434217095 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -119,5 +119,6 @@ #define DIR_NORTHEAST 8 #define SLOW_MOVEMENT_ON_STAIRS TRUE +#define FOLLOW_ME_IMPLEMENTED TRUE //for stairs movement. see ObjectMovingOnRockStairs in src/field_player_avatar.c #endif // GUARD_CONSTANTS_GLOBAL_H diff --git a/src/event_object_movement.c b/src/event_object_movement.c index fc13c96643..54252db1e7 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -5175,8 +5175,13 @@ bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *objectEvent) static u8 TryUpdateMovementActionOnStairs(struct ObjectEvent *objectEvent, u8 movementActionId) { - if (objectEvent->isPlayer) - return movementActionId; //handled separately + #if FOLLOW_ME_IMPLEMENTED + if (objectEvent->isPlayer || objectEvent->localId == GetFollowerLocalId()) + return movementActionId; //handled separately + #else + if (objectEvent->isPlayer) + return movementActionId; //handled separately + #endif if (!ObjectMovingOnRockStairs(objectEvent, objectEvent->movementDirection)) return movementActionId; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 19e3fb4869..5ef8a0ae2c 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -2296,6 +2296,11 @@ bool8 ObjectMovingOnRockStairs(struct ObjectEvent *objectEvent, u8 direction) s16 x = objectEvent->currentCoords.x; s16 y = objectEvent->currentCoords.y; + #if FOLLOW_ME_IMPLEMENTED + if (PlayerHasFollower() && (objectEvent->isPlayer || objectEvent->localId == GetFollowerLocalId())) + return FALSE; + #endif + switch (direction) { case DIR_NORTH: