Pokemon Emerald: Randomize rock smash encounters (#3912)
* Pokemon Emerald: WIP add rock smash encounter randomization * Pokemon Emerald: Refactor encounter data on maps * Pokemon Emerald: Remove unused import * Pokemon Emerald: Swap StrEnum for regular Enum and use .value
This commit is contained in:
@@ -27,6 +27,7 @@ from .pokemon import (get_random_move, get_species_id_by_label, randomize_abilit
|
||||
randomize_legendary_encounters, randomize_misc_pokemon, randomize_starters,
|
||||
randomize_tm_hm_compatibility,randomize_types, randomize_wild_encounters)
|
||||
from .rom import PokemonEmeraldProcedurePatch, write_tokens
|
||||
from .util import get_encounter_type_label
|
||||
|
||||
|
||||
class PokemonEmeraldWebWorld(WebWorld):
|
||||
@@ -636,32 +637,11 @@ class PokemonEmeraldWorld(World):
|
||||
|
||||
spoiler_handle.write(f"\n\nWild Pokemon ({self.player_name}):\n\n")
|
||||
|
||||
slot_to_rod_suffix = {
|
||||
0: " (Old Rod)",
|
||||
1: " (Old Rod)",
|
||||
2: " (Good Rod)",
|
||||
3: " (Good Rod)",
|
||||
4: " (Good Rod)",
|
||||
5: " (Super Rod)",
|
||||
6: " (Super Rod)",
|
||||
7: " (Super Rod)",
|
||||
8: " (Super Rod)",
|
||||
9: " (Super Rod)",
|
||||
}
|
||||
|
||||
species_maps = defaultdict(set)
|
||||
for map in self.modified_maps.values():
|
||||
if map.land_encounters is not None:
|
||||
for encounter in map.land_encounters.slots:
|
||||
species_maps[encounter].add(map.label + " (Land)")
|
||||
|
||||
if map.water_encounters is not None:
|
||||
for encounter in map.water_encounters.slots:
|
||||
species_maps[encounter].add(map.label + " (Water)")
|
||||
|
||||
if map.fishing_encounters is not None:
|
||||
for slot, encounter in enumerate(map.fishing_encounters.slots):
|
||||
species_maps[encounter].add(map.label + slot_to_rod_suffix[slot])
|
||||
for map_data in self.modified_maps.values():
|
||||
for encounter_type, encounter_data in map_data.encounters.items():
|
||||
for i, encounter in enumerate(encounter_data.slots):
|
||||
species_maps[encounter].add(f"{map_data.label} ({get_encounter_type_label(encounter_type, i)})")
|
||||
|
||||
lines = [f"{emerald_data.species[species].label}: {', '.join(sorted(maps))}\n"
|
||||
for species, maps in species_maps.items()]
|
||||
@@ -675,32 +655,11 @@ class PokemonEmeraldWorld(World):
|
||||
if self.options.dexsanity:
|
||||
from collections import defaultdict
|
||||
|
||||
slot_to_rod_suffix = {
|
||||
0: " (Old Rod)",
|
||||
1: " (Old Rod)",
|
||||
2: " (Good Rod)",
|
||||
3: " (Good Rod)",
|
||||
4: " (Good Rod)",
|
||||
5: " (Super Rod)",
|
||||
6: " (Super Rod)",
|
||||
7: " (Super Rod)",
|
||||
8: " (Super Rod)",
|
||||
9: " (Super Rod)",
|
||||
}
|
||||
|
||||
species_maps = defaultdict(set)
|
||||
for map in self.modified_maps.values():
|
||||
if map.land_encounters is not None:
|
||||
for encounter in map.land_encounters.slots:
|
||||
species_maps[encounter].add(map.label + " (Land)")
|
||||
|
||||
if map.water_encounters is not None:
|
||||
for encounter in map.water_encounters.slots:
|
||||
species_maps[encounter].add(map.label + " (Water)")
|
||||
|
||||
if map.fishing_encounters is not None:
|
||||
for slot, encounter in enumerate(map.fishing_encounters.slots):
|
||||
species_maps[encounter].add(map.label + slot_to_rod_suffix[slot])
|
||||
for map_data in self.modified_maps.values():
|
||||
for encounter_type, encounter_data in map_data.encounters.items():
|
||||
for i, encounter in enumerate(encounter_data.slots):
|
||||
species_maps[encounter].add(f"{map_data.label} ({get_encounter_type_label(encounter_type, i)})")
|
||||
|
||||
hint_data[self.player] = {
|
||||
self.location_name_to_id[f"Pokedex - {emerald_data.species[species].label}"]: ", ".join(sorted(maps))
|
||||
|
||||
Reference in New Issue
Block a user