From 2dea7375efc8623ba925676727adcb78a7eacb87 Mon Sep 17 00:00:00 2001 From: gymnast86 Date: Fri, 8 May 2026 09:11:36 -0700 Subject: [PATCH] custom text for donating 100 rupees to charlo --- src/d/d_msg_object.cpp | 11 +++++++++++ src/dusk/randomizer/game/messages.cpp | 12 +++++++++++- src/dusk/randomizer/game/messages.hpp | 4 +++- .../generator/data/text/languages/english.yaml | 7 +++++++ .../generator/data/text/text_overrides.yaml | 4 ++++ src/dusk/randomizer/generator/utility/text.cpp | 3 +++ 6 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/d/d_msg_object.cpp b/src/d/d_msg_object.cpp index de824dd5b5..cfa74173da 100644 --- a/src/d/d_msg_object.cpp +++ b/src/d/d_msg_object.cpp @@ -31,6 +31,7 @@ #if TARGET_PC #include "d/d_item.h" +#include "dusk/randomizer/game/messages.hpp" #include "dusk/randomizer/game/stages.h" #include "dusk/randomizer/game/tools.h" #include "dusk/randomizer/game/verify_item_functions.h" @@ -639,6 +640,16 @@ void dMsgObject_c::setMessageIndex(u32 revoIndex, u32 param_2, bool param_3) { mpRefer->setSelMsgPtr(NULL); } else { char* my_ptr = (char*) (iVar2 + pMsg->entries[msgIndex].string_offset + 8); +#if TARGET_PC + // This is where the game sets the pointer to the string for message choices. + // If any of our custom messages are for message choices, override them here + if (randomizer_IsActive()) { + auto override = GetTextOverride(groupID, field_0x15c); + if (override != NULL) { + my_ptr = override; + } + } +#endif mpRefer->setSelMsgPtr(my_ptr); } } diff --git a/src/dusk/randomizer/game/messages.cpp b/src/dusk/randomizer/game/messages.cpp index db1f84d56e..1b1ba94810 100644 --- a/src/dusk/randomizer/game/messages.cpp +++ b/src/dusk/randomizer/game/messages.cpp @@ -7,7 +7,7 @@ #include // Format certain messages that need to have dynamic info in them -const char* GetFormatedTextOverride(u32 key, const std::string& text) { +char* GetFormatedTextOverride(u32 key, std::string& text) { // Store formatted message in static buffer so it never goes away. // This is fine as long as we only ever need to format messages // for textboxes, but will cause issues if we need to use it for @@ -63,3 +63,13 @@ void HandleTextOverrides(JMessage::TControl* control, JMessage::TProcessor const } } } + +// Used in special cases +char* GetTextOverride(s16 groupID, u32 messageId) { + u32 key = (groupID << 16) | messageId; + auto& textOverrides = randomizer_GetContext().mTextOverrides; + if (textOverrides.contains(key)) { + return GetFormatedTextOverride(key, textOverrides[key]); + } + return NULL; +} \ No newline at end of file diff --git a/src/dusk/randomizer/game/messages.hpp b/src/dusk/randomizer/game/messages.hpp index 317f274aad..3dc871c8b1 100644 --- a/src/dusk/randomizer/game/messages.hpp +++ b/src/dusk/randomizer/game/messages.hpp @@ -6,4 +6,6 @@ struct TProcessor; struct TControl; } -void HandleTextOverrides(JMessage::TControl* control, JMessage::TProcessor const* pProcessor, int groupID, int index); \ No newline at end of file +void HandleTextOverrides(JMessage::TControl* control, JMessage::TProcessor const* pProcessor, int groupID, int index); + +char* GetTextOverride(s16 groupID, u32 messageId); \ No newline at end of file diff --git a/src/dusk/randomizer/generator/data/text/languages/english.yaml b/src/dusk/randomizer/generator/data/text/languages/english.yaml index 22928dfc77..aacac12ec8 100644 --- a/src/dusk/randomizer/generator/data/text/languages/english.yaml +++ b/src/dusk/randomizer/generator/data/text/languages/english.yaml @@ -323,3 +323,10 @@ Partially Filled Sky Book Get Item Text: Text: |- You got a Sky Character! You've collected {} so far. + +Charlo Donation Choice Text: + Standard: + Text: |- + 100 Rupees + 50 Rupees + Sorry... \ No newline at end of file diff --git a/src/dusk/randomizer/generator/data/text/text_overrides.yaml b/src/dusk/randomizer/generator/data/text/text_overrides.yaml index f3151fc6bd..155aea63d1 100644 --- a/src/dusk/randomizer/generator/data/text/text_overrides.yaml +++ b/src/dusk/randomizer/generator/data/text/text_overrides.yaml @@ -221,3 +221,7 @@ - Name: Partially Filled Sky Book Get Item Text Group: 0 Message Id: 335 + +- Name: Charlo Donation Choice Text + Group: 4 + Message Id: 6403 diff --git a/src/dusk/randomizer/generator/utility/text.cpp b/src/dusk/randomizer/generator/utility/text.cpp index 959c739846..d792d06a02 100644 --- a/src/dusk/randomizer/generator/utility/text.cpp +++ b/src/dusk/randomizer/generator/utility/text.cpp @@ -267,6 +267,9 @@ namespace randomizer { const static std::unordered_map messageCodes = { {"", "\x1A\x05\x00\x00\x01"s }, {"", "\x1A\x05\x00\x00\x02"s }, + {"", "\x1A\x06\x00\x00\x09\x01"s}, + {"", "\x1A\x06\x00\x00\x09\x02"s}, + {"", "\x1A\x06\x00\x00\x09\x03"s}, {"", "\x1A\x06\xFF\x00\x00\x00"s}, {"", "\x1A\x06\xFF\x00\x00\x01"s}, {"", "\x1A\x06\xFF\x00\x00\x02"s},