Skip to content

Commit eee95ba

Browse files
committed
Add option for Navi to hint location of boss key at boss doors
1 parent 33758e4 commit eee95ba

File tree

8 files changed

+92
-56
lines changed

8 files changed

+92
-56
lines changed

soh/soh/Enhancements/custom-message/CustomMessageTypes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ typedef enum {
7878
TEXT_SARIAS_SONG_IMPRISON_GANONDORF = 0x016C,
7979
TEXT_SARIAS_SONG_CHANNELING_POWER = 0x016D,
8080
TEXT_LAKE_HYLIA_WATER_SWITCH_NAVI = 0x01B3, // 0x1yy for Navi msg range
81+
TEXT_NEED_SPECIAL_KEY = 0x0204,
8182
TEXT_MASK_SHOP_SIGN = 0x0207,
8283
TEXT_WATERFALL = 0x022D,
8384
TEXT_FROGS_UNDERWATER = 0x022E,

soh/soh/Enhancements/randomizer/3drando/hint_list.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2237,6 +2237,11 @@ void StaticData::HintTable_Init() {
22372237
/*french*/ "J'ai entendu dire que Ganondorf aurait caché les #Flèches de Lumière# dans #[[1]]#.",
22382238
{QM_YELLOW, QM_RED}));
22392239

