From 2149cd1fdd5a0202545c630588c0a37764870359 Mon Sep 17 00:00:00 2001 From: Adam Bird Date: Fri, 7 Apr 2023 15:54:49 -0400 Subject: [PATCH] fix boss clear logic and add bongo logic trick (#2677) --- .../locacc_jabujabus_belly.cpp | 3 +- .../location_access/locacc_shadow_temple.cpp | 41 ++++++++++--------- .../3drando/setting_descriptions.cpp | 6 +++ .../3drando/setting_descriptions.hpp | 1 + .../randomizer/3drando/settings.cpp | 3 ++ .../randomizer/3drando/settings.hpp | 1 + 6 files changed, 34 insertions(+), 21 deletions(-) diff --git a/soh/soh/Enhancements/randomizer/3drando/location_access/locacc_jabujabus_belly.cpp b/soh/soh/Enhancements/randomizer/3drando/location_access/locacc_jabujabus_belly.cpp index 28b4e9c49..38904488a 100644 --- a/soh/soh/Enhancements/randomizer/3drando/location_access/locacc_jabujabus_belly.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/location_access/locacc_jabujabus_belly.cpp @@ -244,7 +244,8 @@ void AreaTable_Init_JabuJabusBelly() { Area("Jabu Jabus Belly Boss Room", "Jabu Jabus Belly", NONE, NO_DAY_NIGHT_CYCLE, { // Events - EventAccess(&JabuJabusBellyClear, { [] { return JabuJabusBellyClear || CanUse(BOOMERANG); } }), + EventAccess(&JabuJabusBellyClear, + { [] { return JabuJabusBellyClear || (CanUse(BOOMERANG) && CanJumpslash); } }), }, { // Locations diff --git a/soh/soh/Enhancements/randomizer/3drando/location_access/locacc_shadow_temple.cpp b/soh/soh/Enhancements/randomizer/3drando/location_access/locacc_shadow_temple.cpp index 5d0a4e085..3ac96a5cb 100644 --- a/soh/soh/Enhancements/randomizer/3drando/location_access/locacc_shadow_temple.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/location_access/locacc_shadow_temple.cpp @@ -193,24 +193,25 @@ void AreaTable_Init_ShadowTemple() { Entrance(SHADOW_TEMPLE_BOSS_ROOM, { [] { return true; } }), }); - areaTable[SHADOW_TEMPLE_BOSS_ROOM] = - Area("Shadow Temple Boss Room", "Shadow Temple", NONE, NO_DAY_NIGHT_CYCLE, - { - // Events - EventAccess(&ShadowTempleClear, { [] { - return ShadowTempleClear || - ((CanUse(LENS_OF_TRUTH) || ((Dungeon::ShadowTemple.IsVanilla() && LogicLensShadowBack) || - (Dungeon::ShadowTemple.IsMQ() && LogicLensShadowMQBack))) && - (CanUse(KOKIRI_SWORD) || CanUse(MASTER_SWORD) || CanUse(BIGGORON_SWORD))); - } }), - }, - { - // Locations - LocationAccess(SHADOW_TEMPLE_BONGO_BONGO_HEART, { [] { return ShadowTempleClear; } }), - LocationAccess(BONGO_BONGO, { [] { return ShadowTempleClear; } }), - }, - { - // Exits - Entrance(SHADOW_TEMPLE_BOSS_ENTRYWAY, { [] { return false; } }), - }); + areaTable[SHADOW_TEMPLE_BOSS_ROOM] = Area( + "Shadow Temple Boss Room", "Shadow Temple", NONE, NO_DAY_NIGHT_CYCLE, + { + // Events + EventAccess(&ShadowTempleClear, { [] { + return ShadowTempleClear || + ((CanUse(LENS_OF_TRUTH) || ((Dungeon::ShadowTemple.IsVanilla() && LogicLensShadowBack) || + (Dungeon::ShadowTemple.IsMQ() && LogicLensShadowMQBack))) && + (CanUse(KOKIRI_SWORD) || CanUse(MASTER_SWORD) || CanUse(BIGGORON_SWORD) || LogicShadowBongo) && + (CanUse(HOOKSHOT) || CanUse(BOW) || CanUse(SLINGSHOT))); + } }), + }, + { + // Locations + LocationAccess(SHADOW_TEMPLE_BONGO_BONGO_HEART, { [] { return ShadowTempleClear; } }), + LocationAccess(BONGO_BONGO, { [] { return ShadowTempleClear; } }), + }, + { + // Exits + Entrance(SHADOW_TEMPLE_BOSS_ENTRYWAY, { [] { return false; } }), + }); } diff --git a/soh/soh/Enhancements/randomizer/3drando/setting_descriptions.cpp b/soh/soh/Enhancements/randomizer/3drando/setting_descriptions.cpp index ed857e82c..eabfe7ccf 100644 --- a/soh/soh/Enhancements/randomizer/3drando/setting_descriptions.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/setting_descriptions.cpp @@ -1435,6 +1435,12 @@ string_view LogicShadowStatueDesc = "Difficulty: Novice\n" "By sending a Bombchu around the edge of the gorge," "you can knock down the statue without needing a\n"// "Bow. Applies in both vanilla and MQ Shadow."; // +string_view LogicShadowBongoDesc = "Difficulty Expert\n" // + "Using precise sword slashes, Bongo Bongo can be\n"// + "defeated without using projectiles.\n" // + "This trick is much more difficult when done with\n" + "Kokiri Sword vs Master Sword or Biggorron Sword.\n" + "Useful for Boss Entrance Randomizer."; // string_view LogicChildDeadhandDesc = "Difficulty: Novice\n" // "Requires 9 sticks or 5 jump slashes."; // string_view LogicGtgWithoutHookshotDesc = "Difficulty: Expert\n" // diff --git a/soh/soh/Enhancements/randomizer/3drando/setting_descriptions.hpp b/soh/soh/Enhancements/randomizer/3drando/setting_descriptions.hpp index fae3ee995..e50584578 100644 --- a/soh/soh/Enhancements/randomizer/3drando/setting_descriptions.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/setting_descriptions.hpp @@ -431,6 +431,7 @@ extern string_view LogicShadowFireArrowEntryDesc; extern string_view LogicShadowUmbrellaDesc; extern string_view LogicShadowFreestandingKeyDesc; extern string_view LogicShadowStatueDesc; +extern string_view LogicShadowBongoDesc; extern string_view LogicChildDeadhandDesc; extern string_view LogicGtgWithoutHookshotDesc; extern string_view LogicGtgFakeWallDesc; diff --git a/soh/soh/Enhancements/randomizer/3drando/settings.cpp b/soh/soh/Enhancements/randomizer/3drando/settings.cpp index cba1384e6..7d61fd71f 100644 --- a/soh/soh/Enhancements/randomizer/3drando/settings.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/settings.cpp @@ -726,6 +726,7 @@ namespace Settings { Option LogicShadowUmbrella = LogicTrick(" ShT Stone Umbrella\n w/ Hover Boots", LogicShadowUmbrellaDesc); Option LogicShadowFreestandingKey = LogicTrick(" ShT Skull Vase Key\n w/ Bombchu", LogicShadowFreestandingKeyDesc); Option LogicShadowStatue = LogicTrick(" ShT River Statue\n w/ Bombchu", LogicShadowStatueDesc); + Option LogicShadowBongo = LogicTrick("ShT Bongo\n w/o Projectiles", LogicShadowBongoDesc); Option LogicChildDeadhand = LogicTrick(" BotW Deadhand\n w/o Sword", LogicChildDeadhandDesc); Option LogicGtgWithoutHookshot = LogicTrick(" GTG West Silver Rupee\n w/o Hookshot", LogicGtgWithoutHookshotDesc); Option LogicGtgFakeWall = LogicTrick(" GTG Invisible Wall\n w/ Hover Boots", LogicGtgFakeWallDesc); @@ -816,6 +817,7 @@ namespace Settings { &LogicShadowUmbrella, &LogicShadowFreestandingKey, &LogicShadowStatue, + &LogicShadowBongo, &LogicChildDeadhand, &LogicGtgWithoutHookshot, &LogicGtgFakeWall, @@ -2287,6 +2289,7 @@ namespace Settings { LogicSpiritSunChest.SetSelectedIndex(1); //LogicShadowFireArrowEntry.SetSelectedIndex(1); LogicShadowUmbrella.SetSelectedIndex(1); + LogicShadowBongo.SetSelectedIndex(1); LogicGtgWithoutHookshot.SetSelectedIndex(1); } } diff --git a/soh/soh/Enhancements/randomizer/3drando/settings.hpp b/soh/soh/Enhancements/randomizer/3drando/settings.hpp index dd394b832..9905ab313 100644 --- a/soh/soh/Enhancements/randomizer/3drando/settings.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/settings.hpp @@ -1186,6 +1186,7 @@ void UpdateSettings(std::unordered_map cvarSettin extern Option LogicShadowUmbrella; extern Option LogicShadowFreestandingKey; extern Option LogicShadowStatue; + extern Option LogicShadowBongo; extern Option LogicChildDeadhand; extern Option LogicGtgWithoutHookshot; extern Option LogicGtgFakeWall;