[Pokemon R/B] Allow 0 exp setting and add logic rule to Cinnabar Gym to ensure higher level Pokémon are catchable

This commit is contained in:
Alchav 2022-12-18 16:22:03 -05:00 committed by Fabian Dill
parent 395d35571c
commit caf63dd737
3 changed files with 7 additions and 2 deletions

View File

@ -80,3 +80,8 @@ class PokemonLogic(LogicMixin):
return (self.can_reach('Mt Moon 1F - Southwest Item', 'Location', player) and
self.can_reach('Cinnabar Island - Lab Scientist', 'Location', player) and len(
[item for item in ["Dome Fossil", "Helix Fossil", "Old Amber"] if self.has(item, player)]) >= count)
def pokemon_rb_cinnabar_gym(self, player):
# ensures higher level Pokémon are obtainable before Cinnabar Gym is in logic
return ((not self.multiworld.extra_key_items[player]) or self.has("Mansion Key", player)
or self.has("Oak's Parcel", player) or self.pokemon_rb_can_surf(player))

View File

@ -199,7 +199,7 @@ class OaksAidRt15(Range):
class ExpModifier(SpecialRange):
"""Modifier for EXP gained. When specifying a number, exp is multiplied by this amount and divided by 16."""
display_name = "Exp Modifier"
range_start = 1
range_start = 0
range_end = 255
default = 16
special_range_names = {

View File

@ -248,7 +248,7 @@ def create_regions(multiworld: MultiWorld, player: int):
connect(multiworld, player, "Viridian City", "Viridian City North", lambda state: state.has("Oak's Parcel", player) or state.multiworld.old_man[player].value == 2 or state.pokemon_rb_can_cut(player))
connect(multiworld, player, "Route 3", "Mt Moon 1F", one_way=True)
connect(multiworld, player, "Route 11", "Route 11 East", lambda state: state.pokemon_rb_can_strength(player))
connect(multiworld, player, "Cinnabar Island", "Cinnabar Gym", lambda state: state.has("Secret Key", player), one_way=True)
connect(multiworld, player, "Cinnabar Island", "Cinnabar Gym", lambda state: state.has("Secret Key", player) and state.pokemon_rb_cinnabar_gym(player), one_way=True)
connect(multiworld, player, "Cinnabar Island", "Pokemon Mansion 1F", lambda state: state.has("Mansion Key", player) or not state.multiworld.extra_key_items[player].value, one_way=True)
connect(multiworld, player, "Seafoam Islands 1F", "Seafoam Islands B1F", one_way=True)
connect(multiworld, player, "Seafoam Islands B1F", "Seafoam Islands B2F", one_way=True)