forked from mirror/Archipelago
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
674 lines
40 KiB
Python
674 lines
40 KiB
Python
from enum import Flag, auto
|
|
from typing import Optional, NamedTuple
|
|
|
|
AIRSTRIP = "Delfino Airstrip"
|
|
PLAZA = "Delfino Plaza"
|
|
INIT = "Initial Plaza"
|
|
STATUE = "Plaza With Statue"
|
|
BIANCO = "Bianco Hills"
|
|
RICCO = "Ricco Harbor"
|
|
GELATO = "Gelato Beach"
|
|
PINNA = "Pinna Park"
|
|
SIRENA = "Sirena Beach"
|
|
NOKI = "Noki Bay"
|
|
PIANTA = "Pianta Village"
|
|
CORONA = "Corona Mountain"
|
|
|
|
class NozzleType(Flag):
|
|
none = auto()
|
|
spray = auto()
|
|
hover = auto()
|
|
rocket = auto()
|
|
nobox_rocket = auto()
|
|
turbo = auto()
|
|
nobox_turbo = auto()
|
|
yoshi = auto()
|
|
splasher = auto() # Customizable generic, for things that are intended for spray but can be hit with others
|
|
|
|
|
|
class Requirements(NamedTuple):
|
|
nozzles: list[NozzleType] = [] # conjunctive normal form
|
|
shines: Optional[int] = None # number of shine sprites needed
|
|
corona: bool = False # is corona access needed (configurable)
|
|
blues: int = 0
|
|
location: str = ""
|
|
skip_into: bool = False
|
|
|
|
|
|
class Shine(NamedTuple):
|
|
name: str
|
|
id: int
|
|
requirements: Requirements = Requirements()
|
|
hard: Requirements = Requirements()
|
|
advanced: Requirements = Requirements()
|
|
tears: Requirements = Requirements()
|
|
hundred: bool = False
|
|
bandaid: bool = False
|
|
|
|
|
|
class BlueCoin(NamedTuple):
|
|
name: str
|
|
id: int
|
|
requirements: Requirements = Requirements()
|
|
hard: Requirements = Requirements()
|
|
advanced: Requirements = Requirements()
|
|
tears: Requirements = Requirements()
|
|
available: [int] = []
|
|
|
|
class OneUp(NamedTuple):
|
|
name: str
|
|
id: int
|
|
requirements: Requirements = Requirements()
|
|
available: [int] = []
|
|
|
|
# Yes, I'm going to include Shadow Mario Plaza chases as NozzleBox Locations
|
|
class NozzleBox(NamedTuple):
|
|
name: str
|
|
id: int
|
|
requirements: Requirements = Requirements()
|
|
available: [int] = []
|
|
|
|
|
|
class SmsRegion(NamedTuple):
|
|
name: str
|
|
display: str
|
|
requirements: Requirements = Requirements()
|
|
shines: list[Shine] = []
|
|
blue_coins: list[BlueCoin] = []
|
|
nozzle_boxes: list[NozzleBox] = []
|
|
one_ups: list[OneUp] = []
|
|
ticketed: str = ""
|
|
trade: bool = False
|
|
parent_region: str = "Menu"
|
|
skipped: bool = False
|
|
|
|
|
|
ALL_REGIONS: list[SmsRegion] = [
|
|
# Delfino Airstrip
|
|
SmsRegion(AIRSTRIP, AIRSTRIP, Requirements(), [
|
|
Shine("Delfino Airstrip Dilemma", 523086, Requirements([NozzleType.splasher]))
|
|
], [], skipped=True),
|
|
|
|
|
|
# Delfino Plaza
|
|
SmsRegion(INIT, PLAZA, Requirements([NozzleType.splasher], skip_into=True),
|
|
[
|
|
Shine("Shine Sprite in the Sand", 523117, Requirements([NozzleType.hover])),
|
|
Shine("Clean the West Bell", 523096, Requirements([NozzleType.hover | NozzleType.yoshi])),
|
|
Shine("Super Slide", 523090, Requirements([NozzleType.hover | NozzleType.rocket])),
|
|
Shine("The Gold Bird", 523118, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("Turbo Dash!", 523116, Requirements([NozzleType.turbo])),
|
|
Shine("Lighthouse Roof", 523093, Requirements([NozzleType.rocket])),
|
|
Shine("Clean the East Bell", 523097, Requirements([NozzleType.rocket, NozzleType.splasher])),
|
|
Shine("Shine Gate", 523099, Requirements([NozzleType.spray, NozzleType.rocket])),
|
|
Shine("Pachinko Game", 523089, Requirements([NozzleType.hover])),
|
|
Shine("Lily Pad Ride", 523091, Requirements([NozzleType.hover, NozzleType.spray, NozzleType.yoshi])),
|
|
Shine("Turbo Track", 523087, Requirements([NozzleType.turbo])),
|
|
Shine("Red Coin Field", 523092,
|
|
Requirements([NozzleType.spray, NozzleType.rocket | NozzleType.hover]))],
|
|
[
|
|
BlueCoin("Turbo Pillar", 523121, Requirements([NozzleType.turbo])),
|
|
BlueCoin("Burning Pianta", 523124, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Shine Gate M", 523125, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Tower M", 523126, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Chuckster Room M", 523127, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Sea Sewer", 523132),
|
|
BlueCoin("Tower Yellow Goo", 523133, Requirements([NozzleType.yoshi])),
|
|
BlueCoin("Jail Cell", 523134),
|
|
BlueCoin("Police Station Yellow Goo", 523135, Requirements([NozzleType.yoshi])),
|
|
BlueCoin("Shine Gate Sewer", 523136),
|
|
BlueCoin("Canal Sewer", 523137),
|
|
BlueCoin("Blue Bird Near Sirena Pipe", 523138, Requirements([NozzleType.spray | NozzleType.yoshi])),
|
|
BlueCoin("Blue Bird Near Crate Guy", 523139, Requirements([NozzleType.spray | NozzleType.yoshi]))
|
|
],parent_region=AIRSTRIP),
|
|
|
|
SmsRegion(STATUE, PLAZA, Requirements([NozzleType.spray | NozzleType.yoshi], skip_into=True), [
|
|
Shine("Boxing Clever 1", 523094),
|
|
Shine("Boxing Clever 2", 523095),
|
|
Shine("Chuckster", 523098),
|
|
Shine("100 Coins", 523107, Requirements([NozzleType.hover | NozzleType.rocket]), hundred=True)], [
|
|
BlueCoin("Statue X", 523122, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Bell Tower X", 523123, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Pineapple Basket", 523128),
|
|
BlueCoin("Durian Basket", 523129),
|
|
BlueCoin("Banana Basket", 523130),
|
|
BlueCoin("Coconut Basket", 523131, Requirements([NozzleType.splasher]))], [
|
|
# NozzleBox("Shadow Mario Yoshi Egg Chase", 523911, Requirements([NozzleType.spray], location="Pinna Park - The Wilted Sunflowers")),
|
|
# NozzleBox("Shadow Mario Rocket Nozzle Chase", 523870, Requirements([NozzleType.splasher, NozzleType.yoshi], shines=30)),
|
|
# NozzleBox("Shadow Mario Turbo Nozzle Chase", 523871, Requirements([NozzleType.splasher, NozzleType.yoshi], shines=25)),
|
|
], parent_region=INIT),
|
|
|
|
|
|
# Bianco Hills
|
|
SmsRegion("Bianco Entrance", BIANCO, Requirements([NozzleType.spray | NozzleType.yoshi], skip_into=True), [
|
|
Shine("Road to the Big Windmill", 523000, Requirements([NozzleType.spray])),
|
|
Shine("Down with Petey Piranha!", 523001,
|
|
Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("100 Coins", 523100, Requirements([NozzleType.yoshi, NozzleType.spray, NozzleType.hover]), hundred=True)], [
|
|
BlueCoin("Windmill M", 523170, Requirements([NozzleType.hover])),
|
|
BlueCoin("Windmill Pillar", 523171, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Towers House M", 523188, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Balcony", 523173, Requirements([NozzleType.hover])),
|
|
BlueCoin("Underwater Right", 523180),
|
|
BlueCoin("Wall Side M", 523186, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Wall Top M", 523187, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Towers House", 523172, Requirements([NozzleType.hover])), # Could be done with just Spray, easily so I think?
|
|
BlueCoin("Pinwheel", 523189, Requirements([NozzleType.splasher])),
|
|
BlueCoin("X Behind Wall", 523190, Requirements([NozzleType.splasher])),
|
|
BlueCoin("River End", 523191),
|
|
BlueCoin("X Between Walls", 523197, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Sail Platform", 523198, Requirements([NozzleType.hover])) # Could also be done with just Spray...
|
|
], ticketed="Bianco Hills Ticket", parent_region=STATUE),
|
|
|
|
SmsRegion("Bianco 3", BIANCO, Requirements(location="Bianco Hills - Down with Petey Piranha!"), [
|
|
Shine("The Hillside Cave Secret", 523002,
|
|
Requirements([NozzleType.hover | NozzleType.rocket])),
|
|
Shine("Red Coins of the Hillside Cave", 523008,
|
|
Requirements([NozzleType.hover | NozzleType.rocket]))], [
|
|
BlueCoin("Treetop", 523174, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Tourist", 523175, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Windmill Pokey", 523184, Requirements([NozzleType.hover])),
|
|
BlueCoin("Cliff", 523192, Requirements([NozzleType.hover | NozzleType.rocket])),
|
|
BlueCoin("Highest Platform", 523199, Requirements([NozzleType.hover | NozzleType.rocket]))
|
|
], parent_region="Bianco Entrance"),
|
|
|
|
SmsRegion("Bianco 4", BIANCO, Requirements(location="Bianco Hills - The Hillside Cave Secret"), [
|
|
Shine("Red Coins of Windmill Village", 523003,
|
|
Requirements([NozzleType.hover | NozzleType.rocket]))], [
|
|
BlueCoin("Hillside Pokey", 523178, Requirements([NozzleType.hover])),
|
|
BlueCoin("Bridge Underside", 523183)
|
|
], [
|
|
NozzleBox("Rocket Box", 523872)
|
|
], parent_region="Bianco 3"),
|
|
|
|
SmsRegion("Bianco 5", BIANCO, Requirements(location="Bianco Hills - Red Coins of Windmill Village"), [
|
|
Shine("Petey Piranha Strikes Back", 523004,
|
|
Requirements([NozzleType.spray, NozzleType.rocket | NozzleType.hover])),], [
|
|
BlueCoin("Wall Tower Pianta", 523177, Requirements([NozzleType.spray, NozzleType.rocket | NozzleType.hover])),
|
|
BlueCoin("Platforms Cross", 523185, Requirements([NozzleType.hover | NozzleType.rocket]))
|
|
], parent_region="Bianco 4"),
|
|
|
|
SmsRegion("Bianco 6", BIANCO, Requirements(location="Bianco Hills - Petey Piranha Strikes Back"), [
|
|
Shine("The Secret of the Dirty Lake", 523005,
|
|
Requirements([NozzleType.splasher])),
|
|
Shine("Red Coins of the Dirty Lake", 523009,
|
|
Requirements([NozzleType.hover]))], [
|
|
BlueCoin("Petey Pillar", 523179, Requirements([NozzleType.hover])),
|
|
BlueCoin("Underwater Left", 523181),
|
|
BlueCoin("Blue Bird", 523182, Requirements([NozzleType.spray])),
|
|
BlueCoin("Chuckster Momma", 523193)
|
|
], [
|
|
NozzleBox("Turbo Box", 523873, Requirements([NozzleType.splasher]))
|
|
], parent_region="Bianco 5"),
|
|
|
|
SmsRegion("Bianco 7", BIANCO, Requirements(location="Bianco Hills - The Secret of the Dirty Lake"), [
|
|
Shine("Shadow Mario on the Loose", 523006,
|
|
Requirements([NozzleType.spray]))], [
|
|
BlueCoin("Towers House O", 523194, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Balcony House O", 523195, Requirements([NozzleType.splasher]))
|
|
], parent_region="Bianco 6"),
|
|
|
|
SmsRegion("Bianco 8", BIANCO, Requirements(location="Bianco Hills - Shadow Mario on the Loose"), [
|
|
Shine("The Red Coins of the Lake", 523007,
|
|
Requirements([NozzleType.hover | NozzleType.rocket]))], [
|
|
BlueCoin("Beehive", 523176, Requirements([NozzleType.yoshi])),
|
|
BlueCoin("Butterfly", 523196, Requirements([NozzleType.yoshi]))
|
|
], parent_region="Bianco 7"),
|
|
|
|
|
|
# Ricco Harbor
|
|
SmsRegion("Ricco Entrance", RICCO, Requirements([NozzleType.splasher | NozzleType.yoshi], shines=3), [
|
|
Shine("100 Coins", 523101, Requirements([NozzleType.hover]), hundred=True)],
|
|
[
|
|
BlueCoin("Tower Wall", 523221, Requirements([NozzleType.spray])),
|
|
BlueCoin("Outer Ship M", 523222, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Spawn Building Top M", 523223, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Fruit Machine X", 523224, Requirements([NozzleType.spray])),
|
|
BlueCoin("Rooftop M", 523226, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Far Ledge", 523228, Requirements([NozzleType.hover | NozzleType.spray, NozzleType.rocket])),
|
|
BlueCoin("Short Beam", 523229, Requirements([NozzleType.hover])),
|
|
BlueCoin("Tower Platform", 523230, Requirements([NozzleType.hover])),
|
|
BlueCoin("Long Beam", 523231, Requirements([NozzleType.hover])),
|
|
BlueCoin("Off Catwalk", 523232, Requirements([NozzleType.hover])),
|
|
BlueCoin("Crane", 523234, Requirements([NozzleType.hover])),
|
|
BlueCoin("Blooper Open Water", 523235, Requirements([NozzleType.rocket], location="Ricco Harbor - Gooper Blooper Breaks Out")),
|
|
BlueCoin("Fountain", 523237),
|
|
BlueCoin("Underwater", 523238),
|
|
BlueCoin("Tower X", 523239, Requirements([NozzleType.spray])),
|
|
BlueCoin("Fountain M", 523240, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Tower Crate", 523248),
|
|
BlueCoin("Tower Rocket", 523233, Requirements([NozzleType.rocket]))
|
|
], ticketed="Ricco Harbor Ticket", parent_region=STATUE),
|
|
|
|
SmsRegion("Ricco 1 Only", RICCO, Requirements(), [
|
|
Shine("Gooper Blooper Breaks Out", 523010, Requirements([NozzleType.spray]))], [
|
|
BlueCoin("Tower Ground M", 523227, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Spawn Building Side M", 523241, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Inner Ship M", 523246, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Yellow Submarine", 523249, Requirements([NozzleType.spray]))
|
|
], parent_region="Ricco Entrance"),
|
|
|
|
SmsRegion("Ricco 2 Only", RICCO, Requirements(location="Ricco Harbor - Gooper Blooper Breaks Out"), [
|
|
Shine("Blooper Surfing Safari", 523011),
|
|
Shine("Blooper-Surfing Sequel", 523019)], [
|
|
BlueCoin("Blooper Underground Entrance", 523236)
|
|
], parent_region="Ricco 1 Only"),
|
|
|
|
SmsRegion("Ricco 3", RICCO, Requirements(location="Ricco Harbor - Blooper Surfing Safari"), [
|
|
Shine("The Caged Shine Sprite", 523012, Requirements([NozzleType.hover | NozzleType.rocket]))], [
|
|
BlueCoin("Mesh Wall Klamber", 523243),
|
|
BlueCoin("Mesh Ceiling Klamber", 523244)
|
|
], [
|
|
NozzleBox("Rocket Box", 523874, Requirements([NozzleType.hover]))
|
|
], parent_region="Ricco 2 Only"),
|
|
|
|
SmsRegion("Ricco 4-7", RICCO, Requirements(location="Ricco Harbor - The Caged Shine Sprite"), [
|
|
Shine("The Secret of Ricco Tower", 523013, Requirements([NozzleType.hover | NozzleType.rocket])),
|
|
Shine("Gooper Blooper Returns", 523014, Requirements([NozzleType.spray])),
|
|
Shine("Red Coins on the Water", 523015, Requirements()),
|
|
Shine("Shadow Mario Revisited", 523016, Requirements([NozzleType.spray])),
|
|
Shine("Red Coins in Ricco Tower", 523018, Requirements())], [
|
|
BlueCoin("Caged Blooper", 523247, Requirements([NozzleType.hover | NozzleType.rocket]))
|
|
], parent_region="Ricco 3"),
|
|
|
|
SmsRegion("Ricco 8", RICCO, Requirements(location="Ricco Harbor - Shadow Mario Revisited"), [
|
|
Shine("Yoshi's Fruit Adventure", 523017, Requirements([NozzleType.yoshi]))], [
|
|
BlueCoin("Butterflies", 523220, Requirements([NozzleType.yoshi])),
|
|
BlueCoin("Wall Klamber", 523225, Requirements([NozzleType.yoshi])),
|
|
BlueCoin("High Platform M", 523242, Requirements([NozzleType.yoshi | NozzleType.rocket, NozzleType.splasher])),
|
|
BlueCoin("Fish Basket", 523245, Requirements([NozzleType.spray]))
|
|
], [
|
|
NozzleBox("Turbo Box", 523875)
|
|
], parent_region="Ricco 4-7"),
|
|
|
|
# Gelato Beach
|
|
SmsRegion("Gelato Entrance", GELATO, Requirements([NozzleType.splasher | NozzleType.yoshi], shines=5), [
|
|
Shine("Dune Bud Sand Castle Secret", 523020, Requirements([NozzleType.splasher])),
|
|
Shine("Mirror Madness! Tilt, Slam, Bam!", 523021, Requirements([NozzleType.spray])),
|
|
Shine("Wiggler Ahoy! Full Steam Ahead!", 523022,
|
|
Requirements([NozzleType.splasher], location="Gelato Beach - Mirror Madness! Tilt, Slam, Bam!")),
|
|
Shine("Red Coins in the Sand Castle", 523028, Requirements([NozzleType.hover], location="Gelato Beach - Wiggler Ahoy! Full Steam Ahead!")),
|
|
Shine("Sandy Shine Sprite", 523029, Requirements([NozzleType.splasher]))],
|
|
[
|
|
BlueCoin("Juicer", 523275),
|
|
BlueCoin("Rocket M", 523276, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Spawn Triangle", 523277, Requirements([NozzleType.spray])),
|
|
BlueCoin("Trees Triangle", 523278, Requirements([NozzleType.spray])),
|
|
BlueCoin("Left Bird", 523280, Requirements([NozzleType.spray])),
|
|
BlueCoin("Right Bird", 523281, Requirements([NozzleType.spray])),
|
|
BlueCoin("Highest Rope", 523282, Requirements([NozzleType.hover | NozzleType.rocket])),
|
|
BlueCoin("Pole", 523283, Requirements([NozzleType.hover | NozzleType.rocket])),
|
|
BlueCoin("Deck", 523288),
|
|
BlueCoin("Swing", 523289, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Big Tree", 523290),
|
|
BlueCoin("Crevice", 523291),
|
|
BlueCoin("Sand Cabana Roof", 523293),
|
|
BlueCoin("Shack", 523294, Requirements([NozzleType.rocket]))
|
|
], ticketed="Gelato Beach Ticket"),
|
|
|
|
SmsRegion("Gelato 1/2/4 Only", GELATO, Requirements(), [], [
|
|
BlueCoin("Red Cataquack", 523270, Requirements([NozzleType.splasher]))
|
|
], parent_region="Gelato Entrance"),
|
|
|
|
SmsRegion("Gelato Any Except 3", GELATO, Requirements(), [], [
|
|
BlueCoin("Sand Shine at Sand Cabana", 523271, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Sand Shine at Surf Cabana", 523272, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Middle Sand Shine", 523274, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Close Underwater", 523284),
|
|
BlueCoin("Far Underwater", 523285),
|
|
BlueCoin("Blue Fish", 523286, Requirements([NozzleType.turbo])),
|
|
BlueCoin("Red Fish", 523287, Requirements([NozzleType.turbo]))
|
|
], parent_region="Gelato Entrance"),
|
|
|
|
SmsRegion("Gelato 2 and 4-8", GELATO, Requirements(location="Gelato Beach - Dune Bud Sand Castle Secret"), [], [
|
|
BlueCoin("Big Sand Shine", 523292, Requirements([NozzleType.splasher]))
|
|
], parent_region="Gelato Entrance"),
|
|
|
|
SmsRegion("Gelato 4 Only", GELATO, Requirements([NozzleType.hover],
|
|
location="Gelato Beach - Wiggler Ahoy! Full Steam Ahead!"), [
|
|
Shine("The Sand Bird is Born", 523023, Requirements([NozzleType.hover]))], [
|
|
BlueCoin("Sand Bird A", 523296, Requirements([NozzleType.hover])),
|
|
BlueCoin("Sand Bird B", 523297, Requirements([NozzleType.hover])),
|
|
BlueCoin("Sand Bird C", 523298, Requirements([NozzleType.hover])),
|
|
BlueCoin("Sand Bird D", 523299, Requirements([NozzleType.hover]))
|
|
], [
|
|
NozzleBox("Turbo Box", 523877)
|
|
], parent_region="Gelato 2 and 4-8"),
|
|
|
|
SmsRegion("Gelato 5-8", GELATO, Requirements(location="Gelato Beach - The Sand Bird is Born"), [
|
|
Shine("Il Piantissimo's Sand Sprint", 523024, Requirements([NozzleType.hover | NozzleType.turbo])),
|
|
Shine("Red Coins in the Coral Reef", 523025),
|
|
Shine("It's Shadow Mario! After Him!", 523026, Requirements([NozzleType.spray])),
|
|
Shine("The Watermelon Festival", 523027, Requirements([NozzleType.splasher | NozzleType.turbo])),
|
|
Shine("100 Coins", 523102, Requirements([NozzleType.yoshi, NozzleType.spray | NozzleType.hover]), hundred=True)], [
|
|
BlueCoin("Blue Cataquack", 523273, Requirements([NozzleType.spray]))
|
|
], [
|
|
NozzleBox("Rocket Box", 523876, Requirements([NozzleType.splasher | NozzleType.rocket]))
|
|
], parent_region="Gelato Entrance"),
|
|
|
|
SmsRegion("Gelato 6 Only", GELATO, Requirements(location="Gelato Beach - Il Piantissimo's Sand Sprint"), [], [
|
|
BlueCoin("Yellow Goo Dune Bud", 523279, Requirements([NozzleType.yoshi])),
|
|
BlueCoin("Beehive", 523295, Requirements([NozzleType.yoshi]))
|
|
], parent_region="Gelato 5-8"),
|
|
|
|
# Pinna Park
|
|
SmsRegion("Pinna Entrance", PINNA, Requirements(shines=10), [
|
|
Shine("Mecha-Bowser Appears!", 523030, Requirements([NozzleType.spray])),
|
|
Shine("Red Coins of the Pirate Ships", 523032,Requirements([NozzleType.hover], location="Pinna Park - The Beach Cannon's Secret")),
|
|
Shine("The Wilted Sunflowers", 523033, Requirements([NozzleType.splasher], location="Pinna Park - Red Coins of the Pirate Ships"), bandaid=True),
|
|
Shine("100 Coins", 523103, Requirements([NozzleType.spray]), hundred=True)],
|
|
[
|
|
BlueCoin("Tree Sand Shine", 523348, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Cannon Sand Shine", 523349, Requirements([NozzleType.splasher]))
|
|
], ticketed="Pinna Park Ticket", parent_region=STATUE),
|
|
|
|
SmsRegion("Pinna 1, 3 and 5-8", PINNA, Requirements(), [], [
|
|
BlueCoin("Orange Wall M", 523320, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Sand M", 523321, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Green Clam", 523322, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Left O", 523323, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Entrance Bird", 523324, Requirements([NozzleType.spray])),
|
|
BlueCoin("Pineapple Bird", 523325, Requirements([NozzleType.spray])),
|
|
BlueCoin("Ship Peak", 523326, Requirements([NozzleType.hover])),
|
|
BlueCoin("Cage Platform", 523327, Requirements([NozzleType.hover])),
|
|
BlueCoin("Right O", 523328, Requirements([NozzleType.splasher])),
|
|
BlueCoin("White Wall X", 523329, Requirements([NozzleType.spray])),
|
|
BlueCoin("Tree X", 523330, Requirements([NozzleType.spray])),
|
|
BlueCoin("Ferris M", 523331, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Banana Triangle", 523332, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Ferris Triangle", 523333, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Stairs", 523334, Requirements([NozzleType.hover])),
|
|
BlueCoin("Girder", 523336, Requirements([NozzleType.hover])),
|
|
BlueCoin("Coaster Ledge", 523337, Requirements([NozzleType.hover])),
|
|
BlueCoin("Cage", 523338, Requirements([NozzleType.hover])),
|
|
BlueCoin("Stackin Stus", 523339, Requirements([NozzleType.spray | NozzleType.hover])),
|
|
], parent_region="Pinna Entrance"),
|
|
|
|
SmsRegion("Pinna 2 Only", PINNA, Requirements(location="Pinna Park - Mecha-Bowser Appears!"), [
|
|
Shine("The Beach Cannon's Secret", 523031, Requirements([NozzleType.splasher])),
|
|
Shine("Red Coins in the Cannon", 523038, Requirements([NozzleType.hover], location="Pinna Park - The Beach Cannon's Secret"))], [
|
|
BlueCoin("Spawn Basket", 523340),
|
|
BlueCoin("Flower Basket", 523341),
|
|
BlueCoin("Gate Basket", 523342),
|
|
BlueCoin("Rock Basket", 523345),
|
|
BlueCoin("Middle Basket", 523346),
|
|
BlueCoin("Sunflower Basket", 523347)
|
|
], parent_region="Pinna Entrance"),
|
|
|
|
SmsRegion("Pinna 5-8", PINNA, Requirements(location="Pinna Park - Red Coins of the Pirate Ships"), [
|
|
Shine("The Runaway Ferris Wheel", 523034,
|
|
Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("Shadow Mario in the Park", 523036,
|
|
Requirements([NozzleType.spray], location="Pinna Park - The Yoshi-Go-Round's Secret")),
|
|
Shine("Roller Coaster Balloons", 523037,
|
|
Requirements([NozzleType.spray], location="Pinna Park - The Yoshi-Go-Round's Secret"))], [
|
|
BlueCoin("Beach Butterfly A", 523343, Requirements([NozzleType.yoshi])),
|
|
BlueCoin("Beach Butterfly B", 523344, Requirements([NozzleType.yoshi]))
|
|
], parent_region="Pinna 2 Only"),
|
|
|
|
SmsRegion("Pinna 6 Only", PINNA, Requirements(location="Pinna Park - The Runaway Ferris Wheel"), [
|
|
Shine("The Yoshi-Go-Round's Secret", 523035,
|
|
Requirements([NozzleType.yoshi])),
|
|
Shine("Red Coins in the Yoshi-Go-Round", 523039,
|
|
Requirements([NozzleType.yoshi, NozzleType.hover]))], [
|
|
BlueCoin("Park Butterfly", 523335, Requirements([NozzleType.yoshi]))
|
|
], parent_region="Pinna 5-8"),
|
|
|
|
# Sirena Beach
|
|
SmsRegion("Sirena Entrance", SIRENA, Requirements([NozzleType.yoshi]), [
|
|
Shine("The Manta Storm", 523040, Requirements([NozzleType.spray]))], [
|
|
BlueCoin("Ocean", 523387)
|
|
], ticketed="Sirena Beach Ticket", parent_region=STATUE),
|
|
|
|
SmsRegion("Sirena 1 and 6", SIRENA, Requirements(), [], [
|
|
BlueCoin("Right Male Noki", 523373, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Right Female Noki", 523374, Requirements([NozzleType.splasher]))
|
|
], parent_region="Sirena Entrance"),
|
|
|
|
SmsRegion("Sirena 2-8", SIRENA, Requirements(location="Sirena Beach - The Manta Storm"), [
|
|
Shine("The Hotel Lobby's Secret", 523041, Requirements([NozzleType.spray | NozzleType.hover])),
|
|
Shine("Red Coins in Boo's Big Mouth", 523048, Requirements([NozzleType.spray | NozzleType.hover]))], [
|
|
BlueCoin("Sign", 523370, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Cabana Roof", 523371),
|
|
BlueCoin("Outside Torch", 523372, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Hotel Ledge", 523375, Requirements([NozzleType.hover])),
|
|
BlueCoin("Flowers", 523386, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Third Floor Lamp", 523392, Requirements([NozzleType.splasher]))
|
|
], parent_region="Sirena 1 and 6"),
|
|
|
|
SmsRegion("Sirena 3-8", SIRENA, Requirements([NozzleType.yoshi], location="Sirena Beach - The Hotel Lobby's Secret"), [
|
|
Shine("Mysterious Hotel Delfino", 523042, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("The Secret of Casino Delfino", 523043, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
# Technically only needs Spray below but then it'll think it's doable without doing the above Shine first...
|
|
Shine("King Boo Down Below", 523044, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("Scrubbing Sirena Beach", 523045, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("Shadow Mario Checks In", 523046, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("Red Coins in the Hotel", 523047, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("Red Coin Winnings in the Casino", 523049, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("100 Coins", 523104, Requirements([NozzleType.spray]), hundred=True)], [
|
|
BlueCoin("Big Light", 523376, Requirements([NozzleType.spray])),
|
|
BlueCoin("Box Hole", 523378), # This hard requires Yoshi without Episode rando
|
|
BlueCoin("Glass Hole", 523379),
|
|
BlueCoin("White Painting", 523380, Requirements([NozzleType.splasher | NozzleType.yoshi])),
|
|
BlueCoin("Dolpic Poster", 523381, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Bookshelf", 523382, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Attic", 523383)
|
|
], parent_region="Sirena 2-8"),
|
|
|
|
SmsRegion("Sirena 4-5", SIRENA, Requirements(location="Sirena Beach - Mysterious Hotel Delfino"), [], [
|
|
BlueCoin("Casino Torch", 523398, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Slot machine", 523399)
|
|
], parent_region="Sirena 3-8"),
|
|
|
|
SmsRegion("Sirena 4-8", SIRENA, Requirements(location="Sirena Beach - Mysterious Hotel Delfino"), [], [
|
|
BlueCoin("Crate", 523377),
|
|
BlueCoin("Attic Boo", 523385)
|
|
], parent_region="Sirena 3-8"),
|
|
|
|
SmsRegion("Sirena 5 Only", SIRENA, Requirements(location="Sirena Beach - The Secret of Casino Delfino"), [], [
|
|
BlueCoin("Casino M", 523391, Requirements([NozzleType.spray]))
|
|
], parent_region="Sirena 4-8"),
|
|
|
|
SmsRegion("Sirena 6 Only", SIRENA, Requirements(location="Sirena Beach - King Boo Down Below"), [], [
|
|
BlueCoin("Left Male Noki", 523384, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Left Female Noki", 523390, Requirements([NozzleType.splasher]))
|
|
], parent_region="Sirena 5 Only"),
|
|
|
|
SmsRegion("Sirena 7-8", SIRENA, Requirements(location="Sirena Beach - Scrubbing Sirena Beach"), [], [
|
|
BlueCoin("Outside M", 523388, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Second Floor M", 523389, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Ground Floor Triangle", 523393, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("First Floor Triangle", 523394, Requirements([NozzleType.spray])),
|
|
BlueCoin("Attic M", 523395, Requirements([NozzleType.spray])),
|
|
BlueCoin("Second Floor X", 523396, Requirements([NozzleType.spray])),
|
|
BlueCoin("First Floor X", 523397, Requirements([NozzleType.spray, NozzleType.hover]))
|
|
], parent_region="Sirena 6 Only"),
|
|
|
|
|
|
# Noki Bay
|
|
SmsRegion("Noki Entrance", "Noki Bay", Requirements(shines=20), [
|
|
Shine("Uncork the Waterfall", 523050, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("The Boss of Tricky Ruins", 523051, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("Red Coins in a Bottle", 523052, Requirements(location="Noki Bay - The Boss of Tricky Ruins")), # Underwater Nozzle
|
|
Shine("Eely-Mouth's Dentist", 523053, Requirements([NozzleType.spray, NozzleType.hover])), # Underwater Nozzle
|
|
Shine("Il Piantissimo's Surf Swim", 523054, Requirements(location="Noki Bay - Eely-Mouth's Dentist")),
|
|
Shine("The Shell's Secret", 523055, Requirements([NozzleType.hover], location="Noki Bay - Il Piantissimo's Surf Swim")),
|
|
Shine("Hold It, Shadow Mario!", 523056, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
Shine("The Red Coin Fish", 523057, Requirements([NozzleType.hover], location="Noki Bay - Hold It, Shadow Mario!")), # Underwater Nozzle
|
|
Shine("A Golden Bird", 523059, Requirements([NozzleType.spray])),
|
|
Shine("Red Coins on the Half Shell", 523058, Requirements([NozzleType.hover], location="Noki Bay - The Shell's Secret")),
|
|
Shine("100 Coins", 523105, Requirements([NozzleType.spray, NozzleType.hover]), hundred=True)],
|
|
[],
|
|
[
|
|
NozzleBox("Rocket Box", 523884, Requirements([NozzleType.hover | NozzleType.rocket]))
|
|
], ticketed="Noki Bay Ticket", parent_region=STATUE),
|
|
|
|
SmsRegion("Noki All Except 3", NOKI, Requirements(), [], [
|
|
BlueCoin("Rocket Alcove", 523470, Requirements([NozzleType.hover | NozzleType.rocket])),
|
|
BlueCoin("Bottom Secret Path", 523471, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Top Secret Path", 523472, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Rocket", 523473, Requirements([NozzleType.rocket])),
|
|
BlueCoin("Bottom Pulley", 523474, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Top Pulley", 523475, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Tall Alcove", 523476, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Turbo Alcove", 523477, Requirements([NozzleType.hover])),
|
|
BlueCoin("Shell Alcove", 523478, Requirements([NozzleType.hover])),
|
|
BlueCoin("Top Right Panel", 523479, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Bottom Left Panel", 523480, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Top Right Tunnel", 523481, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Bottom Right Tunnel", 523482, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Bottom Right Alcove", 523483, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Left Tunnel", 523484, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Bottom Left Alcove", 523485, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Bird Cliff Panel", 523486, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Bird Cliff Alcove", 523487, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Spawn", 523490, Requirements([NozzleType.spray])),
|
|
BlueCoin("Coast", 523491, Requirements([NozzleType.spray])),
|
|
BlueCoin("Underwater", 523492),
|
|
BlueCoin("Top Secret Path M", 523493, Requirements([NozzleType.spray, NozzleType.hover]))
|
|
], parent_region="Noki Entrance"),
|
|
|
|
SmsRegion("Noki 2 and 4-8", NOKI, Requirements(location="Noki Bay - Uncork the Waterfall"), [], [
|
|
BlueCoin("Right Urn", 523488, Requirements([NozzleType.splasher])),
|
|
BlueCoin("Left Urn", 523489, Requirements([NozzleType.splasher]))
|
|
], parent_region="Noki All Except 3"),
|
|
|
|
SmsRegion("Noki 4 and 8", NOKI, Requirements(location="Noki Bay - Red Coins in a Bottle"), [], [
|
|
BlueCoin("Deep Sea Front Pillar", 523495, Requirements([NozzleType.hover])),
|
|
BlueCoin("Deep Sea Right Pillar", 523496, Requirements([NozzleType.hover])),
|
|
BlueCoin("Deep Sea Close Left Pillar", 523497, Requirements([NozzleType.hover])),
|
|
BlueCoin("Deep Sea Far Left Pillar", 523499, Requirements([NozzleType.hover]))
|
|
], parent_region="Noki 2 and 4-8"),
|
|
|
|
SmsRegion("Noki 6-8", NOKI, Requirements(location="Noki Bay - Il Piantissimo's Surf Swim"), [], [
|
|
BlueCoin("Spawn O", 523494, Requirements([NozzleType.spray, NozzleType.turbo])),
|
|
BlueCoin("Boathouse O", 523498, Requirements([NozzleType.spray, NozzleType.turbo])),
|
|
], [
|
|
NozzleBox("Turbo Box", 523885, Requirements([NozzleType.hover]))
|
|
], parent_region="Noki 4 and 8"),
|
|
|
|
# Pianta Village
|
|
SmsRegion("Pianta Entrance", "Pianta Village", Requirements([NozzleType.rocket], shines=10), [
|
|
Shine("Chain Chomplets Unchained", 523060, Requirements([NozzleType.rocket, NozzleType.splasher])),
|
|
Shine("Il Piantissimo's Crazy Climb", 523065, Requirements([NozzleType.rocket], location="Pianta Village - Chain Chomplets Unchained")), # Req. None
|
|
Shine("The Goopy Inferno", 523062, Requirements([NozzleType.rocket, NozzleType.hover])),
|
|
Shine("Chain Chomp's Bath", 523061, Requirements([NozzleType.rocket, NozzleType.splasher])),
|
|
Shine("100 Coins", 523106, Requirements([NozzleType.rocket, NozzleType.yoshi, NozzleType.spray, NozzleType.hover]), hundred=True)],
|
|
[
|
|
BlueCoin("Giant M", 523430, Requirements([NozzleType.rocket, NozzleType.spray])),
|
|
BlueCoin("River End", 523432, Requirements([NozzleType.rocket])),
|
|
BlueCoin("Grass", 523433, Requirements([NozzleType.rocket])),
|
|
BlueCoin("Back Tree", 523434, Requirements([NozzleType.rocket, NozzleType.hover])),
|
|
BlueCoin("River Bridge", 523435, Requirements([NozzleType.rocket])),
|
|
BlueCoin("Left Tree", 523438, Requirements([NozzleType.rocket, NozzleType.hover])),
|
|
BlueCoin("Waterfall", 523439, Requirements([NozzleType.rocket, NozzleType.spray])),
|
|
BlueCoin("Wall Triangle", 523443, Requirements([NozzleType.rocket, NozzleType.spray])),
|
|
BlueCoin("Hot Tub Triangle", 523444, Requirements([NozzleType.rocket, NozzleType.spray])),
|
|
BlueCoin("Left M", 523445, Requirements([NozzleType.rocket, NozzleType.spray])),
|
|
BlueCoin("Right M", 523446, Requirements([NozzleType.rocket, NozzleType.spray])),
|
|
BlueCoin("Spawn M", 523447, Requirements([NozzleType.rocket, NozzleType.spray])),
|
|
BlueCoin("Underside M", 523448, Requirements([NozzleType.rocket, NozzleType.spray]))
|
|
], ticketed="Pianta Village Ticket", parent_region=STATUE),
|
|
|
|
SmsRegion("Pianta 1/3/5/7", PIANTA, Requirements(), [], [
|
|
BlueCoin("Moon", 523420, Requirements([NozzleType.rocket, NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Statue's Nose", 523429, Requirements([NozzleType.rocket]))
|
|
], parent_region="Pianta Entrance"),
|
|
|
|
SmsRegion("Pianta 2/4/6/8", PIANTA, Requirements(location="Pianta Village - Chain Chomplets Unchained"), [], [
|
|
BlueCoin("Sign", 523431, Requirements([NozzleType.spray]))
|
|
], parent_region="Pianta 1/3/5/7"),
|
|
|
|
SmsRegion("Pianta 3 Only", PIANTA, Requirements(location="Pianta Village - Il Piantissimo's Crazy Climb"), [], [
|
|
BlueCoin("Burning Pianta", 523442, Requirements([NozzleType.spray])),
|
|
BlueCoin("FLUDD M", 523449, Requirements([NozzleType.spray]))
|
|
], parent_region="Pianta 2/4/6/8"),
|
|
|
|
SmsRegion("Pianta 5 Only", PIANTA, Requirements(location="Pianta Village - Chain Chomp's Bath"), [], [
|
|
BlueCoin("Back Beehive", 523436, Requirements([NozzleType.yoshi])),
|
|
BlueCoin("Front Beehive", 523437, Requirements([NozzleType.yoshi])),
|
|
BlueCoin("Butterflies", 523440, Requirements([NozzleType.yoshi]))
|
|
], parent_region="Pianta 3 Only"),
|
|
|
|
SmsRegion("Pianta 5 and Beyond", PIANTA, Requirements([NozzleType.yoshi]), [
|
|
Shine("Secret of the Village Underside", 523064,
|
|
Requirements([NozzleType.yoshi])),
|
|
Shine("Piantas in Need", 523063,
|
|
Requirements([NozzleType.splasher])),
|
|
Shine("Shadow Mario Runs Wild", 523066,
|
|
Requirements([NozzleType.spray], location="Pianta Village - Piantas in Need")),
|
|
Shine("Fluff Festival Coin Hunt", 523067,
|
|
Requirements([NozzleType.hover | NozzleType.rocket], location="Pianta Village - Shadow Mario Runs Wild")),
|
|
Shine("Red Coin Chucksters", 523068,
|
|
Requirements([NozzleType.hover]))], parent_region="Pianta 5 Only"),
|
|
|
|
SmsRegion("Pianta 6 Only", PIANTA, Requirements(location="Pianta Village - Secret of the Village Underside"), [], [
|
|
BlueCoin("Pianta in Need A", 523421, Requirements([NozzleType.spray])),
|
|
BlueCoin("Pianta in Need B", 523422, Requirements([NozzleType.spray])),
|
|
BlueCoin("Pianta in Need C", 523423, Requirements([NozzleType.spray])),
|
|
BlueCoin("Pianta in Need D", 523424, Requirements([NozzleType.spray])),
|
|
BlueCoin("Pianta in Need E", 523425, Requirements([NozzleType.spray])),
|
|
BlueCoin("Pianta in Need F", 523426, Requirements([NozzleType.spray])),
|
|
BlueCoin("Pianta in Need G", 523427, Requirements([NozzleType.spray])),
|
|
BlueCoin("Pianta in Need H", 523428, Requirements([NozzleType.spray]))
|
|
], parent_region="Pianta 5 Only"),
|
|
|
|
SmsRegion("Pianta 8 Only", PIANTA, Requirements(location="Pianta Village - Shadow Mario Runs Wild"), [
|
|
Shine("Soak the Sun", 523069, Requirements([NozzleType.spray, NozzleType.hover | NozzleType.rocket]))],
|
|
[
|
|
BlueCoin("Bird", 523441, Requirements([NozzleType.spray, NozzleType.hover]))
|
|
], [
|
|
NozzleBox("Rocket Box", 523882, Requirements([NozzleType.hover]))
|
|
], parent_region="Pianta 6 Only"),
|
|
|
|
# Corona Mountain
|
|
SmsRegion("Corona Mountain", "Corona Mountain", Requirements([NozzleType.spray, NozzleType.hover], corona=True),
|
|
[], [
|
|
BlueCoin("Platform", 523540, Requirements([NozzleType.hover])),
|
|
BlueCoin("Back Right Lava", 523541, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Left Lava", 523542, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Front Lava", 523543, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Front Left Lava", 523544, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Front Right Lava", 523545, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Back Left Lava", 523546, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Far Back Left Lava", 523547, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Far Back Right Lava", 523548, Requirements([NozzleType.spray, NozzleType.hover])),
|
|
BlueCoin("Right Lava", 523549, Requirements([NozzleType.spray, NozzleType.hover]))
|
|
],[
|
|
NozzleBox("Rocket Box", 523886, Requirements([NozzleType.spray, NozzleType.hover]))
|
|
]),
|
|
|
|
SmsRegion("Delfino Airstrip Revisit", "Delfino Airstrip Revisit", Requirements(corona=True), [
|
|
Shine("Red Coin Waterworks", 523088, Requirements([NozzleType.turbo]))], [
|
|
BlueCoin("Ice Cube", 523120, Requirements([NozzleType.turbo, NozzleType.spray]))
|
|
], parent_region=STATUE),
|
|
|
|
# Blue Coin Trades
|
|
SmsRegion("Boathouse Traders", "Boathouse Traders", Requirements(shines=3), [
|
|
Shine("Shine 1", 523070, Requirements(blues=10)),
|
|
Shine("Shine 2", 523071, Requirements(blues=20)),
|
|
Shine("Shine 3", 523072, Requirements(blues=30)),
|
|
Shine("Shine 4", 523073, Requirements(blues=40)),
|
|
Shine("Shine 5", 523074, Requirements(blues=50)),
|
|
Shine("Shine 6", 523075, Requirements(blues=60)),
|
|
Shine("Shine 7", 523076, Requirements(blues=70)),
|
|
Shine("Shine 8", 523077, Requirements(blues=80)),
|
|
Shine("Shine 9", 523078, Requirements(blues=90)),
|
|
Shine("Shine 10", 523079, Requirements(blues=100)),
|
|
Shine("Shine 11", 523080, Requirements(blues=110)),
|
|
Shine("Shine 12", 523081, Requirements(blues=120)),
|
|
Shine("Shine 13", 523082, Requirements(blues=130)),
|
|
Shine("Shine 14", 523083, Requirements(blues=140)),
|
|
Shine("Shine 15", 523084, Requirements(blues=150)),
|
|
Shine("Shine 16", 523085, Requirements(blues=160)),
|
|
Shine("Shine 17", 523108, Requirements(blues=170)),
|
|
Shine("Shine 18", 523109, Requirements(blues=180)),
|
|
Shine("Shine 19", 523110, Requirements(blues=190)),
|
|
Shine("Shine 20", 523111, Requirements(blues=200)),
|
|
Shine("Shine 21", 523112, Requirements(blues=210)),
|
|
Shine("Shine 22", 523113, Requirements(blues=220)),
|
|
Shine("Shine 23", 523114, Requirements(blues=230)),
|
|
Shine("Shine 24", 523115, Requirements(blues=240))
|
|
], [], trade=True)
|
|
]
|