Add mod documentation in seven languages

This commit is contained in:
cthangover committed 2026-10-29 09:26:22 +01:00
1 parent 0a08384da2
commit e440f66405
26 files changed
+731 -10

No files matched your search

+97
View File
@@ -0,0 +1,97 @@
# Turn Battle Base — the platform under every battle
Turn Battle Base is what all turn-based battles in the collection share: starting a battle from a scenario, the battle scene with the backdrop of the place where it began, the victory and defeat screens, experience and loot, status effects such as stun, and the choice of a **battle system**. It does not decide how the player fights. That is the job of a battle system mod: **FF Battle** (a command menu) or **Card Battle** (cards dragged onto targets).
## Two battle systems, one platform
The same fight in RPG Plus — the warrior against a wolf in the village — in the two systems:
![Left: FF Battle — the wolf at the top, the hero's small card at the bottom left, a battle log on the right. Right: Card Battle — big character cards, an actions panel and an End turn button.](assets/two-cores.jpg)
Everything around the fight is the same: the village backdrop, the wolf's numbers, the speed buttons **x1 / x4 / x8** at the top right (they speed up the animations; the choice is remembered), and what happens after it.
A game chooses its system with the collection setting `battle.core`; RPG Plus uses `ff_battle`. Without the setting the first installed system is used. In the collection editor the setting is called *Battle system*.
## How a battle goes
```text
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
```
## Victory and defeat
When the last enemy falls, the victory screen shows each surviving party member's experience and the loot:
![The victory screen: "Victory", a Continue button, the Hero with +24, and the loot — wolf pelts x2, coins x8 and an amber.](assets/victory.jpg)
- **Experience.** Each defeated enemy gives its `Level × Exp`, shared equally among the party members still standing. The wolf is level 2 with `Exp` 12 — **+24**.
- **Loot.** Each defeated enemy rolls its `Loot` list; the items go straight into the inventory.
- **Continue** returns to the scene the battle came from. Health lost in battle stays lost.
If the whole party falls, the defeat screen offers only **Main menu**: no experience, no loot.
![The defeat screen: "Defeat" over a dark red puddle and a Main menu button.](assets/defeat.jpg)
## Starting a battle from a scenario
```scenario
action battle.init scene=town_entry enemies=wolf_1,wolf_2 quest_id=MeetingMurakamiQuest new_tag=wolf_battle
switch_scene Battle
end
```
- `enemies` — character ids, comma-separated; the same id twice gives two enemies.
- `scene` — the scene to return to after a victory.
- `quest_id`, `new_tag` (optional) — bind the battle to a quest and give it a tag (a journal notification).
- The backdrop is the background shown at that moment, so set it before `battle.init`.
On a tile map, use `action rpg.battle enemies=rpg_wolf win_flag=rpg_wolf_dead` from the RPG mod instead: it returns to the same map cell and sets the flag on victory.
`action battle.set_core core=card_battle` switches the battle system for the following battles.
## Enemies, loot and status effects in data
Enemies are ordinary characters (see Characters Engine). The loot of the RPG Plus wolf:
```json
{
"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` is a percentage; the count is a random number from `MinCount` to `MaxCount` inclusive.
**Status effects** are entities of kind `status_effect`. The platform brings stun — the character skips its turns:
```json
{ "Id": "effect/physics/stun", "Icon": "characters/effects/stun", "Type": "Stun", "Duration": 3, "Actions": "basic/stun" }
```
A battle action that applies it may set its own number of turns; durations count down at the start of each turn.
## For mod authors
A battle system is a mod that registers an `IBattleCore` (with `IBattleAutoPlayable` for the automatic tests). Its actions run through the platform's executors, so a mod such as Battle Formulas adds new kinds of actions to every system at once. Code can react to the end of a battle through `BattleEndedEvent` and to the victory through an `IWingroundListener`; Recruiting uses this to offer defeated enemies a place in the party.
## If something goes wrong
1. **The battle has an empty backdrop.** `battle.init` ran before the scene's background was set.
2. **The wrong battle system opens.** Check the game's `battle.core` setting, and whether a scenario switched it with `battle.set_core`.
3. **No experience after a victory.** Enemies with `Exp` 0 give none; party members who fell get none.