From 55f71457d80f070cb86afcbff32ad47853c4e7ba Mon Sep 17 00:00:00 2001 From: aMannus Date: Wed, 17 Aug 2022 16:45:19 +0200 Subject: [PATCH 01/22] initial proof of concept --- .../custom-message/CustomMessageTypes.h | 6 +++- .../Enhancements/randomizer/randomizer.cpp | 31 +++++++++++++++++++ soh/soh/Enhancements/randomizer/randomizer.h | 1 + soh/soh/OTRGlobals.cpp | 7 +++++ 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/soh/soh/Enhancements/custom-message/CustomMessageTypes.h b/soh/soh/Enhancements/custom-message/CustomMessageTypes.h index 1859e83a5..ab557dfba 100644 --- a/soh/soh/Enhancements/custom-message/CustomMessageTypes.h +++ b/soh/soh/Enhancements/custom-message/CustomMessageTypes.h @@ -11,7 +11,11 @@ typedef enum { TEXT_ALTAR_CHILD = 0x7040, TEXT_ALTAR_ADULT = 0x7088, TEXT_GANONDORF = 0x70CC, - TEXT_GANONDORF_NOHINT = 0x70CD + TEXT_GANONDORF_NOHINT = 0x70CD, + TEXT_BLUE_RUPEE = 0xCC, + TEXT_RED_RUPEE = 0xF0, + TEXT_PURPLE_RUPEE = 0xF1, + TEXT_HUGE_RUPEE = 0xF2 } TextIDs; #ifdef __cplusplus diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index ca86793cc..b58eabe55 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -27,6 +27,7 @@ u8 generated; const std::string Randomizer::getItemMessageTableID = "Randomizer"; const std::string Randomizer::hintMessageTableID = "RandomizerHints"; const std::string Randomizer::scrubMessageTableID = "RandomizerScrubs"; +const std::string Randomizer::rupeeMessageTableID = "RandomizerRupees"; Randomizer::Randomizer() { Sprite bowSprite = { dgFairyBowIconTex, 32, 32, G_IM_FMT_RGBA, G_IM_SIZ_32b, 0 }; @@ -4620,6 +4621,35 @@ void CreateScrubMessages() { } } +void CreateRupeeMessages() { + CustomMessageManager* customMessageManager = CustomMessageManager::Instance; + customMessageManager->AddCustomMessageTable(Randomizer::rupeeMessageTableID); + const std::vector rupees = { TEXT_BLUE_RUPEE, TEXT_RED_RUPEE, TEXT_PURPLE_RUPEE, TEXT_HUGE_RUPEE }; + std::string rupeeText = " "; + for (u8 rupee : rupees) { + switch (rupee) { + case TEXT_BLUE_RUPEE: + rupeeText = "\x05\x03 5 BitCoin\x05\x00 "; + break; + case TEXT_RED_RUPEE: + rupeeText = "\x05\x01 20 Moneys\x05\x00 "; + break; + case TEXT_PURPLE_RUPEE: + rupeeText = "\x05\x05 50 Gummybears\x05\x00 "; + break; + case TEXT_HUGE_RUPEE: + rupeeText = "\x05\x06 200 Cornflakes\x05\x00 "; + break; + } + customMessageManager->CreateMessage(Randomizer::rupeeMessageTableID, rupee, + { TEXTBOX_TYPE_BLACK, TEXTBOX_POS_BOTTOM, + "You found" + rupeeText + "!", + "You found" + rupeeText + "!", + "You found" + rupeeText + "!" + }); + } +} + void Randomizer::CreateCustomMessages() { // RANDTODO: Translate into french and german and replace GIMESSAGE_UNTRANSLATED // with GIMESSAGE(getItemID, itemID, english, german, french). @@ -4695,6 +4725,7 @@ void Randomizer::CreateCustomMessages() { }; CreateGetItemMessages(getItemMessages); CreateScrubMessages(); + CreateRupeeMessages(); } void InitRando() { diff --git a/soh/soh/Enhancements/randomizer/randomizer.h b/soh/soh/Enhancements/randomizer/randomizer.h index 1994cfdc4..88c4f0296 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.h +++ b/soh/soh/Enhancements/randomizer/randomizer.h @@ -29,6 +29,7 @@ class Randomizer { static const std::string getItemMessageTableID; static const std::string hintMessageTableID; static const std::string scrubMessageTableID; + static const std::string rupeeMessageTableID; static Sprite* GetSeedTexture(uint8_t index); s16 GetItemModelFromId(s16 itemId); diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 3611c97de..663f7ada0 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1447,6 +1447,10 @@ extern "C" CustomMessageEntry Randomizer_GetScrubMessage(u16 scrubTextId) { return CustomMessageManager::Instance->RetrieveMessage(Randomizer::scrubMessageTableID, price); } +extern "C" CustomMessageEntry Randomizer_GetRupeeMessage(u16 rupeeTextId) { + return CustomMessageManager::Instance->RetrieveMessage(Randomizer::rupeeMessageTableID, rupeeTextId); +} + extern "C" CustomMessageEntry Randomizer_GetAltarMessage() { return (LINK_IS_ADULT) ? CustomMessageManager::Instance->RetrieveMessage(Randomizer::hintMessageTableID, TEXT_ALTAR_ADULT) @@ -1540,6 +1544,9 @@ extern "C" int CustomMessage_RetrieveIfExists(GlobalContext* globalCtx) { } } else if (textId == TEXT_SCRUB_POH || textId == TEXT_SCRUB_STICK_UPGRADE || textId == TEXT_SCRUB_NUT_UPGRADE) { messageEntry = Randomizer_GetScrubMessage(textId); + } else if (textId == TEXT_BLUE_RUPEE || textId == TEXT_RED_RUPEE || textId == TEXT_PURPLE_RUPEE || + textId == TEXT_HUGE_RUPEE) { + messageEntry = Randomizer_GetRupeeMessage(textId); } } if (textId == TEXT_GS_NO_FREEZE || textId == TEXT_GS_FREEZE) { From f9766fa4a6f28a469ac71adb3d1bc771061e83f8 Mon Sep 17 00:00:00 2001 From: aMannus Date: Wed, 17 Aug 2022 22:30:21 +0200 Subject: [PATCH 02/22] Initial language support and setup for randomizing --- .../Enhancements/randomizer/randomizer.cpp | 14 +++++----- soh/soh/OTRGlobals.cpp | 27 +++++++++++++++++-- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index b58eabe55..2e0280b4f 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -4629,23 +4629,23 @@ void CreateRupeeMessages() { for (u8 rupee : rupees) { switch (rupee) { case TEXT_BLUE_RUPEE: - rupeeText = "\x05\x03 5 BitCoin\x05\x00 "; + rupeeText = "\x05\x03 5 %RUPEE%\x05\x00"; break; case TEXT_RED_RUPEE: - rupeeText = "\x05\x01 20 Moneys\x05\x00 "; + rupeeText = "\x05\x01 20 %RUPEE%\x05\x00"; break; case TEXT_PURPLE_RUPEE: - rupeeText = "\x05\x05 50 Gummybears\x05\x00 "; + rupeeText = "\x05\x05 50 %RUPEE%\x05\x00"; break; case TEXT_HUGE_RUPEE: - rupeeText = "\x05\x06 200 Cornflakes\x05\x00 "; + rupeeText = "\x05\x06 200 %RUPEE%\x05\x00"; break; } customMessageManager->CreateMessage(Randomizer::rupeeMessageTableID, rupee, { TEXTBOX_TYPE_BLACK, TEXTBOX_POS_BOTTOM, - "You found" + rupeeText + "!", - "You found" + rupeeText + "!", - "You found" + rupeeText + "!" + "You found" + rupeeText + " !", + "Du fandest" + rupeeText + " !", + "Tu as trouvé" + rupeeText + " !" }); } } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 663f7ada0..92db032d1 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1447,8 +1447,32 @@ extern "C" CustomMessageEntry Randomizer_GetScrubMessage(u16 scrubTextId) { return CustomMessageManager::Instance->RetrieveMessage(Randomizer::scrubMessageTableID, price); } +extern "C" std::string Randomizer_InsertRupeeName(std::string message, int language) { + std::string replaceWith; + switch (language) { + case LANGUAGE_ENG: + replaceWith = "Bananas"; + break; + case LANGUAGE_GER: + replaceWith = "Sauerkraut"; + break; + case LANGUAGE_FRA: + replaceWith = "Baguettes"; + break; + } + std::string replaceString = "%RUPEE%"; + size_t pos = message.find(replaceString); + size_t len = replaceString.length(); + message.replace(pos, len, replaceWith); + return message; +} + extern "C" CustomMessageEntry Randomizer_GetRupeeMessage(u16 rupeeTextId) { - return CustomMessageManager::Instance->RetrieveMessage(Randomizer::rupeeMessageTableID, rupeeTextId); + CustomMessageEntry messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::rupeeMessageTableID, rupeeTextId); + messageEntry.english = Randomizer_InsertRupeeName(messageEntry.english, LANGUAGE_ENG); + messageEntry.german = Randomizer_InsertRupeeName(messageEntry.german, LANGUAGE_GER); + messageEntry.french = Randomizer_InsertRupeeName(messageEntry.french, LANGUAGE_FRA); + return messageEntry; } extern "C" CustomMessageEntry Randomizer_GetAltarMessage() { @@ -1576,7 +1600,6 @@ extern "C" int CustomMessage_RetrieveIfExists(GlobalContext* globalCtx) { case LANGUAGE_GER: return msgCtx->msgLength = font->msgLength = CopyStringToCharBuffer(messageEntry.german, buffer, maxBufferSize); - case LANGUAGE_ENG: default: return msgCtx->msgLength = font->msgLength = From c1cec5a44a2750911fcd7ebb571561831df5f7f3 Mon Sep 17 00:00:00 2001 From: aMannus Date: Wed, 17 Aug 2022 23:30:51 +0200 Subject: [PATCH 03/22] First fully working implementation --- soh/soh/Enhancements/randomizer/randomizer.cpp | 2 +- soh/soh/OTRGlobals.cpp | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 2e0280b4f..9a4eb155b 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -4645,7 +4645,7 @@ void CreateRupeeMessages() { { TEXTBOX_TYPE_BLACK, TEXTBOX_POS_BOTTOM, "You found" + rupeeText + " !", "Du fandest" + rupeeText + " !", - "Tu as trouvé" + rupeeText + " !" + "Vous obtenez" + rupeeText + " !" }); } } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 92db032d1..1c6e22fa2 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1449,15 +1449,25 @@ extern "C" CustomMessageEntry Randomizer_GetScrubMessage(u16 scrubTextId) { extern "C" std::string Randomizer_InsertRupeeName(std::string message, int language) { std::string replaceWith; - switch (language) { + const char* englishRupeeNames[20] = { + "Rupees", "BitCoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Pokémon", "Emeralds", "Bucks", + "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", "DogeCoins", "Mushrooms", "Experience", "Friends" + }; + const char* germanRupeeNames[1] = { "Rupees" }; + const char* frenchRupeeNames[1] = { "Rupees" }; + int randomIndex; + switch (language) { case LANGUAGE_ENG: - replaceWith = "Bananas"; + randomIndex = gSaveContext.naviTimer % (sizeof(englishRupeeNames) / sizeof(englishRupeeNames[0])); + replaceWith = englishRupeeNames[randomIndex]; break; case LANGUAGE_GER: - replaceWith = "Sauerkraut"; + randomIndex = gSaveContext.naviTimer % (sizeof(germanRupeeNames) / sizeof(germanRupeeNames[0])); + replaceWith = germanRupeeNames[randomIndex]; break; case LANGUAGE_FRA: - replaceWith = "Baguettes"; + randomIndex = gSaveContext.naviTimer % (sizeof(frenchRupeeNames) / sizeof(frenchRupeeNames[0])); + replaceWith = frenchRupeeNames[randomIndex]; break; } std::string replaceString = "%RUPEE%"; From e25fcc645b39a4c34c6917862cdb94b789af64e6 Mon Sep 17 00:00:00 2001 From: aMannus Date: Wed, 17 Aug 2022 23:57:31 +0200 Subject: [PATCH 04/22] More names, fixed translations --- soh/soh/Enhancements/randomizer/randomizer.cpp | 2 +- soh/soh/OTRGlobals.cpp | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 9a4eb155b..4acf48cd6 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -4644,7 +4644,7 @@ void CreateRupeeMessages() { customMessageManager->CreateMessage(Randomizer::rupeeMessageTableID, rupee, { TEXTBOX_TYPE_BLACK, TEXTBOX_POS_BOTTOM, "You found" + rupeeText + " !", - "Du fandest" + rupeeText + " !", + "Du hast" + rupeeText + " gefunden!", "Vous obtenez" + rupeeText + " !" }); } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 1c6e22fa2..4829da8a4 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1449,12 +1449,13 @@ extern "C" CustomMessageEntry Randomizer_GetScrubMessage(u16 scrubTextId) { extern "C" std::string Randomizer_InsertRupeeName(std::string message, int language) { std::string replaceWith; - const char* englishRupeeNames[20] = { - "Rupees", "BitCoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Pokémon", "Emeralds", "Bucks", - "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", "DogeCoins", "Mushrooms", "Experience", "Friends" + const char* englishRupeeNames[30] = { + "Rupees", "Bitcoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Lemmings", "Emeralds", "Bucks", + "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", "Dogecoin", "Mushrooms", "Experience", "Friends", + "Coins", "Rings", "Gil", "Pokédollars", "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys" }; - const char* germanRupeeNames[1] = { "Rupees" }; - const char* frenchRupeeNames[1] = { "Rupees" }; + const char* germanRupeeNames[1] = { "Rubine" }; + const char* frenchRupeeNames[1] = { "Rubis" }; int randomIndex; switch (language) { case LANGUAGE_ENG: From 589f2be0f1d7109c1d0bb6fd7ccc993bc7f6c751 Mon Sep 17 00:00:00 2001 From: aMannus Date: Thu, 18 Aug 2022 00:09:54 +0200 Subject: [PATCH 05/22] More names --- soh/soh/OTRGlobals.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 4829da8a4..e1bb32052 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1449,10 +1449,11 @@ extern "C" CustomMessageEntry Randomizer_GetScrubMessage(u16 scrubTextId) { extern "C" std::string Randomizer_InsertRupeeName(std::string message, int language) { std::string replaceWith; - const char* englishRupeeNames[30] = { + const char* englishRupeeNames[34] = { "Rupees", "Bitcoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Lemmings", "Emeralds", "Bucks", "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", "Dogecoin", "Mushrooms", "Experience", "Friends", - "Coins", "Rings", "Gil", "Pokédollars", "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys" + "Coins", "Rings", "Gil", "Pokédollars", "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys", + "Smackaroos", "Zorkmids", "Zenny", "Bones" }; const char* germanRupeeNames[1] = { "Rubine" }; const char* frenchRupeeNames[1] = { "Rubis" }; From cca32b7a431b6c2ef0fa32d566da6cfb85051ae5 Mon Sep 17 00:00:00 2001 From: PurpleHato Date: Thu, 18 Aug 2022 00:35:54 +0200 Subject: [PATCH 06/22] ADD: Baguette money --- soh/soh/OTRGlobals.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index e1bb32052..baa55ccc2 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1456,7 +1456,10 @@ extern "C" std::string Randomizer_InsertRupeeName(std::string message, int langu "Smackaroos", "Zorkmids", "Zenny", "Bones" }; const char* germanRupeeNames[1] = { "Rubine" }; - const char* frenchRupeeNames[1] = { "Rubis" }; + const char* frenchRupeeNames[1] = { "Rubis", "Bitcoin", "Bananes", "Euros", "Dollars", "Émeraudes", "Joyaux", + "Diamants", "Balles", "Pokémon", "Pièces", "Lunes", "Étoiles", "Dogecoin", "Anneaux", "Radis", "Pokédollars", + "Zennies", "Pépètes", "Mailles", "Éthers", "Clochettes", "Capsules", "Gils", "Champignons", "Blés", "Halos", + "Munnies", "Orens", "Florens", "Crédits", "Galds", "Bling", "Orbes", "Baguettes", "Croissants" }; int randomIndex; switch (language) { case LANGUAGE_ENG: From a1cc0da6d3f021443eb2095f63a2a31f4e13df59 Mon Sep 17 00:00:00 2001 From: PurpleHato Date: Thu, 18 Aug 2022 00:39:15 +0200 Subject: [PATCH 07/22] TWEAK: Forgot the array size --- soh/soh/OTRGlobals.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index baa55ccc2..f4eff9b8b 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1456,7 +1456,7 @@ extern "C" std::string Randomizer_InsertRupeeName(std::string message, int langu "Smackaroos", "Zorkmids", "Zenny", "Bones" }; const char* germanRupeeNames[1] = { "Rubine" }; - const char* frenchRupeeNames[1] = { "Rubis", "Bitcoin", "Bananes", "Euros", "Dollars", "Émeraudes", "Joyaux", + const char* frenchRupeeNames[36] = { "Rubis", "Bitcoin", "Bananes", "Euros", "Dollars", "Émeraudes", "Joyaux", "Diamants", "Balles", "Pokémon", "Pièces", "Lunes", "Étoiles", "Dogecoin", "Anneaux", "Radis", "Pokédollars", "Zennies", "Pépètes", "Mailles", "Éthers", "Clochettes", "Capsules", "Gils", "Champignons", "Blés", "Halos", "Munnies", "Orens", "Florens", "Crédits", "Galds", "Bling", "Orbes", "Baguettes", "Croissants" }; From a2243634cd273bd0e56f8a541766a427a1da8942 Mon Sep 17 00:00:00 2001 From: aMannus Date: Thu, 18 Aug 2022 11:54:02 +0200 Subject: [PATCH 08/22] Rand(), option to disable, attempted fix special chars --- libultraship/libultraship/ImGuiImpl.cpp | 4 ++++ soh/soh/OTRGlobals.cpp | 26 +++++++++++++++---------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/libultraship/libultraship/ImGuiImpl.cpp b/libultraship/libultraship/ImGuiImpl.cpp index ac7ab9d73..7f9b3765c 100644 --- a/libultraship/libultraship/ImGuiImpl.cpp +++ b/libultraship/libultraship/ImGuiImpl.cpp @@ -1912,6 +1912,10 @@ namespace SohImGui { "(medallions/stones/songs). Note that these fanfares\n" "are longer than usual." ); + PaddedEnhancementCheckbox("Disable Random Rupee Names", "gRandoDisableRandomRupeeNames", true, false); + Tooltip( + "Disables the random rupee names in the textbox when obtaining rupees." + ); ImGui::EndMenu(); } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index f4eff9b8b..8a6fdd44c 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1455,23 +1455,27 @@ extern "C" std::string Randomizer_InsertRupeeName(std::string message, int langu "Coins", "Rings", "Gil", "Pokédollars", "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys", "Smackaroos", "Zorkmids", "Zenny", "Bones" }; - const char* germanRupeeNames[1] = { "Rubine" }; - const char* frenchRupeeNames[36] = { "Rubis", "Bitcoin", "Bananes", "Euros", "Dollars", "Émeraudes", "Joyaux", - "Diamants", "Balles", "Pokémon", "Pièces", "Lunes", "Étoiles", "Dogecoin", "Anneaux", "Radis", "Pokédollars", - "Zennies", "Pépètes", "Mailles", "Éthers", "Clochettes", "Capsules", "Gils", "Champignons", "Blés", "Halos", - "Munnies", "Orens", "Florens", "Crédits", "Galds", "Bling", "Orbes", "Baguettes", "Croissants" }; + const char* germanRupeeNames[1] = { + "Rubine" + }; + const char* frenchRupeeNames[36] = { + "Rubis", "Bitcoin", "Bananes", "Euros", "Dollars", "Émeraudes", "Joyaux", + "Diamants", "Balles", "Pokémon", "Pièces", "Lunes", "Étoiles", "Dogecoin", "Anneaux", "Radis", "Pokédollars", + "Zennies", "Pépètes", "Mailles", "Éthers", "Clochettes", "Capsules", "Gils", "Champignons", "Blés", "Halos", + "Munnies", "Orens", "Florens", "Crédits", "Galds", "Bling", "Orbes", "Baguettes", "Croissants" + }; int randomIndex; switch (language) { case LANGUAGE_ENG: - randomIndex = gSaveContext.naviTimer % (sizeof(englishRupeeNames) / sizeof(englishRupeeNames[0])); + randomIndex = rand() % (sizeof(englishRupeeNames) / sizeof(englishRupeeNames[0])); replaceWith = englishRupeeNames[randomIndex]; break; case LANGUAGE_GER: - randomIndex = gSaveContext.naviTimer % (sizeof(germanRupeeNames) / sizeof(germanRupeeNames[0])); + randomIndex = rand() % (sizeof(germanRupeeNames) / sizeof(germanRupeeNames[0])); replaceWith = germanRupeeNames[randomIndex]; break; case LANGUAGE_FRA: - randomIndex = gSaveContext.naviTimer % (sizeof(frenchRupeeNames) / sizeof(frenchRupeeNames[0])); + randomIndex = rand() % (sizeof(frenchRupeeNames) / sizeof(frenchRupeeNames[0])); replaceWith = frenchRupeeNames[randomIndex]; break; } @@ -1479,6 +1483,7 @@ extern "C" std::string Randomizer_InsertRupeeName(std::string message, int langu size_t pos = message.find(replaceString); size_t len = replaceString.length(); message.replace(pos, len, replaceWith); + CustomMessageManager::Instance->FormatCustomMessage(message); return message; } @@ -1583,8 +1588,9 @@ extern "C" int CustomMessage_RetrieveIfExists(GlobalContext* globalCtx) { } } else if (textId == TEXT_SCRUB_POH || textId == TEXT_SCRUB_STICK_UPGRADE || textId == TEXT_SCRUB_NUT_UPGRADE) { messageEntry = Randomizer_GetScrubMessage(textId); - } else if (textId == TEXT_BLUE_RUPEE || textId == TEXT_RED_RUPEE || textId == TEXT_PURPLE_RUPEE || - textId == TEXT_HUGE_RUPEE) { + } else if (!CVar_GetS32("gRandoDisableRandomRupeeNames", 0) && + (textId == TEXT_BLUE_RUPEE || textId == TEXT_RED_RUPEE || textId == TEXT_PURPLE_RUPEE || + textId == TEXT_HUGE_RUPEE)) { messageEntry = Randomizer_GetRupeeMessage(textId); } } From e500db810bef304bde85639cf939366e5110c404 Mon Sep 17 00:00:00 2001 From: aMannus Date: Thu, 18 Aug 2022 13:55:59 +0200 Subject: [PATCH 09/22] Code cleanup + more names --- .../custom-message/CustomMessageManager.cpp | 2 -- soh/soh/Enhancements/randomizer/randomizer.cpp | 14 +++++++------- soh/soh/OTRGlobals.cpp | 6 +++--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/soh/soh/Enhancements/custom-message/CustomMessageManager.cpp b/soh/soh/Enhancements/custom-message/CustomMessageManager.cpp index 8a42bef95..5f86fbf2e 100644 --- a/soh/soh/Enhancements/custom-message/CustomMessageManager.cpp +++ b/soh/soh/Enhancements/custom-message/CustomMessageManager.cpp @@ -80,8 +80,6 @@ bool CustomMessageManager::InsertCustomMessage(std::string tableID, uint16_t tex return messageInsertResult.second; } - - bool CustomMessageManager::CreateGetItemMessage(std::string tableID, GetItemID giid, ItemID iid, CustomMessageEntry messageEntry) { FormatCustomMessage(messageEntry.english, iid); FormatCustomMessage(messageEntry.german, iid); diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 4acf48cd6..3cae6f9b8 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -4629,23 +4629,23 @@ void CreateRupeeMessages() { for (u8 rupee : rupees) { switch (rupee) { case TEXT_BLUE_RUPEE: - rupeeText = "\x05\x03 5 %RUPEE%\x05\x00"; + rupeeText = "\x05\x03 5 %RUPEE% \x05\x00"; break; case TEXT_RED_RUPEE: - rupeeText = "\x05\x01 20 %RUPEE%\x05\x00"; + rupeeText = "\x05\x01 20 %RUPEE% \x05\x00"; break; case TEXT_PURPLE_RUPEE: - rupeeText = "\x05\x05 50 %RUPEE%\x05\x00"; + rupeeText = "\x05\x05 50 %RUPEE% \x05\x00"; break; case TEXT_HUGE_RUPEE: - rupeeText = "\x05\x06 200 %RUPEE%\x05\x00"; + rupeeText = "\x05\x06 200 %RUPEE% \x05\x00"; break; } customMessageManager->CreateMessage(Randomizer::rupeeMessageTableID, rupee, { TEXTBOX_TYPE_BLACK, TEXTBOX_POS_BOTTOM, - "You found" + rupeeText + " !", - "Du hast" + rupeeText + " gefunden!", - "Vous obtenez" + rupeeText + " !" + "You found" + rupeeText + "!", + "Du hast" + rupeeText + " gefunden!", + "Vous obtenez" + rupeeText + "!" }); } } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 8a6fdd44c..1df80f38e 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1448,12 +1448,11 @@ extern "C" CustomMessageEntry Randomizer_GetScrubMessage(u16 scrubTextId) { } extern "C" std::string Randomizer_InsertRupeeName(std::string message, int language) { - std::string replaceWith; - const char* englishRupeeNames[34] = { + const char* englishRupeeNames[40] = { "Rupees", "Bitcoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Lemmings", "Emeralds", "Bucks", "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", "Dogecoin", "Mushrooms", "Experience", "Friends", "Coins", "Rings", "Gil", "Pokédollars", "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys", - "Smackaroos", "Zorkmids", "Zenny", "Bones" + "Smackaroos", "Zorkmids", "Zenny", "Bones", "Souls", "Studs", "Munny", "Rubies", "Gald", "Gold" }; const char* germanRupeeNames[1] = { "Rubine" @@ -1465,6 +1464,7 @@ extern "C" std::string Randomizer_InsertRupeeName(std::string message, int langu "Munnies", "Orens", "Florens", "Crédits", "Galds", "Bling", "Orbes", "Baguettes", "Croissants" }; int randomIndex; + std::string replaceWith; switch (language) { case LANGUAGE_ENG: randomIndex = rand() % (sizeof(englishRupeeNames) / sizeof(englishRupeeNames[0])); From 7639c0f2ede3c2b17f16ba24b004fef3d21e89e8 Mon Sep 17 00:00:00 2001 From: aMannus Date: Fri, 19 Aug 2022 14:41:20 +0200 Subject: [PATCH 10/22] Moved code to randomizer.cpp, fixes special chars --- soh/include/message_data_static.h | 22 +------ soh/include/message_data_textbox_types.h | 25 ++++++++ .../custom-message/CustomMessageManager.h | 26 +------- .../Enhancements/randomizer/randomizer.cpp | 64 ++++++++++++++++--- soh/soh/Enhancements/randomizer/randomizer.h | 3 + soh/soh/OTRGlobals.cpp | 52 +-------------- 6 files changed, 89 insertions(+), 103 deletions(-) create mode 100644 soh/include/message_data_textbox_types.h diff --git a/soh/include/message_data_static.h b/soh/include/message_data_static.h index c286771aa..0821f1093 100644 --- a/soh/include/message_data_static.h +++ b/soh/include/message_data_static.h @@ -3,32 +3,12 @@ #include "global.h" #include "message_data_fmt.h" +#include "message_data_textbox_types.h" #ifdef __cplusplus extern "C" { #endif -typedef enum { - /* 0 */ TEXTBOX_TYPE_BLACK, - /* 1 */ TEXTBOX_TYPE_WOODEN, - /* 2 */ TEXTBOX_TYPE_BLUE, - /* 3 */ TEXTBOX_TYPE_OCARINA, - /* 4 */ TEXTBOX_TYPE_NONE_BOTTOM, - /* 5 */ TEXTBOX_TYPE_NONE_NO_SHADOW, - /* 11 */ TEXTBOX_TYPE_CREDITS = 11 -} TextBoxType; - -typedef enum { - /* 0 */ TEXTBOX_BG_CROSS -} TextBoxBackground; - -typedef enum { - /* 0 */ TEXTBOX_POS_VARIABLE, - /* 1 */ TEXTBOX_POS_TOP, - /* 2 */ TEXTBOX_POS_MIDDLE, - /* 3 */ TEXTBOX_POS_BOTTOM -} TextBoxPosition; - typedef struct { u16 textId; u8 typePos; diff --git a/soh/include/message_data_textbox_types.h b/soh/include/message_data_textbox_types.h new file mode 100644 index 000000000..2567617e9 --- /dev/null +++ b/soh/include/message_data_textbox_types.h @@ -0,0 +1,25 @@ +#ifndef MESSAGE_DATA_TEXTBOX_TYPES_H +#define MESSAGE_DATA_TEXTBOX_TYPES_H + +typedef enum { + /* 0 */ TEXTBOX_TYPE_BLACK, + /* 1 */ TEXTBOX_TYPE_WOODEN, + /* 2 */ TEXTBOX_TYPE_BLUE, + /* 3 */ TEXTBOX_TYPE_OCARINA, + /* 4 */ TEXTBOX_TYPE_NONE_BOTTOM, + /* 5 */ TEXTBOX_TYPE_NONE_NO_SHADOW, + /* 11 */ TEXTBOX_TYPE_CREDITS = 11 +} TextBoxType; + +typedef enum { + /* 0 */ TEXTBOX_BG_CROSS +} TextBoxBackground; + +typedef enum { + /* 0 */ TEXTBOX_POS_VARIABLE, + /* 1 */ TEXTBOX_POS_TOP, + /* 2 */ TEXTBOX_POS_MIDDLE, + /* 3 */ TEXTBOX_POS_BOTTOM +} TextBoxPosition; + +#endif \ No newline at end of file diff --git a/soh/soh/Enhancements/custom-message/CustomMessageManager.h b/soh/soh/Enhancements/custom-message/CustomMessageManager.h index 0681073b8..2764e97c8 100644 --- a/soh/soh/Enhancements/custom-message/CustomMessageManager.h +++ b/soh/soh/Enhancements/custom-message/CustomMessageManager.h @@ -2,6 +2,7 @@ #include #include #include "../../../include/z64item.h" +#include "../../../include/message_data_textbox_types.h" #undef MESSAGE_END @@ -14,31 +15,6 @@ #define QM_YELLOW 0x46 #define QM_BLACK 0x47 -#ifndef MESSAGE_DATA_STATIC_H - -typedef enum { - /* 0 */ TEXTBOX_TYPE_BLACK, - /* 1 */ TEXTBOX_TYPE_WOODEN, - /* 2 */ TEXTBOX_TYPE_BLUE, - /* 3 */ TEXTBOX_TYPE_OCARINA, - /* 4 */ TEXTBOX_TYPE_NONE_BOTTOM, - /* 5 */ TEXTBOX_TYPE_NONE_NO_SHADOW, - /* 11 */ TEXTBOX_TYPE_CREDITS = 11 -} TextBoxType; - -typedef enum { - /* 0 */ TEXTBOX_BG_CROSS -} TextBoxBackground; - -typedef enum { - /* 0 */ TEXTBOX_POS_VARIABLE, - /* 1 */ TEXTBOX_POS_TOP, - /* 2 */ TEXTBOX_POS_MIDDLE, - /* 3 */ TEXTBOX_POS_BOTTOM -} TextBoxPosition; - -#endif - typedef struct { TextBoxType textBoxType; TextBoxPosition textBoxPos; diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 3cae6f9b8..47caa943a 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -14,7 +14,6 @@ #include "3drando/rando_main.hpp" #include #include "Lib/ImGui/imgui_internal.h" -#include #include using json = nlohmann::json; @@ -4629,27 +4628,76 @@ void CreateRupeeMessages() { for (u8 rupee : rupees) { switch (rupee) { case TEXT_BLUE_RUPEE: - rupeeText = "\x05\x03 5 %RUPEE% \x05\x00"; + rupeeText = "\x05\x03 5 %RUPEE%\x05\x00"; break; case TEXT_RED_RUPEE: - rupeeText = "\x05\x01 20 %RUPEE% \x05\x00"; + rupeeText = "\x05\x01 20 %RUPEE%\x05\x00"; break; case TEXT_PURPLE_RUPEE: - rupeeText = "\x05\x05 50 %RUPEE% \x05\x00"; + rupeeText = "\x05\x05 50 %RUPEE%\x05\x00"; break; case TEXT_HUGE_RUPEE: - rupeeText = "\x05\x06 200 %RUPEE% \x05\x00"; + rupeeText = "\x05\x06 200 %RUPEE%\x05\x00"; break; } customMessageManager->CreateMessage(Randomizer::rupeeMessageTableID, rupee, { TEXTBOX_TYPE_BLACK, TEXTBOX_POS_BOTTOM, - "You found" + rupeeText + "!", - "Du hast" + rupeeText + " gefunden!", - "Vous obtenez" + rupeeText + "!" + "You found" + rupeeText + " !", + "Du hast" + rupeeText + " gefunden!", + "Vous obtenez" + rupeeText + " !" }); } } +std::string Randomizer::Randomizer_InsertRupeeName(std::string message, int language) { + const char* englishRupeeNames[40] = { + "Rupees", "Bitcoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Lemmings", + "Emeralds", "Bucks", "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", + "Dogecoin", "Mushrooms", "Experience", "Friends", "Coins", "Rings", "Gil", "Pokédollars", + "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys", "Smackaroos", "Zorkmids", + "Zenny", "Bones", "Souls", "Studs", "Munny", "Rubies", "Gald", "Gold" + }; + const char* germanRupeeNames[1] = { "Rubine" }; + const char* frenchRupeeNames[36] = { + "Rubis", "Bitcoin", "Bananes", "Euros", "Dollars", "Émeraudes", "Joyaux", "Diamants", + "Balles", "Pokémon", "Pièces", "Lunes", "Étoiles", "Dogecoin", "Anneaux", "Radis", + "Pokédollars", "Zennies", "Pépètes", "Mailles", "Éthers", "Clochettes", "Capsules", "Gils", + "Champignons", "Blés", "Halos", "Munnies", "Orens", "Florens", "Crédits", "Galds", + "Bling", "Orbes", "Baguettes", "Croissants" + }; + int randomIndex; + std::string replaceWith; + switch (language) { + case LANGUAGE_ENG: + randomIndex = rand() % (sizeof(englishRupeeNames) / sizeof(englishRupeeNames[0])); + replaceWith = englishRupeeNames[randomIndex]; + break; + case LANGUAGE_GER: + randomIndex = rand() % (sizeof(germanRupeeNames) / sizeof(germanRupeeNames[0])); + replaceWith = germanRupeeNames[randomIndex]; + break; + case LANGUAGE_FRA: + randomIndex = rand() % (sizeof(frenchRupeeNames) / sizeof(frenchRupeeNames[0])); + replaceWith = frenchRupeeNames[randomIndex]; + break; + } + std::string replaceString = "%RUPEE%"; + size_t pos = message.find(replaceString); + size_t len = replaceString.length(); + message.replace(pos, len, replaceWith); + CustomMessageManager::Instance->FormatCustomMessage(message); + return message; +} + +CustomMessageEntry Randomizer::Randomizer_GetRupeeMessage(u16 rupeeTextId) { + CustomMessageEntry messageEntry = + CustomMessageManager::Instance->RetrieveMessage(Randomizer::rupeeMessageTableID, rupeeTextId); + messageEntry.english = Randomizer::Randomizer_InsertRupeeName(messageEntry.english, LANGUAGE_ENG); + messageEntry.german = Randomizer::Randomizer_InsertRupeeName(messageEntry.german, LANGUAGE_GER); + messageEntry.french = Randomizer::Randomizer_InsertRupeeName(messageEntry.french, LANGUAGE_FRA); + return messageEntry; +} + void Randomizer::CreateCustomMessages() { // RANDTODO: Translate into french and german and replace GIMESSAGE_UNTRANSLATED // with GIMESSAGE(getItemID, itemID, english, german, french). diff --git a/soh/soh/Enhancements/randomizer/randomizer.h b/soh/soh/Enhancements/randomizer/randomizer.h index 88c4f0296..9ec983e14 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.h +++ b/soh/soh/Enhancements/randomizer/randomizer.h @@ -6,6 +6,7 @@ #include "../../../include/z64item.h" #include #include +#include class Randomizer { private: @@ -47,6 +48,8 @@ class Randomizer { GetItemID GetRandomizedItemIdFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId); GetItemID GetRandomizedItemId(GetItemID ogId, s16 actorId, s16 actorParams, s16 sceneNum); static void CreateCustomMessages(); + std::string Randomizer_InsertRupeeName(std::string message, int language); + CustomMessageEntry Randomizer_GetRupeeMessage(u16 rupeeTextId); }; #ifdef __cplusplus diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 1df80f38e..2a5180dce 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -33,6 +33,7 @@ #include "Enhancements/cosmetics/CosmeticsEditor.h" #include "Enhancements/debugconsole.h" #include "Enhancements/debugger/debugger.h" +#include #include #include "Enhancements/n64_weird_frame_data.inc" #include "soh/frame_interpolation.h" @@ -1447,54 +1448,6 @@ extern "C" CustomMessageEntry Randomizer_GetScrubMessage(u16 scrubTextId) { return CustomMessageManager::Instance->RetrieveMessage(Randomizer::scrubMessageTableID, price); } -extern "C" std::string Randomizer_InsertRupeeName(std::string message, int language) { - const char* englishRupeeNames[40] = { - "Rupees", "Bitcoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Lemmings", "Emeralds", "Bucks", - "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", "Dogecoin", "Mushrooms", "Experience", "Friends", - "Coins", "Rings", "Gil", "Pokédollars", "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys", - "Smackaroos", "Zorkmids", "Zenny", "Bones", "Souls", "Studs", "Munny", "Rubies", "Gald", "Gold" - }; - const char* germanRupeeNames[1] = { - "Rubine" - }; - const char* frenchRupeeNames[36] = { - "Rubis", "Bitcoin", "Bananes", "Euros", "Dollars", "Émeraudes", "Joyaux", - "Diamants", "Balles", "Pokémon", "Pièces", "Lunes", "Étoiles", "Dogecoin", "Anneaux", "Radis", "Pokédollars", - "Zennies", "Pépètes", "Mailles", "Éthers", "Clochettes", "Capsules", "Gils", "Champignons", "Blés", "Halos", - "Munnies", "Orens", "Florens", "Crédits", "Galds", "Bling", "Orbes", "Baguettes", "Croissants" - }; - int randomIndex; - std::string replaceWith; - switch (language) { - case LANGUAGE_ENG: - randomIndex = rand() % (sizeof(englishRupeeNames) / sizeof(englishRupeeNames[0])); - replaceWith = englishRupeeNames[randomIndex]; - break; - case LANGUAGE_GER: - randomIndex = rand() % (sizeof(germanRupeeNames) / sizeof(germanRupeeNames[0])); - replaceWith = germanRupeeNames[randomIndex]; - break; - case LANGUAGE_FRA: - randomIndex = rand() % (sizeof(frenchRupeeNames) / sizeof(frenchRupeeNames[0])); - replaceWith = frenchRupeeNames[randomIndex]; - break; - } - std::string replaceString = "%RUPEE%"; - size_t pos = message.find(replaceString); - size_t len = replaceString.length(); - message.replace(pos, len, replaceWith); - CustomMessageManager::Instance->FormatCustomMessage(message); - return message; -} - -extern "C" CustomMessageEntry Randomizer_GetRupeeMessage(u16 rupeeTextId) { - CustomMessageEntry messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::rupeeMessageTableID, rupeeTextId); - messageEntry.english = Randomizer_InsertRupeeName(messageEntry.english, LANGUAGE_ENG); - messageEntry.german = Randomizer_InsertRupeeName(messageEntry.german, LANGUAGE_GER); - messageEntry.french = Randomizer_InsertRupeeName(messageEntry.french, LANGUAGE_FRA); - return messageEntry; -} - extern "C" CustomMessageEntry Randomizer_GetAltarMessage() { return (LINK_IS_ADULT) ? CustomMessageManager::Instance->RetrieveMessage(Randomizer::hintMessageTableID, TEXT_ALTAR_ADULT) @@ -1591,7 +1544,8 @@ extern "C" int CustomMessage_RetrieveIfExists(GlobalContext* globalCtx) { } else if (!CVar_GetS32("gRandoDisableRandomRupeeNames", 0) && (textId == TEXT_BLUE_RUPEE || textId == TEXT_RED_RUPEE || textId == TEXT_PURPLE_RUPEE || textId == TEXT_HUGE_RUPEE)) { - messageEntry = Randomizer_GetRupeeMessage(textId); + Randomizer randomizerInstance; + messageEntry = randomizerInstance.Randomizer_GetRupeeMessage(textId); } } if (textId == TEXT_GS_NO_FREEZE || textId == TEXT_GS_FREEZE) { From 596d4cd3922becc8ddd44ed168ce9f057c7c4e82 Mon Sep 17 00:00:00 2001 From: aMannus Date: Fri, 19 Aug 2022 14:45:18 +0200 Subject: [PATCH 11/22] More names --- soh/soh/Enhancements/randomizer/randomizer.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 47caa943a..e32a60dd1 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -4650,12 +4650,13 @@ void CreateRupeeMessages() { } std::string Randomizer::Randomizer_InsertRupeeName(std::string message, int language) { - const char* englishRupeeNames[40] = { - "Rupees", "Bitcoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Lemmings", - "Emeralds", "Bucks", "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", - "Dogecoin", "Mushrooms", "Experience", "Friends", "Coins", "Rings", "Gil", "Pokédollars", - "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys", "Smackaroos", "Zorkmids", - "Zenny", "Bones", "Souls", "Studs", "Munny", "Rubies", "Gald", "Gold" + const char* englishRupeeNames[44] = { + "Rupees", "Bitcoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Lemmings", + "Emeralds", "Bucks", "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", + "Dogecoin", "Mushrooms", "Experience", "Friends", "Coins", "Rings", "Gil", "Pokédollars", + "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys", "Smackaroos", "Zorkmids", + "Zenny", "Bones", "Souls", "Studs", "Munny", "Rubies", "Gald", "Gold", + "Shillings", "Pounds", "Glimmer", "Potch" }; const char* germanRupeeNames[1] = { "Rubine" }; const char* frenchRupeeNames[36] = { From 1ff006fa9e26646dfcb5dfd89816cd7a21164968 Mon Sep 17 00:00:00 2001 From: aMannus Date: Fri, 19 Aug 2022 14:45:55 +0200 Subject: [PATCH 12/22] Fixed newline --- soh/include/message_data_textbox_types.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soh/include/message_data_textbox_types.h b/soh/include/message_data_textbox_types.h index 2567617e9..03332182c 100644 --- a/soh/include/message_data_textbox_types.h +++ b/soh/include/message_data_textbox_types.h @@ -22,4 +22,4 @@ typedef enum { /* 3 */ TEXTBOX_POS_BOTTOM } TextBoxPosition; -#endif \ No newline at end of file +#endif From 1c785560c4d36778778ce2e12989e69808b4a7e5 Mon Sep 17 00:00:00 2001 From: aMannus Date: Fri, 19 Aug 2022 14:49:30 +0200 Subject: [PATCH 13/22] Changed tooltip --- libultraship/libultraship/ImGuiImpl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libultraship/libultraship/ImGuiImpl.cpp b/libultraship/libultraship/ImGuiImpl.cpp index 7f9b3765c..09e67233b 100644 --- a/libultraship/libultraship/ImGuiImpl.cpp +++ b/libultraship/libultraship/ImGuiImpl.cpp @@ -1914,7 +1914,7 @@ namespace SohImGui { ); PaddedEnhancementCheckbox("Disable Random Rupee Names", "gRandoDisableRandomRupeeNames", true, false); Tooltip( - "Disables the random rupee names in the textbox when obtaining rupees." + "Reverts textboxes for collecting rupees to their default state, disabling the randomization of rupee names." ); ImGui::EndMenu(); } From d0f8374c4c6c3a6622a2c999195741662d3b41ca Mon Sep 17 00:00:00 2001 From: aMannus Date: Tue, 23 Aug 2022 09:42:32 +0200 Subject: [PATCH 14/22] Changed checkbox to default to on, invert logic --- libultraship/libultraship/ImGuiImpl.cpp | 5 +++-- soh/soh/OTRGlobals.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/libultraship/libultraship/ImGuiImpl.cpp b/libultraship/libultraship/ImGuiImpl.cpp index 09e67233b..5efeb2706 100644 --- a/libultraship/libultraship/ImGuiImpl.cpp +++ b/libultraship/libultraship/ImGuiImpl.cpp @@ -452,6 +452,7 @@ namespace SohImGui { io->ConfigFlags |= ImGuiConfigFlags_DockingEnable; io->Fonts->AddFontDefault(); statsWindowOpen = CVar_GetS32("gStatsEnabled", 0); + CVar_RegisterS32("gRandoRandomRupeeNames", 1); #ifdef __SWITCH__ Ship::Switch::SetupFont(io->Fonts); #endif @@ -1912,9 +1913,9 @@ namespace SohImGui { "(medallions/stones/songs). Note that these fanfares\n" "are longer than usual." ); - PaddedEnhancementCheckbox("Disable Random Rupee Names", "gRandoDisableRandomRupeeNames", true, false); + PaddedEnhancementCheckbox("Random Rupee Names", "gRandoRandomRupeeNames", true, false); Tooltip( - "Reverts textboxes for collecting rupees to their default state, disabling the randomization of rupee names." + "When obtaining rupees, randomize what the rupee is called in the textbox." ); ImGui::EndMenu(); } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 2a5180dce..fd800464d 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1541,7 +1541,7 @@ extern "C" int CustomMessage_RetrieveIfExists(GlobalContext* globalCtx) { } } else if (textId == TEXT_SCRUB_POH || textId == TEXT_SCRUB_STICK_UPGRADE || textId == TEXT_SCRUB_NUT_UPGRADE) { messageEntry = Randomizer_GetScrubMessage(textId); - } else if (!CVar_GetS32("gRandoDisableRandomRupeeNames", 0) && + } else if (CVar_GetS32("gRandoRandomRupeeNames", 0) && (textId == TEXT_BLUE_RUPEE || textId == TEXT_RED_RUPEE || textId == TEXT_PURPLE_RUPEE || textId == TEXT_HUGE_RUPEE)) { Randomizer randomizerInstance; From 35fefdecb000131cf17a2876a6e86c5d251f8aaf Mon Sep 17 00:00:00 2001 From: aMannus Date: Tue, 23 Aug 2022 09:45:40 +0200 Subject: [PATCH 15/22] Changed CVar name --- libultraship/libultraship/ImGuiImpl.cpp | 4 ++-- soh/soh/OTRGlobals.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libultraship/libultraship/ImGuiImpl.cpp b/libultraship/libultraship/ImGuiImpl.cpp index 5efeb2706..69e86a8ce 100644 --- a/libultraship/libultraship/ImGuiImpl.cpp +++ b/libultraship/libultraship/ImGuiImpl.cpp @@ -452,7 +452,7 @@ namespace SohImGui { io->ConfigFlags |= ImGuiConfigFlags_DockingEnable; io->Fonts->AddFontDefault(); statsWindowOpen = CVar_GetS32("gStatsEnabled", 0); - CVar_RegisterS32("gRandoRandomRupeeNames", 1); + CVar_RegisterS32("gRandomizeRupeeNames", 1); #ifdef __SWITCH__ Ship::Switch::SetupFont(io->Fonts); #endif @@ -1913,7 +1913,7 @@ namespace SohImGui { "(medallions/stones/songs). Note that these fanfares\n" "are longer than usual." ); - PaddedEnhancementCheckbox("Random Rupee Names", "gRandoRandomRupeeNames", true, false); + PaddedEnhancementCheckbox("Random Rupee Names", "gRandomizeRupeeNames", true, false); Tooltip( "When obtaining rupees, randomize what the rupee is called in the textbox." ); diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index fd800464d..602f2793c 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1541,7 +1541,7 @@ extern "C" int CustomMessage_RetrieveIfExists(GlobalContext* globalCtx) { } } else if (textId == TEXT_SCRUB_POH || textId == TEXT_SCRUB_STICK_UPGRADE || textId == TEXT_SCRUB_NUT_UPGRADE) { messageEntry = Randomizer_GetScrubMessage(textId); - } else if (CVar_GetS32("gRandoRandomRupeeNames", 0) && + } else if (CVar_GetS32("gRandomizeRupeeNames", 0) && (textId == TEXT_BLUE_RUPEE || textId == TEXT_RED_RUPEE || textId == TEXT_PURPLE_RUPEE || textId == TEXT_HUGE_RUPEE)) { Randomizer randomizerInstance; From 50b3038a136d8836cefa8a950724238ad857a5f8 Mon Sep 17 00:00:00 2001 From: aMannus Date: Tue, 23 Aug 2022 22:14:13 +0200 Subject: [PATCH 16/22] Made functions static --- soh/soh/Enhancements/randomizer/randomizer.cpp | 10 +++++----- soh/soh/Enhancements/randomizer/randomizer.h | 4 ++-- soh/soh/OTRGlobals.cpp | 3 +-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index e32a60dd1..482cd6227 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -4649,7 +4649,7 @@ void CreateRupeeMessages() { } } -std::string Randomizer::Randomizer_InsertRupeeName(std::string message, int language) { +std::string Randomizer::InsertRupeeName(std::string message, int language) { const char* englishRupeeNames[44] = { "Rupees", "Bitcoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Lemmings", "Emeralds", "Bucks", "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", @@ -4690,12 +4690,12 @@ std::string Randomizer::Randomizer_InsertRupeeName(std::string message, int lang return message; } -CustomMessageEntry Randomizer::Randomizer_GetRupeeMessage(u16 rupeeTextId) { +CustomMessageEntry Randomizer::GetRupeeMessage(u16 rupeeTextId) { CustomMessageEntry messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::rupeeMessageTableID, rupeeTextId); - messageEntry.english = Randomizer::Randomizer_InsertRupeeName(messageEntry.english, LANGUAGE_ENG); - messageEntry.german = Randomizer::Randomizer_InsertRupeeName(messageEntry.german, LANGUAGE_GER); - messageEntry.french = Randomizer::Randomizer_InsertRupeeName(messageEntry.french, LANGUAGE_FRA); + messageEntry.english = Randomizer::InsertRupeeName(messageEntry.english, LANGUAGE_ENG); + messageEntry.german = Randomizer::InsertRupeeName(messageEntry.german, LANGUAGE_GER); + messageEntry.french = Randomizer::InsertRupeeName(messageEntry.french, LANGUAGE_FRA); return messageEntry; } diff --git a/soh/soh/Enhancements/randomizer/randomizer.h b/soh/soh/Enhancements/randomizer/randomizer.h index 9ec983e14..645c47bc5 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.h +++ b/soh/soh/Enhancements/randomizer/randomizer.h @@ -48,8 +48,8 @@ class Randomizer { GetItemID GetRandomizedItemIdFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId); GetItemID GetRandomizedItemId(GetItemID ogId, s16 actorId, s16 actorParams, s16 sceneNum); static void CreateCustomMessages(); - std::string Randomizer_InsertRupeeName(std::string message, int language); - CustomMessageEntry Randomizer_GetRupeeMessage(u16 rupeeTextId); + static std::string InsertRupeeName(std::string message, int language); + static CustomMessageEntry GetRupeeMessage(u16 rupeeTextId); }; #ifdef __cplusplus diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 602f2793c..183f99957 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1544,8 +1544,7 @@ extern "C" int CustomMessage_RetrieveIfExists(GlobalContext* globalCtx) { } else if (CVar_GetS32("gRandomizeRupeeNames", 0) && (textId == TEXT_BLUE_RUPEE || textId == TEXT_RED_RUPEE || textId == TEXT_PURPLE_RUPEE || textId == TEXT_HUGE_RUPEE)) { - Randomizer randomizerInstance; - messageEntry = randomizerInstance.Randomizer_GetRupeeMessage(textId); + messageEntry = Randomizer::GetRupeeMessage(textId); } } if (textId == TEXT_GS_NO_FREEZE || textId == TEXT_GS_FREEZE) { From 2283471b7bc876e6eb9e475ec3b183f55c2b22b0 Mon Sep 17 00:00:00 2001 From: aMannus Date: Tue, 23 Aug 2022 22:23:01 +0200 Subject: [PATCH 17/22] %RUPEE% -> #RUPEE# --- soh/soh/Enhancements/randomizer/randomizer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 482cd6227..4d6c41c60 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -4628,16 +4628,16 @@ void CreateRupeeMessages() { for (u8 rupee : rupees) { switch (rupee) { case TEXT_BLUE_RUPEE: - rupeeText = "\x05\x03 5 %RUPEE%\x05\x00"; + rupeeText = "\x05\x03 5 #RUPEE#\x05\x00"; break; case TEXT_RED_RUPEE: - rupeeText = "\x05\x01 20 %RUPEE%\x05\x00"; + rupeeText = "\x05\x01 20 #RUPEE#\x05\x00"; break; case TEXT_PURPLE_RUPEE: - rupeeText = "\x05\x05 50 %RUPEE%\x05\x00"; + rupeeText = "\x05\x05 50 #RUPEE#\x05\x00"; break; case TEXT_HUGE_RUPEE: - rupeeText = "\x05\x06 200 %RUPEE%\x05\x00"; + rupeeText = "\x05\x06 200 #RUPEE#\x05\x00"; break; } customMessageManager->CreateMessage(Randomizer::rupeeMessageTableID, rupee, @@ -4682,7 +4682,7 @@ std::string Randomizer::InsertRupeeName(std::string message, int language) { replaceWith = frenchRupeeNames[randomIndex]; break; } - std::string replaceString = "%RUPEE%"; + std::string replaceString = "#RUPEE#"; size_t pos = message.find(replaceString); size_t len = replaceString.length(); message.replace(pos, len, replaceWith); From 694c643aee163df01de8dab8bf3c64be359220f1 Mon Sep 17 00:00:00 2001 From: aMannus Date: Tue, 23 Aug 2022 22:35:26 +0200 Subject: [PATCH 18/22] Include missing files in CMakeLists.txt --- soh/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/soh/CMakeLists.txt b/soh/CMakeLists.txt index 93586ce55..b56f782e9 100644 --- a/soh/CMakeLists.txt +++ b/soh/CMakeLists.txt @@ -110,6 +110,9 @@ set(Header_Files__include "include/ichain.h" "include/macro.inc" "include/macros.h" + "include/message_data_fmt.h" + "include/message_data_static.h" + "include/message_data_textbox_types.h" #"include/math_n64.h" "include/regs.h" "include/segment_symbols.h" From e8c25fe5283fb4c5dcf0a8229442d5159cd32141 Mon Sep 17 00:00:00 2001 From: aMannus Date: Tue, 23 Aug 2022 22:43:09 +0200 Subject: [PATCH 19/22] Matched CMakeLists.txt spacing --- soh/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/soh/CMakeLists.txt b/soh/CMakeLists.txt index b56f782e9..2826690a2 100644 --- a/soh/CMakeLists.txt +++ b/soh/CMakeLists.txt @@ -110,9 +110,9 @@ set(Header_Files__include "include/ichain.h" "include/macro.inc" "include/macros.h" - "include/message_data_fmt.h" - "include/message_data_static.h" - "include/message_data_textbox_types.h" + "include/message_data_fmt.h" + "include/message_data_static.h" + "include/message_data_textbox_types.h" #"include/math_n64.h" "include/regs.h" "include/segment_symbols.h" From e2633c9be10375c98dede3146659063937d0275f Mon Sep 17 00:00:00 2001 From: aMannus Date: Tue, 23 Aug 2022 23:36:59 +0200 Subject: [PATCH 20/22] Moved name variables out of InsertRupeeName() --- .../Enhancements/randomizer/randomizer.cpp | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 4d6c41c60..a0d7a42d4 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -28,6 +28,27 @@ const std::string Randomizer::hintMessageTableID = "RandomizerHints"; const std::string Randomizer::scrubMessageTableID = "RandomizerScrubs"; const std::string Randomizer::rupeeMessageTableID = "RandomizerRupees"; +static const char* englishRupeeNames[44] = { + "Rupees", "Bitcoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Lemmings", + "Emeralds", "Bucks", "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", + "Dogecoin", "Mushrooms", "Experience", "Friends", "Coins", "Rings", "Gil", "Pokédollars", + "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys", "Smackaroos", "Zorkmids", + "Zenny", "Bones", "Souls", "Studs", "Munny", "Rubies", "Gald", "Gold", + "Shillings", "Pounds", "Glimmer", "Potch" +}; + +static const char* germanRupeeNames[1] = { + "Rubine" +}; + +static const char* frenchRupeeNames[36] = { + "Rubis", "Bitcoin", "Bananes", "Euros", "Dollars", "Émeraudes", "Joyaux", "Diamants", + "Balles", "Pokémon", "Pièces", "Lunes", "Étoiles", "Dogecoin", "Anneaux", "Radis", + "Pokédollars", "Zennies", "Pépètes", "Mailles", "Éthers", "Clochettes", "Capsules", "Gils", + "Champignons", "Blés", "Halos", "Munnies", "Orens", "Florens", "Crédits", "Galds", + "Bling", "Orbes", "Baguettes", "Croissants" +}; + Randomizer::Randomizer() { Sprite bowSprite = { dgFairyBowIconTex, 32, 32, G_IM_FMT_RGBA, G_IM_SIZ_32b, 0 }; gSeedTextures[0] = bowSprite; @@ -4650,22 +4671,6 @@ void CreateRupeeMessages() { } std::string Randomizer::InsertRupeeName(std::string message, int language) { - const char* englishRupeeNames[44] = { - "Rupees", "Bitcoin", "Bananas", "Cornflakes", "Gummybears", "Floopies", "Dollars", "Lemmings", - "Emeralds", "Bucks", "Rubles", "Diamonds", "Moons", "Stars", "Mana", "Doll Hairs", - "Dogecoin", "Mushrooms", "Experience", "Friends", "Coins", "Rings", "Gil", "Pokédollars", - "Bells", "Orbs", "Bottle Caps", "Simoleons", "Pokémon", "Toys", "Smackaroos", "Zorkmids", - "Zenny", "Bones", "Souls", "Studs", "Munny", "Rubies", "Gald", "Gold", - "Shillings", "Pounds", "Glimmer", "Potch" - }; - const char* germanRupeeNames[1] = { "Rubine" }; - const char* frenchRupeeNames[36] = { - "Rubis", "Bitcoin", "Bananes", "Euros", "Dollars", "Émeraudes", "Joyaux", "Diamants", - "Balles", "Pokémon", "Pièces", "Lunes", "Étoiles", "Dogecoin", "Anneaux", "Radis", - "Pokédollars", "Zennies", "Pépètes", "Mailles", "Éthers", "Clochettes", "Capsules", "Gils", - "Champignons", "Blés", "Halos", "Munnies", "Orens", "Florens", "Crédits", "Galds", - "Bling", "Orbes", "Baguettes", "Croissants" - }; int randomIndex; std::string replaceWith; switch (language) { From 684cd862f136b0c06285271a016ff731e71d3587 Mon Sep 17 00:00:00 2001 From: aMannus Date: Wed, 24 Aug 2022 15:29:45 +0200 Subject: [PATCH 21/22] Renamed function --- soh/soh/Enhancements/randomizer/randomizer.cpp | 8 ++++---- soh/soh/Enhancements/randomizer/randomizer.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index a0d7a42d4..cbfd6eeab 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -4670,7 +4670,7 @@ void CreateRupeeMessages() { } } -std::string Randomizer::InsertRupeeName(std::string message, int language) { +std::string Randomizer::RandomizeRupeeName(std::string message, int language) { int randomIndex; std::string replaceWith; switch (language) { @@ -4698,9 +4698,9 @@ std::string Randomizer::InsertRupeeName(std::string message, int language) { CustomMessageEntry Randomizer::GetRupeeMessage(u16 rupeeTextId) { CustomMessageEntry messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::rupeeMessageTableID, rupeeTextId); - messageEntry.english = Randomizer::InsertRupeeName(messageEntry.english, LANGUAGE_ENG); - messageEntry.german = Randomizer::InsertRupeeName(messageEntry.german, LANGUAGE_GER); - messageEntry.french = Randomizer::InsertRupeeName(messageEntry.french, LANGUAGE_FRA); + messageEntry.english = Randomizer::RandomizeRupeeName(messageEntry.english, LANGUAGE_ENG); + messageEntry.german = Randomizer::RandomizeRupeeName(messageEntry.german, LANGUAGE_GER); + messageEntry.french = Randomizer::RandomizeRupeeName(messageEntry.french, LANGUAGE_FRA); return messageEntry; } diff --git a/soh/soh/Enhancements/randomizer/randomizer.h b/soh/soh/Enhancements/randomizer/randomizer.h index 645c47bc5..978048f65 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.h +++ b/soh/soh/Enhancements/randomizer/randomizer.h @@ -48,7 +48,7 @@ class Randomizer { GetItemID GetRandomizedItemIdFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId); GetItemID GetRandomizedItemId(GetItemID ogId, s16 actorId, s16 actorParams, s16 sceneNum); static void CreateCustomMessages(); - static std::string InsertRupeeName(std::string message, int language); + static std::string RandomizeRupeeName(std::string message, int language); static CustomMessageEntry GetRupeeMessage(u16 rupeeTextId); }; From bfc524c6ef2c9d774df6a7de417dc7c74c47ccae Mon Sep 17 00:00:00 2001 From: aMannus Date: Wed, 24 Aug 2022 15:57:54 +0200 Subject: [PATCH 22/22] Merge fix, tooltip tweak --- libultraship/libultraship/ImGuiImpl.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libultraship/libultraship/ImGuiImpl.cpp b/libultraship/libultraship/ImGuiImpl.cpp index a98ab9027..a68b4fc61 100644 --- a/libultraship/libultraship/ImGuiImpl.cpp +++ b/libultraship/libultraship/ImGuiImpl.cpp @@ -2003,17 +2003,16 @@ namespace SohImGui { { EnhancementCheckbox("Quest Item Fanfares", "gRandoQuestItemFanfares"); Tooltip( - "Play unique fanfares when obtaining quest items" - "(medallions/stones/songs). Note that these fanfares" - "are longer than usual." + "Play unique fanfares when obtaining quest items " + "(medallions/stones/songs). Note that these fanfares are longer than usual." ); PaddedEnhancementCheckbox("Random Rupee Names", "gRandomizeRupeeNames", true, false); Tooltip( "When obtaining rupees, randomize what the rupee is called in the textbox." + ); PaddedEnhancementCheckbox("Rando-Relevant Navi Hints", "gRandoRelevantNavi", true, false); Tooltip( - "Replace Navi's overworld quest hints with rando-" - "related gameplay hints." + "Replace Navi's overworld quest hints with rando-related gameplay hints." ); ImGui::EndMenu(); }