MLSS: Add new goal + Update basepatch to standalone equivalent (#4409)

* Item groups + small changes

* Add alternate goal

* New Locations and Logic Updates + Basepatch

* Update basepatch.bsdiff

* Update Basepatch

* Update basepatch.bsdiff

* Update bowsers castle logic with emblem hunt

* Update Archipelago Unittests.run.xml

* Update Archipelago Unittests.run.xml

* Fix for overlapping ROM addresses

* Update Rom.py

* Update __init__.py

* Update basepatch.bsdiff

* Update Rom.py

* Update client with new helper function

* Update basepatch.bsdiff

* Update worlds/mlss/__init__.py

Co-authored-by: qwint <qwint.42@gmail.com>

* Update worlds/mlss/__init__.py

Co-authored-by: qwint <qwint.42@gmail.com>

* Review Refactor

* Review Refactor

---------

Co-authored-by: qwint <qwint.42@gmail.com>
This commit is contained in:
jamesbrq
2025-03-09 11:37:15 -04:00
committed by GitHub
parent 4ebabc1208
commit 2639796255
12 changed files with 234 additions and 39 deletions

View File

@@ -91,6 +91,16 @@ def connect_regions(world: "MLSSWorld"):
connect(world, names, "Main Area", "BaseUltraRocks", lambda state: StateLogic.ultra(state, world.player))
connect(world, names, "Main Area", "Chucklehuck Woods", lambda state: StateLogic.brooch(state, world.player))
connect(world, names, "Main Area", "BooStatue", lambda state: StateLogic.canCrash(state, world.player))
if world.options.goal == "emblem_hunt":
if world.options.castle_skip:
connect(world, names, "Main Area", "Cackletta's Soul",
lambda state: state.has("Beanstar Emblem", world.player, world.options.emblems_required.value))
else:
connect(world, names, "Main Area", "Bowser's Castle", lambda state: state.has("Beanstar Emblem", world.player, world.options.emblems_required.value))
connect(world, names, "Bowser's Castle", "Bowser's Castle Mini", lambda state:
StateLogic.canMini(state, world.player)
and StateLogic.thunder(state,world.player))
connect(world, names, "Bowser's Castle Mini", "Cackletta's Soul", lambda state: StateLogic.soul(state, world.player))
connect(
world,
names,
@@ -213,8 +223,8 @@ def connect_regions(world: "MLSSWorld"):
connect(world, names, "Surfable", "GwarharEntrance")
connect(world, names, "Surfable", "Oasis")
connect(world, names, "Surfable", "JokesEntrance", lambda state: StateLogic.fire(state, world.player))
connect(world, names, "JokesMain", "PostJokes", lambda state: StateLogic.postJokes(state, world.player))
if not world.options.castle_skip:
connect(world, names, "JokesMain", "PostJokes", lambda state: StateLogic.postJokes(state, world.player, world.options.goal.value))
if not world.options.castle_skip and world.options.goal != "emblem_hunt":
connect(world, names, "PostJokes", "Bowser's Castle")
connect(
world,
@@ -224,7 +234,7 @@ def connect_regions(world: "MLSSWorld"):
lambda state: StateLogic.canMini(state, world.player) and StateLogic.thunder(state, world.player),
)
connect(world, names, "Bowser's Castle Mini", "Cackletta's Soul")
else:
elif world.options.goal != "emblem_hunt":
connect(world, names, "PostJokes", "Cackletta's Soul")
connect(world, names, "Chucklehuck Woods", "Winkle", lambda state: StateLogic.canDash(state, world.player))
connect(
@@ -247,14 +257,14 @@ def connect_regions(world: "MLSSWorld"):
names,
"Shop Starting Flag",
"Shop Birdo Flag",
lambda state: StateLogic.postJokes(state, world.player),
lambda state: StateLogic.postJokes(state, world.player, world.options.goal.value),
)
connect(
world,
names,
"Fungitown",
"Fungitown Shop Birdo Flag",
lambda state: StateLogic.postJokes(state, world.player),
lambda state: StateLogic.postJokes(state, world.player, world.options.goal.value),
)
else:
connect(
@@ -276,14 +286,14 @@ def connect_regions(world: "MLSSWorld"):
names,
"Shop Starting Flag",
"Shop Birdo Flag",
lambda state: StateLogic.canCrash(state, world.player) and StateLogic.postJokes(state, world.player),
lambda state: StateLogic.canCrash(state, world.player) and StateLogic.postJokes(state, world.player, world.options.goal.value),
)
connect(
world,
names,
"Fungitown",
"Fungitown Shop Birdo Flag",
lambda state: StateLogic.canCrash(state, world.player) and StateLogic.postJokes(state, world.player),
lambda state: StateLogic.canCrash(state, world.player) and StateLogic.postJokes(state, world.player, world.options.goal.value),
)