Pokémon Oscuros

El sistema de Pokémon Oscuros (Shadow Pokémon) en La Base de Sky está inspirado en los juegos Pokémon Colosseum y Pokémon XD: Gale of Darkness. En estos juegos, ciertos Pokémon han sido corrompidos por una organización malvada y tienen la puerta de su corazón cerrada artificialmente, convirtiéndolos en máquinas de combate sin emociones.

¿Qué es un Pokémon Oscuro?

Un Pokémon Oscuro (Shadow Pokémon) es un Pokémon cuyo corazón ha sido cerrado artificialmente. Estos Pokémon tienen las siguientes características:

El tipo Shadow

El tipo :SHADOW es un tipo especial que solo poseen los Pokémon Oscuros. Sus interacciones de tipo son:

Interacción Detalle
Efectividad contra tipos normales Los movimientos Shadow son super efectivos contra todos los tipos que no sean Shadow.
Efectividad contra Shadow Los movimientos Shadow son poco efectivos contra otros Pokémon Shadow.
Resistencias Los Pokémon Shadow resisten todos los tipos que no sean Shadow.
Debilidad Los Pokémon Shadow son débiles a movimientos de tipo Shadow.
Nota: El tipo Shadow reemplaza temporalmente a los tipos normales del Pokémon. Al purificarse, el Pokémon recupera sus tipos originales.

Crear un Pokémon Oscuro

Para convertir un Pokémon en Oscuro, se utiliza el método makeShadow:

# Crear un Pokémon y convertirlo en Oscuro
pkmn = Pokemon.new(:TEDDIURSA, 30)
pkmn.makeShadow

# Agregarlo al equipo
pbAddPokemon(pkmn)

El método makeShadow realiza las siguientes acciones:

  1. Marca al Pokémon como Shadow (pkmn.shadow = true).
  2. Establece el Medidor de Corazón al máximo (pkmn.heart_gauge).
  3. Reemplaza algunos movimientos del Pokémon con movimientos de tipo Shadow.
  4. Bloquea la ganancia de experiencia y la evolución.

Pokémon Oscuros de entrenadores enemigos

Para que un entrenador enemigo tenga un Pokémon Oscuro, se configura en el PBS de entrenadores (trainers.txt):

# En PBS/trainers.txt
[CIPHER_ADMIN,Miror B.]
LossText = ¡No puede ser! ¡Mi ritmo ha fallado!
Pokemon = TEDDIURSA,30,Shadow=true
Pokemon = LUDICOLO,35

Cuando el jugador derrota al entrenador, puede capturar el Pokémon Oscuro con una Poké Ball (similar a los juegos de Colosseum/XD). Esta mecánica se activa automáticamente para Pokémon marcados como Shadow en combates contra entrenadores.

El Medidor de Corazón (Heart Gauge)

Cada Pokémon Oscuro tiene un Medidor de Corazón que va de un valor máximo hasta 0. Cuando el medidor llega a 0, el Pokémon está listo para ser purificado.

Propiedad Descripción
pkmn.heart_gauge Valor actual del Medidor de Corazón. Comienza en un valor alto y debe reducirse a 0.
pkmn.shadow Devuelve true si el Pokémon es Shadow.
pkmn.purifiable? Devuelve true si el medidor está en 0 y el Pokémon puede ser purificado.

Reducir el Medidor de Corazón

El Medidor de Corazón se reduce progresivamente mediante varias acciones:

Acción Reducción Descripción
Caminar Variable Cada cierta cantidad de pasos, el medidor se reduce ligeramente si el Pokémon Oscuro está en el equipo.
Combatir Moderada Participar en combates reduce el medidor del Pokémon Oscuro.
Llamar al Pokémon Alta Usar el comando "Llamar" durante el combate reduce significativamente el medidor.
Estar en el equipo Muy baja Simplemente tener al Pokémon en el equipo reduce el medidor gradualmente.
Usar Colonia Moderada Ciertos objetos como Colonias (Scent) reducen el medidor al usarse sobre el Pokémon.
# Reducir manualmente el medidor de corazón
pkmn = $player.party[0]
if pkmn.shadow
  pkmn.heart_gauge -= 500   # Reducir en 500 puntos
  if pkmn.heart_gauge <= 0
    pkmn.heart_gauge = 0
    pbMessage(_INTL("¡{1} está listo para ser purificado!", pkmn.name))
  end
