I have some upcoming updates to my game (Pokémon Zero, check it out) and thought I'd share something I've worked on. Ability Capsules also offer the choice of switching to a Hidden Ability.
How it works is this:
If a Pokémon has only one Ability choice (e.g. Metapod), then it won't have any effect.
If it has two choices (e.g. Charmeleon), then it will ask if you want to switch to the other one.
If it has more than two (e.g. Makuhita), then it will ask you which of the other abilities you would like to switch to, or give you the option to cancel.
I've tested this quickly, but do let me know if you find any issues. Simply replace the whole block that starts
with the code block below. Hopefully this is useful to someone!
How it works is this:
If a Pokémon has only one Ability choice (e.g. Metapod), then it won't have any effect.
If it has two choices (e.g. Charmeleon), then it will ask if you want to switch to the other one.
If it has more than two (e.g. Makuhita), then it will ask you which of the other abilities you would like to switch to, or give you the option to cancel.
I've tested this quickly, but do let me know if you find any issues. Simply replace the whole block that starts
Code:
ItemHandlers::UseOnPokemon.add(:ABILITYCAPSULE,proc{|item,pokemon,scene|
Code:
ItemHandlers::UseOnPokemon.add(:ABILITYCAPSULE,proc{|item,pokemon,scene|
abils=pokemon.getAbilityList
if abils.length==1 # Pokemon only has one possible Ability, e.g. Metapod
scene.pbDisplay(_INTL("It won't have any effect."))
next false
elsif abils.length==2 # Ask to switch to the only other Ability
newabil=abils.find{|a| a[0]!=pokemon.ability}
newabilid=newabil[0]
newabilname=PBAbilities.getName(newabilid)
if scene.pbConfirm(_INTL("Would you like to change {1}'s Ability to {2}?",
pokemon.name,newabilname))
newabilindex=newabil[1]
pokemon.setAbility(newabilindex)
scene.pbRefresh
scene.pbDisplay(_INTL("{1}'s Ability changed to {2}!",pokemon.name,
PBAbilities.getName(pokemon.ability)))
next true
end
else
commands = []
abilindices = []
for i in abils # List every other possible Ability for this mon and ask to choose one
if i[1]!=pokemon.abilityIndex
commands.push(PBAbilities.getName(i[0]))
abilindices.push(i[1])
end
end
commands.push("Cancel")
msg = _INTL("Which Ability should {1} learn?",pokemon.name)
cmd = scene.pbShowCommands(msg,commands)
if cmd>=0 && cmd<commands.length-1
chosenabilindex=abilindices[cmd]
pokemon.setAbility(chosenabilindex)
scene.pbRefresh
scene.pbDisplay(_INTL("{1}'s Ability changed to {2}!",pokemon.name,
PBAbilities.getName(pokemon.ability)))
next true
end
end
next false
})
Last edited: