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:
- Son del tipo :SHADOW en lugar de sus tipos normales.
- No pueden subir de nivel ni ganar experiencia.
- No pueden evolucionar.
- Tienen un Medidor de Corazón (Heart Gauge) que indica su nivel de oscuridad.
- Conocen movimientos de tipo Shadow en lugar de sus movimientos normales.
- Pueden entrar en modo Hiperactivo (Hyper Mode) durante el combate.
- Deben ser purificados para recuperar su estado normal.
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. |
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:
- Marca al Pokémon como Shadow (
pkmn.shadow = true). - Establece el Medidor de Corazón al máximo (
pkmn.heart_gauge). - Reemplaza algunos movimientos del Pokémon con movimientos de tipo Shadow.
- 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 Pokémon puede desobedecer las órdenes del entrenador.
- En lugar de usar el movimiento seleccionado, puede usar Shadow Rush u otro movimiento Shadow aleatorio.
- El Pokémon puede lastimarse a sí mismo.
- El entrenador puede usar el comando "Llamar" (Call) para sacar al Pokémon del Modo Hiperactivo.
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:
- Saca al Pokémon del Modo Hiperactivo si estaba en él.
- Reduce el Medidor de Corazón del Pokémon.
- Consume el turno del entrenador (no se puede atacar en el mismo turno).
# 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:
- El Pokémon deja de ser Shadow (
pkmn.shadow = false). - Recupera sus tipos originales (pierde el tipo
:SHADOW). - Los movimientos Shadow son reemplazados por los movimientos que el Pokémon debería conocer según su nivel.
- Puede volver a ganar experiencia y subir de nivel.
- Puede volver a evolucionar.
- Recibe toda la experiencia que habría ganado mientras era Shadow (la experiencia se acumula internamente).
- 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:
- Definir el tipo
:SHADOWenPBS/types.txt(ya viene incluido en La Base de Sky). - Definir los movimientos Shadow en
PBS/moves.txt(ya vienen incluidos). - Crear eventos donde los entrenadores enemigos tengan Pokémon Shadow que el jugador pueda capturar.
- 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
- Los Pokémon Oscuros no pueden ser intercambiados hasta que sean purificados.
- Los Pokémon Oscuros no pueden participar en la Battle Frontier ni en competiciones similares.
- El Medidor de Corazón se reduce más rápido si el Pokémon Oscuro es del primer slot del equipo.
- Un Pokémon Oscuro purificado puede aprender un movimiento especial exclusivo que no podría aprender de otra forma (configurable en el PBS).
- En la pantalla de resumen, los Pokémon Oscuros muestran su Medidor de Corazón en lugar de la barra de experiencia.
- El sistema es completamente opcional: si no creas Pokémon Shadow en tu juego, el sistema nunca se activa.