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).
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:
"noExp": Desactiva la ganancia de experiencia completamente durante la batalla.- La experiencia se puede limitar adicionalmente mediante constantes en Settings como
SCALED_EXP_FORMULA.
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 |