From 9563c54e79cfe6d0bed7939c4f3694b83177e02f Mon Sep 17 00:00:00 2001 From: jamesbrq Date: Sun, 21 Apr 2024 03:48:58 -0400 Subject: [PATCH] Finished location rules. Game generates. --- worlds/ttyd/Items.py | 15 +- worlds/ttyd/Locations.py | 991 +++++++++++++++++++------------------- worlds/ttyd/Regions.py | 13 +- worlds/ttyd/Rules.py | 177 ++++++- worlds/ttyd/StateLogic.py | 12 + worlds/ttyd/__init__.py | 21 +- 6 files changed, 706 insertions(+), 523 deletions(-) diff --git a/worlds/ttyd/Items.py b/worlds/ttyd/Items.py index 747a01367bf2..13fc89037c33 100644 --- a/worlds/ttyd/Items.py +++ b/worlds/ttyd/Items.py @@ -227,7 +227,11 @@ class TTYDItem(Item): ItemData(77772211, "Wedding Ring", ItemClassification.progression), ItemData(77772212, "Whacka Bump", ItemClassification.filler), ItemData(77772213, "Yoshi", ItemClassification.progression), - ItemData(77772214, "Zap Tap", ItemClassification.useful) + ItemData(77772214, "Zap Tap", ItemClassification.useful), + ItemData(77772215, "Silver Card", ItemClassification.progression), + ItemData(77772216, "Gold Card", ItemClassification.progression), + ItemData(77772217, "Platinum Card", ItemClassification.progression), + ItemData(77772218, "Special Card", ItemClassification.progression), ] item_frequencies: typing.Dict[str, int] = { @@ -315,7 +319,14 @@ class TTYDItem(Item): "Ultra Mushroom": 15, "Unsimplifier": 2, "Volt Shroom": 2, - "Whacka Bump": 8 + "Whacka Bump": 8, + "Diamond Star": 0, + "Emerald Star": 0, + "Gold Star": 0, + "Ruby Star": 0, + "Sapphire Star": 0, + "Garnet Star": 0, + "Crystal Star": 0 } item_table: typing.Dict[str, ItemData] = {item.itemName: item for item in itemList} diff --git a/worlds/ttyd/Locations.py b/worlds/ttyd/Locations.py index 990859c2de89..08ec388684bc 100644 --- a/worlds/ttyd/Locations.py +++ b/worlds/ttyd/Locations.py @@ -19,6 +19,7 @@ class TTYDLocation(Location): rogueport: typing.List[LocationData] = [ LocationData("Rogueport Docks: HP Drain", 78780000), LocationData("Rogueport Docks: Star Piece", 78780001), + LocationData("Rogueport Docks: Star Piece 2", 78780706), LocationData("Rogueport Center: Goombella", 78780002), LocationData("Rogueport Center: Contact Lens", 78780003), LocationData("Rogueport Center: Old Letter", 78780004), @@ -80,7 +81,8 @@ class TTYDLocation(Location): LocationData("Rogueport Eastside: Power Smash", 78780060), LocationData("Rogueport Eastside: Double Dip", 78780061), LocationData("Rogueport Eastside: Shine Sprite 1", 78780062), - LocationData("Rogueport Eastside: Shine Sprite 2", 78780063), + LocationData("Rogueport Eastside: Shine Sprite 2", 787800708), + LocationData("Rogueport Eastside: Shine Sprite 3", 78780707), LocationData("Rogueport Eastside: Star Piece 1", 78780064), LocationData("Rogueport Eastside: Star Piece 2", 78780065), LocationData("Rogueport Eastside: Star Piece 3", 78780066), @@ -89,556 +91,567 @@ class TTYDLocation(Location): ] rogueport_westside: typing.List[LocationData] = [ - LocationData("Rogueport Westside: Blimp Ticket", 0x49d95f), - LocationData("Rogueport Westside: Train Ticket", 0x49db02), - LocationData("Rogueport Westside: Cake Mix", 0x49daea), - LocationData("Rogueport Westside: Dizzy Dial", 0x49dab5), - LocationData("Rogueport Westside: Dried Shroom", 0x49db0f), - LocationData("Rogueport Westside: FP Plus", 0x49db22), - LocationData("Rogueport Westside: Gold Bar x3", 0x49db2a), - LocationData("Rogueport Westside: Hammer Throw", 0x49db32), - LocationData("Rogueport Westside: HP Plus", 0x49db87), - LocationData("Rogueport Westside: HP Plus P", 0x49db97), - LocationData("Rogueport Westside: Jammin' Jelly", 0x49dbac), - LocationData("Rogueport Westside: Life Shroom", 0x49dbb4), - LocationData("Rogueport Westside: Lottery Pick", 0x49dbbc), - LocationData("Rogueport Westside: Mushroom", 0x49dbc9), - LocationData("Rogueport Westside: Power Jump", 0x49dbd9), - LocationData("Rogueport Westside: Power Rush", 0x49dbe1), - LocationData("Rogueport Westside: Power Rush P", 0x49dbee), - LocationData("Rogueport Westside: Power Smash", 0x49dbfb), - LocationData("Rogueport Westside: Quake Hammer", 0x49dc08), - LocationData("Rogueport Westside: Refund", 0x49dc20), - LocationData("Rogueport Westside: Shine Sprite 1", 0x49dc28), - LocationData("Rogueport Westside: Shine Sprite 2", 0x49dc4d), - LocationData("Rogueport Westside: Star Piece 1", 0x49dc7a), - LocationData("Rogueport Westside: Star Piece 2", 0x49dc82), - LocationData("Rogueport Westside: Star Piece 3", 0x49dc8f), - LocationData("Rogueport Westside: Star Piece 4", 0x49dc97), - LocationData("Rogueport Westside: Super Appeal", 0x49dc9f), - LocationData("Rogueport Westside: Super Shroom 1", 0x49dcac), - LocationData("Rogueport Westside: Super Shroom 2", 0x49dcbc), - LocationData("Rogueport Westside: Thunder Bolt", 0x49dcc4), - LocationData("Rogueport Westside: Tornado Jump", 0x49dcd1), - LocationData("Rogueport Westside: Ultra Shroom 1", 0x49dce1), - LocationData("Rogueport Westside: Ultra Shroom 2", 0x49dcd9), - LocationData("Rogueport Westside: Volt Shroom", 0x49dcee), - LocationData("Rogueport Blimp Room: Star Piece 1", 0x49e17f), - LocationData("Rogueport Blimp Room: Star Piece 2", 0x49e187) + LocationData("Rogueport Westside: Blimp Ticket", 78780069), + LocationData("Rogueport Westside: Train Ticket", 78780070), + LocationData("Rogueport Westside: Cake Mix", 78780071), + LocationData("Rogueport Westside: Dizzy Dial", 78780072), + LocationData("Rogueport Westside: Dried Shroom", 78780073), + LocationData("Rogueport Westside: FP Plus", 78780074), + LocationData("Rogueport Westside: Gold Bar x3", 78780075), + LocationData("Rogueport Westside: Hammer Throw", 78780076), + LocationData("Rogueport Westside: HP Plus", 78780077), + LocationData("Rogueport Westside: HP Plus P", 78780078), + LocationData("Rogueport Westside: Jammin' Jelly", 78780079), + LocationData("Rogueport Westside: Life Shroom", 78780080), + LocationData("Rogueport Westside: Maple Syrup", 78780701), + LocationData("Rogueport Westside: Money Money", 78780081), + LocationData("Rogueport Westside: Multibounce", 78780700), + LocationData("Rogueport Westside: Mushroom", 78780082), + LocationData("Rogueport Westside: Power Jump", 78780083), + LocationData("Rogueport Westside: Power Rush", 78780084), + LocationData("Rogueport Westside: Power Rush P", 78780085), + LocationData("Rogueport Westside: Power Smash", 78780086), + LocationData("Rogueport Westside: Quake Hammer", 78780087), + LocationData("Rogueport Westside: Refund", 78780088), + LocationData("Rogueport Westside: Shine Sprite 1", 78780089), + LocationData("Rogueport Westside: Shine Sprite 2", 78780090), + LocationData("Rogueport Westside: Star Piece 1", 78780091), + LocationData("Rogueport Westside: Star Piece 2", 78780092), + LocationData("Rogueport Westside: Star Piece 3", 78780093), + LocationData("Rogueport Westside: Star Piece 4", 78780094), + LocationData("Rogueport Westside: Super Appeal", 78780095), + LocationData("Rogueport Westside: Super Shroom 1", 78780096), + LocationData("Rogueport Westside: Super Shroom 2", 78780097), + LocationData("Rogueport Westside: Thunder Bolt", 78780098), + LocationData("Rogueport Westside: Tornado Jump", 78780099), + LocationData("Rogueport Westside: Ultra Shroom", 78780100), + LocationData("Rogueport Westside: Volt Shroom", 78780102), + LocationData("Rogueport Blimp Room: Star Piece 1", 78780103), + LocationData("Rogueport Blimp Room: Star Piece 2", 78780104) ] sewers: typing.List[LocationData] = [ - LocationData("Rougueport Sewers Town: Attack FX Y", 0x49da42), - LocationData("Rougueport Sewers Town: Chill Out", 0x49da4a), - LocationData("Rougueport Sewers Town: Flower Finder", 0x49da52), - LocationData("Rougueport Sewers Town: Flower Saver", 0x49d9e9), - LocationData("Rougueport Sewers Town: Flower Saver P", 0x277a45), - LocationData("Rougueport Sewers Town: Gold Bar", 0x49e5b5), - LocationData("Rougueport Sewers Town: Gold Bar x3", 0x49e5c8), - LocationData("Rougueport Sewers Town: Gradual Syrup", 0x49e5d0), - LocationData("Rougueport Sewers Town: Happy Flower", 0x49da0b), - LocationData("Rougueport Sewers Town: Happy Heart", 0x49da20), - LocationData("Rougueport Sewers Town: Happy Heart P", 0x49da18), - LocationData("Rougueport Sewers Town: Heart Finder", 0x49da42), - LocationData("Rougueport Sewers Town: Item Hog", 0x49da4a), - LocationData("Rougueport Sewers Town: Jammin' Jelly", 0x49da52), - LocationData("Rougueport Sewers Town: Peekaboo", 0x49d9e9), - LocationData("Rougueport Sewers Town: Power Plus", 0x277a45), - LocationData("Rougueport Sewers Town: Power Plus P", 0x49e5b5), - LocationData("Rougueport Sewers Town: Pretty Lucky", 0x49e5c8), - LocationData("Rougueport Sewers Town: Quick Change", 0x49e5d0), - LocationData("Rougueport Sewers Town: Shine Sprite", 0x49da0b), - LocationData("Rougueport Sewers Town: Slow Shroom", 0x49da20), - LocationData("Rougueport Sewers Town: Soft Stomp", 0x49da42), - LocationData("Rougueport Sewers Town: Star Piece 1", 0x49da4a), - LocationData("Rougueport Sewers Town: Star Piece 2", 0x49da52), - LocationData("Rougueport Sewers Town: Star Piece 3", 0x49d9e9), - LocationData("Rougueport Sewers Town: Star Piece 4", 0x277a45), - LocationData("Rougueport Sewers East Entrance: Ultra Mushroom", 0x49e5b5), - LocationData("Rougueport Sewers East Entrance: Star Piece", 0x49e5c8), - LocationData("Rougueport Sewers Petal Meadows Pipe: Shine Sprite", 0x49e5d0), - LocationData("Rogueport Sewers Boggly Woods Pipe: Damage Dodge", 0x49da0b), - LocationData("Rogueport Sewers Boggly Woods Pipe: Star Piece", 0x49da20), - LocationData("Rogueport Sewers Black Key Room: Black Key", 0x49da42), - LocationData("Rogueport Sewers Black Key Room: Happy Heart P", 0x49da4a), - LocationData("Rogueport Sewers Black Key Room: Pretty Lucky", 0x49da52), - LocationData("Rogueport Sewers Black Key Room: Star Piece", 0x49d9e9), - LocationData("Rogueport Sewers Thousand Year Door: Shine Sprite", 0x277a45), - LocationData("Rogueport Sewers Thousand Year Door: Star Piece", 0x49e5b5), - LocationData("Rougueport Sewers Pit Entrance: Star Piece", 0x49e5c8), - LocationData("Rogueport Sewers West Entrance: Flower Saver P", 0x49e5d0), - LocationData("Rogueport Sewers West Entrance: Shine Sprite", 0x49da0b), - LocationData("Rogueport Sewers West Entrance: Star Piece 1", 0x49da20), - LocationData("Rogueport Sewers West Entrance: Star Piece 2", 0x49da42), - LocationData("Rogueport Sewers East Enemy Hall: Fire Flower", 0x49da4a), - LocationData("Rogueport Sewers East Enemy Hall: Mushroom", 0x49da52), - LocationData("Rogueport Sewers East Pipe Room: Shine Sprite", 0x49d9e9), - LocationData("Rogueport Sewers West Pipe Room: FP Plus", 0x277a45), - LocationData("Rogueport Sewers West Enemy Hall: Gradual Syrup", 0x49e5b5), - LocationData("Rogueport Sewers West Enemy Hall: Slow Shroom", 0x49e5c8), - LocationData("Rogueport Sewers Black Chest Room: Plane Curse", 0x49e5d0), - LocationData("Rogueport Sewers Black Chest Room: Star Piece", 0x49da0b), - LocationData("Rogueport Sewers Spania Room: Defend Plus", 0x49da20), - LocationData("Rogueport Sewers Spania Room: Shine Sprite 1", 0x49da42), - LocationData("Rogueport Sewers Spania Room: Shine Sprite 2", 0x49da4a), - LocationData("Rogueport Sewers Spania Room: Shine Sprite 3", 0x49da52), - LocationData("Rogueport Sewers Spike Room: Spike Shield", 0x49d9e9) + LocationData("Rogueport Sewers Town: Attack FX Y", 78780105), + LocationData("Rogueport Sewers Town: Chill Out", 78780106), + LocationData("Rogueport Sewers Town: Flower Finder", 78780107), + LocationData("Rogueport Sewers Town: Flower Saver", 78780108), + LocationData("Rogueport Sewers Town: Flower Saver P", 78780109), + LocationData("Rogueport Sewers Town: Happy Flower", 78780113), + LocationData("Rogueport Sewers Town: Happy Heart", 78780114), + LocationData("Rogueport Sewers Town: Happy Heart P", 78780115), + LocationData("Rogueport Sewers Town: Heart Finder", 78780116), + LocationData("Rogueport Sewers Town: Item Hog", 78780117), + LocationData("Rogueport Sewers Town: Peekaboo", 78780119), + LocationData("Rogueport Sewers Town: Power Plus", 78780120), + LocationData("Rogueport Sewers Town: Power Plus P", 78780121), + LocationData("Rogueport Sewers Town: Pretty Lucky", 78780122), + LocationData("Rogueport Sewers Town: Quick Change", 78780123), + LocationData("Rogueport Sewers Town: Star Piece 4", 78780130), + LocationData("Rogueport Sewers East Entrance: Star Piece", 78780132), + LocationData("Rogueport Sewers East Entrance: Defend Plus P", 78780705), + LocationData("Rogueport Sewers Petal Meadows Pipe: Shine Sprite", 78780133), + LocationData("Rogueport Sewers Boggly Woods Pipe: Damage Dodge", 78780134), + LocationData("Rogueport Sewers Boggly Woods Pipe: Star Piece", 78780135), + LocationData("Rogueport Sewers Black Key Room: Black Key", 78780136), + LocationData("Rogueport Sewers Black Key Room: Happy Heart P", 78780137), + LocationData("Rogueport Sewers Black Key Room: Pretty Lucky", 78780138), + LocationData("Rogueport Sewers Black Key Room: Star Piece", 78780139), + LocationData("Rogueport Sewers Thousand Year Door: Shine Sprite", 78780140), + LocationData("Rogueport Sewers Thousand Year Door: Star Piece", 78780141), + LocationData("Rogueport Sewers Pit Entrance: Star Piece", 78780142), + LocationData("Rogueport Sewers Star Piece House: Star Piece", 78780704), + LocationData("Rogueport Sewers East Enemy Hall: Fire Flower", 78780147), + LocationData("Rogueport Sewers East Enemy Hall: Mushroom", 78780148), + LocationData("Rogueport Sewers East Pipe Room: Shine Sprite", 78780149), + LocationData("Rogueport Sewers West Pipe Room: FP Plus", 78780150), + LocationData("Rogueport Sewers Black Chest Room: Plane Curse", 78780153), + LocationData("Rogueport Sewers Black Chest Room: Star Piece", 78780154), + LocationData("Rogueport Sewers Spike Room: Spike Shield", 78780159) +] + +sewers_westside: typing.List[LocationData] = [ + LocationData("Rogueport Sewers Town: Gold Bar", 78780110), + LocationData("Rogueport Sewers Town: Gold Bar x3", 78780111), + LocationData("Rogueport Sewers Town: Gradual Syrup", 78780112), + LocationData("Rogueport Sewers Town: Jammin' Jelly", 78780118), + LocationData("Rogueport Sewers Town: Shine Sprite", 78780124), + LocationData("Rogueport Sewers Town: Slow Shroom", 78780125), + LocationData("Rogueport Sewers Town: Soft Stomp", 78780126), + LocationData("Rogueport Sewers Town: Star Piece 1", 78780127), + LocationData("Rogueport Sewers Town: Star Piece 2", 78780128), + LocationData("Rogueport Sewers Town: Star Piece 3", 78780129), + LocationData("Rogueport Sewers East Entrance: Ultra Mushroom", 78780131) +] + +sewers_westside_ground: typing.List[LocationData] = [ + LocationData("Rogueport Sewers West Enemy Hall: Gradual Syrup", 78780151), + LocationData("Rogueport Sewers West Enemy Hall: Slow Shroom", 78780152), + LocationData("Rogueport Sewers Spania Room: Defend Plus", 78780155), + LocationData("Rogueport Sewers Spania Room: Shine Sprite 1", 78780156), + LocationData("Rogueport Sewers Spania Room: Shine Sprite 2", 78780157), + LocationData("Rogueport Sewers Spania Room: Shine Sprite 3", 78780158), + LocationData("Rogueport Sewers West Entrance: Flower Saver P", 78780143), + LocationData("Rogueport Sewers West Entrance: Star Piece 1", 78780145) ] petal_right: typing.List[LocationData] = [ - LocationData("Petal Meadows Bridge Room: Coin 2", 0x49e22a), - LocationData("Petal Meadows Bridge Room: Fire Flower", 0x49e232), - LocationData("Petal Meadows Bridge Room: Mystery", 0x49e23f), - LocationData("Petal Meadows First Fort Exterior: Coin 1", 0x49e254), - LocationData("Petal Meadows First Fort Exterior: Coin 2", 0x49e261), - LocationData("Petal Meadows First Fort Exterior: POW Block", 0x49e269), - LocationData("Petal Meadows Second Fort Exterior: Coin", 0x49e271), - LocationData("Petal Meadows Second Fort Exterior: Fire Flower", 0x49e279), - LocationData("Petal Meadows Second Fort Exterior: Inn Coupon", 0x49e8fd), - LocationData("Petal Meadows Sewers West Key Room: Moon Stone", 0x49e90a), - LocationData("Petal Meadows Sewers: Multibounce", 0x49e91a), - LocationData("Petal Meadows Sewers East Key Room: Sun Stone", 0x1e9411), - LocationData("Petalburg Westside: Courage Shell", 0x22913a), - LocationData("Petalburg Westside: Fire Flower", 0x22890e), - LocationData("Petalburg Westside: Honey Syrup", 0x228775), - LocationData("Petalburg Westside: Mr. Softener", 0x1e9431), - LocationData("Petalburg Westside: Mushroom", 0x277ab2), - LocationData("Petalburg Westside: POW Block", 0x2779C8), - LocationData("Petalburg Westside: Star Piece", 0x1E9430), - LocationData("Petalburg Eastside: Mega Rush P", 0x1E9404), - LocationData("Petalburg Eastside: Star Piece", 0x1e9405), - LocationData("Petalburg Eastside: Turtley Leaf", 0x1e9435) + LocationData("Petal Meadows Bridge Room: Coin 2", 78780160), + LocationData("Petal Meadows Bridge Room: Fire Flower", 78780161), + LocationData("Petal Meadows Bridge Room: Mystery", 78780162), + LocationData("Petal Meadows First Fort Exterior: Coin 1", 78780163), + LocationData("Petal Meadows First Fort Exterior: Coin 2", 78780164), + LocationData("Petal Meadows First Fort Exterior: POW Block", 78780165), + LocationData("Petal Meadows Second Fort Exterior: Coin", 78780166), + LocationData("Petal Meadows Second Fort Exterior: Fire Flower", 78780167), + LocationData("Petal Meadows Second Fort Exterior: Inn Coupon", 78780168), + LocationData("Petal Meadows Sewers West Key Room: Moon Stone", 78780169), + LocationData("Petal Meadows Sewers: Multibounce", 78780170), + LocationData("Petal Meadows Sewers East Key Room: Sun Stone", 78780171), + LocationData("Petalburg Westside: Courage Shell", 78780172), + LocationData("Petalburg Westside: Fire Flower", 78780173), + LocationData("Petalburg Westside: Honey Syrup", 78780174), + LocationData("Petalburg Westside: Mr. Softener", 78780175), + LocationData("Petalburg Westside: Mushroom", 78780176), + LocationData("Petalburg Westside: POW Block", 78780177), + LocationData("Petalburg Westside: Star Piece", 78780178), + LocationData("Petalburg Eastside: Mega Rush P", 78780179), + LocationData("Petalburg Eastside: Star Piece", 78780180), + LocationData("Petalburg Eastside: Turtley Leaf", 78780181) ] petal_left: typing.List[LocationData] = [ - LocationData("Petal Meadows Entrance: Mushroom 1", 0x49e1d6), - LocationData("Petal Meadows Entrance: Mushroom 2", 0x49e1e3), - LocationData("Petal Meadows Entrance: Star Piece", 0x49e208), - LocationData("Petal Meadows Bridge Room: Koops", 0x49e210), - LocationData("Petal Meadows Bridge Room: Coin 1", 0x49e21d), - LocationData("Petal Meadows Bridge Room: Star Piece", 0x49e24c), - LocationData("Petal Meadows Field: 10 Coins", 0x1e9412), - LocationData("Petal Meadows Field: Close Call", 0x229345), - LocationData("Petal Meadows Field: Happy Heart", 0x22954d), - LocationData("Petal Meadows Field: Horsetail", 0x228a17) + LocationData("Petal Meadows Entrance: Mushroom 1", 78780182), + LocationData("Petal Meadows Entrance: Mushroom 2", 78780183), + LocationData("Petal Meadows Entrance: Star Piece", 78780184), + LocationData("Petal Meadows Bridge Room: Koops", 78780185), + LocationData("Petal Meadows Bridge Room: Coin 1", 78780186), + LocationData("Petal Meadows Bridge Room: Star Piece", 78780187), + LocationData("Petal Meadows Field: 10 Coins", 78780188), + LocationData("Petal Meadows Field: Close Call", 78780189), + LocationData("Petal Meadows Field: Happy Heart", 78780190), + LocationData("Petal Meadows Field: Horsetail", 78780191) ] hooktails_castle: typing.List[LocationData] = [ - LocationData("Hooktail's Castle Drawbridge: HP Plus", 0x49d680), - LocationData("Hooktail's Castle Entrance: Power Bounce", 0x49d688), - LocationData("Hooktail's Castle Red Bones Room: Castle Key", 0x49d690), - LocationData("Hooktail's Castle Red Bones Room: Star Piece", 0x49d69d), - LocationData("Hooktail's Castle Stair Switch Room: Castle Key", 0x49d6a5), - LocationData("Hooktail's Castle Stair Switch Room: Shine Sprite", 0x49d6d7), - LocationData("Hooktail's Castle Stair Switch Room: Star Piece 1", 0x49d6df), - LocationData("Hooktail's Castle Stair Switch Room: Star Piece 2", 0x49d70b), - LocationData("Hooktail's Castle Stair Central Staircase: Castle Key", 0x49d71b), - LocationData("Hooktail's Castle Stair Central Staircase: Last Stand P", 0x49d803), - LocationData("Hooktail's Castle Stair Central Staircase: Shine Sprite", 0x49d8da), - LocationData("Hooktail's Castle Stair Central Staircase: Star Piece", 0x49d977), - LocationData("Hooktail's Castle Prison Entrance: Paper Curse", 0x49d987), - LocationData("Hooktail's Castle Prison Entrance: Attack FX R", 0x49daa0), - LocationData("Hooktail's Castle Spikes Room: Black Key 2", 0x49dac5), - LocationData("Hooktail's Castle Life Shroom Room: Life Shroom", 0x49dad5), - LocationData("Hooktail's Castle Plane Rafters Room: Star Piece", 0x49dae2), - LocationData("Hooktail's Castle Hooktail's Room: Diamond Star", 0x49daf2), - LocationData("Hooktail's Castle Storeroom: Castle Key", 0x49dafa), - LocationData("Hooktail's Castle Storeroom: Honey Syrup", 0x49db8f), - LocationData("Hooktail's Castle Storeroom: Mushroom", 0x49dc18), - LocationData("Hooktail's Castle Storeroom: Shine Sprite", 0x49dc3d), - LocationData("Hooktail's Castle Up Arrow Room: Up Arrow", 0x49dd30) + LocationData("Hooktail's Castle Drawbridge: HP Plus", 78780192), + LocationData("Hooktail's Castle Entrance: Power Bounce", 78780193), + LocationData("Hooktail's Castle Red Bones Room: Castle Key", 78780194), + LocationData("Hooktail's Castle Red Bones Room: Star Piece", 78780195), + LocationData("Hooktail's Castle Stair Switch Room: Castle Key", 78780196), + LocationData("Hooktail's Castle Stair Switch Room: Shine Sprite", 78780197), + LocationData("Hooktail's Castle Stair Switch Room: Star Piece 1", 78780198), + LocationData("Hooktail's Castle Stair Switch Room: Star Piece 2", 78780199), + LocationData("Hooktail's Castle Stair Central Staircase: Castle Key", 78780200), + LocationData("Hooktail's Castle Stair Central Staircase: Last Stand P", 78780201), + LocationData("Hooktail's Castle Stair Central Staircase: Shine Sprite", 78780202), + LocationData("Hooktail's Castle Stair Central Staircase: Star Piece", 78780203), + LocationData("Hooktail's Castle Prison Entrance: Paper Curse", 78780204), + LocationData("Hooktail's Castle Prison Entrance: Attack FX R", 78780205), + LocationData("Hooktail's Castle Spikes Room: Black Key 2", 78780206), + LocationData("Hooktail's Castle Life Shroom Room: Life Shroom", 78780207), + LocationData("Hooktail's Castle Plane Rafters Room: Star Piece", 78780208), + LocationData("Hooktail's Castle Hooktail's Room: Diamond Star", 78780209), + LocationData("Hooktail's Castle Storeroom: Castle Key", 78780210), + LocationData("Hooktail's Castle Storeroom: Honey Syrup", 78780211), + LocationData("Hooktail's Castle Storeroom: Mushroom", 78780212), + LocationData("Hooktail's Castle Storeroom: Shine Sprite", 78780213), + LocationData("Hooktail's Castle Up Arrow Room: Up Arrow", 78780214) ] boggly_woods: typing.List[LocationData] = [ - LocationData("Boggly Woods Shadow Sirens Room: Necklace", 0x49e951), - LocationData("Boggly Woods Shadow Sirens Room: Honey Syrup", 0x49e959), - LocationData("Boggly Woods Shadow Sirens Room: Sleepy Sheep", 0x1e9441), - LocationData("Boggly Woods Tree View: Coin", 0x1e9434), - LocationData("Boggly Woods Tree View: Inn Coupon", 0x1e9444), - LocationData("Boggly Woods Plane Panel Room: P-Down D-Up P", 0x49dc65), - LocationData("Boggly Woods Plane Panel Room: Quake Hammer", 0x49dc5d), - LocationData("Boggly Woods Plane Panel Room: Shine Sprite", 0x49dc45), - LocationData("Boggly Woods Plane Panel Room: Star Piece", 0x49dc35), - LocationData("Boggly Woods Outside Flurrie's House: Star Piece 1", 0x1e9434), - LocationData("Boggly Woods Outside Flurrie's House: Star Piece 2", 0x1e9444), - LocationData("Boggly Woods Outside Flurrie's House: Volt Shroom", 0x49dc65), - LocationData("Boggly Woods Flurrie's House: Flurrie", 0x49dc5d), - LocationData("Boggly Woods Flurrie's House Backroom: Star Piece", 0x49dc45), - LocationData("Boggly Woods Flurrie's House Backroom: Super Appeal P", 0x49dc35), - LocationData("Boggly Woods Outside Great Tree: FP Plus", 0x49dc35) + LocationData("Boggly Woods Shadow Sirens Room: Necklace", 78780215), + LocationData("Boggly Woods Shadow Sirens Room: Honey Syrup", 78780216), + LocationData("Boggly Woods Shadow Sirens Room: Sleepy Sheep", 78780217), + LocationData("Boggly Woods Tree View: Coin", 78780218), + LocationData("Boggly Woods Tree View: Inn Coupon", 78780219), + LocationData("Boggly Woods Plane Panel Room: P-Down D-Up P", 78780220), + LocationData("Boggly Woods Plane Panel Room: Quake Hammer", 78780221), + LocationData("Boggly Woods Plane Panel Room: Shine Sprite", 78780222), + LocationData("Boggly Woods Plane Panel Room: Star Piece", 78780223), + LocationData("Boggly Woods Outside Flurrie's House: Star Piece 1", 78780224), + LocationData("Boggly Woods Outside Flurrie's House: Star Piece 2", 78780225), + LocationData("Boggly Woods Outside Flurrie's House: Volt Shroom", 78780226), + LocationData("Boggly Woods Flurrie's House: Flurrie", 78780227), + LocationData("Boggly Woods Flurrie's House Backroom: Star Piece", 78780228), + LocationData("Boggly Woods Flurrie's House Backroom: Super Appeal P", 78780229), + LocationData("Boggly Woods Outside Great Tree: FP Plus", 78780230) ] great_tree: typing.List[LocationData] = [ - LocationData("Great Tree Entrance: Coin", 0x49dd20), - LocationData("Great Tree Entrance: Emerald Star", 0x49dd38), - LocationData("Great Tree Entrance: Mystic Egg", 0x49dd48), - LocationData("Great Tree Entrance: Puni Orb", 0x49dd50), - LocationData("Great Tree 10-Puni Pedestal: Star Piece", 0x49dd5d), - LocationData("Great Tree Red/Blue Cages: Star Piece", 0x49dd6d), - LocationData("Great Tree Red Key Room: Coin", 0x49dd82), - LocationData("Great Tree Red Key Room: Mushroom", 0x49dd8a), - LocationData("Great Tree Red Key Room: Red Key", 0x49dd9f), - LocationData("Great Tree Red Key Room: Ultra Shroom", 0x49ddac), - LocationData("Great Tree Bubble Room: Shine Sprite", 0x49ddc1), - LocationData("Great Tree Bubble Room: Thunder Rage", 0x49ddc9), - LocationData("Great Tree Zigzag Room: Coin", 0x49ddd6), - LocationData("Great Tree Zigzag Room: Damage Dodge P", 0x49ddde), - LocationData("Great Tree Zigzag Room: Star Piece", 0x49ddee), - LocationData("Great Tree Shop: Honey Syrup", 0x49ddf6), - LocationData("Great Tree Shop: HP Drain", 0x49de06), - LocationData("Great Tree Shop: Ice Storm", 0x49de0e), - LocationData("Great Tree Shop: Mini Mr.Mini", 0x49de16), - LocationData("Great Tree Shop: Mushroom", 0x49de29), - LocationData("Great Tree Shop: Mystery", 0x49de39), - LocationData("Great Tree Red Key Room: Blue Key", 0x49de41), - LocationData("Great Tree Red Key Room: Charge", 0x49de49), - LocationData("Great Tree Red Key Room: Shine Sprite", 0x49de56), - LocationData("Great Tree Super Boots Room: Super Boots", 0x49de66), - LocationData("Great Tree 100-Puni Pedestal: Coin", 0x49de73), - LocationData("Great Tree 100-Puni Pedestal: Star Piece", 0x49de7b), - LocationData("Great Tree Elevator Pedestal: Mushroom", 0x49de83), - LocationData("Great Tree Escape Ambush Room: Star Piece", 0x49de8b), - LocationData("Great Tree Pool Room: Dizzy Dial", 0x49de98), - LocationData("Great Tree Pool Room: Shine Sprite", 0x49dea0), - LocationData("Great Tree Pool Room: Shrink Stomp", 0x49dea8), - LocationData("Great Tree Fake Pedestal: Star Piece", 0x49deb5), - LocationData("Great Tree Lower Duplex: Coin", 0x49dec2), - LocationData("Great Tree Middel Duplex: Shine Sprite", 0x49decf), - LocationData("Great Tree Upper Duplex: Power Punch", 0x49ded7) + LocationData("Great Tree Entrance: Coin", 78780231), + LocationData("Great Tree Entrance: Emerald Star", 78780232), + LocationData("Great Tree Entrance: Mystic Egg", 78780233), + LocationData("Great Tree Entrance: Puni Orb", 78780234), + LocationData("Great Tree 10-Puni Pedestal: Star Piece", 78780235), + LocationData("Great Tree Red/Blue Cages: Star Piece", 78780236), + LocationData("Great Tree Red Key Room: Coin", 78780237), + LocationData("Great Tree Red Key Room: Mushroom", 78780238), + LocationData("Great Tree Red Key Room: Red Key", 78780239), + LocationData("Great Tree Red Key Room: Ultra Shroom", 78780240), + LocationData("Great Tree Bubble Room: Shine Sprite", 78780241), + LocationData("Great Tree Bubble Room: Thunder Rage", 78780242), + LocationData("Great Tree Zigzag Room: Coin", 78780243), + LocationData("Great Tree Zigzag Room: Damage Dodge P", 78780244), + LocationData("Great Tree Zigzag Room: Star Piece", 78780245), + LocationData("Great Tree Shop: Honey Syrup", 78780246), + LocationData("Great Tree Shop: HP Drain", 78780247), + LocationData("Great Tree Shop: Ice Storm", 78780248), + LocationData("Great Tree Shop: Mini Mr.Mini", 78780249), + LocationData("Great Tree Shop: Mushroom", 78780250), + LocationData("Great Tree Shop: Mystery", 78780251), + LocationData("Great Tree Red Key Room: Blue Key", 78780252), + LocationData("Great Tree Red Key Room: Charge", 78780253), + LocationData("Great Tree Red Key Room: Shine Sprite", 78780254), + LocationData("Great Tree Super Boots Room: Super Boots", 78780255), + LocationData("Great Tree 100-Puni Pedestal: Coin", 78780256), + LocationData("Great Tree 100-Puni Pedestal: Star Piece", 78780257), + LocationData("Great Tree Elevator Pedestal: Mushroom", 78780258), + LocationData("Great Tree Escape Ambush Room: Star Piece", 78780259), + LocationData("Great Tree Pool Room: Dizzy Dial", 78780260), + LocationData("Great Tree Pool Room: Shine Sprite", 78780261), + LocationData("Great Tree Pool Room: Shrink Stomp", 78780262), + LocationData("Great Tree Fake Pedestal: Star Piece", 78780263), + LocationData("Great Tree Lower Duplex: Coin", 78780264), + LocationData("Great Tree Middle Duplex: Shine Sprite", 78780265), + LocationData("Great Tree Upper Duplex: Power Punch", 78780266) ] glitzville: typing.List[LocationData] = [ - LocationData("Glitzville Main Square: Coin", 0x49d7a4), - LocationData("Glitzville Main Square: Earth Quake", 0x49d7a4), - LocationData("Glitzville Main Square: Hot Dog", 0x49d7a4), - LocationData("Glitzville Main Square: Inn Coupon", 0x49d7a4), - LocationData("Glitzville Main Square: Point Swap", 0x49d7a4), - LocationData("Glitzville Main Square: Power Plus P", 0x49d7a4), - LocationData("Glitzville Main Square: Power Punch", 0x49d7a4), - LocationData("Glitzville Main Square: Repel Cape", 0x49d7a4), - LocationData("Glitzville Main Square: Shine Sprite", 0x49d7a4), - LocationData("Glitzville Main Square: Star Piece 1", 0x49d7a4), - LocationData("Glitzville Main Square: Star Piece 2", 0x49d7a4), - LocationData("Glitzville Main Square: Star Piece 3", 0x49d7a4), - LocationData("Glitzville Main Square: Star Piece 4", 0x49d7a4), - LocationData("Glitzville Main Square: Star Piece 5", 0x49d7a4), - LocationData("Glitzville Main Square: Storage Key 1", 0x49d7a4), - LocationData("Glitzville Main Square: Super Hammer", 0x49d7a4), - LocationData("Glitzville Main Square: Super Shroom", 0x49d7a4), - LocationData("Glitzville Main Square: Thunder Bolt", 0x49d7a4), - LocationData("Glitzville Lobby: Star Piece", 0x49d7ac), - LocationData("Glitzville Lobby: Storage Key 2", 0x49d7b4), - LocationData("Glitzville Arena: Gold Star", 0x49d7bc), - LocationData("Glitzville Hall: Last Stand", 0x49d7d8), - LocationData("Glitzville Promoter's Office: Star Piece 1", 0x49d7e0), - LocationData("Glitzville Promoter's Office: Star Piece 2", 0x49d7e8), - LocationData("Glitzville Storage Room: Charge P", 0x49d7f0), - LocationData("Glitzville Storage Room: HP Plus P", 0x49d7f0), - LocationData("Glitzville Storage Room: Shine Sprite", 0x49d7f0), - LocationData("Glitzville Storage Room: Star Piece", 0x49d7f0), - LocationData("Glitzville Major-League Room: Champ's Belt", 0x1e9433), - LocationData("Glitzville Major-League Room: Ice Storm", 0x1e9433), - LocationData("Glitzville Minor-League Room: Dubious Paper", 0x1e9432), - LocationData("Glitzville Minor-League Room: Yoshi", 0x1e9432), - LocationData("Glitzville Storage Back Room: Star Piece", 0x251347) + LocationData("Glitzville Main Square: Coin", 78780267), + LocationData("Glitzville Main Square: Earth Quake", 78780268), + LocationData("Glitzville Main Square: Hot Dog", 78780269), + LocationData("Glitzville Main Square: Inn Coupon", 78780270), + LocationData("Glitzville Main Square: Point Swap", 78780271), + LocationData("Glitzville Main Square: Power Plus P", 78780272), + LocationData("Glitzville Main Square: Power Punch", 78780273), + LocationData("Glitzville Main Square: Repel Cape", 78780274), + LocationData("Glitzville Main Square: Shine Sprite", 78780275), + LocationData("Glitzville Main Square: Star Piece 1", 78780276), + LocationData("Glitzville Main Square: Star Piece 2", 78780277), + LocationData("Glitzville Main Square: Star Piece 3", 78780278), + LocationData("Glitzville Main Square: Star Piece 4", 78780279), + LocationData("Glitzville Main Square: Star Piece 5", 78780280), + LocationData("Glitzville Main Square: Storage Key 1", 78780281), + LocationData("Glitzville Main Square: Super Hammer", 78780282), + LocationData("Glitzville Main Square: Super Shroom", 78780283), + LocationData("Glitzville Main Square: Thunder Bolt", 78780284), + LocationData("Glitzville Lobby: Star Piece", 78780285), + LocationData("Glitzville Lobby: Storage Key 2", 78780286), + LocationData("Glitzville Arena: Gold Star", 78780287), + LocationData("Glitzville Hall: Last Stand", 78780288), + LocationData("Glitzville Promoter's Office: Star Piece 1", 78780289), + LocationData("Glitzville Promoter's Office: Star Piece 2", 78780290), + LocationData("Glitzville Storage Room: Charge P", 78780291), + LocationData("Glitzville Storage Room: HP Plus P", 78780292), + LocationData("Glitzville Storage Room: Shine Sprite", 78780293), + LocationData("Glitzville Storage Room: Star Piece", 78780294), + LocationData("Glitzville Major-League Room: Champ's Belt", 78780295), + LocationData("Glitzville Major-League Room: Ice Storm", 78780296), + LocationData("Glitzville Minor-League Room: Dubious Paper", 78780297), + LocationData("Glitzville Minor-League Room: Yoshi", 78780298), + LocationData("Glitzville Storage Back Room: Star Piece", 78780299) ] twilight_town: typing.List[LocationData] = [ - LocationData("Twilight Town Leftside: Coin", 0x49e16f), - LocationData("Twilight Town Leftside: Peachy Peach", 0x49e16f), - LocationData("Twilight Town Leftside: Star Piece 1", 0x49e16f), - LocationData("Twilight Town Leftside: Star Piece 2", 0x49e16f), - LocationData("Twilight Town Leftside: Superbombomb", 0x49e16f), - LocationData("Twilight Town Leftside: Vivian", 0x49e16f), - LocationData("Twilight Town Rightside: Boo's Sheet", 0x49e194), - LocationData("Twilight Town Rightside: Defend Plus", 0x49e194), - LocationData("Twilight Town Rightside: Inn Coupon", 0x49e194), - LocationData("Twilight Town Rightside: Jammin' Jelly", 0x49e194), - LocationData("Twilight Town Rightside: Life Shroom 1", 0x49e194), - LocationData("Twilight Town Rightside: Life Shroom 2", 0x49e194), - LocationData("Twilight Town Rightside: Maple Syrup", 0x49e194), - LocationData("Twilight Town Rightside: Spite Pouch", 0x49e194), - LocationData("Twilight Town Rightside: Star Piece", 0x49e194), - LocationData("Twilight Town Rightside: Stopwatch", 0x49e194), - LocationData("Twilight Town Rightside: Super Shroom", 0x49e194), - LocationData("Twilight Town Rightside: Thunder Rage", 0x49e194), - LocationData("Twilight Town Rightside: Tube Curse", 0x49e194) + LocationData("Twilight Town Leftside: Coin", 78780300), + LocationData("Twilight Town Leftside: Peachy Peach", 78780301), + LocationData("Twilight Town Leftside: Star Piece 1", 78780302), + LocationData("Twilight Town Leftside: Star Piece 2", 78780303), + LocationData("Twilight Town Leftside: Superbombomb", 78780304), + LocationData("Twilight Town Leftside: Vivian", 78780305), + LocationData("Twilight Town Rightside: Boo's Sheet", 78780306), + LocationData("Twilight Town Rightside: Defend Plus", 78780307), + LocationData("Twilight Town Rightside: Inn Coupon", 78780308), + LocationData("Twilight Town Rightside: Jammin' Jelly", 78780309), + LocationData("Twilight Town Rightside: Life Shroom 1", 78780310), + LocationData("Twilight Town Rightside: Life Shroom 2", 78780311), + LocationData("Twilight Town Rightside: Maple Syrup", 78780312), + LocationData("Twilight Town Rightside: Spite Pouch", 78780313), + LocationData("Twilight Town Rightside: Star Piece", 78780314), + LocationData("Twilight Town Rightside: Stopwatch", 78780315), + LocationData("Twilight Town Rightside: Super Shroom", 78780316), + LocationData("Twilight Town Rightside: Thunder Rage", 78780317), + LocationData("Twilight Town Rightside: Tube Curse", 78780318), + LocationData("Rogueport Sewers West Entrance: Shine Sprite", 78780144), + LocationData("Rogueport Sewers West Entrance: Star Piece 2", 78780146) ] twilight_trail: typing.List[LocationData] = [ - LocationData("Twilight Trail Entrance: 10 Coins", 0x49e0a5), - LocationData("Twilight Trail Entrance: Black Key 3", 0x49e0ad), - LocationData("Twilight Trail Hyper Goomba Room: 10 Coins", 0x49e0b5), - LocationData("Twilight Trail Hyper Goomba Room: Coin", 0x49e0b5), - LocationData("Twilight Trail Hyper Goomba Room: Super Shroom", 0x49e0b5), - LocationData("Twilight Trail Fallen Tree: Shop Key", 0x49e0bd), - LocationData("Twilight Trail Fallen Tree: Star Piece 1", 0x49e0bd), - LocationData("Twilight Trail Fallen Tree: Star Piece 2", 0x49e0bd), - LocationData("Twilight Trail Dark Woods First Room: 10 Coins", 0x49e0c5), - LocationData("Twilight Trail Dark Woods First Room: Earthquake", 0x49e0c5), - LocationData("Twilight Trail Dark Woods Second Room: Hammer Throw", 0x49e0cd), - LocationData("Twilight Trail Dark Woods Third Room: 10 Coins", 0x49e057), - LocationData("Twilight Trail Dark Woods Third Room: Shine Sprite", 0x49e057), - LocationData("Twilight Trail Steeple Exterior: Coin", 0x49e0da), - LocationData("Twilight Trail Steeple Exterior: Star Piece", 0x49e0da) + LocationData("Twilight Trail Entrance: 10 Coins", 78780319), + LocationData("Twilight Trail Entrance: Black Key 3", 78780320), + LocationData("Twilight Trail Hyper Goomba Room: 10 Coins", 78780321), + LocationData("Twilight Trail Hyper Goomba Room: Coin", 78780322), + LocationData("Twilight Trail Hyper Goomba Room: Super Shroom", 78780323), + LocationData("Twilight Trail Fallen Tree: Shop Key", 78780324), + LocationData("Twilight Trail Fallen Tree: Star Piece 1", 78780325), + LocationData("Twilight Trail Fallen Tree: Star Piece 2", 78780326), + LocationData("Twilight Trail Dark Woods First Room: 10 Coins", 78780327), + LocationData("Twilight Trail Dark Woods First Room: Earthquake", 78780328), + LocationData("Twilight Trail Dark Woods Second Room: Hammer Throw", 78780329), + LocationData("Twilight Trail Dark Woods Third Room: 10 Coins", 78780330), + LocationData("Twilight Trail Dark Woods Third Room: Shine Sprite", 78780331), + LocationData("Twilight Trail Steeple Exterior: Coin", 78780332), + LocationData("Twilight Trail Steeple Exterior: Star Piece", 78780333) ] creepy_steeple: typing.List[LocationData] = [ - LocationData("Creepy Steeple Main Hall: Lucky Start", 0x49e2dc), - LocationData("Creepy Steeple Main Hall: Steeple Key 1", 0x49e2dc), - LocationData("Creepy Steeple North Hall: Golden Leaf", 0x49e2e9), - LocationData("Creepy Steeple Upper Room: Ruby Star", 0x49e2f6), - LocationData("Creepy Steeple Cookbook Room: Cookbook", 0x49e2fe), - LocationData("Creepy Steeple Cookbook Room: Ice Smash", 0x49e2fe), - LocationData("Creepy Steeple Cookbook Room: Shine Sprite", 0x49e2fe), - LocationData("Creepy Steeple Cookbook Room: Star Piece", 0x49e2fe), - LocationData("Creepy Steeple Under Statue: Flower Saver", 0x49e306), - LocationData("Creepy Steeple Boo Chest Room: Star Piece", 0x49e30e), - LocationData("Creepy Steeple Boo Chest Room: Ultra Mushroom", 0x49e30e), - LocationData("Creepy Steeple Parrot Room: Mr. Softener", 0x49e316), - LocationData("Creepy Steeple Parrot Room: Power Plus", 0x49e316), - LocationData("Creepy Steeple Parrot Room: Star Piece", 0x49e316), - LocationData("Creepy Steeple Parrot Room: Steeple Key 2", 0x49e316), - LocationData("Creepy Steeple Parrot Room: The Letter \"P\"", 0x49e316), - LocationData("Creepy Steeple Well Entrance: Shine Sprite", 0x49e323), - LocationData("Creepy Steeple Buzzy Room: Tornado Jump", 0x49e32b), - LocationData("Creepy Steeple Underground Tube Passage: Shine Sprite", 0x49e333) + LocationData("Creepy Steeple Main Hall: Lucky Start", 78780434), + LocationData("Creepy Steeple Main Hall: Steeple Key 1", 78780435), + LocationData("Creepy Steeple North Hall: Golden Leaf", 78780436), + LocationData("Creepy Steeple Upper Room: Ruby Star", 78780437), + LocationData("Creepy Steeple Cookbook Room: Cookbook", 78780438), + LocationData("Creepy Steeple Cookbook Room: Ice Smash", 78780439), + LocationData("Creepy Steeple Cookbook Room: Shine Sprite", 78780440), + LocationData("Creepy Steeple Cookbook Room: Star Piece", 78780441), + LocationData("Creepy Steeple Under Statue: Flower Saver", 78780442), + LocationData("Creepy Steeple Boo Chest Room: Star Piece", 78780443), + LocationData("Creepy Steeple Boo Chest Room: Ultra Mushroom", 78780444), + LocationData("Creepy Steeple Parrot Room: Mr. Softener", 78780445), + LocationData("Creepy Steeple Parrot Room: Power Plus", 78780446), + LocationData("Creepy Steeple Parrot Room: Star Piece", 78780447), + LocationData("Creepy Steeple Parrot Room: Steeple Key 2", 78780448), + LocationData("Creepy Steeple Parrot Room: The Letter \"P\"", 78780449), + LocationData("Creepy Steeple Well Entrance: Shine Sprite", 78780450), + LocationData("Creepy Steeple Buzzy Room: Tornado Jump", 78780451), + LocationData("Creepy Steeple Underground Tube Passage: Shine Sprite", 78780452) ] keelhaul_key: typing.List[LocationData] = [ - LocationData("Keelhaul Key Landing Site: Star Piece", 0x49e37d), - LocationData("Keelhaul Key Landing Site: Whacka Bump 1", 0x49e37d), - LocationData("Keelhaul Key Landing Site: Whacka Bump 2", 0x49e37d), - LocationData("Keelhaul Key Landing Site: Whacka Bump 3", 0x49e37d), - LocationData("Keelhaul Key Landing Site: Whacka Bump 4", 0x49e37d), - LocationData("Keelhaul Key Landing Site: Whacka Bump 5", 0x49e37d), - LocationData("Keelhaul Key Landing Site: Whacka Bump 6", 0x49e37d), - LocationData("Keelhaul Key Landing Site: Whacka Bump 7", 0x49e37d), - LocationData("Keelhaul Key Town: Chuckola Cola", 0x49e37d), - LocationData("Keelhaul Key Town: Fire Flower", 0x49e37d), - LocationData("Keelhaul Key Town: Fright Mask", 0x49e37d), - LocationData("Keelhaul Key Town: Honey Syrup", 0x49e37d), - LocationData("Keelhaul Key Town: Ice Storm", 0x49e37d), - LocationData("Keelhaul Key Town: Sleepy Sheep", 0x49e37d), - LocationData("Keelhaul Key Town: Star Piece 1", 0x49e37d), - LocationData("Keelhaul Key Town: Star Piece 2", 0x49e37d), - LocationData("Keelhaul Key Town: Super Shroom", 0x49e37d), - LocationData("Keelhaul Key Jungle Entrance: Coin", 0x49e37d), - LocationData("Keelhaul Key Jungle Entrance: Courage Shell", 0x49e37d), - LocationData("Keelhaul Key Jungle Entrance: Head Rattle", 0x49e37d), - LocationData("Keelhaul Key Jungle Entrance: Keel Mango", 0x49e37d), - LocationData("Keelhaul Key Jungle Entrance: Star Piece", 0x49e37d), - LocationData("Keelhaul Key Jungle Stupid Room: 10 Coins", 0x49e37d), - LocationData("Keelhaul Key Jungle Stupid Room: Coin 1", 0x49e37d), - LocationData("Keelhaul Key Jungle Stupid Room: Coin 2", 0x49e37d), - LocationData("Keelhaul Key Jungle Stupid Room: Jammin' Jelly", 0x49e37d), - LocationData("Keelhaul Key Jungle Stupid Room: Mini Mr.Mini", 0x49e37d), - LocationData("Keelhaul Key Jungle Stupid Room: Shine Sprite", 0x49e37d), - LocationData("Keelhaul Key Jungle Stupid Room: Star Piece", 0x49e37d), - LocationData("Keelhaul Key Jungle Stupid Room: Thunder Rage", 0x49e37d), - LocationData("Keelhaul Key Jungle Bridge: Coconut 1", 0x49e37d), - LocationData("Keelhaul Key Jungle Bridge: Coconut 2", 0x49e37d), - LocationData("Keelhaul Key Jungle Bridge: Ice Power", 0x49e37d), - LocationData("Keelhaul Key Jungle Bridge: Inn Coupon", 0x49e37d), - LocationData("Keelhaul Key Jungle Bridge: Shine Sprite", 0x49e37d), - LocationData("Keelhaul Key Grotto Entrance: Bobbery", 0x49e37d), - LocationData("Keelhaul Key Grotto Entrance: Skull Gem", 0x49e37d), - LocationData("Keelhaul Key Grotto Entrance: Spite Pouch", 0x49e37d), - LocationData("Keelhaul Key Grotto Entrance: Star Piece", 0x49e37d), - LocationData("Keelhaul Key Grotto Entrance: Wedding Ring", 0x49e37d) + LocationData("Keelhaul Key Landing Site: Star Piece", 78780453), + LocationData("Keelhaul Key Landing Site: Whacka Bump 1", 78780454), + LocationData("Keelhaul Key Landing Site: Whacka Bump 2", 78780455), + LocationData("Keelhaul Key Landing Site: Whacka Bump 3", 78780456), + LocationData("Keelhaul Key Landing Site: Whacka Bump 4", 78780457), + LocationData("Keelhaul Key Landing Site: Whacka Bump 5", 78780458), + LocationData("Keelhaul Key Landing Site: Whacka Bump 6", 78780459), + LocationData("Keelhaul Key Landing Site: Whacka Bump 7", 78780460), + LocationData("Keelhaul Key Town: Chuckola Cola", 78780461), + LocationData("Keelhaul Key Town: Fire Flower", 78780462), + LocationData("Keelhaul Key Town: Fright Mask", 78780463), + LocationData("Keelhaul Key Town: Honey Syrup", 78780464), + LocationData("Keelhaul Key Town: Ice Storm", 78780465), + LocationData("Keelhaul Key Town: Sleepy Sheep", 78780466), + LocationData("Keelhaul Key Town: Star Piece 1", 78780467), + LocationData("Keelhaul Key Town: Star Piece 2", 78780468), + LocationData("Keelhaul Key Town: Super Shroom", 78780469), + LocationData("Keelhaul Key Jungle Entrance: Coin", 78780470), + LocationData("Keelhaul Key Jungle Entrance: Courage Shell", 78780471), + LocationData("Keelhaul Key Jungle Entrance: Head Rattle", 78780472), + LocationData("Keelhaul Key Jungle Entrance: Keel Mango", 78780473), + LocationData("Keelhaul Key Jungle Entrance: Star Piece", 78780474), + LocationData("Keelhaul Key Jungle Stupid Room: 10 Coins", 78780475), + LocationData("Keelhaul Key Jungle Stupid Room: Coin 1", 78780476), + LocationData("Keelhaul Key Jungle Stupid Room: Coin 2", 78780477), + LocationData("Keelhaul Key Jungle Stupid Room: Jammin' Jelly", 78780478), + LocationData("Keelhaul Key Jungle Stupid Room: Mini Mr.Mini", 78780479), + LocationData("Keelhaul Key Jungle Stupid Room: Shine Sprite", 78780480), + LocationData("Keelhaul Key Jungle Stupid Room: Star Piece", 78780481), + LocationData("Keelhaul Key Jungle Stupid Room: Thunder Rage", 78780482), + LocationData("Keelhaul Key Jungle Bridge: Coconut 1", 78780483), + LocationData("Keelhaul Key Jungle Bridge: Coconut 2", 78780484), + LocationData("Keelhaul Key Jungle Bridge: Ice Power", 78780485), + LocationData("Keelhaul Key Jungle Bridge: Inn Coupon", 78780486), + LocationData("Keelhaul Key Jungle Bridge: Shine Sprite", 78780487), + LocationData("Keelhaul Key Grotto Entrance: Bobbery", 78780488), + LocationData("Keelhaul Key Grotto Entrance: Skull Gem", 78780489), + LocationData("Keelhaul Key Grotto Entrance: Spite Pouch", 78780490), + LocationData("Keelhaul Key Grotto Entrance: Star Piece", 78780491), + LocationData("Keelhaul Key Grotto Entrance: Wedding Ring", 78780492) ] pirates_grotto: typing.List[LocationData] = [ - LocationData("Pirate's Grotto Entrance: Ruin Powder", 0x49e3a6), - LocationData("Pirate's Grotto Gate Handle Room: Gate Handle", 0x49e3a6), - LocationData("Pirate's Grotto Gate Handle Room: Shine Sprite", 0x49e3a6), - LocationData("Pirate's Grotto Gate Handle Room: Star Piece", 0x49e3a6), - LocationData("Pirate's Grotto Sluice Gate: Star Piece", 0x49e3a6), - LocationData("Pirate's Grotto Storeroom: Grotto Key", 0x49e3a6), - LocationData("Pirate's Grotto Storeroom: Shine Sprite", 0x49e3a6), - LocationData("Pirate's Grotto Storeroom: Star Piece", 0x49e3a6), - LocationData("Pirate's Grotto Staircase: Coin", 0x49e3a6), - LocationData("Pirate's Grotto Staircase: Defend Plus P", 0x49e3a6), - LocationData("Pirate's Grotto Staircase: Shine Sprite", 0x49e3a6), - LocationData("Pirate's Grotto Parabuzzy Room: Star Piece", 0x49e3a6), - LocationData("Pirate's Grotto Chest Boat: Black Key 4", 0x49e3a6), - LocationData("Pirate's Grotto Chest Boat: Boat Curse", 0x49e3a6), - LocationData("Pirate's Grotto Chest Boat: P-Down D-Up", 0x49e3a6), - LocationData("Pirate's Grotto Barrel Room: 10 Coins", 0x49e3a6), - LocationData("Pirate's Grotto Barrel Room: Shine Sprite", 0x49e3a6), - LocationData("Pirate's Grotto Spike Wall Room: Shine Sprite", 0x49e3a6), - LocationData("Pirate's Grotto Cortez' Hoard: Sapphire Star", 0x49e3a6) + LocationData("Pirate's Grotto Entrance: Ruin Powder", 78780493), + LocationData("Pirate's Grotto Gate Handle Room: Gate Handle", 78780494), + LocationData("Pirate's Grotto Gate Handle Room: Shine Sprite", 78780495), + LocationData("Pirate's Grotto Gate Handle Room: Star Piece", 78780496), + LocationData("Pirate's Grotto Sluice Gate: Star Piece", 78780497), + LocationData("Pirate's Grotto Storeroom: Grotto Key", 78780498), + LocationData("Pirate's Grotto Storeroom: Shine Sprite", 78780499), + LocationData("Pirate's Grotto Storeroom: Star Piece", 78780500), + LocationData("Pirate's Grotto Staircase: Coin", 78780501), + LocationData("Pirate's Grotto Staircase: Defend Plus P", 78780502), + LocationData("Pirate's Grotto Staircase: Shine Sprite", 78780503), + LocationData("Pirate's Grotto Parabuzzy Room: Star Piece", 78780504), + LocationData("Pirate's Grotto Chest Boat: Black Key 4", 78780505), + LocationData("Pirate's Grotto Chest Boat: Boat Curse", 78780506), + LocationData("Pirate's Grotto Chest Boat: P-Down D-Up", 78780507), + LocationData("Pirate's Grotto Barrel Room: 10 Coins", 78780508), + LocationData("Pirate's Grotto Barrel Room: Shine Sprite", 78780509), + LocationData("Pirate's Grotto Spike Wall Room: Shine Sprite", 78780510), + LocationData("Pirate's Grotto Cortez' Hoard: Sapphire Star", 78780511) ] excess_express: typing.List[LocationData] = [ - LocationData("Excess Express Locomotive: Autograph", 0x49e51e), - LocationData("Excess Express Locomotive: Star Piece", 0x49e526), - LocationData("Excess Express Front Passenger Car: Vital Paper", 0x49e52e), - LocationData("Excess Express Front Passenger Car: 30 Coins", 0x49e52e), - LocationData("Excess Express Middle Passenger Car: Blanket", 0x49e53b), - LocationData("Excess Express Middle Passenger Car: Briefcase", 0x49e53b), - LocationData("Excess Express Middle Passenger Car: Dried Shroom", 0x49e53b), - LocationData("Excess Express Middle Passenger Car: Galley Pot", 0x49e53b), - LocationData("Excess Express Middle Passenger Car: Gold Ring", 0x49e53b), - LocationData("Excess Express Middle Passenger Car: Shell Earrings", 0x49e53b), - LocationData("Excess Express Middle Passenger Car: Shine Sprite", 0x49e53b), - LocationData("Excess Express Middle Passenger Car: Star Piece", 0x49e53b), - LocationData("Excess Express Dining Car: Boo's Sheet", 0x49e53b), - LocationData("Excess Express Dining Car: Maple Syrup", 0x49e53b), - LocationData("Excess Express Dining Car: Mystery", 0x49e53b), - LocationData("Excess Express Dining Car: Star Piece 1", 0x49e53b), - LocationData("Excess Express Dining Car: Star Piece 2", 0x49e53b), - LocationData("Excess Express Dining Car: Super Shroom", 0x49e53b), - LocationData("Excess Express Dining Car: Tasty Tonic", 0x49e53b), - LocationData("Excess Express Dining Car: Thunder Rage", 0x49e53b), - LocationData("Excess Express Back Passenger Car: Mushroom", 0x49e53b), - LocationData("Excess Express Back Passenger Car: Shine Sprite", 0x49e53b), - LocationData("Excess Express Back Passenger Car: Star Piece", 0x49e53b), - LocationData("Excess Express Storage Car: Ragged Diary", 0x49e53b) + LocationData("Excess Express Locomotive: Autograph", 78780512), + LocationData("Excess Express Locomotive: Star Piece", 78780513), + LocationData("Excess Express Front Passenger Car: Vital Paper", 78780514), + LocationData("Excess Express Front Passenger Car: 30 Coins", 78780515), + LocationData("Excess Express Middle Passenger Car: Blanket", 78780516), + LocationData("Excess Express Middle Passenger Car: Briefcase", 78780517), + LocationData("Excess Express Middle Passenger Car: Dried Shroom", 78780518), + LocationData("Excess Express Middle Passenger Car: Galley Pot", 78780519), + LocationData("Excess Express Middle Passenger Car: Gold Ring", 78780520), + LocationData("Excess Express Middle Passenger Car: Shell Earrings", 78780521), + LocationData("Excess Express Middle Passenger Car: Shine Sprite", 78780522), + LocationData("Excess Express Middle Passenger Car: Star Piece", 78780523), + LocationData("Excess Express Dining Car: Boo's Sheet", 78780524), + LocationData("Excess Express Dining Car: Maple Syrup", 78780525), + LocationData("Excess Express Dining Car: Mystery", 78780526), + LocationData("Excess Express Dining Car: Star Piece 1", 78780527), + LocationData("Excess Express Dining Car: Star Piece 2", 78780528), + LocationData("Excess Express Dining Car: Super Shroom", 78780529), + LocationData("Excess Express Dining Car: Tasty Tonic", 78780530), + LocationData("Excess Express Dining Car: Thunder Rage", 78780531), + LocationData("Excess Express Back Passenger Car: Mushroom", 78780532), + LocationData("Excess Express Back Passenger Car: Shine Sprite", 78780533), + LocationData("Excess Express Back Passenger Car: Star Piece", 78780534), + LocationData("Excess Express Storage Car: Ragged Diary", 78780535) ] riverside: typing.List[LocationData] = [ - LocationData("Riverside Station Drawbridge: Station Key 1", 0x49e5fd), - LocationData("Riverside Station Entrance: Close Call P", 0x49e66b), - LocationData("Riverside Station Clockwork Room: Star Piece", 0x49e66b), - LocationData("Riverside Station Clockwork Room: Station Key 2", 0x49e66b), - LocationData("Riverside Station Back Exterior: HP Plus", 0x49e66b), - LocationData("Riverside Station Back Exterior: Shine Sprite", 0x49e66b), - LocationData("Riverside Station Back Exterior: Thunder Rage", 0x49e66b), - LocationData("Riverside Station Tube Mode Maze: Dried Shroom", 0x49e66b), - LocationData("Riverside Station Tube Mode Maze: P-Up D-Down", 0x49e66b), - LocationData("Riverside Station Ultra Boots Room: Elevator Key", 0x49e66b), - LocationData("Riverside Station Ultra Boots Room: Ultra Boots", 0x49e66b), - LocationData("Riverside Station Goomba Room: Shine Sprite", 0x49e66b) + LocationData("Riverside Station Drawbridge: Station Key 1", 78780536), + LocationData("Riverside Station Entrance: Close Call P", 78780537), + LocationData("Riverside Station Clockwork Room: Star Piece", 78780538), + LocationData("Riverside Station Clockwork Room: Station Key 2", 78780539), + LocationData("Riverside Station Back Exterior: HP Plus", 78780540), + LocationData("Riverside Station Back Exterior: Shine Sprite", 78780541), + LocationData("Riverside Station Back Exterior: Thunder Rage", 78780542), + LocationData("Riverside Station Tube Mode Maze: Dried Shroom", 78780543), + LocationData("Riverside Station Tube Mode Maze: P-Up D-Down", 78780544), + LocationData("Riverside Station Ultra Boots Room: Elevator Key", 78780545), + LocationData("Riverside Station Ultra Boots Room: Ultra Boots", 78780546), + LocationData("Riverside Station Goomba Room: Shine Sprite", 78780547) ] poshley_heights: typing.List[LocationData] = [ - LocationData("Poshley Heights Station: Goldbob Guide", 0x49ea1c), - LocationData("Poshley Heights Station: HP Drain P", 0x49ea1c), - LocationData("Poshley Heights Station: Star Piece 1", 0x49ea1c), - LocationData("Poshley Heights Station: Star Piece 2", 0x49ea1c), - LocationData("Poshley Heights Station: Star Piece 3", 0x49ea1c), - LocationData("Poshley Heights Sanctum Exterior: Shine Sprite", 0x49ea1c), - LocationData("Poshley Heights Sanctum Altar: Garnet Star", 0x49ea1c), - LocationData("Poshley Heights Sanctum Altar: L Emblem", 0x49ea1c), - LocationData("Poshley Heights Sanctum Altar: Shine Sprite", 0x49ea1c), - LocationData("Poshley Heights Downtown: Fresh Pasta", 0x49ea1c), - LocationData("Poshley Heights Downtown: Inn Coupon", 0x49ea1c), - LocationData("Poshley Heights Downtown: Omelette Meal", 0x49ea1c), - LocationData("Poshley Heights Downtown: Star Piece", 0x49ea1c), + LocationData("Poshley Heights Station: Goldbob Guide", 78780548), + LocationData("Poshley Heights Station: HP Drain P", 78780549), + LocationData("Poshley Heights Station: Star Piece 1", 78780550), + LocationData("Poshley Heights Station: Star Piece 2", 78780551), + LocationData("Poshley Heights Station: Star Piece 3", 78780552), + LocationData("Poshley Heights Sanctum Exterior: Shine Sprite", 78780553), + LocationData("Poshley Heights Sanctum Altar: Garnet Star", 78780554), + LocationData("Poshley Heights Sanctum Altar: L Emblem", 78780555), + LocationData("Poshley Heights Sanctum Altar: Shine Sprite", 78780556), + LocationData("Poshley Heights Downtown: Fresh Pasta", 78780557), + LocationData("Poshley Heights Downtown: Inn Coupon", 78780558), + LocationData("Poshley Heights Downtown: Omelette Meal", 78780559), + LocationData("Poshley Heights Downtown: Star Piece", 78780560) ] fahr_outpost: typing.List[LocationData] = [ - LocationData("Fahr Outpost Entrance: Double Dip P", 0x49e6e5), - LocationData("Fahr Outpost Entrance: Star Piece", 0x49e6e5), - LocationData("Fahr Outpost Town Outskirts: Star Piece", 0x49e6e5), - LocationData("Fahr Outpost Town: Ice Storm", 0x49e6e5), - LocationData("Fahr Outpost Town: Inn Coupon", 0x49e6e5), - LocationData("Fahr Outpost Town: Maple Syrup", 0x49e6e5), - LocationData("Fahr Outpost Town: Ruin Powder", 0x49e6e5), - LocationData("Fahr Outpost Town: Shine Sprite", 0x49e6e5), - LocationData("Fahr Outpost Town: Shooting Star", 0x49e6e5), - LocationData("Fahr Outpost Town: Space Food", 0x49e6e5), - LocationData("Fahr Outpost Town: Star Piece 1", 0x49e6e5), - LocationData("Fahr Outpost Town: Star Piece 2", 0x49e6e5), - LocationData("Fahr Outpost Town: Stopwatch", 0x49e6e5), - LocationData("Fahr Outpost Town: Super Shroom", 0x49e6e5), - LocationData("Fahr Outpost West Enemy Room: Shine Sprite", 0x49e6e5), - LocationData("Fahr Outpost West Enemy Room: Star Piece", 0x49e6e5), - LocationData("Fahr Outpost East Enemy Room: HP Plus P", 0x49e6e5), - LocationData("Fahr Outpost East Enemy Room: Star Piece", 0x49e6e5) + LocationData("Fahr Outpost Entrance: Double Dip P", 78780561), + LocationData("Fahr Outpost Entrance: Star Piece", 78780562), + LocationData("Fahr Outpost Town Outskirts: Star Piece", 78780563), + LocationData("Fahr Outpost Town: Ice Storm", 78780564), + LocationData("Fahr Outpost Town: Inn Coupon", 78780565), + LocationData("Fahr Outpost Town: Maple Syrup", 78780566), + LocationData("Fahr Outpost Town: Ruin Powder", 78780567), + LocationData("Fahr Outpost Town: Shine Sprite", 78780568), + LocationData("Fahr Outpost Town: Shooting Star", 78780569), + LocationData("Fahr Outpost Town: Space Food", 78780570), + LocationData("Fahr Outpost Town: Star Piece 1", 78780571), + LocationData("Fahr Outpost Town: Star Piece 2", 78780572), + LocationData("Fahr Outpost Town: Stopwatch", 78780573), + LocationData("Fahr Outpost Town: Super Shroom", 78780574), + LocationData("Fahr Outpost West Enemy Room: Shine Sprite", 78780575), + LocationData("Fahr Outpost West Enemy Room: Star Piece", 78780576), + LocationData("Fahr Outpost East Enemy Room: HP Plus P", 78780577), + LocationData("Fahr Outpost East Enemy Room: Star Piece", 78780578) ] xnaut_fortress: typing.List[LocationData] = [ - LocationData("Moon Landing Site: Stopwatch", 0x49e70f), - LocationData("Moon Fortress View: Power Punch", 0x49e717), - LocationData("Moon Fortress View: Star Piece", 0x49e717), - LocationData("Moon West Room 2: Ruin Powder", 0x49e717), - LocationData("Moon West Room 1: Courage Shell", 0x49e717), - LocationData("X-Naut Fortress Elevator Key Room: Elevator Key 1", 0x49e71f), - LocationData("X-Naut Fortress Elevator Key Room: Super Shroom", 0x49e71f), - LocationData("X-Naut Fortress Crane Room: Coin 1", 0x49e71f), - LocationData("X-Naut Fortress Crane Room: Coin 2", 0x49e71f), - LocationData("X-Naut Fortress Crane Room: Coin 3", 0x49e71f), - LocationData("X-Naut Fortress Crane Room: Coin 4", 0x49e71f), - LocationData("X-Naut Fortress Crane Room: Coin 5", 0x49e71f), - LocationData("X-Naut Fortress Crane Room: Coin 6", 0x49e71f), - LocationData("X-Naut Fortress Crane Room: Feeling Fine", 0x49e71f), - LocationData("X-Naut Fortress Crane Room: Feeling Fine P", 0x49e71f), - LocationData("X-Naut Fortress Crane Room: Star Piece", 0x49e71f), - LocationData("X-Naut Fortress Quiz Room: Elevator Key 2", 0x49e71f), - LocationData("X-Naut Fortress Card Key Room A: Card Key 1", 0x49e71f), - LocationData("X-Naut Fortress Card Key Room A: Sleepy Sheep", 0x49e71f), - LocationData("X-Naut Fortress Teleporter Room: Cog", 0x49e71f), - LocationData("X-Naut Fortress Ceiling Grate Room: Star Piece", 0x49e71f), - LocationData("X-Naut Fortress Office: Card Key 2", 0x49e71f), - LocationData("X-Naut Fortress Card Key Room B: Card Key 3", 0x49e71f), - LocationData("X-Naut Fortress Factory: Card Key 4", 0x49e71f), - LocationData("X-Naut Fortress Factory: Ultra Shroom", 0x49e71f), - LocationData("X-Naut Fortress Boss Room: Crystal Star", 0x49e71f), + LocationData("Moon Landing Site: Stopwatch", 78780579), + LocationData("Moon Fortress View: Power Punch", 78780580), + LocationData("Moon Fortress View: Star Piece", 78780581), + LocationData("Moon West Room 2: Ruin Powder", 78780582), + LocationData("Moon West Room 1: Courage Shell", 78780583), + LocationData("X-Naut Fortress Elevator Key Room: Elevator Key 1", 78780584), + LocationData("X-Naut Fortress Elevator Key Room: Super Shroom", 78780585), + LocationData("X-Naut Fortress Crane Room: Coin 1", 78780586), + LocationData("X-Naut Fortress Crane Room: Coin 2", 78780587), + LocationData("X-Naut Fortress Crane Room: Coin 3", 78780588), + LocationData("X-Naut Fortress Crane Room: Coin 4", 78780589), + LocationData("X-Naut Fortress Crane Room: Coin 5", 78780590), + LocationData("X-Naut Fortress Crane Room: Coin 6", 78780591), + LocationData("X-Naut Fortress Crane Room: Feeling Fine", 78780592), + LocationData("X-Naut Fortress Crane Room: Feeling Fine P", 78780593), + LocationData("X-Naut Fortress Crane Room: Star Piece", 78780594), + LocationData("X-Naut Fortress Quiz Room: Elevator Key 2", 78780595), + LocationData("X-Naut Fortress Card Key Room A: Card Key 1", 78780596), + LocationData("X-Naut Fortress Card Key Room A: Sleepy Sheep", 78780597), + LocationData("X-Naut Fortress Teleporter Room: Cog", 78780598), + LocationData("X-Naut Fortress Ceiling Grate Room: Star Piece", 78780599), + LocationData("X-Naut Fortress Office: Card Key 2", 78780600), + LocationData("X-Naut Fortress Card Key Room B: Card Key 3", 78780601), + LocationData("X-Naut Fortress Card Key Room B: HP Drain", 78780702), + LocationData("X-Naut Fortress Factory: Card Key 4", 78780602), + LocationData("X-Naut Fortress Factory: Ultra Shroom", 78780603), + LocationData("X-Naut Fortress Boss Room: Crystal Star", 78780604) ] palace: typing.List[LocationData] = [ - LocationData("Palace of Shadow Swoopula Staircase: Stopwatch", 0x49e5a0), - LocationData("Palace of Shadow Bullet Bill Hallway: Shooting Star", 0x49e5a0), - LocationData("Palace of Shadow Spike Trap Room: All or Nothing", 0x49e5a0), - LocationData("Palace of Shadow Fire Trap Room: Boo's Sheet", 0x49e5a0), - LocationData("Palace of Shadow Dark Bones Room: Palace Key", 0x49e55b), - LocationData("Palace of Shadow Second Bullet Bill Hallway: Ultra Shroom", 0x49e55b), - LocationData("Palace of Shadow Large Open Room: Coin", 0x49e55b), - LocationData("Palace of Shadow Large Open Room: Jammin' Jelly", 0x49e55b), - LocationData("Palace of Shadow Large Open Room: P-Up D-Down P", 0x49e55b), - LocationData("Riddle Tower Floor 1 NW: Palace Key (Riddle Tower)", 0x49e55b), - LocationData("Riddle Tower Floor 1 NE: Palace Key (Riddle Tower)", 0x49e55b), - LocationData("Riddle Tower Floor 1 SW: Palace Key (Riddle Tower)", 0x49e55b), - LocationData("Riddle Tower Floor 1 SE: Palace Key (Riddle Tower)", 0x49e55b), - LocationData("Riddle Tower Floor 2 NW: Palace Key (Riddle Tower)", 0x49e55b), - LocationData("Riddle Tower Floor 2 NE: Palace Key (Riddle Tower)", 0x49e55b), - LocationData("Riddle Tower Floor 2 SW: Palace Key (Riddle Tower)", 0x49e55b), - LocationData("Riddle Tower Floor 2 SE: Palace Key (Riddle Tower)", 0x49e55b) + LocationData("Palace of Shadow Swoopula Staircase: Stopwatch", 78780605), + LocationData("Palace of Shadow Bullet Bill Hallway: Shooting Star", 78780606), + LocationData("Palace of Shadow Spike Trap Room: All or Nothing", 78780607), + LocationData("Palace of Shadow Fire Trap Room: Boo's Sheet", 78780608), + LocationData("Palace of Shadow Dark Bones Room: Palace Key", 78780609), + LocationData("Palace of Shadow Second Bullet Bill Hallway: Ultra Shroom", 78780610), + LocationData("Palace of Shadow Large Open Room: Coin", 78780611), + LocationData("Palace of Shadow Large Open Room: Jammin' Jelly", 78780612), + LocationData("Palace of Shadow Large Open Room: P-Up D-Down P", 78780613), + LocationData("Riddle Tower Floor 1 NW: Palace Key (Riddle Tower)", 78780614), + LocationData("Riddle Tower Floor 1 NE: Palace Key (Riddle Tower)", 78780615), + LocationData("Riddle Tower Floor 1 SW: Palace Key (Riddle Tower)", 78780616), + LocationData("Riddle Tower Floor 1 SE: Palace Key (Riddle Tower)", 78780617), + LocationData("Riddle Tower Floor 2 NW: Palace Key (Riddle Tower)", 78780618), + LocationData("Riddle Tower Floor 2 NE: Palace Key (Riddle Tower)", 78780619), + LocationData("Riddle Tower Floor 2 SW: Palace Key (Riddle Tower)", 78780620), + LocationData("Riddle Tower Floor 2 SE: Palace Key (Riddle Tower)", 78780621) ] riddle_tower: typing.List[LocationData] = [ - LocationData("Palace of Shadow Far Hallway 1: Thunder Rage", 0x49e563), - LocationData("Palace of Shadow Far Backroom 1: Life Shroom", 0x49e563), - LocationData("Palace of Shadow Far Backroom 1: Repel Cape", 0x49e563), - LocationData("Palace of Shadow Far Backroom 2: Life Shroom", 0x49e563), - LocationData("Palace of Shadow Far Backroom 2: Palace Key", 0x49e563), - LocationData("Palace of Shadow Far Backroom 2: Shooting Star", 0x49e563), - LocationData("Palace of Shadow Far Backroom 3: Coin", 0x49e563), - LocationData("Palace of Shadow Far Backroom 3: Palace Key", 0x49e563), - LocationData("Palace of Shadow Far Backroom 3: Point Swap", 0x49e563), - LocationData("Palace of Shadow Far Hallway 4: Life Shroom", 0x49e563), - LocationData("Palace of Shadow Far Hallway 4: Shooting Star", 0x49e563), - LocationData("Palace of Shadow Gloomtail Room: Jammin' Jelly", 0x49e563), - LocationData("Palace of Shadow Gloomtail Room: Star Key", 0x49e563), - LocationData("Palace of Shadow Gloomtail Room: Ultra Shroom", 0x49e563), - LocationData("Palace of Shadow Final Staircase: Jammin' Jelly", 0x49e563), - LocationData("Palace of Shadow Final Staircase: Ultra Shroom", 0x49e563) + LocationData("Palace of Shadow Far Hallway 1: Thunder Rage", 78780622), + LocationData("Palace of Shadow Far Backroom 1: Life Shroom", 78780623), + LocationData("Palace of Shadow Far Backroom 1: Repel Cape", 78780624), + LocationData("Palace of Shadow Far Backroom 2: Life Shroom", 78780625), + LocationData("Palace of Shadow Far Backroom 2: Palace Key", 78780626), + LocationData("Palace of Shadow Far Backroom 2: Shooting Star", 78780627), + LocationData("Palace of Shadow Far Backroom 3: Coin", 78780628), + LocationData("Palace of Shadow Far Backroom 3: Palace Key", 78780629), + LocationData("Palace of Shadow Far Backroom 3: Point Swap", 78780630), + LocationData("Palace of Shadow Far Hallway 4: Life Shroom", 78780631), + LocationData("Palace of Shadow Far Hallway 4: Shooting Star", 78780632), + LocationData("Palace of Shadow Gloomtail Room: Jammin' Jelly", 78780633), + LocationData("Palace of Shadow Gloomtail Room: Star Key", 78780634), + LocationData("Palace of Shadow Gloomtail Room: Ultra Shroom", 78780635), + LocationData("Palace of Shadow Final Staircase: Jammin' Jelly", 78780636), + LocationData("Palace of Shadow Final Staircase: Ultra Shroom", 78780637) ] pit: typing.List[LocationData] = [ - LocationData("Pit of 100 Trials Floor 10: Sleepy Stomp", 0x49e563), - LocationData("Pit of 100 Trials Floor 20: Fire Drive", 0x49e563), - LocationData("Pit of 100 Trials Floor 30: Zap Tap", 0x49e563), - LocationData("Pit of 100 Trials Floor 40: Pity Flower", 0x49e563), - LocationData("Pit of 100 Trials Floor 50: Strange Sack", 0x49e563), - LocationData("Pit of 100 Trials Floor 60: Double Dip", 0x49e563), - LocationData("Pit of 100 Trials Floor 70: Double Dip P", 0x49e563), - LocationData("Pit of 100 Trials Floor 80: Bump Attack", 0x49e563), - LocationData("Pit of 100 Trials Floor 90: Lucky Day", 0x49e563), - LocationData("Pit of 100 Trials Floor 100: Return Postage", 0x49e563), - LocationData("Pit of 100 Trials Charlieton: Fire Flower", 0x49e563), - LocationData("Pit of 100 Trials Charlieton: Honey Syrup", 0x49e563), - LocationData("Pit of 100 Trials Charlieton: Maple Syrup", 0x49e563), - LocationData("Pit of 100 Trials Charlieton: Mushroom", 0x49e563), - LocationData("Pit of 100 Trials Charlieton: Super Shroom", 0x49e563), - LocationData("Pit of 100 Trials Charlieton: Thunder Rage", 0x49e563) + LocationData("Pit of 100 Trials Floor 10: Sleepy Stomp", 78780638), + LocationData("Pit of 100 Trials Floor 20: Fire Drive", 78780639), + LocationData("Pit of 100 Trials Floor 30: Zap Tap", 78780640), + LocationData("Pit of 100 Trials Floor 40: Pity Flower", 78780641), + LocationData("Pit of 100 Trials Floor 50: Strange Sack", 78780642), + LocationData("Pit of 100 Trials Floor 60: Double Dip", 78780643), + LocationData("Pit of 100 Trials Floor 70: Double Dip P", 78780644), + LocationData("Pit of 100 Trials Floor 80: Bump Attack", 78780645), + LocationData("Pit of 100 Trials Floor 90: Lucky Day", 78780646), + LocationData("Pit of 100 Trials Floor 100: Return Postage", 78780647), + LocationData("Pit of 100 Trials Charlieton: Fire Flower", 78780648), + LocationData("Pit of 100 Trials Charlieton: Honey Syrup", 78780649), + LocationData("Pit of 100 Trials Charlieton: Maple Syrup", 78780650), + LocationData("Pit of 100 Trials Charlieton: Mushroom", 78780651), + LocationData("Pit of 100 Trials Charlieton: Super Shroom", 78780652), + LocationData("Pit of 100 Trials Charlieton: Thunder Rage", 78780653) ] -all_locations: typing.List[LocationData] = (rogueport + sewers + petal_left + petal_right + hooktails_castle + boggly_woods + +all_locations: typing.List[LocationData] = (rogueport + rogueport_westside + sewers + sewers_westside + sewers_westside_ground + + petal_left + petal_right + hooktails_castle + boggly_woods + great_tree + glitzville + twilight_town + twilight_trail + creepy_steeple + - pirates_grotto + keelhaul_key + excess_express + riverside + poshley_heights + - fahr_outpost + xnaut_fortress + palace + pit + riddle_tower + rogueport_westside) + keelhaul_key + pirates_grotto + excess_express + riverside + poshley_heights + + fahr_outpost + xnaut_fortress + palace + riddle_tower + pit) location_table: typing.Dict[str, int] = {locData.name: locData.id for locData in all_locations} diff --git a/worlds/ttyd/Regions.py b/worlds/ttyd/Regions.py index 52e1dd54f455..6c7f67ce0065 100644 --- a/worlds/ttyd/Regions.py +++ b/worlds/ttyd/Regions.py @@ -1,10 +1,11 @@ import typing from BaseClasses import Region, Entrance -from .Locations import (TTYDLocation, rogueport, sewers, petal_left, petal_right, hooktails_castle, +from .Locations import (TTYDLocation, rogueport, sewers, sewers_westside, sewers_westside_ground, petal_left, petal_right, hooktails_castle, boggly_woods, great_tree, glitzville, twilight_trail, twilight_town, creepy_steeple, keelhaul_key, pirates_grotto, excess_express, riverside, - poshley_heights, fahr_outpost, xnaut_fortress, palace, pit, rogueport_westside, riddle_tower) + poshley_heights, fahr_outpost, xnaut_fortress, palace, pit, rogueport_westside, riddle_tower, + location_table) from . import StateLogic if typing.TYPE_CHECKING: @@ -18,6 +19,8 @@ def create_regions(world: "TTYDWorld", excluded: typing.List[str]): create_region(world, "Rogueport", rogueport, excluded) create_region(world, "Rogueport (Westside)", rogueport_westside, excluded) create_region(world, "Rogueport Sewers", sewers, excluded) + create_region(world, "Rogueport Sewers Westside", sewers_westside, excluded) + create_region(world, "Rogueport Sewers Westside Ground", sewers_westside_ground, excluded) create_region(world, "Petal Meadows (Left)", petal_left, excluded) create_region(world, "Petal Meadows (Right)", petal_right, excluded) create_region(world, "Hooktail's Castle", hooktails_castle, excluded) @@ -44,8 +47,10 @@ def connect_regions(world: "TTYDWorld"): connect(world, names, "Menu", "Rogueport") connect(world, names, "Rogueport", "Rogueport Sewers") + connect(world, names, "Rogueport", "Rogueport Sewers Westside", lambda state: StateLogic.sewer_westside(state, world.player)) + connect(world, names, "Rogueport", "Rogueport Sewers Westside Ground", lambda state: StateLogic.sewer_westside_ground(state, world.player)) connect(world, names, "Rogueport Sewers", "Pit of 100 Trials", lambda state: StateLogic.pit(state, world.player)) - connect(world, names, "Rogueport", "Palace of Shadow", lambda state: StateLogic.palace(state, world.player, world.options.chapter_clears)) + connect(world, names, "Rogueport", "Palace of Shadow", lambda state: StateLogic.palace(state, world.player, world.options.chapter_clears.value)) connect(world, names, "Palace of Shadow", "Palace of Shadow (Post-Riddle Tower)", lambda state: StateLogic.riddle_tower(state, world.player)) connect(world, names, "Rogueport", "Poshley Heights", lambda state: state.has("Ultra Hammer", world.player) and state.has("Super Boots", world.player)) connect(world, names, "Rogueport", "Fahr Outpost", lambda state: StateLogic.fahr_outpost(state, world.player)) @@ -71,7 +76,7 @@ def connect_regions(world: "TTYDWorld"): def create_region(world: "TTYDWorld", name, locations, excluded): ret = Region(name, world.player, world.multiworld) for location in locations: - loc = TTYDLocation(world.player, location.name, location.id, ret) + loc = TTYDLocation(world.player, location.name, location_table[location.name], ret) if location.name in excluded: continue ret.locations.append(loc) diff --git a/worlds/ttyd/Rules.py b/worlds/ttyd/Rules.py index 0b0a342572e4..0687ecdd80fd 100644 --- a/worlds/ttyd/Rules.py +++ b/worlds/ttyd/Rules.py @@ -53,7 +53,7 @@ def set_rules(world: "TTYDWorld", excluded): add_rule(world.multiworld.get_location("Glitzville Storage Room: Star Piece", world.player), lambda state: state.has("Super Boots", world.player) and state.has("Storage Key 1", world.player)) add_rule(world.multiworld.get_location("Glitzville Main Square: Power Plus P", world.player), lambda state: state.has("Super Boots", world.player)) add_rule(world.multiworld.get_location("Glitzville Main Square: Star Piece 4", world.player), lambda state: state.has("Super Boots", world.player)) - add_rule(world.multiworld.get_location("Glitzville Main Square: Star Piece 5", world.player), lambda state: state.has("Super Boots", world.player) and (state.has("Koops", world.player) or state.has("Tube Curse", world.player))) + add_rule(world.multiworld.get_location("Glitzville Main Square: Star Piece 5", world.player), lambda state: state.has("Super Boots", world.player) and (state.has("Koops", world.player) or StateLogic.tube_curse(state, world.player))) add_rule(world.multiworld.get_location("Glitzville Minor-League Room: Yoshi", world.player), lambda state: state.has("Super Boots", world.player) and state.has("Plane Curse", world.player)) add_rule(world.multiworld.get_location("Glitzville Minor-League Room: Dubious Paper", world.player), lambda state: StateLogic.super_hammer(state, world.player) and state.has("Yoshi", world.player)) add_rule(world.multiworld.get_location("Glitzville Major-League Room: Champ's Belt", world.player), lambda state: state.has("Flurrie", world.player) and state.has("Yoshi", world.player)) @@ -85,7 +85,7 @@ def set_rules(world: "TTYDWorld", excluded): add_rule(world.multiworld.get_location("Great Tree Pool Room: Shine Sprite", world.player), lambda state: state.has("Red Key", world.player) and state.has("Puni Orb", world.player) and state.has("Flurrie", world.player) and state.has("Blue Key", world.player) and state.has("Koops", world.player)) add_rule(world.multiworld.get_location("Great Tree Pool Room: Shrink Stomp", world.player), lambda state: state.has("Red Key", world.player) and state.has("Puni Orb", world.player) and state.has("Flurrie", world.player) and state.has("Blue Key", world.player) and state.has("Koops", world.player)) add_rule(world.multiworld.get_location("Great Tree Lower Duplex: Coin", world.player), lambda state: state.has("Red Key", world.player) and state.has("Puni Orb", world.player) and state.has("Flurrie", world.player) and state.has("Blue Key", world.player) and state.has("Super Boots", world.player)) - add_rule(world.multiworld.get_location("Great Tree Middel Duplex: Shine Sprite", world.player), lambda state: state.has("Red Key", world.player) and state.has("Puni Orb", world.player) and state.has("Flurrie", world.player) and state.has("Plane Curse", world.player)) + add_rule(world.multiworld.get_location("Great Tree Middle Duplex: Shine Sprite", world.player), lambda state: state.has("Red Key", world.player) and state.has("Puni Orb", world.player) and state.has("Flurrie", world.player) and state.has("Plane Curse", world.player)) add_rule(world.multiworld.get_location("Great Tree Red Key Room: Charge", world.player), lambda state: state.has("Red Key", world.player) and state.has("Puni Orb", world.player) and state.has("Flurrie", world.player) and state.has("Super Boots", world.player)) add_rule(world.multiworld.get_location("Great Tree Red Key Room: Shine Sprite", world.player), lambda state: state.has("Red Key", world.player) and state.has("Puni Orb", world.player) and state.has("Flurrie", world.player) and state.has("Super Boots", world.player)) add_rule(world.multiworld.get_location("Great Tree 10-Puni Pedestal: Star Piece", world.player), lambda state: state.has("Super Boots", world.player)) @@ -127,22 +127,22 @@ def set_rules(world: "TTYDWorld", excluded): add_rule(world.multiworld.get_location("Keelhaul Key Grotto Entrance: Bobbery", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Chuckola Cola", world.player)) add_rule(world.multiworld.get_location("Keelhaul Key Grotto Entrance: Skull Gem", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Chuckola Cola", world.player)) add_rule(world.multiworld.get_location("Keelhaul Key Town: Chuckola Cola", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Coconut", world.player)) - add_rule(world.multiworld.get_location("Palace of Shadow Dark Bones Room: Palace Key", world.player), lambda state: state.has("Tube Curse", world.player)) - add_rule(world.multiworld.get_location("Palace of Shadow Second Bullet Bill Hallway: Ultra Shroom", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player)) - add_rule(world.multiworld.get_location("Palace of Shadow Large Open Room: Coin", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player)) - add_rule(world.multiworld.get_location("Palace of Shadow Large Open Room: Jammin' Jelly", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player)) - add_rule(world.multiworld.get_location("Palace of Shadow Large Open Room: P-Up D-Down P", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player)) - add_rule(world.multiworld.get_location("Palace of Shadow Gloomtail Room: Star Key", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player)) - add_rule(world.multiworld.get_location("Palace of Shadow Gloomtail Room: Jammin' Jelly", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player)) - add_rule(world.multiworld.get_location("Palace of Shadow Gloomtail Room: Ultra Shroom", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player)) - add_rule(world.multiworld.get_location("Riddle Tower Floor 1 NW: Palace Key (Riddle Tower)", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player) and state.has("Ultra Hammer", world.player)) - add_rule(world.multiworld.get_location("Riddle Tower Floor 1 NE: Palace Key (Riddle Tower)", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player)) - add_rule(world.multiworld.get_location("Riddle Tower Floor 1 SW: Palace Key (Riddle Tower)", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player)) - add_rule(world.multiworld.get_location("Riddle Tower Floor 1 SE: Palace Key (Riddle Tower)", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player) and state.has("Flurrie", world.player)) - add_rule(world.multiworld.get_location("Riddle Tower Floor 2 NW: Palace Key (Riddle Tower)", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player) and state.has("Ultra Hammer", world.player)) - add_rule(world.multiworld.get_location("Riddle Tower Floor 2 NE: Palace Key (Riddle Tower)", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player)) - add_rule(world.multiworld.get_location("Riddle Tower Floor 2 SW: Palace Key (Riddle Tower)", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player)) - add_rule(world.multiworld.get_location("Riddle Tower Floor 2 SE: Palace Key (Riddle Tower)", world.player), lambda state: state.has("Tube Curse", world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player) and state.has("Vivian", world.player)) + add_rule(world.multiworld.get_location("Palace of Shadow Dark Bones Room: Palace Key", world.player), lambda state: StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Palace of Shadow Second Bullet Bill Hallway: Ultra Shroom", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player)) + add_rule(world.multiworld.get_location("Palace of Shadow Large Open Room: Coin", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player)) + add_rule(world.multiworld.get_location("Palace of Shadow Large Open Room: Jammin' Jelly", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player)) + add_rule(world.multiworld.get_location("Palace of Shadow Large Open Room: P-Up D-Down P", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player)) + add_rule(world.multiworld.get_location("Palace of Shadow Gloomtail Room: Star Key", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player)) + add_rule(world.multiworld.get_location("Palace of Shadow Gloomtail Room: Jammin' Jelly", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player)) + add_rule(world.multiworld.get_location("Palace of Shadow Gloomtail Room: Ultra Shroom", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player)) + add_rule(world.multiworld.get_location("Riddle Tower Floor 1 NW: Palace Key (Riddle Tower)", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player) and state.has("Ultra Hammer", world.player)) + add_rule(world.multiworld.get_location("Riddle Tower Floor 1 NE: Palace Key (Riddle Tower)", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player)) + add_rule(world.multiworld.get_location("Riddle Tower Floor 1 SW: Palace Key (Riddle Tower)", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player)) + add_rule(world.multiworld.get_location("Riddle Tower Floor 1 SE: Palace Key (Riddle Tower)", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player) and state.has("Flurrie", world.player)) + add_rule(world.multiworld.get_location("Riddle Tower Floor 2 NW: Palace Key (Riddle Tower)", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player) and state.has("Ultra Hammer", world.player)) + add_rule(world.multiworld.get_location("Riddle Tower Floor 2 NE: Palace Key (Riddle Tower)", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player)) + add_rule(world.multiworld.get_location("Riddle Tower Floor 2 SW: Palace Key (Riddle Tower)", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player)) + add_rule(world.multiworld.get_location("Riddle Tower Floor 2 SE: Palace Key (Riddle Tower)", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Palace Key", world.player) and state.has("Bobbery", world.player) and state.has("Boat Curse", world.player) and state.has("Vivian", world.player)) add_rule(world.multiworld.get_location("Petal Meadows Field: Happy Heart", world.player), lambda state: state.has("Koops", world.player) or state.has("Yoshi", world.player) or state.has("Ultra Boots", world.player)) add_rule(world.multiworld.get_location("Pirate's Grotto Staircase: Coin", world.player), lambda state: state.has("Yoshi", world.player)) add_rule(world.multiworld.get_location("Pirate's Grotto Staircase: Shine Sprite", world.player), lambda state: state.has("Yoshi", world.player)) @@ -155,11 +155,11 @@ def set_rules(world: "TTYDWorld", excluded): add_rule(world.multiworld.get_location("Pirate's Grotto Sluice Gate: Star Piece", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Bobbery", world.player) and state.has("Super Boots", world.player)) add_rule(world.multiworld.get_location("Pirate's Grotto Spike Wall Room: Shine Sprite", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and state.has("Koops", world.player)) add_rule(world.multiworld.get_location("Pirate's Grotto Parabuzzy Room: Star Piece", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and state.has("Super Boots", world.player)) - add_rule(world.multiworld.get_location("Pirate's Grotto Chest Boat: Black Key 4", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and state.has("Tube Curse", world.player)) - add_rule(world.multiworld.get_location("Pirate's Grotto Chest Boat: P-Down D-Up", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and state.has("Tube Curse", world.player)) - add_rule(world.multiworld.get_location("Pirate's Grotto Barrel Room: 10 Coins", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and state.has("Tube Curse", world.player)) - add_rule(world.multiworld.get_location("Pirate's Grotto Barrel Room: Shine Sprite", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and state.has("Tube Curse", world.player)) - add_rule(world.multiworld.get_location("Pirate's Grotto Chest Boat: Boat Curse", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and state.has("Tube Curse", world.player) and state.has("Black Key 4", world.player)) + add_rule(world.multiworld.get_location("Pirate's Grotto Chest Boat: Black Key 4", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Pirate's Grotto Chest Boat: P-Down D-Up", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Pirate's Grotto Barrel Room: 10 Coins", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Pirate's Grotto Barrel Room: Shine Sprite", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Pirate's Grotto Chest Boat: Boat Curse", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Grotto Key", world.player) and StateLogic.tube_curse(state, world.player) and state.has("Black Key 4", world.player)) add_rule(world.multiworld.get_location("Poshley Heights Station: Goldbob Guide", world.player), lambda state: StateLogic.fahr_outpost(state, world.player) and state.has("Bobbery", world.player)) add_rule(world.multiworld.get_location("Poshley Heights Station: Star Piece 3", world.player), lambda state: state.has("Super Boots", world.player)) add_rule(world.multiworld.get_location("Poshley Heights Sanctum Exterior: Shine Sprite", world.player), lambda state: state.has("Ultra Boots", world.player)) @@ -176,4 +176,133 @@ def set_rules(world: "TTYDWorld", excluded): add_rule(world.multiworld.get_location("Palace of Shadow Far Hallway 4: Shooting Star", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Bobbery", world.player) and state.has("Ultra Boots", world.player) and state.has("Palace Key", world.player, 2) and state.has("Paper Curse", world.player) and state.has("Flurrie", world.player) and state.has("Ultra Hammer", world.player) and state.has("Plane Curse", world.player)) add_rule(world.multiworld.get_location("Palace of Shadow Final Staircase: Jammin' Jelly", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Bobbery", world.player) and state.has("Ultra Boots", world.player) and state.has("Palace Key", world.player, 3) and state.has("Paper Curse", world.player) and state.has("Flurrie", world.player) and state.has("Ultra Hammer", world.player) and state.has("Plane Curse", world.player)) add_rule(world.multiworld.get_location("Palace of Shadow Final Staircase: Ultra Shroom", world.player), lambda state: state.has("Yoshi", world.player) and state.has("Bobbery", world.player) and state.has("Ultra Boots", world.player) and state.has("Palace Key", world.player, 3) and state.has("Paper Curse", world.player) and state.has("Flurrie", world.player) and state.has("Ultra Hammer", world.player) and state.has("Plane Curse", world.player)) - + add_rule(world.multiworld.get_location("Riverside Station Tube Mode Maze: Dried Shroom", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Station Key 2", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Riverside Station Tube Mode Maze: P-Up D-Down", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Station Key 2", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Riverside Station Back Exterior: HP Plus", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Station Key 2", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Riverside Station Back Exterior: Shine Sprite", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Station Key 2", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Riverside Station Back Exterior: Thunder Rage", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Station Key 2", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Riverside Station Ultra Boots Room: Ultra Boots", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Station Key 2", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Riverside Station Goomba Room: Shine Sprite", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Station Key 2", world.player) and StateLogic.tube_curse(state, world.player) and (state.has("Ultra Boots", world.player) or state.has("Koops", world.player))) + add_rule(world.multiworld.get_location("Riverside Station Ultra Boots Room: Elevator Key", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Station Key 2", world.player) and StateLogic.tube_curse(state, world.player) and state.has("Ultra Boots", world.player)) + add_rule(world.multiworld.get_location("Riverside Station Clockwork Room: Star Piece", world.player), lambda state: state.has("Station Key 1", world.player) and StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Riverside Station Clockwork Room: Station Key 2", world.player), lambda state: state.has("Station Key 1", world.player) and StateLogic.tube_curse(state, world.player) and (state.has("Yoshi", world.player) or state.has("Koops", world.player))) + add_rule(world.multiworld.get_location("Riverside Station Entrance: Close Call P", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Ultra Boots", world.player)) + add_rule(world.multiworld.get_location("Poshley Heights Sanctum Altar: Garnet Star", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Ultra Boots", world.player) and state.has("Elevator Key", world.player) and state.has("Plane Curse", world.player) and StateLogic.super_hammer(state, world.player)) + add_rule(world.multiworld.get_location("Poshley Heights Sanctum Altar: L Emblem", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Ultra Boots", world.player) and state.has("Elevator Key", world.player) and state.has("Plane Curse", world.player) and StateLogic.super_hammer(state, world.player)) + add_rule(world.multiworld.get_location("Poshley Heights Sanctum Altar: Shine Sprite", world.player), lambda state: state.has("Station Key 1", world.player) and state.has("Ultra Boots", world.player) and state.has("Elevator Key", world.player) and state.has("Plane Curse", world.player) and StateLogic.super_hammer(state, world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Town: Star Piece 3", world.player), lambda state: state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Town: Shine Sprite", world.player), lambda state: state.has("Ultra Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers West Entrance: Flower Saver P", world.player), lambda state: state.has("Ultra Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Spania Room: Defend Plus", world.player), lambda state: state.has("Flurrie", world.player) and state.has("Boat Curse", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Spania Room: Shine Sprite 1", world.player), lambda state: state.has("Flurrie", world.player) and state.has("Boat Curse", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Spania Room: Shine Sprite 2", world.player), lambda state: state.has("Flurrie", world.player) and state.has("Boat Curse", world.player) and state.has("Ultra Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Spania Room: Shine Sprite 3", world.player), lambda state: state.has("Flurrie", world.player) and state.has("Boat Curse", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Train Ticket", world.player), lambda state: state.has("Sapphire Star", world.player) and state.has("Wedding Ring", world.player)) + add_rule(world.multiworld.get_location("Rogueport Blimp Room: Star Piece 1", world.player), lambda state: state.has("Blimp Ticket", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Hammer Throw", world.player), lambda state: state.has("Gold Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Power Rush", world.player), lambda state: state.has("Gold Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Power Rush P", world.player), lambda state: state.has("Gold Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Tornado Jump", world.player), lambda state: state.has("Gold Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Jammin' Jelly", world.player), lambda state: state.has("Platinum Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Money Money", world.player), lambda state: state.has("Platinum Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Quake Hammer", world.player), lambda state: state.has("Platinum Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Ultra Shroom", world.player), lambda state: state.has("Platinum Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Gold Bar x3", world.player), lambda state: state.has("Silver Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: HP Plus P", world.player), lambda state: state.has("Silver Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Multibounce", world.player), lambda state: state.has("Silver Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Power Smash", world.player), lambda state: state.has("Silver Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: FP Plus", world.player), lambda state: state.has("Special Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: HP Plus", world.player), lambda state: state.has("Special Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Maple Syrup", world.player), lambda state: state.has("Special Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Power Jump", world.player), lambda state: state.has("Special Card", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Star Piece 4", world.player), lambda state: state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Blimp Room: Star Piece 2", world.player), lambda state: state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Thousand Year Door: Shine Sprite", world.player), lambda state: (StateLogic.ttyd(state, world.player) and state.has("Paper Curse", world.player) and state.has("Plane Curse", world.player)) or (StateLogic.pit(state, world.player) and state.has("Paper Curse", world.player))) + add_rule(world.multiworld.get_location("Rogueport Sewers Thousand Year Door: Shine Sprite", world.player), lambda state: StateLogic.ttyd(state, world.player) and state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Leftside: Vivian", world.player), lambda state: state.has("Superbombomb", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Boo's Sheet", world.player), lambda state: state.has("Shop Key", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Defend Plus", world.player), lambda state: state.has("Shop Key", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Jammin' Jelly", world.player), lambda state: state.has("Shop Key", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Life Shroom 1", world.player), lambda state: state.has("Shop Key", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Life Shroom 2", world.player), lambda state: state.has("Shop Key", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Maple Syrup", world.player), lambda state: state.has("Shop Key", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Spite Pouch", world.player), lambda state: state.has("Shop Key", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Stopwatch", world.player), lambda state: state.has("Shop Key", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Super Shroom", world.player), lambda state: state.has("Shop Key", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Thunder Rage", world.player), lambda state: state.has("Shop Key", world.player)) + add_rule(world.multiworld.get_location("Twilight Town Rightside: Tube Curse", world.player), lambda state: state.has("Shop Key", world.player) and state.has("Black Key 3", world.player)) + add_rule(world.multiworld.get_location("Twilight Trail Fallen Tree: Shop Key", world.player), lambda state: state.has("Koops", world.player) or StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Twilight Trail Fallen Tree: Star Piece 1", world.player), lambda state: StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Twilight Trail Fallen Tree: Star Piece 2", world.player), lambda state: StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Twilight Trail Dark Woods First Room: 10 Coins", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Flurrie", world.player)) + add_rule(world.multiworld.get_location("Twilight Trail Dark Woods First Room: Earthquake", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Flurrie", world.player)) + add_rule(world.multiworld.get_location("Twilight Trail Dark Woods Second Room: Hammer Throw", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Flurrie", world.player)) + add_rule(world.multiworld.get_location("Twilight Trail Dark Woods Third Room: 10 Coins", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Flurrie", world.player)) + add_rule(world.multiworld.get_location("Twilight Trail Dark Woods Third Room: Shine Sprite", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Flurrie", world.player) and state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Twilight Trail Steeple Exterior: Coin", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Flurrie", world.player) and state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Twilight Trail Steeple Exterior: Star Piece", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Flurrie", world.player) and state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Crane Room: Coin 1", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Cog", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Crane Room: Coin 2", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Cog", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Crane Room: Coin 3", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Cog", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Crane Room: Coin 4", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Cog", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Crane Room: Coin 5", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Cog", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Crane Room: Coin 6", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Cog", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Crane Room: Feeling Fine", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Cog", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Crane Room: Feeling Fine P", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Cog", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Crane Room: Star Piece", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Cog", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Ceiling Grate Room: Star Piece", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Ultra Boots", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Teleporter Room: Cog", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Ultra Boots", world.player) and state.has("Paper Curse", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Quiz Room: Elevator Key 2", world.player), lambda state: state.has("Elevator Key 1", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Card Key Room A: Card Key 1", world.player), lambda state: state.has("Elevator Key 1", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Card Key Room A: Sleepy Sheep", world.player), lambda state: state.has("Elevator Key 1", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Office: Card Key 2", world.player), lambda state: state.has("Elevator Key 1", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Card Key Room B: Card Key 3", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Elevator Key 2", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Card Key Room B: HP Drain", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Elevator Key 2", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Factory: Ultra Shroom", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Elevator Key 2", world.player) and state.has("Card Key 1", world.player) and state.has("Card Key 2", world.player) and state.has("Card Key 3", world.player) and state.has("Paper Curse", world.player) and state.has("Vivian", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Factory: Card Key 4", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Elevator Key 2", world.player) and state.has("Card Key 1", world.player) and state.has("Card Key 2", world.player) and state.has("Card Key 3", world.player) and state.has("Paper Curse", world.player) and state.has("Vivian", world.player) and state.has("Plane Curse", world.player)) + add_rule(world.multiworld.get_location("X-Naut Fortress Boss Room: Crystal Star", world.player), lambda state: state.has("Elevator Key 1", world.player) and state.has("Elevator Key 2", world.player) and state.has("Card Key 1", world.player) and state.has("Card Key 2", world.player) and state.has("Card Key 3", world.player) and state.has("Card Key 4", world.player) and state.has("Paper Curse", world.player) and state.has("Vivian", world.player) and state.has("Plane Curse", world.player)) + add_rule(world.multiworld.get_location("Rogueport Center: Close Call", world.player), lambda state: StateLogic.stars(state, world.player, 1)) + add_rule(world.multiworld.get_location("Rogueport Center: Close Call P", world.player), lambda state: StateLogic.stars(state, world.player, 1)) + add_rule(world.multiworld.get_location("Rogueport Center: Sleepy Stomp", world.player), lambda state: StateLogic.stars(state, world.player, 1)) + add_rule(world.multiworld.get_location("Rogueport Center: First Attack", world.player), lambda state: StateLogic.stars(state, world.player, 2)) + add_rule(world.multiworld.get_location("Rogueport Center: Power Rush", world.player), lambda state: StateLogic.stars(state, world.player, 2)) + add_rule(world.multiworld.get_location("Rogueport Center: Pretty Lucky P", world.player), lambda state: StateLogic.stars(state, world.player, 2)) + add_rule(world.multiworld.get_location("Rogueport Center: Ice Smash", world.player), lambda state: StateLogic.stars(state, world.player, 3)) + add_rule(world.multiworld.get_location("Rogueport Center: Power Rush P", world.player), lambda state: StateLogic.stars(state, world.player, 3)) + add_rule(world.multiworld.get_location("Rogueport Center: Shrink Stomp", world.player), lambda state: StateLogic.stars(state, world.player, 3)) + add_rule(world.multiworld.get_location("Rogueport Center: Damage Dodge", world.player), lambda state: StateLogic.stars(state, world.player, 4)) + add_rule(world.multiworld.get_location("Rogueport Center: Head Rattle", world.player), lambda state: StateLogic.stars(state, world.player, 4)) + add_rule(world.multiworld.get_location("Rogueport Center: Soft Stomp", world.player), lambda state: StateLogic.stars(state, world.player, 4)) + add_rule(world.multiworld.get_location("Rogueport Center: Damage Dodge P", world.player), lambda state: StateLogic.stars(state, world.player, 5)) + add_rule(world.multiworld.get_location("Rogueport Center: Fire Drive", world.player), lambda state: StateLogic.stars(state, world.player, 5)) + add_rule(world.multiworld.get_location("Rogueport Center: Super Appeal P", world.player), lambda state: StateLogic.stars(state, world.player, 5)) + add_rule(world.multiworld.get_location("Rogueport Center: Attack FX P", world.player), lambda state: StateLogic.stars(state, world.player, 6)) + add_rule(world.multiworld.get_location("Rogueport Center: Simplifier (6 Chapters Cleared)", world.player), lambda state: StateLogic.stars(state, world.player, 6)) + add_rule(world.multiworld.get_location("Rogueport Center: Unsimplifier (6 Chapters Cleared)", world.player), lambda state: StateLogic.stars(state, world.player, 6)) + add_rule(world.multiworld.get_location("Rogueport Sewers Black Chest Room: Plane Curse", world.player), lambda state: state.has("Black Key 1", world.player)) + add_rule(world.multiworld.get_location("Rogueport Docks: HP Drain", world.player), lambda state: state.has("Boat Curse", world.player)) + add_rule(world.multiworld.get_location("Rogueport Docks: Star Piece", world.player), lambda state: state.has("Boat Curse", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Shine Sprite 1", world.player), lambda state: state.has("Bobbery", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Black Key Room: Happy Heart P", world.player), lambda state: state.has("Flurrie", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Spike Room: Spike Shield", world.player), lambda state: state.has("Paper Curse", world.player) and state.has("Vivian", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Petal Meadows Pipe: Shine Sprite", world.player), lambda state: state.has("Plane Curse", world.player) and state.has("Boat Curse", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Star Piece House: Star Piece", world.player), lambda state: state.has("Plane Curse", world.player) and state.has("Ultra Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers East Entrance: Defend Plus P", world.player), lambda state: state.has("Plane Curse", world.player) and state.has("Ultra Boots", world.player) and state.has("Bobbery", world.player)) + add_rule(world.multiworld.get_location("Rogueport Docks: Star Piece 2", world.player), lambda state: state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers Black Chest Room: Star Piece", world.player), lambda state: state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers East Entrance: Star Piece", world.player), lambda state: state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Center: Star Piece 4", world.player), lambda state: state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Center: Star Piece 5", world.player), lambda state: state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Eastside: Star Piece 2", world.player), lambda state: state.has("Super Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers East Pipe Room: Shine Sprite", world.player), lambda state: StateLogic.super_hammer(state, world.player)) + add_rule(world.multiworld.get_location("Rogueport Sewers West Pipe Room: FP Plus", world.player), lambda state: state.has("Ultra Hammer", world.player)) + add_rule(world.multiworld.get_location("Rogueport Westside: Shine Sprite 2", world.player), lambda state: StateLogic.tube_curse(state, world.player)) + add_rule(world.multiworld.get_location("Rogueport Center: Ultra Hammer", world.player), lambda state: state.has("Ultra Boots", world.player)) + add_rule(world.multiworld.get_location("Rogueport Eastside: Double Dip", world.player), lambda state: state.has("Boat Curse", world.player) and (state.has("Paper Curse", world.player) or state.has("Yoshi", world.player))) + add_rule(world.multiworld.get_location("Rogueport Eastside: Shine Sprite 1", world.player), lambda state: state.has("Yoshi", world.player)) + add_rule(world.multiworld.get_location("Rogueport Eastside: Shine Sprite 2", world.player), lambda state: state.has("Paper Curse", world.player) and state.has("Yoshi", world.player)) + add_rule(world.multiworld.get_location("Rogueport Eastside: Shine Sprite 3", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Yoshi", world.player)) + add_rule(world.multiworld.get_location("Rogueport Center: Old Letter", world.player), lambda state: StateLogic.tube_curse(state, world.player) and state.has("Yoshi", world.player)) + add_rule(world.multiworld.get_location("Rogueport Eastside: Star Piece 3", world.player), lambda state: state.has("Yoshi", world.player)) + add_rule(world.multiworld.get_location("Rogueport Eastside: Star Piece 4", world.player), lambda state: state.has("Paper Curse", world.player) or state.has("Yoshi", world.player)) + add_rule(world.multiworld.get_location("Rogueport Eastside: Star Piece 5", world.player), lambda state: state.has("Super Boots", world.player) and state.has("Yoshi", world.player)) diff --git a/worlds/ttyd/StateLogic.py b/worlds/ttyd/StateLogic.py index fda5b7caf69f..ce3e7dcb3b17 100644 --- a/worlds/ttyd/StateLogic.py +++ b/worlds/ttyd/StateLogic.py @@ -6,6 +6,10 @@ def super_hammer(state, player): return state.has("Super Hammer", player) or state.has("Ultra Hammer", player) +def tube_curse(state, player): + return state.has("Paper Curse", player) and state.has("Tube Curse", player) + + def petal_left(state, player): return state.has("Plane Curse", player) @@ -116,3 +120,11 @@ def palace(state, player, chapters: int): def riddle_tower(state, player): return state.has("Tube Curse", player) and state.has("Palace Key", player) and state.has("Bobbery", player) and state.has("Boat Curse", player) and state.has("Star Key", player) and state.has("Palace Key (Riddle Tower)", player, 8) + + +def sewer_westside(state, player): + return state.has("Tube Curse", player) or state.has("Bobbery", player) or (state.has("Paper Curse", player) and state.has("Contact Lens", player)) or (state.has("Ultra Hammer", player) and (state.has("Paper Curse", player) or (state.has("Ultra Boots", player) and state.has("Yoshi", player)))) + + +def sewer_westside_ground(state, player): + return (state.has("Contact Lens", player) and state.has("Paper Curse", player)) or state.has("Bobbery", player) or state.has("Tube Curse",player) or state.has("Ultra Hammer", player) diff --git a/worlds/ttyd/__init__.py b/worlds/ttyd/__init__.py index 4d0c840fa1db..282ab95a125e 100644 --- a/worlds/ttyd/__init__.py +++ b/worlds/ttyd/__init__.py @@ -37,7 +37,7 @@ class RomFile(settings.UserFilePath): rom_start: bool = True -class MLSSWorld(World): +class TTYDWorld(World): """ TTYD """ @@ -58,7 +58,20 @@ def create_regions(self) -> None: connect_regions(self) def generate_basic(self) -> None: - print("Pog") + item = self.create_item("Diamond Star") + self.multiworld.get_location("Hooktail's Castle Hooktail's Room: Diamond Star", self.player).place_locked_item(item) + item = self.create_item("Emerald Star") + self.multiworld.get_location("Great Tree Entrance: Emerald Star", self.player).place_locked_item(item) + item = self.create_item("Gold Star") + self.multiworld.get_location("Glitzville Arena: Gold Star", self.player).place_locked_item(item) + item = self.create_item("Ruby Star") + self.multiworld.get_location("Creepy Steeple Upper Room: Ruby Star", self.player).place_locked_item(item) + item = self.create_item("Sapphire Star") + self.multiworld.get_location("Pirate's Grotto Cortez' Hoard: Sapphire Star", self.player).place_locked_item(item) + item = self.create_item("Garnet Star") + self.multiworld.get_location("Poshley Heights Sanctum Altar: Garnet Star", self.player).place_locked_item(item) + item = self.create_item("Crystal Star") + self.multiworld.get_location("X-Naut Fortress Boss Room: Crystal Star", self.player).place_locked_item(item) def create_items(self) -> None: # First add in all progression and useful items @@ -81,7 +94,7 @@ def create_items(self) -> None: freq = 1 filler_items += [item.itemName for _ in range(freq)] - remaining = len(all_locations) - len(required_items) + remaining = len(all_locations) - len(required_items) - 7 for i in range(remaining): filler_item_name = self.multiworld.random.choice(filler_items) item = self.create_item(filler_item_name) @@ -91,7 +104,7 @@ def create_items(self) -> None: def set_rules(self) -> None: set_rules(self, self.excluded_locations) self.multiworld.completion_condition[self.player] = \ - lambda state: state.can_reach("Palace of Shadow", "Region", self.player) + lambda state: state.can_reach("Palace of Shadow Final Staircase: Ultra Shroom", "Location", self.player) def create_item(self, name: str) -> TTYDItem: item = item_table[name]