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 — общая платформа для всех боёв
Turn Battle Base — это то общее, что есть у всех пошаговых боёв в коллекции: запуск боя из сценария, боевая сцена с фоном того места, где бой начался, экраны победы и поражения, опыт и добыча, статусные эффекты вроде оглушения — и выбор **боевой системы**. Как именно сражается игрок, платформа не решает: это задача мода боевой системы — **FF Battle** (меню команд) или **Card Battle** (карты, которые перетаскивают на цели).
## Две боевые системы, одна платформа
Один и тот же бой в RPG Plus — воин против волка в деревне — в обеих системах:
![Слева: FF Battle — волк вверху, маленькая карточка героя внизу слева, журнал боя справа. Справа: Card Battle — крупные карты персонажей, панель действий и кнопка End turn.](assets/two-cores.jpg)
Всё вокруг боя одинаковое: фон деревни, цифры волка, кнопки скорости **x1 / x4 / x8** в правом верхнем углу (они ускоряют анимации, а выбор запоминается) и то, что происходит после боя.
Свою систему игра выбирает настройкой коллекции `battle.core`; в RPG Plus это `ff_battle`. Без настройки берётся первая из установленных систем. В редакторе коллекций настройка называется «Боевая система».
## Как проходит бой
```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», кнопка Continue, герой с +24 и добыча — шкуры волка x2, монеты x8 и янтарь.](assets/victory.jpg)
- **Опыт.** Каждый побеждённый враг приносит свой `Level × Exp`, который поровну делится между теми, кто остался на ногах. Волк — 2-го уровня с `Exp` 12, итого **+24**.
- **Добыча.** Для каждого побеждённого врага разыгрывается его список `Loot`; предметы сразу попадают в инвентарь.
- **Continue** возвращает в сцену, откуда пришёл бой. Потерянное в бою здоровье не восстанавливается.
Если падает весь отряд, экран поражения предлагает только **Main menu** — без опыта и без добычи.
![Экран поражения: надпись «Defeat» на тёмно-красной луже и кнопка Main menu.](assets/defeat.jpg)
## Запуск боя из сценария
```scenario
action battle.init scene=town_entry enemies=wolf_1,wolf_2 quest_id=MeetingMurakamiQuest new_tag=wolf_battle
switch_scene Battle
end
```
- `enemies` — id персонажей через запятую; один и тот же id дважды — это два врага.
- `scene` — сцена, в которую игра вернётся после победы.
- `quest_id`, `new_tag` (необязательные) — привязывают бой к заданию и помечают его тегом (уведомление в журнале).
- Фон боя — тот, что показан в этот момент, поэтому задайте его до `battle.init`.
На тайловой карте вместо этого используйте `action rpg.battle enemies=rpg_wolf win_flag=rpg_wolf_dead` из мода RPG: отряд вернётся в ту же клетку карты, а при победе выставится флаг.
Команда `action battle.set_core core=card_battle` переключает боевую систему для последующих боёв.
## Враги, добыча и статусные эффекты в данных
Враги — обычные персонажи (см. Characters Engine). Добыча волка из RPG Plus:
```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` — вероятность в процентах; количество — случайное число от `MinCount` до `MaxCount` включительно.
**Статусные эффекты** — это сущности вида `status_effect`. Уже в платформе есть оглушение: персонаж пропускает свои ходы:
```json
{ "Id": "effect/physics/stun", "Icon": "characters/effects/stun", "Type": "Stun", "Duration": 3, "Actions": "basic/stun" }
```
Боевое действие, накладывающее эффект, может задать своё число ходов; длительность уменьшается в начале каждого хода.
## Авторам модов
Боевая система — мод, регистрирующий `IBattleCore` (и `IBattleAutoPlayable` для автоматических тестов). Её действия выполняются через исполнители платформы, поэтому мод вроде Battle Formulas добавляет новые виды действий сразу всем системам. Код может узнавать о конце боя через `BattleEndedEvent`, а о победе — через `IWingroundListener`; так работает Recruiting, предлагая побеждённым врагам место в отряде.
## Если что-то пошло не так
1. **У боя пустой фон.** `battle.init` выполнился раньше, чем у сцены появился фон.
2. **Открывается не та система.** Проверьте настройку игры `battle.core` и не переключал ли её какой-нибудь сценарий через `battle.set_core`.
3. **После победы нет опыта.** Враги с `Exp` 0 не дают опыта; павшие члены отряда его не получают.