diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/kokiri_forest.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/kokiri_forest.cpp index 06bdcc268..24ac2ae94 100644 --- a/soh/soh/Enhancements/randomizer/location_access/overworld/kokiri_forest.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/overworld/kokiri_forest.cpp @@ -110,7 +110,7 @@ void RegionTable_Init_KokiriForest() { areaTable[RR_KF_LINKS_HOUSE] = Region("KF Link's House", "KF Link's House", {}, NO_DAY_NIGHT_CYCLE, {}, { //Locations - LOCATION(RC_KF_LINKS_HOUSE_COW, logic->IsAdult && logic->CanUse(RG_EPONAS_SONG) && logic->LinksCow), + LOCATION(RC_KF_LINKS_HOUSE_COW, logic->IsAdult && logic->LinksCow && logic->CanUse(RG_EPONAS_SONG) || (ctx->GetTrickOption(RT_OCARINA_ITEMS_GLITCH_COW) && logic->OcarinaItemsGlitchEponasSong())), LOCATION(RC_KF_LINKS_HOUSE_POT, logic->CanBreakPots()), }, { //Exits diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index fa193f70c..29cd7247c 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -1055,6 +1055,11 @@ bool Logic::OcarinaItemsGlitchZeldasLullaby() { HasItem(RG_OCARINA_C_RIGHT_BUTTON) && HasItem(RG_OCARINA_C_UP_BUTTON); } +bool Logic::OcarinaItemsGlitchEponasSong() { + return OcarinaItemsGlitch() && HasItem(RG_EPONAS_SONG) && HasItem(RG_OCARINA_C_LEFT_BUTTON) && + HasItem(RG_OCARINA_C_RIGHT_BUTTON) && HasItem(RG_OCARINA_C_UP_BUTTON); +} + bool Logic::CanUseSword() { return CanUse(RG_KOKIRI_SWORD) || CanUse(RG_MASTER_SWORD) || CanUse(RG_BIGGORON_SWORD); } diff --git a/soh/soh/Enhancements/randomizer/logic.h b/soh/soh/Enhancements/randomizer/logic.h index 249437f91..1ff78b2c2 100644 --- a/soh/soh/Enhancements/randomizer/logic.h +++ b/soh/soh/Enhancements/randomizer/logic.h @@ -205,6 +205,7 @@ class Logic { bool HasBottle(); bool OcarinaItemsGlitch(); bool OcarinaItemsGlitchZeldasLullaby(); + bool OcarinaItemsGlitchEponasSong(); bool CanUseSword(); bool CanJumpslashExceptHammer(); bool CanJumpslash(); diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index 313aa33d5..a70a4184e 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -3492,6 +3492,7 @@ typedef enum { RT_BOMBCHU_BEEHIVES, RT_BLUE_FIRE_MUD_WALLS, RT_OCARINA_ITEMS_GLITCH_GREAT_FAIRY, + RT_OCARINA_ITEMS_GLITCH_COW, RT_KF_ADULT_GS, // -- location tricks RT_LW_BRIDGE, RT_LW_MIDO_BACKFLIP, diff --git a/soh/soh/Enhancements/randomizer/settings.cpp b/soh/soh/Enhancements/randomizer/settings.cpp index dc7bd0190..ee8e4ebc3 100644 --- a/soh/soh/Enhancements/randomizer/settings.cpp +++ b/soh/soh/Enhancements/randomizer/settings.cpp @@ -404,6 +404,9 @@ void Settings::CreateOptions() { OPT_TRICK(RT_OCARINA_ITEMS_GLITCH_GREAT_FAIRY, RCQUEST_BOTH, RA_NONE, { Tricks::Tag::NOVICE }, "Ocarina Items Glitch for Great Fairy", "Access the rewards of the Great Fairy with Ocarina Items Glitch."); + OPT_TRICK(RT_OCARINA_ITEMS_GLITCH_COW, RCQUEST_BOTH, RA_NONE, { Tricks::Tag::NOVICE }, + "Ocarina Items Glitch for Cow", + "Access the rewards of Cow with Ocarina Items Glitch."); OPT_TRICK(RT_KF_ADULT_GS, RCQUEST_BOTH, RA_KOKIRI_FOREST, { Tricks::Tag::NOVICE }, "Adult Kokiri Forest GS with Hover Boots", "Can be obtained without Hookshot by using the Hover Boots off of one of the roots.");