ItemHandlers::UseOnPokemon.add(:EXPCANDYXS,proc{|item,pokemon,scene|
levelLimits = [20] # Gym Badges Hard Level Cap
leadersDefeated = $Trainer.numbadges
if pokemon.level>=levelLimits[leadersDefeated] || (pokemon.isShadow? rescue false)
scene.pbDisplay(_INTL("It won't have any effect."))
next false
else
experience=100 if isConst?(item,PBItems,:EXPCANDYXS)
experience=800 if isConst?(item,PBItems,:EXPCANDYS)
experience=3000 if isConst?(item,PBItems,:EXPCANDYM)
experience=10000 if isConst?(item,PBItems,:EXPCANDYL)
experience=30000 if isConst?(item,PBItems,:EXPCANDYXL)
if pokemon.level<levelLimits[leadersDefeated]
totalExpNeeded = PBExperience.pbGetStartExperience(levelLimits[leadersDefeated],pokemon.growthrate)
currExpNeeded = totalExpNeeded - pokemon.exp
if experience > currExpNeeded
experience = currExpNeeded
end
end
newexp=PBExperience.pbAddExperience(pokemon.exp,experience,pokemon.growthrate)
newlevel=PBExperience.pbGetLevelFromExperience(newexp,pokemon.growthrate)
curlevel=pokemon.level
scene.pbDisplay(_INTL("Your Pokémon gained {1} Exp. Points!",experience))
if newlevel==curlevel
pokemon.exp=newexp
pokemon.calcStats
scene.pbRefresh
else
attackdiff=pokemon.attack
defensediff=pokemon.defense
speeddiff=pokemon.speed
spatkdiff=pokemon.spatk
spdefdiff=pokemon.spdef
totalhpdiff=pokemon.totalhp
oldlevel=pokemon.level
pokemon.level=newlevel
pokemon.changeHappiness("levelup")
pokemon.calcStats
scene.pbRefresh
Kernel.pbMessage(_INTL("\\se[Pkmn level up]{1} was elevated to Level {2}!",pokemon.name,pokemon.level))
attackdiff=pokemon.attack-attackdiff
defensediff=pokemon.defense-defensediff
speeddiff=pokemon.speed-speeddiff
spatkdiff=pokemon.spatk-spatkdiff
spdefdiff=pokemon.spdef-spdefdiff
totalhpdiff=pokemon.totalhp-totalhpdiff
pbTopRightWindow(_INTL("Max. HP<r>+{1}\r\nAttack<r>+{2}\r\nDefense<r>+{3}\r\nSp. Atk<r>+{4}\r\nSp. Def<r>+{5}\r\nSpeed<r>+{6}",
totalhpdiff,attackdiff,defensediff,spatkdiff,spdefdiff,speeddiff))
pbTopRightWindow(_INTL("Max. HP<r>{1}\r\nAttack<r>{2}\r\nDefense<r>{3}\r\nSp. Atk<r>{4}\r\nSp. Def<r>{5}\r\nSpeed<r>{6}",
pokemon.totalhp,pokemon.attack,pokemon.defense,pokemon.spatk,pokemon.spdef,pokemon.speed))
movelist=pokemon.getMoveList
for i in movelist
if i[0]>oldlevel && i[0]<=pokemon.level
pbLearnMove(pokemon,i[1],true)
end
end
newspecies=pbCheckEvolution(pokemon)
if newspecies>0
pbFadeOutInWithMusic(99999){
evo=PokemonEvolutionScene.new
evo.pbStartScreen(pokemon,newspecies)
evo.pbEvolution
evo.pbEndScreen
}
end
pokemon.exp=newexp
scene.pbRefresh
end
next true
end
})