Evolución
El sistema de evolución en La Base de Sky (Pokémon Essentials v21.1) permite definir múltiples métodos de
evolución para cada especie. Las evoluciones se definen en el archivo PBS pokemon.txt y el motor
las gestiona automáticamente cuando se cumplen las condiciones.
Definir evoluciones en el PBS
Las evoluciones se definen dentro de la sección de cada especie en PBS/pokemon.txt, usando la
propiedad Evolutions. El formato es:
Evolutions = ESPECIE_DESTINO,METODO,PARAMETRO
Se pueden definir múltiples evoluciones separándolas por comas:
[EEVEE]
Evolutions = VAPOREON,Item,WATERSTONE,JOLTEON,Item,THUNDERSTONE,FLAREON,Item,FIRESTONE,ESPEON,HappinessDay,,UMBREON,HappinessNight,,LEAFEON,Location,Pokemon League,GLACEON,Location,Ice Cave,SYLVEON,HappinessMoveType,FAIRY
Tabla de métodos de evolución
A continuación se listan todos los métodos de evolución disponibles en Pokémon Essentials v21.1. El parámetro indica qué valor adicional se necesita para cada método.
Evoluciones por nivel
| Método | Parámetro | Descripción |
|---|---|---|
Level |
Nivel mínimo | Evoluciona al alcanzar el nivel indicado. |
LevelMale |
Nivel mínimo | Evoluciona al alcanzar el nivel indicado, solo si es macho. |
LevelFemale |
Nivel mínimo | Evoluciona al alcanzar el nivel indicado, solo si es hembra. |
LevelDay |
Nivel mínimo | Evoluciona al nivel indicado durante el día. |
LevelNight |
Nivel mínimo | Evoluciona al nivel indicado durante la noche. |
LevelRain |
Nivel mínimo | Evoluciona al nivel indicado cuando está lloviendo. |
LevelDarkInParty |
Nivel mínimo | Evoluciona al nivel indicado si hay un Pokémon de tipo Siniestro en el equipo. |
AttackGreater |
Nivel mínimo | Evoluciona al nivel indicado si Ataque > Defensa. |
AtkDefEqual |
Nivel mínimo | Evoluciona al nivel indicado si Ataque = Defensa. |
DefenseGreater |
Nivel mínimo | Evoluciona al nivel indicado si Defensa > Ataque. |
Silcoon |
Nivel mínimo | Evoluciona al nivel indicado (evolución de Wurmple basada en valor de personalidad, resultado Silcoon). |
Cascoon |
Nivel mínimo | Evoluciona al nivel indicado (evolución de Wurmple basada en valor de personalidad, resultado Cascoon). |
Ninjask |
Nivel mínimo | Evolución principal de Nincada (se convierte en Ninjask). |
Shedinja |
Nivel mínimo | Al evolucionar Nincada, si hay espacio en el equipo y una Poké Ball en la mochila, Shedinja aparece. |
Evoluciones por felicidad
| Método | Parámetro | Descripción |
|---|---|---|
Happiness |
(ninguno) | Evoluciona al subir de nivel con felicidad ≥ 220. |
HappinessDay |
(ninguno) | Evoluciona al subir de nivel con felicidad ≥ 220 durante el día. |
HappinessNight |
(ninguno) | Evoluciona al subir de nivel con felicidad ≥ 220 durante la noche. |
HappinessMoveType |
Tipo | Evoluciona al subir de nivel con felicidad ≥ 220 si conoce un movimiento del tipo indicado. |
Evoluciones por objeto
| Método | Parámetro | Descripción |
|---|---|---|
Item |
ID del objeto | Evoluciona al usar el objeto indicado sobre el Pokémon. |
ItemMale |
ID del objeto | Evoluciona al usar el objeto indicado, solo si es macho. |
ItemFemale |
ID del objeto | Evoluciona al usar el objeto indicado, solo si es hembra. |
ItemDay |
ID del objeto | Evoluciona al usar el objeto indicado durante el día. |
ItemNight |
ID del objeto | Evoluciona al usar el objeto indicado durante la noche. |
ItemHappiness |
ID del objeto | Evoluciona al usar el objeto indicado con felicidad ≥ 220. |
Evoluciones por intercambio
| Método | Parámetro | Descripción |
|---|---|---|
Trade |
(ninguno) | Evoluciona al ser intercambiado. |
TradeItem |
ID del objeto | Evoluciona al ser intercambiado mientras lleva el objeto indicado. |
TradeSpecies |
Especie | Evoluciona al ser intercambiado por un Pokémon de la especie indicada. |
Evoluciones por condiciones especiales
| Método | Parámetro | Descripción |
|---|---|---|
HasMove |
ID del movimiento | Evoluciona al subir de nivel si el Pokémon conoce el movimiento indicado. |
HasMoveType |
Tipo | Evoluciona al subir de nivel si conoce algún movimiento del tipo indicado. |
HasInParty |
Especie | Evoluciona al subir de nivel si la especie indicada está en el equipo. |
Location |
ID del mapa | Evoluciona al subir de nivel en el mapa indicado. |
Beauty |
Valor mínimo | Evoluciona al subir de nivel con Belleza ≥ al valor. (Usado por Feebas → Milotic en Gen III.) |
HoldItem |
ID del objeto | Evoluciona al subir de nivel mientras lleva el objeto indicado. |
HoldItemDay |
ID del objeto | Evoluciona al subir de nivel llevando el objeto, durante el día. |
HoldItemNight |
ID del objeto | Evoluciona al subir de nivel llevando el objeto, durante la noche. |
Cómo funciona la evolución en código
Cuando un Pokémon cumple las condiciones para evolucionar (generalmente tras subir de nivel o usar un objeto), el motor ejecuta una verificación automática. El proceso sigue estos pasos:
- Se llama a
pbEvolutionCheckal final de cada combate o cuando se usa un objeto evolutivo. - El método recorre cada Pokémon del equipo y verifica si alguno cumple las condiciones para algún método de evolución definido en su PBS.
- Si se encuentran evoluciones posibles, se muestra la animación de evolución.
- El jugador puede cancelar la evolución presionando B durante la animación (salvo que se use
pbForceEvolution). - Si la evolución se completa, la especie del Pokémon cambia, se recalculan las estadísticas y puede aprender movimientos nuevos del nivel correspondiente.
Activar evolución desde Scripts
pbEvolutionCheck
Verifica y activa evoluciones pendientes para todos los Pokémon del equipo. Se ejecuta automáticamente tras cada combate.
# Verificar evoluciones normalmente (se puede cancelar con B)
pbEvolutionCheck
Forzar una evolución específica
Para forzar la evolución de un Pokémon a una especie concreta, sin que el jugador pueda cancelarla:
# Forzar evolución del primer Pokémon a Raichu
pkmn = $player.party[0]
new_species = :RAICHU
pbFadeOutInNewScene {
evo = PokemonEvolutionScene.new
evo.pbStartScreen(pkmn, new_species)
evo.pbEvolution
evo.pbEndScreen
}
Evolución mediante objeto (desde script)
El motor gestiona automáticamente las evoluciones por objeto cuando el jugador usa un objeto evolutivo desde la mochila. El flujo es:
# Internamente, al usar una Piedra Trueno en un Pikachu:
# 1. Se detecta que Pikachu tiene Item,THUNDERSTONE como método
# 2. Se inicia la escena de evolución
# 3. Si no se cancela, cambia a RAICHU
Cancelar evolución
El jugador puede cancelar cualquier evolución presionando el botón B durante la animación de
evolución. Si un Pokémon lleva equipado el objeto Piedra Eterna (:EVERSTONE), la
evolución no se activa en absoluto.
# Dar Piedra Eterna al primer Pokémon para evitar evolución
$player.party[0].item = :EVERSTONE
Crear un método de evolución personalizado
Pokémon Essentials v21.1 permite crear métodos de evolución personalizados mediante la clase
GameData::Evolution. Se deben definir en los scripts del juego:
# Ejemplo: evolución al tener más de 3 medallas
GameData::Evolution.register(:BadgeCount) do
parameter Integer # Cantidad de medallas requeridas
can_evolve_with_level_up? do |pkmn, parameter|
next $player.badge_count >= parameter
end
end
Tras definirlo, se puede usar en el PBS:
[MIPOKEMON]
Evolutions = MIEVOLUCION,BadgeCount,3
Ejemplos comunes en PBS
# Evolución simple por nivel
[CHARMANDER]
Evolutions = CHARMELEON,Level,16
# Evolución doble
[CHARMELEON]
Evolutions = CHARIZARD,Level,36
# Evolución por piedra
[PIKACHU]
Evolutions = RAICHU,Item,THUNDERSTONE
# Evolución por intercambio con objeto
[SEADRA]
Evolutions = KINGDRA,TradeItem,DRAGONSCALE
# Evolución por felicidad de noche
[EEVEE]
Evolutions = VAPOREON,Item,WATERSTONE,JOLTEON,Item,THUNDERSTONE,FLAREON,Item,FIRESTONE,ESPEON,HappinessDay,,UMBREON,HappinessNight,
# Evolución por movimiento conocido
[BONSLY]
Evolutions = SUDOWOODO,HasMove,MIMIC
# Evolución por tener especie en el equipo
[MANTYKE]
Evolutions = MANTINE,HasInParty,REMORAID
# Evolución por ubicación
[MAGNETON]
Evolutions = MAGNEZONE,Location,Pokemon League
Notas importantes
- Un Pokémon puede tener múltiples evoluciones posibles. Si cumple condiciones para más de una, se usa la primera que coincida en el orden del PBS.
- Las evoluciones por nivel se verifican cada vez que el Pokémon sube de nivel, ya sea por combate, Caramelo Raro u otro medio.
- Las evoluciones por intercambio se activan automáticamente al completar un intercambio.
- El método
Shedinjaes especial: al evolucionar Nincada, si hay espacio en el equipo y una Poké Ball disponible, se agrega un Shedinja adicional. - La Piedra Eterna bloquea todas las evoluciones por nivel y felicidad, pero no bloquea las evoluciones por objeto ni por intercambio.