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:

  1. Se llama a pbEvolutionCheck al final de cada combate o cuando se usa un objeto evolutivo.
  2. 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.
  3. Si se encuentran evoluciones posibles, se muestra la animación de evolución.
  4. El jugador puede cancelar la evolución presionando B durante la animación (salvo que se use pbForceEvolution).
  5. 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