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:
@@ -28,11 +28,14 @@ def set_rules(world: "MLSSWorld", excluded):
|
||||
lambda state: StateLogic.canDig(state, world.player),
|
||||
)
|
||||
if "Shop" in location.name and "Coffee" not in location.name and location.name not in excluded:
|
||||
forbid_item(world.get_location(location.name), "Hammers", world.player)
|
||||
if "Badge" in location.name or "Pants" in location.name:
|
||||
add_rule(
|
||||
world.get_location(location.name),
|
||||
lambda state: StateLogic.brooch(state, world.player) or StateLogic.rose(state, world.player),
|
||||
lambda state: (StateLogic.brooch(state, world.player) and StateLogic.fruits(state, world.player)
|
||||
and (StateLogic.hammers(state, world.player)
|
||||
or StateLogic.fire(state, world.player)
|
||||
or StateLogic.thunder(state, world.player)))
|
||||
or StateLogic.rose(state, world.player),
|
||||
)
|
||||
if location.itemType != 0 and location.name not in excluded:
|
||||
if "Bowser" in location.name and world.options.castle_skip:
|
||||
@@ -99,9 +102,86 @@ def set_rules(world: "MLSSWorld", excluded):
|
||||
lambda state: StateLogic.ultra(state, world.player) and StateLogic.thunder(state, world.player),
|
||||
)
|
||||
|
||||
forbid_item(
|
||||
world.get_location(LocationName.SSChuckolaMembershipCard), "Nuts", world.player
|
||||
) # Bandaid Fix
|
||||
if world.options.goal == 1 and not world.options.castle_skip:
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleRoyCorridorBlock1),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleRoyCorridorBlock2),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleMiniMarioSidescrollerBlock1),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleMiniMarioSidescrollerBlock2),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleMiniMarioMazeBlock1),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleMiniMarioMazeBlock2),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleBeforeWendyFightBlock1),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
and StateLogic.ultra(state, world.player)
|
||||
and StateLogic.fire(state, world.player)
|
||||
and StateLogic.canCrash(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleBeforeWendyFightBlock2),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
and StateLogic.ultra(state, world.player)
|
||||
and StateLogic.fire(state, world.player)
|
||||
and StateLogic.canCrash(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleLarryRoomBlock),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
and StateLogic.ultra(state, world.player)
|
||||
and StateLogic.canDash(state, world.player)
|
||||
and StateLogic.canCrash(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleWendyLarryHallwayDigspot),
|
||||
lambda state: StateLogic.ultra(state, world.player)
|
||||
and StateLogic.fire(state, world.player)
|
||||
and StateLogic.canCrash(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleBeforeFawfulFightBlock1),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
and StateLogic.ultra(state, world.player)
|
||||
and StateLogic.canDash(state, world.player)
|
||||
and StateLogic.canCrash(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleBeforeFawfulFightBlock2),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
and StateLogic.ultra(state, world.player)
|
||||
and StateLogic.canDash(state, world.player)
|
||||
and StateLogic.canCrash(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleGreatDoorBlock1),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
and StateLogic.ultra(state, world.player)
|
||||
and StateLogic.canDash(state, world.player)
|
||||
and StateLogic.canCrash(state, world.player)
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.BowsersCastleGreatDoorBlock2),
|
||||
lambda state: StateLogic.canDig(state, world.player)
|
||||
and StateLogic.ultra(state, world.player)
|
||||
and StateLogic.canDash(state, world.player)
|
||||
and StateLogic.canCrash(state, world.player)
|
||||
)
|
||||
|
||||
add_rule(
|
||||
world.get_location(LocationName.HoohooVillageHammerHouseBlock),
|
||||
@@ -398,6 +478,10 @@ def set_rules(world: "MLSSWorld", excluded):
|
||||
world.get_location(LocationName.BeanstarPieceWinkleArea),
|
||||
lambda state: StateLogic.winkle(state, world.player),
|
||||
)
|
||||
add_rule(
|
||||
world.get_location("Guffawha Ruins Block"),
|
||||
lambda state: StateLogic.thunder(state, world.player),
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.GwarharLagoonSpangleReward),
|
||||
lambda state: StateLogic.spangle(state, world.player),
|
||||
@@ -406,6 +490,18 @@ def set_rules(world: "MLSSWorld", excluded):
|
||||
world.get_location(LocationName.PantsShopMomPiranhaFlag1),
|
||||
lambda state: StateLogic.brooch(state, world.player) or StateLogic.rose(state, world.player),
|
||||
)
|
||||
add_rule(
|
||||
world.get_location("Chucklehuck Woods Solo Luigi Cave Room 2 Block"),
|
||||
lambda state: StateLogic.brooch(state, world.player) and StateLogic.canDig(state, world.player),
|
||||
)
|
||||
add_rule(
|
||||
world.get_location("Chucklehuck Woods Solo Luigi Cave Room 3 Block 1"),
|
||||
lambda state: StateLogic.brooch(state, world.player) and StateLogic.canDig(state, world.player),
|
||||
)
|
||||
add_rule(
|
||||
world.get_location("Chucklehuck Woods Solo Luigi Cave Room 3 Block 2"),
|
||||
lambda state: StateLogic.brooch(state, world.player) and StateLogic.canDig(state, world.player),
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.PantsShopMomPiranhaFlag2),
|
||||
lambda state: StateLogic.brooch(state, world.player) or StateLogic.rose(state, world.player),
|
||||
@@ -600,6 +696,14 @@ def set_rules(world: "MLSSWorld", excluded):
|
||||
world.get_location(LocationName.HoohooMountainBaseBooStatueCaveCoinBlock1),
|
||||
lambda state: StateLogic.canCrash(state, world.player) or StateLogic.super(state, world.player),
|
||||
)
|
||||
add_rule(
|
||||
world.get_location("Chucklehuck Woods Solo Luigi Cave Room 1 Coin Block 1"),
|
||||
lambda state: StateLogic.canDig(state, world.player) and StateLogic.brooch(state, world.player),
|
||||
)
|
||||
add_rule(
|
||||
world.get_location("Chucklehuck Woods Solo Luigi Cave Room 1 Coin Block 2"),
|
||||
lambda state: StateLogic.canDig(state, world.player) and StateLogic.brooch(state, world.player),
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.HoohooMountainBaseBooStatueCaveCoinBlock2),
|
||||
lambda state: StateLogic.canCrash(state, world.player) or StateLogic.super(state, world.player),
|
||||
@@ -679,7 +783,7 @@ def set_rules(world: "MLSSWorld", excluded):
|
||||
add_rule(
|
||||
world.get_location(LocationName.GwarharLagoonFirstUnderwaterAreaRoom2CoinBlock),
|
||||
lambda state: StateLogic.canDash(state, world.player)
|
||||
and (StateLogic.membership(state, world.player) or StateLogic.surfable(state, world.player)),
|
||||
and (StateLogic.membership(state, world.player) or StateLogic.surfable(state, world.player)),
|
||||
)
|
||||
add_rule(
|
||||
world.get_location(LocationName.JokesEndSecondFloorWestRoomCoinBlock),
|
||||
|
||||
Reference in New Issue
Block a user