Skip to content

Commit

Permalink
Logic fixes (#58)
Browse files Browse the repository at this point in the history
* Update base patch to bring in all new fixes and features.

* Logic Fixes1

- Adjusts Postman's Freedom to no longer be repeatable
- Deku Mask is no longer required to enter Stone Tower Temple
- Pirate Hideout Beehive no longer accepts Hookshot as a valid way to knock down.
- Snowhead Stray Fairies behind invisible walls now expect lens of truth to collect
- Mountain Village Waterfall Chest now expects lens of truth as it is invisible
- Beneath the Well left side chest now expects lens of truth as it is invisible
- Twin Islands Goron Track Grotto now expects either Goron Mask or Hookshot to reach

* Update starting_inventory.cpp

Make it so tingle maps don't get removed from pool when  mapsandcompasses is start with

---------

Co-authored-by: Tacoman369 <[email protected]>
  • Loading branch information
PhlexPlexico and Tacoman369 authored Feb 24, 2024
1 parent 82d9ec6 commit 0bf0b84
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 21 deletions.
10 changes: 5 additions & 5 deletions source/item_location.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ void LocationTable_Init() {
locationTable[E_CLOCK_TOWN_ARCHERY_2] = ItemLocation::Base (0x20, 0x0C, false, "ECT Archery #2", E_CLOCK_TOWN_ARCHERY_2, PIECE_OF_HEART, {Category::cEastClockTown, Category::cMinigame , Category::cVanillaHeartPiece,Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_E_CLOCK_TOWN );
locationTable[E_CLOCK_TOWN_HONEY_DARLING_3DAYS] = ItemLocation::Base (0x11, 0x0C, false, "ECT Honey and Darling 3 Days", E_CLOCK_TOWN_HONEY_DARLING_3DAYS, PIECE_OF_HEART, {Category::cEastClockTown, Category::cMinigame , Category::cVanillaHeartPiece,Category::cDayThree}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_E_CLOCK_TOWN );
locationTable[E_CLOCK_TOWN_TREASURE_CHEST_GAME_GORON] = ItemLocation::Chest (0x17, 0x00, true, "ECT Treasure Chest Game (Goron)", E_CLOCK_TOWN_TREASURE_CHEST_GAME_GORON, PIECE_OF_HEART, {Category::cEastClockTown, Category::cMinigame, Category::cVanillaHeartPiece,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_E_CLOCK_TOWN );
locationTable[E_CLOCK_TOWN_POSTMAN_FREEDOM] = ItemLocation::Base (0x6C, 0x84, true, "ECT Postman's Freedom", E_CLOCK_TOWN_POSTMAN_FREEDOM, POSTMANS_HAT, {Category::cEastClockTown, Category::cVanillaMask,Category::cDayThree}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_E_CLOCK_TOWN );
locationTable[E_CLOCK_TOWN_POSTMAN_FREEDOM] = ItemLocation::Base (0x6C, 0x84, false, "ECT Postman's Freedom", E_CLOCK_TOWN_POSTMAN_FREEDOM, POSTMANS_HAT, {Category::cEastClockTown, Category::cVanillaMask,Category::cDayThree}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_E_CLOCK_TOWN );
locationTable[E_CLOCK_TOWN_GORMAN] = ItemLocation::Base (0x15, 0x83, false, "ECT Milk Bar Gorman", E_CLOCK_TOWN_GORMAN, CIRCUS_LEADERS_MASK, {Category::cEastClockTown, Category::cVanillaMask,Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_E_CLOCK_TOWN );
locationTable[E_CLOCK_TOWN_AROMA_IN_OFFICE] = ItemLocation::Base (0x12, 0x8F, false, "ECT Mayor's Office Madame Aroma", E_CLOCK_TOWN_AROMA_IN_OFFICE, KAFEIS_MASK, {Category::cEastClockTown, Category::cVanillaMask,Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_E_CLOCK_TOWN );
locationTable[BOMBERS_HIDEOUT_CHEST] = ItemLocation::Chest (0x29, 0x00, true, "Bombers' Hideout Chest", BOMBERS_HIDEOUT_CHEST, SILVER_RUPEE, {Category::cEastClockTown,Category::cChest,Category::cDayOne }, SpoilerCollectionCheckGroup::GROUP_E_CLOCK_TOWN );
Expand Down Expand Up @@ -354,10 +354,10 @@ void LocationTable_Init() {
-------------------------------*/

locationTable[LINKS_POCKET] = ItemLocation::Base (0x63, 0x00, false, "Link's Pocket", LINKS_POCKET, NONE, {}, SpoilerCollectionCheck::AlwaysCollected(), SpoilerCollectionCheckGroup::GROUP_NO_GROUP );
locationTable[ODOLWA] = ItemLocation::Reward (0x1F, 0x2D, false, "Woodfall Temple Odolwa's Remains", ODOLWAS_REMAINS, ODOLWAS_REMAINS, {}, SpoilerCollectionCheck::EventChkInf(0), SpoilerCollectionCheckGroup::GROUP_DUNGEON_WOODFALL_TEMPLE );
locationTable[GOHT] = ItemLocation::Reward (0x44, 0x2F, false, "Snowhead Temple Goht's Remains", GOHTS_REMAINS, GOHTS_REMAINS, {}, SpoilerCollectionCheck::EventChkInf(0), SpoilerCollectionCheckGroup::GROUP_DUNGEON_SNOWHEAD_TEMPLE );
locationTable[GYORG] = ItemLocation::Reward (0x5F, 0x30, false, "Great Bay Temple Gyorg's Remains", GYORGS_REMAINS, GYORGS_REMAINS, {}, SpoilerCollectionCheck::EventChkInf(0), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GREAT_BAY );
locationTable[TWINMOLD] = ItemLocation::Reward (0x36, 0x31, false, "Stone Tower Temple Twinmold's Remains", TWINMOLDS_REMAINS, TWINMOLDS_REMAINS, {}, SpoilerCollectionCheck::EventChkInf(0), SpoilerCollectionCheckGroup::GROUP_DUNGEON_STONE_TOWER );
locationTable[ODOLWA] = ItemLocation::Base (0x1F, 0x2D, false, "Woodfall Temple Odolwa's Remains", ODOLWAS_REMAINS, ODOLWAS_REMAINS, {}, SpoilerCollectionCheck::EventChkInf(0), SpoilerCollectionCheckGroup::GROUP_DUNGEON_WOODFALL_TEMPLE );
locationTable[GOHT] = ItemLocation::Base (0x44, 0x2F, false, "Snowhead Temple Goht's Remains", GOHTS_REMAINS, GOHTS_REMAINS, {}, SpoilerCollectionCheck::EventChkInf(0), SpoilerCollectionCheckGroup::GROUP_DUNGEON_SNOWHEAD_TEMPLE );
locationTable[GYORG] = ItemLocation::Base (0x5F, 0x30, false, "Great Bay Temple Gyorg's Remains", GYORGS_REMAINS, GYORGS_REMAINS, {}, SpoilerCollectionCheck::EventChkInf(0), SpoilerCollectionCheckGroup::GROUP_DUNGEON_GREAT_BAY );
locationTable[TWINMOLD] = ItemLocation::Base (0x36, 0x31, false, "Stone Tower Temple Twinmold's Remains", TWINMOLDS_REMAINS, TWINMOLDS_REMAINS, {}, SpoilerCollectionCheck::EventChkInf(0), SpoilerCollectionCheckGroup::GROUP_DUNGEON_STONE_TOWER );
locationTable[MAJORA] = ItemLocation::Reward (0x0B, 0x00, false, "Majora", MAJORA, MAJORAS_MASK, {}, SpoilerCollectionCheck::None(), SpoilerCollectionCheckGroup::GROUP_DUNGEON_THE_MOON );

/*-------------------------------
Expand Down
18 changes: 9 additions & 9 deletions source/location_access.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1027,7 +1027,7 @@ void AreaTable_Init() {
//Locations
LocationAccess(MOUNTAIN_VILLAGE_FROG_CHOIR, {[] {return SnowheadClear && LaundryFrog && SwampFrog && WoodfallFrog && GreatBayFrog && DonGerosMask;}}),
LocationAccess(MOUNTAIN_VILLAGE_HUNGRY_GORON, {[] {return GoronMask && MagicMeter;}}),
LocationAccess(MOUNTAIN_WATERFALL_CHEST, {[] {return SnowheadClear;}}),
LocationAccess(MOUNTAIN_WATERFALL_CHEST, {[] {return SnowheadClear && LensOfTruth && MagicMeter;}}),
LocationAccess(MOUNTAIN_VILLAGE_KEATON_QUIZ, {[]{return SnowheadClear && KeatonMask && AnySword;}}),
//Gossip Stones
LocationAccess(MV_NEAR_FROGS_GOSSIP, {[] {return true;}}),
Expand Down Expand Up @@ -1112,7 +1112,7 @@ void AreaTable_Init() {
{
//Exits
Entrance(TWIN_ISLANDS, {[]{return true;}}),
Entrance(TWIN_ISLANDS_GORON_RACETRACK_GROTTO, {[]{return AnyBombBag;}}),
Entrance(TWIN_ISLANDS_GORON_RACETRACK_GROTTO, {[]{return AnyBombBag || (Hookshot || GoronMask);}}),
});

areaTable[TWIN_ISLANDS_GORON_RACETRACK_GROTTO] = Area("Goron Racetrack Grotto", "Goron Racetrack Grotto", NONE, {
Expand Down Expand Up @@ -1901,8 +1901,8 @@ void AreaTable_Init() {
{
//Exits
Entrance(IKANA_CANYON_UPPER, {[]{return true;}}),
Entrance(STONE_TOWER_TEMPLE_ENTRANCE, {[]{return CanPlay(ElegyOfEmptiness) && GoronMask && ZoraMask && DekuMask && Hookshot;}}),
Entrance(INVERTED_STONE_TOWER, {[]{return CanPlay(ElegyOfEmptiness) && GoronMask && ZoraMask && DekuMask && Hookshot && Bow && LightArrows && MagicMeter;}}),
Entrance(STONE_TOWER_TEMPLE_ENTRANCE, {[]{return CanPlay(ElegyOfEmptiness) && GoronMask && ZoraMask && Hookshot;}}),
Entrance(INVERTED_STONE_TOWER, {[]{return CanPlay(ElegyOfEmptiness) && GoronMask && ZoraMask && Hookshot && Bow && LightArrows && MagicMeter;}}),
});

areaTable[INVERTED_STONE_TOWER] = Area("Inverted Stone Tower", "Inverted Stone Tower", INVERTED_STONE_TOWER, {
Expand Down Expand Up @@ -2293,7 +2293,7 @@ void AreaTable_Init() {
{
//Locations
LocationAccess(SNOWHEAD_TEMPLE_ICICLE_ROOM_CHEST, {[] {return Bow;}}),
LocationAccess(SH_SF_ICICLE_ROOM_WALL, {[] {return Bow && GreatFairyMask;}}),
LocationAccess(SH_SF_ICICLE_ROOM_WALL, {[] {return Bow && GreatFairyMask && LensOfTruth && MagicMeter;}}),
},
{
//Exits
Expand All @@ -2306,7 +2306,7 @@ void AreaTable_Init() {
},
{
//Locations
LocationAccess(SH_SF_CEILING_BUBBLE, {[] {return (Hookshot || Bow) && GreatFairyMask;}}),
LocationAccess(SH_SF_CEILING_BUBBLE, {[] {return (Hookshot || Bow) && GreatFairyMask && LensOfTruth && MagicMeter;}}),
},
{
//Exits
Expand All @@ -2319,7 +2319,7 @@ void AreaTable_Init() {
},
{
//Locations
LocationAccess(SH_SF_MAIN_ROOM_WALL, {[] {return (Bow || Hookshot) && GreatFairyMask;}}),
LocationAccess(SH_SF_MAIN_ROOM_WALL, {[] {return (Bow || Hookshot) && GreatFairyMask && LensOfTruth && MagicMeter;}}),
},
{
//Exits
Expand Down Expand Up @@ -3105,7 +3105,7 @@ void AreaTable_Init() {

areaTable[PIRATE_FORTRESS_HOOKSHOT_ROOM_TOP] = Area("Pirates Fortress Upper Hookshot Room", "Pirates Fortress Upper Hookshot Room", PIRATE_FORTRESS, {
//Events
EventAccess(&PirateBees, {[]{return Bow || Hookshot;}}),
EventAccess(&PirateBees, {[]{return Bow;}}),//potential trick for zora fins or deku bubble?
},
{
//Locations
Expand Down Expand Up @@ -3225,7 +3225,7 @@ void AreaTable_Init() {
},
{
//Locations
LocationAccess(WELL_LEFT_PATH_CHEST, {[] {return true;}}),
LocationAccess(WELL_LEFT_PATH_CHEST, {[] {return LensOfTruth && MagicMeter;}}),//invisible chest
},
{
//Exits
Expand Down
6 changes: 0 additions & 6 deletions source/starting_inventory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,6 @@ void GenerateStartingInventory() {
for (auto* dungeon : dungeonList) {
if (dungeon->GetMap() != NONE) {
AddItemToInventory(dungeon->GetMap());
AddItemToInventory(CLOCK_TOWN_MAP);
AddItemToInventory(WOODFALL_MAP);
AddItemToInventory(SNOWHEAD_MAP);
AddItemToInventory(ROMANI_RANCH_MAP);
AddItemToInventory(GREAT_BAY_MAP);
AddItemToInventory(STONE_TOWER_MAP);
}

if (dungeon->GetCompass() != NONE) {
Expand Down

0 comments on commit 0bf0b84

Please sign in to comment.