From 705bbea144c10fc10898569557b63331c419fb41 Mon Sep 17 00:00:00 2001 From: Jordan Longstaff Date: Wed, 30 Oct 2024 22:14:22 -0400 Subject: [PATCH] "Skip forced dialog" no longer skips optional Navi hints (#4450) --- soh/soh/Enhancements/timesaver_hook_handlers.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/soh/soh/Enhancements/timesaver_hook_handlers.cpp b/soh/soh/Enhancements/timesaver_hook_handlers.cpp index 8088f1d51..ecef65243 100644 --- a/soh/soh/Enhancements/timesaver_hook_handlers.cpp +++ b/soh/soh/Enhancements/timesaver_hook_handlers.cpp @@ -333,8 +333,9 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_li case VB_NAVI_TALK: { if (ForcedDialogIsDisabled(FORCED_DIALOG_SKIP_NAVI)) { ElfMsg* naviTalk = va_arg(args, ElfMsg*); - if (((naviTalk->actor.params >> 8) & 0x3F) != 0x3F) { - Flags_SetSwitch(gPlayState, (naviTalk->actor.params >> 8) & 0x3F); + int32_t paramsHighByte = naviTalk->actor.params >> 8; + if ((paramsHighByte & 0x80) == 0 && (paramsHighByte & 0x3F) != 0x3F) { + Flags_SetSwitch(gPlayState, paramsHighByte & 0x3F); Actor_Kill(&naviTalk->actor); *should = false; }