LADX: more item groups, location groups, keysanity preset (#3936)
* add groups and a preset * formatting * typing * alias groups for progressive items * add bush breakers item group * fix typo * some manual location groups * drop dummy dungeon items from groups
This commit is contained in:
parent
d80069385d
commit
4d42814f5d
|
@ -303,3 +303,135 @@ ladxr_item_to_la_item_name = {
|
||||||
links_awakening_items_by_name = {
|
links_awakening_items_by_name = {
|
||||||
item.item_name : item for item in links_awakening_items
|
item.item_name : item for item in links_awakening_items
|
||||||
}
|
}
|
||||||
|
|
||||||
|
links_awakening_item_name_groups: typing.Dict[str, typing.Set[str]] = {
|
||||||
|
"Instruments": {
|
||||||
|
"Full Moon Cello",
|
||||||
|
"Conch Horn",
|
||||||
|
"Sea Lily's Bell",
|
||||||
|
"Surf Harp",
|
||||||
|
"Wind Marimba",
|
||||||
|
"Coral Triangle",
|
||||||
|
"Organ of Evening Calm",
|
||||||
|
"Thunder Drum",
|
||||||
|
},
|
||||||
|
"Entrance Keys": {
|
||||||
|
"Tail Key",
|
||||||
|
"Angler Key",
|
||||||
|
"Face Key",
|
||||||
|
"Bird Key",
|
||||||
|
"Slime Key",
|
||||||
|
},
|
||||||
|
"Nightmare Keys": {
|
||||||
|
"Nightmare Key (Angler's Tunnel)",
|
||||||
|
"Nightmare Key (Bottle Grotto)",
|
||||||
|
"Nightmare Key (Catfish's Maw)",
|
||||||
|
"Nightmare Key (Color Dungeon)",
|
||||||
|
"Nightmare Key (Eagle's Tower)",
|
||||||
|
"Nightmare Key (Face Shrine)",
|
||||||
|
"Nightmare Key (Key Cavern)",
|
||||||
|
"Nightmare Key (Tail Cave)",
|
||||||
|
"Nightmare Key (Turtle Rock)",
|
||||||
|
},
|
||||||
|
"Small Keys": {
|
||||||
|
"Small Key (Angler's Tunnel)",
|
||||||
|
"Small Key (Bottle Grotto)",
|
||||||
|
"Small Key (Catfish's Maw)",
|
||||||
|
"Small Key (Color Dungeon)",
|
||||||
|
"Small Key (Eagle's Tower)",
|
||||||
|
"Small Key (Face Shrine)",
|
||||||
|
"Small Key (Key Cavern)",
|
||||||
|
"Small Key (Tail Cave)",
|
||||||
|
"Small Key (Turtle Rock)",
|
||||||
|
},
|
||||||
|
"Compasses": {
|
||||||
|
"Compass (Angler's Tunnel)",
|
||||||
|
"Compass (Bottle Grotto)",
|
||||||
|
"Compass (Catfish's Maw)",
|
||||||
|
"Compass (Color Dungeon)",
|
||||||
|
"Compass (Eagle's Tower)",
|
||||||
|
"Compass (Face Shrine)",
|
||||||
|
"Compass (Key Cavern)",
|
||||||
|
"Compass (Tail Cave)",
|
||||||
|
"Compass (Turtle Rock)",
|
||||||
|
},
|
||||||
|
"Maps": {
|
||||||
|
"Dungeon Map (Angler's Tunnel)",
|
||||||
|
"Dungeon Map (Bottle Grotto)",
|
||||||
|
"Dungeon Map (Catfish's Maw)",
|
||||||
|
"Dungeon Map (Color Dungeon)",
|
||||||
|
"Dungeon Map (Eagle's Tower)",
|
||||||
|
"Dungeon Map (Face Shrine)",
|
||||||
|
"Dungeon Map (Key Cavern)",
|
||||||
|
"Dungeon Map (Tail Cave)",
|
||||||
|
"Dungeon Map (Turtle Rock)",
|
||||||
|
},
|
||||||
|
"Stone Beaks": {
|
||||||
|
"Stone Beak (Angler's Tunnel)",
|
||||||
|
"Stone Beak (Bottle Grotto)",
|
||||||
|
"Stone Beak (Catfish's Maw)",
|
||||||
|
"Stone Beak (Color Dungeon)",
|
||||||
|
"Stone Beak (Eagle's Tower)",
|
||||||
|
"Stone Beak (Face Shrine)",
|
||||||
|
"Stone Beak (Key Cavern)",
|
||||||
|
"Stone Beak (Tail Cave)",
|
||||||
|
"Stone Beak (Turtle Rock)",
|
||||||
|
},
|
||||||
|
"Trading Items": {
|
||||||
|
"Yoshi Doll",
|
||||||
|
"Ribbon",
|
||||||
|
"Dog Food",
|
||||||
|
"Bananas",
|
||||||
|
"Stick",
|
||||||
|
"Honeycomb",
|
||||||
|
"Pineapple",
|
||||||
|
"Hibiscus",
|
||||||
|
"Letter",
|
||||||
|
"Broom",
|
||||||
|
"Fishing Hook",
|
||||||
|
"Necklace",
|
||||||
|
"Scale",
|
||||||
|
"Magnifying Glass",
|
||||||
|
},
|
||||||
|
"Rupees": {
|
||||||
|
"20 Rupees",
|
||||||
|
"50 Rupees",
|
||||||
|
"100 Rupees",
|
||||||
|
"200 Rupees",
|
||||||
|
"500 Rupees",
|
||||||
|
},
|
||||||
|
"Upgrades": {
|
||||||
|
"Max Powder Upgrade",
|
||||||
|
"Max Bombs Upgrade",
|
||||||
|
"Max Arrows Upgrade",
|
||||||
|
},
|
||||||
|
"Songs": {
|
||||||
|
"Ballad of the Wind Fish",
|
||||||
|
"Manbo's Mambo",
|
||||||
|
"Frog's Song of Soul",
|
||||||
|
},
|
||||||
|
"Tunics": {
|
||||||
|
"Red Tunic",
|
||||||
|
"Blue Tunic",
|
||||||
|
},
|
||||||
|
"Bush Breakers": {
|
||||||
|
"Progressive Power Bracelet",
|
||||||
|
"Magic Rod",
|
||||||
|
"Magic Powder",
|
||||||
|
"Bomb",
|
||||||
|
"Progressive Sword",
|
||||||
|
"Boomerang",
|
||||||
|
},
|
||||||
|
"Sword": {
|
||||||
|
"Progressive Sword",
|
||||||
|
},
|
||||||
|
"Shield": {
|
||||||
|
"Progressive Shield",
|
||||||
|
},
|
||||||
|
"Power Bracelet": {
|
||||||
|
"Progressive Power Bracelet",
|
||||||
|
},
|
||||||
|
"Bracelet": {
|
||||||
|
"Progressive Power Bracelet",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from BaseClasses import Region, Entrance, Location, CollectionState
|
from BaseClasses import Region, Entrance, Location, CollectionState
|
||||||
|
import typing
|
||||||
|
|
||||||
from .LADXR.checkMetadata import checkMetadataTable
|
from .LADXR.checkMetadata import checkMetadataTable
|
||||||
from .Common import *
|
from .Common import *
|
||||||
|
@ -25,6 +25,39 @@ links_awakening_dungeon_names = [
|
||||||
def meta_to_name(meta):
|
def meta_to_name(meta):
|
||||||
return f"{meta.name} ({meta.area})"
|
return f"{meta.name} ({meta.area})"
|
||||||
|
|
||||||
|
def get_location_name_groups() -> typing.Dict[str, typing.Set[str]]:
|
||||||
|
groups = {
|
||||||
|
"Instrument Pedestals": {
|
||||||
|
"Full Moon Cello (Tail Cave)",
|
||||||
|
"Conch Horn (Bottle Grotto)",
|
||||||
|
"Sea Lily's Bell (Key Cavern)",
|
||||||
|
"Surf Harp (Angler's Tunnel)",
|
||||||
|
"Wind Marimba (Catfish's Maw)",
|
||||||
|
"Coral Triangle (Face Shrine)",
|
||||||
|
"Organ of Evening Calm (Eagle's Tower)",
|
||||||
|
"Thunder Drum (Turtle Rock)",
|
||||||
|
},
|
||||||
|
"Boss Rewards": {
|
||||||
|
"Moldorm Heart Container (Tail Cave)",
|
||||||
|
"Genie Heart Container (Bottle Grotto)",
|
||||||
|
"Slime Eye Heart Container (Key Cavern)",
|
||||||
|
"Angler Fish Heart Container (Angler's Tunnel)",
|
||||||
|
"Slime Eel Heart Container (Catfish's Maw)",
|
||||||
|
"Facade Heart Container (Face Shrine)",
|
||||||
|
"Evil Eagle Heart Container (Eagle's Tower)",
|
||||||
|
"Hot Head Heart Container (Turtle Rock)",
|
||||||
|
"Tunic Fairy Item 1 (Color Dungeon)",
|
||||||
|
"Tunic Fairy Item 2 (Color Dungeon)",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
# Add region groups
|
||||||
|
for s, v in checkMetadataTable.items():
|
||||||
|
if s == "None":
|
||||||
|
continue
|
||||||
|
groups.setdefault(v.area, set()).add(meta_to_name(v))
|
||||||
|
return groups
|
||||||
|
|
||||||
|
links_awakening_location_name_groups = get_location_name_groups()
|
||||||
|
|
||||||
def get_locations_to_id():
|
def get_locations_to_id():
|
||||||
ret = {
|
ret = {
|
||||||
|
|
|
@ -13,7 +13,8 @@ from Fill import fill_restrictive
|
||||||
from worlds.AutoWorld import WebWorld, World
|
from worlds.AutoWorld import WebWorld, World
|
||||||
from .Common import *
|
from .Common import *
|
||||||
from .Items import (DungeonItemData, DungeonItemType, ItemName, LinksAwakeningItem, TradeItemData,
|
from .Items import (DungeonItemData, DungeonItemType, ItemName, LinksAwakeningItem, TradeItemData,
|
||||||
ladxr_item_to_la_item_name, links_awakening_items, links_awakening_items_by_name)
|
ladxr_item_to_la_item_name, links_awakening_items, links_awakening_items_by_name,
|
||||||
|
links_awakening_item_name_groups)
|
||||||
from .LADXR import generator
|
from .LADXR import generator
|
||||||
from .LADXR.itempool import ItemPool as LADXRItemPool
|
from .LADXR.itempool import ItemPool as LADXRItemPool
|
||||||
from .LADXR.locations.constants import CHEST_ITEMS
|
from .LADXR.locations.constants import CHEST_ITEMS
|
||||||
|
@ -23,7 +24,8 @@ from .LADXR.main import get_parser
|
||||||
from .LADXR.settings import Settings as LADXRSettings
|
from .LADXR.settings import Settings as LADXRSettings
|
||||||
from .LADXR.worldSetup import WorldSetup as LADXRWorldSetup
|
from .LADXR.worldSetup import WorldSetup as LADXRWorldSetup
|
||||||
from .Locations import (LinksAwakeningLocation, LinksAwakeningRegion,
|
from .Locations import (LinksAwakeningLocation, LinksAwakeningRegion,
|
||||||
create_regions_from_ladxr, get_locations_to_id)
|
create_regions_from_ladxr, get_locations_to_id,
|
||||||
|
links_awakening_location_name_groups)
|
||||||
from .Options import DungeonItemShuffle, ShuffleInstruments, LinksAwakeningOptions, ladx_option_groups
|
from .Options import DungeonItemShuffle, ShuffleInstruments, LinksAwakeningOptions, ladx_option_groups
|
||||||
from .Rom import LADXDeltaPatch, get_base_rom_path
|
from .Rom import LADXDeltaPatch, get_base_rom_path
|
||||||
|
|
||||||
|
@ -66,6 +68,15 @@ class LinksAwakeningWebWorld(WebWorld):
|
||||||
)]
|
)]
|
||||||
theme = "dirt"
|
theme = "dirt"
|
||||||
option_groups = ladx_option_groups
|
option_groups = ladx_option_groups
|
||||||
|
options_presets: typing.Dict[str, typing.Dict[str, typing.Any]] = {
|
||||||
|
"Keysanity": {
|
||||||
|
"shuffle_nightmare_keys": "any_world",
|
||||||
|
"shuffle_small_keys": "any_world",
|
||||||
|
"shuffle_maps": "any_world",
|
||||||
|
"shuffle_compasses": "any_world",
|
||||||
|
"shuffle_stone_beaks": "any_world",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class LinksAwakeningWorld(World):
|
class LinksAwakeningWorld(World):
|
||||||
"""
|
"""
|
||||||
|
@ -98,12 +109,9 @@ class LinksAwakeningWorld(World):
|
||||||
|
|
||||||
# Items can be grouped using their names to allow easy checking if any item
|
# Items can be grouped using their names to allow easy checking if any item
|
||||||
# from that group has been collected. Group names can also be used for !hint
|
# from that group has been collected. Group names can also be used for !hint
|
||||||
item_name_groups = {
|
item_name_groups = links_awakening_item_name_groups
|
||||||
"Instruments": {
|
|
||||||
"Full Moon Cello", "Conch Horn", "Sea Lily's Bell", "Surf Harp",
|
location_name_groups = links_awakening_location_name_groups
|
||||||
"Wind Marimba", "Coral Triangle", "Organ of Evening Calm", "Thunder Drum"
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
prefill_dungeon_items = None
|
prefill_dungeon_items = None
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue