Pokémon R/B: Version 3 (#1520)

* Coin items received or found in the Game Corner are now shuffled, locations require Coin Case
* Prizesanity option (shuffle Game Corner Prizes)
* DexSanity option: location checks for marking Pokémon as caught in your Pokédex. Also an option to set all Pokémon in your Pokédex as seen from the start, to aid in locating them.
* Option to randomize the layout of the Rock Tunnel.
* Area 1-to-1 mapping: When one instance of a Wild Pokémon in a given area is randomized, all instances of that Pokémon will be the same. So that if a route had 3 different Pokémon before, it will have 3 after randomization.
* Option to randomize the moves taught by TMs.
* Exact controls for TM/HM compatibility chances.
* Option to randomize Pokémon's pallets or set them based on primary type.
* Added Cinnabar Gym trainers to Trainersanity and randomized the quiz questions and answers. Getting a correct answer will flag the trainer as defeated so that you can obtain the Trainersanity check without defeating the trainer if you answer correctly.
This commit is contained in:
Alchav
2023-03-13 18:40:55 -04:00
committed by GitHub
parent 4d7bd929bc
commit df55455fc0
18 changed files with 2025 additions and 918 deletions

View File

@@ -45,14 +45,13 @@ class PokemonLogic(LogicMixin):
["Boulder Badge", "Cascade Badge", "Thunder Badge", "Rainbow Badge", "Soul Badge", "Marsh Badge",
"Volcano Badge", "Earth Badge", "Bicycle", "Silph Scope", "Item Finder", "Super Rod", "Good Rod",
"Old Rod", "Lift Key", "Card Key", "Town Map", "Coin Case", "S.S. Ticket", "Secret Key",
"Mansion Key", "Safari Pass", "Plant Key", "Hideout Key", "HM01 Cut", "HM02 Fly", "HM03 Surf",
"HM04 Strength", "HM05 Flash"] if self.has(item, player)]) >= count
"Poke Flute", "Mansion Key", "Safari Pass", "Plant Key", "Hideout Key", "HM01 Cut", "HM02 Fly",
"HM03 Surf", "HM04 Strength", "HM05 Flash"] if self.has(item, player)]) >= count
def pokemon_rb_can_pass_guards(self, player):
if self.multiworld.tea[player].value:
return self.has("Tea", player)
else:
# this could just be "True", but you never know what weird options I might introduce later ;)
return self.can_reach("Celadon City - Counter Man", "Location", player)
def pokemon_rb_has_badges(self, count, player):
@@ -60,13 +59,8 @@ class PokemonLogic(LogicMixin):
"Soul Badge", "Volcano Badge", "Earth Badge"] if self.has(item, player)]) >= count
def pokemon_rb_oaks_aide(self, count, player):
if self.multiworld.randomize_pokedex[player].value > 0:
if not self.has("Pokedex", player):
return False
else:
if not self.has("Oak's Parcel", player):
return False
return self.pokemon_rb_has_pokemon(count, player)
return ((not self.multiworld.require_pokedex[player] or self.has("Pokedex", player))
and self.pokemon_rb_has_pokemon(count, player))
def pokemon_rb_has_pokemon(self, count, player):
obtained_pokemon = set()