Skip to content

Commit

Permalink
Pokemon Emerald: Fix scorched slab missing surf requirement (#2465)
Browse files Browse the repository at this point in the history
  • Loading branch information
Zunawe authored Nov 16, 2023
1 parent cb0412e commit 3619abc
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 5 deletions.
16 changes: 13 additions & 3 deletions worlds/pokemon_emerald/data/regions/routes.json
Original file line number Diff line number Diff line change
Expand Up @@ -1074,19 +1074,29 @@
"events": [],
"exits": [
"REGION_FORTREE_CITY/MAIN",
"REGION_ROUTE120/NORTH_POND",
"REGION_ROUTE120/NORTH_POND_SHORE",
"REGION_ROUTE120/SOUTH"
],
"warps": []
},
"REGION_ROUTE120/NORTH_POND": {
"REGION_ROUTE120/NORTH_POND_SHORE": {
"parent_map": "MAP_ROUTE120",
"locations": [
"ITEM_ROUTE_120_NEST_BALL"
],
"events": [],
"exits": [
"REGION_ROUTE120/NORTH"
"REGION_ROUTE120/NORTH",
"REGION_ROUTE120/NORTH_POND"
],
"warps": []
},
"REGION_ROUTE120/NORTH_POND": {
"parent_map": "MAP_ROUTE120",
"locations": [],
"events": [],
"exits": [
"REGION_ROUTE120/NORTH_POND_SHORE"
],
"warps": [
"MAP_ROUTE120:1/MAP_SCORCHED_SLAB:0"
Expand Down
8 changes: 6 additions & 2 deletions worlds/pokemon_emerald/rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -615,13 +615,17 @@ def get_location(location: str):

# Route 120
set_rule(
get_entrance("REGION_ROUTE120/NORTH -> REGION_ROUTE120/NORTH_POND"),
get_entrance("REGION_ROUTE120/NORTH -> REGION_ROUTE120/NORTH_POND_SHORE"),
lambda state: state.has("Devon Scope", world.player)
)
set_rule(
get_entrance("REGION_ROUTE120/NORTH_POND -> REGION_ROUTE120/NORTH"),
get_entrance("REGION_ROUTE120/NORTH_POND_SHORE -> REGION_ROUTE120/NORTH"),
lambda state: state.has("Devon Scope", world.player)
)
set_rule(
get_entrance("REGION_ROUTE120/NORTH_POND_SHORE -> REGION_ROUTE120/NORTH_POND"),
can_surf
)

# Route 121
set_rule(
Expand Down
31 changes: 31 additions & 0 deletions worlds/pokemon_emerald/test/test_accessibility.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,37 @@ def test_always_accessible(self) -> None:
self.assertTrue(self.can_reach_location(location_name_to_label("ITEM_ROUTE_115_SUPER_POTION")))


class TestScorchedSlabPond(PokemonEmeraldTestBase):
options = {
"enable_ferry": Toggle.option_true,
"require_flash": Toggle.option_false
}

def test_with_neither(self) -> None:
self.collect_by_name(["S.S. Ticket", "Letter", "Stone Badge", "HM01 Cut"])
self.assertTrue(self.can_reach_region("REGION_ROUTE120/NORTH"))
self.assertFalse(self.can_reach_location(location_name_to_label("ITEM_ROUTE_120_NEST_BALL")))
self.assertFalse(self.can_reach_location(location_name_to_label("ITEM_SCORCHED_SLAB_TM11")))

def test_with_surf(self) -> None:
self.collect_by_name(["S.S. Ticket", "Letter", "Stone Badge", "HM01 Cut", "HM03 Surf", "Balance Badge"])
self.assertTrue(self.can_reach_region("REGION_ROUTE120/NORTH"))
self.assertFalse(self.can_reach_location(location_name_to_label("ITEM_ROUTE_120_NEST_BALL")))
self.assertFalse(self.can_reach_location(location_name_to_label("ITEM_SCORCHED_SLAB_TM11")))

def test_with_scope(self) -> None:
self.collect_by_name(["S.S. Ticket", "Letter", "Stone Badge", "HM01 Cut", "Devon Scope"])
self.assertTrue(self.can_reach_region("REGION_ROUTE120/NORTH"))
self.assertTrue(self.can_reach_location(location_name_to_label("ITEM_ROUTE_120_NEST_BALL")))
self.assertFalse(self.can_reach_location(location_name_to_label("ITEM_SCORCHED_SLAB_TM11")))

def test_with_both(self) -> None:
self.collect_by_name(["S.S. Ticket", "Letter", "Stone Badge", "HM01 Cut", "Devon Scope", "HM03 Surf", "Balance Badge"])
self.assertTrue(self.can_reach_region("REGION_ROUTE120/NORTH"))
self.assertTrue(self.can_reach_location(location_name_to_label("ITEM_ROUTE_120_NEST_BALL")))
self.assertTrue(self.can_reach_location(location_name_to_label("ITEM_SCORCHED_SLAB_TM11")))


class TestSurf(PokemonEmeraldTestBase):
options = {
"npc_gifts": Toggle.option_true
Expand Down

0 comments on commit 3619abc

Please sign in to comment.