Pokemon Emerald: Add Free Fly Blacklist (#4165)
Co-authored-by: Jasper den Brok <jasper.den.brok@gmail.com>
This commit is contained in:
parent
7474c27372
commit
3d1d6908c8
|
@ -33,6 +33,18 @@ VISITED_EVENT_NAME_TO_ID = {
|
||||||
"EVENT_VISITED_SOUTHERN_ISLAND": 17,
|
"EVENT_VISITED_SOUTHERN_ISLAND": 17,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BLACKLIST_OPTION_TO_VISITED_EVENT = {
|
||||||
|
"Slateport City": "EVENT_VISITED_SLATEPORT_CITY",
|
||||||
|
"Mauville City": "EVENT_VISITED_MAUVILLE_CITY",
|
||||||
|
"Verdanturf Town": "EVENT_VISITED_VERDANTURF_TOWN",
|
||||||
|
"Fallarbor Town": "EVENT_VISITED_FALLARBOR_TOWN",
|
||||||
|
"Lavaridge Town": "EVENT_VISITED_LAVARIDGE_TOWN",
|
||||||
|
"Fortree City": "EVENT_VISITED_FORTREE_CITY",
|
||||||
|
"Lilycove City": "EVENT_VISITED_LILYCOVE_CITY",
|
||||||
|
"Mossdeep City": "EVENT_VISITED_MOSSDEEP_CITY",
|
||||||
|
"Sootopolis City": "EVENT_VISITED_SOOTOPOLIS_CITY",
|
||||||
|
"Ever Grande City": "EVENT_VISITED_EVER_GRANDE_CITY",
|
||||||
|
}
|
||||||
|
|
||||||
class PokemonEmeraldLocation(Location):
|
class PokemonEmeraldLocation(Location):
|
||||||
game: str = "Pokemon Emerald"
|
game: str = "Pokemon Emerald"
|
||||||
|
@ -129,18 +141,10 @@ def set_free_fly(world: "PokemonEmeraldWorld") -> None:
|
||||||
# If not enabled, set it to Littleroot Town by default
|
# If not enabled, set it to Littleroot Town by default
|
||||||
fly_location_name = "EVENT_VISITED_LITTLEROOT_TOWN"
|
fly_location_name = "EVENT_VISITED_LITTLEROOT_TOWN"
|
||||||
if world.options.free_fly_location:
|
if world.options.free_fly_location:
|
||||||
fly_location_name = world.random.choice([
|
blacklisted_locations = set(BLACKLIST_OPTION_TO_VISITED_EVENT[city] for city in world.options.free_fly_blacklist.value)
|
||||||
"EVENT_VISITED_SLATEPORT_CITY",
|
free_fly_locations = sorted(set(BLACKLIST_OPTION_TO_VISITED_EVENT.values()) - blacklisted_locations)
|
||||||
"EVENT_VISITED_MAUVILLE_CITY",
|
if free_fly_locations:
|
||||||
"EVENT_VISITED_VERDANTURF_TOWN",
|
fly_location_name = world.random.choice(free_fly_locations)
|
||||||
"EVENT_VISITED_FALLARBOR_TOWN",
|
|
||||||
"EVENT_VISITED_LAVARIDGE_TOWN",
|
|
||||||
"EVENT_VISITED_FORTREE_CITY",
|
|
||||||
"EVENT_VISITED_LILYCOVE_CITY",
|
|
||||||
"EVENT_VISITED_MOSSDEEP_CITY",
|
|
||||||
"EVENT_VISITED_SOOTOPOLIS_CITY",
|
|
||||||
"EVENT_VISITED_EVER_GRANDE_CITY",
|
|
||||||
])
|
|
||||||
|
|
||||||
world.free_fly_location_id = VISITED_EVENT_NAME_TO_ID[fly_location_name]
|
world.free_fly_location_id = VISITED_EVENT_NAME_TO_ID[fly_location_name]
|
||||||
|
|
||||||
|
|
|
@ -725,6 +725,24 @@ class FreeFlyLocation(Toggle):
|
||||||
"""
|
"""
|
||||||
display_name = "Free Fly Location"
|
display_name = "Free Fly Location"
|
||||||
|
|
||||||
|
class FreeFlyBlacklist(OptionSet):
|
||||||
|
"""
|
||||||
|
Disables specific locations as valid free fly locations.
|
||||||
|
Has no effect if Free Fly Location is disabled.
|
||||||
|
"""
|
||||||
|
display_name = "Free Fly Blacklist"
|
||||||
|
valid_keys = [
|
||||||
|
"Slateport City",
|
||||||
|
"Mauville City",
|
||||||
|
"Verdanturf Town",
|
||||||
|
"Fallarbor Town",
|
||||||
|
"Lavaridge Town",
|
||||||
|
"Fortree City",
|
||||||
|
"Lilycove City",
|
||||||
|
"Mossdeep City",
|
||||||
|
"Sootopolis City",
|
||||||
|
"Ever Grande City",
|
||||||
|
]
|
||||||
|
|
||||||
class HmRequirements(Choice):
|
class HmRequirements(Choice):
|
||||||
"""
|
"""
|
||||||
|
@ -876,6 +894,7 @@ class PokemonEmeraldOptions(PerGameCommonOptions):
|
||||||
extra_bumpy_slope: ExtraBumpySlope
|
extra_bumpy_slope: ExtraBumpySlope
|
||||||
modify_118: ModifyRoute118
|
modify_118: ModifyRoute118
|
||||||
free_fly_location: FreeFlyLocation
|
free_fly_location: FreeFlyLocation
|
||||||
|
free_fly_blacklist: FreeFlyBlacklist
|
||||||
hm_requirements: HmRequirements
|
hm_requirements: HmRequirements
|
||||||
|
|
||||||
turbo_a: TurboA
|
turbo_a: TurboA
|
||||||
|
|
Loading…
Reference in New Issue