Update 6.8

This commit is contained in:
chardub
2026-07-10 15:42:06 -04:00
parent 5b85e72cb2
commit 6a6f126a18
7871 changed files with 493194 additions and 224826 deletions
@@ -0,0 +1,184 @@
def pbUnfuse(pokemon, scene, partyPosition=nil, pcPosition = nil)
if pokemon.original_body && pokemon.original_head
if pcPosition
result = unfusePokemonFromPC(pokemon, scene, pcPosition)
else
result = unfusePokemonFromParty(pokemon, scene, partyPosition)
end
else
result =unfusePokemonLegacy(pokemon, scene, false, pcPosition) #still used for wild Fusions
end
$PokemonTemp.unfuse_count_today = 0 unless $PokemonTemp.unfuse_count_today
$PokemonTemp.unfuse_count_today += 1
checkUnfuseChallenges(pokemon)
return result
end
def unfusePokemonFromPC(fused_pokemon, scene, pcPosition)
return unless pokemonCanBeUnfused(fused_pokemon, scene)
if pbConfirmMessage(_INTL("Should {1} be unfused?", fused_pokemon.name))
head_pokemon,body_pokemon = unfuseCore(fused_pokemon)
obtainUnfusedPokemonPC(head_pokemon, body_pokemon, pcPosition)
pbSEPlay("Minimize")
pbMessage(_INTL("Unfusing...\\....\\....\\....\\wtnp[5]"))
pbSEPlay("Voltorb Flip Point")
pbMessage(_INTL("Your Pokémon were successfully unfused!"))
return true
else
return false
end
end
def unfusePokemonFromParty(fused_pokemon, scene, partyPosition)
return unless pokemonCanBeUnfused(fused_pokemon, scene)
if pbConfirmMessage(_INTL("Should {1} be unfused?", fused_pokemon.name))
head_pokemon,body_pokemon = unfuseCore(fused_pokemon)
obtainUnfusedPokemonParty(head_pokemon, body_pokemon, partyPosition)
pbSEPlay("Minimize")
pbMessage(_INTL("Unfusing...\\....\\....\\....\\wtnp[5]"))
pbSEPlay("Voltorb Flip Point")
scene.pbHardRefresh
pbMessage(_INTL("Your Pokémon were successfully unfused!"))
return true
else
return false
end
end
def unfuseCore(fused_pokemon)
head_pokemon = fused_pokemon.original_head
body_pokemon = fused_pokemon.original_body
fused_head_species = fused_pokemon.species_data.head_pokemon.species
fused_body_species = fused_pokemon.species_data.body_pokemon.species
#If the Pokemon evolved while fused
if fused_head_species != head_pokemon.species
head_pokemon.species = fused_head_species
head_pokemon.pif_sprite = nil
end
if fused_body_species != body_pokemon.species
body_pokemon.species = fused_body_species
body_pokemon.pif_sprite = nil
end
#Items
$PokemonBag.pbStoreItem(fused_pokemon.item, 1) if fused_pokemon.item
fused_pokemon.exp_gained_since_fused =0 unless fused_pokemon.exp_gained_since_fused
# Exp
head_pokemon.exp_gained_with_player = 0 unless head_pokemon.exp_gained_with_player
head_pokemon.exp_gained_with_player += fused_pokemon.exp_gained_since_fused
head_pokemon.exp += fused_pokemon.exp_gained_since_fused
body_pokemon.exp_gained_with_player = 0 unless body_pokemon.exp_gained_with_player
body_pokemon.exp_gained_with_player += fused_pokemon.exp_gained_since_fused
body_pokemon.exp +=fused_pokemon.exp_gained_since_fused
head_pokemon.calc_stats
body_pokemon.calc_stats
# Moves
fused_pokemon_learned_moved = fused_pokemon.learned_moves
fused_pokemon_learned_moved = [] unless fused_pokemon_learned_moved
fused_pokemon_learned_moved.each do |move|
fused_pokemon_learned_moved << move unless fused_pokemon_learned_moved.include?(move)
end
fused_pokemon_learned_moved.each do |move|
head_pokemon.add_learned_move(move)
body_pokemon.add_learned_move(move)
end
head_pokemon.evolve_from_party = false
body_pokemon.evolve_from_party = false
# Pokedex
$Trainer.pokedex.set_seen(head_pokemon.species)
$Trainer.pokedex.set_owned(head_pokemon.species)
$Trainer.pokedex.set_seen(body_pokemon.species)
$Trainer.pokedex.set_owned(body_pokemon.species)
return [head_pokemon,body_pokemon]
end
def obtainUnfusedPokemonPC(head_pokemon, body_pokemon, pcPosition)
box = pcPosition[0]
index = pcPosition[1]
# todo: store at next available position from current position
$PokemonStorage.pbDelete(box,index)
if box == -1 #Player party
pbAddPokemonSilent(head_pokemon)
pbAddPokemonSilent(body_pokemon)
else
$PokemonStorage.pbStoreCaught(head_pokemon)
$PokemonStorage.pbStoreCaught(body_pokemon)
end
end
def obtainUnfusedPokemonParty(head_pokemon, body_pokemon, partyPosition)
if $Trainer.party.length >= 6
message = _INTL("Your party is full! Keep which Pokémon in party?")
message = _INTL("Your party is full! Keep which Pokémon in party? The other will be released.") if isOnPinkanIsland()
pbMessage(message)
selectPokemonMessage = _INTL("Select a Pokémon to keep in your party.")
selectPokemonMessage = _INTL("Select a Pokémon to keep in your party. The other will be released") if isOnPinkanIsland()
choice = Kernel.pbMessage(selectPokemonMessage, ["#{head_pokemon.name}", "#{body_pokemon.name}", _INTL("Cancel")], 2)
#Removes the fusion, then store in an order that depends on which one is sent to PC
if choice == 0 # Head
if isOnPinkanIsland()
$Trainer.party.delete_at(partyPosition)
pbAddPokemon(head_pokemon)
else
$Trainer.party[partyPosition] = head_pokemon
$PokemonStorage.pbStoreCaught(body_pokemon)
end
elsif choice == 1 #body
if isOnPinkanIsland()
$Trainer.party.delete_at(partyPosition)
pbAddPokemon(body_pokemon)
else
$Trainer.party[partyPosition] = body_pokemon
$PokemonStorage.pbStoreCaught(head_pokemon)
end
else
return false
end
else
storeUnfusedPokemonInPlace(partyPosition,head_pokemon,body_pokemon)
end
return true
end
def storeUnfusedPokemonInPlace(fusedPokemonPartyPosition, pokemonKeptInParty, pokemonSentToPC)
$Trainer.party[fusedPokemonPartyPosition] = pokemonKeptInParty
pbAddPokemonSilent(pokemonSentToPC)
end
def storeUnfusedPokemon(fusedPokemonPartyPosition, pokemonKeptInParty,pokemonSentToPC)
$Trainer.party.delete_at(fusedPokemonPartyPosition)
pbAddPokemonSilent(pokemonKeptInParty)
pbAddPokemonSilent(pokemonSentToPC)
end
def pokemonCanBeUnfused(pokemon, scene)
if pokemon.species_data.id_number > (NB_POKEMON * NB_POKEMON) + NB_POKEMON # triple fusion
scene.pbDisplay(_INTL("{1} cannot be unfused.", pokemon.name))
return false
end
if pokemon.egg?
scene.pbDisplay(_INTL("It won't have any effect."))
return false
end
if pokemon.owner.name == "RENTAL"
scene.pbDisplay(_INTL("You cannot unfuse a rental pokémon!"))
return false
end
if (pokemon.foreign?($Trainer)) # && !canunfuse
scene.pbDisplay(_INTL("You can't unfuse a Pokémon obtained in a trade!"))
return false
end
return true
end