Skip to content

Commit

Permalink
Merge pull request #69 from jcallen/main
Browse files Browse the repository at this point in the history
Logic updates
- Adjusts naming convention of Swamp Archery Bottle away from Dampe Digging Bottle as the location was switched in 3D
- Updates Mystery Milk quest logic to ensure you are able to turn in the milk and keep the bottle before including the location in logic. Also adjusts logic around the Mystery Milk item to not count the bottle until it can be turned in.
  • Loading branch information
Tacoman369 authored Mar 8, 2024
2 parents 06d2320 + 5294c0e commit 856bf79
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 18 deletions.
6 changes: 4 additions & 2 deletions source/include/logic.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,10 @@ namespace Logic {
extern bool AlienBottle;
extern bool GoronRaceBottle;
extern bool BeaverRaceBottle;
extern bool DampeBottle;
extern bool ArcheryBottle;
extern bool ChateauBottle;
extern bool MysteryMilkBottle;
extern bool UsableMysteryMilkBottle;
extern bool BombersNotebook;
extern bool MirrorShield;
extern bool HerosShield;
Expand Down Expand Up @@ -309,6 +310,7 @@ namespace Logic {
extern bool WoodfallFrog;
extern bool GreatBayFrog;
extern bool ThinBridgeCrystalChest;
extern bool MilkQuestStart;

extern bool CanGoToMoon;

Expand All @@ -327,4 +329,4 @@ namespace Logic {
u8 TotalMaskCount();
bool EventsUpdated();
void LogicReset();
}
}
4 changes: 2 additions & 2 deletions source/item_list.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ void ItemTable_Init() { //repeatable denotes that an item in a vanilla playth
itemTable[ST_STRAY_FAIRY] = Item(true, true, &StoneTowerStrayFairies, Text{"Stone Tower Stray Fairy", "Fee errante de la Forteresse de Pierre", "Hada Callejera de la Torre Piedra" }, ST_STRAY_FAIRY, (u32)GetItemID::GI_NONE, ITEMTYPE_STRAYFAIRY);

//Bottles
itemTable[EMPTY_BOTTLE1] = Item(true, false, &DampeBottle, Text{"Empty Bottle", "Flacon vide", "Botella vacía" }, EMPTY_BOTTLE1, (u32)GetItemID::GI_BOTTLE_EMPTY, ITEMTYPE_ITEM);
itemTable[EMPTY_BOTTLE1] = Item(true, false, &ArcheryBottle, Text{"Empty Bottle", "Flacon vide", "Botella vacía" }, EMPTY_BOTTLE1, (u32)GetItemID::GI_BOTTLE_EMPTY, ITEMTYPE_ITEM);
itemTable[EMPTY_BOTTLE2] = Item(true, false, &BeaverRaceBottle, Text{"Empty Bottle", "Flacon vide", "Botella vacía" }, EMPTY_BOTTLE2, (u32)GetItemID::GI_BOTTLE_EMPTY, ITEMTYPE_ITEM);
itemTable[EMPTY_BOTTLE] = Item(true, false, &HasBottle, Text{"Empty Bottle", "Flacon vide", "Botella vacía" }, EMPTY_BOTTLE, (u32)GetItemID::GI_BOTTLE_EMPTY, ITEMTYPE_ITEM);
itemTable[BOTTLE_WITH_MILK] = Item(true, false, &AlienBottle, Text{"Bottle with Milk", "Flacon de lait", "Botella de leche Lon Lon"}, BOTTLE_WITH_MILK, (u32)GetItemID::GI_BOTTLE_MILK, ITEMTYPE_ITEM);
Expand Down Expand Up @@ -253,4 +253,4 @@ void NewItem(const ItemKey itemKey, const Item item) {
return;
}
itemTable[itemKey] = item;
}
}
4 changes: 2 additions & 2 deletions source/item_location.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ void LocationTable_Init() {
locationTable[SOUTHERN_SWAMP_KOTAKE_IN_WOODS] = ItemLocation::Base (0x64, 0x59, false, "SS Mystery Woods Kotake", SOUTHERN_SWAMP_KOTAKE_IN_WOODS, BOTTLE_WITH_RED_POTION, {Category::cSouthernSwamp}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_SOUTHERN_SWAMP );
locationTable[SOUTHERN_SWAMP_SCRUB_TRADE] = ItemLocation::Base (0x45, 0x98, true, "SS Deku Scrub Merchant Trade", SOUTHERN_SWAMP_SCRUB_TRADE, SWAMP_TITLE, {Category::cSouthernSwamp, Category::cDekuScrub,Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_SOUTHERN_SWAMP );
locationTable[SOUTHERN_SWAMP_PICTOGRAPH_WINNER] = ItemLocation::Base (0x57, 0xBA, false, "SS Pictograph Contest Winner", SOUTHERN_SWAMP_PICTOGRAPH_WINNER, PIECE_OF_HEART, {Category::cSouthernSwamp, Category::cVanillaHeartPiece,Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_SOUTHERN_SWAMP );
locationTable[SOUTHERN_SWAMP_BOAT_ARCHERY] = ItemLocation::Base (0x57, 0x5A, false, "SS Boat Archery", SOUTHERN_SWAMP_BOAT_ARCHERY, EMPTY_BOTTLE2, {Category::cSouthernSwamp, Category::cMinigame, Category::cVanillaHeartPiece}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_SOUTHERN_SWAMP );
locationTable[SOUTHERN_SWAMP_BOAT_ARCHERY] = ItemLocation::Base (0x57, 0x5A, false, "SS Boat Archery", SOUTHERN_SWAMP_BOAT_ARCHERY, EMPTY_BOTTLE1, {Category::cSouthernSwamp, Category::cMinigame, Category::cVanillaHeartPiece}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_SOUTHERN_SWAMP );
locationTable[SWAMP_TOURIST_CENTER_ROOF] = ItemLocation::Collectable(0x45, 0x00, false, "SS Tourist Center Roof", SWAMP_TOURIST_CENTER_ROOF, PIECE_OF_HEART, {Category::cSouthernSwamp, Category::cVanillaHeartPiece,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_SOUTHERN_SWAMP );
locationTable[SOUTHERN_SWAMP_SPIDER_HOUSE_REWARD] = ItemLocation::Base (0x27, 0x8A, false, "SSH Reward", SOUTHERN_SWAMP_SPIDER_HOUSE_REWARD, MASK_OF_TRUTH, {Category::cSouthernSwamp, Category::cVanillaMask,Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_SOUTHERN_SWAMP );
locationTable[SOUTHERN_SWAMP_MUSIC_STATUE] = ItemLocation::Base (0x45, 0x72, false, "SS Music Statue", SOUTHERN_SWAMP_MUSIC_STATUE, SONG_OF_SOARING, {Category::cSouthernSwamp, Category::cSong,Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_SOUTHERN_SWAMP );
Expand Down Expand Up @@ -245,7 +245,7 @@ void LocationTable_Init() {

//Zora Cape
locationTable[ZORA_CAPE_GREAT_FAIRY] = ItemLocation::Base (0x26, 0xB2, false, "ZC Great Fairy", ZORA_CAPE_GREAT_FAIRY, DOUBLE_DEFENSE, {Category::cZoraCape,Category::cFairyFountain,Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_ZORA_CAPE );
locationTable[ZORA_CAPE_BEAVER_RACE_1] = ItemLocation::Base (0x4A, 0x5A, false, "ZC Beaver Race 1", ZORA_CAPE_BEAVER_RACE_1, EMPTY_BOTTLE1, {Category::cZoraCape,Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_ZORA_CAPE );
locationTable[ZORA_CAPE_BEAVER_RACE_1] = ItemLocation::Base (0x4A, 0x5A, false, "ZC Beaver Race 1", ZORA_CAPE_BEAVER_RACE_1, EMPTY_BOTTLE2, {Category::cZoraCape,Category::cMinigame}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_ZORA_CAPE );
locationTable[ZORA_CAPE_BEAVER_RACE_2] = ItemLocation::Base (0x4A, 0x0C, false, "ZC Beaver Race 2", ZORA_CAPE_BEAVER_RACE_2, PIECE_OF_HEART, {Category::cZoraCape,Category::cMinigame, Category::cVanillaHeartPiece,Category::cDayOne}, SpoilerCollectionCheck::ItemGetInf(0), SpoilerCollectionCheckGroup::GROUP_ZORA_CAPE );
locationTable[ZORA_CAPE_LIKE_LIKE] = ItemLocation::Collectable(0x38, 0x00, false, "ZC Like Like HP", ZORA_CAPE_LIKE_LIKE, PIECE_OF_HEART, {Category::cZoraCape, Category::cVanillaHeartPiece,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_ZORA_CAPE );
locationTable[ZORA_CAPE_LEDGE_NO_TREE] = ItemLocation::Chest (0x38, 0x01, true, "ZC Ledge Without Tree Chest", ZORA_CAPE_LEDGE_NO_TREE, RED_RUPEE, {Category::cZoraCape,Category::cChest ,Category::cDayOne}, SpoilerCollectionCheckGroup::GROUP_ZORA_CAPE );
Expand Down
4 changes: 2 additions & 2 deletions source/item_pool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,8 +365,8 @@ static void PlaceVanillaMainInventory() {
PlaceItemInLocation(TWIN_ISLANDS_GORON_RACE, GOLD_DUST);
PlaceItemInLocation(E_CLOCK_TOWN_AROMA_IN_BAR, CHATEAU_ROMANI);
PlaceItemInLocation(GORMAN_TRACK_MYSTERY_MILK_QUEST, BOTTLE_WITH_MYSTERY_MILK);
PlaceItemInLocation(ZORA_CAPE_BEAVER_RACE_1,EMPTY_BOTTLE2);
PlaceItemInLocation(IKANA_GRAVEYARD_DAMPE_DIGGING,EMPTY_BOTTLE1);
PlaceItemInLocation(SOUTHERN_SWAMP_BOAT_ARCHERY, EMPTY_BOTTLE1);
PlaceItemInLocation(ZORA_CAPE_BEAVER_RACE_1, EMPTY_BOTTLE2);
PlaceItemInLocation(ROMANI_RANCH_ALIEN_DEFENSE,BOTTLE_WITH_MILK);
PlaceItemInLocation(GBC_FISHERMAN_PHOTO, SEAHORSE);
};
Expand Down
4 changes: 3 additions & 1 deletion source/location_access.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ void AreaTable_Init() {

areaTable[STOCKPOTINN] = Area("Stock Pot Inn", "Stock Pot Inn", STOCKPOTINN, {
//Events
EventAccess(&MilkQuestStart, {[] {return CircusLeadersMask;}}),
},
{
//Locations
Expand Down Expand Up @@ -1283,12 +1284,13 @@ void AreaTable_Init() {

areaTable[GORMAN_TRACK] = Area("Gorman Track", "Gorman Track", NONE, {
//Events
EventAccess(&UsableMysteryMilkBottle, {[] {return MilkQuestStart && CircusLeadersMask && MysteryMilkBottle;}}), // Assumes that if you could start the quest, you can finish it
},
{
//Locations
LocationAccess(MILK_ROAD_GORMAN_RACE, {[]{return CanPlay(EponasSong);}}),
LocationAccess(MILK_ROAD_GORMAN_MILK_BUY, {[]{return AnyBottle;}}),
LocationAccess(GORMAN_TRACK_MYSTERY_MILK_QUEST, {[] {return CircusLeadersMask;}}),
LocationAccess(GORMAN_TRACK_MYSTERY_MILK_QUEST, {[] {return MilkQuestStart && CircusLeadersMask;}}),
},
{
//Exits
Expand Down
22 changes: 13 additions & 9 deletions source/logic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,10 @@ namespace Logic {
bool AlienBottle = false;
bool GoronRaceBottle = false;
bool BeaverRaceBottle = false;
bool DampeBottle = false;
bool ArcheryBottle = false;
bool ChateauBottle = false;
bool MysteryMilkBottle = false;
bool UsableMysteryMilkBottle = false;
bool BombersNotebook = false;
bool MirrorShield = false;
bool HerosShield = false;
Expand Down Expand Up @@ -300,6 +301,7 @@ namespace Logic {
bool WoodfallFrog = false;
bool GreatBayFrog = false;
bool ThinBridgeCrystalChest = false;
bool MilkQuestStart = false;

bool CanGoToMoon = false;

Expand Down Expand Up @@ -496,7 +498,7 @@ namespace Logic {
//Item Helpers
AnyMagicBean = MagicBean || LimitlessBeans;
AnyWallet = Townwallet200 || OceanWallet500 || (ProgressiveWallet >= 1);
AnyBottle = WitchBottle || AlienBottle || BeaverRaceBottle || DampeBottle || GoronRaceBottle || ChateauBottle || MysteryMilkBottle || HasBottle;
AnyBottle = WitchBottle || AlienBottle || BeaverRaceBottle || ArcheryBottle || GoronRaceBottle || ChateauBottle || UsableMysteryMilkBottle || HasBottle;
MagicMeter = (ProgressiveMagic >= 1) || MagicPower || ExtendedMagicPower;
WaterForBeans = (AnyBottle && (SpringWater || HotSpringWater)) || SongOfStorms;
Scarecrow = Hookshot && CanPlay(ScarecrowSong);
Expand All @@ -515,13 +517,13 @@ namespace Logic {
AnyHealingPotion = AnyRedPotion || AnyBluePotion;
AnyRedPotion = AnyBottle;
AnyBluePotion = AnyBottle;
TwoBottles = { (WitchBottle && AlienBottle) || (WitchBottle && BeaverRaceBottle) || (WitchBottle && DampeBottle) ||
TwoBottles = { (WitchBottle && AlienBottle) || (WitchBottle && BeaverRaceBottle) || (WitchBottle && ArcheryBottle) ||
(WitchBottle && GoronRaceBottle) || (WitchBottle && ChateauBottle) || (AlienBottle && GoronRaceBottle) ||
(AlienBottle && BeaverRaceBottle) || (AlienBottle && DampeBottle) || (AlienBottle && ChateauBottle) ||
(GoronRaceBottle && BeaverRaceBottle) || (GoronRaceBottle && DampeBottle) || (GoronRaceBottle && ChateauBottle) ||
(BeaverRaceBottle && DampeBottle) || (BeaverRaceBottle && ChateauBottle) || (DampeBottle && ChateauBottle) ||
(WitchBottle && MysteryMilkBottle) || (AlienBottle && MysteryMilkBottle) || (BeaverRaceBottle && MysteryMilkBottle) ||
(DampeBottle && MysteryMilkBottle) || (GoronRaceBottle && MysteryMilkBottle) || (ChateauBottle && MysteryMilkBottle)};
(AlienBottle && BeaverRaceBottle) || (AlienBottle && ArcheryBottle) || (AlienBottle && ChateauBottle) ||
(GoronRaceBottle && BeaverRaceBottle) || (GoronRaceBottle && ArcheryBottle) || (GoronRaceBottle && ChateauBottle) ||
(BeaverRaceBottle && ArcheryBottle) || (BeaverRaceBottle && ChateauBottle) || (ArcheryBottle && ChateauBottle) ||
(WitchBottle && UsableMysteryMilkBottle) || (AlienBottle && UsableMysteryMilkBottle) || (BeaverRaceBottle && UsableMysteryMilkBottle) ||
(ArcheryBottle && UsableMysteryMilkBottle) || (GoronRaceBottle && UsableMysteryMilkBottle) || (ChateauBottle && UsableMysteryMilkBottle)};

//Tricks
PoisonWaterAsZora = ZoraMask && TakeDamage;
Expand Down Expand Up @@ -573,9 +575,10 @@ namespace Logic {
AlienBottle = false;
GoronRaceBottle = false;
BeaverRaceBottle = false;
DampeBottle = false;
ArcheryBottle = false;
ChateauBottle = false;
MysteryMilkBottle = false;
UsableMysteryMilkBottle = false;
BombersNotebook = false;
MirrorShield = false;
HerosShield = false;
Expand Down Expand Up @@ -830,6 +833,7 @@ namespace Logic {
WoodfallFrog = false;
GreatBayFrog = false;
ThinBridgeCrystalChest = false;
MilkQuestStart = false;


ZoraEgg = 0;
Expand Down

0 comments on commit 856bf79

Please sign in to comment.