end

Modo Hiperactivo (Hyper Mode)

Durante el combate, un Pokémon Oscuro puede entrar en Modo Hiperactivo de forma aleatoria. Cuando esto ocurre:

El comando "Llamar" en combate

Cuando el jugador tiene un Pokémon Oscuro en combate, el botón "Huir" se reemplaza por el botón "Llamar" (Call). Este comando:

# El sistema gestiona automáticamente el reemplazo del botón.
# En el código de la interfaz de batalla, la lógica es:
# Si el Pokémon activo es Shadow:
#   Mostrar "Llamar" en lugar de "Huir"
#   Al usar "Llamar": reducir heart_gauge y salir de Hyper Mode

Movimientos Shadow

Los Pokémon Oscuros usan movimientos especiales de tipo Shadow. Estos son los movimientos disponibles:

Movimiento ID Interno Potencia Categoría Descripción
Embestida Oscura :SHADOWRUSH 55 Físico Ataque Shadow básico. Causa daño de retroceso al usuario.
Onda Oscura :SHADOWWAVE 50 Especial Ataque Shadow a distancia que golpea a un objetivo.
Rayo Oscuro :SHADOWBLAST 80 Especial Potente ataque Shadow especial.
Puño Oscuro :SHADOWSTRIKE 80 Físico Puede bajar la Defensa del objetivo.
Tormenta Oscura :SHADOWSTORM 95 Especial Golpea a todos los Pokémon adyacentes en batalla.
Cielo Oscuro :SHADOWSKY Estado Cambia el clima a "Shadow Sky", dañando a todos los Pokémon no-Shadow cada turno.
Velo Oscuro :SHADOWSHED Estado Elimina las barreras (Reflejo, Pantalla de Luz, etc.).
Miedo Oscuro :SHADOWPANIC Estado Confunde a todos los Pokémon enemigos.
Niebla Oscura :SHADOWMIST Estado Reduce la Evasión de todos los Pokémon enemigos.
Debilidad Oscura :SHADOWDOWN Estado Reduce la Defensa de todos los Pokémon enemigos.
Poder Oscuro :SHADOWRAVE 70 Especial Ataque Shadow que golpea a todos los enemigos.
Carga Oscura :SHADOWCHARGE 60 Físico Ataque físico Shadow con daño de retroceso.
Congelación Oscura :SHADOWCHILL 75 Especial Puede congelar al objetivo.
Llama Oscura :SHADOWFIRE 75 Especial Puede quemar al objetivo.
Rompimiento Oscuro :SHADOWBREAK 75 Físico Ataque físico Shadow fuerte.
Fin Oscuro :SHADOWEND 120 Físico El ataque Shadow más poderoso. Causa daño masivo de retroceso.
Abrazo Oscuro :SHADOWHUG Estado Atrapa al objetivo (como Atadura).

Purificación

La purificación es el proceso de devolver un Pokémon Oscuro a su estado normal. Un Pokémon puede ser purificado cuando su Medidor de Corazón llega a 0.

Métodos de purificación

1. Purificación automática (por felicidad)

El método principal de purificación es a través de la felicidad. Cuando el Medidor de Corazón llega a 0, se puede purificar al Pokémon:

# Verificar si un Pokémon puede purificarse
pkmn = $player.party[0]
if pkmn.shadow && pkmn.purifiable?
  pbMessage(_INTL("¡{1} está listo para la purificación!", pkmn.name))
  # Purificar al Pokémon
  pkmn.purify
  pbMessage(_INTL("¡{1} ha sido purificado! ¡La puerta de su corazón se ha abierto!", pkmn.name))
end

2. Ceremonia de purificación

