Files
mod_stat_checks/docs/ru.md
T

86 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.