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, 50

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

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

El formato es Weather = TIPO, PROBABILIDAD. La probabilidad es un porcentaje (0 a 100) que se comprueba al entrar a otro mapa; no es la intensidad visual. En la rutina de entrada, el juego aplica el clima seleccionado con intensidad 9 y sin transición.

Cambiar el clima por script

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

Establecer clima

# Establecer lluvia con intensidad 5
$game_screen.weather(:Rain, 9, 0)

# Establecer tormenta de arena con máxima intensidad
$game_screen.weather(:Sandstorm, 9, 0)

# Establecer sol intenso
$game_screen.weather(:Sun, 9, 0)

# Quitar el clima (volver a normal)
$game_screen.weather(:None, 0, 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

Al entrar a otro mapa, la rutina de La Base vuelve a calcular el clima según la probabilidad del metadato. Si no se activa, o el mapa no tiene clima configurado, usa :None.

El clima establecido por script permanece en pantalla hasta que otra llamada lo cambie o la rutina de entrada a otro mapa aplique el clima de sus metadatos.

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)
$game_screen.weather(:HeavyRain, 9, 0)    # Lluvia intensa primigenia
$game_screen.weather(:HarshSun, 9, 0)     # Sol abrasador primigenio
$game_screen.weather(:StrongWinds, 9, 0)  # 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?
  $game_screen.weather(:Fog, 9, 0)        # Niebla matutina
elsif pbIsDay?
  $game_screen.weather(:Sun, 9, 0)        # Sol durante el día
elsif pbIsAfternoon?
  $game_screen.weather(:None, 0, 0)       # Despejado por la tarde
else
  $game_screen.weather(:Rain, 9, 0)       # Lluvia nocturna
end
$game_switches[99] = true      # Evitar que se ejecute de nuevo