2240+
hintTextTable[RHT_BOSS_KEY_HINT] = HintText(CustomMessage("The #boss key# for this door is in #[[1]]#!",
2241+
/*german*/ TODO_TRANSLATE,
2242+
/*french*/ TODO_TRANSLATE,
2243+
{QM_GREEN, QM_RED}));
2244+
22402245
hintTextTable[RHT_DAMPE_DIARY] = HintText(CustomMessage("Whoever reads this, please enter #[[1]]#. I will let you have my #stretching, shrinking keepsake#.^I'm waiting for you.&--Dampé",
22412246
/*german*/ "Wer immer dies liest, der möge #[[1]]# nach meinem #langen, kurzen Schatz# suchen.^Ich warte!&Boris",
22422247
/*french*/ "Toi qui lit ce journal, rends-toi dans #[[1]]#. Et peut-être auras-tu droit à mon précieux #trésor#.^Je t'attends...&--Igor",
@@ -2250,7 +2255,7 @@ void StaticData::HintTable_Init() {
22502255
hintTextTable[RHT_SARIA_TALK_HINT] = HintText(CustomMessage("Did you feel the #surge of magic# recently? A mysterious bird told me it came from #[[1]]#.^You should check that place out, @!",
22512256
/*german*/ "Hast Du kürzlich den #Magieschub# gespürt? Ein geheimnisvoller Vogel meinte, daß er #[[1]]# am stärksten zu spüren war.^Du solltest Dir diesen Ort mal ansehen, @!",
22522257
/*french*/ "As-tu récemment ressenti une vague de #puissance magique#? Un mystérieux hibou m'a dit qu'elle provenait du #[[1]]#.^Tu devrais aller y jeter un coup d'oeil, @!",
2253-
{QM_GREEN, QM_RED}));
2258+
{QM_GREEN, QM_RED}));
22542259

22552260
hintTextTable[RHT_SARIA_SONG_HINT] = HintText(CustomMessage("Did you feel the #surge of magic# recently? A mysterious bird told me it came from #[[1]]#.^You should check that place out, @!\x0B",
22562261
/*german*/ "Hast Du kürzlich den #Magieschub# gespürt? Ein geheimnisvoller Vogel meinte, daß er #[[1]]# am stärksten zu spüren war.^Du solltest Dir diesen Ort mal ansehen, @!\x0B",
@@ -2270,7 +2275,7 @@ void StaticData::HintTable_Init() {
22702275
hintTextTable[RHT_FISHING_POLE_HINT] = HintText(CustomMessage("^If I remember correctly, I lost it somewhere in #[[1]]#...&Let me know if you find it!",
22712276
/*german*/ "Wenn ich mich recht erinnere,&habe ich sie irgendwo&#[[1]]#&verloren...&Sag mir Bescheid, wenn Du sie findest!",
22722277
/*french*/ "Si je me souviens bien, il me&semble que je l'ai perdue&quelque part dans&#[[1]]#...^Fais-moi signe si jamais&tu la trouves!",
2273-
{QM_RED}));
2278+
{QM_RED}));
22742279

22752280
/*--------------------------
22762281
| Static Entrance Hint |

soh/soh/Enhancements/randomizer/hint.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,7 @@ size_t Hint::GetNumberOfMessages() const {
223223
if (StaticData::staticHintInfoMap.contains(ownKey)) {
224224
numMessages = std::max(StaticData::staticHintInfoMap[ownKey].hintKeys.size(), numMessages);
225225
}
226-
if (numMessages == 0) {
227-
numMessages = 1; // RANDOTODO make std::max actually fucking work for 3 arguments
228-
}
229-
return numMessages;
226+
return std::max(numMessages, (size_t)1);
230227
}
231228

232229
const std::vector<std::string> Hint::GetAllMessageStrings(MessageFormat format) const {
@@ -251,7 +248,6 @@ const HintText Hint::GetHintText(size_t id) const {
251248
switch (hintType) {
252249
case HINT_TYPE_HINT_KEY:
253250
return StaticData::hintTextTable[0];
254-
break;
255251
case HINT_TYPE_TRIAL:
256252
if (ctx->GetTrial(trials[0])->IsRequired()) {
257253
return StaticData::hintTextTable[RHT_TRIAL_ON];

soh/soh/Enhancements/randomizer/option_descriptions.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,7 @@ void Settings::CreateOptionDescriptions() {
704704
"Talking to the chest game owner after buying a key will tell you the location of Greg the Green Rupee.";
705705
mOptionDescriptions[RSK_LOACH_HINT] = "Talking to the fishing pond owner and asking to talk about something will "
706706
"tell you what's the reward for the Hyrule Loach.";
707+
mOptionDescriptions[RSK_BOSS_KEY_HINT] = "Navi will tell where boss key can be found when prompted at boss door.";
707708
mOptionDescriptions[RSK_SARIA_HINT] = "Talking to Saria either in person or through Saria's Song will tell you the "
708709
"location of a progressive magic meter.";
709710
mOptionDescriptions[RSK_MIDO_HINT] = "Talking to Mido as child will tell you the location of the Kokiri Sword.";

soh/soh/Enhancements/randomizer/randomizerTypes.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4547,6 +4547,12 @@ typedef enum {
45474547
RH_GREG_RUPEE,
45484548
RH_ALTAR_CHILD,
45494549
RH_ALTAR_ADULT,
4550+
RH_FOREST_BOSS_KEY_HINT,
4551+
RH_FIRE_BOSS_KEY_HINT,
4552+
RH_WATER_BOSS_KEY_HINT,
4553+
RH_SPIRIT_BOSS_KEY_HINT,
4554+
RH_SHADOW_BOSS_KEY_HINT,
4555+
RH_GANONS_BOSS_KEY_HINT,
45504556
RH_SARIA_HINT,
45514557
RH_MIDO_HINT,
45524558
RH_LOACH_HINT,
@@ -5813,6 +5819,7 @@ typedef enum {
58135819
RHT_GANONDORF_HINT_MS_ONLY,
58145820
RHT_GANONDORF_HINT_LA_AND_MS,
58155821
RHT_SHEIK_HINT_LA_ONLY,
5822+
RHT_BOSS_KEY_HINT,
58165823
RHT_DAMPE_DIARY,
58175824
RHT_GREG_HINT,
58185825
RHT_SARIA_TALK_HINT,
@@ -6282,6 +6289,7 @@ typedef enum {
62826289
RSK_TOT_ALTAR_HINT,
62836290
RSK_GANONDORF_HINT,
62846291
RSK_SHEIK_LA_HINT,
6292+
RSK_BOSS_KEY_HINT,
62856293
RSK_DAMPES_DIARY_HINT,
62866294
RSK_GREG_HINT,
62876295
RSK_LOACH_HINT,

soh/soh/Enhancements/randomizer/settings.cpp

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,6 +1202,7 @@ void Settings::CreateOptions() {
12021202
OPT_BOOL(RSK_TOT_ALTAR_HINT, "ToT Altar Hint", {"Off", "On"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("AltarHint"), mOptionDescriptions[RSK_TOT_ALTAR_HINT], WIDGET_CVAR_CHECKBOX, RO_GENERIC_ON, false, nullptr, IMFLAG_INDENT);
12031203
OPT_BOOL(RSK_GANONDORF_HINT, "Ganondorf Hint", {"Off", "On"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("GanondorfHint"), mOptionDescriptions[RSK_GANONDORF_HINT], WIDGET_CVAR_CHECKBOX, RO_GENERIC_ON, false, nullptr, IMFLAG_NONE);
12041204
OPT_BOOL(RSK_SHEIK_LA_HINT, "Sheik Light Arrow Hint", {"Off", "On"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("SheikLAHint"), mOptionDescriptions[RSK_SHEIK_LA_HINT], WIDGET_CVAR_CHECKBOX, RO_GENERIC_ON, false, nullptr, IMFLAG_NONE);
1205+
OPT_BOOL(RSK_BOSS_KEY_HINT, "Boss Door Hints", CVAR_RANDOMIZER_SETTING("BossKeyHint"), mOptionDescriptions[RSK_BOSS_KEY_HINT], IMFLAG_NONE);
12051206
OPT_BOOL(RSK_DAMPES_DIARY_HINT, "Dampe's Diary Hint", CVAR_RANDOMIZER_SETTING("DampeHint"), mOptionDescriptions[RSK_DAMPES_DIARY_HINT], IMFLAG_NONE);
12061207
OPT_BOOL(RSK_GREG_HINT, "Greg the Green Rupee Hint", CVAR_RANDOMIZER_SETTING("GregHint"), mOptionDescriptions[RSK_GREG_HINT], IMFLAG_NONE);
12071208
OPT_BOOL(RSK_LOACH_HINT, "Hyrule Loach Hint", CVAR_RANDOMIZER_SETTING("LoachHint"), mOptionDescriptions[RSK_LOACH_HINT], IMFLAG_NONE);
@@ -2409,33 +2410,20 @@ void Settings::CreateOptions() {
24092410
&mOptionGroups[RSG_MENU_SECTION_TRAPS] },
24102411
WidgetContainerType::COLUMN);
24112412
mOptionGroups[RSG_MENU_SECTION_STATIC_HINTS] = OptionGroup::SubGroup(
2412-
"Static Hints",
2413-
{ &mOptions[RSK_TOT_ALTAR_HINT],
2414-
&mOptions[RSK_GANONDORF_HINT],
2415-
&mOptions[RSK_SHEIK_LA_HINT],
2416-
&mOptions[RSK_DAMPES_DIARY_HINT],
2417-
&mOptions[RSK_GREG_HINT],
2418-
&mOptions[RSK_LOACH_HINT],
2419-
&mOptions[RSK_SARIA_HINT],
2420-
&mOptions[RSK_MIDO_HINT],
2421-
&mOptions[RSK_FROGS_HINT],
2422-
&mOptions[RSK_OOT_HINT],
2423-
&mOptions[RSK_BIGGORON_HINT],
2424-
&mOptions[RSK_BIG_POES_HINT],
2425-
&mOptions[RSK_CHICKENS_HINT],
2426-
&mOptions[RSK_MALON_HINT],
2427-
&mOptions[RSK_HBA_HINT],
2428-
&mOptions[RSK_FISHING_POLE_HINT],
2429-
&mOptions[RSK_WARP_SONG_HINTS],
2430-
&mOptions[RSK_SCRUB_TEXT_HINT],
2431-
&mOptions[RSK_MERCHANT_TEXT_HINT],
2432-
&mOptions[RSK_KAK_10_SKULLS_HINT],
2433-
&mOptions[RSK_KAK_20_SKULLS_HINT],
2434-
&mOptions[RSK_KAK_30_SKULLS_HINT],
2435-
&mOptions[RSK_KAK_40_SKULLS_HINT],
2436-
&mOptions[RSK_KAK_50_SKULLS_HINT],
2437-
&mOptions[RSK_KAK_100_SKULLS_HINT],
2438-
&mOptions[RSK_MASK_SHOP_HINT] },
2413+
"Static Hints", { &mOptions[RSK_TOT_ALTAR_HINT], &mOptions[RSK_GANONDORF_HINT],
2414+
&mOptions[RSK_SHEIK_LA_HINT], &mOptions[RSK_BOSS_KEY_HINT],
2415+
&mOptions[RSK_DAMPES_DIARY_HINT], &mOptions[RSK_GREG_HINT],
2416+
&mOptions[RSK_LOACH_HINT], &mOptions[RSK_SARIA_HINT],
2417+
&mOptions[RSK_MIDO_HINT], &mOptions[RSK_FROGS_HINT],
2418+
&mOptions[RSK_OOT_HINT], &mOptions[RSK_BIGGORON_HINT],
2419+
&mOptions[RSK_BIG_POES_HINT], &mOptions[RSK_CHICKENS_HINT],
2420+
&mOptions[RSK_MALON_HINT], &mOptions[RSK_HBA_HINT],
2421+
&mOptions[RSK_FISHING_POLE_HINT], &mOptions[RSK_WARP_SONG_HINTS],
2422+
&mOptions[RSK_SCRUB_TEXT_HINT], &mOptions[RSK_MERCHANT_TEXT_HINT],
2423+
&mOptions[RSK_KAK_10_SKULLS_HINT], &mOptions[RSK_KAK_20_SKULLS_HINT],
2424+
&mOptions[RSK_KAK_30_SKULLS_HINT], &mOptions[RSK_KAK_40_SKULLS_HINT],
2425+
&mOptions[RSK_KAK_50_SKULLS_HINT], &mOptions[RSK_KAK_100_SKULLS_HINT],
2426+
&mOptions[RSK_MASK_SHOP_HINT] },
24392427
WidgetContainerType::SECTION, "This setting adds some hints at locations other than Gossip Stones.");
24402428
mOptionGroups[RSG_MENU_COLUMN_STATIC_HINTS] =
24412429
OptionGroup::SubGroup("", { &mOptionGroups[RSG_MENU_SECTION_STATIC_HINTS] }, WidgetContainerType::COLUMN);
@@ -2702,6 +2690,7 @@ void Settings::CreateOptions() {
27022690
&mOptions[RSK_TOT_ALTAR_HINT],
27032691
&mOptions[RSK_GANONDORF_HINT],
27042692
&mOptions[RSK_SHEIK_LA_HINT],
2693+
&mOptions[RSK_BOSS_KEY_HINT],
27052694
&mOptions[RSK_DAMPES_DIARY_HINT],
27062695
&mOptions[RSK_GREG_HINT],
27072696
&mOptions[RSK_LOACH_HINT],

0 commit comments

Comments
 (0)