From c81fcffb4a78ad5a3c2b2e56eff42849ba3b5e53 Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Sat, 17 Aug 2024 18:49:00 +0200 Subject: [PATCH] fix getting stuck on spin tile object collision --- src/event_object_movement.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index dc45391da..da11c5586 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -5552,11 +5552,18 @@ bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Spri bool8 FollowablePlayerMovement_GoSpeed1(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u32 direction; + u32 movementType = objectEvent->movementType; s16 x; s16 y; direction = playerDirection; - direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + if (objectEvent->movementType == MOVEMENT_TYPE_FOLLOW_PLAYER) + { + objectEvent->directionSequenceIndex = GetPlayerFacingDirection(); + movementType = gObjectEvents[gPlayerAvatar.objectEventId].movementType; + } + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))