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,
{
// Events
EventAccess(&JabuJabusBellyClear, { [] { return JabuJabusBellyClear || CanUse(BOOMERANG); } }),
EventAccess(&JabuJabusBellyClear,
{ [] { return JabuJabusBellyClear || (CanUse(BOOMERANG) && CanJumpslash); } }),
},
{
// Locations

View File

@ -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; } }),
});
}

View File

@ -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" //

View File

@ -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;

View File

@ -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);
}
}

View File

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