TUNIC: Location groups for each area of the game (#3024)
* huzzah, location groups * scope creep pog * Apply suggestion to the other spot it is applicable at too * apply berserker's suggestion Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com> * Remove extra location group for shops * Fire rod for magic wand * Capitalize itme name groups * Update docs to capitalize item name groups, remove the little section on aliases since the aliases bit is really more for someone misremembering the name than anything else, like "fire rod" is because you played a lot of LttP, or Orb instead of Magic Orb is clear. * Fix rule with item group name * Capitalization is cool * Fix merge mistake * Add Flask group, remove Potions group * Update docs to detail how to find item and location groups * Revise per Vi's comment * Fix test * fuzzy matching please stop * Remove test change that was meant for a different branch --------- Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
This commit is contained in:
parent
07d9d6165e
commit
c64c80aac0
|
@ -140,7 +140,7 @@ class TunicWorld(World):
|
||||||
if self.options.shuffle_ladders:
|
if self.options.shuffle_ladders:
|
||||||
ladder_count = 0
|
ladder_count = 0
|
||||||
for item_name, item_data in item_table.items():
|
for item_name, item_data in item_table.items():
|
||||||
if item_data.item_group == "ladders":
|
if item_data.item_group == "Ladders":
|
||||||
items_to_create[item_name] = 1
|
items_to_create[item_name] = 1
|
||||||
ladder_count += 1
|
ladder_count += 1
|
||||||
remove_filler(ladder_count)
|
remove_filler(ladder_count)
|
||||||
|
@ -259,7 +259,7 @@ class TunicWorld(World):
|
||||||
name, connection = connection
|
name, connection = connection
|
||||||
# for LS entrances, we just want to give the portal name
|
# for LS entrances, we just want to give the portal name
|
||||||
if "(LS)" in name:
|
if "(LS)" in name:
|
||||||
name, _ = name.split(" (LS) ")
|
name = name.split(" (LS) ", 1)[0]
|
||||||
# was getting some cases like Library Grave -> Library Grave -> other place
|
# was getting some cases like Library Grave -> Library Grave -> other place
|
||||||
if name in portal_names and name != previous_name:
|
if name in portal_names and name != previous_name:
|
||||||
previous_name = name
|
previous_name = name
|
||||||
|
|
|
@ -64,11 +64,8 @@ For the Entrance Randomizer:
|
||||||
- The portal in the trophy room of the Old House is active from the start.
|
- The portal in the trophy room of the Old House is active from the start.
|
||||||
- The elevator in Cathedral is immediately usable without activating the fuse. Activating the fuse does nothing.
|
- The elevator in Cathedral is immediately usable without activating the fuse. Activating the fuse does nothing.
|
||||||
|
|
||||||
## What item groups are there?
|
## Does this game have item and location groups?
|
||||||
Bombs, consumables (non-bomb ones), weapons, melee weapons (stick and sword), keys, hexagons, offerings, hero relics, cards, golden treasures, money, pages, and abilities (the three ability pages). There are also a few groups being used for singular items: laurels, orb, dagger, magic rod, holy cross, prayer, icebolt, and progressive sword.
|
Yes! To find what they are, open up the Archipelago Text Client while connected to a TUNIC session and type in `/item_groups` or `/location_groups`.
|
||||||
|
|
||||||
## What location groups are there?
|
|
||||||
Holy cross (for all holy cross checks), fairies (for the two fairy checks), well (for the coin well checks), shop, bosses (for the bosses with checks associated with them), hero relic (for the 6 hero grave checks), and ladders (for the ladder items when you have shuffle ladders enabled).
|
|
||||||
|
|
||||||
## Is Connection Plando supported?
|
## Is Connection Plando supported?
|
||||||
Yes. The host needs to enable it in their `host.yaml`, and the player's yaml needs to contain a plando_connections block.
|
Yes. The host needs to enable it in their `host.yaml`, and the player's yaml needs to contain a plando_connections block.
|
||||||
|
|
|
@ -1452,7 +1452,7 @@ def set_er_location_rules(world: "TunicWorld", ability_unlocks: Dict[str, int])
|
||||||
|
|
||||||
# Beneath the Vault
|
# Beneath the Vault
|
||||||
set_rule(multiworld.get_location("Beneath the Fortress - Bridge", player),
|
set_rule(multiworld.get_location("Beneath the Fortress - Bridge", player),
|
||||||
lambda state: state.has_group("melee weapons", player, 1) or state.has_any({laurels, fire_wand}, player))
|
lambda state: state.has_group("Melee Weapons", player, 1) or state.has_any({laurels, fire_wand}, player))
|
||||||
set_rule(multiworld.get_location("Beneath the Fortress - Obscured Behind Waterfall", player),
|
set_rule(multiworld.get_location("Beneath the Fortress - Obscured Behind Waterfall", player),
|
||||||
lambda state: has_lantern(state, player, options))
|
lambda state: has_lantern(state, player, options))
|
||||||
|
|
||||||
|
|
|
@ -13,158 +13,158 @@ class TunicItemData(NamedTuple):
|
||||||
item_base_id = 509342400
|
item_base_id = 509342400
|
||||||
|
|
||||||
item_table: Dict[str, TunicItemData] = {
|
item_table: Dict[str, TunicItemData] = {
|
||||||
"Firecracker x2": TunicItemData(ItemClassification.filler, 3, 0, "bombs"),
|
"Firecracker x2": TunicItemData(ItemClassification.filler, 3, 0, "Bombs"),
|
||||||
"Firecracker x3": TunicItemData(ItemClassification.filler, 3, 1, "bombs"),
|
"Firecracker x3": TunicItemData(ItemClassification.filler, 3, 1, "Bombs"),
|
||||||
"Firecracker x4": TunicItemData(ItemClassification.filler, 3, 2, "bombs"),
|
"Firecracker x4": TunicItemData(ItemClassification.filler, 3, 2, "Bombs"),
|
||||||
"Firecracker x5": TunicItemData(ItemClassification.filler, 1, 3, "bombs"),
|
"Firecracker x5": TunicItemData(ItemClassification.filler, 1, 3, "Bombs"),
|
||||||
"Firecracker x6": TunicItemData(ItemClassification.filler, 2, 4, "bombs"),
|
"Firecracker x6": TunicItemData(ItemClassification.filler, 2, 4, "Bombs"),
|
||||||
"Fire Bomb x2": TunicItemData(ItemClassification.filler, 2, 5, "bombs"),
|
"Fire Bomb x2": TunicItemData(ItemClassification.filler, 2, 5, "Bombs"),
|
||||||
"Fire Bomb x3": TunicItemData(ItemClassification.filler, 1, 6, "bombs"),
|
"Fire Bomb x3": TunicItemData(ItemClassification.filler, 1, 6, "Bombs"),
|
||||||
"Ice Bomb x2": TunicItemData(ItemClassification.filler, 2, 7, "bombs"),
|
"Ice Bomb x2": TunicItemData(ItemClassification.filler, 2, 7, "Bombs"),
|
||||||
"Ice Bomb x3": TunicItemData(ItemClassification.filler, 2, 8, "bombs"),
|
"Ice Bomb x3": TunicItemData(ItemClassification.filler, 2, 8, "Bombs"),
|
||||||
"Ice Bomb x5": TunicItemData(ItemClassification.filler, 1, 9, "bombs"),
|
"Ice Bomb x5": TunicItemData(ItemClassification.filler, 1, 9, "Bombs"),
|
||||||
"Lure": TunicItemData(ItemClassification.filler, 4, 10, "consumables"),
|
"Lure": TunicItemData(ItemClassification.filler, 4, 10, "Consumables"),
|
||||||
"Lure x2": TunicItemData(ItemClassification.filler, 1, 11, "consumables"),
|
"Lure x2": TunicItemData(ItemClassification.filler, 1, 11, "Consumables"),
|
||||||
"Pepper x2": TunicItemData(ItemClassification.filler, 4, 12, "consumables"),
|
"Pepper x2": TunicItemData(ItemClassification.filler, 4, 12, "Consumables"),
|
||||||
"Ivy x3": TunicItemData(ItemClassification.filler, 2, 13, "consumables"),
|
"Ivy x3": TunicItemData(ItemClassification.filler, 2, 13, "Consumables"),
|
||||||
"Effigy": TunicItemData(ItemClassification.useful, 12, 14, "money"),
|
"Effigy": TunicItemData(ItemClassification.useful, 12, 14, "Money"),
|
||||||
"HP Berry": TunicItemData(ItemClassification.filler, 2, 15, "consumables"),
|
"HP Berry": TunicItemData(ItemClassification.filler, 2, 15, "Consumables"),
|
||||||
"HP Berry x2": TunicItemData(ItemClassification.filler, 4, 16, "consumables"),
|
"HP Berry x2": TunicItemData(ItemClassification.filler, 4, 16, "Consumables"),
|
||||||
"HP Berry x3": TunicItemData(ItemClassification.filler, 2, 17, "consumables"),
|
"HP Berry x3": TunicItemData(ItemClassification.filler, 2, 17, "Consumables"),
|
||||||
"MP Berry": TunicItemData(ItemClassification.filler, 4, 18, "consumables"),
|
"MP Berry": TunicItemData(ItemClassification.filler, 4, 18, "Consumables"),
|
||||||
"MP Berry x2": TunicItemData(ItemClassification.filler, 2, 19, "consumables"),
|
"MP Berry x2": TunicItemData(ItemClassification.filler, 2, 19, "Consumables"),
|
||||||
"MP Berry x3": TunicItemData(ItemClassification.filler, 7, 20, "consumables"),
|
"MP Berry x3": TunicItemData(ItemClassification.filler, 7, 20, "Consumables"),
|
||||||
"Fairy": TunicItemData(ItemClassification.progression, 20, 21),
|
"Fairy": TunicItemData(ItemClassification.progression, 20, 21),
|
||||||
"Stick": TunicItemData(ItemClassification.progression, 1, 22, "weapons"),
|
"Stick": TunicItemData(ItemClassification.progression, 1, 22, "Weapons"),
|
||||||
"Sword": TunicItemData(ItemClassification.progression, 3, 23, "weapons"),
|
"Sword": TunicItemData(ItemClassification.progression, 3, 23, "Weapons"),
|
||||||
"Sword Upgrade": TunicItemData(ItemClassification.progression, 4, 24, "weapons"),
|
"Sword Upgrade": TunicItemData(ItemClassification.progression, 4, 24, "Weapons"),
|
||||||
"Magic Wand": TunicItemData(ItemClassification.progression, 1, 25, "weapons"),
|
"Magic Wand": TunicItemData(ItemClassification.progression, 1, 25, "Weapons"),
|
||||||
"Magic Dagger": TunicItemData(ItemClassification.progression, 1, 26),
|
"Magic Dagger": TunicItemData(ItemClassification.progression, 1, 26),
|
||||||
"Magic Orb": TunicItemData(ItemClassification.progression, 1, 27),
|
"Magic Orb": TunicItemData(ItemClassification.progression, 1, 27),
|
||||||
"Hero's Laurels": TunicItemData(ItemClassification.progression, 1, 28),
|
"Hero's Laurels": TunicItemData(ItemClassification.progression, 1, 28),
|
||||||
"Lantern": TunicItemData(ItemClassification.progression, 1, 29),
|
"Lantern": TunicItemData(ItemClassification.progression, 1, 29),
|
||||||
"Gun": TunicItemData(ItemClassification.useful, 1, 30, "weapons"),
|
"Gun": TunicItemData(ItemClassification.useful, 1, 30, "Weapons"),
|
||||||
"Shield": TunicItemData(ItemClassification.useful, 1, 31),
|
"Shield": TunicItemData(ItemClassification.useful, 1, 31),
|
||||||
"Dath Stone": TunicItemData(ItemClassification.useful, 1, 32),
|
"Dath Stone": TunicItemData(ItemClassification.useful, 1, 32),
|
||||||
"Hourglass": TunicItemData(ItemClassification.useful, 1, 33),
|
"Hourglass": TunicItemData(ItemClassification.useful, 1, 33),
|
||||||
"Old House Key": TunicItemData(ItemClassification.progression, 1, 34, "keys"),
|
"Old House Key": TunicItemData(ItemClassification.progression, 1, 34, "Keys"),
|
||||||
"Key": TunicItemData(ItemClassification.progression, 2, 35, "keys"),
|
"Key": TunicItemData(ItemClassification.progression, 2, 35, "Keys"),
|
||||||
"Fortress Vault Key": TunicItemData(ItemClassification.progression, 1, 36, "keys"),
|
"Fortress Vault Key": TunicItemData(ItemClassification.progression, 1, 36, "Keys"),
|
||||||
"Flask Shard": TunicItemData(ItemClassification.useful, 12, 37, "potions"),
|
"Flask Shard": TunicItemData(ItemClassification.useful, 12, 37),
|
||||||
"Potion Flask": TunicItemData(ItemClassification.useful, 5, 38, "potions"),
|
"Potion Flask": TunicItemData(ItemClassification.useful, 5, 38, "Flask"),
|
||||||
"Golden Coin": TunicItemData(ItemClassification.progression, 17, 39),
|
"Golden Coin": TunicItemData(ItemClassification.progression, 17, 39),
|
||||||
"Card Slot": TunicItemData(ItemClassification.useful, 4, 40),
|
"Card Slot": TunicItemData(ItemClassification.useful, 4, 40),
|
||||||
"Red Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 1, 41, "hexagons"),
|
"Red Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 1, 41, "Hexagons"),
|
||||||
"Green Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 1, 42, "hexagons"),
|
"Green Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 1, 42, "Hexagons"),
|
||||||
"Blue Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 1, 43, "hexagons"),
|
"Blue Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 1, 43, "Hexagons"),
|
||||||
"Gold Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 0, 44, "hexagons"),
|
"Gold Questagon": TunicItemData(ItemClassification.progression_skip_balancing, 0, 44, "Hexagons"),
|
||||||
"ATT Offering": TunicItemData(ItemClassification.useful, 4, 45, "offerings"),
|
"ATT Offering": TunicItemData(ItemClassification.useful, 4, 45, "Offerings"),
|
||||||
"DEF Offering": TunicItemData(ItemClassification.useful, 4, 46, "offerings"),
|
"DEF Offering": TunicItemData(ItemClassification.useful, 4, 46, "Offerings"),
|
||||||
"Potion Offering": TunicItemData(ItemClassification.useful, 3, 47, "offerings"),
|
"Potion Offering": TunicItemData(ItemClassification.useful, 3, 47, "Offerings"),
|
||||||
"HP Offering": TunicItemData(ItemClassification.useful, 6, 48, "offerings"),
|
"HP Offering": TunicItemData(ItemClassification.useful, 6, 48, "Offerings"),
|
||||||
"MP Offering": TunicItemData(ItemClassification.useful, 3, 49, "offerings"),
|
"MP Offering": TunicItemData(ItemClassification.useful, 3, 49, "Offerings"),
|
||||||
"SP Offering": TunicItemData(ItemClassification.useful, 2, 50, "offerings"),
|
"SP Offering": TunicItemData(ItemClassification.useful, 2, 50, "Offerings"),
|
||||||
"Hero Relic - ATT": TunicItemData(ItemClassification.useful, 1, 51, "hero relics"),
|
"Hero Relic - ATT": TunicItemData(ItemClassification.useful, 1, 51, "Hero Relics"),
|
||||||
"Hero Relic - DEF": TunicItemData(ItemClassification.useful, 1, 52, "hero relics"),
|
"Hero Relic - DEF": TunicItemData(ItemClassification.useful, 1, 52, "Hero Relics"),
|
||||||
"Hero Relic - HP": TunicItemData(ItemClassification.useful, 1, 53, "hero relics"),
|
"Hero Relic - HP": TunicItemData(ItemClassification.useful, 1, 53, "Hero Relics"),
|
||||||
"Hero Relic - MP": TunicItemData(ItemClassification.useful, 1, 54, "hero relics"),
|
"Hero Relic - MP": TunicItemData(ItemClassification.useful, 1, 54, "Hero Relics"),
|
||||||
"Hero Relic - POTION": TunicItemData(ItemClassification.useful, 1, 55, "hero relics"),
|
"Hero Relic - POTION": TunicItemData(ItemClassification.useful, 1, 55, "Hero Relics"),
|
||||||
"Hero Relic - SP": TunicItemData(ItemClassification.useful, 1, 56, "hero relics"),
|
"Hero Relic - SP": TunicItemData(ItemClassification.useful, 1, 56, "Hero Relics"),
|
||||||
"Orange Peril Ring": TunicItemData(ItemClassification.useful, 1, 57, "cards"),
|
"Orange Peril Ring": TunicItemData(ItemClassification.useful, 1, 57, "Cards"),
|
||||||
"Tincture": TunicItemData(ItemClassification.useful, 1, 58, "cards"),
|
"Tincture": TunicItemData(ItemClassification.useful, 1, 58, "Cards"),
|
||||||
"Scavenger Mask": TunicItemData(ItemClassification.progression, 1, 59, "cards"),
|
"Scavenger Mask": TunicItemData(ItemClassification.progression, 1, 59, "Cards"),
|
||||||
"Cyan Peril Ring": TunicItemData(ItemClassification.useful, 1, 60, "cards"),
|
"Cyan Peril Ring": TunicItemData(ItemClassification.useful, 1, 60, "Cards"),
|
||||||
"Bracer": TunicItemData(ItemClassification.useful, 1, 61, "cards"),
|
"Bracer": TunicItemData(ItemClassification.useful, 1, 61, "Cards"),
|
||||||
"Dagger Strap": TunicItemData(ItemClassification.useful, 1, 62, "cards"),
|
"Dagger Strap": TunicItemData(ItemClassification.useful, 1, 62, "Cards"),
|
||||||
"Inverted Ash": TunicItemData(ItemClassification.useful, 1, 63, "cards"),
|
"Inverted Ash": TunicItemData(ItemClassification.useful, 1, 63, "Cards"),
|
||||||
"Lucky Cup": TunicItemData(ItemClassification.useful, 1, 64, "cards"),
|
"Lucky Cup": TunicItemData(ItemClassification.useful, 1, 64, "Cards"),
|
||||||
"Magic Echo": TunicItemData(ItemClassification.useful, 1, 65, "cards"),
|
"Magic Echo": TunicItemData(ItemClassification.useful, 1, 65, "Cards"),
|
||||||
"Anklet": TunicItemData(ItemClassification.useful, 1, 66, "cards"),
|
"Anklet": TunicItemData(ItemClassification.useful, 1, 66, "Cards"),
|
||||||
"Muffling Bell": TunicItemData(ItemClassification.useful, 1, 67, "cards"),
|
"Muffling Bell": TunicItemData(ItemClassification.useful, 1, 67, "Cards"),
|
||||||
"Glass Cannon": TunicItemData(ItemClassification.useful, 1, 68, "cards"),
|
"Glass Cannon": TunicItemData(ItemClassification.useful, 1, 68, "Cards"),
|
||||||
"Perfume": TunicItemData(ItemClassification.useful, 1, 69, "cards"),
|
"Perfume": TunicItemData(ItemClassification.useful, 1, 69, "Cards"),
|
||||||
"Louder Echo": TunicItemData(ItemClassification.useful, 1, 70, "cards"),
|
"Louder Echo": TunicItemData(ItemClassification.useful, 1, 70, "Cards"),
|
||||||
"Aura's Gem": TunicItemData(ItemClassification.useful, 1, 71, "cards"),
|
"Aura's Gem": TunicItemData(ItemClassification.useful, 1, 71, "Cards"),
|
||||||
"Bone Card": TunicItemData(ItemClassification.useful, 1, 72, "cards"),
|
"Bone Card": TunicItemData(ItemClassification.useful, 1, 72, "Cards"),
|
||||||
"Mr Mayor": TunicItemData(ItemClassification.useful, 1, 73, "golden treasures"),
|
"Mr Mayor": TunicItemData(ItemClassification.useful, 1, 73, "Golden Treasures"),
|
||||||
"Secret Legend": TunicItemData(ItemClassification.useful, 1, 74, "golden treasures"),
|
"Secret Legend": TunicItemData(ItemClassification.useful, 1, 74, "Golden Treasures"),
|
||||||
"Sacred Geometry": TunicItemData(ItemClassification.useful, 1, 75, "golden treasures"),
|
"Sacred Geometry": TunicItemData(ItemClassification.useful, 1, 75, "Golden Treasures"),
|
||||||
"Vintage": TunicItemData(ItemClassification.useful, 1, 76, "golden treasures"),
|
"Vintage": TunicItemData(ItemClassification.useful, 1, 76, "Golden Treasures"),
|
||||||
"Just Some Pals": TunicItemData(ItemClassification.useful, 1, 77, "golden treasures"),
|
"Just Some Pals": TunicItemData(ItemClassification.useful, 1, 77, "Golden Treasures"),
|
||||||
"Regal Weasel": TunicItemData(ItemClassification.useful, 1, 78, "golden treasures"),
|
"Regal Weasel": TunicItemData(ItemClassification.useful, 1, 78, "Golden Treasures"),
|
||||||
"Spring Falls": TunicItemData(ItemClassification.useful, 1, 79, "golden treasures"),
|
"Spring Falls": TunicItemData(ItemClassification.useful, 1, 79, "Golden Treasures"),
|
||||||
"Power Up": TunicItemData(ItemClassification.useful, 1, 80, "golden treasures"),
|
"Power Up": TunicItemData(ItemClassification.useful, 1, 80, "Golden Treasures"),
|
||||||
"Back To Work": TunicItemData(ItemClassification.useful, 1, 81, "golden treasures"),
|
"Back To Work": TunicItemData(ItemClassification.useful, 1, 81, "Golden Treasures"),
|
||||||
"Phonomath": TunicItemData(ItemClassification.useful, 1, 82, "golden treasures"),
|
"Phonomath": TunicItemData(ItemClassification.useful, 1, 82, "Golden Treasures"),
|
||||||
"Dusty": TunicItemData(ItemClassification.useful, 1, 83, "golden treasures"),
|
"Dusty": TunicItemData(ItemClassification.useful, 1, 83, "Golden Treasures"),
|
||||||
"Forever Friend": TunicItemData(ItemClassification.useful, 1, 84, "golden treasures"),
|
"Forever Friend": TunicItemData(ItemClassification.useful, 1, 84, "Golden Treasures"),
|
||||||
"Fool Trap": TunicItemData(ItemClassification.trap, 0, 85, "fool"),
|
"Fool Trap": TunicItemData(ItemClassification.trap, 0, 85),
|
||||||
"Money x1": TunicItemData(ItemClassification.filler, 3, 86, "money"),
|
"Money x1": TunicItemData(ItemClassification.filler, 3, 86, "Money"),
|
||||||
"Money x10": TunicItemData(ItemClassification.filler, 1, 87, "money"),
|
"Money x10": TunicItemData(ItemClassification.filler, 1, 87, "Money"),
|
||||||
"Money x15": TunicItemData(ItemClassification.filler, 10, 88, "money"),
|
"Money x15": TunicItemData(ItemClassification.filler, 10, 88, "Money"),
|
||||||
"Money x16": TunicItemData(ItemClassification.filler, 1, 89, "money"),
|
"Money x16": TunicItemData(ItemClassification.filler, 1, 89, "Money"),
|
||||||
"Money x20": TunicItemData(ItemClassification.filler, 17, 90, "money"),
|
"Money x20": TunicItemData(ItemClassification.filler, 17, 90, "Money"),
|
||||||
"Money x25": TunicItemData(ItemClassification.filler, 14, 91, "money"),
|
"Money x25": TunicItemData(ItemClassification.filler, 14, 91, "Money"),
|
||||||
"Money x30": TunicItemData(ItemClassification.filler, 4, 92, "money"),
|
"Money x30": TunicItemData(ItemClassification.filler, 4, 92, "Money"),
|
||||||
"Money x32": TunicItemData(ItemClassification.filler, 4, 93, "money"),
|
"Money x32": TunicItemData(ItemClassification.filler, 4, 93, "Money"),
|
||||||
"Money x40": TunicItemData(ItemClassification.filler, 3, 94, "money"),
|
"Money x40": TunicItemData(ItemClassification.filler, 3, 94, "Money"),
|
||||||
"Money x48": TunicItemData(ItemClassification.filler, 1, 95, "money"),
|
"Money x48": TunicItemData(ItemClassification.filler, 1, 95, "Money"),
|
||||||
"Money x50": TunicItemData(ItemClassification.filler, 7, 96, "money"),
|
"Money x50": TunicItemData(ItemClassification.filler, 7, 96, "Money"),
|
||||||
"Money x64": TunicItemData(ItemClassification.filler, 1, 97, "money"),
|
"Money x64": TunicItemData(ItemClassification.filler, 1, 97, "Money"),
|
||||||
"Money x100": TunicItemData(ItemClassification.filler, 5, 98, "money"),
|
"Money x100": TunicItemData(ItemClassification.filler, 5, 98, "Money"),
|
||||||
"Money x128": TunicItemData(ItemClassification.useful, 3, 99, "money"),
|
"Money x128": TunicItemData(ItemClassification.useful, 3, 99, "Money"),
|
||||||
"Money x200": TunicItemData(ItemClassification.useful, 1, 100, "money"),
|
"Money x200": TunicItemData(ItemClassification.useful, 1, 100, "Money"),
|
||||||
"Money x255": TunicItemData(ItemClassification.useful, 1, 101, "money"),
|
"Money x255": TunicItemData(ItemClassification.useful, 1, 101, "Money"),
|
||||||
"Pages 0-1": TunicItemData(ItemClassification.useful, 1, 102, "pages"),
|
"Pages 0-1": TunicItemData(ItemClassification.useful, 1, 102, "Pages"),
|
||||||
"Pages 2-3": TunicItemData(ItemClassification.useful, 1, 103, "pages"),
|
"Pages 2-3": TunicItemData(ItemClassification.useful, 1, 103, "Pages"),
|
||||||
"Pages 4-5": TunicItemData(ItemClassification.useful, 1, 104, "pages"),
|
"Pages 4-5": TunicItemData(ItemClassification.useful, 1, 104, "Pages"),
|
||||||
"Pages 6-7": TunicItemData(ItemClassification.useful, 1, 105, "pages"),
|
"Pages 6-7": TunicItemData(ItemClassification.useful, 1, 105, "Pages"),
|
||||||
"Pages 8-9": TunicItemData(ItemClassification.useful, 1, 106, "pages"),
|
"Pages 8-9": TunicItemData(ItemClassification.useful, 1, 106, "Pages"),
|
||||||
"Pages 10-11": TunicItemData(ItemClassification.useful, 1, 107, "pages"),
|
"Pages 10-11": TunicItemData(ItemClassification.useful, 1, 107, "Pages"),
|
||||||
"Pages 12-13": TunicItemData(ItemClassification.useful, 1, 108, "pages"),
|
"Pages 12-13": TunicItemData(ItemClassification.useful, 1, 108, "Pages"),
|
||||||
"Pages 14-15": TunicItemData(ItemClassification.useful, 1, 109, "pages"),
|
"Pages 14-15": TunicItemData(ItemClassification.useful, 1, 109, "Pages"),
|
||||||
"Pages 16-17": TunicItemData(ItemClassification.useful, 1, 110, "pages"),
|
"Pages 16-17": TunicItemData(ItemClassification.useful, 1, 110, "Pages"),
|
||||||
"Pages 18-19": TunicItemData(ItemClassification.useful, 1, 111, "pages"),
|
"Pages 18-19": TunicItemData(ItemClassification.useful, 1, 111, "Pages"),
|
||||||
"Pages 20-21": TunicItemData(ItemClassification.useful, 1, 112, "pages"),
|
"Pages 20-21": TunicItemData(ItemClassification.useful, 1, 112, "Pages"),
|
||||||
"Pages 22-23": TunicItemData(ItemClassification.useful, 1, 113, "pages"),
|
"Pages 22-23": TunicItemData(ItemClassification.useful, 1, 113, "Pages"),
|
||||||
"Pages 24-25 (Prayer)": TunicItemData(ItemClassification.progression, 1, 114, "pages"),
|
"Pages 24-25 (Prayer)": TunicItemData(ItemClassification.progression, 1, 114, "Pages"),
|
||||||
"Pages 26-27": TunicItemData(ItemClassification.useful, 1, 115, "pages"),
|
"Pages 26-27": TunicItemData(ItemClassification.useful, 1, 115, "Pages"),
|
||||||
"Pages 28-29": TunicItemData(ItemClassification.useful, 1, 116, "pages"),
|
"Pages 28-29": TunicItemData(ItemClassification.useful, 1, 116, "Pages"),
|
||||||
"Pages 30-31": TunicItemData(ItemClassification.useful, 1, 117, "pages"),
|
"Pages 30-31": TunicItemData(ItemClassification.useful, 1, 117, "Pages"),
|
||||||
"Pages 32-33": TunicItemData(ItemClassification.useful, 1, 118, "pages"),
|
"Pages 32-33": TunicItemData(ItemClassification.useful, 1, 118, "Pages"),
|
||||||
"Pages 34-35": TunicItemData(ItemClassification.useful, 1, 119, "pages"),
|
"Pages 34-35": TunicItemData(ItemClassification.useful, 1, 119, "Pages"),
|
||||||
"Pages 36-37": TunicItemData(ItemClassification.useful, 1, 120, "pages"),
|
"Pages 36-37": TunicItemData(ItemClassification.useful, 1, 120, "Pages"),
|
||||||
"Pages 38-39": TunicItemData(ItemClassification.useful, 1, 121, "pages"),
|
"Pages 38-39": TunicItemData(ItemClassification.useful, 1, 121, "Pages"),
|
||||||
"Pages 40-41": TunicItemData(ItemClassification.useful, 1, 122, "pages"),
|
"Pages 40-41": TunicItemData(ItemClassification.useful, 1, 122, "Pages"),
|
||||||
"Pages 42-43 (Holy Cross)": TunicItemData(ItemClassification.progression, 1, 123, "pages"),
|
"Pages 42-43 (Holy Cross)": TunicItemData(ItemClassification.progression, 1, 123, "Pages"),
|
||||||
"Pages 44-45": TunicItemData(ItemClassification.useful, 1, 124, "pages"),
|
"Pages 44-45": TunicItemData(ItemClassification.useful, 1, 124, "Pages"),
|
||||||
"Pages 46-47": TunicItemData(ItemClassification.useful, 1, 125, "pages"),
|
"Pages 46-47": TunicItemData(ItemClassification.useful, 1, 125, "Pages"),
|
||||||
"Pages 48-49": TunicItemData(ItemClassification.useful, 1, 126, "pages"),
|
"Pages 48-49": TunicItemData(ItemClassification.useful, 1, 126, "Pages"),
|
||||||
"Pages 50-51": TunicItemData(ItemClassification.useful, 1, 127, "pages"),
|
"Pages 50-51": TunicItemData(ItemClassification.useful, 1, 127, "Pages"),
|
||||||
"Pages 52-53 (Icebolt)": TunicItemData(ItemClassification.progression, 1, 128, "pages"),
|
"Pages 52-53 (Icebolt)": TunicItemData(ItemClassification.progression, 1, 128, "Pages"),
|
||||||
"Pages 54-55": TunicItemData(ItemClassification.useful, 1, 129, "pages"),
|
"Pages 54-55": TunicItemData(ItemClassification.useful, 1, 129, "Pages"),
|
||||||
|
|
||||||
"Ladders near Weathervane": TunicItemData(ItemClassification.progression, 0, 130, "ladders"),
|
"Ladders near Weathervane": TunicItemData(ItemClassification.progression, 0, 130, "Ladders"),
|
||||||
"Ladders near Overworld Checkpoint": TunicItemData(ItemClassification.progression, 0, 131, "ladders"),
|
"Ladders near Overworld Checkpoint": TunicItemData(ItemClassification.progression, 0, 131, "Ladders"),
|
||||||
"Ladders near Patrol Cave": TunicItemData(ItemClassification.progression, 0, 132, "ladders"),
|
"Ladders near Patrol Cave": TunicItemData(ItemClassification.progression, 0, 132, "Ladders"),
|
||||||
"Ladder near Temple Rafters": TunicItemData(ItemClassification.progression, 0, 133, "ladders"),
|
"Ladder near Temple Rafters": TunicItemData(ItemClassification.progression, 0, 133, "Ladders"),
|
||||||
"Ladders near Dark Tomb": TunicItemData(ItemClassification.progression, 0, 134, "ladders"),
|
"Ladders near Dark Tomb": TunicItemData(ItemClassification.progression, 0, 134, "Ladders"),
|
||||||
"Ladder to Quarry": TunicItemData(ItemClassification.progression, 0, 135, "ladders"),
|
"Ladder to Quarry": TunicItemData(ItemClassification.progression, 0, 135, "Ladders"),
|
||||||
"Ladders to West Bell": TunicItemData(ItemClassification.progression, 0, 136, "ladders"),
|
"Ladders to West Bell": TunicItemData(ItemClassification.progression, 0, 136, "Ladders"),
|
||||||
"Ladders in Overworld Town": TunicItemData(ItemClassification.progression, 0, 137, "ladders"),
|
"Ladders in Overworld Town": TunicItemData(ItemClassification.progression, 0, 137, "Ladders"),
|
||||||
"Ladder to Ruined Atoll": TunicItemData(ItemClassification.progression, 0, 138, "ladders"),
|
"Ladder to Ruined Atoll": TunicItemData(ItemClassification.progression, 0, 138, "Ladders"),
|
||||||
"Ladder to Swamp": TunicItemData(ItemClassification.progression, 0, 139, "ladders"),
|
"Ladder to Swamp": TunicItemData(ItemClassification.progression, 0, 139, "Ladders"),
|
||||||
"Ladders in Well": TunicItemData(ItemClassification.progression, 0, 140, "ladders"),
|
"Ladders in Well": TunicItemData(ItemClassification.progression, 0, 140, "Ladders"),
|
||||||
"Ladder in Dark Tomb": TunicItemData(ItemClassification.progression, 0, 141, "ladders"),
|
"Ladder in Dark Tomb": TunicItemData(ItemClassification.progression, 0, 141, "Ladders"),
|
||||||
"Ladder to East Forest": TunicItemData(ItemClassification.progression, 0, 142, "ladders"),
|
"Ladder to East Forest": TunicItemData(ItemClassification.progression, 0, 142, "Ladders"),
|
||||||
"Ladders to Lower Forest": TunicItemData(ItemClassification.progression, 0, 143, "ladders"),
|
"Ladders to Lower Forest": TunicItemData(ItemClassification.progression, 0, 143, "Ladders"),
|
||||||
"Ladder to Beneath the Vault": TunicItemData(ItemClassification.progression, 0, 144, "ladders"),
|
"Ladder to Beneath the Vault": TunicItemData(ItemClassification.progression, 0, 144, "Ladders"),
|
||||||
"Ladders in Hourglass Cave": TunicItemData(ItemClassification.progression, 0, 145, "ladders"),
|
"Ladders in Hourglass Cave": TunicItemData(ItemClassification.progression, 0, 145, "Ladders"),
|
||||||
"Ladders in South Atoll": TunicItemData(ItemClassification.progression, 0, 146, "ladders"),
|
"Ladders in South Atoll": TunicItemData(ItemClassification.progression, 0, 146, "Ladders"),
|
||||||
"Ladders to Frog's Domain": TunicItemData(ItemClassification.progression, 0, 147, "ladders"),
|
"Ladders to Frog's Domain": TunicItemData(ItemClassification.progression, 0, 147, "Ladders"),
|
||||||
"Ladders in Library": TunicItemData(ItemClassification.progression, 0, 148, "ladders"),
|
"Ladders in Library": TunicItemData(ItemClassification.progression, 0, 148, "Ladders"),
|
||||||
"Ladders in Lower Quarry": TunicItemData(ItemClassification.progression, 0, 149, "ladders"),
|
"Ladders in Lower Quarry": TunicItemData(ItemClassification.progression, 0, 149, "Ladders"),
|
||||||
"Ladders in Swamp": TunicItemData(ItemClassification.progression, 0, 150, "ladders"),
|
"Ladders in Swamp": TunicItemData(ItemClassification.progression, 0, 150, "Ladders"),
|
||||||
}
|
}
|
||||||
|
|
||||||
fool_tiers: List[List[str]] = [
|
fool_tiers: List[List[str]] = [
|
||||||
|
@ -220,20 +220,23 @@ item_name_groups: Dict[str, Set[str]] = {
|
||||||
|
|
||||||
# extra groups for the purpose of aliasing items
|
# extra groups for the purpose of aliasing items
|
||||||
extra_groups: Dict[str, Set[str]] = {
|
extra_groups: Dict[str, Set[str]] = {
|
||||||
"laurels": {"Hero's Laurels"},
|
"Laurels": {"Hero's Laurels"},
|
||||||
"orb": {"Magic Orb"},
|
"Orb": {"Magic Orb"},
|
||||||
"dagger": {"Magic Dagger"},
|
"Dagger": {"Magic Dagger"},
|
||||||
"magic rod": {"Magic Wand"},
|
"Wand": {"Magic Wand"},
|
||||||
"holy cross": {"Pages 42-43 (Holy Cross)"},
|
"Magic Rod": {"Magic Wand"},
|
||||||
"prayer": {"Pages 24-25 (Prayer)"},
|
"Fire Rod": {"Magic Wand"},
|
||||||
"icebolt": {"Pages 52-53 (Icebolt)"},
|
"Holy Cross": {"Pages 42-43 (Holy Cross)"},
|
||||||
"ice rod": {"Pages 52-53 (Icebolt)"},
|
"Prayer": {"Pages 24-25 (Prayer)"},
|
||||||
"melee weapons": {"Stick", "Sword", "Sword Upgrade"},
|
"Icebolt": {"Pages 52-53 (Icebolt)"},
|
||||||
"progressive sword": {"Sword Upgrade"},
|
"Ice Rod": {"Pages 52-53 (Icebolt)"},
|
||||||
"abilities": {"Pages 24-25 (Prayer)", "Pages 42-43 (Holy Cross)", "Pages 52-53 (Icebolt)"},
|
"Melee Weapons": {"Stick", "Sword", "Sword Upgrade"},
|
||||||
"questagons": {"Red Questagon", "Green Questagon", "Blue Questagon", "Gold Questagon"},
|
"Progressive Sword": {"Sword Upgrade"},
|
||||||
"ladder to atoll": {"Ladder to Ruined Atoll"}, # fuzzy matching made it hint Ladders in Well, now it won't
|
"Abilities": {"Pages 24-25 (Prayer)", "Pages 42-43 (Holy Cross)", "Pages 52-53 (Icebolt)"},
|
||||||
"ladders to bell": {"Ladders to West Bell"},
|
"Questagons": {"Red Questagon", "Green Questagon", "Blue Questagon", "Gold Questagon"},
|
||||||
|
"Ladder to Atoll": {"Ladder to Ruined Atoll"}, # fuzzy matching made it hint Ladders in Well, now it won't
|
||||||
|
"Ladders to Bell": {"Ladders to West Bell"},
|
||||||
|
"Ladders to Well": {"Ladders in Well"}, # fuzzy matching decided ladders in well was ladders to west bell
|
||||||
}
|
}
|
||||||
|
|
||||||
item_name_groups.update(extra_groups)
|
item_name_groups.update(extra_groups)
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
from typing import Dict, NamedTuple, Set, Optional, List
|
from typing import Dict, NamedTuple, Set, Optional
|
||||||
|
|
||||||
|
|
||||||
class TunicLocationData(NamedTuple):
|
class TunicLocationData(NamedTuple):
|
||||||
region: str
|
region: str
|
||||||
er_region: str # entrance rando region
|
er_region: str # entrance rando region
|
||||||
location_group: Optional[str] = None
|
location_group: Optional[str] = None
|
||||||
location_groups: Optional[List[str]] = None
|
|
||||||
|
|
||||||
|
|
||||||
location_base_id = 509342400
|
location_base_id = 509342400
|
||||||
|
@ -46,8 +45,8 @@ location_table: Dict[str, TunicLocationData] = {
|
||||||
"Guardhouse 2 - Bottom Floor Secret": TunicLocationData("East Forest", "Guard House 2 Lower"),
|
"Guardhouse 2 - Bottom Floor Secret": TunicLocationData("East Forest", "Guard House 2 Lower"),
|
||||||
"Guardhouse 1 - Upper Floor Obscured": TunicLocationData("East Forest", "Guard House 1 East"),
|
"Guardhouse 1 - Upper Floor Obscured": TunicLocationData("East Forest", "Guard House 1 East"),
|
||||||
"Guardhouse 1 - Upper Floor": TunicLocationData("East Forest", "Guard House 1 East"),
|
"Guardhouse 1 - Upper Floor": TunicLocationData("East Forest", "Guard House 1 East"),
|
||||||
"East Forest - Dancing Fox Spirit Holy Cross": TunicLocationData("East Forest", "East Forest Dance Fox Spot", location_group="holy cross"),
|
"East Forest - Dancing Fox Spirit Holy Cross": TunicLocationData("East Forest", "East Forest Dance Fox Spot", location_group="Holy Cross"),
|
||||||
"East Forest - Golden Obelisk Holy Cross": TunicLocationData("East Forest", "Lower Forest", location_group="holy cross"),
|
"East Forest - Golden Obelisk Holy Cross": TunicLocationData("East Forest", "Lower Forest", location_group="Holy Cross"),
|
||||||
"East Forest - Ice Rod Grapple Chest": TunicLocationData("East Forest", "East Forest"),
|
"East Forest - Ice Rod Grapple Chest": TunicLocationData("East Forest", "East Forest"),
|
||||||
"East Forest - Above Save Point": TunicLocationData("East Forest", "East Forest"),
|
"East Forest - Above Save Point": TunicLocationData("East Forest", "East Forest"),
|
||||||
"East Forest - Above Save Point Obscured": TunicLocationData("East Forest", "East Forest"),
|
"East Forest - Above Save Point Obscured": TunicLocationData("East Forest", "East Forest"),
|
||||||
|
@ -65,18 +64,18 @@ location_table: Dict[str, TunicLocationData] = {
|
||||||
"Forest Belltower - Obscured Near Bell Top Floor": TunicLocationData("East Forest", "Forest Belltower Upper"),
|
"Forest Belltower - Obscured Near Bell Top Floor": TunicLocationData("East Forest", "Forest Belltower Upper"),
|
||||||
"Forest Belltower - Obscured Beneath Bell Bottom Floor": TunicLocationData("East Forest", "Forest Belltower Main"),
|
"Forest Belltower - Obscured Beneath Bell Bottom Floor": TunicLocationData("East Forest", "Forest Belltower Main"),
|
||||||
"Forest Belltower - Page Pickup": TunicLocationData("East Forest", "Forest Belltower Main"),
|
"Forest Belltower - Page Pickup": TunicLocationData("East Forest", "Forest Belltower Main"),
|
||||||
"Forest Grave Path - Holy Cross Code by Grave": TunicLocationData("East Forest", "Forest Grave Path by Grave", location_group="holy cross"),
|
"Forest Grave Path - Holy Cross Code by Grave": TunicLocationData("East Forest", "Forest Grave Path by Grave", location_group="Holy Cross"),
|
||||||
"Forest Grave Path - Above Gate": TunicLocationData("East Forest", "Forest Grave Path Main"),
|
"Forest Grave Path - Above Gate": TunicLocationData("East Forest", "Forest Grave Path Main"),
|
||||||
"Forest Grave Path - Obscured Chest": TunicLocationData("East Forest", "Forest Grave Path Main"),
|
"Forest Grave Path - Obscured Chest": TunicLocationData("East Forest", "Forest Grave Path Main"),
|
||||||
"Forest Grave Path - Upper Walkway": TunicLocationData("East Forest", "Forest Grave Path Upper"),
|
"Forest Grave Path - Upper Walkway": TunicLocationData("East Forest", "Forest Grave Path Upper"),
|
||||||
"Forest Grave Path - Sword Pickup": TunicLocationData("East Forest", "Forest Grave Path by Grave"),
|
"Forest Grave Path - Sword Pickup": TunicLocationData("East Forest", "Forest Grave Path by Grave"),
|
||||||
"Hero's Grave - Tooth Relic": TunicLocationData("East Forest", "Hero Relic - East Forest", location_group="hero relic"),
|
"Hero's Grave - Tooth Relic": TunicLocationData("East Forest", "Hero Relic - East Forest"),
|
||||||
"Fortress Courtyard - From East Belltower": TunicLocationData("East Forest", "Fortress Exterior from East Forest"),
|
"Fortress Courtyard - From East Belltower": TunicLocationData("East Forest", "Fortress Exterior from East Forest"),
|
||||||
"Fortress Leaf Piles - Secret Chest": TunicLocationData("Eastern Vault Fortress", "Fortress Leaf Piles"),
|
"Fortress Leaf Piles - Secret Chest": TunicLocationData("Eastern Vault Fortress", "Fortress Leaf Piles"),
|
||||||
"Fortress Arena - Hexagon Red": TunicLocationData("Eastern Vault Fortress", "Fortress Arena"),
|
"Fortress Arena - Hexagon Red": TunicLocationData("Eastern Vault Fortress", "Fortress Arena"),
|
||||||
"Fortress Arena - Siege Engine/Vault Key Pickup": TunicLocationData("Eastern Vault Fortress", "Fortress Arena", location_group="bosses"),
|
"Fortress Arena - Siege Engine/Vault Key Pickup": TunicLocationData("Eastern Vault Fortress", "Fortress Arena", location_group="Bosses"),
|
||||||
"Fortress East Shortcut - Chest Near Slimes": TunicLocationData("Eastern Vault Fortress", "Fortress East Shortcut Lower"),
|
"Fortress East Shortcut - Chest Near Slimes": TunicLocationData("Eastern Vault Fortress", "Fortress East Shortcut Lower"),
|
||||||
"Eastern Vault Fortress - [West Wing] Candles Holy Cross": TunicLocationData("Eastern Vault Fortress", "Eastern Vault Fortress", location_group="holy cross"),
|
"Eastern Vault Fortress - [West Wing] Candles Holy Cross": TunicLocationData("Eastern Vault Fortress", "Eastern Vault Fortress", location_group="Holy Cross"),
|
||||||
"Eastern Vault Fortress - [West Wing] Dark Room Chest 1": TunicLocationData("Eastern Vault Fortress", "Eastern Vault Fortress"),
|
"Eastern Vault Fortress - [West Wing] Dark Room Chest 1": TunicLocationData("Eastern Vault Fortress", "Eastern Vault Fortress"),
|
||||||
"Eastern Vault Fortress - [West Wing] Dark Room Chest 2": TunicLocationData("Eastern Vault Fortress", "Eastern Vault Fortress"),
|
"Eastern Vault Fortress - [West Wing] Dark Room Chest 2": TunicLocationData("Eastern Vault Fortress", "Eastern Vault Fortress"),
|
||||||
"Eastern Vault Fortress - [East Wing] Bombable Wall": TunicLocationData("Eastern Vault Fortress", "Eastern Vault Fortress"),
|
"Eastern Vault Fortress - [East Wing] Bombable Wall": TunicLocationData("Eastern Vault Fortress", "Eastern Vault Fortress"),
|
||||||
|
@ -84,7 +83,7 @@ location_table: Dict[str, TunicLocationData] = {
|
||||||
"Fortress Grave Path - Upper Walkway": TunicLocationData("Eastern Vault Fortress", "Fortress Grave Path Upper"),
|
"Fortress Grave Path - Upper Walkway": TunicLocationData("Eastern Vault Fortress", "Fortress Grave Path Upper"),
|
||||||
"Fortress Grave Path - Chest Right of Grave": TunicLocationData("Eastern Vault Fortress", "Fortress Grave Path"),
|
"Fortress Grave Path - Chest Right of Grave": TunicLocationData("Eastern Vault Fortress", "Fortress Grave Path"),
|
||||||
"Fortress Grave Path - Obscured Chest Left of Grave": TunicLocationData("Eastern Vault Fortress", "Fortress Grave Path"),
|
"Fortress Grave Path - Obscured Chest Left of Grave": TunicLocationData("Eastern Vault Fortress", "Fortress Grave Path"),
|
||||||
"Hero's Grave - Flowers Relic": TunicLocationData("Eastern Vault Fortress", "Hero Relic - Fortress", location_group="hero relic"),
|
"Hero's Grave - Flowers Relic": TunicLocationData("Eastern Vault Fortress", "Hero Relic - Fortress"),
|
||||||
"Beneath the Fortress - Bridge": TunicLocationData("Beneath the Vault", "Beneath the Vault Back"),
|
"Beneath the Fortress - Bridge": TunicLocationData("Beneath the Vault", "Beneath the Vault Back"),
|
||||||
"Beneath the Fortress - Cell Chest 1": TunicLocationData("Beneath the Vault", "Beneath the Vault Back"),
|
"Beneath the Fortress - Cell Chest 1": TunicLocationData("Beneath the Vault", "Beneath the Vault Back"),
|
||||||
"Beneath the Fortress - Obscured Behind Waterfall": TunicLocationData("Beneath the Vault", "Beneath the Vault Front"),
|
"Beneath the Fortress - Obscured Behind Waterfall": TunicLocationData("Beneath the Vault", "Beneath the Vault Front"),
|
||||||
|
@ -101,8 +100,8 @@ location_table: Dict[str, TunicLocationData] = {
|
||||||
"Frog's Domain - Side Room Chest": TunicLocationData("Frog's Domain", "Frog's Domain"),
|
"Frog's Domain - Side Room Chest": TunicLocationData("Frog's Domain", "Frog's Domain"),
|
||||||
"Frog's Domain - Side Room Grapple Secret": TunicLocationData("Frog's Domain", "Frog's Domain"),
|
"Frog's Domain - Side Room Grapple Secret": TunicLocationData("Frog's Domain", "Frog's Domain"),
|
||||||
"Frog's Domain - Magic Orb Pickup": TunicLocationData("Frog's Domain", "Frog's Domain"),
|
"Frog's Domain - Magic Orb Pickup": TunicLocationData("Frog's Domain", "Frog's Domain"),
|
||||||
"Librarian - Hexagon Green": TunicLocationData("Library", "Library Arena", location_group="bosses"),
|
"Librarian - Hexagon Green": TunicLocationData("Library", "Library Arena", location_group="Bosses"),
|
||||||
"Library Hall - Holy Cross Chest": TunicLocationData("Library", "Library Hall", location_group="holy cross"),
|
"Library Hall - Holy Cross Chest": TunicLocationData("Library", "Library Hall", location_group="Holy Cross"),
|
||||||
"Library Lab - Chest By Shrine 2": TunicLocationData("Library", "Library Lab"),
|
"Library Lab - Chest By Shrine 2": TunicLocationData("Library", "Library Lab"),
|
||||||
"Library Lab - Chest By Shrine 1": TunicLocationData("Library", "Library Lab"),
|
"Library Lab - Chest By Shrine 1": TunicLocationData("Library", "Library Lab"),
|
||||||
"Library Lab - Chest By Shrine 3": TunicLocationData("Library", "Library Lab"),
|
"Library Lab - Chest By Shrine 3": TunicLocationData("Library", "Library Lab"),
|
||||||
|
@ -110,7 +109,7 @@ location_table: Dict[str, TunicLocationData] = {
|
||||||
"Library Lab - Page 3": TunicLocationData("Library", "Library Lab"),
|
"Library Lab - Page 3": TunicLocationData("Library", "Library Lab"),
|
||||||
"Library Lab - Page 1": TunicLocationData("Library", "Library Lab"),
|
"Library Lab - Page 1": TunicLocationData("Library", "Library Lab"),
|
||||||
"Library Lab - Page 2": TunicLocationData("Library", "Library Lab"),
|
"Library Lab - Page 2": TunicLocationData("Library", "Library Lab"),
|
||||||
"Hero's Grave - Mushroom Relic": TunicLocationData("Library", "Hero Relic - Library", location_group="hero relic"),
|
"Hero's Grave - Mushroom Relic": TunicLocationData("Library", "Hero Relic - Library"),
|
||||||
"Lower Mountain - Page Before Door": TunicLocationData("Overworld", "Lower Mountain"),
|
"Lower Mountain - Page Before Door": TunicLocationData("Overworld", "Lower Mountain"),
|
||||||
"Changing Room - Normal Chest": TunicLocationData("Overworld", "Changing Room"),
|
"Changing Room - Normal Chest": TunicLocationData("Overworld", "Changing Room"),
|
||||||
"Fortress Courtyard - Chest Near Cave": TunicLocationData("Overworld", "Fortress Exterior near cave"),
|
"Fortress Courtyard - Chest Near Cave": TunicLocationData("Overworld", "Fortress Exterior near cave"),
|
||||||
|
@ -165,49 +164,49 @@ location_table: Dict[str, TunicLocationData] = {
|
||||||
"Ruined Shop - Chest 2": TunicLocationData("Overworld", "Ruined Shop"),
|
"Ruined Shop - Chest 2": TunicLocationData("Overworld", "Ruined Shop"),
|
||||||
"Ruined Shop - Chest 3": TunicLocationData("Overworld", "Ruined Shop"),
|
"Ruined Shop - Chest 3": TunicLocationData("Overworld", "Ruined Shop"),
|
||||||
"Ruined Passage - Page Pickup": TunicLocationData("Overworld", "Ruined Passage"),
|
"Ruined Passage - Page Pickup": TunicLocationData("Overworld", "Ruined Passage"),
|
||||||
"Shop - Potion 1": TunicLocationData("Overworld", "Shop", location_group="shop"),
|
"Shop - Potion 1": TunicLocationData("Overworld", "Shop"),
|
||||||
"Shop - Potion 2": TunicLocationData("Overworld", "Shop", location_group="shop"),
|
"Shop - Potion 2": TunicLocationData("Overworld", "Shop"),
|
||||||
"Shop - Coin 1": TunicLocationData("Overworld", "Shop", location_group="shop"),
|
"Shop - Coin 1": TunicLocationData("Overworld", "Shop"),
|
||||||
"Shop - Coin 2": TunicLocationData("Overworld", "Shop", location_group="shop"),
|
"Shop - Coin 2": TunicLocationData("Overworld", "Shop"),
|
||||||
"Special Shop - Secret Page Pickup": TunicLocationData("Overworld", "Special Shop"),
|
"Special Shop - Secret Page Pickup": TunicLocationData("Overworld", "Special Shop"),
|
||||||
"Stick House - Stick Chest": TunicLocationData("Overworld", "Stick House"),
|
"Stick House - Stick Chest": TunicLocationData("Overworld", "Stick House"),
|
||||||
"Sealed Temple - Page Pickup": TunicLocationData("Overworld", "Sealed Temple"),
|
"Sealed Temple - Page Pickup": TunicLocationData("Overworld", "Sealed Temple"),
|
||||||
"Hourglass Cave - Hourglass Chest": TunicLocationData("Overworld", "Hourglass Cave"),
|
"Hourglass Cave - Hourglass Chest": TunicLocationData("Overworld", "Hourglass Cave"),
|
||||||
"Far Shore - Secret Chest": TunicLocationData("Overworld", "Far Shore"),
|
"Far Shore - Secret Chest": TunicLocationData("Overworld", "Far Shore"),
|
||||||
"Far Shore - Page Pickup": TunicLocationData("Overworld", "Far Shore to Spawn Region"),
|
"Far Shore - Page Pickup": TunicLocationData("Overworld", "Far Shore to Spawn Region"),
|
||||||
"Coins in the Well - 10 Coins": TunicLocationData("Overworld", "Overworld", location_group="well"),
|
"Coins in the Well - 10 Coins": TunicLocationData("Overworld", "Overworld", location_group="Well"),
|
||||||
"Coins in the Well - 15 Coins": TunicLocationData("Overworld", "Overworld", location_group="well"),
|
"Coins in the Well - 15 Coins": TunicLocationData("Overworld", "Overworld", location_group="Well"),
|
||||||
"Coins in the Well - 3 Coins": TunicLocationData("Overworld", "Overworld", location_group="well"),
|
"Coins in the Well - 3 Coins": TunicLocationData("Overworld", "Overworld", location_group="Well"),
|
||||||
"Coins in the Well - 6 Coins": TunicLocationData("Overworld", "Overworld", location_group="well"),
|
"Coins in the Well - 6 Coins": TunicLocationData("Overworld", "Overworld", location_group="Well"),
|
||||||
"Secret Gathering Place - 20 Fairy Reward": TunicLocationData("Overworld", "Secret Gathering Place", location_group="fairies"),
|
"Secret Gathering Place - 20 Fairy Reward": TunicLocationData("Overworld", "Secret Gathering Place", location_group="Fairies"),
|
||||||
"Secret Gathering Place - 10 Fairy Reward": TunicLocationData("Overworld", "Secret Gathering Place", location_group="fairies"),
|
"Secret Gathering Place - 10 Fairy Reward": TunicLocationData("Overworld", "Secret Gathering Place", location_group="Fairies"),
|
||||||
"Overworld - [West] Moss Wall Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Holy Cross", location_group="holy cross"),
|
"Overworld - [West] Moss Wall Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Holy Cross", location_group="Holy Cross"),
|
||||||
"Overworld - [Southwest] Flowers Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Beach", location_group="holy cross"),
|
"Overworld - [Southwest] Flowers Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Beach", location_group="Holy Cross"),
|
||||||
"Overworld - [Southwest] Fountain Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Holy Cross", location_group="holy cross"),
|
"Overworld - [Southwest] Fountain Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Holy Cross", location_group="Holy Cross"),
|
||||||
"Overworld - [Northeast] Flowers Holy Cross": TunicLocationData("Overworld Holy Cross", "East Overworld", location_group="holy cross"),
|
"Overworld - [Northeast] Flowers Holy Cross": TunicLocationData("Overworld Holy Cross", "East Overworld", location_group="Holy Cross"),
|
||||||
"Overworld - [East] Weathervane Holy Cross": TunicLocationData("Overworld Holy Cross", "East Overworld", location_group="holy cross"),
|
"Overworld - [East] Weathervane Holy Cross": TunicLocationData("Overworld Holy Cross", "East Overworld", location_group="Holy Cross"),
|
||||||
"Overworld - [West] Windmill Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Holy Cross", location_group="holy cross"),
|
"Overworld - [West] Windmill Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Holy Cross", location_group="Holy Cross"),
|
||||||
"Overworld - [Southwest] Haiku Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Beach", location_group="holy cross"),
|
"Overworld - [Southwest] Haiku Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Beach", location_group="Holy Cross"),
|
||||||
"Overworld - [West] Windchimes Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Holy Cross", location_group="holy cross"),
|
"Overworld - [West] Windchimes Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Holy Cross", location_group="Holy Cross"),
|
||||||
"Overworld - [South] Starting Platform Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Holy Cross", location_group="holy cross"),
|
"Overworld - [South] Starting Platform Holy Cross": TunicLocationData("Overworld Holy Cross", "Overworld Holy Cross", location_group="Holy Cross"),
|
||||||
"Overworld - [Northwest] Golden Obelisk Page": TunicLocationData("Overworld Holy Cross", "Upper Overworld", location_group="holy cross"),
|
"Overworld - [Northwest] Golden Obelisk Page": TunicLocationData("Overworld Holy Cross", "Upper Overworld", location_group="Holy Cross"),
|
||||||
"Old House - Holy Cross Door Page": TunicLocationData("Overworld Holy Cross", "Old House Back", location_group="holy cross"),
|
"Old House - Holy Cross Door Page": TunicLocationData("Overworld Holy Cross", "Old House Back", location_group="Holy Cross"),
|
||||||
"Cube Cave - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Cube Cave", location_group="holy cross"),
|
"Cube Cave - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Cube Cave", location_group="Holy Cross"),
|
||||||
"Southeast Cross Door - Chest 3": TunicLocationData("Overworld Holy Cross", "Southeast Cross Room", location_group="holy cross"),
|
"Southeast Cross Door - Chest 3": TunicLocationData("Overworld Holy Cross", "Southeast Cross Room", location_group="Holy Cross"),
|
||||||
"Southeast Cross Door - Chest 2": TunicLocationData("Overworld Holy Cross", "Southeast Cross Room", location_group="holy cross"),
|
"Southeast Cross Door - Chest 2": TunicLocationData("Overworld Holy Cross", "Southeast Cross Room", location_group="Holy Cross"),
|
||||||
"Southeast Cross Door - Chest 1": TunicLocationData("Overworld Holy Cross", "Southeast Cross Room", location_group="holy cross"),
|
"Southeast Cross Door - Chest 1": TunicLocationData("Overworld Holy Cross", "Southeast Cross Room", location_group="Holy Cross"),
|
||||||
"Maze Cave - Maze Room Holy Cross": TunicLocationData("Overworld Holy Cross", "Maze Cave", location_group="holy cross"),
|
"Maze Cave - Maze Room Holy Cross": TunicLocationData("Overworld Holy Cross", "Maze Cave", location_group="Holy Cross"),
|
||||||
"Caustic Light Cave - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Caustic Light Cave", location_group="holy cross"),
|
"Caustic Light Cave - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Caustic Light Cave", location_group="Holy Cross"),
|
||||||
"Old House - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Old House Front", location_group="holy cross"),
|
"Old House - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Old House Front", location_group="Holy Cross"),
|
||||||
"Patrol Cave - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Patrol Cave", location_group="holy cross"),
|
"Patrol Cave - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Patrol Cave", location_group="Holy Cross"),
|
||||||
"Ruined Passage - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Ruined Passage", location_group="holy cross"),
|
"Ruined Passage - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Ruined Passage", location_group="Holy Cross"),
|
||||||
"Hourglass Cave - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Hourglass Cave Tower", location_group="holy cross"),
|
"Hourglass Cave - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Hourglass Cave Tower", location_group="Holy Cross"),
|
||||||
"Sealed Temple - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Sealed Temple", location_group="holy cross"),
|
"Sealed Temple - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Sealed Temple", location_group="Holy Cross"),
|
||||||
"Fountain Cross Door - Page Pickup": TunicLocationData("Overworld Holy Cross", "Fountain Cross Room", location_group="holy cross"),
|
"Fountain Cross Door - Page Pickup": TunicLocationData("Overworld Holy Cross", "Fountain Cross Room", location_group="Holy Cross"),
|
||||||
"Secret Gathering Place - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Secret Gathering Place", location_group="holy cross"),
|
"Secret Gathering Place - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Secret Gathering Place", location_group="Holy Cross"),
|
||||||
"Top of the Mountain - Page At The Peak": TunicLocationData("Overworld Holy Cross", "Top of the Mountain", location_group="holy cross"),
|
"Top of the Mountain - Page At The Peak": TunicLocationData("Overworld Holy Cross", "Top of the Mountain", location_group="Holy Cross"),
|
||||||
"Monastery - Monastery Chest": TunicLocationData("Quarry", "Monastery Back"),
|
"Monastery - Monastery Chest": TunicLocationData("Quarry", "Monastery Back"),
|
||||||
"Quarry - [Back Entrance] Bushes Holy Cross": TunicLocationData("Quarry Back", "Quarry Back", location_group="holy cross"),
|
"Quarry - [Back Entrance] Bushes Holy Cross": TunicLocationData("Quarry Back", "Quarry Back", location_group="Holy Cross"),
|
||||||
"Quarry - [Back Entrance] Chest": TunicLocationData("Quarry Back", "Quarry Back"),
|
"Quarry - [Back Entrance] Chest": TunicLocationData("Quarry Back", "Quarry Back"),
|
||||||
"Quarry - [Central] Near Shortcut Ladder": TunicLocationData("Quarry", "Quarry"),
|
"Quarry - [Central] Near Shortcut Ladder": TunicLocationData("Quarry", "Quarry"),
|
||||||
"Quarry - [East] Near Telescope": TunicLocationData("Quarry", "Quarry"),
|
"Quarry - [East] Near Telescope": TunicLocationData("Quarry", "Quarry"),
|
||||||
|
@ -225,7 +224,7 @@ location_table: Dict[str, TunicLocationData] = {
|
||||||
"Quarry - [Central] Above Ladder Dash Chest": TunicLocationData("Quarry", "Quarry Monastery Entry"),
|
"Quarry - [Central] Above Ladder Dash Chest": TunicLocationData("Quarry", "Quarry Monastery Entry"),
|
||||||
"Quarry - [West] Upper Area Bombable Wall": TunicLocationData("Quarry Back", "Quarry Back"),
|
"Quarry - [West] Upper Area Bombable Wall": TunicLocationData("Quarry Back", "Quarry Back"),
|
||||||
"Quarry - [East] Bombable Wall": TunicLocationData("Quarry", "Quarry"),
|
"Quarry - [East] Bombable Wall": TunicLocationData("Quarry", "Quarry"),
|
||||||
"Hero's Grave - Ash Relic": TunicLocationData("Quarry", "Hero Relic - Quarry", location_group="hero relics"),
|
"Hero's Grave - Ash Relic": TunicLocationData("Quarry", "Hero Relic - Quarry"),
|
||||||
"Quarry - [West] Shooting Range Secret Path": TunicLocationData("Lower Quarry", "Lower Quarry"),
|
"Quarry - [West] Shooting Range Secret Path": TunicLocationData("Lower Quarry", "Lower Quarry"),
|
||||||
"Quarry - [West] Near Shooting Range": TunicLocationData("Lower Quarry", "Lower Quarry"),
|
"Quarry - [West] Near Shooting Range": TunicLocationData("Lower Quarry", "Lower Quarry"),
|
||||||
"Quarry - [West] Below Shooting Range": TunicLocationData("Lower Quarry", "Lower Quarry"),
|
"Quarry - [West] Below Shooting Range": TunicLocationData("Lower Quarry", "Lower Quarry"),
|
||||||
|
@ -246,7 +245,7 @@ location_table: Dict[str, TunicLocationData] = {
|
||||||
"Rooted Ziggurat Lower - Guarded By Double Turrets": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Lower Front"),
|
"Rooted Ziggurat Lower - Guarded By Double Turrets": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Lower Front"),
|
||||||
"Rooted Ziggurat Lower - After 2nd Double Turret Chest": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Lower Front"),
|
"Rooted Ziggurat Lower - After 2nd Double Turret Chest": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Lower Front"),
|
||||||
"Rooted Ziggurat Lower - Guarded By Double Turrets 2": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Lower Front"),
|
"Rooted Ziggurat Lower - Guarded By Double Turrets 2": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Lower Front"),
|
||||||
"Rooted Ziggurat Lower - Hexagon Blue": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Lower Back", location_group="bosses"),
|
"Rooted Ziggurat Lower - Hexagon Blue": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Lower Back", location_group="Bosses"),
|
||||||
"Ruined Atoll - [West] Near Kevin Block": TunicLocationData("Ruined Atoll", "Ruined Atoll"),
|
"Ruined Atoll - [West] Near Kevin Block": TunicLocationData("Ruined Atoll", "Ruined Atoll"),
|
||||||
"Ruined Atoll - [South] Upper Floor On Power Line": TunicLocationData("Ruined Atoll", "Ruined Atoll Ladder Tops"),
|
"Ruined Atoll - [South] Upper Floor On Power Line": TunicLocationData("Ruined Atoll", "Ruined Atoll Ladder Tops"),
|
||||||
"Ruined Atoll - [South] Chest Near Big Crabs": TunicLocationData("Ruined Atoll", "Ruined Atoll"),
|
"Ruined Atoll - [South] Chest Near Big Crabs": TunicLocationData("Ruined Atoll", "Ruined Atoll"),
|
||||||
|
@ -288,14 +287,14 @@ location_table: Dict[str, TunicLocationData] = {
|
||||||
"Swamp - [South Graveyard] Upper Walkway Dash Chest": TunicLocationData("Swamp", "Swamp Mid"),
|
"Swamp - [South Graveyard] Upper Walkway Dash Chest": TunicLocationData("Swamp", "Swamp Mid"),
|
||||||
"Swamp - [South Graveyard] Above Big Skeleton": TunicLocationData("Swamp", "Swamp Front"),
|
"Swamp - [South Graveyard] Above Big Skeleton": TunicLocationData("Swamp", "Swamp Front"),
|
||||||
"Swamp - [Central] Beneath Memorial": TunicLocationData("Swamp", "Swamp Mid"),
|
"Swamp - [Central] Beneath Memorial": TunicLocationData("Swamp", "Swamp Mid"),
|
||||||
"Hero's Grave - Feathers Relic": TunicLocationData("Swamp", "Hero Relic - Swamp", location_group="hero relic"),
|
"Hero's Grave - Feathers Relic": TunicLocationData("Swamp", "Hero Relic - Swamp"),
|
||||||
"West Furnace - Chest": TunicLocationData("West Garden", "Furnace Walking Path"),
|
"West Furnace - Chest": TunicLocationData("West Garden", "Furnace Walking Path"),
|
||||||
"Overworld - [West] Near West Garden Entrance": TunicLocationData("West Garden", "Overworld to West Garden from Furnace"),
|
"Overworld - [West] Near West Garden Entrance": TunicLocationData("West Garden", "Overworld to West Garden from Furnace"),
|
||||||
"West Garden - [Central Highlands] Holy Cross (Blue Lines)": TunicLocationData("West Garden", "West Garden", location_group="holy cross"),
|
"West Garden - [Central Highlands] Holy Cross (Blue Lines)": TunicLocationData("West Garden", "West Garden", location_group="Holy Cross"),
|
||||||
"West Garden - [West Lowlands] Tree Holy Cross Chest": TunicLocationData("West Garden", "West Garden", location_group="holy cross"),
|
"West Garden - [West Lowlands] Tree Holy Cross Chest": TunicLocationData("West Garden", "West Garden", location_group="Holy Cross"),
|
||||||
"West Garden - [Southeast Lowlands] Outside Cave": TunicLocationData("West Garden", "West Garden"),
|
"West Garden - [Southeast Lowlands] Outside Cave": TunicLocationData("West Garden", "West Garden"),
|
||||||
"West Garden - [Central Lowlands] Chest Beneath Faeries": TunicLocationData("West Garden", "West Garden"),
|
"West Garden - [Central Lowlands] Chest Beneath Faeries": TunicLocationData("West Garden", "West Garden"),
|
||||||
"West Garden - [North] Behind Holy Cross Door": TunicLocationData("West Garden", "West Garden", location_group="holy cross"),
|
"West Garden - [North] Behind Holy Cross Door": TunicLocationData("West Garden", "West Garden", location_group="Holy Cross"),
|
||||||
"West Garden - [Central Highlands] Top of Ladder Before Boss": TunicLocationData("West Garden", "West Garden"),
|
"West Garden - [Central Highlands] Top of Ladder Before Boss": TunicLocationData("West Garden", "West Garden"),
|
||||||
"West Garden - [Central Lowlands] Passage Beneath Bridge": TunicLocationData("West Garden", "West Garden"),
|
"West Garden - [Central Lowlands] Passage Beneath Bridge": TunicLocationData("West Garden", "West Garden"),
|
||||||
"West Garden - [North] Across From Page Pickup": TunicLocationData("West Garden", "West Garden"),
|
"West Garden - [North] Across From Page Pickup": TunicLocationData("West Garden", "West Garden"),
|
||||||
|
@ -307,12 +306,12 @@ location_table: Dict[str, TunicLocationData] = {
|
||||||
"West Garden - [West Highlands] Upper Left Walkway": TunicLocationData("West Garden", "West Garden"),
|
"West Garden - [West Highlands] Upper Left Walkway": TunicLocationData("West Garden", "West Garden"),
|
||||||
"West Garden - [Central Lowlands] Chest Beneath Save Point": TunicLocationData("West Garden", "West Garden"),
|
"West Garden - [Central Lowlands] Chest Beneath Save Point": TunicLocationData("West Garden", "West Garden"),
|
||||||
"West Garden - [Central Highlands] Behind Guard Captain": TunicLocationData("West Garden", "West Garden"),
|
"West Garden - [Central Highlands] Behind Guard Captain": TunicLocationData("West Garden", "West Garden"),
|
||||||
"West Garden - [Central Highlands] After Garden Knight": TunicLocationData("Overworld", "West Garden after Boss", location_group="bosses"),
|
"West Garden - [Central Highlands] After Garden Knight": TunicLocationData("Overworld", "West Garden after Boss", location_group="Bosses"),
|
||||||
"West Garden - [South Highlands] Secret Chest Beneath Fuse": TunicLocationData("West Garden", "West Garden"),
|
"West Garden - [South Highlands] Secret Chest Beneath Fuse": TunicLocationData("West Garden", "West Garden"),
|
||||||
"West Garden - [East Lowlands] Page Behind Ice Dagger House": TunicLocationData("West Garden", "West Garden Portal Item"),
|
"West Garden - [East Lowlands] Page Behind Ice Dagger House": TunicLocationData("West Garden", "West Garden Portal Item"),
|
||||||
"West Garden - [North] Page Pickup": TunicLocationData("West Garden", "West Garden"),
|
"West Garden - [North] Page Pickup": TunicLocationData("West Garden", "West Garden"),
|
||||||
"West Garden House - [Southeast Lowlands] Ice Dagger Pickup": TunicLocationData("West Garden", "Magic Dagger House"),
|
"West Garden House - [Southeast Lowlands] Ice Dagger Pickup": TunicLocationData("West Garden", "Magic Dagger House"),
|
||||||
"Hero's Grave - Effigy Relic": TunicLocationData("West Garden", "Hero Relic - West Garden", location_group="hero relic"),
|
"Hero's Grave - Effigy Relic": TunicLocationData("West Garden", "Hero Relic - West Garden"),
|
||||||
}
|
}
|
||||||
|
|
||||||
hexagon_locations: Dict[str, str] = {
|
hexagon_locations: Dict[str, str] = {
|
||||||
|
@ -325,7 +324,7 @@ location_name_to_id: Dict[str, int] = {name: location_base_id + index for index,
|
||||||
|
|
||||||
location_name_groups: Dict[str, Set[str]] = {}
|
location_name_groups: Dict[str, Set[str]] = {}
|
||||||
for loc_name, loc_data in location_table.items():
|
for loc_name, loc_data in location_table.items():
|
||||||
|
loc_group_name = loc_name.split(" - ", 1)[0]
|
||||||
|
location_name_groups.setdefault(loc_group_name, set()).add(loc_name)
|
||||||
if loc_data.location_group:
|
if loc_data.location_group:
|
||||||
if loc_data.location_group not in location_name_groups.keys():
|
location_name_groups.setdefault(loc_data.location_group, set()).add(loc_name)
|
||||||
location_name_groups[loc_data.location_group] = set()
|
|
||||||
location_name_groups[loc_data.location_group].add(loc_name)
|
|
||||||
|
|
Loading…
Reference in New Issue