Changed to be an option within fishsanity

This commit is contained in:
Pepe20129 2024-01-28 20:33:15 +01:00
parent 6c239757b4
commit 6cd110b934
7 changed files with 19 additions and 34 deletions

View File

@ -281,15 +281,13 @@ void HintTable_Init_Exclude_Overworld() {
}); });
// TODO: needs french translation // TODO: needs french translation
hintTable[RHT_LH_HYRULE_LOACH] = HintText::Exclude( hintTable[RHT_LH_HYRULE_LOACH] = HintText::Exclude({
{ // obscure text
// obscure text Text{"#fishing the legend# bestows", /*french*/"!!!", /*spanish*/"#pescar a la leyenda# conduce a"},
Text{ "#fishing the legend# bestows", /*french*/ "!!!", /*spanish*/ "#pescar a la leyenda# conduce a" }, {},
}, // clear text
{}, Text{"#fishing the hyrule loach# will give you", /*french*/"!!!", /*spanish*/"si #pescas a la Locha de Hyrule# encontrarás"}
// clear text });
Text{ "#fishing the hyrule loach# will give you", /*french*/ "!!!",
/*spanish*/ "si #pescas a la Locha de Hyrule# encontrarás" });
hintTable[RHT_LH_ADULT_FISHING] = HintText::Exclude({ hintTable[RHT_LH_ADULT_FISHING] = HintText::Exclude({
@ -297,14 +295,6 @@ void HintTable_Init_Exclude_Overworld() {
Text{"#fishing in maturity# bestows", /*french*/"#pêcher dans sa maturité# promet", /*spanish*/"#pescar en la madurez# conduce a"}, Text{"#fishing in maturity# bestows", /*french*/"#pêcher dans sa maturité# promet", /*spanish*/"#pescar en la madurez# conduce a"},
}); });
hintTable[RHT_LH_HYRULE_LOACH] = HintText::Exclude({
//obscure text
Text{"#fishing the legend# bestows", /*french*/"!!!", /*spanish*/"#pescar a la leyenda# conduce a"},
}, {},
//clear text
Text{"#fishing the hyrule loach# will give you", /*french*/"!!!", /*spanish*/"si #pescas a la Locha de Hyrule# encontrarás"}
);
hintTable[RHT_LH_LAB_DIVE] = HintText::Exclude({ hintTable[RHT_LH_LAB_DIVE] = HintText::Exclude({
//obscure text //obscure text
Text{"a #diving experiment# is rewarded with", /*french*/"l'#expérience de plongée# donne", /*spanish*/"#bucear para un experimento# se premia con"}, Text{"a #diving experiment# is rewarded with", /*french*/"l'#expérience de plongée# donne", /*spanish*/"#bucear para un experimento# se premia con"},

View File

@ -782,12 +782,6 @@ void GenerateItemPool() {
ctx->possibleIceTrapModels.push_back(RG_OCARINA_C_RIGHT_BUTTON); ctx->possibleIceTrapModels.push_back(RG_OCARINA_C_RIGHT_BUTTON);
} }
if (ctx->GetOption(RSK_SHUFFLE_HYRULE_LOACH_REWARD)) {
AddItemToMainPool(RG_PURPLE_RUPEE);
} else {
ctx->PlaceItemInLocation(RC_LH_HYRULE_LOACH, RG_PURPLE_RUPEE, false, true);
}
if (ctx->GetOption(RSK_SHUFFLE_SWIM)) { if (ctx->GetOption(RSK_SHUFFLE_SWIM)) {
AddItemToMainPool(RG_PROGRESSIVE_SCALE); AddItemToMainPool(RG_PROGRESSIVE_SCALE);
} }
@ -838,6 +832,12 @@ void GenerateItemPool() {
} else { } else {
PlaceVanillaOverworldFish(); PlaceVanillaOverworldFish();
} }
if (fsMode.Is(RO_FISHSANITY_HYRULE_LOACH)) {
AddItemToMainPool(RG_PURPLE_RUPEE);
} else {
ctx->PlaceItemInLocation(RC_LH_HYRULE_LOACH, RG_PURPLE_RUPEE, false, true);
}
} else { } else {
PlaceVanillaOverworldFish(); PlaceVanillaOverworldFish();
} }

View File

@ -265,6 +265,7 @@ void Settings::CreateOptionDescriptions() {
"Affordable prices per tier: starter = 10, adult = 105, giant = 205, tycoon = 505\n\n" "Affordable prices per tier: starter = 10, adult = 105, giant = 205, tycoon = 505\n\n"
"Use this to enable wallet tier locking, but make shop items not as expensive as they could be."; "Use this to enable wallet tier locking, but make shop items not as expensive as they could be.";
mOptionDescriptions[RSK_FISHSANITY] = "Off - Fish will not be shuffled. No changes will be made to fishing behavior.\n\n" mOptionDescriptions[RSK_FISHSANITY] = "Off - Fish will not be shuffled. No changes will be made to fishing behavior.\n\n"
"Shuffle only Hyrule Loach - Allows you to earn an item by catching the hyrule loach at the fishing pond and giving it to the owner.\n\n"
"Shuffle Fishing Pond - The fishing pond's fish will be shuffled. Catching a fish in the fishing pond will grant a reward.\n\n" "Shuffle Fishing Pond - The fishing pond's fish will be shuffled. Catching a fish in the fishing pond will grant a reward.\n\n"
"Shuffle Overworld Fish - Fish in generic grottos and Zora's Domain will be shuffled. Catching a fish in a bottle will give a reward.\n\n" "Shuffle Overworld Fish - Fish in generic grottos and Zora's Domain will be shuffled. Catching a fish in a bottle will give a reward.\n\n"
"Shuffle Both - Both overworld fish and fish in the fishing pond will be shuffled."; "Shuffle Both - Both overworld fish and fish in the fishing pond will be shuffled.";
@ -307,8 +308,6 @@ void Settings::CreateOptionDescriptions() {
"\n" "\n"
"This setting does not effect the item earned from playing\n" "This setting does not effect the item earned from playing\n"
"the Song of Storms and the frog song minigame."; "the Song of Storms and the frog song minigame.";
mOptionDescriptions[RSK_SHUFFLE_HYRULE_LOACH_REWARD] = "Shuffles a Purple Rupee into to the item pool, and allows"
"you to earn an item by catching the hyrule loach at the fishing pond.";
mOptionDescriptions[RSK_SHUFFLE_ADULT_TRADE] = mOptionDescriptions[RSK_SHUFFLE_ADULT_TRADE] =
"Adds all of the adult trade quest items into the pool, each of which " "Adds all of the adult trade quest items into the pool, each of which "
"can be traded for a unique reward.\n" "can be traded for a unique reward.\n"

View File

@ -3550,7 +3550,6 @@ typedef enum {
RSK_SHUFFLE_WEIRD_EGG, RSK_SHUFFLE_WEIRD_EGG,
RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD, RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD,
RSK_SHUFFLE_FROG_SONG_RUPEES, RSK_SHUFFLE_FROG_SONG_RUPEES,
RSK_SHUFFLE_HYRULE_LOACH_REWARD,
RSK_ITEM_POOL, RSK_ITEM_POOL,
RSK_ICE_TRAPS, RSK_ICE_TRAPS,
RSK_GOSSIP_STONE_HINTS, RSK_GOSSIP_STONE_HINTS,
@ -3794,9 +3793,10 @@ typedef enum {
RO_BOSS_SOULS_ON_PLUS_GANON, RO_BOSS_SOULS_ON_PLUS_GANON,
} RandoOptionBossSouls; } RandoOptionBossSouls;
//Fishsanity settings (off, pond only, grottos only, both) //Fishsanity settings (off, loach only, pond only, grottos only, both)
typedef enum { typedef enum {
RO_FISHSANITY_OFF, RO_FISHSANITY_OFF,
RO_FISHSANITY_HYRULE_LOACH,
RO_FISHSANITY_POND, RO_FISHSANITY_POND,
RO_FISHSANITY_OVERWORLD, RO_FISHSANITY_OVERWORLD,
RO_FISHSANITY_BOTH RO_FISHSANITY_BOTH

View File

@ -1109,7 +1109,7 @@ void LoadSettings() {
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_MASTER_SWORD) == RO_GENERIC_YES OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_MASTER_SWORD) == RO_GENERIC_YES
: true; : true;
showHyruleLoach = IS_RANDO ? showHyruleLoach = IS_RANDO ?
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_HYRULE_LOACH_REWARD) == RO_GENERIC_YES OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_FISHSANITY) == RO_FISHSANITY_HYRULE_LOACH
: false; : false;
showWeirdEgg = IS_RANDO ? showWeirdEgg = IS_RANDO ?
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_WEIRD_EGG) == RO_GENERIC_YES OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_WEIRD_EGG) == RO_GENERIC_YES

View File

@ -115,12 +115,11 @@ void Settings::CreateOptions() {
mOptions[RSK_SHUFFLE_MAGIC_BEANS] = Option::Bool("Shuffle Magic Beans", "gRandomizeShuffleBeans", mOptionDescriptions[RSK_SHUFFLE_MAGIC_BEANS]); mOptions[RSK_SHUFFLE_MAGIC_BEANS] = Option::Bool("Shuffle Magic Beans", "gRandomizeShuffleBeans", mOptionDescriptions[RSK_SHUFFLE_MAGIC_BEANS]);
mOptions[RSK_SHUFFLE_MERCHANTS] = Option::U8("Shuffle Merchants", {"Off", "On (No Hints)", "On (With Hints)"}, OptionCategory::Setting, "gRandomizeShuffleMerchants", mOptionDescriptions[RSK_SHUFFLE_MERCHANTS], WidgetType::Combobox, RO_SHUFFLE_MERCHANTS_OFF); mOptions[RSK_SHUFFLE_MERCHANTS] = Option::U8("Shuffle Merchants", {"Off", "On (No Hints)", "On (With Hints)"}, OptionCategory::Setting, "gRandomizeShuffleMerchants", mOptionDescriptions[RSK_SHUFFLE_MERCHANTS], WidgetType::Combobox, RO_SHUFFLE_MERCHANTS_OFF);
mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES] = Option::Bool("Shuffle Frog Song Rupees", "gRandomizeShuffleFrogSongRupees", mOptionDescriptions[RSK_SHUFFLE_FROG_SONG_RUPEES]); mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES] = Option::Bool("Shuffle Frog Song Rupees", "gRandomizeShuffleFrogSongRupees", mOptionDescriptions[RSK_SHUFFLE_FROG_SONG_RUPEES]);
mOptions[RSK_SHUFFLE_HYRULE_LOACH_REWARD] = Option::Bool("Shuffle Hyrule Loach Reward", "gRandomizeShuffleHyruleLoachReward", mOptionDescriptions[RSK_SHUFFLE_HYRULE_LOACH_REWARD]);
mOptions[RSK_SHUFFLE_ADULT_TRADE] = Option::Bool("Shuffle Adult Trade", "gRandomizeShuffleAdultTrade", mOptionDescriptions[RSK_SHUFFLE_ADULT_TRADE]); mOptions[RSK_SHUFFLE_ADULT_TRADE] = Option::Bool("Shuffle Adult Trade", "gRandomizeShuffleAdultTrade", mOptionDescriptions[RSK_SHUFFLE_ADULT_TRADE]);
mOptions[RSK_SHUFFLE_CHEST_MINIGAME] = Option::U8("Shuffle Chest Minigame", {"Off", "On (Separate)", "On (Pack)"}); mOptions[RSK_SHUFFLE_CHEST_MINIGAME] = Option::U8("Shuffle Chest Minigame", {"Off", "On (Separate)", "On (Pack)"});
mOptions[RSK_SHUFFLE_100_GS_REWARD] = Option::Bool("Shuffle 100 GS Reward", "gRandomizeShuffle100GSReward", mOptionDescriptions[RSK_SHUFFLE_100_GS_REWARD], IMFLAG_SEPARATOR_BOTTOM, WidgetType::Checkbox, RO_GENERIC_OFF); mOptions[RSK_SHUFFLE_100_GS_REWARD] = Option::Bool("Shuffle 100 GS Reward", "gRandomizeShuffle100GSReward", mOptionDescriptions[RSK_SHUFFLE_100_GS_REWARD], IMFLAG_SEPARATOR_BOTTOM, WidgetType::Checkbox, RO_GENERIC_OFF);
mOptions[RSK_SHUFFLE_BOSS_SOULS] = Option::U8("Shuffle Boss Souls", {"Off", "On", "On + Ganon"}, OptionCategory::Setting, "gRandomizeShuffleBossSouls", mOptionDescriptions[RSK_SHUFFLE_BOSS_SOULS], WidgetType::Combobox); mOptions[RSK_SHUFFLE_BOSS_SOULS] = Option::U8("Shuffle Boss Souls", {"Off", "On", "On + Ganon"}, OptionCategory::Setting, "gRandomizeShuffleBossSouls", mOptionDescriptions[RSK_SHUFFLE_BOSS_SOULS], WidgetType::Combobox);
mOptions[RSK_FISHSANITY] = Option::U8("Fishsanity", {"Off", "Shuffle Fishing Pond", "Shuffle Overworld Fish", "Shuffle Both"}, OptionCategory::Setting, "gRandomizeFishsanity", mOptionDescriptions[RSK_FISHSANITY], WidgetType::Combobox, RO_FISHSANITY_OFF); mOptions[RSK_FISHSANITY] = Option::U8("Fishsanity", {"Off", "Shuffle only Hyrule Loach", "Shuffle Fishing Pond", "Shuffle Overworld Fish", "Shuffle Both"}, OptionCategory::Setting, "gRandomizeFishsanity", mOptionDescriptions[RSK_FISHSANITY], WidgetType::Combobox, RO_FISHSANITY_OFF);
mOptions[RSK_FISHSANITY_POND_COUNT] = Option::U8("Pond Fish Count", {NumOpts(0,17,1)}, OptionCategory::Setting, "gRandomizeFishsanityPondCount", mOptionDescriptions[RSK_FISHSANITY_POND_COUNT], WidgetType::Slider, 0, true, IMFLAG_NONE); mOptions[RSK_FISHSANITY_POND_COUNT] = Option::U8("Pond Fish Count", {NumOpts(0,17,1)}, OptionCategory::Setting, "gRandomizeFishsanityPondCount", mOptionDescriptions[RSK_FISHSANITY_POND_COUNT], WidgetType::Slider, 0, true, IMFLAG_NONE);
mOptions[RSK_FISHSANITY_AGE_SPLIT] = Option::Bool("Pond Age Split", "gRandomizeFishsanityAgeSplit", mOptionDescriptions[RSK_FISHSANITY_AGE_SPLIT]); mOptions[RSK_FISHSANITY_AGE_SPLIT] = Option::Bool("Pond Age Split", "gRandomizeFishsanityAgeSplit", mOptionDescriptions[RSK_FISHSANITY_AGE_SPLIT]);
mOptions[RSK_SHUFFLE_MAPANDCOMPASS] = Option::U8("Maps/Compasses", {"Start With", "Vanilla", "Own Dungeon", "Any Dungeon", "Overworld", "Anywhere"}, OptionCategory::Setting, "gRandomizeStartingMapsCompasses", mOptionDescriptions[RSK_SHUFFLE_MAPANDCOMPASS], WidgetType::Combobox, RO_DUNGEON_ITEM_LOC_OWN_DUNGEON); mOptions[RSK_SHUFFLE_MAPANDCOMPASS] = Option::U8("Maps/Compasses", {"Start With", "Vanilla", "Own Dungeon", "Any Dungeon", "Overworld", "Anywhere"}, OptionCategory::Setting, "gRandomizeStartingMapsCompasses", mOptionDescriptions[RSK_SHUFFLE_MAPANDCOMPASS], WidgetType::Combobox, RO_DUNGEON_ITEM_LOC_OWN_DUNGEON);
@ -676,7 +675,6 @@ void Settings::CreateOptions() {
&mOptions[RSK_SHUFFLE_MAGIC_BEANS], &mOptions[RSK_SHUFFLE_MAGIC_BEANS],
&mOptions[RSK_SHUFFLE_MERCHANTS], &mOptions[RSK_SHUFFLE_MERCHANTS],
&mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES], &mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES],
&mOptions[RSK_SHUFFLE_HYRULE_LOACH_REWARD],
&mOptions[RSK_SHUFFLE_ADULT_TRADE], &mOptions[RSK_SHUFFLE_ADULT_TRADE],
&mOptions[RSK_SHUFFLE_100_GS_REWARD], &mOptions[RSK_SHUFFLE_100_GS_REWARD],
&mOptions[RSK_SHUFFLE_BOSS_SOULS], &mOptions[RSK_SHUFFLE_BOSS_SOULS],
@ -883,7 +881,6 @@ void Settings::CreateOptions() {
&mOptions[RSK_SHUFFLE_MAGIC_BEANS], &mOptions[RSK_SHUFFLE_MAGIC_BEANS],
&mOptions[RSK_SHUFFLE_MERCHANTS], &mOptions[RSK_SHUFFLE_MERCHANTS],
&mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES], &mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES],
&mOptions[RSK_SHUFFLE_HYRULE_LOACH_REWARD],
&mOptions[RSK_SHUFFLE_ADULT_TRADE], &mOptions[RSK_SHUFFLE_ADULT_TRADE],
&mOptions[RSK_SHUFFLE_CHEST_MINIGAME], &mOptions[RSK_SHUFFLE_CHEST_MINIGAME],
&mOptions[RSK_SHUFFLE_100_GS_REWARD], &mOptions[RSK_SHUFFLE_100_GS_REWARD],
@ -1110,7 +1107,6 @@ void Settings::CreateOptions() {
{ "Shuffle Settings:Shuffle Child's Wallet", RSK_SHUFFLE_CHILD_WALLET }, { "Shuffle Settings:Shuffle Child's Wallet", RSK_SHUFFLE_CHILD_WALLET },
{ "Shuffle Settings:Shuffle Weird Egg", RSK_SHUFFLE_WEIRD_EGG }, { "Shuffle Settings:Shuffle Weird Egg", RSK_SHUFFLE_WEIRD_EGG },
{ "Shuffle Settings:Shuffle Frog Song Rupees", RSK_SHUFFLE_FROG_SONG_RUPEES }, { "Shuffle Settings:Shuffle Frog Song Rupees", RSK_SHUFFLE_FROG_SONG_RUPEES },
{ "Shuffle Settings:Shuffle Hyrule Loach Reward", RSK_SHUFFLE_HYRULE_LOACH_REWARD },
{ "Shuffle Settings:Shuffle Merchants", RSK_SHUFFLE_MERCHANTS }, { "Shuffle Settings:Shuffle Merchants", RSK_SHUFFLE_MERCHANTS },
{ "Shuffle Settings:Shuffle 100 GS Reward", RSK_SHUFFLE_100_GS_REWARD }, { "Shuffle Settings:Shuffle 100 GS Reward", RSK_SHUFFLE_100_GS_REWARD },
{ "Shuffle Settings:Shuffle Boss Souls", RSK_SHUFFLE_BOSS_SOULS }, { "Shuffle Settings:Shuffle Boss Souls", RSK_SHUFFLE_BOSS_SOULS },
@ -2258,7 +2254,6 @@ void Settings::ParseJson(nlohmann::json spoilerFileJson) {
case RSK_SHUFFLE_100_GS_REWARD: case RSK_SHUFFLE_100_GS_REWARD:
case RSK_SHUFFLE_OCARINA: case RSK_SHUFFLE_OCARINA:
case RSK_SHUFFLE_OCARINA_BUTTONS: case RSK_SHUFFLE_OCARINA_BUTTONS:
case RSK_SHUFFLE_HYRULE_LOACH_REWARD:
case RSK_SHUFFLE_SWIM: case RSK_SHUFFLE_SWIM:
case RSK_SHUFFLE_CHILD_WALLET: case RSK_SHUFFLE_CHILD_WALLET:
case RSK_STARTING_DEKU_SHIELD: case RSK_STARTING_DEKU_SHIELD:

View File

@ -17,6 +17,7 @@
#define WATER_SURFACE_Y(play) play->colCtx.colHeader->waterBoxes->ySurface #define WATER_SURFACE_Y(play) play->colCtx.colHeader->waterBoxes->ySurface
#define IS_FISHSANITY (IS_RANDO && Randomizer_GetPondFishShuffled()) #define IS_FISHSANITY (IS_RANDO && Randomizer_GetPondFishShuffled())
#define FISHID(params) (Randomizer_IdentifyFish(play->sceneNum, params)) #define FISHID(params) (Randomizer_IdentifyFish(play->sceneNum, params))
bool getShouldSpawnLoaches();
void Fishing_Init(Actor* thisx, PlayState* play); void Fishing_Init(Actor* thisx, PlayState* play);
void Fishing_Destroy(Actor* thisx, PlayState* play); void Fishing_Destroy(Actor* thisx, PlayState* play);