fix boss clear logic and add bongo logic trick (#2677)

This commit is contained in:
Adam Bird 2023-04-07 15:54:49 -04:00 committed by GitHub
parent 693f778b60
commit 2149cd1fdd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 34 additions and 21 deletions

View File

@ -244,7 +244,8 @@ void AreaTable_Init_JabuJabusBelly() {
Area("Jabu Jabus Belly Boss Room", "Jabu Jabus Belly", NONE, NO_DAY_NIGHT_CYCLE, Area("Jabu Jabus Belly Boss Room", "Jabu Jabus Belly", NONE, NO_DAY_NIGHT_CYCLE,
{ {
// Events // Events
EventAccess(&JabuJabusBellyClear, { [] { return JabuJabusBellyClear || CanUse(BOOMERANG); } }), EventAccess(&JabuJabusBellyClear,
{ [] { return JabuJabusBellyClear || (CanUse(BOOMERANG) && CanJumpslash); } }),
}, },
{ {
// Locations // Locations

View File

@ -193,24 +193,25 @@ void AreaTable_Init_ShadowTemple() {
Entrance(SHADOW_TEMPLE_BOSS_ROOM, { [] { return true; } }), Entrance(SHADOW_TEMPLE_BOSS_ROOM, { [] { return true; } }),
}); });
areaTable[SHADOW_TEMPLE_BOSS_ROOM] = areaTable[SHADOW_TEMPLE_BOSS_ROOM] = Area(
Area("Shadow Temple Boss Room", "Shadow Temple", NONE, NO_DAY_NIGHT_CYCLE, "Shadow Temple Boss Room", "Shadow Temple", NONE, NO_DAY_NIGHT_CYCLE,
{ {
// Events // Events
EventAccess(&ShadowTempleClear, { [] { EventAccess(&ShadowTempleClear, { [] {
return ShadowTempleClear || return ShadowTempleClear ||
((CanUse(LENS_OF_TRUTH) || ((Dungeon::ShadowTemple.IsVanilla() && LogicLensShadowBack) || ((CanUse(LENS_OF_TRUTH) || ((Dungeon::ShadowTemple.IsVanilla() && LogicLensShadowBack) ||
(Dungeon::ShadowTemple.IsMQ() && LogicLensShadowMQBack))) && (Dungeon::ShadowTemple.IsMQ() && LogicLensShadowMQBack))) &&
(CanUse(KOKIRI_SWORD) || CanUse(MASTER_SWORD) || CanUse(BIGGORON_SWORD))); (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; } }), // Locations
LocationAccess(BONGO_BONGO, { [] { return ShadowTempleClear; } }), LocationAccess(SHADOW_TEMPLE_BONGO_BONGO_HEART, { [] { return ShadowTempleClear; } }),
}, LocationAccess(BONGO_BONGO, { [] { return ShadowTempleClear; } }),
{ },
// Exits {
Entrance(SHADOW_TEMPLE_BOSS_ENTRYWAY, { [] { return false; } }), // Exits
}); Entrance(SHADOW_TEMPLE_BOSS_ENTRYWAY, { [] { return false; } }),
});
} }

View File

@ -1435,6 +1435,12 @@ string_view LogicShadowStatueDesc = "Difficulty: Novice\n"
"By sending a Bombchu around the edge of the gorge," "By sending a Bombchu around the edge of the gorge,"
"you can knock down the statue without needing a\n"// "you can knock down the statue without needing a\n"//
"Bow. Applies in both vanilla and MQ Shadow."; // "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" // string_view LogicChildDeadhandDesc = "Difficulty: Novice\n" //
"Requires 9 sticks or 5 jump slashes."; // "Requires 9 sticks or 5 jump slashes."; //
string_view LogicGtgWithoutHookshotDesc = "Difficulty: Expert\n" // string_view LogicGtgWithoutHookshotDesc = "Difficulty: Expert\n" //

View File

@ -431,6 +431,7 @@ extern string_view LogicShadowFireArrowEntryDesc;
extern string_view LogicShadowUmbrellaDesc; extern string_view LogicShadowUmbrellaDesc;
extern string_view LogicShadowFreestandingKeyDesc; extern string_view LogicShadowFreestandingKeyDesc;
extern string_view LogicShadowStatueDesc; extern string_view LogicShadowStatueDesc;
extern string_view LogicShadowBongoDesc;
extern string_view LogicChildDeadhandDesc; extern string_view LogicChildDeadhandDesc;
extern string_view LogicGtgWithoutHookshotDesc; extern string_view LogicGtgWithoutHookshotDesc;
extern string_view LogicGtgFakeWallDesc; extern string_view LogicGtgFakeWallDesc;

View File

@ -726,6 +726,7 @@ namespace Settings {
Option LogicShadowUmbrella = LogicTrick(" ShT Stone Umbrella\n w/ Hover Boots", LogicShadowUmbrellaDesc); Option LogicShadowUmbrella = LogicTrick(" ShT Stone Umbrella\n w/ Hover Boots", LogicShadowUmbrellaDesc);
Option LogicShadowFreestandingKey = LogicTrick(" ShT Skull Vase Key\n w/ Bombchu", LogicShadowFreestandingKeyDesc); Option LogicShadowFreestandingKey = LogicTrick(" ShT Skull Vase Key\n w/ Bombchu", LogicShadowFreestandingKeyDesc);
Option LogicShadowStatue = LogicTrick(" ShT River Statue\n w/ Bombchu", LogicShadowStatueDesc); 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 LogicChildDeadhand = LogicTrick(" BotW Deadhand\n w/o Sword", LogicChildDeadhandDesc);
Option LogicGtgWithoutHookshot = LogicTrick(" GTG West Silver Rupee\n w/o Hookshot", LogicGtgWithoutHookshotDesc); Option LogicGtgWithoutHookshot = LogicTrick(" GTG West Silver Rupee\n w/o Hookshot", LogicGtgWithoutHookshotDesc);
Option LogicGtgFakeWall = LogicTrick(" GTG Invisible Wall\n w/ Hover Boots", LogicGtgFakeWallDesc); Option LogicGtgFakeWall = LogicTrick(" GTG Invisible Wall\n w/ Hover Boots", LogicGtgFakeWallDesc);
@ -816,6 +817,7 @@ namespace Settings {
&LogicShadowUmbrella, &LogicShadowUmbrella,
&LogicShadowFreestandingKey, &LogicShadowFreestandingKey,
&LogicShadowStatue, &LogicShadowStatue,
&LogicShadowBongo,
&LogicChildDeadhand, &LogicChildDeadhand,
&LogicGtgWithoutHookshot, &LogicGtgWithoutHookshot,
&LogicGtgFakeWall, &LogicGtgFakeWall,
@ -2287,6 +2289,7 @@ namespace Settings {
LogicSpiritSunChest.SetSelectedIndex(1); LogicSpiritSunChest.SetSelectedIndex(1);
//LogicShadowFireArrowEntry.SetSelectedIndex(1); //LogicShadowFireArrowEntry.SetSelectedIndex(1);
LogicShadowUmbrella.SetSelectedIndex(1); LogicShadowUmbrella.SetSelectedIndex(1);
LogicShadowBongo.SetSelectedIndex(1);
LogicGtgWithoutHookshot.SetSelectedIndex(1); LogicGtgWithoutHookshot.SetSelectedIndex(1);
} }
} }

View File

@ -1186,6 +1186,7 @@ void UpdateSettings(std::unordered_map<RandomizerSettingKey, uint8_t> cvarSettin
extern Option LogicShadowUmbrella; extern Option LogicShadowUmbrella;
extern Option LogicShadowFreestandingKey; extern Option LogicShadowFreestandingKey;
extern Option LogicShadowStatue; extern Option LogicShadowStatue;
extern Option LogicShadowBongo;
extern Option LogicChildDeadhand; extern Option LogicChildDeadhand;
extern Option LogicGtgWithoutHookshot; extern Option LogicGtgWithoutHookshot;
extern Option LogicGtgFakeWall; extern Option LogicGtgFakeWall;