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
|
@ -26,7 +26,7 @@ class DungeonItemData(ItemData):
|
|||
@property
|
||||
def dungeon_index(self):
|
||||
return int(self.ladxr_id[-1])
|
||||
|
||||
|
||||
@property
|
||||
def dungeon_item_type(self):
|
||||
s = self.ladxr_id[:-1]
|
||||
|
@ -174,7 +174,7 @@ class ItemName:
|
|||
TRADING_ITEM_SCALE = "Scale"
|
||||
TRADING_ITEM_MAGNIFYING_GLASS = "Magnifying Glass"
|
||||
|
||||
trade_item_prog = ItemClassification.progression
|
||||
trade_item_prog = ItemClassification.progression
|
||||
|
||||
links_awakening_items = [
|
||||
ItemData(ItemName.POWER_BRACELET, "POWER_BRACELET", ItemClassification.progression),
|
||||
|
@ -303,3 +303,135 @@ ladxr_item_to_la_item_name = {
|
|||
links_awakening_items_by_name = {
|
||||
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
|
||||
|
||||
import typing
|
||||
|
||||
from .LADXR.checkMetadata import checkMetadataTable
|
||||
from .Common import *
|
||||
|
@ -25,6 +25,39 @@ links_awakening_dungeon_names = [
|
|||
def meta_to_name(meta):
|
||||
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():
|
||||
ret = {
|
||||
|
|
|
@ -13,7 +13,8 @@ from Fill import fill_restrictive
|
|||
from worlds.AutoWorld import WebWorld, World
|
||||
from .Common import *
|
||||
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.itempool import ItemPool as LADXRItemPool
|
||||
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.worldSetup import WorldSetup as LADXRWorldSetup
|
||||
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 .Rom import LADXDeltaPatch, get_base_rom_path
|
||||
|
||||
|
@ -66,6 +68,15 @@ class LinksAwakeningWebWorld(WebWorld):
|
|||
)]
|
||||
theme = "dirt"
|
||||
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):
|
||||
"""
|
||||
|
@ -98,12 +109,9 @@ class LinksAwakeningWorld(World):
|
|||
|
||||
# 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
|
||||
item_name_groups = {
|
||||
"Instruments": {
|
||||
"Full Moon Cello", "Conch Horn", "Sea Lily's Bell", "Surf Harp",
|
||||
"Wind Marimba", "Coral Triangle", "Organ of Evening Calm", "Thunder Drum"
|
||||
},
|
||||
}
|
||||
item_name_groups = links_awakening_item_name_groups
|
||||
|
||||
location_name_groups = links_awakening_location_name_groups
|
||||
|
||||
prefill_dungeon_items = None
|
||||
|
||||
|
|
Loading…
Reference in New Issue