- Pokémon Essentials Version
- v21.1 ✅
Allow players to easily switch between different types of balls
Ruby:
MenuHandlers.add(:party_menu, :change_ball, {
"name" => _INTL("Ball"),
"order" => 35,
"condition" => proc { |screen, party, party_idx| next !party[party_idx].egg? && !party[party_idx].mail },
"effect" => proc { |screen, party, party_idx|
balls = $bag.pockets[3].map { |ball| GameData::Item.try_get(ball[0]) }
if balls.empty?
pbMessage(_INTL("You don't have any balls in your bag."))
next
end
balls.sort_by! { |ball| ball.name }
commands = balls.map { |ball| ball.name }
pkmn = party[party_idx]
current_ball_id = pkmn.poke_ball
current_ball_name = GameData::Item.try_get(current_ball_id)&.name
current_cmd = balls.index { |ball| ball.id == current_ball_id } || 0
selected_cmd = screen.pbShowCommands(_INTL("Select a ball to swap.\nCurrent:{1}", current_ball_name), commands, current_cmd)
next if selected_cmd < 0
new_ball = balls[selected_cmd]
if new_ball.id == current_ball_id
pbMessage(_INTL("The ball you have selected is the same as the current ball."))
next
end
$bag.remove(new_ball.id)
pkmn.poke_ball = new_ball.id
pbMessage(_INTL("The Pokemon's ball was changed to {1}.", new_ball.name))
screen.pbRefreshSingle(party_idx)
}
})
- Credits
- Halily
TAAAAAAA