Desplazamiento

Esta página cubre todos los tipos de movimiento del jugador en Pokémon Essentials, incluyendo caminar, correr, usar la bicicleta, surfear y volar, así como mecánicas especiales de movimiento como saltos, tiles deslizantes y cintas transportadoras.

Tipos de movimiento

Caminar

El movimiento base del jugador. El jugador camina a velocidad normal usando las teclas de dirección. La velocidad de caminata se define en el módulo de Settings:

# Velocidad de movimiento del jugador
Settings::PLAYER_WALK_SPEED = 4

La velocidad se mide en una escala donde 4 es la velocidad estándar de caminar. Los valores posibles van de 1 (muy lento) a 6 (muy rápido).

Correr

El jugador puede correr manteniendo presionada la tecla de acción (por defecto Z o X) mientras se mueve, siempre que tenga las Zapatillas de Correr (Running Shoes).

# Dar las Zapatillas de Correr al jugador
$player.has_running_shoes = true

# Quitar las Zapatillas de Correr
$player.has_running_shoes = false

# Comprobar si las tiene
if $player.has_running_shoes
  pbMessage("¡Tienes las Zapatillas de Correr!")
end

En la Pantalla de Opciones, el jugador puede alternar entre:

Correr no está disponible en interiores de forma predeterminada. Esto se puede cambiar en los metadatos del mapa:

[012]
Name = Centro Comercial
CanRunInside = true

Bicicleta

La bicicleta permite al jugador moverse al doble de velocidad. Se activa desde el menú o con un objeto registrado.

# Dar la bicicleta al jugador
$player.has_bicycle = true

# Activar/desactivar la bicicleta por script
pbDismountBike    # Bajar de la bicicleta
pbMountBike       # Subir a la bicicleta
pbToggleBike      # Alternar

Restricciones

# Metadatos del mapa - Permitir bicicleta en interior
[015]
Name = Pista de Ciclismo
Bicycle = true
BicycleAlways = true  # Obliga a usar la bicicleta en este mapa

Surf

Permite al jugador moverse por agua. Se activa al interactuar con un tile de agua si un Pokémon del equipo conoce Surf y se tiene la medalla correspondiente.

# Comprobar si el jugador está surfeando
if $PokemonGlobal.surfing
  pbMessage("Estás surfeando.")
end

# Iniciar Surf por script (sin requerir Pokémon con Surf)
pbStartSurfing

Los tiles de agua deben tener el terrain tag Water para que Surf funcione.

Buceo (Diving)

El buceo permite al jugador sumergirse bajo el agua en tiles específicos. Funciona de forma similar a Surf:

# Tiles con terrain tag "DeepWater" permiten bucear
# El jugador necesita un Pokémon con el movimiento Buceo (Dive)

# Sumergirse por script
pbDive

# Emerger
pbSurfacing

El mapa submarino se configura en los metadatos del mapa con DiveMap:

[020]
Name = Ruta 124 (Submarino)
DiveMap = 19   # ID del mapa al que se emerge

Vuelo (Fly)

El movimiento Vuelo permite al jugador viajar instantáneamente a ciudades visitadas previamente desde el mapa regional.

# El jugador necesita un Pokémon con Vuelo y la medalla correspondiente
# Se activa desde el menú del equipo o el Mapa Regional

# Teletransportar al jugador con Vuelo por script
pbFlyToNewLocation

Los puntos de aterrizaje de Vuelo se definen en los metadatos del mapa con FlyPoint.

Pokémon Acompañante

La Base de Sky incluye la funcionalidad de Pokémon Acompañante (Following Pokémon), donde el primer Pokémon del equipo sigue al jugador por el mapa.

# Activar/desactivar Pokémon acompañante
$PokemonGlobal.follower_toggled = true   # Activar
$PokemonGlobal.follower_toggled = false  # Desactivar

# Comprobar si está activo
if $PokemonGlobal.follower_toggled
  pbMessage("Tu Pokémon te está siguiendo.")
end

Velocidad de movimiento

Las velocidades de movimiento del jugador se pueden configurar:

Modo Velocidad Descripción
Caminar 4 Velocidad base del jugador
Correr 5 Con Zapatillas de Correr activadas
Bicicleta 6 Velocidad máxima estándar
Surf 5 Moverse sobre agua
Buceo 4 Moverse bajo agua
# Cambiar la velocidad del jugador temporalmente
$game_player.move_speed = 5  # Más rápido
$game_player.move_speed = 3  # Más lento

Saltos y cornisas (Ledges)

Las cornisas son bordes que el jugador puede saltar en una dirección pero no escalar de vuelta. Se configuran con terrain tags:

# Terrain tags para cornisas:
# Ledge       → Cornisa que permite saltar hacia abajo
# LedgeLeft   → Saltar hacia la izquierda
# LedgeRight  → Saltar hacia la derecha

Cada dirección de cornisa tiene su propio terrain tag. El jugador realiza una animación de salto al pasar por encima.

Tiles especiales de movimiento

Tiles giratorios (Spinning Tiles)

Los tiles giratorios hacen que el jugador gire y sea lanzado en una dirección:

# Terrain tags para tiles giratorios:
# SpinLeft   → Gira y lanza hacia la izquierda
# SpinRight  → Gira y lanza hacia la derecha
# SpinUp     → Gira y lanza hacia arriba
# SpinDown   → Gira y lanza hacia abajo

El jugador gira en el lugar y luego se desliza en la dirección indicada hasta encontrar un obstáculo.

Hielo deslizante (Ice Sliding)

Los tiles de hielo hacen que el jugador se deslice en la dirección de movimiento hasta chocar con algo:

# Terrain tag para hielo deslizante:
# Ice → El jugador se desliza al pisar este tile

Para crear puzles de hielo, coloca tiles de hielo en un área y usa paredes, rocas u otros obstáculos para controlar el movimiento del jugador.

Cintas transportadoras (Conveyor Belts)

Las cintas transportadoras mueven automáticamente al jugador en una dirección:

# Se implementan generalmente con eventos
# Evento con trigger "Player Touch" o "Parallel Process"
pbSlideOnIce  # Método similar al hielo deslizante

# También se pueden crear con terrain tags personalizados
# definidos en el módulo GameData::TerrainTag

Las cintas transportadoras se diferencian del hielo en que tienen una dirección fija (no dependen de hacia dónde se mueve el jugador) y mueven al jugador continuamente mientras esté sobre ellas.

Sistema de Repelente

Los Repelentes reducen los encuentros salvajes al caminar. Essentials incluye tres tipos:

Objeto Pasos Descripción
Repelente 100 Evita Pokémon de nivel menor al primero del equipo
Superrepelente 200 Mayor duración que el Repelente básico
Máx. Repelente 250 La mayor duración disponible

El sistema de Repelente funciona comparando el nivel del primer Pokémon del equipo con el del Pokémon salvaje. Si el salvaje tiene un nivel menor, el encuentro no ocurre.

# Comprobar si un Repelente está activo
if $PokemonGlobal.repel > 0
  pbMessage("El repelente sigue activo: #{$PokemonGlobal.repel} pasos restantes.")
end

# Activar un Repelente por script (100 pasos)
$PokemonGlobal.repel = 100

Cuando el Repelente se agota, el juego pregunta automáticamente si deseas usar otro (si tienes más en la mochila).