Se puede crear un lugar especial en el juego (como la Piedra Reliquia en Colosseum) donde el jugador lleva a sus Pokémon Oscuros para purificarlos:

# Evento de ceremonia de purificación
pbMessage(_INTL("Esta es la Piedra de Purificación."))
pbMessage(_INTL("Acerca un Pokémon Oscuro para purificar su corazón."))

# Elegir un Pokémon del equipo
pbChoosePokemon(1, 2, proc { |pkmn|
  pkmn.shadow && pkmn.purifiable?
})

if pbGet(1) >= 0
  pkmn = $player.party[pbGet(1)]
  pbMessage(_INTL("Colocas a {1} sobre la Piedra de Purificación...", pkmn.name))
  # Animación de purificación
  pbWait(40)
  pkmn.purify
  pbMessage(_INTL("¡{1} ha sido purificado!", pkmn.name))
  pbMessage(_INTL("¡La puerta del corazón de {1} se ha abierto completamente!", pkmn.name))
  pbMessage(_INTL("{1} ha recuperado sus movimientos originales.", pkmn.name))
else
  pbMessage(_INTL("No tienes ningún Pokémon listo para purificar."))
end

¿Qué ocurre al purificar?

Cuando un Pokémon es purificado, se producen los siguientes cambios:

  1. El Pokémon deja de ser Shadow (pkmn.shadow = false).
  2. Recupera sus tipos originales (pierde el tipo :SHADOW).
  3. Los movimientos Shadow son reemplazados por los movimientos que el Pokémon debería conocer según su nivel.
  4. Puede volver a ganar experiencia y subir de nivel.
  5. Puede volver a evolucionar.
  6. Recibe toda la experiencia que habría ganado mientras era Shadow (la experiencia se acumula internamente).
  7. Su felicidad se restablece al valor inicial de su especie.

Propiedades útiles de un Pokémon Oscuro

Propiedad / Método Tipo Descripción
pkmn.shadow Boolean true si es un Pokémon Oscuro.
pkmn.heart_gauge Integer Valor actual del medidor (0 = listo para purificar).
pkmn.purifiable? Boolean true si el medidor es 0 y puede purificarse.
pkmn.makeShadow Método Convierte al Pokémon en Oscuro.
pkmn.purify Método Purifica al Pokémon Shadow.
pkmn.hyper_mode Boolean true si está en Modo Hiperactivo durante el combate.
pkmn.saved_exp Integer Experiencia acumulada mientras era Shadow.

Activar el sistema Shadow

Para utilizar el sistema de Pokémon Oscuros en tu juego, necesitas:

  1. Definir el tipo :SHADOW en PBS/types.txt (ya viene incluido en La Base de Sky).
  2. Definir los movimientos Shadow en PBS/moves.txt (ya vienen incluidos).
  3. Crear eventos donde los entrenadores enemigos tengan Pokémon Shadow que el jugador pueda capturar.
  4. Opcionalmente, crear lugares de purificación en el mapa.
# Ejemplo de tipo Shadow en PBS/types.txt
[SHADOW]
Name = Oscuro
IsSpecialType = true
IsPseudoType = true

Ejemplo completo: Evento de combate Shadow

A continuación se muestra un ejemplo de cómo configurar un evento donde el jugador se enfrenta a un entrenador con un Pokémon Oscuro:

# Evento: Combate contra Admin Cipher
pbMessage(_INTL("¡No dejaré que te interpongas en nuestros planes!"))
pbMessage(_INTL("¡Te mostraré el poder de los Pokémon Oscuros!"))

# Iniciar combate (el Pokémon Shadow se define en trainers.txt)
if pbTrainerBattle(:CIPHER_ADMIN, "Miror B.")
  pbMessage(_INTL("¡Imposible! ¡Has derrotado a mi Pokémon Oscuro!"))
  pbMessage(_INTL("Si lograste capturarlo... cuídalo bien."))
  pbSetSelfSwitch("A", true)
else
  pbMessage(_INTL("¡Ja! ¡El poder de la oscuridad es invencible!"))
end

Notas importantes