From 906622f04dc3a977f379196af295158c9d5324d2 Mon Sep 17 00:00:00 2001 From: ghoulslash Date: Fri, 29 Jul 2022 11:26:21 -0400 Subject: [PATCH] add gExitStairsMovementDisabled --- include/overworld.h | 1 + src/field_screen_effect.c | 4 +++- src/overworld.c | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/overworld.h b/include/overworld.h index adaa6aad04..e24b8e4d9c 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -51,6 +51,7 @@ extern void (*gFieldCallback)(void); extern bool8 (*gFieldCallback2)(void); extern u8 gLocalLinkPlayerId; extern u8 gFieldLinkPlayerCount; +extern bool8 gExitStairsMovementDisabled; extern const struct UCoords32 gDirectionToVectors[]; diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index ee7887a1f3..7f775aefdc 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -264,12 +264,14 @@ static void SetUpWarpExitTask(void) behavior = MapGridGetMetatileBehaviorAt(x, y); if (MetatileBehavior_IsDoor(behavior) == TRUE) func = Task_ExitDoor; - else if (MetatileBehavior_IsDirectionalStairWarp(behavior) == TRUE) + else if (MetatileBehavior_IsDirectionalStairWarp(behavior) == TRUE && !gExitStairsMovementDisabled) func = Task_ExitStairs; else if (MetatileBehavior_IsNonAnimDoor(behavior) == TRUE) func = Task_ExitNonAnimDoor; else func = Task_ExitNonDoor; + + gExitStairsMovementDisabled = FALSE; CreateTask(func, 10); } diff --git a/src/overworld.c b/src/overworld.c index 383f10ffe1..108a646cfb 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -202,6 +202,7 @@ EWRAM_DATA static struct InitialPlayerAvatarState sInitialPlayerAvatarState = {0 EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0}; +EWRAM_DATA bool8 gExitStairsMovementDisabled = FALSE; static const struct WarpData sDummyWarpData = { @@ -1729,6 +1730,7 @@ void CB2_ContinueSavedGame(void) PlayTimeCounter_Start(); ScriptContext1_Init(); ScriptContext2_Disable(); + gExitStairsMovementDisabled = TRUE; InitMatchCallCounters(); if (UseContinueGameWarp() == TRUE) { @@ -1814,6 +1816,7 @@ static bool32 LoadMapInStepsLink(u8 *state) (*state)++; break; case 1: + gExitStairsMovementDisabled = FALSE; LoadMapFromWarp(TRUE); (*state)++; break;