Clima

Pokémon Essentials incluye un sistema de clima que afecta tanto el aspecto visual del mundo como las batallas. El clima puede configurarse por mapa o cambiarse dinámicamente mediante scripts.

Tipos de clima

Essentials soporta los siguientes tipos de clima. Cada uno tiene efectos visuales en el mapa y efectos mecánicos en combate:

Clima ID interno Efecto visual Efecto en combate
Ninguno :None Sin efecto Sin efecto
Lluvia :Rain Gotas de lluvia en pantalla +50% daño Agua, -50% daño Fuego. Trueno tiene 100% de precisión
Lluvia intensa :HeavyRain Lluvia fuerte con niebla Los movimientos de Fuego fallan por completo. +50% daño Agua
Tormenta :Storm Lluvia con relámpagos Igual que Lluvia, con efectos visuales de rayos
Nieve :Snow Copos de nieve cayendo +50% Def. Especial de tipo Hielo
Ventisca :Blizzard Nieve intensa con viento Igual que Nieve. Ventisca tiene 100% de precisión. Daño gradual a no-Hielo
Tormenta de arena :Sandstorm Partículas de arena en pantalla +50% Def. Esp. de tipo Roca. Daño gradual a no-Roca/Acero/Tierra
Sol intenso :Sun Brillo solar intenso +50% daño Fuego, -50% daño Agua. Rayo Solar no necesita carga
Niebla :Fog Niebla que reduce la visibilidad Precisión reducida para ambos lados

Clima en los metadatos del mapa

Para asignar un clima predeterminado a un mapa, usa el campo Weather en el archivo PBS map_metadata.txt:

[010]
Name = Ruta Desierta
Weather = Sandstorm, 9

[015]
Name = Bosque Lluvioso
Weather = Rain, 5

[020]
Name = Montaña Nevada
Weather = Snow, 7

El formato es Weather = TIPO, INTENSIDAD donde:

Cambiar el clima por script

Puedes cambiar el clima en cualquier momento durante el juego usando scripts:

Establecer clima

# Establecer lluvia con intensidad 5
pbSetWeather(:Rain, 5)

# Establecer tormenta de arena con máxima intensidad
pbSetWeather(:Sandstorm, 9)

# Establecer sol intenso
pbSetWeather(:Sun, 7)

# Quitar el clima (volver a normal)
pbSetWeather(:None, 0)

Cambiar el clima con transición

# Cambiar gradualmente a lluvia (con animación de transición)
$game_screen.weather(:Rain, 5, 20)
# El tercer parámetro (20) es la velocidad de transición (frames)

Comprobar el clima actual

# Obtener el clima actual del mapa
clima_actual = $game_screen.weather_type

if clima_actual == :Rain
  pbMessage("Está lloviendo.")
elsif clima_actual == :Sandstorm
  pbMessage("Hay una tormenta de arena.")
elsif clima_actual == :None
  pbMessage("El cielo está despejado.")
end

Efectos del clima en combate

Cuando se inicia una batalla en un mapa con clima activo, ese clima se traslada automáticamente al combate. Los efectos en combate son:

Lluvia / Tormenta

Sol intenso

Tormenta de arena

Nieve / Ventisca

Efectos del clima en el mundo

Además de los efectos en combate, el clima puede afectar al mundo exterior:

Duración del clima

El clima configurado en los metadatos del mapa es permanente: se mantiene mientras el jugador esté en ese mapa. Si el jugador se va y regresa, el clima se restaura.

El clima establecido por script es temporal: se mantiene hasta que se cambie por otro script o el jugador entre a un mapa con clima diferente.

Clima con duración por turnos (en combate)

En combate, los movimientos que invocan clima (como Danza Lluvia, Día Soleado, etc.) duran 5 turnos por defecto. Con el objeto Roca Húmeda, Roca Caliente, Roca Suave o Roca Helada, la duración se extiende a 8 turnos.

# Duración del clima en combate (definido en Settings)
Settings::WEATHER_DURATION = 5         # Turnos normales
Settings::WEATHER_DURATION_EXTENDED = 8 # Con roca equipada

Clima primigenio

Los climas primigenios son versiones extremas de los climas estándar, introducidos en la Generación VI:

Clima primigenio ID interno Efecto especial
Lluvia intensa primigenia :HeavyRain Los movimientos de tipo Fuego fallan completamente. No se puede reemplazar por otro clima excepto otro primigenio.
Sol abrasador primigenio :HarshSun Los movimientos de tipo Agua fallan completamente. No se puede reemplazar por otro clima excepto otro primigenio.
Corriente de aire primigenia :StrongWinds Las debilidades del tipo Volador se anulan. Los movimientos supereficaces contra Volador pasan a ser normales.

Los climas primigenios están asociados a las habilidades de los Pokémon primigenios:

Estos climas no se pueden sobrescribir con movimientos como Danza Lluvia o Día Soleado mientras el Pokémon con la habilidad correspondiente esté en el campo. Solo desaparecen cuando el Pokémon sale del combate.

Establecer clima primigenio por script

# En el mapa (efecto visual)
pbSetWeather(:HeavyRain, 9)    # Lluvia intensa primigenia
pbSetWeather(:HarshSun, 9)     # Sol abrasador primigenio
pbSetWeather(:StrongWinds, 9)  # Corriente de aire primigenia

Ejemplo: Ruta con clima dinámico

Un ejemplo de un script que cambia el clima según la hora del día:

# En un evento Autorun (con switch para no repetir infinitamente)
if pbIsMorning?
  pbSetWeather(:Fog, 6)        # Niebla matutina
elsif pbIsDay?
  pbSetWeather(:Sun, 5)        # Sol durante el día
elsif pbIsAfternoon?
  pbSetWeather(:None, 0)       # Despejado por la tarde
else
  pbSetWeather(:Rain, 4)       # Lluvia nocturna
end
$game_switches[99] = true      # Evitar que se ejecute de nuevo