5.5 KiB
Turn Battle Base — la plataforma común de todos los combates
Turn Battle Base es lo que comparten todos los combates por turnos de la colección: iniciar un combate desde un escenario, la escena de batalla con el fondo del lugar donde empezó, las pantallas de victoria y derrota, la experiencia y el botín, los efectos de estado como el aturdimiento y la elección del sistema de combate. Cómo lucha el jugador no lo decide la plataforma: ese es el trabajo de un mod de sistema de combate, FF Battle (menú de comandos) o Card Battle (cartas que se arrastran sobre los objetivos).
Dos sistemas de combate, una plataforma
La misma pelea de RPG Plus — el guerrero contra un lobo en la aldea — en los dos sistemas:
Todo lo que rodea al combate es igual: el fondo de la aldea, los números del lobo, los botones de velocidad x1 / x4 / x8 arriba a la derecha (aceleran las animaciones, y la elección se recuerda) y lo que ocurre después.
Cada juego elige su sistema con el ajuste de colección battle.core; RPG Plus usa ff_battle. Sin ese ajuste se toma el primer sistema instalado. En el editor de colecciones el ajuste se llama «Sistema de combate».
Cómo se desarrolla un combate
scenario: battle.init / rpg.battle
|
v
battle scene: backdrop of the current place, party from the roster, enemies from their files
|
v
battle system (ff_battle or card_battle): player turn <-> enemy turn
| |
all enemies defeated party defeated
v v
Victory: experience, loot Defeat: Main menu
|
v
back to the scene the battle started from
Victoria y derrota
Cuando cae el último enemigo, la pantalla de victoria muestra la experiencia de cada miembro del grupo que siga en pie y el botín:
- Experiencia. Cada enemigo derrotado aporta su
Level × Exp, que se reparte a partes iguales entre quienes sigan en pie. El lobo es de nivel 2 conExp12: +24. - Botín. Para cada enemigo derrotado se tira su lista de
Loot; los objetos van directos al inventario. - Continue devuelve a la escena de la que salió el combate. La vida perdida en el combate sigue perdida.
Si cae todo el grupo, la pantalla de derrota solo ofrece Main menu: ni experiencia ni botín.
Iniciar un combate desde un escenario
action battle.init scene=town_entry enemies=wolf_1,wolf_2 quest_id=MeetingMurakamiQuest new_tag=wolf_battle
switch_scene Battle
end
enemies— ids de personajes separados por comas; el mismo id dos veces son dos enemigos.scene— la escena a la que volver tras la victoria.quest_id,new_tag(opcionales) — vinculan el combate a una misión y le ponen una etiqueta (una notificación en el diario).- El fondo del combate es el que se muestre en ese momento, así que defínelo antes de
battle.init.
Sobre un mapa de tiles usa en su lugar el action rpg.battle enemies=rpg_wolf win_flag=rpg_wolf_dead del mod RPG: el grupo vuelve a la misma casilla y, al ganar, se activa la bandera.
La acción action battle.set_core core=card_battle cambia el sistema de combate para los combates siguientes.
Enemigos, botín y efectos de estado en los datos
Los enemigos son personajes normales (véase Characters Engine). El botín del lobo de RPG Plus:
{
"Id": "rpg_wolf",
"Loot": [
{ "ItemId": "rpg_plus/wolf_pelt", "MinCount": 2, "MaxCount": 3, "Probability": 100 },
{ "ItemId": "money/coin", "MinCount": 8, "MaxCount": 14, "Probability": 100 }
]
}
Probability es un porcentaje; la cantidad es un número aleatorio entre MinCount y MaxCount, ambos incluidos.
Los efectos de estado son entidades de tipo status_effect. La plataforma trae de serie el aturdimiento: el personaje pierde sus turnos:
{ "Id": "effect/physics/stun", "Icon": "characters/effects/stun", "Type": "Stun", "Duration": 3, "Actions": "basic/stun" }
Una acción de combate que lo aplique puede fijar su propio número de turnos; las duraciones se descuentan al comienzo de cada turno.
Para autores de mods
Un sistema de combate es un mod que registra un IBattleCore (y IBattleAutoPlayable para las pruebas automáticas). Sus acciones pasan por los ejecutores de la plataforma, así que un mod como Battle Formulas añade nuevos tipos de acciones a todos los sistemas a la vez. El código puede reaccionar al final del combate con BattleEndedEvent y a la victoria con un IWingroundListener; Recruiting lo aprovecha para ofrecer un puesto en el grupo a los enemigos derrotados.
Si algo sale mal
- El combate sale con el fondo vacío.
battle.initse ejecutó antes de definir el fondo de la escena. - Se abre el sistema de combate equivocado. Revisa el ajuste
battle.coredel juego y si algún escenario lo cambió conbattle.set_core. - No hay experiencia tras la victoria. Los enemigos con
Exp0 no dan experiencia, y los miembros del grupo caídos tampoco reciben.


