Reglas de Batalla

Las reglas de batalla permiten personalizar las condiciones bajo las cuales se desarrolla un combate en Pokémon Essentials. Estas reglas se establecen antes de iniciar la batalla mediante la función setBattleRule y afectan aspectos como el número de Pokémon, las condiciones de derrota, el clima, etc.

La función setBattleRule

Para establecer una regla de batalla, se utiliza la función setBattleRule en un evento, justo antes de llamar al combate. La sintaxis es:

setBattleRule("regla", valor)

También se puede usar con un solo argumento para reglas booleanas:

setBattleRule("cannotRun")

Las reglas se aplican solo al siguiente combate y se borran automáticamente una vez que la batalla termina.

Ejemplo de uso

# Combate donde el jugador no puede perder ni huir
setBattleRule("canLose")
setBattleRule("cannotRun")
TrainerBattle.start(:RIVAL, "May")

Tabla de reglas disponibles

A continuación se listan todas las reglas que se pueden establecer con setBattleRule:

Regla Valor Descripción
"single" Fuerza un combate individual (1 vs 1).
"double" Fuerza un combate doble (2 vs 2).
"triple" Fuerza un combate triple (3 vs 3).
"canLose" El jugador no pierde dinero ni se teletransporta al Centro Pokémon al ser derrotado. La batalla simplemente termina.
"cannotRun" El jugador no puede huir del combate.
"cannotCapture" Prohíbe usar Poké Balls durante el combate (el menú de objetos no mostrará balls).
"roamerFlees" Número El Pokémon salvaje huirá después de la ronda indicada. Se usa para Pokémon errantes.
"levelCap" Número Establece un tope de nivel. Los Pokémon del jugador no ganarán experiencia por encima de este nivel durante el combate.
"weather" Símbolo Establece el clima al inicio de la batalla. Ejemplos: :Sun, :Rain, :Sandstorm, :Hail, :ShadowSky.
"terrain" Símbolo Establece el terreno al inicio de la batalla. Ejemplos: :Electric, :Grassy, :Misty, :Psychic.
"environ" Símbolo Fuerza un tipo de entorno visual para la batalla (afecta el fondo). Ejemplos: :Cave, :Grass, :Water.
"backdrop" String Define manualmente el fondo de batalla. Ejemplo: "city" usará battlebg_city.png.
"base" String Define la base (suelo) del campo de batalla. Ejemplo: "rocky" usará battlebase_rocky.png.
"outcome" Variable Almacena el resultado de la batalla en una variable del juego. 1 = victoria, 2 = derrota, 3 = huida, 4 = captura, 5 = empate.
"noMoney" No se gana ni se pierde dinero por el resultado de la batalla.
"switchStyle" Fuerza el estilo de cambio "Switch" (el jugador puede cambiar Pokémon al debilitar a un enemigo).
"setStyle" Fuerza el estilo de cambio "Set" (no se permite cambiar al debilitar a un enemigo).
"noExp" Los Pokémon del jugador no ganan experiencia tras la batalla.
"disablePokeBalls" Desactiva el uso de cualquier tipo de Poké Ball durante la batalla.
"battleBGM" String Establece la música de combate. Ejemplo: "Battle Elite".
"victorySE" / "victoryBGM" String Establece el efecto de sonido o música de victoria al ganar la batalla.

Tipos de combate

Los combates en Pokémon Essentials pueden ser de diferentes tipos según la cantidad de Pokémon activos:

Combate individual (Single)

El tipo de combate estándar. Cada bando tiene un Pokémon activo a la vez. Es el tipo por defecto si no se especifica otra cosa.

# Combate individual forzado
setBattleRule("single")
TrainerBattle.start(:POKEMONTRAINER, "Red")

Combate doble (Double)

Cada bando tiene dos Pokémon activos a la vez. Se activa automáticamente si el entrenador enemigo tiene al menos 2 Pokémon y el jugador también. Se puede forzar con la regla:

# Combate doble forzado
setBattleRule("double")
TrainerBattle.start(:POKEMONTRAINER, "Red")

En un combate doble, el jugador necesita al menos 2 Pokémon aptos para combatir. Si solo tiene 1, el combate será individual a menos que tenga un compañero de batalla.

Combate triple (Triple)

Cada bando tiene tres Pokémon activos. Este modo es menos común y puede requerir ajustes en la interfaz:

setBattleRule("triple")
TrainerBattle.start(:POKEMONTRAINER, "Red")

Pérdida de dinero al perder

Cuando el jugador pierde un combate contra un entrenador, pierde dinero según la siguiente fórmula:

Dinero perdido = Nivel del Pokémon de mayor nivel del jugador × multiplicador base del Rango

El multiplicador base depende de la cantidad de medallas del jugador:

Medallas Multiplicador
0 8
1 16
2 24
3 36
4 48
5 64
6 80
7 100
8+ 120

Si se usa la regla "canLose", no se pierde dinero y el jugador no es transportado al Centro Pokémon. Si se usa "noMoney", tampoco se pierde dinero pero el jugador sí es transportado a un Centro Pokémon.

Experiencia y nivel

Normalmente, al derrotar o capturar un Pokémon, los Pokémon del jugador ganan experiencia. Esto se puede modificar con las siguientes reglas:

La experiencia ganada se calcula con la fórmula estándar de Pokémon, que depende de:

Ajustes en Settings

En el archivo Settings del juego se pueden modificar varias constantes relacionadas con la experiencia:

# En Settings:
GAIN_EXP_FOR_CAPTURE       = true   # Ganar EXP al capturar
SPLIT_EXP_BETWEEN_GAINERS  = false  # Dividir EXP entre participantes
SCALED_EXP_FORMULA         = true   # Fórmula escalada (Gen 5/7+)
EXP_SHARE_USES_LEVEL_DIFF  = false  # Repartir EXP usa diferencia de nivel

Resultados de la batalla

Puedes almacenar el resultado de una batalla usando la regla "outcome":

setBattleRule("outcome", 1)  # Guarda resultado en variable 1
TrainerBattle.start(:POKEMONTRAINER, "Red")
# Después del combate:
if $game_variables[1] == 1
  pbMessage("¡Ganaste!")
elsif $game_variables[1] == 2
  pbMessage("Perdiste...")
end

Los valores posibles son:

Valor Resultado
1 Victoria del jugador
2 Derrota del jugador
3 El jugador huyó
4 Pokémon capturado (solo batallas salvajes)
5 Empate