diff --git a/Options.py b/Options.py index 154428dd43..59e7b30aca 100644 --- a/Options.py +++ b/Options.py @@ -880,6 +880,7 @@ class ItemSet(OptionSet): class Accessibility(Choice): """Set rules for reachability of your items/locations. + Full: ensure everything can be reached and acquired. Minimal: ensure what is needed to reach your goal can be acquired.""" display_name = "Accessibility" @@ -891,6 +892,7 @@ class Accessibility(Choice): class ItemsAccessibility(Accessibility): """Set rules for reachability of your items/locations. + Full: ensure everything can be reached and acquired. Items: ensure all logically relevant items can be acquired. Some items, such as keys, may be self-locking. Minimal: ensure what is needed to reach your goal can be acquired.""" diff --git a/test/general/TestFill.py b/test/general/TestFill.py index 0933603dfd..5bb56408a5 100644 --- a/test/general/TestFill.py +++ b/test/general/TestFill.py @@ -221,7 +221,7 @@ class TestFillRestrictive(unittest.TestCase): player2 = generate_player_data(multi_world, 2, 3, 3) multi_world.accessibility[player1.id].value = multi_world.accessibility[player1.id].option_minimal - multi_world.accessibility[player2.id].value = multi_world.accessibility[player2.id].option_locations + multi_world.accessibility[player2.id].value = multi_world.accessibility[player2.id].option_full multi_world.completion_condition[player1.id] = lambda state: True multi_world.completion_condition[player2.id] = lambda state: state.has(player2.prog_items[2].name, player2.id) diff --git a/worlds/alttp/Options.py b/worlds/alttp/Options.py index 6141cb4746..4b413dd50e 100644 --- a/worlds/alttp/Options.py +++ b/worlds/alttp/Options.py @@ -1,7 +1,8 @@ import typing from BaseClasses import MultiWorld -from Options import Choice, DeathLink, DefaultOnToggle, ItemsAccessibility, Option, PlandoBosses, Range, Toggle +from Options import Choice, DeathLink, DefaultOnToggle, ItemsAccessibility, Option, PlandoBosses, Range, \ + StartInventoryPool, Toggle class Logic(Choice): diff --git a/worlds/messenger/options.py b/worlds/messenger/options.py index 1da544bee7..a44abaf435 100644 --- a/worlds/messenger/options.py +++ b/worlds/messenger/options.py @@ -3,14 +3,14 @@ from typing import Dict from schema import And, Optional, Or, Schema -from Options import Accessibility, Choice, DeathLink, DefaultOnToggle, OptionDict, PerGameCommonOptions, Range, \ +from Options import Choice, DeathLink, DefaultOnToggle, ItemsAccessibility, OptionDict, PerGameCommonOptions, Range, \ StartInventoryPool, Toggle -class MessengerAccessibility(Accessibility): - default = Accessibility.option_locations +class MessengerAccessibility(ItemsAccessibility): # defaulting to locations accessibility since items makes certain items self-locking - __doc__ = Accessibility.__doc__.replace(f"default {Accessibility.default}", f"default {default}") + default = ItemsAccessibility.option_full + __doc__ = ItemsAccessibility.__doc__ class Logic(Choice): diff --git a/worlds/messenger/rules.py b/worlds/messenger/rules.py index c9bd9b8625..88de846f8a 100644 --- a/worlds/messenger/rules.py +++ b/worlds/messenger/rules.py @@ -150,7 +150,7 @@ class MessengerRules: lambda state: state.has("Shop Chest", self.player)) multiworld.completion_condition[self.player] = lambda state: state.has("Rescue Phantom", self.player) - if multiworld.accessibility[self.player] > MessengerAccessibility.option_locations: + if multiworld.accessibility[self.player] > MessengerAccessibility.option_full: set_self_locking_items(self.world, self.player) diff --git a/worlds/pokemon_rb/__init__.py b/worlds/pokemon_rb/__init__.py index 11aa737e0f..5353047e3d 100644 --- a/worlds/pokemon_rb/__init__.py +++ b/worlds/pokemon_rb/__init__.py @@ -522,7 +522,7 @@ class PokemonRedBlueWorld(World): self.multiworld.elite_four_pokedex_condition[self.player].total = \ int((len(reachable_mons) / 100) * self.multiworld.elite_four_pokedex_condition[self.player].value) - if self.multiworld.accessibility[self.player] == "locations": + if self.multiworld.accessibility[self.player] == "full": balls = [self.create_item(ball) for ball in ["Poke Ball", "Great Ball", "Ultra Ball"]] traps = [self.create_item(trap) for trap in item_groups["Traps"]] locations = [location for location in self.multiworld.get_locations(self.player) if "Pokedex - " in diff --git a/worlds/pokemon_rb/options.py b/worlds/pokemon_rb/options.py index bbe660b778..f19800b7c0 100644 --- a/worlds/pokemon_rb/options.py +++ b/worlds/pokemon_rb/options.py @@ -1,4 +1,4 @@ -from Options import Choice, DeathLink, Range, SpecialRange, TextChoice, Toggle +from Options import Choice, DeathLink, ItemsAccessibility, Range, SpecialRange, TextChoice, Toggle class GameVersion(Choice): diff --git a/worlds/pokemon_rb/pokemon.py b/worlds/pokemon_rb/pokemon.py index 267f424ca8..5005e5b7a4 100644 --- a/worlds/pokemon_rb/pokemon.py +++ b/worlds/pokemon_rb/pokemon.py @@ -323,12 +323,12 @@ def process_pokemon_data(self): mon_data["tms"][int(flag / 8)] &= ~(1 << (flag % 8)) hm_verify = ["Surf", "Strength"] - if self.multiworld.accessibility[self.player] == "locations" or ((not + if self.multiworld.accessibility[self.player] == "full" or ((not self.multiworld.badgesanity[self.player]) and max(self.multiworld.elite_four_badges_condition[self.player], self.multiworld.route_22_gate_condition[self.player], self.multiworld.victory_road_condition[self.player]) > 7) or (self.multiworld.door_shuffle[self.player] not in ("off", "simple")): hm_verify += ["Cut"] - if self.multiworld.accessibility[self.player] == "locations" or (not + if self.multiworld.accessibility[self.player] == "full" or (not self.multiworld.dark_rock_tunnel_logic[self.player]) and ((self.multiworld.trainersanity[self.player] or self.multiworld.extra_key_items[self.player]) or self.multiworld.door_shuffle[self.player]):