Added a failsafe for cases when Goodbye topic is finished but dialog has not closed for whatever reason

This commit is contained in:
Eddoursul 2026-02-20 14:59:37 +01:00
parent 240e361967
commit 845a007995

View File

@ -19,6 +19,15 @@ public:
private: private:
RE::UI_MESSAGE_RESULTS ProcessMessageEx(RE::UIMessage& a_message) RE::UI_MESSAGE_RESULTS ProcessMessageEx(RE::UIMessage& a_message)
{ {
// Unblock Tab if Goodbye response has finished playing (End script has already run at this point).
// A failsafe when Goodbye does not close the dialogue menu.
if (bTabBlocked && a_message.type == RE::UI_MESSAGE_TYPE::kUpdate) {
auto* mtm = RE::MenuTopicManager::GetSingleton();
if (mtm && mtm->isSayingGoodbye && !mtm->currentTopicInfo && RE::UI::GetSingleton()->IsMenuOpen(MENU_NAME)) {
BlockTab(false);
}
}
if (bTabBlocked && a_message.type == RE::UI_MESSAGE_TYPE::kScaleformEvent) { if (bTabBlocked && a_message.type == RE::UI_MESSAGE_TYPE::kScaleformEvent) {
RE::BSUIScaleformData* data = static_cast<RE::BSUIScaleformData*>(a_message.data); RE::BSUIScaleformData* data = static_cast<RE::BSUIScaleformData*>(a_message.data);
@ -37,7 +46,7 @@ private:
} }
} }
} }
return _ProcessMessageFn(this, a_message); return _ProcessMessageFn(this, a_message);
} }