mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-09 06:04:59 +00:00
update 6.7
This commit is contained in:
@@ -0,0 +1,195 @@
|
||||
class PokemonStorageScreen
|
||||
attr_accessor :fusionMode
|
||||
#
|
||||
# Fusion stuff
|
||||
#
|
||||
|
||||
def pbFuseFromPC(selected, heldpoke)
|
||||
@scene.pbSetCursorMode("default")
|
||||
box = selected[0]
|
||||
index = selected[1]
|
||||
poke_body = @storage[box, index]
|
||||
poke_head = heldpoke
|
||||
if heldpoke
|
||||
if dexNum(heldpoke.species) > NB_POKEMON
|
||||
pbDisplay(_INTL("{1} is already fused!", heldpoke.name))
|
||||
return
|
||||
end
|
||||
if (heldpoke.egg?)
|
||||
pbDisplay(_INTL("It's impossible to fuse an egg!"))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
splicerItem = selectSplicer()
|
||||
if splicerItem == nil
|
||||
cancelFusion()
|
||||
return
|
||||
end
|
||||
|
||||
if !heldpoke
|
||||
@fusionMode = true
|
||||
@fusionItem = splicerItem
|
||||
@scene.setFusing(true, @fusionItem)
|
||||
pbHold(selected)
|
||||
pbDisplay(_INTL("Select a Pokémon to fuse it with"))
|
||||
@scene.sprites["box"].disableFusions()
|
||||
return
|
||||
end
|
||||
if !poke_body
|
||||
pbDisplay(_INTL("Select a Pokémon to fuse it with"))
|
||||
@fusionMode = true
|
||||
@fusionItem = splicerItem
|
||||
@scene.setFusing(true, @fusionItem)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
def deleteHeldPokemon(heldpoke, selected)
|
||||
@scene.pbReleaseInstant(selected, heldpoke)
|
||||
@heldpkmn = nil
|
||||
end
|
||||
|
||||
def deleteSelectedPokemon(heldpoke, selected)
|
||||
pbSwap(selected)
|
||||
deleteHeldPokemon(heldpoke, selected)
|
||||
end
|
||||
|
||||
def cancelFusion
|
||||
pbSEPlay("GUI storage put down")
|
||||
@splicerItem = nil
|
||||
@scene.setFusing(false)
|
||||
@fusionMode = false
|
||||
@scene.sprites["box"].enableFusions()
|
||||
end
|
||||
|
||||
def canDeleteItem(item)
|
||||
return item == :SUPERSPLICERS || item == :DNASPLICERS
|
||||
end
|
||||
|
||||
def isSuperSplicer?(item)
|
||||
return item == :SUPERSPLICERS || item == :INFINITESPLICERS2
|
||||
end
|
||||
|
||||
def pbFusionCommands(selected)
|
||||
heldpoke = pbHeldPokemon
|
||||
pokemon = @storage[selected[0], selected[1]]
|
||||
|
||||
if !pokemon
|
||||
command = pbShowCommands(_INTL("Select an action"), [_INTL("Continue fusing"), _INTL("Stop fusing")])
|
||||
case command
|
||||
when 1 # stop
|
||||
cancelFusion
|
||||
end
|
||||
else
|
||||
commands = [
|
||||
_INTL("Fuse"),
|
||||
_INTL("Swap")
|
||||
]
|
||||
commands.push(_INTL("Stop fusing"))
|
||||
commands.push(_INTL("Cancel"))
|
||||
|
||||
if !heldpoke
|
||||
pbPlace(selected)
|
||||
@fusionMode = false
|
||||
@scene.setFusing(false)
|
||||
return
|
||||
end
|
||||
command = pbShowCommands(_INTL("Select an action"), commands)
|
||||
case command
|
||||
when 0 # Fuse
|
||||
if !pokemon
|
||||
pbDisplay(_INTL("No Pokémon selected!"))
|
||||
return
|
||||
else
|
||||
if dexNum(pokemon.species) > NB_POKEMON
|
||||
pbDisplay(_INTL("This Pokémon is already fused!"))
|
||||
return
|
||||
end
|
||||
end
|
||||
isSuperSplicer = isSuperSplicer?(@fusionItem)
|
||||
|
||||
selectedHead = selectFusion(pokemon, heldpoke, isSuperSplicer)
|
||||
if selectedHead == nil
|
||||
pbDisplay(_INTL("It won't have any effect."))
|
||||
return false
|
||||
end
|
||||
if selectedHead == -1 # cancelled out
|
||||
return false
|
||||
end
|
||||
|
||||
selectedBase = selectedHead == pokemon ? heldpoke : pokemon
|
||||
firstOptionSelected = selectedBase == pokemon
|
||||
|
||||
if (Kernel.pbConfirmMessage(_INTL("Fuse the two Pokémon?")))
|
||||
playingBGM = $game_system.getPlayingBGM
|
||||
pbFuse(selectedHead, selectedBase, @fusionItem)
|
||||
if canDeleteItem(@fusionItem)
|
||||
$PokemonBag.pbDeleteItem(@fusionItem)
|
||||
end
|
||||
if firstOptionSelected
|
||||
deleteSelectedPokemon(heldpoke, selected)
|
||||
else
|
||||
deleteHeldPokemon(heldpoke, selected)
|
||||
end
|
||||
|
||||
@scene.setFusing(false)
|
||||
@fusionMode = false
|
||||
@scene.sprites["box"].enableFusions()
|
||||
pbBGMPlay(playingBGM)
|
||||
return
|
||||
else
|
||||
# print "fusion cancelled"
|
||||
# @fusionMode = false
|
||||
end
|
||||
when 1 # swap
|
||||
if pokemon
|
||||
if dexNum(pokemon.species) <= NB_POKEMON
|
||||
pbSwap(selected)
|
||||
else
|
||||
pbDisplay(_INTL("This Pokémon is already fused!"))
|
||||
end
|
||||
else
|
||||
pbDisplay(_INTL("Select a Pokémon!"))
|
||||
end
|
||||
when 2 # cancel
|
||||
cancelFusion()
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def reverseFromPC(selected)
|
||||
box = selected[0]
|
||||
index = selected[1]
|
||||
pokemon = @storage[box, index]
|
||||
|
||||
if !pokemon.isFusion?
|
||||
scene.pbDisplay(_INTL("It won't have any effect."))
|
||||
return
|
||||
end
|
||||
if Kernel.pbConfirmMessageSerious(_INTL("Should {1} be reversed?", pokemon.name))
|
||||
reverseFusion(pokemon)
|
||||
$PokemonBag.pbDeleteItem(:DNAREVERSER) if $PokemonBag.pbQuantity(:INFINITEREVERSERS) <= 0
|
||||
end
|
||||
@scene.pbHardRefresh
|
||||
end
|
||||
|
||||
def pbUnfuseFromPC(selected)
|
||||
box = selected[0]
|
||||
index = selected[1]
|
||||
pokemon = @storage[box, index]
|
||||
|
||||
if pbConfirm(_INTL("Unfuse {1}?", pokemon.name))
|
||||
item = selectSplicer()
|
||||
return if item == nil
|
||||
isSuperSplicer = isSuperSplicer?(item)
|
||||
if pbUnfuse(pokemon, @scene, isSuperSplicer, selected)
|
||||
if canDeleteItem(item)
|
||||
$PokemonBag.pbDeleteItem(item)
|
||||
end
|
||||
end
|
||||
@scene.pbHardRefresh
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user