Objetos
La Base de Sky incluye todos los objetos de Pokémon Essentials más los objetos de la 9ª generación, con textos traducidos al español y varias mejoras de calidad de vida.
Definir un objeto
Los objetos se definen en el archivo PBS items.txt:
[POTION]
Name = Poción
NamePlural = Pociones
Pocket = 1
Price = 200
FieldUse = OnPokemon
BattleUse = OnPokemon
Description = Restaura 20 PS a un Pokémon.
Pokévial
El Pokévial (Curaportátil) es un objeto clave reutilizable que funciona como una poción recargable. Características:
- Se recarga automáticamente en los Centros Pokémon
- Puede tener múltiples cargas (configurable con
add_new_vial_charge) - Opción de Pokévial infinito disponible desde v1.1.2 (constante
INFINITE_POKEVIAL) - Corrección: ahora agrega nuevas cargas correctamente cuando el vial aún tiene cargas restantes
| Constante | Descripción | Valor por defecto |
|---|---|---|
INFINITE_POKEVIAL |
Si es true, la Pokévial no gasta cargas al usarse |
false |
INITIAL_CHARGES_POKEVIAL |
Número de cargas iniciales al recibir la Pokévial | 1 |
Métodos del script
# Dar la Pokévial al jugador
give_vial
# Bloquear/desbloquear la Pokévial
lock_vial
unlock_vial
# Añadir una nueva carga máxima
add_new_vial_charge
# Verificar si el jugador tiene la Pokévial
player_has_pokevial?
Repelente Infinito
La Base de Sky incluye un Repelente Infinito como objeto clave. A diferencia de los repelentes normales (que se gastan por pasos), este objeto funciona como un toggle que se activa y desactiva.
| Propiedad | Valor |
|---|---|
| ID interno | :INFREPEL (activo) / :INFREPELOFF (desactivado) |
| Tipo | Objeto clave (Pocket 8) |
| Uso | Directo (se activa/desactiva desde la mochila o como objeto registrado) |
Al usar el objeto, alterna entre activado y desactivado, reemplazando el ítem en la mochila y en los objetos registrados:
# Dar el Repelente Infinito al jugador
pbReceiveItem(:INFREPEL)
# El jugador puede activarlo/desactivarlo desde la mochila
# Internamente usa pbToggleInfiniteRepel
Mentas y Cápsulas
Mentas
Las mentas permiten cambiar la naturaleza efectiva de un Pokémon (afectando sus estadísticas sin cambiar la naturaleza real). Correcciones aplicadas:
- Corregido error que no mostraba el texto de confirmación/cancelación al usar mentas
Cápsula de Habilidad
La Cápsula de Habilidad permite cambiar la habilidad de un Pokémon. Mejoras:
- Ahora avisa si el Pokémon ya tiene la habilidad seleccionada
- No consume el objeto si la habilidad no cambia
Bayas
Sistema de bayas completamente funcional con correcciones:
- Corregido bug que no mostraba el gráfico al plantar bayas
- Corregido bug donde los árboles de bayas no desaparecían al recogerlas
- Precios de venta actualizados según generaciones recientes
Máquinas Técnicas (MT)
Las MT incluyen mejoras en La Base de Sky:
- Al encontrar una MT, ahora se muestra el nombre del movimiento que contiene (controlado por
SHOW_ITEM_DESCRIPTIONS_ON_RECEIVE) - Las MT de 9ª generación están incluidas
El script 036_UI_Item_Find.rb detecta automáticamente si el objeto recibido es una MT/MO y añade el nombre del movimiento al cuadro de descripción. Esta funcionalidad se activa para cualquier objeto la primera vez que se obtiene.
Precio de venta
El precio de venta por defecto se ha actualizado de 1/2 a 1/4 del precio de compra, de acuerdo con los cambios en Pokémon BDSP y SV. Esto se controla con la constante ITEM_SELL_PRICE_DIVISOR en Settings:
ITEM_SELL_PRICE_DIVISOR = MECHANICS_GENERATION >= 9 ? 4 : 2
2 en la configuración del proyecto.
Restaurar objetos tras combate
Opción para que los objetos consumibles (bayas, gemas, banda focus, etc.) se restauren automáticamente después del combate. Esta opción viene desactivada por defecto.
Para activarla, cambia la constante en Settings:
RESTORE_HELD_ITEMS_AFTER_BATTLE = true
Activar esta opción puede cambiar significativamente el balance del juego. El movimiento Ladrón también se ha actualizado para ser compatible con este sistema (comportamiento de 9ª generación).
Manipular objetos por script
# Dar un objeto al jugador
pbReceiveItem(:POTION)
pbReceiveItem(:POTION, 5) # Dar 5 pociones
# Verificar si el jugador tiene un objeto
$bag.has?(:POTION)
# Quitar un objeto
$bag.remove(:POTION)
# Al liberar un Pokémon con objeto equipado,
# el objeto se guarda automáticamente en la mochila (mejora de la base)