mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
1695 lines
52 KiB
Ruby
1695 lines
52 KiB
Ruby
ItemHandlers::BattleUseOnBattler.add(:POKEDEX, proc { |item, battler, scene|
|
|
#if battler.battle.battlers.length > -1
|
|
# scene.pbDisplay(_INTL(" The length is {1}",battler.battle.battlers.length))
|
|
# scene.pbDisplay(_INTL("The PokéDex cannot be used on multiple enemies at once!"))
|
|
# return false
|
|
#end
|
|
|
|
doublebattle = false
|
|
#DOUBLE BATTLES A FAIRE
|
|
#variable temporaire doublebattle
|
|
if doublebattle
|
|
e = battler.pbOpposing2
|
|
else
|
|
is_trainer = battler.battle.opponent
|
|
|
|
e1 = battler.pbOpposing1.pokemon
|
|
enemyname = e1.name
|
|
e1type1 = e1.type1
|
|
e1type2 = e1.type2
|
|
end
|
|
if e1type1 == e1type2
|
|
scene.pbDisplay(_INTL("{2} has been identified as a {1} type Pokémon.", PBTypes.getName(e1type1), enemyname))
|
|
else
|
|
scene.pbDisplay(_INTL("{3} has been identified as a {1}/{2} type Pokémon.", PBTypes.getName(e1type1), PBTypes.getName(e1type2), enemyname))
|
|
|
|
if $game_switches[10] #BADGE 7
|
|
if battler.pbCanIncreaseStatStage?(PBStats::DEFENSE, false)
|
|
battler.pbIncreaseStat(PBStats::DEFENSE, 1, true)
|
|
end
|
|
if battler.pbCanIncreaseStatStage?(PBStats::SPDEF, false)
|
|
battler.pbIncreaseStat(PBStats::SPDEF, 1, true)
|
|
end
|
|
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
|
|
battler.pbIncreaseStat(PBStats::ACCURACY, 3, true)
|
|
end
|
|
elsif $game_switches[8] #BADGE 5
|
|
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
|
|
battler.pbIncreaseStat(PBStats::ACCURACY, 3, true)
|
|
end
|
|
elsif $game_switches[6] #BADGE 3
|
|
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
|
|
battler.pbIncreaseStat(PBStats::ACCURACY, 2, true)
|
|
end
|
|
elsif $game_switches[8] #BADGE 1
|
|
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
|
|
battler.pbIncreaseStat(PBStats::ACCURACY, 1, true)
|
|
end
|
|
end
|
|
|
|
return true
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseInBattle.add(:POKEDOLL, proc { |item, battler, battle|
|
|
battle.decision = 3
|
|
battle.pbDisplayPaused(_INTL("Got away safely!"))
|
|
})
|
|
|
|
ItemHandlers::UseFromBag.add(:LANTERN, proc { |item|
|
|
if useLantern()
|
|
next 1
|
|
else
|
|
next 0
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseInField.add(:LANTERN, proc { |item|
|
|
Kernel.pbMessage(_INTL("#{$Trainer.name} used the lantern."))
|
|
if useLantern()
|
|
next 1
|
|
else
|
|
next 0
|
|
end
|
|
})
|
|
|
|
def useLantern()
|
|
darkness = $PokemonTemp.darknessSprite
|
|
if !darkness || darkness.disposed? || $PokemonGlobal.flashUsed
|
|
Kernel.pbMessage(_INTL("It's already illuminated..."))
|
|
return false
|
|
end
|
|
Kernel.pbMessage(_INTL("The Lantern illuminated the cave!"))
|
|
darkness.radius += 176
|
|
while darkness.radius<176
|
|
Graphics.update
|
|
Input.update
|
|
pbUpdateSceneMapd
|
|
darkness.radius+=4
|
|
end
|
|
return true
|
|
end
|
|
|
|
ItemHandlers::UseFromBag.add(:TELEPORTER, proc { |item|
|
|
if useTeleporter()
|
|
next 1
|
|
else
|
|
next 0
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseInField.add(:TELEPORTER, proc { |item|
|
|
if useTeleporter()
|
|
next 1
|
|
else
|
|
next 0
|
|
end
|
|
})
|
|
|
|
def useTeleporter()
|
|
if HiddenMoveHandlers.triggerCanUseMove(:TELEPORT, 0,true)
|
|
Kernel.pbMessage(_INTL("Teleport to where?", $Trainer.name))
|
|
ret = pbBetterRegionMap(-1, true, true)
|
|
pbShowMenu unless ret
|
|
###############################################
|
|
if ret
|
|
$PokemonTemp.flydata = ret
|
|
end
|
|
# scene = PokemonRegionMapScene.new(-1, false)
|
|
# screen = PokemonRegionMap.new(scene)
|
|
# ret = screen.pbStartFlyScreen
|
|
# if ret
|
|
# $PokemonTemp.flydata = ret
|
|
# end
|
|
end
|
|
|
|
if !$PokemonTemp.flydata
|
|
return false
|
|
else
|
|
Kernel.pbMessage(_INTL("{1} used the teleporter!", $Trainer.name))
|
|
pbFadeOutIn(99999) {
|
|
Kernel.pbCancelVehicles
|
|
$game_temp.player_new_map_id = $PokemonTemp.flydata[0]
|
|
$game_temp.player_new_x = $PokemonTemp.flydata[1]
|
|
$game_temp.player_new_y = $PokemonTemp.flydata[2]
|
|
$PokemonTemp.flydata = nil
|
|
$game_temp.player_new_direction = 2
|
|
$scene.transfer_player
|
|
$game_map.autoplay
|
|
$game_map.refresh
|
|
}
|
|
pbEraseEscapePoint
|
|
return true
|
|
end
|
|
end
|
|
|
|
ItemHandlers::BattleUseOnBattler.add(:POKEDEX, proc { |item, battler, scene|
|
|
#if battler.battle.battlers.length > -1
|
|
# scene.pbDisplay(_INTL(" The length is {1}",battler.battle.battlers.length))
|
|
# scene.pbDisplay(_INTL("The PokéDex cannot be used on multiple enemies at once!"))
|
|
# return false
|
|
#end
|
|
|
|
doublebattle = false
|
|
#DOUBLE BATTLES A FAIRE
|
|
#variable temporaire doublebattle
|
|
if doublebattle
|
|
e = battler.pbOpposing2
|
|
else
|
|
is_trainer = battler.battle.opponent
|
|
|
|
e1 = battler.pbOpposing1.pokemon
|
|
enemyname = e1.name
|
|
e1type1 = e1.type1
|
|
e1type2 = e1.type2
|
|
end
|
|
if e1type1 == e1type2
|
|
scene.pbDisplay(_INTL("{2} has been identified as a {1} type Pokémon.", PBTypes.getName(e1type1), enemyname))
|
|
else
|
|
scene.pbDisplay(_INTL("{3} has been identified as a {1}/{2} type Pokémon.", PBTypes.getName(e1type1), PBTypes.getName(e1type2), enemyname))
|
|
|
|
if $game_switches[10] #BADGE 7
|
|
if battler.pbCanIncreaseStatStage?(PBStats::DEFENSE, false)
|
|
battler.pbIncreaseStat(PBStats::DEFENSE, 1, true)
|
|
end
|
|
if battler.pbCanIncreaseStatStage?(PBStats::SPDEF, false)
|
|
battler.pbIncreaseStat(PBStats::SPDEF, 1, true)
|
|
end
|
|
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
|
|
battler.pbIncreaseStat(PBStats::ACCURACY, 3, true)
|
|
end
|
|
elsif $game_switches[8] #BADGE 5
|
|
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
|
|
battler.pbIncreaseStat(PBStats::ACCURACY, 3, true)
|
|
end
|
|
elsif $game_switches[6] #BADGE 3
|
|
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
|
|
battler.pbIncreaseStat(PBStats::ACCURACY, 2, true)
|
|
end
|
|
elsif $game_switches[8] #BADGE 1
|
|
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
|
|
battler.pbIncreaseStat(PBStats::ACCURACY, 1, true)
|
|
end
|
|
end
|
|
|
|
return true
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseInBattle.add(:POKEDOLL, proc { |item, battler, battle|
|
|
battle.decision = 3
|
|
battle.pbDisplayPaused(_INTL("Got away safely!"))
|
|
})
|
|
|
|
ItemHandlers::UseFromBag.add(:LANTERN, proc { |item|
|
|
darkness = $PokemonTemp.darknessSprite
|
|
if !darkness || darkness.disposed?
|
|
Kernel.pbMessage(_INTL("The cave is already illuminated."))
|
|
next false
|
|
end
|
|
Kernel.pbMessage(_INTL("The Lantern illuminated the cave!"))
|
|
$PokemonGlobal.flashUsed = true
|
|
darkness.radius += 176
|
|
while darkness.radius<176
|
|
Graphics.update
|
|
Input.update
|
|
pbUpdateSceneMap
|
|
darkness.radius+=4
|
|
end
|
|
next true
|
|
})
|
|
|
|
ItemHandlers::UseFromBag.add(:AZUREFLUTE, proc { |item|
|
|
if Kernel.pbConfirmMessage(_INTL("Play the Azure Flute?"))
|
|
Kernel.pbMessage(_INTL("You blew into the Azure Flute."))
|
|
if $game_map.map_id == 694
|
|
Kernel.pbMessage(_INTL("A strange sound echoed from the sky..."))
|
|
$game_switches[469] = true
|
|
next true
|
|
else
|
|
Kernel.pbMessage(_INTL("But nothing happened..."))
|
|
next false
|
|
end
|
|
#Kernel.pbMessage(_INTL("{1} was transported somewhere...",$Trainer.name))
|
|
#Kernel.pbTransfer(376,14,51)
|
|
end
|
|
return false
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:TRANSGENDERSTONE, proc { |item, pokemon, scene|
|
|
if pokemon.gender == 0
|
|
pokemon.makeFemale
|
|
scene.pbRefresh
|
|
scene.pbDisplay(_INTL("The Pokémon became female!"))
|
|
next true
|
|
elsif pokemon.gender == 1
|
|
pokemon.makeMale
|
|
scene.pbRefresh
|
|
scene.pbDisplay(_INTL("The Pokémon became male!"))
|
|
|
|
next true
|
|
else
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:ABILITYCAPSULE, proc { |item, poke, scene|
|
|
abilityList = poke.getAbilityList
|
|
abil1 = 0; abil2 = 0
|
|
for i in abilityList
|
|
abil1 = i[0] if i[1] == 0
|
|
abil2 = i[1] if i[1] == 1
|
|
end
|
|
if poke.abilityIndex() >= 2 || abil1 == abil2
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
if Kernel.pbConfirmMessage(_INTL("Do you want to change {1}'s ability?",
|
|
poke.name))
|
|
|
|
if poke.abilityIndex() == 0
|
|
poke.setAbility(1)
|
|
else
|
|
poke.setAbility(0)
|
|
end
|
|
scene.pbDisplay(_INTL("{1}'s ability was changed!", poke.name))
|
|
next true
|
|
end
|
|
next false
|
|
|
|
})
|
|
|
|
#NOT FULLY IMPLEMENTED
|
|
ItemHandlers::UseOnPokemon.add(:SECRETCAPSULE, proc { |item, poke, scene|
|
|
abilityList = poke.getAbilityList
|
|
numAbilities = abilityList[0].length
|
|
|
|
if numAbilities <= 2
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
elsif abilityList[0].length <= 3
|
|
if changeHiddenAbility1(abilityList, scene, poke)
|
|
next true
|
|
end
|
|
next false
|
|
else
|
|
if changeHiddenAbility2(abilityList, scene, poke)
|
|
next true
|
|
end
|
|
next false
|
|
end
|
|
})
|
|
|
|
def changeHiddenAbility1(abilityList, scene, poke)
|
|
abID1 = abilityList[0][2]
|
|
msg = _INTL("Change {1}'s ability to {2}?", poke.name, PBAbilities.getName(abID1))
|
|
if Kernel.pbConfirmMessage(_INTL(msg))
|
|
poke.setAbility(2)
|
|
abilName1 = PBAbilities.getName(abID1)
|
|
scene.pbDisplay(_INTL("{1}'s ability was changed to {2}!", poke.name, PBAbilities.getName(abID1)))
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
def changeHiddenAbility2(abilityList, scene, poke)
|
|
return false if !Kernel.pbConfirmMessage(_INTL("Change {1}'s ability?", poke.name))
|
|
|
|
abID1 = abilityList[0][2]
|
|
abID2 = abilityList[0][3]
|
|
|
|
abilName2 = PBAbilities.getName(abID1)
|
|
abilName3 = PBAbilities.getName(abID2)
|
|
|
|
if (Kernel.pbMessage("Choose an ability.", [_INTL("{1}", abilName2), _INTL("{1}", abilName3)], 2)) == 0
|
|
poke.setAbility(2)
|
|
scene.pbDisplay(_INTL("{1}'s ability was changed to {2}!", poke.name, abilName2))
|
|
else
|
|
return false
|
|
end
|
|
poke.setAbility(3)
|
|
scene.pbDisplay(_INTL("{1}'s ability was changed to {2}!", poke.name, abilName3))
|
|
return true
|
|
end
|
|
|
|
ItemHandlers::UseOnPokemon.add(:ROCKETMEAL, proc { |item, pokemon, scene|
|
|
next pbHPItem(pokemon, 100, scene)
|
|
})
|
|
|
|
ItemHandlers::BattleUseOnPokemon.add(:ROCKETMEAL, proc { |item, pokemon, battler, scene|
|
|
next pbBattleHPItem(pokemon, battler, 100, scene)
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:FANCYMEAL, proc { |item, pokemon, scene|
|
|
next pbHPItem(pokemon, 100, scene)
|
|
})
|
|
|
|
ItemHandlers::BattleUseOnPokemon.add(:FANCYMEAL, proc { |item, pokemon, battler, scene|
|
|
next pbBattleHPItem(pokemon, battler, 100, scene)
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:RAGECANDYBAR, proc { |item, pokemon, scene|
|
|
if pokemon.level <= 1
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
else
|
|
pbChangeLevel(pokemon, pokemon.level - 1, scene)
|
|
scene.pbHardRefresh
|
|
next true
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:INCUBATOR, proc { |item, pokemon, scene|
|
|
if pokemon.isEgg?
|
|
if pokemon.eggsteps <= 1
|
|
scene.pbDisplay(_INTL("The egg is already ready to hatch!"))
|
|
next false
|
|
else
|
|
scene.pbDisplay(_INTL("Incubating..."))
|
|
scene.pbDisplay(_INTL("..."))
|
|
scene.pbDisplay(_INTL("..."))
|
|
scene.pbDisplay(_INTL("Your egg is ready to hatch!"))
|
|
pokemon.eggsteps = 1
|
|
next true
|
|
end
|
|
else
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:MISTSTONE, proc { |item, pokemon, scene|
|
|
if pbForceEvo(pokemon)
|
|
next true
|
|
else
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseFromBag.add(:DEBUGGER,proc{|item|
|
|
Kernel.pbMessage(_INTL("[{1}]The debugger should ONLY be used if you are stuck somewhere because of a glitch.",Settings::GAME_VERSION_NUMBER))
|
|
if Kernel.pbConfirmMessageSerious(_INTL("Innapropriate use of this item can lead to unwanted effects and make the game unplayable. Do you want to continue?"))
|
|
$game_player.cancelMoveRoute()
|
|
Kernel.pbStartOver(false)
|
|
Kernel.pbMessage(_INTL("Please report the glitch on the Pokecommunity thread, on the game's subreddit or in the game's Discord channel."))
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseFromBag.add(:MAGICBOOTS,proc{|item|
|
|
if $DEBUG
|
|
if Kernel.pbConfirmMessageSerious(_INTL("Take off the Magic Boots?"))
|
|
$DEBUG = false
|
|
end
|
|
else
|
|
if Kernel.pbConfirmMessageSerious(_INTL("Put on the Magic Boots?"))
|
|
Kernel.pbMessage(_INTL("Debug mode is now active."))
|
|
$game_switches[842] = true #got debug mode (for compatibility)
|
|
$DEBUG = true
|
|
end
|
|
end
|
|
next 1
|
|
})
|
|
|
|
|
|
def pbForceEvo(pokemon)
|
|
newspecies = getEvolvedSpecies(pokemon)
|
|
return false if newspecies == -1
|
|
if newspecies > 0
|
|
evo = PokemonEvolutionScene.new
|
|
evo.pbStartScreen(pokemon, newspecies)
|
|
evo.pbEvolution
|
|
evo.pbEndScreen
|
|
end
|
|
return true
|
|
end
|
|
|
|
def getEvolvedSpecies(pokemon)
|
|
return pbCheckEvolutionEx(pokemon) { |pokemon, evonib, level, poke|
|
|
next pbMiniCheckEvolution(pokemon, evonib, level, poke, true)
|
|
}
|
|
end
|
|
|
|
#(copie de fixEvolutionOverflow dans FusionScene)
|
|
def getCorrectEvolvedSpecies(pokemon)
|
|
if pokemon.species >= NB_POKEMON
|
|
body = getBasePokemonID(pokemon.species)
|
|
head = getBasePokemonID(pokemon.species, false)
|
|
ret1 = -1; ret2 = -1
|
|
for form in pbGetEvolvedFormData(body)
|
|
retB = yield pokemon, form[0], form[1], form[2]
|
|
break if retB > 0
|
|
end
|
|
for form in pbGetEvolvedFormData(head)
|
|
retH = yield pokemon, form[0], form[1], form[2]
|
|
break if retH > 0
|
|
end
|
|
return ret if ret == retB && ret == retH
|
|
return fixEvolutionOverflow(retB, retH, pokemon.species)
|
|
else
|
|
for form in pbGetEvolvedFormData(pokemon.species)
|
|
newspecies = form[2]
|
|
end
|
|
return newspecies;
|
|
end
|
|
|
|
end
|
|
|
|
#########################
|
|
## DNA SPLICERS #######
|
|
#########################
|
|
|
|
ItemHandlers::UseOnPokemon.add(:INFINITESPLICERS, proc { |item, pokemon, scene|
|
|
next true if pbDNASplicing(pokemon, scene, true, true)
|
|
next false
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:DNASPLICERS, proc { |item, pokemon, scene|
|
|
next true if pbDNASplicing(pokemon, scene)
|
|
next false
|
|
})
|
|
|
|
|
|
ItemHandlers::UseOnPokemon.add(:DNAREVERSER, proc { |item, pokemon, scene|
|
|
if !pokemon.isFusion?
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
if Kernel.pbConfirmMessageSerious(_INTL("Should {1} be reversed?", pokemon.name))
|
|
body = getBasePokemonID(pokemon.species, true)
|
|
head = getBasePokemonID(pokemon.species, false)
|
|
newspecies = (head) * Settings::NB_POKEMON + body
|
|
|
|
body_exp = pokemon.exp_when_fused_body
|
|
head_exp = pokemon.exp_when_fused_head
|
|
|
|
pokemon.exp_when_fused_body = head_exp
|
|
pokemon.exp_when_fused_head = body_exp
|
|
|
|
#play animation
|
|
pbFadeOutInWithMusic(99999) {
|
|
fus = PokemonEvolutionScene.new
|
|
fus.pbStartScreen(pokemon, newspecies, true)
|
|
fus.pbEvolution(false, true)
|
|
fus.pbEndScreen
|
|
scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
scene.pbRefresh
|
|
}
|
|
next true
|
|
end
|
|
|
|
next false
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:INFINITEREVERSERS, proc { |item, pokemon, scene|
|
|
if !pokemon.isFusion?
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
if Kernel.pbConfirmMessageSerious(_INTL("Should {1} be reversed?", pokemon.name))
|
|
body = getBasePokemonID(pokemon.species, true)
|
|
head = getBasePokemonID(pokemon.species, false)
|
|
newspecies = (head) * Settings::NB_POKEMON + body
|
|
|
|
body_exp = pokemon.exp_when_fused_body
|
|
head_exp = pokemon.exp_when_fused_head
|
|
|
|
pokemon.exp_when_fused_body = head_exp
|
|
pokemon.exp_when_fused_head = body_exp
|
|
|
|
#play animation
|
|
pbFadeOutInWithMusic(99999) {
|
|
fus = PokemonEvolutionScene.new
|
|
fus.pbStartScreen(pokemon, newspecies, true)
|
|
fus.pbEvolution(false, true)
|
|
fus.pbEndScreen
|
|
scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
scene.pbRefresh
|
|
}
|
|
next true
|
|
end
|
|
|
|
next false
|
|
})
|
|
|
|
|
|
#
|
|
# def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false)
|
|
# if (pokemon.species <= NB_POKEMON)
|
|
# if pokemon.fused != nil
|
|
# if $Trainer.party.length >= 6
|
|
# scene.pbDisplay(_INTL("Your party is full! You can't unfuse {1}.", pokemon.name))
|
|
# return false
|
|
# else
|
|
# $Trainer.party[$Trainer.party.length] = pokemon.fused
|
|
# pokemon.fused = nil
|
|
# pokemon.form = 0
|
|
# scene.pbHardRefresh
|
|
# scene.pbDisplay(_INTL("{1} changed Forme!", pokemon.name))
|
|
# return true
|
|
# end
|
|
# else
|
|
# chosen = scene.pbChoosePokemon(_INTL("Fuse with which Pokémon?"))
|
|
# if chosen >= 0
|
|
# poke2 = $Trainer.party[chosen]
|
|
# if (poke2.species <= NB_POKEMON) && poke2 != pokemon
|
|
# #check if fainted
|
|
# if pokemon.hp == 0 || poke2.hp == 0
|
|
# scene.pbDisplay(_INTL("A fainted Pokémon cannot be fused!"))
|
|
# return false
|
|
# end
|
|
# if pbFuse(pokemon, poke2, supersplicers)
|
|
# pbRemovePokemonAt(chosen)
|
|
# end
|
|
# elsif pokemon == poke2
|
|
# scene.pbDisplay(_INTL("{1} can't be fused with itself!", pokemon.name))
|
|
# return false
|
|
# else
|
|
# scene.pbDisplay(_INTL("{1} can't be fused with {2}.", poke2.name, pokemon.name))
|
|
# return false
|
|
#
|
|
# end
|
|
#
|
|
# else
|
|
# return false
|
|
# end
|
|
# end
|
|
# else
|
|
# return true if pbUnfuse(pokemon, scene, supersplicers)
|
|
#
|
|
# #unfuse
|
|
# end
|
|
# end
|
|
#
|
|
# def pbUnfuse(pokemon, scene, supersplicers, pcPosition = nil)
|
|
# #pcPosition nil : unfusing from party
|
|
# #pcPosition [x,x] : unfusing from pc
|
|
# #
|
|
#
|
|
# if (pokemon.obtain_method == 2 || pokemon.ot != $Trainer.name) # && !canunfuse
|
|
# scene.pbDisplay(_INTL("You can't unfuse a Pokémon obtained in a trade!"))
|
|
# return false
|
|
# else
|
|
# if Kernel.pbConfirmMessageSerious(_INTL("Should {1} be unfused?", pokemon.name))
|
|
# if pokemon.species > (NB_POKEMON * NB_POKEMON) + NB_POKEMON #triple fusion
|
|
# scene.pbDisplay(_INTL("{1} cannot be unfused.", pokemon.name))
|
|
# return false
|
|
# elsif $Trainer.party.length >= 6 && !pcPosition
|
|
# scene.pbDisplay(_INTL("Your party is full! You can't unfuse {1}.", pokemon.name))
|
|
# return false
|
|
# else
|
|
# scene.pbDisplay(_INTL("Unfusing ... "))
|
|
# scene.pbDisplay(_INTL(" ... "))
|
|
# scene.pbDisplay(_INTL(" ... "))
|
|
#
|
|
# bodyPoke = getBasePokemonID(pokemon.species, true)
|
|
# headPoke = getBasePokemonID(pokemon.species, false)
|
|
#
|
|
#
|
|
# if pokemon.exp_when_fused_head == nil || pokemon.exp_when_fused_body == nil
|
|
# new_level = calculateUnfuseLevelOldMethod(pokemon, supersplicers)
|
|
# body_level = new_level
|
|
# head_level = new_level
|
|
# poke1 = Pokemon.new(bodyPoke, body_level)
|
|
# poke2 = Pokemon.new(headPoke, head_level)
|
|
# else
|
|
# exp_body = pokemon.exp_when_fused_body + pokemon.exp_gained_since_fused
|
|
# exp_head = pokemon.exp_when_fused_head + pokemon.exp_gained_since_fused
|
|
#
|
|
# poke1 = Pokemon.new(bodyPoke, pokemon.level)
|
|
# poke2 = Pokemon.new(headPoke, pokemon.level)
|
|
# poke1.exp = exp_body
|
|
# poke2.exp = exp_head
|
|
# end
|
|
#
|
|
# #poke1 = PokeBattle_Pokemon.new(bodyPoke, lev, $Trainer)
|
|
# #poke2 = PokeBattle_Pokemon.new(headPoke, lev, $Trainer)
|
|
#
|
|
# if pcPosition == nil
|
|
# box = pcPosition[0]
|
|
# index = pcPosition[1]
|
|
# $PokemonStorage.pbStoreToBox(poke2, box, index)
|
|
# else
|
|
# Kernel.pbAddPokemonSilent(poke2, poke2.level)
|
|
# end
|
|
# #On ajoute l'autre dans le pokedex aussi
|
|
# $Trainer.seen[poke1.species] = true
|
|
# $Trainer.owned[poke1.species] = true
|
|
# $Trainer.seen[poke2.species] = true
|
|
# $Trainer.owned[poke2.species] = true
|
|
#
|
|
# pokemon.species = poke1.species
|
|
# pokemon.level = poke1.level
|
|
# pokemon.name = poke1.name
|
|
# pokemon.moves = poke1.moves
|
|
# pokemon.obtain_method = 0
|
|
# poke1.obtain_method = 0
|
|
#
|
|
# #scene.pbDisplay(_INTL(p1.to_s + " " + p2.to_s))
|
|
# scene.pbHardRefresh
|
|
# scene.pbDisplay(_INTL("Your Pokémon were successfully unfused! "))
|
|
# return true
|
|
# end
|
|
# end
|
|
# end
|
|
# end
|
|
|
|
def calculateUnfuseLevelOldMethod(pokemon, supersplicers)
|
|
if pokemon.level > 1
|
|
if supersplicers
|
|
lev = pokemon.level * 0.9
|
|
else
|
|
lev = pokemon.obtain_method == 2 ? pokemon.level * 0.65 : pokemon.level * 0.75
|
|
end
|
|
else
|
|
lev = 1
|
|
end
|
|
return lev.floor
|
|
end
|
|
|
|
def pbFuse(pokemon, poke2, supersplicers = false)
|
|
newid = (pokemon.species) * NB_POKEMON + poke2.species
|
|
playingBGM = $game_system.getPlayingBGM
|
|
|
|
pathCustom = _INTL("Graphics/CustomBattlers/{1}.{2}.png", poke2.species, pokemon.species)
|
|
#pbResolveBitmap(pathCustom) && $game_variables[196]==0 ? pathCustom : pathReg
|
|
hasCustom = false
|
|
if (pbResolveBitmap(pathCustom))
|
|
picturePath = pathCustom
|
|
hasCustom = true
|
|
else
|
|
picturePath = _INTL("Graphics/Battlers/{1}/{1}.{2}.png", poke2.species, pokemon.species)
|
|
end
|
|
|
|
previewwindow = PictureWindow.new(picturePath)
|
|
|
|
if hasCustom
|
|
previewwindow.picture.pbSetColor(0, 255, 255, 200)
|
|
else
|
|
previewwindow.picture.pbSetColor(255, 255, 255, 200)
|
|
end
|
|
previewwindow.x = (Graphics.width / 2) - (previewwindow.width / 2)
|
|
previewwindow.y = ((Graphics.height - 96) / 2) - (previewwindow.height / 2)
|
|
previewwindow.z = 1000000
|
|
|
|
if (Kernel.pbConfirmMessage(_INTL("Fuse the two Pokémon?", newid)))
|
|
previewwindow.dispose
|
|
fus = PokemonFusionScene.new
|
|
if (fus.pbStartScreen(pokemon, poke2, newid))
|
|
returnItemsToBag(pokemon, poke2)
|
|
fus.pbFusionScreen(false, supersplicers)
|
|
$game_variables[126] += 1 #fuse counter
|
|
fus.pbEndScreen
|
|
scene.pbHardRefresh
|
|
pbBGMPlay(playingBGM)
|
|
return true
|
|
end
|
|
else
|
|
previewwindow.dispose
|
|
return false
|
|
end
|
|
|
|
end
|
|
|
|
ItemHandlers::UseOnPokemon.add(:SUPERSPLICERS, proc { |item, pokemon, scene|
|
|
next true if pbDNASplicing(pokemon, scene, true, true)
|
|
})
|
|
|
|
def returnItemsToBag(pokemon, poke2)
|
|
|
|
it1 = pokemon.item
|
|
it2 = poke2.item
|
|
if it1 != nil
|
|
$PokemonBag.pbStoreItem(it1, 1)
|
|
end
|
|
if it2 != nil
|
|
$PokemonBag.pbStoreItem(it2, 1)
|
|
end
|
|
pokemon.item = nil
|
|
poke2.item = nil
|
|
end
|
|
|
|
#A AJOUTER: l'attribut dmgup ne modifie presentement pas
|
|
# le damage d'une attaque
|
|
#
|
|
ItemHandlers::UseOnPokemon.add(:DAMAGEUP, proc { |item, pokemon, scene|
|
|
move = scene.pbChooseMove(pokemon, _INTL("Boost Damage of which move?"))
|
|
if move >= 0
|
|
#if pokemon.moves[move].damage==0 || pokemon.moves[move].accuracy<=5 || pokemon.moves[move].dmgup >=3
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
#else
|
|
#pokemon.moves[move].dmgup+=1
|
|
#pokemon.moves[move].damage +=5
|
|
#pokemon.moves[move].accuracy -=5
|
|
|
|
#movename=PBMoves.getName(pokemon.moves[move].id)
|
|
#scene.pbDisplay(_INTL("{1}'s damage increased.",movename))
|
|
#next true
|
|
scene.pbDisplay(_INTL("This item has not been implemented into the game yet. It had no effect."))
|
|
next false
|
|
#end
|
|
end
|
|
})
|
|
|
|
##New "stones"
|
|
# ItemHandlers::UseOnPokemon.add(:UPGRADE, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
#
|
|
# ItemHandlers::UseOnPokemon.add(:DUBIOUSDISC, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
#
|
|
# ItemHandlers::UseOnPokemon.add(:ICESTONE, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
# #
|
|
# ItemHandlers::UseOnPokemon.add(:MAGNETSTONE, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
|
|
#easter egg for evolving shellder into slowbro's tail
|
|
ItemHandlers::UseOnPokemon.add(:SLOWPOKETAIL, proc { |item, pokemon, scene|
|
|
shellbroNum = NB_POKEMON * PBSpecies::SHELLDER + PBSpecies::SLOWBRO #SHELLBRO
|
|
newspecies = pokemon.species == PBSpecies::SHELLDER ? shellbroNum : -1
|
|
if newspecies <= 0
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
else
|
|
pbFadeOutInWithMusic(99999) {
|
|
evo = PokemonEvolutionScene.new
|
|
evo.pbStartScreen(pokemon, newspecies)
|
|
evo.pbEvolution(false)
|
|
evo.pbEndScreen
|
|
scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
scene.pbRefresh
|
|
}
|
|
next true
|
|
end
|
|
})
|
|
#
|
|
# ItemHandlers::UseOnPokemon.add(:SHINYSTONE, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
#
|
|
# ItemHandlers::UseOnPokemon.add(:DAWNSTONE, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
|
|
#TRACKER (for roaming legendaries)
|
|
ItemHandlers::UseInField.add(:REVEALGLASS, proc { |item|
|
|
if RoamingSpecies.length == 0
|
|
Kernel.pbMessage(_INTL("No roaming Pokémon defined."))
|
|
else
|
|
text = "\\l[8]"
|
|
min = $game_switches[350] ? 0 : 1
|
|
for i in min...RoamingSpecies.length
|
|
poke = RoamingSpecies[i]
|
|
next if poke == PBSPecies::FEEBAS
|
|
if $game_switches[poke[2]]
|
|
status = $PokemonGlobal.roamPokemon[i]
|
|
if status == true
|
|
if $PokemonGlobal.roamPokemonCaught[i]
|
|
text += _INTL("{1} has been caught.",
|
|
PBSpecies.getName(getID(PBSpecies, poke[0])))
|
|
else
|
|
text += _INTL("{1} has been defeated.",
|
|
PBSpecies.getName(getID(PBSpecies, poke[0])))
|
|
end
|
|
else
|
|
curmap = $PokemonGlobal.roamPosition[i]
|
|
if curmap
|
|
mapinfos = $RPGVX ? load_data("Data/MapInfos.rvdata") : load_data("Data/MapInfos.rxdata")
|
|
|
|
if curmap == $game_map.map_id
|
|
text += _INTL("Beep beep! {1} appears to be nearby!",
|
|
PBSpecies.getName(getID(PBSpecies, poke[0])))
|
|
else
|
|
text += _INTL("{1} is roaming around {3}",
|
|
PBSpecies.getName(getID(PBSpecies, poke[0])), curmap,
|
|
mapinfos[curmap].name, (curmap == $game_map.map_id) ? _INTL("(this route!)") : "")
|
|
end
|
|
else
|
|
text += _INTL("{1} is roaming in an unknown area.",
|
|
PBSpecies.getName(getID(PBSpecies, poke[0])), poke[1])
|
|
end
|
|
end
|
|
else
|
|
#text+=_INTL("{1} does not appear to be roaming.",
|
|
# PBSpecies.getName(getID(PBSpecies,poke[0])),poke[1],poke[2])
|
|
end
|
|
text += "\n" if i < RoamingSpecies.length - 1
|
|
end
|
|
Kernel.pbMessage(text)
|
|
end
|
|
})
|
|
|
|
####EXP. ALL
|
|
#Methodes relative a l'exp sont pas encore la et pas compatibles
|
|
# avec cette version de essentials donc
|
|
# ca fait fuck all pour l'instant.
|
|
ItemHandlers::UseFromBag.add(:EXPALL, proc { |item|
|
|
$PokemonBag.pbChangeItem(:EXPALL, :EXPALLOFF)
|
|
Kernel.pbMessage(_INTL("The Exp All was turned off."))
|
|
$game_switches[920] = false
|
|
next 1 # Continue
|
|
})
|
|
|
|
ItemHandlers::UseFromBag.add(:EXPALLOFF, proc { |item|
|
|
$PokemonBag.pbChangeItem(:EXPALLOFF, :EXPALL)
|
|
Kernel.pbMessage(_INTL("The Exp All was turned on."))
|
|
$game_switches[920] = true
|
|
next 1 # Continue
|
|
})
|
|
|
|
ItemHandlers::BattleUseOnPokemon.add(:BANANA, proc { |item, pokemon, battler, scene|
|
|
next pbBattleHPItem(pokemon, battler, 30, scene)
|
|
})
|
|
ItemHandlers::UseOnPokemon.add(:BANANA, proc { |item, pokemon, scene|
|
|
next pbHPItem(pokemon, 30, scene)
|
|
})
|
|
|
|
ItemHandlers::BattleUseOnPokemon.add(:GOLDENBANANA, proc { |item, pokemon, battler, scene|
|
|
next pbBattleHPItem(pokemon, battler, 50, scene)
|
|
})
|
|
ItemHandlers::UseOnPokemon.add(:GOLDENBANANA, proc { |item, pokemon, scene|
|
|
next pbHPItem(pokemon, 50, scene)
|
|
})
|
|
|
|
ItemHandlers::UseFromBag.add(:AZUREFLUTE, proc { |item|
|
|
if Kernel.pbConfirmMessage(_INTL("Play the Azure Flute?"))
|
|
Kernel.pbMessage(_INTL("You blew into the Azure Flute."))
|
|
if pbGet(222) >= 30 #if very good karma
|
|
Kernel.pbMessage(_INTL("A strange sound echoed from the sky..."))
|
|
Kernel.pbMessage(_INTL("{1} was transported somewhere...", $Trainer.name))
|
|
Kernel.pbTransfer(376, 14, 51)
|
|
next true
|
|
else
|
|
Kernel.pbMessage(_INTL("But nothing happened..."))
|
|
next false
|
|
end
|
|
|
|
end
|
|
return false
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:TRANSGENDERSTONE, proc { |item, pokemon, scene|
|
|
if pokemon.gender == 0
|
|
pokemon.makeFemale
|
|
scene.pbRefresh
|
|
scene.pbDisplay(_INTL("The Pokémon became female!"))
|
|
next true
|
|
elsif pokemon.gender == 1
|
|
pokemon.makeMale
|
|
scene.pbRefresh
|
|
scene.pbDisplay(_INTL("The Pokémon became male!"))
|
|
|
|
next true
|
|
else
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:ABILITYCAPSULE, proc { |item, poke, scene|
|
|
abilityList = poke.getAbilityList
|
|
abil1 = 0; abil2 = 0
|
|
for i in abilityList
|
|
abil1 = i[0] if i[1] == 0
|
|
abil2 = i[1] if i[1] == 1
|
|
end
|
|
if poke.abilityIndex() >= 2 || abil1 == abil2
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
if Kernel.pbConfirmMessage(_INTL("Do you want to change {1}'s ability?",
|
|
poke.name))
|
|
|
|
if poke.abilityIndex() == 0
|
|
poke.setAbility(1)
|
|
else
|
|
poke.setAbility(0)
|
|
end
|
|
scene.pbDisplay(_INTL("{1}'s ability was changed!", poke.name))
|
|
next true
|
|
end
|
|
next false
|
|
|
|
})
|
|
|
|
#NOT FULLY IMPLEMENTED
|
|
ItemHandlers::UseOnPokemon.add(:SECRETCAPSULE, proc { |item, poke, scene|
|
|
abilityList = poke.getAbilityList
|
|
numAbilities = abilityList[0].length
|
|
|
|
if numAbilities <= 2
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
elsif abilityList[0].length <= 3
|
|
if changeHiddenAbility1(abilityList, scene, poke)
|
|
next true
|
|
end
|
|
next false
|
|
else
|
|
if changeHiddenAbility2(abilityList, scene, poke)
|
|
next true
|
|
end
|
|
next false
|
|
end
|
|
})
|
|
|
|
def changeHiddenAbility1(abilityList, scene, poke)
|
|
abID1 = abilityList[0][2]
|
|
msg = _INTL("Change {1}'s ability to {2}?", poke.name, PBAbilities.getName(abID1))
|
|
if Kernel.pbConfirmMessage(_INTL(msg))
|
|
poke.setAbility(2)
|
|
abilName1 = PBAbilities.getName(abID1)
|
|
scene.pbDisplay(_INTL("{1}'s ability was changed to {2}!", poke.name, PBAbilities.getName(abID1)))
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
def changeHiddenAbility2(abilityList, scene, poke)
|
|
return false if !Kernel.pbConfirmMessage(_INTL("Change {1}'s ability?", poke.name))
|
|
|
|
abID1 = abilityList[0][2]
|
|
abID2 = abilityList[0][3]
|
|
|
|
abilName2 = PBAbilities.getName(abID1)
|
|
abilName3 = PBAbilities.getName(abID2)
|
|
|
|
if (Kernel.pbMessage("Choose an ability.", [_INTL("{1}", abilName2), _INTL("{1}", abilName3)], 2)) == 0
|
|
poke.setAbility(2)
|
|
scene.pbDisplay(_INTL("{1}'s ability was changed to {2}!", poke.name, abilName2))
|
|
else
|
|
return false
|
|
end
|
|
poke.setAbility(3)
|
|
scene.pbDisplay(_INTL("{1}'s ability was changed to {2}!", poke.name, abilName3))
|
|
return true
|
|
end
|
|
|
|
ItemHandlers::UseOnPokemon.add(:ROCKETMEAL, proc { |item, pokemon, scene|
|
|
next pbHPItem(pokemon, 100, scene)
|
|
})
|
|
|
|
ItemHandlers::BattleUseOnPokemon.add(:ROCKETMEAL, proc { |item, pokemon, battler, scene|
|
|
next pbBattleHPItem(pokemon, battler, 100, scene)
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:FANCYMEAL, proc { |item, pokemon, scene|
|
|
next pbHPItem(pokemon, 100, scene)
|
|
})
|
|
|
|
ItemHandlers::BattleUseOnPokemon.add(:FANCYMEAL, proc { |item, pokemon, battler, scene|
|
|
next pbBattleHPItem(pokemon, battler, 100, scene)
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:RAGECANDYBAR, proc { |item, pokemon, scene|
|
|
if pokemon.level <= 1
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
else
|
|
pbChangeLevel(pokemon, pokemon.level - 1, scene)
|
|
scene.pbHardRefresh
|
|
next true
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:INCUBATOR, proc { |item, pokemon, scene|
|
|
if pokemon.isEgg?
|
|
if pokemon.eggsteps <= 1
|
|
scene.pbDisplay(_INTL("The egg is already ready to hatch!"))
|
|
next false
|
|
else
|
|
scene.pbDisplay(_INTL("Incubating..."))
|
|
scene.pbDisplay(_INTL("..."))
|
|
scene.pbDisplay(_INTL("..."))
|
|
scene.pbDisplay(_INTL("Your egg is ready to hatch!"))
|
|
pokemon.eggsteps = 1
|
|
next true
|
|
end
|
|
else
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:INCUBATOR_NORMAL, proc { |item, pokemon, scene|
|
|
if pokemon.isEgg?
|
|
steps = pokemon.eggsteps
|
|
steps -= 2000 / (pokemon.nbIncubatorsUsed + 1).ceil
|
|
if steps <= 1
|
|
pokemon.eggsteps = 1
|
|
else
|
|
pokemon.eggsteps = steps
|
|
end
|
|
if pokemon.eggsteps <= 1
|
|
scene.pbDisplay(_INTL("Incubating..."))
|
|
scene.pbDisplay(_INTL("..."))
|
|
scene.pbDisplay(_INTL("..."))
|
|
scene.pbDisplay(_INTL("The egg is ready to hatch!"))
|
|
next false
|
|
else
|
|
scene.pbDisplay(_INTL("Incubating..."))
|
|
scene.pbDisplay(_INTL("..."))
|
|
scene.pbDisplay(_INTL("..."))
|
|
if pokemon.nbIncubatorsUsed >= 10
|
|
scene.pbDisplay(_INTL("The egg is a bit closer to hatching"))
|
|
else
|
|
scene.pbDisplay(_INTL("The egg is closer to hatching"))
|
|
end
|
|
pokemon.incrIncubator()
|
|
next true
|
|
end
|
|
else
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:MISTSTONE, proc { |item, pokemon, scene|
|
|
if pbForceEvo(pokemon)
|
|
next true
|
|
else
|
|
scene.pbDisplay(_INTL("It won't have any effect."))
|
|
next false
|
|
end
|
|
})
|
|
|
|
def pbForceEvo(pokemon)
|
|
newspecies = getEvolvedSpecies(pokemon)
|
|
return false if newspecies == -1
|
|
if newspecies > 0
|
|
evo = PokemonEvolutionScene.new
|
|
evo.pbStartScreen(pokemon, newspecies)
|
|
evo.pbEvolution
|
|
evo.pbEndScreen
|
|
end
|
|
return true
|
|
end
|
|
|
|
def getEvolvedSpecies(pokemon)
|
|
return pbCheckEvolutionEx(pokemon) { |pokemon, evonib, level, poke|
|
|
next pbMiniCheckEvolution(pokemon, evonib, level, poke, true)
|
|
}
|
|
end
|
|
|
|
#(copie de fixEvolutionOverflow dans FusionScene)
|
|
def getCorrectEvolvedSpecies(pokemon)
|
|
if pokemon.species >= NB_POKEMON
|
|
body = getBasePokemonID(pokemon.species)
|
|
head = getBasePokemonID(pokemon.species, false)
|
|
ret1 = -1; ret2 = -1
|
|
for form in pbGetEvolvedFormData(body)
|
|
retB = yield pokemon, form[0], form[1], form[2]
|
|
break if retB > 0
|
|
end
|
|
for form in pbGetEvolvedFormData(head)
|
|
retH = yield pokemon, form[0], form[1], form[2]
|
|
break if retH > 0
|
|
end
|
|
return ret if ret == retB && ret == retH
|
|
return fixEvolutionOverflow(retB, retH, pokemon.species)
|
|
else
|
|
for form in pbGetEvolvedFormData(pokemon.species)
|
|
newspecies = form[2]
|
|
end
|
|
return newspecies;
|
|
end
|
|
|
|
end
|
|
|
|
#########################
|
|
## DNA SPLICERS #######
|
|
#########################
|
|
|
|
ItemHandlers::UseOnPokemon.add(:INFINITESPLICERS, proc { |item, pokemon, scene|
|
|
next true if pbDNASplicing(pokemon, scene)
|
|
next false
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:INFINITESPLICERS2, proc { |item, pokemon, scene|
|
|
next true if pbDNASplicing(pokemon, scene, true, true)
|
|
next false
|
|
})
|
|
|
|
ItemHandlers::UseOnPokemon.add(:DNASPLICERS, proc { |item, pokemon, scene|
|
|
next true if pbDNASplicing(pokemon, scene)
|
|
next false
|
|
})
|
|
|
|
|
|
|
|
|
|
def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false)
|
|
playingBGM = $game_system.getPlayingBGM
|
|
dexNumber = pokemon.species_data.id_number
|
|
if (pokemon.species_data.id_number <= NB_POKEMON)
|
|
if pokemon.fused != nil
|
|
if $Trainer.party.length >= 6
|
|
scene.pbDisplay(_INTL("Your party is full! You can't unfuse {1}.", pokemon.name))
|
|
return false
|
|
else
|
|
$Trainer.party[$Trainer.party.length] = pokemon.fused
|
|
pokemon.fused = nil
|
|
pokemon.form = 0
|
|
scene.pbHardRefresh
|
|
scene.pbDisplay(_INTL("{1} changed Forme!", pokemon.name))
|
|
return true
|
|
end
|
|
else
|
|
chosen = scene.pbChoosePokemon(_INTL("Fuse with which Pokémon?"))
|
|
if chosen >= 0
|
|
poke2 = $Trainer.party[chosen]
|
|
if (poke2.species_data.id_number <= NB_POKEMON) && poke2 != pokemon
|
|
#check if fainted
|
|
if pokemon.hp == 0 || poke2.hp == 0
|
|
scene.pbDisplay(_INTL("A fainted Pokémon cannot be fused!"))
|
|
return false
|
|
end
|
|
|
|
newid = (pokemon.species_data.id_number) * NB_POKEMON + poke2.species_data.id_number
|
|
|
|
pathCustom = _INTL("Graphics/CustomBattlers/{1}.{2}.png", poke2.species_data.id_number, pokemon.species_data.id_number)
|
|
#pbResolveBitmap(pathCustom) && $game_variables[196]==0 ? pathCustom : pathReg
|
|
hasCustom = false
|
|
if (pbResolveBitmap(pathCustom))
|
|
picturePath = pathCustom
|
|
hasCustom = true
|
|
else
|
|
picturePath = _INTL("Graphics/Battlers/{1}/{1}.{2}.png", poke2.species_data.id_number, pokemon.species_data.id_number)
|
|
end
|
|
|
|
previewwindow = PictureWindow.new(picturePath)
|
|
|
|
if hasCustom
|
|
previewwindow.picture.pbSetColor(220, 255, 220, 200)
|
|
else
|
|
previewwindow.picture.pbSetColor(255, 255, 255, 200)
|
|
end
|
|
previewwindow.x = (Graphics.width / 2) - (previewwindow.width / 2)
|
|
previewwindow.y = ((Graphics.height - 96) / 2) - (previewwindow.height / 2)
|
|
previewwindow.z = 1000000
|
|
|
|
if (Kernel.pbConfirmMessage(_INTL("Fuse the two Pokémon?", newid)))
|
|
previewwindow.dispose
|
|
fus = PokemonFusionScene.new
|
|
if (fus.pbStartScreen(pokemon, poke2, newid))
|
|
returnItemsToBag(pokemon, poke2)
|
|
fus.pbFusionScreen(false, supersplicers)
|
|
$game_variables[126] += 1 #fuse counter
|
|
pbRemovePokemonAt(chosen)
|
|
fus.pbEndScreen
|
|
scene.pbHardRefresh
|
|
pbBGMPlay(playingBGM)
|
|
return true
|
|
|
|
end
|
|
else
|
|
previewwindow.dispose
|
|
return false
|
|
end
|
|
|
|
elsif pokemon == poke2
|
|
scene.pbDisplay(_INTL("{1} can't be fused with itself!", pokemon.name))
|
|
return false
|
|
else
|
|
scene.pbDisplay(_INTL("{1} can't be fused with {2}.", poke2.name, pokemon.name))
|
|
return false
|
|
|
|
end
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
else
|
|
#UNFUSE
|
|
|
|
bodyPoke = getBasePokemonID(pokemon.species_data.id_number, true)
|
|
headPoke = getBasePokemonID(pokemon.species_data.id_number, false)
|
|
|
|
if (pokemon.obtain_method == 2 || pokemon.ot != $Trainer.name) # && !canunfuse
|
|
scene.pbDisplay(_INTL("You can't unfuse a Pokémon obtained in a trade!"))
|
|
return false
|
|
else
|
|
if Kernel.pbConfirmMessageSerious(_INTL("Should {1} be unfused?", pokemon.name))
|
|
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
|
|
|
|
keepInParty = 0
|
|
if $Trainer.party.length >= 6
|
|
scene.pbDisplay(_INTL("Your party is full! Keep which Pokémon in party?"))
|
|
choice = Kernel.pbMessage("Select a Pokémon to keep in your party.", [_INTL("{1}", PBSpecies.getName(bodyPoke)), _INTL("{1}", PBSpecies.getName(headPoke)), "Cancel"], 2)
|
|
if choice == 2
|
|
return false
|
|
else
|
|
keepInParty = choice
|
|
end
|
|
end
|
|
|
|
scene.pbDisplay(_INTL("Unfusing ... "))
|
|
scene.pbDisplay(_INTL(" ... "))
|
|
scene.pbDisplay(_INTL(" ... "))
|
|
|
|
|
|
if pokemon.exp_when_fused_head == nil || pokemon.exp_when_fused_body == nil
|
|
new_level = calculateUnfuseLevelOldMethod(pokemon, supersplicers)
|
|
body_level = new_level
|
|
head_level = new_level
|
|
poke1 = Pokemon.new(bodyPoke, body_level)
|
|
poke2 = Pokemon.new(headPoke, head_level)
|
|
else
|
|
exp_body = pokemon.exp_when_fused_body + pokemon.exp_gained_since_fused
|
|
exp_head = pokemon.exp_when_fused_head + pokemon.exp_gained_since_fused
|
|
|
|
poke1 = Pokemon.new(bodyPoke, pokemon.level)
|
|
poke2 = Pokemon.new(headPoke, pokemon.level)
|
|
poke1.exp = exp_body
|
|
poke2.exp = exp_head
|
|
end
|
|
|
|
|
|
if $Trainer.party.length >= 6
|
|
if (keepInParty == 0)
|
|
$PokemonStorage.pbStoreCaught(poke2)
|
|
scene.pbDisplay(_INTL("{1} was sent to the PC.", poke2.name))
|
|
else
|
|
poke2 = PokeBattle_Pokemon.new(bodyPoke, lev, $Trainer)
|
|
poke1 = PokeBattle_Pokemon.new(headPoke, lev, $Trainer)
|
|
|
|
$PokemonStorage.pbStoreCaught(poke2)
|
|
scene.pbDisplay(_INTL("{1} was sent to the PC.", poke2.name))
|
|
end
|
|
else
|
|
Kernel.pbAddPokemonSilent(poke2, poke2.level)
|
|
end
|
|
|
|
#On ajoute l'autre dans le pokedex aussi
|
|
# $Trainer.pokedex.set_seen(poke1.species)
|
|
# $Trainer.pokedex.set_owned(poke1.species)
|
|
|
|
pokemon.species = poke1.species
|
|
pokemon.level = poke1.level
|
|
pokemon.name = poke1.name
|
|
pokemon.moves = poke1.moves
|
|
pokemon.obtain_method = 0
|
|
poke1.obtain_method = 0
|
|
|
|
#scene.pbDisplay(_INTL(p1.to_s + " " + p2.to_s))
|
|
scene.pbHardRefresh
|
|
scene.pbDisplay(_INTL("Your Pokémon were successfully unfused! "))
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
ItemHandlers::UseOnPokemon.add(:SUPERSPLICERS, proc { |item, pokemon, scene|
|
|
next true if pbDNASplicing(pokemon, scene, true, true)
|
|
})
|
|
|
|
def returnItemsToBag(pokemon, poke2)
|
|
|
|
it1 = pokemon.item
|
|
it2 = poke2.item
|
|
|
|
$PokemonBag.pbStoreItem(it1, 1) if it1 != nil
|
|
$PokemonBag.pbStoreItem(it2, 1) if it2 != nil
|
|
|
|
pokemon.item = nil
|
|
poke2.item = nil
|
|
end
|
|
|
|
#A AJOUTER: l'attribut dmgup ne modifie presentement pas
|
|
# le damage d'une attaque
|
|
#
|
|
ItemHandlers::UseOnPokemon.add(:DAMAGEUP, proc { |item, pokemon, scene|
|
|
move = scene.pbChooseMove(pokemon, _INTL("Boost Damage of which move?"))
|
|
if move >= 0
|
|
#if pokemon.moves[move].damage==0 || pokemon.moves[move].accuracy<=5 || pokemon.moves[move].dmgup >=3
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
#else
|
|
#pokemon.moves[move].dmgup+=1
|
|
#pokemon.moves[move].damage +=5
|
|
#pokemon.moves[move].accuracy -=5
|
|
|
|
#movename=PBMoves.getName(pokemon.moves[move].id)
|
|
#scene.pbDisplay(_INTL("{1}'s damage increased.",movename))
|
|
#next true
|
|
scene.pbDisplay(_INTL("This item has not been implemented into the game yet. It had no effect."))
|
|
next false
|
|
#end
|
|
end
|
|
})
|
|
|
|
##New "stones"
|
|
# ItemHandlers::UseOnPokemon.add(:UPGRADE, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
#
|
|
# ItemHandlers::UseOnPokemon.add(:DUBIOUSDISC, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
#
|
|
# ItemHandlers::UseOnPokemon.add(:ICESTONE, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
#
|
|
# ItemHandlers::UseOnPokemon.add(:MAGNETSTONE, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
|
|
# ItemHandlers::UseOnPokemon.add(:SHINYSTONE, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
#
|
|
# ItemHandlers::UseOnPokemon.add(:DAWNSTONE, proc { |item, pokemon, scene|
|
|
# if (pokemon.isShadow? rescue false)
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# end
|
|
# newspecies = pbCheckEvolution(pokemon, item)
|
|
# if newspecies <= 0
|
|
# scene.pbDisplay(_INTL("It won't have any effect."))
|
|
# next false
|
|
# else
|
|
# pbFadeOutInWithMusic(99999) {
|
|
# evo = PokemonEvolutionScene.new
|
|
# evo.pbStartScreen(pokemon, newspecies)
|
|
# evo.pbEvolution(false)
|
|
# evo.pbEndScreen
|
|
# scene.pbRefreshAnnotations(proc { |p| pbCheckEvolution(p, item) > 0 })
|
|
# scene.pbRefresh
|
|
# }
|
|
# next true
|
|
# end
|
|
# })
|
|
|
|
#
|
|
# ItemHandlers::UseOnPokemon.copy(:FIRESTONE,
|
|
# :THUNDERSTONE,:WATERSTONE,:LEAFSTONE,:MOONSTONE,
|
|
# :SUNSTONE,:DUSKSTONE,:DAWNSTONE,:SHINYSTONE,:OVALSTONE,
|
|
# :UPGRADE,:DUBIOUSDISC,:ICESTONE,:MAGNETSTONE)
|
|
|
|
#Quest log
|
|
|
|
ItemHandlers::UseFromBag.add(:DEVONSCOPE, proc { |item|
|
|
pbQuestlog()
|
|
next 1
|
|
})
|
|
|
|
ItemHandlers::UseInField.add(:DEVONSCOPE, proc { |item|
|
|
pbQuestlog()
|
|
})
|
|
|
|
#TRACKER (for roaming legendaries)
|
|
ItemHandlers::UseInField.add(:REVEALGLASS, proc { |item|
|
|
nbRoaming = 0
|
|
if RoamingSpecies.length == 0
|
|
Kernel.pbMessage(_INTL("No roaming Pokémon defined."))
|
|
else
|
|
text = "\\l[8]"
|
|
min = $game_switches[350] ? 0 : 1
|
|
for i in min...RoamingSpecies.length
|
|
poke = RoamingSpecies[i]
|
|
next if poke[0] == :FEEBAS
|
|
if $game_switches[poke[2]]
|
|
status = $PokemonGlobal.roamPokemon[i]
|
|
if status == true
|
|
if $PokemonGlobal.roamPokemonCaught[i]
|
|
text += _INTL("{1} has been caught.",
|
|
PBSpecies.getName(getID(PBSpecies, poke[0])))
|
|
else
|
|
text += _INTL("{1} has been defeated.",
|
|
PBSpecies.getName(getID(PBSpecies, poke[0])))
|
|
end
|
|
else
|
|
nbRoaming += 1
|
|
curmap = $PokemonGlobal.roamPosition[i]
|
|
if curmap
|
|
mapinfos = $RPGVX ? load_data("Data/MapInfos.rvdata") : load_data("Data/MapInfos.rxdata")
|
|
|
|
if curmap == $game_map.map_id
|
|
text += _INTL("Beep beep! {1} appears to be nearby!",
|
|
PBSpecies.getName(getID(PBSpecies, poke[0])))
|
|
else
|
|
text += _INTL("{1} is roaming around {3}",
|
|
PBSpecies.getName(getID(PBSpecies, poke[0])), curmap,
|
|
mapinfos[curmap].name, (curmap == $game_map.map_id) ? _INTL("(this route!)") : "")
|
|
end
|
|
else
|
|
text += _INTL("{1} is roaming in an unknown area.",
|
|
PBSpecies.getName(getID(PBSpecies, poke[0])), poke[1])
|
|
end
|
|
end
|
|
else
|
|
#text+=_INTL("{1} does not appear to be roaming.",
|
|
# PBSpecies.getName(getID(PBSpecies,poke[0])),poke[1],poke[2])
|
|
end
|
|
text += "\n" if i < RoamingSpecies.length - 1
|
|
end
|
|
if nbRoaming == 0
|
|
text = "No Pokémon appears to be roaming at this moment."
|
|
end
|
|
Kernel.pbMessage(text)
|
|
end
|
|
})
|
|
|
|
####EXP. ALL
|
|
#Methodes relative a l'exp sont pas encore la et pas compatibles
|
|
# avec cette version de essentials donc
|
|
# ca fait fuck all pour l'instant.
|
|
ItemHandlers::UseFromBag.add(:EXPALL, proc { |item|
|
|
$PokemonBag.pbChangeItem(:EXPALL, :EXPALLOFF)
|
|
Kernel.pbMessage(_INTL("The Exp All was turned off."))
|
|
$game_switches[920] = false
|
|
next 1 # Continue
|
|
})
|
|
|
|
ItemHandlers::UseFromBag.add(:EXPALLOFF, proc { |item|
|
|
$PokemonBag.pbChangeItem(:EXPALLOFF, :EXPALL)
|
|
Kernel.pbMessage(_INTL("The Exp All was turned on."))
|
|
$game_switches[920] = true
|
|
next 1 # Continue
|
|
})
|
|
|
|
ItemHandlers::BattleUseOnPokemon.add(:BANANA, proc { |item, pokemon, battler, scene|
|
|
next pbBattleHPItem(pokemon, battler, 30, scene)
|
|
})
|
|
ItemHandlers::UseOnPokemon.add(:BANANA, proc { |item, pokemon, scene|
|
|
next pbHPItem(pokemon, 30, scene)
|
|
})
|
|
|
|
ItemHandlers::BattleUseOnPokemon.add(:GOLDENBANANA, proc { |item, pokemon, battler, scene|
|
|
next pbBattleHPItem(pokemon, battler, 50, scene)
|
|
})
|
|
ItemHandlers::UseOnPokemon.add(:GOLDENBANANA, proc { |item, pokemon, scene|
|
|
next pbHPItem(pokemon, 50, scene)
|
|
}) |