Reglas de Combate

Las reglas de combate 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 combate, 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. Las reglas son case-insensitive (se convierten a minúsculas internamente).

Importante

Las reglas marcadas como "Solo con el DBK" requieren tener instalado el plugin Deluxe Battle Kit (no incluido en La Base de Sky). Usarlas sin el plugin generará el error: "La regla de combate X no existe."

Regla Valor Descripción Solo con el DBK
Tamaño de bandos
"single" Combate individual (1 vs 1).
"double" Combate doble (2 vs 2).
"triple" Combate triple (3 vs 3).
"1v1""3v3" Variantes asimétricas: "1v2", "2v1", "1v3", "3v1", "2v3", "3v2".
Visuales
"backdrop" / "battleback" String Define el fondo de batalla. Ejemplo: "city" usará battlebg_city.png.
"base" String Define la base (suelo) del campo de batalla.
"anims" Fuerza que se muestren las animaciones de ataque.
"noanims" Desactiva las animaciones de ataque para esta batalla.
Entorno, clima y terreno
"environment" / "environ" Símbolo Fuerza un tipo de entorno visual. Ejemplos: :Cave, :Grass, :Water.
"weather" Símbolo Establece el clima al inicio. Ejemplos: :Sun, :Rain, :Sandstorm, :Hail, :Snowstorm, :ShadowSky.
"terrain" Símbolo Establece el terreno al inicio. Ejemplos: :Electric, :Grassy, :Misty, :Psychic.
Acciones y cambios
"canRun" El jugador puede huir del combate (activado por defecto).
"cannotRun" El jugador no puede huir del combate.
"canSwitch" El jugador puede cambiar de Pokémon libremente (activado por defecto).
"cannotSwitch" El jugador no puede cambiar de Pokémon voluntariamente.
"switchStyle" Fuerza el estilo "Switch" (puede cambiar al debilitar a un enemigo).
"setStyle" Fuerza el estilo "Set" (no se permite cambiar al debilitar a un enemigo).
"disableBag" El jugador no podrá usar la mochila durante el combate.
"disablePokeBalls" Desactiva el uso de cualquier tipo de Poké Ball durante la batalla.
"autoBattle" El combate se realiza automáticamente sin intervención del jugador.
"noPartner" Elimina el compañero de batalla del jugador, incluso si tiene uno asignado.
Pokémon errantes
"roamerFlees" El Pokémon salvaje errante puede huir del combate.
Capturas
"certainCapture" La captura siempre tiene éxito al lanzar una Poké Ball.
"forceCatchIntoParty" El Pokémon capturado va directamente al equipo (no al PC).
Resultado y recompensas
"canLose" El jugador no pierde dinero ni se teletransporta al Centro Pokémon al perder. La batalla simplemente termina.
"cannotLose" Desactiva el comportamiento de canLose (el jugador será penalizado si pierde).
"outcome" / "outcomeVar" Variable Almacena el resultado en una variable del juego. 1 = victoria, 2 = derrota, 3 = huida, 4 = captura, 5 = empate.
"noExp" Los Pokémon del jugador no ganan experiencia tras la batalla.
"noMoney" No se gana ni se pierde dinero por el resultado de la batalla.
Requieren plugin Deluxe Battle Kit (DBK)
"towerBattle" Combate estilo torre: sin mochila y opción de rendirse.
"noBag" Impide usar la mochila (versión DBK, distinta de "disableBag" nativa).
"inverseBattle" La tabla de tipos se invierte (Planta débil a Agua, etc.).
"battleIntroText" String Texto personalizado al inicio del combate (sustituye "Un X salvaje apareció").
"opponentLoseText" String Texto al perder el oponente (sobreescribe el del PBS).
"opponentWinText" String Texto al ganar el oponente (requiere "towerBattle" activo).
"setSlideSprite" String Dirección de entrada del sprite enemigo: "side", "top", "bottom", "still". Se puede añadir "_hideBase" para ocultar la base.
"alwaysCapture" Captura siempre exitosa (versión DBK; nativa: "certainCapture").
"neverCapture" La captura siempre falla.
"tutorialCapture" Captura de tutorial: el Pokémon no se queda con el jugador ni se registra en la Pokédex.
"wildMegaEvolution" Permite Mega Evolución de Pokémon salvajes con megapiedra equipada.

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