mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
Pokemon R/B: Version 5 Update (#3566)
* Quiz updates * Enable Partial Trainersanity * Losable Key Items Still Count * New options api * Type Chart Seed * Continue switching to new options API * Level Scaling and Quiz fixes * Level Scaling and Quiz fixes * Clarify that palettes are only for Super Gameboy * Type chart seed groups use one random players' options * remove goal option again * Text updates * Trainersanity Trainers ignore Blind Trainers setting * Re-order simple connecting interiors so that directions are preserved when possible * Dexsanity exact number * Year update * Dexsanity Doc update * revert accidental file deletion * Fixes * Add world parameter to logic calls * restore correct seeded random object * missing world.options changes * Trainersanity table bug fix * delete entrances as well as exits when restarting door shuffle * Do not collect route 25 item for level scaling if trainer is trainersanity * world.options in level_scaling.py * Update worlds/pokemon_rb/level_scaling.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/pokemon_rb/encounters.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/pokemon_rb/encounters.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * world -> multiworld * Fix Cerulean Cave Hidden Item Center Rocks region * Fix Cerulean Cave Hidden Item Center Rocks region for real * Remove "self-locking" rules * Update worlds/pokemon_rb/regions.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Fossil events * Update worlds/pokemon_rb/level_scaling.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> --------- Co-authored-by: alchav <alchav@jalchavware.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
from Options import Toggle, Choice, Range, NamedRange, TextChoice, DeathLink, ItemsAccessibility
|
||||
from dataclasses import dataclass
|
||||
from Options import (PerGameCommonOptions, Toggle, Choice, Range, NamedRange, FreeText, TextChoice, DeathLink,
|
||||
ItemsAccessibility)
|
||||
|
||||
|
||||
class GameVersion(Choice):
|
||||
@@ -263,12 +265,18 @@ class PrizeSanity(Toggle):
|
||||
default = 0
|
||||
|
||||
|
||||
class TrainerSanity(Toggle):
|
||||
"""Add a location check to every trainer in the game, which can be obtained by talking to a trainer after defeating
|
||||
them. Does not affect gym leaders and some scripted event battles (including all Rival, Giovanni, and
|
||||
Cinnabar Gym battles)."""
|
||||
class TrainerSanity(NamedRange):
|
||||
"""Add location checks to trainers, which can be obtained by talking to a trainer after defeating them. Does not
|
||||
affect gym leaders and some scripted event battles. You may specify a number of trainers to have checks, and in
|
||||
this case they will be randomly selected. There is no in-game indication as to which trainers have checks."""
|
||||
display_name = "Trainersanity"
|
||||
default = 0
|
||||
range_start = 0
|
||||
range_end = 317
|
||||
special_range_names = {
|
||||
"disabled": 0,
|
||||
"full": 317
|
||||
}
|
||||
|
||||
|
||||
class RequirePokedex(Toggle):
|
||||
@@ -286,19 +294,19 @@ class AllPokemonSeen(Toggle):
|
||||
|
||||
|
||||
class DexSanity(NamedRange):
|
||||
"""Adds location checks for Pokemon flagged "owned" on your Pokedex. You may specify a percentage of Pokemon to
|
||||
have checks added. If Accessibility is set to full, this will be the percentage of all logically reachable
|
||||
Pokemon that will get a location check added to it. With items or minimal Accessibility, it will be the percentage
|
||||
of all 151 Pokemon.
|
||||
If Pokedex is required, the items for Pokemon acquired before acquiring the Pokedex can be found by talking to
|
||||
Professor Oak or evaluating the Pokedex via Oak's PC."""
|
||||
"""Adds location checks for Pokemon flagged "owned" on your Pokedex. You may specify the exact number of Dexsanity
|
||||
checks to add, and they will be distributed to Pokemon randomly.
|
||||
If Accessibility is set to Full, Dexsanity checks for Pokemon that are not logically reachable will be removed,
|
||||
so the number could be lower than you specified.
|
||||
If Pokedex is required, the Dexsanity checks for Pokemon you acquired before acquiring the Pokedex can be found by
|
||||
talking to Professor Oak or evaluating the Pokedex via Oak's PC."""
|
||||
display_name = "Dexsanity"
|
||||
default = 0
|
||||
range_start = 0
|
||||
range_end = 100
|
||||
range_end = 151
|
||||
special_range_names = {
|
||||
"disabled": 0,
|
||||
"full": 100
|
||||
"full": 151
|
||||
}
|
||||
|
||||
|
||||
@@ -519,7 +527,8 @@ class TrainerLegendaries(Toggle):
|
||||
|
||||
class BlindTrainers(Range):
|
||||
"""Chance each frame that you are standing on a tile in a trainer's line of sight that they will fail to initiate a
|
||||
battle. If you move into and out of their line of sight without stopping, this chance will only trigger once."""
|
||||
battle. If you move into and out of their line of sight without stopping, this chance will only trigger once.
|
||||
Trainers which have Trainersanity location checks ignore the Blind Trainers setting."""
|
||||
display_name = "Blind Trainers"
|
||||
range_start = 0
|
||||
range_end = 100
|
||||
@@ -704,6 +713,15 @@ class RandomizeTypeChart(Choice):
|
||||
default = 0
|
||||
|
||||
|
||||
class TypeChartSeed(FreeText):
|
||||
"""You can enter a number to use as a seed for the type chart. If you enter anything besides a number or "random",
|
||||
it will be used as a type chart group name, and everyone using the same group name will get the same type chart,
|
||||
made using the type chart options of one random player within the group. If a group name is used, the type matchup
|
||||
information will not be made available for trackers."""
|
||||
display_name = "Type Chart Seed"
|
||||
default = "random"
|
||||
|
||||
|
||||
class NormalMatchups(Range):
|
||||
"""If 'randomize' is chosen for Randomize Type Chart, this will be the weight for neutral matchups.
|
||||
No effect if 'chaos' is chosen"""
|
||||
@@ -850,8 +868,8 @@ class BicycleGateSkips(Choice):
|
||||
|
||||
|
||||
class RandomizePokemonPalettes(Choice):
|
||||
"""Modify palettes of Pokemon. Primary Type will set Pokemons' palettes based on their primary type, Follow
|
||||
Evolutions will randomize palettes but palettes will remain the same through evolutions (except Eeveelutions),
|
||||
"""Modify Super Gameboy palettes of Pokemon. Primary Type will set Pokemons' palettes based on their primary type,
|
||||
Follow Evolutions will randomize palettes but they will remain the same through evolutions (except Eeveelutions),
|
||||
Completely Random will randomize all Pokemons' palettes individually"""
|
||||
display_name = "Randomize Pokemon Palettes"
|
||||
option_vanilla = 0
|
||||
@@ -860,104 +878,105 @@ class RandomizePokemonPalettes(Choice):
|
||||
option_completely_random = 3
|
||||
|
||||
|
||||
pokemon_rb_options = {
|
||||
"accessibility": ItemsAccessibility,
|
||||
"game_version": GameVersion,
|
||||
"trainer_name": TrainerName,
|
||||
"rival_name": RivalName,
|
||||
#"goal": Goal,
|
||||
"elite_four_badges_condition": EliteFourBadgesCondition,
|
||||
"elite_four_key_items_condition": EliteFourKeyItemsCondition,
|
||||
"elite_four_pokedex_condition": EliteFourPokedexCondition,
|
||||
"victory_road_condition": VictoryRoadCondition,
|
||||
"route_22_gate_condition": Route22GateCondition,
|
||||
"viridian_gym_condition": ViridianGymCondition,
|
||||
"cerulean_cave_badges_condition": CeruleanCaveBadgesCondition,
|
||||
"cerulean_cave_key_items_condition": CeruleanCaveKeyItemsCondition,
|
||||
"route_3_condition": Route3Condition,
|
||||
"robbed_house_officer": RobbedHouseOfficer,
|
||||
"second_fossil_check_condition": SecondFossilCheckCondition,
|
||||
"fossil_check_item_types": FossilCheckItemTypes,
|
||||
"exp_all": ExpAll,
|
||||
"old_man": OldMan,
|
||||
"badgesanity": BadgeSanity,
|
||||
"badges_needed_for_hm_moves": BadgesNeededForHMMoves,
|
||||
"key_items_only": KeyItemsOnly,
|
||||
"tea": Tea,
|
||||
"extra_key_items": ExtraKeyItems,
|
||||
"split_card_key": SplitCardKey,
|
||||
"all_elevators_locked": AllElevatorsLocked,
|
||||
"extra_strength_boulders": ExtraStrengthBoulders,
|
||||
"require_item_finder": RequireItemFinder,
|
||||
"randomize_hidden_items": RandomizeHiddenItems,
|
||||
"prizesanity": PrizeSanity,
|
||||
"trainersanity": TrainerSanity,
|
||||
"dexsanity": DexSanity,
|
||||
"randomize_pokedex": RandomizePokedex,
|
||||
"require_pokedex": RequirePokedex,
|
||||
"all_pokemon_seen": AllPokemonSeen,
|
||||
"oaks_aide_rt_2": OaksAidRt2,
|
||||
"oaks_aide_rt_11": OaksAidRt11,
|
||||
"oaks_aide_rt_15": OaksAidRt15,
|
||||
"stonesanity": Stonesanity,
|
||||
"door_shuffle": DoorShuffle,
|
||||
"warp_tile_shuffle": WarpTileShuffle,
|
||||
"randomize_rock_tunnel": RandomizeRockTunnel,
|
||||
"dark_rock_tunnel_logic": DarkRockTunnelLogic,
|
||||
"free_fly_location": FreeFlyLocation,
|
||||
"town_map_fly_location": TownMapFlyLocation,
|
||||
"blind_trainers": BlindTrainers,
|
||||
"minimum_steps_between_encounters": MinimumStepsBetweenEncounters,
|
||||
"level_scaling": LevelScaling,
|
||||
"exp_modifier": ExpModifier,
|
||||
"randomize_wild_pokemon": RandomizeWildPokemon,
|
||||
"area_1_to_1_mapping": Area1To1Mapping,
|
||||
"randomize_starter_pokemon": RandomizeStarterPokemon,
|
||||
"randomize_static_pokemon": RandomizeStaticPokemon,
|
||||
"randomize_legendary_pokemon": RandomizeLegendaryPokemon,
|
||||
"catch_em_all": CatchEmAll,
|
||||
"randomize_pokemon_stats": RandomizePokemonStats,
|
||||
"randomize_pokemon_catch_rates": RandomizePokemonCatchRates,
|
||||
"minimum_catch_rate": MinimumCatchRate,
|
||||
"randomize_trainer_parties": RandomizeTrainerParties,
|
||||
"trainer_legendaries": TrainerLegendaries,
|
||||
"move_balancing": MoveBalancing,
|
||||
"fix_combat_bugs": FixCombatBugs,
|
||||
"randomize_pokemon_movesets": RandomizePokemonMovesets,
|
||||
"confine_transform_to_ditto": ConfineTranstormToDitto,
|
||||
"start_with_four_moves": StartWithFourMoves,
|
||||
"same_type_attack_bonus": SameTypeAttackBonus,
|
||||
"randomize_tm_moves": RandomizeTMMoves,
|
||||
"tm_same_type_compatibility": TMSameTypeCompatibility,
|
||||
"tm_normal_type_compatibility": TMNormalTypeCompatibility,
|
||||
"tm_other_type_compatibility": TMOtherTypeCompatibility,
|
||||
"hm_same_type_compatibility": HMSameTypeCompatibility,
|
||||
"hm_normal_type_compatibility": HMNormalTypeCompatibility,
|
||||
"hm_other_type_compatibility": HMOtherTypeCompatibility,
|
||||
"inherit_tm_hm_compatibility": InheritTMHMCompatibility,
|
||||
"randomize_move_types": RandomizeMoveTypes,
|
||||
"randomize_pokemon_types": RandomizePokemonTypes,
|
||||
"secondary_type_chance": SecondaryTypeChance,
|
||||
"randomize_type_chart": RandomizeTypeChart,
|
||||
"normal_matchups": NormalMatchups,
|
||||
"super_effective_matchups": SuperEffectiveMatchups,
|
||||
"not_very_effective_matchups": NotVeryEffectiveMatchups,
|
||||
"immunity_matchups": ImmunityMatchups,
|
||||
"safari_zone_normal_battles": SafariZoneNormalBattles,
|
||||
"normalize_encounter_chances": NormalizeEncounterChances,
|
||||
"reusable_tms": ReusableTMs,
|
||||
"better_shops": BetterShops,
|
||||
"master_ball_price": MasterBallPrice,
|
||||
"starting_money": StartingMoney,
|
||||
"lose_money_on_blackout": LoseMoneyOnBlackout,
|
||||
"poke_doll_skip": PokeDollSkip,
|
||||
"bicycle_gate_skips": BicycleGateSkips,
|
||||
"trap_percentage": TrapPercentage,
|
||||
"poison_trap_weight": PoisonTrapWeight,
|
||||
"fire_trap_weight": FireTrapWeight,
|
||||
"paralyze_trap_weight": ParalyzeTrapWeight,
|
||||
"sleep_trap_weight": SleepTrapWeight,
|
||||
"ice_trap_weight": IceTrapWeight,
|
||||
"randomize_pokemon_palettes": RandomizePokemonPalettes,
|
||||
"death_link": DeathLink
|
||||
}
|
||||
@dataclass
|
||||
class PokemonRBOptions(PerGameCommonOptions):
|
||||
accessibility: ItemsAccessibility
|
||||
game_version: GameVersion
|
||||
trainer_name: TrainerName
|
||||
rival_name: RivalName
|
||||
# goal: Goal
|
||||
elite_four_badges_condition: EliteFourBadgesCondition
|
||||
elite_four_key_items_condition: EliteFourKeyItemsCondition
|
||||
elite_four_pokedex_condition: EliteFourPokedexCondition
|
||||
victory_road_condition: VictoryRoadCondition
|
||||
route_22_gate_condition: Route22GateCondition
|
||||
viridian_gym_condition: ViridianGymCondition
|
||||
cerulean_cave_badges_condition: CeruleanCaveBadgesCondition
|
||||
cerulean_cave_key_items_condition: CeruleanCaveKeyItemsCondition
|
||||
route_3_condition: Route3Condition
|
||||
robbed_house_officer: RobbedHouseOfficer
|
||||
second_fossil_check_condition: SecondFossilCheckCondition
|
||||
fossil_check_item_types: FossilCheckItemTypes
|
||||
exp_all: ExpAll
|
||||
old_man: OldMan
|
||||
badgesanity: BadgeSanity
|
||||
badges_needed_for_hm_moves: BadgesNeededForHMMoves
|
||||
key_items_only: KeyItemsOnly
|
||||
tea: Tea
|
||||
extra_key_items: ExtraKeyItems
|
||||
split_card_key: SplitCardKey
|
||||
all_elevators_locked: AllElevatorsLocked
|
||||
extra_strength_boulders: ExtraStrengthBoulders
|
||||
require_item_finder: RequireItemFinder
|
||||
randomize_hidden_items: RandomizeHiddenItems
|
||||
prizesanity: PrizeSanity
|
||||
trainersanity: TrainerSanity
|
||||
dexsanity: DexSanity
|
||||
randomize_pokedex: RandomizePokedex
|
||||
require_pokedex: RequirePokedex
|
||||
all_pokemon_seen: AllPokemonSeen
|
||||
oaks_aide_rt_2: OaksAidRt2
|
||||
oaks_aide_rt_11: OaksAidRt11
|
||||
oaks_aide_rt_15: OaksAidRt15
|
||||
stonesanity: Stonesanity
|
||||
door_shuffle: DoorShuffle
|
||||
warp_tile_shuffle: WarpTileShuffle
|
||||
randomize_rock_tunnel: RandomizeRockTunnel
|
||||
dark_rock_tunnel_logic: DarkRockTunnelLogic
|
||||
free_fly_location: FreeFlyLocation
|
||||
town_map_fly_location: TownMapFlyLocation
|
||||
blind_trainers: BlindTrainers
|
||||
minimum_steps_between_encounters: MinimumStepsBetweenEncounters
|
||||
level_scaling: LevelScaling
|
||||
exp_modifier: ExpModifier
|
||||
randomize_wild_pokemon: RandomizeWildPokemon
|
||||
area_1_to_1_mapping: Area1To1Mapping
|
||||
randomize_starter_pokemon: RandomizeStarterPokemon
|
||||
randomize_static_pokemon: RandomizeStaticPokemon
|
||||
randomize_legendary_pokemon: RandomizeLegendaryPokemon
|
||||
catch_em_all: CatchEmAll
|
||||
randomize_pokemon_stats: RandomizePokemonStats
|
||||
randomize_pokemon_catch_rates: RandomizePokemonCatchRates
|
||||
minimum_catch_rate: MinimumCatchRate
|
||||
randomize_trainer_parties: RandomizeTrainerParties
|
||||
trainer_legendaries: TrainerLegendaries
|
||||
move_balancing: MoveBalancing
|
||||
fix_combat_bugs: FixCombatBugs
|
||||
randomize_pokemon_movesets: RandomizePokemonMovesets
|
||||
confine_transform_to_ditto: ConfineTranstormToDitto
|
||||
start_with_four_moves: StartWithFourMoves
|
||||
same_type_attack_bonus: SameTypeAttackBonus
|
||||
randomize_tm_moves: RandomizeTMMoves
|
||||
tm_same_type_compatibility: TMSameTypeCompatibility
|
||||
tm_normal_type_compatibility: TMNormalTypeCompatibility
|
||||
tm_other_type_compatibility: TMOtherTypeCompatibility
|
||||
hm_same_type_compatibility: HMSameTypeCompatibility
|
||||
hm_normal_type_compatibility: HMNormalTypeCompatibility
|
||||
hm_other_type_compatibility: HMOtherTypeCompatibility
|
||||
inherit_tm_hm_compatibility: InheritTMHMCompatibility
|
||||
randomize_move_types: RandomizeMoveTypes
|
||||
randomize_pokemon_types: RandomizePokemonTypes
|
||||
secondary_type_chance: SecondaryTypeChance
|
||||
randomize_type_chart: RandomizeTypeChart
|
||||
normal_matchups: NormalMatchups
|
||||
super_effective_matchups: SuperEffectiveMatchups
|
||||
not_very_effective_matchups: NotVeryEffectiveMatchups
|
||||
immunity_matchups: ImmunityMatchups
|
||||
type_chart_seed: TypeChartSeed
|
||||
safari_zone_normal_battles: SafariZoneNormalBattles
|
||||
normalize_encounter_chances: NormalizeEncounterChances
|
||||
reusable_tms: ReusableTMs
|
||||
better_shops: BetterShops
|
||||
master_ball_price: MasterBallPrice
|
||||
starting_money: StartingMoney
|
||||
lose_money_on_blackout: LoseMoneyOnBlackout
|
||||
poke_doll_skip: PokeDollSkip
|
||||
bicycle_gate_skips: BicycleGateSkips
|
||||
trap_percentage: TrapPercentage
|
||||
poison_trap_weight: PoisonTrapWeight
|
||||
fire_trap_weight: FireTrapWeight
|
||||
paralyze_trap_weight: ParalyzeTrapWeight
|
||||
sleep_trap_weight: SleepTrapWeight
|
||||
ice_trap_weight: IceTrapWeight
|
||||
randomize_pokemon_palettes: RandomizePokemonPalettes
|
||||
death_link: DeathLink
|
||||
|
Reference in New Issue
Block a user