Gimnasio Pokémon
Los Gimnasios Pokémon son una parte fundamental de cualquier juego de la saga. En Pokémon Essentials, configurar un gimnasio implica crear el mapa del gimnasio, definir al Líder como entrenador, programar el flujo de eventos (diálogos pre-batalla, combate y post-batalla), otorgar medallas y configurar los efectos que estas desbloquean. Esta guía cubre todos los aspectos necesarios para implementar gimnasios completos y funcionales.
Estructura general de un Gimnasio
Un gimnasio en Essentials se compone de los siguientes elementos:
- Mapa del gimnasio: un mapa de RPG Maker XP dedicado al interior del gimnasio.
- Entrenadores secundarios: los entrenadores que el jugador debe derrotar antes de llegar al Líder (opcionales).
- Líder de gimnasio: un evento NPC configurado como entrenador con un equipo fuerte.
- Puzle del gimnasio: un mecanismo opcional (interruptores, plataformas, teleportadores, etc.).
- Estatua del gimnasio: la placa informativa que se coloca en la entrada.
- Guía del gimnasio: el NPC que da consejos al jugador al entrar.
- Medalla: la recompensa que el jugador recibe al vencer al Líder.
Crear el mapa del Gimnasio
Para crear el mapa del gimnasio:
- En RPG Maker XP, crea un nuevo mapa con las dimensiones adecuadas. Un gimnasio típico puede ser de 15×20 o 20×25 tiles.
- Usa el tileset apropiado — Essentials incluye tilesets de interior de gimnasio. Puedes usar
Inside_gymo similares. - Diseña el suelo del gimnasio con el tipo temático del Líder (agua, fuego, roca, etc.).
- Coloca la plataforma del Líder al fondo del mapa.
- Diseña un camino principal desde la entrada hasta el Líder, con desvíos opcionales para entrenadores y el puzle.
Recuerda configurar los metadatos del mapa en el PBS map_metadata.txt. Un
gimnasio normalmente no necesita configuración especial de metadatos más allá de la música de fondo:
[MAP_ID]
Name = Gimnasio de Ciudad Ejemplo
MapPosition = 0,10,12
BattleBack = indoor
Configurar los metadatos del mapa
En el archivo map_metadata.txt, asegúrate de que el mapa del gimnasio tenga configurados los
campos necesarios. El campo BattleBack define el fondo de batalla dentro del gimnasio. Puedes usar
fondos estándar como indoor o crear un fondo personalizado para cada gimnasio temático.
Si tu gimnasio tiene música propia, configúrala con el campo MapWildBattleBGM o simplemente cambia
la BGM del mapa mediante un evento de Autorun al entrar.
Evento del Líder de Gimnasio
El Líder del gimnasio es un evento NPC que sigue un flujo de tres fases: pre-batalla, batalla y post-batalla. Esto se controla con un Self Switch (interruptor local).
Fase 1: Pre-batalla (Self Switch A = OFF)
En la primera página del evento, el Líder se presenta, habla sobre su tipo favorito y desafía al jugador:
# Evento del Líder - Página 1 (Sin condición)
# Gráfico: Sprite del Líder
# Trigger: Acción del jugador
pbMessage(_I("¡Bienvenido a mi gimnasio!"))
pbMessage(_I("Soy Petra, la Líder del Gimnasio de tipo Roca."))
pbMessage(_I("¡Veamos si puedes superar la solidez de mis Pokémon!"))
# Iniciar combate contra el entrenador
if pbTrainerBattle(:LEADER_Petra, "Petra", 0)
# Victoria del jugador
pbMessage(_I("¡Increíble! Has demostrado una gran fuerza."))
pbMessage(_I("Te has ganado la Medalla Roca."))
# Dar medalla
$game_switches[SW_BADGE_1] = true
pbReceiveBadge(1)
# Dar MT como recompensa
pbReceiveTM(:TM39)
pbMessage(_I("Esa MT contiene Tumba Rocas. ¡Úsala bien!"))
# Activar Self Switch para post-batalla
pbSetSelfSwitch(pbMapId, @event_id, "A", true)
else
# Derrota del jugador (el jugador pierde)
pbMessage(_I("Todavía te falta entrenamiento. ¡Vuelve cuando estés listo!"))
end
Fase 2: Post-batalla (Self Switch A = ON)
En la segunda página del evento (condición: Self Switch A = ON), el Líder tiene un diálogo diferente indicando que ya fue derrotado:
# Evento del Líder - Página 2 (Self Switch A = ON)
pbMessage(_I("¡Has demostrado ser un gran entrenador!"))
pbMessage(_I("La Medalla Roca te permite usar Corte fuera de combate."))
pbMessage(_I("Sigue adelante y conquista la Liga Pokémon."))
Otorgar medallas: pbReceiveBadge
El comando principal para otorgar una medalla es:
pbReceiveBadge(número_medalla)
Donde número_medalla es un valor entre 1 y 8 (o más, si has configurado medallas adicionales). Al
ejecutar este comando:
- Se muestra una animación de recepción de medalla.
- Se reproduce una fanfarria (jingle) de obtención de medalla.
- La medalla se registra en la Tarjeta de Entrenador del jugador.
- Se desbloquean los efectos asociados a esa medalla.
Para verificar si el jugador tiene una medalla específica:
# Comprobar si tiene la medalla 1
if $player.badge_count >= 1
pbMessage(_I("Ya tienes la primera medalla."))
end
# Comprobar una medalla específica
if $player.badges[0] # Medalla 1 (índice 0)
pbMessage(_I("Tienes la Medalla Roca."))
end
Efectos de las medallas
Las medallas tienen dos tipos de efectos principales en Pokémon Essentials:
1. Obediencia de Pokémon intercambiados
Los Pokémon obtenidos por intercambio solo obedecen al jugador si su nivel no supera el límite asociado a las medallas:
| Medallas | Nivel máximo de obediencia |
|---|---|
| 0 medallas | Nivel 10 |
| 1 medalla | Nivel 20 |
| 2 medallas | Nivel 30 |
| 3 medallas | Nivel 40 |
| 4 medallas | Nivel 50 |
| 5 medallas | Nivel 60 |
| 6 medallas | Nivel 70 |
| 7 medallas | Nivel 80 |
| 8 medallas | Todos los niveles |
Estos valores se configuran en el script Settings bajo la constante
BADGE_FOR_OBEDIENCE.
2. Uso de MOs/HMs fuera de combate
Cada medalla puede desbloquear el uso de un movimiento de campo (HM). La configuración se realiza en
Settings:
# En Settings
BADGE_FOR_CUT = 1 # Medalla necesaria para usar Corte
BADGE_FOR_FLASH = 2 # Medalla para Destello
BADGE_FOR_ROCKSMASH = 3 # Medalla para Golpe Roca
BADGE_FOR_SURF = 4 # Medalla para Surf
BADGE_FOR_FLY = 5 # Medalla para Vuelo
BADGE_FOR_STRENGTH = 6 # Medalla para Fuerza
BADGE_FOR_DIVE = 7 # Medalla para Buceo
BADGE_FOR_WATERFALL = 8 # Medalla para Cascada
Conteo de medallas
Puedes usar el conteo de medallas para controlar la progresión del juego:
# Obtener el número total de medallas
total = $player.badge_count
# Usar en condiciones
if $player.badge_count >= 4
pbMessage(_I("¡Tienes al menos 4 medallas! Puedes acceder a la Ruta 8."))
end
# Bloquear acceso sin suficientes medallas
if $player.badge_count < 3
pbMessage(_I("Necesitas al menos 3 medallas para pasar."))
exit
end
Estatua del Gimnasio
Las estatuas del gimnasio son los pilares decorativos que se colocan en la entrada. Para crear una estatua informativa:
# Evento de la Estatua - Trigger: Acción del jugador
# Gráfico: Objeto estático (pilar/estatua)
if $player.badges[0] # Si tiene la medalla de este gimnasio
pbMessage(_I("Gimnasio Pokémon de Ciudad Roca\\n" +
"Líder: Petra\\n" +
"Medalla Roca\\n" +
"\\\"La entrenadora sólida como la montaña\\\"\\n" +
"Superado por: " + $player.name))
else
pbMessage(_I("Gimnasio Pokémon de Ciudad Roca\\n" +
"Líder: Petra\\n" +
"Medalla Roca\\n" +
"\\\"La entrenadora sólida como la montaña\\\""))
end
NPC Guía del Gimnasio
El Guía del Gimnasio (Gym Guide) es un NPC clásico que aparece junto a la entrada y ofrece consejos al jugador:
# Evento del Guía - Página 1 (Self Switch A = OFF, antes de vencer al Líder)
pbMessage(_I("¡Hola! Este es el Gimnasio de tipo Roca."))
pbMessage(_I("Los Pokémon de tipo Agua y Planta tienen ventaja aquí."))
pbMessage(_I("Si tu equipo tiene esos tipos, ¡tienes buenas posibilidades!"))
# Evento del Guía - Página 2 (Self Switch A = ON, después de vencer al Líder)
pbMessage(_I("¡Enhorabuena! ¡Has conseguido la Medalla Roca!"))
pbMessage(_I("El siguiente gimnasio está en Ciudad Cascada."))
pbMessage(_I("¡Buena suerte en tu viaje!"))
El Self Switch A del Guía debe activarse al mismo tiempo que el del Líder. Puedes hacerlo desde el evento del Líder con:
# Desde el evento del Líder, activar el switch del Guía (evento ID 3, por ejemplo)
pbSetSelfSwitch(pbMapId, 3, "A", true)
Puzles de Gimnasio
Los puzles son opcionales pero añaden profundidad al gimnasio. Aquí algunos ejemplos clásicos:
Puzle de interruptores
Puertas que se abren al activar interruptores en el orden correcto:
# Evento del interruptor - Trigger: Acción del jugador
pbSEPlay("switch")
if $game_switches[100] == false
$game_switches[100] = true
pbMessage(_I("¡Has activado el interruptor! Una puerta se ha abierto."))
else
$game_switches[100] = false
pbMessage(_I("Has desactivado el interruptor. La puerta se ha cerrado."))
end
Puzle de suelo resbaladizo (hielo)
Usa el terreno de hielo que hace que el jugador se deslice en línea recta. Configura el tile de hielo con el
terrain tag correspondiente en el tileset. En La Base de Sky, el terrain tag para hielo resbaladizo es
:Ice.
Puzle de teleportadores
Plataformas que teletransportan al jugador a otra ubicación del mapa:
# Evento de teleportador - Trigger: Contacto del jugador
pbSEPlay("teleport")
$game_player.moveto(destino_x, destino_y)
$game_map.autoplay # Refrescar el mapa
Puzle de plataformas giratorias
Plataformas que empujan al jugador en una dirección al pisarlas. Se configuran con terrain tags específicos que asocian direcciones de movimiento automático.
Entrenadores del Gimnasio
Los entrenadores dentro del gimnasio se configuran como cualquier otro entrenador NPC. Cada uno debe tener su propio Self Switch para no repetir el combate:
# Evento del Entrenador del Gimnasio
# Página 1 (Self Switch A = OFF) - Trigger: Contacto del jugador
# Gráfico: Sprite del entrenador mirando hacia el jugador
# Vista: detectar al jugador a distancia
pbTrainerIntro(:COOLTRAINER_M)
pbNoticePlayer(get_self)
pbMessage(_I("¡No pasarás sin pelear conmigo!"))
if pbTrainerBattle(:COOLTRAINER_M, "Carlos", 0)
pbMessage(_I("¡Eres fuerte! El Líder te espera al fondo."))
end
pbTrainerEnd
pbSetSelfSwitch(pbMapId, @event_id, "A", true)
# Página 2 (Self Switch A = ON)
pbMessage(_I("El Líder del gimnasio es muy fuerte. ¡Prepárate!"))
Múltiples Gimnasios
Para implementar los 8 gimnasios estándar (o más), sigue estos pasos:
- Crea un mapa independiente para cada gimnasio.
- Define un interruptor global (Game Switch) para cada medalla, o usa directamente el array
$player.badges. - Numera las medallas del 1 al 8 en orden de progresión.
- Cada Líder debe usar
pbReceiveBadge(N)con su número correspondiente. - Configura los bloqueos de ruta para que el jugador deba obtener medallas en orden.
Revancha con Líderes de Gimnasio
Si deseas permitir revanchas con los Líderes, consulta la página de Revanchas. La mecánica básica es agregar una tercera página al evento del Líder:
# Evento del Líder - Página 3 (después de cierto punto de la historia)
# Condición: Game Switch [ELITE_FOUR_BEATEN] = ON
pbMessage(_I("¡Has vuelto! He entrenado mucho desde la última vez."))
pbMessage(_I("¿Te atreves a un combate de revancha?"))
if pbConfirmMessage(_I("¿Deseas luchar contra Petra?"))
if pbTrainerBattle(:LEADER_Petra, "Petra", 1) # Equipo 1 = equipo de revancha
pbMessage(_I("¡Sigues siendo increíble!"))
else
pbMessage(_I("¡Esta vez he ganado yo! Ven cuando quieras."))
end
end
Consejos y buenas prácticas
- Diseña cada gimnasio con una temática visual clara que refleje el tipo del Líder.
- Asegúrate de que el puzle sea resoluble sin necesidad de guía — evita puzles excesivamente crípticos.
- El equipo del Líder debe ser desafiante pero justo para el punto del juego en que se encuentra.
- Coloca un Pokémon Center cerca de cada gimnasio para que el jugador pueda curar su equipo.
- Incluye al menos un NPC fuera del gimnasio que dé pistas sobre el tipo del Líder.
- Considera dar una MT (TM) como recompensa adicional a la medalla, como en los juegos oficiales.
- Prueba exhaustivamente el flujo pre-batalla → batalla → post-batalla para evitar bugs con los Self Switches.