diff --git a/worlds/pokemon_rb/basepatch_blue.bsdiff4 b/worlds/pokemon_rb/basepatch_blue.bsdiff4 index dfffd829..9e98a2cf 100644 Binary files a/worlds/pokemon_rb/basepatch_blue.bsdiff4 and b/worlds/pokemon_rb/basepatch_blue.bsdiff4 differ diff --git a/worlds/pokemon_rb/basepatch_red.bsdiff4 b/worlds/pokemon_rb/basepatch_red.bsdiff4 index cfcfab59..9e399407 100644 Binary files a/worlds/pokemon_rb/basepatch_red.bsdiff4 and b/worlds/pokemon_rb/basepatch_red.bsdiff4 differ diff --git a/worlds/pokemon_rb/locations.py b/worlds/pokemon_rb/locations.py index 3e0148a8..6b199690 100644 --- a/worlds/pokemon_rb/locations.py +++ b/worlds/pokemon_rb/locations.py @@ -28,6 +28,7 @@ def always_on(multiworld, player): return True + class LocationData: def __init__(self, region, name, original_item, rom_address=None, ram_address=None, event=False, type="Item", inclusion=always_on): @@ -42,6 +43,7 @@ class LocationData: self.type = type self.inclusion = inclusion + class EventFlag: def __init__(self, flag): self.byte = int(flag / 8) diff --git a/worlds/pokemon_rb/poke_data.py b/worlds/pokemon_rb/poke_data.py index 75222d57..691db1c4 100644 --- a/worlds/pokemon_rb/poke_data.py +++ b/worlds/pokemon_rb/poke_data.py @@ -1205,8 +1205,6 @@ tm_moves = [ 'Thunder Wave', 'Psywave', 'Explosion', 'Rock Slide', 'Tri Attack', 'Substitute' ] - - first_stage_pokemon = [pokemon for pokemon in pokemon_data.keys() if pokemon not in evolves_from] legendary_pokemon = ["Articuno", "Zapdos", "Moltres", "Mewtwo", "Mew"] diff --git a/worlds/pokemon_rb/rom.py b/worlds/pokemon_rb/rom.py index d209f0b2..a3e3510d 100644 --- a/worlds/pokemon_rb/rom.py +++ b/worlds/pokemon_rb/rom.py @@ -40,7 +40,7 @@ def get_move(moves, chances, random, starting_move=False): def get_encounter_slots(self): - encounter_slots = [location for location in location_data if location.type == "Wild Encounter"] + encounter_slots = deepcopy([location for location in location_data if location.type == "Wild Encounter"]) for location in encounter_slots: if isinstance(location.original_item, list): @@ -107,11 +107,11 @@ def process_trainer_data(self, data): def process_static_pokemon(self): - starter_slots = [location for location in location_data if location.type == "Starter Pokemon"] - legendary_slots = [location for location in location_data if location.type == "Legendary Pokemon"] - static_slots = [location for location in location_data if location.type in - ["Static Pokemon", "Missable Pokemon"]] - legendary_mons = [slot.original_item for slot in legendary_slots] + starter_slots = deepcopy([location for location in location_data if location.type == "Starter Pokemon"]) + legendary_slots = deepcopy([location for location in location_data if location.type == "Legendary Pokemon"]) + static_slots = deepcopy([location for location in location_data if location.type in + ["Static Pokemon", "Missable Pokemon"]]) + legendary_mons = deepcopy([slot.original_item for slot in legendary_slots]) tower_6F_mons = set() for i in range(1, 11): @@ -224,7 +224,7 @@ def process_wild_pokemon(self): poke_data.pokemon_data[slot.original_item]["type2"] in [self.local_poke_data[mon]["type1"], self.local_poke_data[mon]["type2"]]])] if not candidate_locations: - candidate_locations = location_data + candidate_locations = get_encounter_slots(self) candidate_locations = [self.multiworld.get_location(location.name, self.player) for location in candidate_locations] candidate_locations.sort(key=lambda slot: abs(get_base_stat_total(slot.item.name) - stat_base)) for location in candidate_locations: