Files
mod_battle_formulas/docs/ru.md
T

65 lines
5.3 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.
# Battle Formulas — боевые навыки в виде данных
Battle Formulas позволяет записать боевое действие целиком в данных: сколько оно ранит или лечит — это **формула** от характеристик действующего и цели; действие может тратить ману, игнорировать щит или оглушать. Код не нужен, и один и тот же навык работает в обеих боевых системах — FF Battle и Card Battle. Таковы Power strike, Fireball, Heal и Guard break из Classic RPG Rules.
Кроме того, мод вычисляет боевые числа врагов из их характеристик и рисует запасы вроде маны полосками на боевых картах.
Формулы написаны на языке формул Stats Engine; боевые экраны принадлежат боевым системам. Этот мод — связующее звено между ними.
## Навык шаг за шагом
Power strike из Classic RPG Rules:
```json
{ "Id": "classic/power_strike", "Type": "ToEnemy",
"Values": [ "RequiredPoint=1", "Formula=a.atk * 1.5 + rand(0, a.str / 2)" ] }
```
В меню боя FF на карте видно формулу, а подсказкой служит описание навыка:
![Меню действий героя с выбранным Power strike; на карте — Target enemy, 1 AP и Formula a.atk * 1.5 + rand(0, a.str / 2), а также описание «Полный замах: полторы атаки и ещё немного от силы».](assets/formula-menu.jpg)
У воина из RPG Plus атака 12 и сила 9, поэтому удар наносит 12 × 1.5 = 18 плюс случайное от 0 до 4.5. В записанном здесь бою выпало 22:
![Журнал боя: Hero: Power strike → Wolf; Wolf's shield absorbed 2 · left 0; Power strike: Hero → Wolf · -20 HP; затем Defence волка, +4 DEF (всего 4).](assets/formula-log.jpg)
Щит волка (2) принял на себя первую часть — Power strike не игнорирует щиты, — и волк потерял 20 здоровья: с 31 до 11.
Та же карта в Card Battle:
![Карта действия Power strike в Card Battle: Target enemy, 1 AP, Formula a.atk * 1.5 + rand(0, a.str / 2), RequiredPoint 1.](assets/formula-card.jpg)
## Враги берут числа из своих характеристик
Здоровье волка 31, атака 7 и щит 2 нигде не записаны числами. RPG Plus даёт волку характеристики патчем:
```json
{ "Id": "rpg_wolf", "Stats": { "str": 5, "vit": 5, "agi": 7 } }
```
Когда начинается бой, мод считает лист волка по правилам Classic RPG Rules для его 2-го уровня: здоровье `12 + vit * 3 + level * 2` = 31, атака `str + level` = 7, защита `floor(vit / 2)` = 2. Враг без данных о характеристиках оставляет числа из своего файла персонажа.
## Значения действия-формулы
Сущность действия (вид `action`, см. Characters Engine) со значением `Formula=`:
- `Formula=` — величина; никогда не меньше 0. `a.` — действующий, `b.` — цель: любые их характеристики, а также `hp`, `hp_max`, `attack`, `defence`, `point`. Функции вроде `rand(lo, hi)`, `floor`, `min`, `max` приходят из Stats Engine.
- `Effect=damage` (по умолчанию) или `Effect=heal`.
- `Cost=mp:4` — тратит 4 из характеристики-запаса; если члену отряда её не хватает, действие отклоняется и ничего не тратится. Враги не платят ничего.
- `RequiredPoint=1` — очки действий, как в любой боевой системе.
- `Pierce=1` — игнорирует щит цели.
- `State=effect/physics/stun` вместе с `StateTurns=1` и `StateChance=35` — с шансом 35% вешает на цель статусный эффект на столько ходов.
- `Type` — `ToEnemy`, `ToSelf` или `ToAlias` (союзник), как у любого действия.
Например, Fireball из Classic RPG Rules:
```json
"Values": [ "RequiredPoint=1", "Cost=mp:4", "Pierce=1", "Formula=a.mag * 2 + rand(1, 6)" ]
```
## Если что-то пошло не так
1. **Навык делает 0.** Какое-то имя в формуле — не характеристика игры (неизвестные имена считаются за 0), либо результат вышел отрицательным.
2. **Навык отклонён.** Персонажу не хватило очков действий либо характеристики-запаса, указанной в `Cost=`.
3. **У врага числа из файла, а не из характеристик.** У него нет `Stats`, `Archetype` или `Traits`.