mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-05-26 21:19:55 -07:00
Core: Refactor Autoworld.options to Autoworld.option_definitions (#906)
* refactor `world.options` -> `world.option_definitions` * rename world api reference * missed some self.options
This commit is contained in:
+1
-1
@@ -111,7 +111,7 @@ class World(metaclass=AutoWorldRegister):
|
||||
"""A World object encompasses a game's Items, Locations, Rules and additional data or functionality required.
|
||||
A Game should have its own subclass of World in which it defines the required data structures."""
|
||||
|
||||
options: Dict[str, Option[Any]] = {} # link your Options mapping
|
||||
option_definitions: Dict[str, Option[Any]] = {} # link your Options mapping
|
||||
game: str # name the game
|
||||
topology_present: bool = False # indicate if world type has any meaningful layout/pathing
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ class ALTTPWorld(World):
|
||||
Ganon!
|
||||
"""
|
||||
game: str = "A Link to the Past"
|
||||
options = alttp_options
|
||||
option_definitions = alttp_options
|
||||
topology_present = True
|
||||
item_name_groups = item_name_groups
|
||||
hint_blacklist = {"Triforce"}
|
||||
|
||||
@@ -27,7 +27,7 @@ class ChecksFinderWorld(World):
|
||||
with the mines! You win when you get all your items and beat the board!
|
||||
"""
|
||||
game: str = "ChecksFinder"
|
||||
options = checksfinder_options
|
||||
option_definitions = checksfinder_options
|
||||
topology_present = True
|
||||
web = ChecksFinderWeb()
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ class DarkSouls3World(World):
|
||||
"""
|
||||
|
||||
game: str = "Dark Souls III"
|
||||
options = dark_souls_options
|
||||
option_definitions = dark_souls_options
|
||||
topology_present: bool = True
|
||||
remote_items: bool = False
|
||||
remote_start_inventory: bool = False
|
||||
|
||||
@@ -38,7 +38,7 @@ class DKC3World(World):
|
||||
mystery of why Donkey Kong and Diddy disappeared while on vacation.
|
||||
"""
|
||||
game: str = "Donkey Kong Country 3"
|
||||
options = dkc3_options
|
||||
option_definitions = dkc3_options
|
||||
topology_present = False
|
||||
data_version = 1
|
||||
#hint_blacklist = {LocationName.rocket_rush_flag}
|
||||
|
||||
@@ -193,7 +193,7 @@ class Factorio(World):
|
||||
|
||||
return super(Factorio, self).collect_item(state, item, remove)
|
||||
|
||||
options = factorio_options
|
||||
option_definitions = factorio_options
|
||||
|
||||
@classmethod
|
||||
def stage_write_spoiler(cls, world, spoiler_handle):
|
||||
|
||||
@@ -27,7 +27,7 @@ class FF1World(World):
|
||||
Part puzzle and part speed-run, it breathes new life into one of the most influential games ever made.
|
||||
"""
|
||||
|
||||
options = ff1_options
|
||||
option_definitions = ff1_options
|
||||
game = "Final Fantasy"
|
||||
topology_present = False
|
||||
remote_items = True
|
||||
|
||||
@@ -142,7 +142,7 @@ class HKWorld(World):
|
||||
As the enigmatic Knight, you’ll traverse the depths, unravel its mysteries and conquer its evils.
|
||||
""" # from https://www.hollowknight.com
|
||||
game: str = "Hollow Knight"
|
||||
options = hollow_knight_options
|
||||
option_definitions = hollow_knight_options
|
||||
|
||||
web = HKWeb()
|
||||
|
||||
@@ -435,7 +435,7 @@ class HKWorld(World):
|
||||
slot_data = {}
|
||||
|
||||
options = slot_data["options"] = {}
|
||||
for option_name in self.options:
|
||||
for option_name in self.option_definitions:
|
||||
option = getattr(self.world, option_name)[self.player]
|
||||
try:
|
||||
optionvalue = int(option.value)
|
||||
|
||||
@@ -49,7 +49,7 @@ class MeritousWorld(World):
|
||||
# NOTE: Remember to change this before this game goes live
|
||||
required_client_version = (0, 2, 4)
|
||||
|
||||
options = meritous_options
|
||||
option_definitions = meritous_options
|
||||
|
||||
def __init__(self, world: MultiWorld, player: int):
|
||||
super(MeritousWorld, self).__init__(world, player)
|
||||
|
||||
@@ -58,7 +58,7 @@ class MinecraftWorld(World):
|
||||
victory!
|
||||
"""
|
||||
game: str = "Minecraft"
|
||||
options = minecraft_options
|
||||
option_definitions = minecraft_options
|
||||
topology_present = True
|
||||
web = MinecraftWebWorld()
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ class OOTWorld(World):
|
||||
to rescue the Seven Sages, and then confront Ganondorf to save Hyrule!
|
||||
"""
|
||||
game: str = "Ocarina of Time"
|
||||
options: dict = oot_options
|
||||
option_definitions: dict = oot_options
|
||||
topology_present: bool = True
|
||||
item_name_to_id = {item_name: oot_data_to_ap_id(data, False) for item_name, data in item_table.items() if
|
||||
data[2] is not None}
|
||||
|
||||
@@ -17,7 +17,7 @@ class OriBlindForest(World):
|
||||
item_name_to_id = item_table
|
||||
location_name_to_id = lookup_name_to_id
|
||||
|
||||
options = options
|
||||
option_definitions = options
|
||||
|
||||
hidden = True
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ class RaftWorld(World):
|
||||
lastItemId = max(filter(lambda val: val is not None, item_name_to_id.values()))
|
||||
|
||||
location_name_to_id = locations_lookup_name_to_id
|
||||
options = raft_options
|
||||
option_definitions = raft_options
|
||||
|
||||
data_version = 2
|
||||
required_client_version = (0, 3, 4)
|
||||
|
||||
@@ -30,7 +30,7 @@ class LegacyWorld(World):
|
||||
But that's OK, because no one is perfect, and you don't have to be to succeed.
|
||||
"""
|
||||
game: str = "Rogue Legacy"
|
||||
options = legacy_options
|
||||
option_definitions = legacy_options
|
||||
topology_present = False
|
||||
data_version = 3
|
||||
required_client_version = (0, 2, 3)
|
||||
|
||||
@@ -28,7 +28,7 @@ class RiskOfRainWorld(World):
|
||||
first crash landing.
|
||||
"""
|
||||
game: str = "Risk of Rain 2"
|
||||
options = ror2_options
|
||||
option_definitions = ror2_options
|
||||
topology_present = False
|
||||
|
||||
item_name_to_id = item_table
|
||||
|
||||
@@ -49,7 +49,7 @@ class SA2BWorld(World):
|
||||
Sonic Adventure 2 Battle is an action platforming game. Play as Sonic, Tails, Knuckles, Shadow, Rogue, and Eggman across 31 stages and prevent the destruction of the earth.
|
||||
"""
|
||||
game: str = "Sonic Adventure 2 Battle"
|
||||
options = sa2b_options
|
||||
option_definitions = sa2b_options
|
||||
topology_present = False
|
||||
data_version = 2
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ class SC2WoLWorld(World):
|
||||
|
||||
item_name_to_id = {name: data.code for name, data in item_table.items()}
|
||||
location_name_to_id = {location.name: location.code for location in get_locations(None, None)}
|
||||
options = sc2wol_options
|
||||
option_definitions = sc2wol_options
|
||||
|
||||
item_name_groups = item_name_groups
|
||||
locked_locations: typing.List[str]
|
||||
|
||||
@@ -79,7 +79,7 @@ class SMWorld(World):
|
||||
game: str = "Super Metroid"
|
||||
topology_present = True
|
||||
data_version = 1
|
||||
options = sm_options
|
||||
option_definitions = sm_options
|
||||
item_names: Set[str] = frozenset(items_lookup_name_to_id)
|
||||
location_names: Set[str] = frozenset(locations_lookup_name_to_id)
|
||||
item_name_to_id = items_lookup_name_to_id
|
||||
@@ -567,7 +567,7 @@ class SMWorld(World):
|
||||
def fill_slot_data(self):
|
||||
slot_data = {}
|
||||
if not self.world.is_race:
|
||||
for option_name in self.options:
|
||||
for option_name in self.option_definitions:
|
||||
option = getattr(self.world, option_name)[self.player]
|
||||
slot_data[option_name] = option.value
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ class SM64World(World):
|
||||
|
||||
area_connections: typing.Dict[int, int]
|
||||
|
||||
options = sm64_options
|
||||
option_definitions = sm64_options
|
||||
|
||||
def generate_early(self):
|
||||
self.topology_present = self.world.AreaRandomizer[self.player].value
|
||||
|
||||
@@ -62,7 +62,7 @@ class SMZ3World(World):
|
||||
game: str = "SMZ3"
|
||||
topology_present = False
|
||||
data_version = 2
|
||||
options = smz3_options
|
||||
option_definitions = smz3_options
|
||||
item_names: Set[str] = frozenset(TotalSMZ3Item.lookup_name_to_id)
|
||||
location_names: Set[str]
|
||||
item_name_to_id = TotalSMZ3Item.lookup_name_to_id
|
||||
|
||||
@@ -151,7 +151,7 @@ class SoEWorld(World):
|
||||
space station where the final boss must be defeated.
|
||||
"""
|
||||
game: str = "Secret of Evermore"
|
||||
options = soe_options
|
||||
option_definitions = soe_options
|
||||
topology_present = False
|
||||
remote_items = False
|
||||
data_version = 3
|
||||
@@ -162,7 +162,7 @@ class SoEWorld(World):
|
||||
location_name_to_id, location_id_to_raw = _get_location_mapping()
|
||||
item_name_groups = _get_item_grouping()
|
||||
|
||||
trap_types = [name[12:] for name in options if name.startswith('trap_chance_')]
|
||||
trap_types = [name[12:] for name in option_definitions if name.startswith('trap_chance_')]
|
||||
|
||||
evermizer_seed: int
|
||||
connect_name: str
|
||||
@@ -339,7 +339,7 @@ class SoEWorld(World):
|
||||
placement_file = out_base + '.txt'
|
||||
patch_file = out_base + '.apsoe'
|
||||
flags = 'l' # spoiler log
|
||||
for option_name in self.options:
|
||||
for option_name in self.option_definitions:
|
||||
option = getattr(self.world, option_name)[self.player]
|
||||
if hasattr(option, 'to_flag'):
|
||||
flags += option.to_flag()
|
||||
|
||||
@@ -27,7 +27,7 @@ class SpireWorld(World):
|
||||
immense power, and Slay the Spire!
|
||||
"""
|
||||
|
||||
options = spire_options
|
||||
option_definitions = spire_options
|
||||
game = "Slay the Spire"
|
||||
topology_present = False
|
||||
data_version = 1
|
||||
|
||||
@@ -39,7 +39,7 @@ class SubnauticaWorld(World):
|
||||
|
||||
item_name_to_id = {data["name"]: item_id for item_id, data in Items.item_table.items()}
|
||||
location_name_to_id = all_locations
|
||||
options = Options.options
|
||||
option_definitions = Options.options
|
||||
|
||||
data_version = 5
|
||||
required_client_version = (0, 3, 4)
|
||||
|
||||
@@ -40,7 +40,7 @@ class TimespinnerWorld(World):
|
||||
Travel back in time to change fate itself. Join timekeeper Lunais on her quest for revenge against the empire that killed her family.
|
||||
"""
|
||||
|
||||
options = timespinner_options
|
||||
option_definitions = timespinner_options
|
||||
game = "Timespinner"
|
||||
topology_present = True
|
||||
remote_items = False
|
||||
|
||||
@@ -41,7 +41,7 @@ class V6World(World):
|
||||
|
||||
music_map: typing.Dict[int,int]
|
||||
|
||||
options = v6_options
|
||||
option_definitions = v6_options
|
||||
|
||||
def create_regions(self):
|
||||
create_regions(self.world,self.player)
|
||||
|
||||
@@ -41,7 +41,7 @@ class WitnessWorld(World):
|
||||
static_locat = StaticWitnessLocations()
|
||||
static_items = StaticWitnessItems()
|
||||
web = WitnessWebWorld()
|
||||
options = the_witness_options
|
||||
option_definitions = the_witness_options
|
||||
|
||||
item_name_to_id = {
|
||||
name: data.code for name, data in static_items.ALL_ITEM_TABLE.items()
|
||||
|
||||
Reference in New Issue
Block a user