diff --git a/worlds/adventure/Regions.py b/worlds/adventure/Regions.py index 4a62518fbd..26e0a93160 100644 --- a/worlds/adventure/Regions.py +++ b/worlds/adventure/Regions.py @@ -1,5 +1,6 @@ from BaseClasses import MultiWorld, Region, Entrance, LocationProgressType from .Locations import location_table, LocationData, AdventureLocation, dragon_room_to_region +from Options import PerGameCommonOptions def connect(world: MultiWorld, player: int, source: str, target: str, rule: callable = lambda state: True, @@ -24,7 +25,7 @@ def connect(world: MultiWorld, player: int, source: str, target: str, rule: call connect(world, player, target, source, rule, True) -def create_regions(multiworld: MultiWorld, player: int, dragon_rooms: []) -> None: +def create_regions(options: PerGameCommonOptions, multiworld: MultiWorld, player: int, dragon_rooms: []) -> None: for name, locdata in location_table.items(): locdata.get_position(multiworld.random) @@ -76,7 +77,7 @@ def create_regions(multiworld: MultiWorld, player: int, dragon_rooms: []) -> Non credits_room_far_side.exits.append(Entrance(player, "CreditsFromFarSide", credits_room_far_side)) multiworld.regions.append(credits_room_far_side) - dragon_slay_check = multiworld.dragon_slay_check[player].value + dragon_slay_check = options.dragon_slay_check.value priority_locations = determine_priority_locations(multiworld, dragon_slay_check) for name, location_data in location_table.items(): diff --git a/worlds/adventure/Rules.py b/worlds/adventure/Rules.py index 6f4b53faa1..96354e9b05 100644 --- a/worlds/adventure/Rules.py +++ b/worlds/adventure/Rules.py @@ -6,7 +6,8 @@ from BaseClasses import LocationProgressType def set_rules(self) -> None: world = self.multiworld - use_bat_logic = world.bat_logic[self.player].value == BatLogic.option_use_logic + options = self.options + use_bat_logic = options.bat_logic.value == BatLogic.option_use_logic set_rule(world.get_entrance("YellowCastlePort", self.player), lambda state: state.has("Yellow Key", self.player)) @@ -28,7 +29,7 @@ def set_rules(self) -> None: lambda state: state.has("Bridge", self.player) or state.has("Magnet", self.player)) - dragon_slay_check = world.dragon_slay_check[self.player].value + dragon_slay_check = options.dragon_slay_check.value if dragon_slay_check: if self.difficulty_switch_b == DifficultySwitchB.option_hard_with_unlock_item: set_rule(world.get_location("Slay Yorgle", self.player), diff --git a/worlds/adventure/__init__.py b/worlds/adventure/__init__.py index 105725bd05..14ffe2a23f 100644 --- a/worlds/adventure/__init__.py +++ b/worlds/adventure/__init__.py @@ -150,18 +150,18 @@ class AdventureWorld(World): bytearray(f"ADVENTURE{__version__.replace('.', '')[:3]}_{self.player}_{self.multiworld.seed}", "utf8")[:21] self.rom_name.extend([0] * (21 - len(self.rom_name))) - self.dragon_rando_type = self.multiworld.dragon_rando_type[self.player].value - self.dragon_slay_check = self.multiworld.dragon_slay_check[self.player].value - self.connector_multi_slot = self.multiworld.connector_multi_slot[self.player].value - self.yorgle_speed = self.multiworld.yorgle_speed[self.player].value - self.yorgle_min_speed = self.multiworld.yorgle_min_speed[self.player].value - self.grundle_speed = self.multiworld.grundle_speed[self.player].value - self.grundle_min_speed = self.multiworld.grundle_min_speed[self.player].value - self.rhindle_speed = self.multiworld.rhindle_speed[self.player].value - self.rhindle_min_speed = self.multiworld.rhindle_min_speed[self.player].value - self.difficulty_switch_a = self.multiworld.difficulty_switch_a[self.player].value - self.difficulty_switch_b = self.multiworld.difficulty_switch_b[self.player].value - self.start_castle = self.multiworld.start_castle[self.player].value + self.dragon_rando_type = self.options.dragon_rando_type.value + self.dragon_slay_check = self.options.dragon_slay_check.value + self.connector_multi_slot = self.options.connector_multi_slot.value + self.yorgle_speed = self.options.yorgle_speed.value + self.yorgle_min_speed = self.options.yorgle_min_speed.value + self.grundle_speed = self.options.grundle_speed.value + self.grundle_min_speed = self.options.grundle_min_speed.value + self.rhindle_speed = self.options.rhindle_speed.value + self.rhindle_min_speed = self.options.rhindle_min_speed.value + self.difficulty_switch_a = self.options.difficulty_switch_a.value + self.difficulty_switch_b = self.options.difficulty_switch_b.value + self.start_castle = self.options.start_castle.value self.created_items = 0 if self.dragon_slay_check == 0: @@ -228,7 +228,7 @@ class AdventureWorld(World): extra_filler_count = num_locations - self.created_items # traps would probably go here, if enabled - freeincarnate_max = self.multiworld.freeincarnate_max[self.player].value + freeincarnate_max = self.options.freeincarnate_max.value actual_freeincarnates = min(extra_filler_count, freeincarnate_max) self.multiworld.itempool += [self.create_item("Freeincarnate") for _ in range(actual_freeincarnates)] self.created_items += actual_freeincarnates @@ -248,7 +248,7 @@ class AdventureWorld(World): self.created_items += 1 def create_regions(self) -> None: - create_regions(self.multiworld, self.player, self.dragon_rooms) + create_regions(self.options, self.multiworld, self.player, self.dragon_rooms) set_rules = set_rules @@ -355,7 +355,7 @@ class AdventureWorld(World): auto_collect_locations: [AdventureAutoCollectLocation] = [] local_item_to_location: {int, int} = {} bat_no_touch_locs: [LocationData] = [] - bat_logic: int = self.multiworld.bat_logic[self.player].value + bat_logic: int = self.options.bat_logic.value try: rom_deltas: { int, int } = {} self.place_dragons(rom_deltas) @@ -411,7 +411,7 @@ class AdventureWorld(World): item_position_data_start = get_item_position_data_start(unplaced_item.table_index) rom_deltas[item_position_data_start] = 0xff - if self.multiworld.connector_multi_slot[self.player].value: + if self.options.connector_multi_slot.value: rom_deltas[connector_port_offset] = (self.player & 0xff) else: rom_deltas[connector_port_offset] = 0