TUNIC: Add some more rules for Monastery connections (#4564)

* Move a couple locations to monastery

* Connect Quarry Back to Monastery

* Quarry Back -> Monastery with laurels, Monastery -> Monastery Back with wand/sword

* Add Monastery Back region

* Move a couple non-ER locations to monastery back

* Monastery front -> back with sword, wand, or laurels zip

* also laurels zip for non-ER
This commit is contained in:
Scipio Wright
2025-02-23 11:02:30 -05:00
committed by GitHub
parent 18de035b4d
commit 0f7fd48cdd
4 changed files with 15 additions and 7 deletions

View File

@@ -990,7 +990,9 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
rule=lambda state: has_ice_grapple_logic(True, IceGrappling.option_hard, state, world))
monastery_front_to_back = regions["Monastery Front"].connect(
connecting_region=regions["Monastery Back"])
connecting_region=regions["Monastery Back"],
rule=lambda state: has_sword(state, player) or state.has(fire_wand, player)
or laurels_zip(state, world))
# laurels through the gate, no setup needed
regions["Monastery Back"].connect(
connecting_region=regions["Monastery Front"],

View File

@@ -206,7 +206,7 @@ location_table: Dict[str, TunicLocationData] = {
"Fountain Cross Door - Page Pickup": TunicLocationData("Overworld Holy Cross", "Fountain Cross Room", location_group="Holy Cross"),
"Secret Gathering Place - Holy Cross Chest": TunicLocationData("Overworld Holy Cross", "Secret Gathering Place", location_group="Holy Cross"),
"Top of the Mountain - Page At The Peak": TunicLocationData("Overworld Holy Cross", "Top of the Mountain", location_group="Holy Cross"),
"Monastery - Monastery Chest": TunicLocationData("Monastery", "Monastery Back"),
"Monastery - Monastery Chest": TunicLocationData("Monastery Back", "Monastery Back"),
"Quarry - [Back Entrance] Bushes Holy Cross": TunicLocationData("Quarry Back", "Quarry Back", location_group="Holy Cross"),
"Quarry - [Back Entrance] Chest": TunicLocationData("Quarry Back", "Quarry Back"),
"Quarry - [Central] Near Shortcut Ladder": TunicLocationData("Quarry Back", "Quarry Back"),
@@ -220,12 +220,12 @@ location_table: Dict[str, TunicLocationData] = {
"Quarry - [Central] Obscured Below Entry Walkway": TunicLocationData("Quarry Back", "Quarry Back"),
"Quarry - [Central] Top Floor Overhang": TunicLocationData("Quarry", "Quarry"),
"Quarry - [East] Near Bridge": TunicLocationData("Quarry", "Quarry"),
"Quarry - [Central] Above Ladder": TunicLocationData("Quarry", "Quarry Monastery Entry"),
"Quarry - [Central] Above Ladder": TunicLocationData("Monastery", "Quarry Monastery Entry"),
"Quarry - [Central] Obscured Behind Staircase": TunicLocationData("Quarry", "Quarry"),
"Quarry - [Central] Above Ladder Dash Chest": TunicLocationData("Quarry", "Quarry Monastery Entry"),
"Quarry - [Central] Above Ladder Dash Chest": TunicLocationData("Monastery", "Quarry Monastery Entry"),
"Quarry - [West] Upper Area Bombable Wall": TunicLocationData("Quarry Back", "Quarry Back"),
"Quarry - [East] Bombable Wall": TunicLocationData("Quarry", "Quarry"),
"Hero's Grave - Ash Relic": TunicLocationData("Monastery", "Hero Relic - Quarry"),
"Hero's Grave - Ash Relic": TunicLocationData("Monastery Back", "Hero Relic - Quarry"),
"Quarry - [West] Shooting Range Secret Path": TunicLocationData("Lower Quarry", "Lower Quarry"),
"Quarry - [West] Near Shooting Range": TunicLocationData("Lower Quarry", "Lower Quarry"),
"Quarry - [West] Below Shooting Range": TunicLocationData("Lower Quarry", "Lower Quarry"),

View File

@@ -13,9 +13,10 @@ tunic_regions: dict[str, tuple[str]] = {
"Library": tuple(),
"Eastern Vault Fortress": ("Beneath the Vault",),
"Beneath the Vault": ("Eastern Vault Fortress",),
"Quarry Back": ("Quarry",),
"Quarry Back": ("Quarry", "Monastery"),
"Quarry": ("Monastery", "Lower Quarry"),
"Monastery": tuple(),
"Monastery": ("Monastery Back",),
"Monastery Back": tuple(),
"Lower Quarry": ("Rooted Ziggurat",),
"Rooted Ziggurat": tuple(),
"Swamp": ("Cathedral",),

View File

@@ -124,6 +124,11 @@ def set_region_rules(world: "TunicWorld") -> None:
and (state.has_any({grapple, laurels, gun}, player) or can_ladder_storage(state, world))
world.get_entrance("Quarry Back -> Quarry").access_rule = \
lambda state: has_sword(state, player) or state.has(fire_wand, player)
world.get_entrance("Quarry Back -> Monastery").access_rule = \
lambda state: state.has(laurels, player)
world.get_entrance("Monastery -> Monastery Back").access_rule = \
lambda state: (has_sword(state, player) or state.has(fire_wand, player)
or laurels_zip(state, world))
world.get_entrance("Quarry -> Lower Quarry").access_rule = \
lambda state: has_mask(state, world)
world.get_entrance("Lower Quarry -> Rooted Ziggurat").access_rule = \