fix greg hint (and an RSK parsing issue) (#2547)

* fix RSK parsing error introduced by  #2541

* add logic to not give greg hint when we shouldn't

---------

Co-authored-by: briaguya <briaguya@alice>
This commit is contained in:
briaguya 2023-02-27 21:03:00 -05:00 committed by GitHub
parent 9ec091a636
commit 061e232685
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 38 deletions

View File

@ -853,6 +853,13 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
case RSK_MIX_GROTTO_ENTRANCES:
case RSK_DECOUPLED_ENTRANCES:
case RSK_SHOPSANITY_PRICES_AFFORDABLE:
case RSK_ALL_LOCATIONS_REACHABLE:
if(it.value() == "Off") {
gSaveContext.randoSettings[index].value = RO_GENERIC_OFF;
} else if(it.value() == "On") {
gSaveContext.randoSettings[index].value = RO_GENERIC_ON;
}
break;
case RSK_KEYRINGS:
if (it.value() == "Off") {
gSaveContext.randoSettings[index].value = RO_KEYRINGS_OFF;
@ -864,13 +871,6 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
gSaveContext.randoSettings[index].value = RO_KEYRINGS_SELECTION;
}
break;
case RSK_ALL_LOCATIONS_REACHABLE:
if(it.value() == "Off") {
gSaveContext.randoSettings[index].value = RO_GENERIC_OFF;
} else if(it.value() == "On") {
gSaveContext.randoSettings[index].value = RO_GENERIC_ON;
}
break;
case RSK_SHUFFLE_MERCHANTS:
if(it.value() == "Off") {
gSaveContext.randoSettings[index].value = RO_SHUFFLE_MERCHANTS_OFF;
@ -890,21 +890,6 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
gSaveContext.randoSettings[index].value = RO_AMMO_DROPS_OFF;
}
break;
case RSK_STARTING_MAPS_COMPASSES:
if(it.value() == "Start With") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_STARTWITH;
} else if(it.value() == "Vanilla") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_VANILLA;
} else if(it.value() == "Own Dungeon") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_OWN_DUNGEON;
} else if(it.value() == "Any Dungeon") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_ANY_DUNGEON;
} else if(it.value() == "Overworld") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_OVERWORLD;
} else if(it.value() == "Anywhere") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_ANYWHERE;
}
break;
case RSK_STARTING_OCARINA:
if(it.value() == "Off") {
gSaveContext.randoSettings[index].value = RO_STARTING_OCARINA_OFF;
@ -977,21 +962,8 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
}
break;
case RSK_KEYSANITY:
if(it.value() == "Start With") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_STARTWITH;
} else if(it.value() == "Vanilla") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_VANILLA;
} else if(it.value() == "Own Dungeon") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_OWN_DUNGEON;
} else if(it.value() == "Any Dungeon") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_ANY_DUNGEON;
} else if(it.value() == "Overworld") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_OVERWORLD;
} else if(it.value() == "Anywhere") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_ANYWHERE;
}
break;
case RSK_BOSS_KEYSANITY:
case RSK_STARTING_MAPS_COMPASSES:
if(it.value() == "Start With") {
gSaveContext.randoSettings[index].value = RO_DUNGEON_ITEM_LOC_STARTWITH;
} else if(it.value() == "Vanilla") {

View File

@ -1648,7 +1648,7 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
}
} else if (Randomizer_GetSettingValue(RSK_DAMPES_DIARY_HINT) && textId == TEXT_DAMPES_DIARY) {
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::randoMiscHintsTableID, TEXT_DAMPES_DIARY);
} else if (Randomizer_GetSettingValue(RSK_GREG_HINT) && (textId == 0x704C || textId == 0x6E || textId == 0x84)) {
} else if (Randomizer_GetSettingValue(RSK_GREG_HINT) && (textId == 0x704C || textId == 0x6E)) {
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::randoMiscHintsTableID, TEXT_CHEST_GAME_PROCEED);
} else if (Randomizer_GetSettingValue(RSK_SHUFFLE_WARP_SONGS) &&
(textId >= TEXT_WARP_MINUET_OF_FOREST && textId <= TEXT_WARP_PRELUDE_OF_LIGHT)) {

View File

@ -104,7 +104,14 @@ void func_80B1778C(EnTakaraMan* this, PlayState* play) {
if (!this->unk_21A && this->unk_214) {
if (Flags_GetSwitch(play, 0x32)) {
this->actor.textId = 0x84; //Thanks a lot! (Lost)
// text id 0x84 is used in places other than the treasure chest game.
// in order to provide a unique text id that can be replaced for the custom
// greg hint, we set it to 0x6E instead
if (gSaveContext.n64ddFlag && Randomizer_GetSettingValue(RSK_GREG_HINT)) {
this->actor.textId = 0x6E;
} else {
this->actor.textId = 0x84; //Thanks a lot! (Lost)
}
this->dialogState = TEXT_STATE_EVENT;
} else {
this->actor.textId = 0x704C; //Proceed