Skip to content

Commit

Permalink
TUNIC: Fix a few missing tricks in logic (#4132)
Browse files Browse the repository at this point in the history
* Add missing connection to the furnace entry by west garden

* Add missing connection to the furnace entry by west garden

* Add missing hard ls for ruined passage door

* Allow shield for LS

* Split PR into two

* Split PR into two

* Split PR into two

* Add dark tomb ice grapple through the wall
  • Loading branch information
ScipioWright authored Nov 18, 2024
1 parent 4b80b78 commit 01c6037
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 6 deletions.
2 changes: 1 addition & 1 deletion worlds/tunic/er_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -807,7 +807,7 @@ class DeadEnd(IntEnum):
[],
# drop a rudeling, icebolt or ice bomb
"Overworld to West Garden from Furnace":
[["IG3"]],
[["IG3"], ["LS1"]],
},
"East Overworld": {
"Above Ruined Passage":
Expand Down
11 changes: 7 additions & 4 deletions worlds/tunic/er_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -501,9 +501,11 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
regions["Dark Tomb Upper"].connect(
connecting_region=regions["Dark Tomb Entry Point"])

# ice grapple through the wall, get the little secret sound to trigger
regions["Dark Tomb Upper"].connect(
connecting_region=regions["Dark Tomb Main"],
rule=lambda state: has_ladder("Ladder in Dark Tomb", state, world))
rule=lambda state: has_ladder("Ladder in Dark Tomb", state, world)
or has_ice_grapple_logic(False, IceGrappling.option_hard, state, world))
regions["Dark Tomb Main"].connect(
connecting_region=regions["Dark Tomb Upper"],
rule=lambda state: has_ladder("Ladder in Dark Tomb", state, world))
Expand Down Expand Up @@ -779,12 +781,10 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_

regions["Fortress East Shortcut Upper"].connect(
connecting_region=regions["Fortress East Shortcut Lower"])
# nmg: can ice grapple upwards
regions["Fortress East Shortcut Lower"].connect(
connecting_region=regions["Fortress East Shortcut Upper"],
rule=lambda state: has_ice_grapple_logic(True, IceGrappling.option_easy, state, world))

# nmg: ice grapple through the big gold door, can do it both ways
regions["Eastern Vault Fortress"].connect(
connecting_region=regions["Eastern Vault Fortress Gold Door"],
rule=lambda state: state.has_all({"Activate Eastern Vault West Fuses",
Expand All @@ -807,7 +807,6 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
regions["Fortress Hero's Grave Region"].connect(
connecting_region=regions["Fortress Grave Path"])

# nmg: ice grapple from upper grave path to lower
regions["Fortress Grave Path Upper"].connect(
connecting_region=regions["Fortress Grave Path"],
rule=lambda state: has_ice_grapple_logic(True, IceGrappling.option_easy, state, world))
Expand Down Expand Up @@ -1139,6 +1138,9 @@ def ls_connect(origin_name: str, portal_sdt: str) -> None:
for portal_dest in region_info.portals:
ls_connect(ladder_region, "Overworld Redux, " + portal_dest)

# convenient staircase means this one is easy difficulty, even though there's an elevation change
ls_connect("LS Elev 0", "Overworld Redux, Furnace_gyro_west")

# connect ls elevation regions to regions where you can get an enemy to knock you down, also well rail
if options.ladder_storage >= LadderStorage.option_medium:
for ladder_region, region_info in ow_ladder_groups.items():
Expand All @@ -1154,6 +1156,7 @@ def ls_connect(origin_name: str, portal_sdt: str) -> None:
if options.ladder_storage >= LadderStorage.option_hard:
ls_connect("LS Elev 1", "Overworld Redux, EastFiligreeCache_")
ls_connect("LS Elev 2", "Overworld Redux, Town_FiligreeRoom_")
ls_connect("LS Elev 2", "Overworld Redux, Ruins Passage_west")
ls_connect("LS Elev 3", "Overworld Redux, Overworld Interiors_house")
ls_connect("LS Elev 5", "Overworld Redux, Temple_main")

Expand Down
2 changes: 1 addition & 1 deletion worlds/tunic/ladder_storage_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class OWLadderInfo(NamedTuple):
["Overworld Beach"]),
# also the east filigree room
"LS Elev 1": OWLadderInfo({"Ladders near Weathervane", "Ladders in Overworld Town", "Ladder to Swamp"},
["Furnace_gyro_lower", "Swamp Redux 2_wall"],
["Furnace_gyro_lower", "Furnace_gyro_west", "Swamp Redux 2_wall"],
["Overworld Tunnel Turret"]),
# also the fountain filigree room and ruined passage door
"LS Elev 2": OWLadderInfo({"Ladders near Weathervane", "Ladders to West Bell"},
Expand Down

0 comments on commit 01c6037

Please sign in to comment.