diff --git a/worlds/ladx/LADXR/logic/overworld.py b/worlds/ladx/LADXR/logic/overworld.py index a85a97ae..b63aad2b 100644 --- a/worlds/ladx/LADXR/logic/overworld.py +++ b/worlds/ladx/LADXR/logic/overworld.py @@ -11,7 +11,7 @@ class World: mabe_village = Location("Mabe Village") Location().add(HeartPiece(0x2A4)).connect(mabe_village, r.bush) # well - Location().add(FishingMinigame()).connect(mabe_village, AND(r.bush, COUNT("RUPEES", 20))) # fishing game, heart piece is directly done by the minigame. + Location().add(FishingMinigame()).connect(mabe_village, AND(r.can_farm, COUNT("RUPEES", 20))) # fishing game, heart piece is directly done by the minigame. Location().add(Seashell(0x0A3)).connect(mabe_village, r.bush) # bushes below the shop Location().add(Seashell(0x0D2)).connect(mabe_village, PEGASUS_BOOTS) # smash into tree next to lv1 Location().add(Song(0x092)).connect(mabe_village, OCARINA) # Marins song @@ -23,7 +23,7 @@ class World: papahl_house.connect(mamasha_trade, TRADING_ITEM_YOSHI_DOLL) trendy_shop = Location("Trendy Shop") - trendy_shop.connect(Location().add(TradeSequenceItem(0x2A0, TRADING_ITEM_YOSHI_DOLL)), FOUND("RUPEES", 50)) + trendy_shop.connect(Location().add(TradeSequenceItem(0x2A0, TRADING_ITEM_YOSHI_DOLL)), AND(r.can_farm, FOUND("RUPEES", 50))) outside_trendy = Location() outside_trendy.connect(mabe_village, r.bush) @@ -43,8 +43,8 @@ class World: self._addEntrance("start_house", mabe_village, start_house, None) shop = Location("Shop") - Location().add(ShopItem(0)).connect(shop, OR(COUNT("RUPEES", 500), SWORD)) - Location().add(ShopItem(1)).connect(shop, OR(COUNT("RUPEES", 1480), SWORD)) + Location().add(ShopItem(0)).connect(shop, OR(AND(r.can_farm, COUNT("RUPEES", 500)), SWORD)) + Location().add(ShopItem(1)).connect(shop, OR(AND(r.can_farm, COUNT("RUPEES", 1480)), SWORD)) self._addEntrance("shop", mabe_village, shop, None) dream_hut = Location("Dream Hut") @@ -164,7 +164,7 @@ class World: self._addEntrance("prairie_left_cave2", ukuku_prairie, prairie_left_cave2, BOMB) self._addEntranceRequirementExit("prairie_left_cave2", None) # if exiting, you do not need bombs - mamu = Location().connect(Location().add(Song(0x2FB)), AND(OCARINA, COUNT("RUPEES", 1480))) + mamu = Location().connect(Location().add(Song(0x2FB)), AND(OCARINA, r.can_farm, COUNT("RUPEES", 1480))) self._addEntrance("mamu", ukuku_prairie, mamu, AND(OR(AND(FEATHER, PEGASUS_BOOTS), ROOSTER), OR(HOOKSHOT, ROOSTER), POWER_BRACELET)) dungeon3_entrance = Location().connect(ukuku_prairie, OR(FEATHER, ROOSTER, FLIPPERS)) @@ -377,7 +377,7 @@ class World: # Raft game. raft_house = Location("Raft House") - Location().add(KeyLocation("RAFT")).connect(raft_house, AND(r.bush, COUNT("RUPEES", 100))) # add bush requirement for farming in case player has to try again + Location().add(KeyLocation("RAFT")).connect(raft_house, AND(r.can_farm, COUNT("RUPEES", 100))) raft_return_upper = Location() raft_return_lower = Location().connect(raft_return_upper, None, one_way=True) outside_raft_house = Location().connect(below_right_taltal, HOOKSHOT).connect(below_right_taltal, FLIPPERS, one_way=True) diff --git a/worlds/ladx/LADXR/logic/requirements.py b/worlds/ladx/LADXR/logic/requirements.py index 4e1fe03b..8d637ecf 100644 --- a/worlds/ladx/LADXR/logic/requirements.py +++ b/worlds/ladx/LADXR/logic/requirements.py @@ -253,6 +253,7 @@ def isConsumable(item) -> bool: class RequirementsSettings: def __init__(self, options): + self.can_farm = OR(SWORD, MAGIC_POWDER, MAGIC_ROD, BOOMERANG, BOMB, HOOKSHOT, BOW) self.bush = OR(SWORD, MAGIC_POWDER, MAGIC_ROD, POWER_BRACELET, BOOMERANG, BOMB) self.pit_bush = OR(SWORD, MAGIC_POWDER, MAGIC_ROD, BOOMERANG, BOMB) # unique self.attack = OR(SWORD, BOMB, BOW, MAGIC_ROD, BOOMERANG) diff --git a/worlds/ladx/Locations.py b/worlds/ladx/Locations.py index 8670738e..45fa99ad 100644 --- a/worlds/ladx/Locations.py +++ b/worlds/ladx/Locations.py @@ -110,15 +110,6 @@ class LinksAwakeningLocation(Location): add_item_rule(self, filter_item) -def has_free_weapon(state: CollectionState, player: int) -> bool: - return state.has("Progressive Sword", player) or state.has("Magic Rod", player) or state.has("Boomerang", player) or state.has("Hookshot", player) - - -# If the player has access to farm enough rupees to afford a game, we assume that they can keep beating the game -def can_farm_rupees(state: CollectionState, player: int) -> bool: - return has_free_weapon(state, player) and (state.has("Can Play Trendy Game", player=player) or state.has("RAFT", player=player)) - - class LinksAwakeningRegion(Region): dungeon_index = None ladxr_region = None @@ -154,9 +145,7 @@ class GameStateAdapater: def get(self, item, default): # Don't allow any money usage if you can't get back wasted rupees if item == "RUPEES": - if can_farm_rupees(self.state, self.player): - return self.state.prog_items[self.player]["RUPEES"] - return 0 + return self.state.prog_items[self.player]["RUPEES"] elif item.endswith("_USED"): return 0 else: