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:
"noExp": Desactiva la ganancia de experiencia completamente durante la batalla."levelCap": Establece un nivel máximo. Si un Pokémon del jugador está al nivel del tope o por encima, no ganará experiencia.
La experiencia ganada se calcula con la fórmula estándar de Pokémon, que depende de:
- La experiencia base del Pokémon derrotado (definida en su especie).
- El nivel del Pokémon derrotado.
- Si el Pokémon que gana EXP participó en el combate o no (Repartir EXP).
- Bonificaciones como Huevo Suerte, Punt. Combate o si el Pokémon es de intercambio.
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 |