From 1e8d72c3ed1e9d5534b1bf2b137b8a8d024fc1c9 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 21 Aug 2026 16:50:09 -0600 Subject: [PATCH] Fix group lookup for custom flows --- src/d/d_msg_flow.cpp | 11 +++++++---- src/d/d_msg_object.cpp | 4 ++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/d/d_msg_flow.cpp b/src/d/d_msg_flow.cpp index 4b67bb1bda..8ce605e122 100644 --- a/src/d/d_msg_flow.cpp +++ b/src/d/d_msg_flow.cpp @@ -43,6 +43,11 @@ u16 message_id(const MessageEntryData& entry) { return static_cast(static_cast(entry.bytes[4]) << 8 | entry.bytes[5]); } +u16 flow_group(int flowId) { + const bool isCommonFlow = flowId >= 3000 && flowId < dusk::flow::kCustomNodeMin; + return isCommonFlow ? 0 : static_cast(dMsgObject_getGroupID()); +} + } // namespace #endif @@ -70,8 +75,7 @@ void dMsgFlow_c::init(fopAc_ac_c* i_partner, int i_flowID, int param_2, fopAc_ac dMsgObject_changeFlowGroup(i_flowID); #if TARGET_PC - dusk::flow::bind_resource(dMsgObject_getMsgDtPtr(), - i_flowID >= 3000 ? 0 : static_cast(dMsgObject_getGroupID())); + dusk::flow::bind_resource(dMsgObject_getMsgDtPtr(), flow_group(i_flowID)); #endif if (param_2 == 0) { @@ -399,8 +403,7 @@ void dMsgFlow_c::setInitValueGroupChange(int i_msgNo, fopAc_ac_c** i_talkPartner dMsgObject_changeFlowGroup(i_msgNo); #if TARGET_PC - dusk::flow::bind_resource(dMsgObject_getMsgDtPtr(), - i_msgNo >= 3000 ? 0 : static_cast(dMsgObject_getGroupID())); + dusk::flow::bind_resource(dMsgObject_getMsgDtPtr(), flow_group(i_msgNo)); #endif setInitValue(0); diff --git a/src/d/d_msg_object.cpp b/src/d/d_msg_object.cpp index e9e62ce635..072bd5039b 100644 --- a/src/d/d_msg_object.cpp +++ b/src/d/d_msg_object.cpp @@ -1865,7 +1865,11 @@ void dMsgObject_c::readMessageGroupLocal(mDoDvdThd_mountXArchive_c** p_arcMount) void dMsgObject_c::changeFlowGroupLocal(s32 param_0) { mFlowChk = 1; +#if TARGET_PC + changeGroup(param_0 >= 3000 && param_0 < dusk::flow::kCustomNodeMin ? (s16)0 : s_groupID); +#else changeGroup(param_0 >= 3000 ? (s16)0 : s_groupID); +#endif } void dMsgObject_c::demoMessageGroupLocal() {