Files
infinitefusion-e18/Data/Scripts/052_InfiniteFusion/Gameplay/Player/Starters.rb
2025-09-28 15:53:01 -04:00

99 lines
3.4 KiB
Ruby

def obtainStarter(starterIndex = 0)
if ($game_switches[SWITCH_LEGENDARY_MODE])
generated_list = pbGet(VAR_LEGENDARY_STARTERS_CHOICES)
if generated_list.is_a?(Array)
startersList = generated_list
else
startersList = generate_legendary_mode_starters
pbSet(VAR_LEGENDARY_STARTERS_CHOICES,startersList)
end
starter = startersList[starterIndex]
elsif ($game_switches[SWITCH_RANDOM_STARTERS])
starter = obtainRandomizedStarter(starterIndex)
else
startersList = Settings::DEFAULT_STARTERS
if $game_switches[SWITCH_JOHTO_STARTERS]
startersList = Settings::JOHTO_STARTERS
elsif $game_switches[SWITCH_HOENN_STARTERS]
startersList = Settings::HOENN_STARTERS
elsif $game_switches[SWITCH_SINNOH_STARTERS]
startersList = Settings::SINNOH_STARTERS
elsif $game_switches[SWITCH_KALOS_STARTERS]
startersList = Settings::KALOS_STARTERS
elsif $game_switches[SWITCH_MIXED_STARTERS]
if $game_temp.starter_options
startersList = $game_temp.starter_options
else
$game_temp.starter_options = generate_mixed_starters_list
startersList = $game_temp.starter_options
end
end
starter = startersList[starterIndex]
end
return GameData::Species.get(starter)
end
def generate_mixed_starters_list
grass_option = Settings::GRASS_STARTERS.sample
fire_option = Settings::FIRE_STARTERS.sample
water_option = Settings::WATER_STARTERS.sample
return [grass_option, fire_option, water_option]
end
# body0
# head 1
def setRivalStarter(starterIndex1, starterIndex2)
starter1 = obtainStarter(starterIndex1)
starter2 = obtainStarter(starterIndex2)
ensureRandomHashInitialized()
if $game_switches[SWITCH_RANDOM_WILD_TO_FUSION] || $game_switches[SWITCH_LEGENDARY_MODE] # if fused starters, only take index 1
starter = obtainStarter(starterIndex1)
else
starter_body = starter1.id_number
starter_head = starter2.id_number
starter = getFusionSpecies(starter_body, starter_head).id_number
end
if $game_switches[SWITCH_RANDOM_STARTER_FIRST_STAGE]
starterSpecies = GameData::Species.get(starter)
starter = GameData::Species.get(starterSpecies.get_baby_species(false)).id_number
end
pbSet(VAR_RIVAL_STARTER, starter)
$game_switches[SWITCH_DEFINED_RIVAL_STARTER] = true
return starter
end
def setStarterEasterEgg
should_apply_easter_egg = true
case $Trainer.name.downcase
when "ash"
starter = :PIKACHU
rival_starter_body = :EEVEE
rival_starter_head = :EEVEE
when "gary"
starter = :EEVEE
rival_starter_body = :PIKACHU
rival_starter_head = :PIKACHU
when "god"
starter = :BIDOOF
rival_starter_body = :ARCEUS
rival_starter_head = :OMANYTE
when "?"
starter = getSpecies(rand(NB_POKEMON))
rival_starter_body = getSpecies(rand(NB_POKEMON))
rival_starter_head = getSpecies(rand(NB_POKEMON))
when "schrroms", "frogman", "frogzilla", "chardub"
starter = fusionOf(:POLIWAG,:MACHAMP)
rival_starter_body = :POLIWAG
rival_starter_head = :MACHAMP
else
should_apply_easter_egg = false
end
if should_apply_easter_egg
pbSet(VAR_PLAYER_STARTER_CHOICE,getDexNumberForSpecies(starter))
pbSet(VAR_RIVAL_STARTER_HEAD_CHOICE,getDexNumberForSpecies(rival_starter_head))
pbSet(VAR_RIVAL_STARTER_BODY_CHOICE,getDexNumberForSpecies(rival_starter_body))
$game_switches[SWITCH_CUSTOM_STARTERS] = true
end
end