From feb489cab07bcd8624d41a9153834b7f04147be6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20Dub=C3=A9?= <159546+serprex@users.noreply.github.com> Date: Tue, 14 Apr 2026 06:41:37 +0000 Subject: [PATCH] Fix shopsanity soft lock (#6502) GetForCurrentLanguage() defaults to MF_FORMATTED, appending MESSAGE_END (\x02) to output string Revert using hint name for items in shops. Other merchants return GetHintMessage directly --- .../randomizer/Messages/MerchantMessages.cpp | 12 ++++++++---- soh/soh/Enhancements/randomizer/location.cpp | 1 - 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/Messages/MerchantMessages.cpp b/soh/soh/Enhancements/randomizer/Messages/MerchantMessages.cpp index 56fa5c7b1..9a004f4ab 100644 --- a/soh/soh/Enhancements/randomizer/Messages/MerchantMessages.cpp +++ b/soh/soh/Enhancements/randomizer/Messages/MerchantMessages.cpp @@ -24,8 +24,8 @@ extern PlayState* gPlayState; RAND_GET_OPTION(RSK_SHUFFLE_MERCHANTS).Is(RO_SHUFFLE_MERCHANTS_ALL)) void BuildMerchantMessage(CustomMessage& msg, RandomizerCheck rc, bool mysterious = true) { - RandomizerGet rgid = RAND_GET_ITEM(rc)->GetPlacedRandomizerGet(); - uint16_t price = RAND_GET_ITEM(rc)->GetPrice(); + auto location = RAND_GET_ITEM(rc); + RandomizerGet rgid = location->GetPlacedRandomizerGet(); CustomMessage itemName; std::string color = Rando::StaticData::RetrieveItem(static_cast(rgid)).GetColor(); if (mysterious) { @@ -37,10 +37,14 @@ void BuildMerchantMessage(CustomMessage& msg, RandomizerCheck rc, bool mysteriou color = "%g"; } else { const Rando::Item& item = Rando::StaticData::RetrieveItem(rgid); - itemName = item.GetHint().GetHintMessage().GetForCurrentLanguage(); + if (Rando::StaticData::GetLocation(rc)->IsShop()) { + itemName = CustomMessage(Rando::StaticData::RetrieveItem(rgid).GetName()); + } else { + itemName = item.GetHint().GetHintMessage(); + } } msg.Replace("[[color]]", color); - msg.InsertNames({ itemName, CustomMessage(std::to_string(price)) }); + msg.InsertNames({ itemName, CustomMessage(std::to_string(location->GetPrice())) }); } void BuildBeanGuyMessage(uint16_t* textId, bool* loadFromMessageTable) { diff --git a/soh/soh/Enhancements/randomizer/location.cpp b/soh/soh/Enhancements/randomizer/location.cpp index e129a6b26..6de708c01 100644 --- a/soh/soh/Enhancements/randomizer/location.cpp +++ b/soh/soh/Enhancements/randomizer/location.cpp @@ -1,6 +1,5 @@ #include "location.h" #include "static_data.h" -#include #include #include "option.h"