Add mod documentation in seven languages

This commit is contained in:
cthangover committed 2026-10-29 09:26:17 +01:00
1 parent 0d806a842c
commit 91c9b6f630
26 files changed
+675 -8

No files matched your search

+85
View File
@@ -0,0 +1,85 @@
# Stat Checks — бросаем стат против сложности
Stat Checks добавляет к сценариям одну команду, `check`: взять стат персонажа, прибавить бросок кубика и бонус, сравнить сумму со сложностью и продолжить историю в зависимости от успеха или провала. Визуальная новелла уговаривает ею стражника, тайловая RPG выламывает ржавую дверь. Сами статы приносят Stats Engine и правила игры (в RPG Plus — Classic RPG Rules).
## В игре
В прологе RPG Plus на перекрёстке сидит странница. Один из ответов сам называет свою проверку — Харизма против 10:
![Перекрёсток в сумерках; вопрос «Что скажешь ей?» и два ответа: «Вежливо спросить дорогу [Харизма 10]» и «Молча пройти мимо».](assets/seer-choice.jpg)
После ответа бросок показывается одной строкой:
![Диалоговое окно со строкой «[Харизма: 11 против 10] Успех».](assets/check-line.jpg)
Герой здесь — бродяга 1-го уровня с Харизмой 8; на d20 выпало 3, поэтому в сумме 11 против 10 — успех. История идёт по ветке успеха: странница отдаёт герою оберег.
![Ветка успеха: «— Вежливый. Надо же. — Она бросает тебе оберег из клевера.](assets/check-branch.jpg)
С суммой меньше 10 в строке стояло бы *Провал*, и история ушла бы по другой ветке, где она отворачивается.
## Сценарий за этим
Из `rpg_plus_game/scenarios/rpg_plus/prologue.scenario` (строки сокращены):
```scenario
option "Вежливо спросить дорогу [Харизма 10]" -> :ask_way
option "Молча пройти мимо" -> :leave
:ask_way
check cha 10 who=rpg_hero else=snub -> :gift
:gift
text "— Вежливый. Надо же..."
action item.add id=classic/clover_charm
goto -> :leave
:snub
text "— Найдёшь сам..."
```
`check cha 10` бросает Харизму против сложности 10. При успехе переход к метке после стрелки, при провале — к метке из `else=`. Без `else=` провал просто продолжается следующей строкой.
## Команда check
```scenario
check <stat> <difficulty> [who=player] [dice=d20] [bonus=2] [else=label] [quiet=1] -> :label
```
- `<stat>` — id стата из игры, например `cha` или `str`.
- `<difficulty>` — число, которое нужно достичь: проверка успешна, когда сумма не меньше него.
- `who=` — id персонажа или `player` (по умолчанию).
- `dice=` — `d20`, `2d6`, `1d100` и так далее. `none` ничего не бросает: проверка превращается в простой порог — решает только стат, всегда одинаково. Удобно в новелле («достаточно ли смел»).
- `bonus=` — прибавляется к сумме; может быть отрицательным.
- `else=` — метка для провала.
- `quiet=1` — не показывать строку броска.
Сумма — это **стат + кубик + бонус**.
### Кубик по умолчанию
Без `dice=` проверка берёт настройку игры `checks.dice`, иначе `d20`. RPG Plus задаёт её в своей коллекции:
```json
"settings": { "checks.dice": "d20" }
```
Игра, которая хочет обойтись во всех проверках без случайности, ставит `"checks.dice": "none"`.
### Свой рассказ об исходе
После проверки бросок лежит в этих переменных диалога: `check_stat`, `check_value`, `check_roll`, `check_bonus`, `check_total`, `check_dc` и `check_result`. С `quiet=1` строка `ptext` может рассказать о нём словами истории:
```scenario
check str 14 quiet=1 else=stuck -> :open
:stuck
ptext "Ты выжимаешь все свои ${check_total}, но дверь держится."
```
Стандартная строка — ключ перевода `checks/line` (`[${check_stat}: ${check_total} против ${check_dc}] ${check_result}`); игра может переопределить его в своих файлах локализации.
## Если что-то пошло не так
1. **В сумме только кубик.** Id стата неверный, либо у персонажа нет такого стата.
2. **Результат всегда одинаковый.** У игры `checks.dice` равен `none`, либо в строке написано `dice=none`.
3. **Каша вместо кубика.** Неправильная запись `dice=` не ломает сцену, а просто ничего не бросает — проверка превращается в простой порог. Пишите кости как `d20`, `2d6`, `1d100`.