Files
mod_battle_formulas/docs/ru.md
T

5.3 KiB
Raw Blame History

Battle Formulas — боевые навыки в виде данных

Battle Formulas позволяет записать боевое действие целиком в данных: сколько оно ранит или лечит — это формула от характеристик действующего и цели; действие может тратить ману, игнорировать щит или оглушать. Код не нужен, и один и тот же навык работает в обеих боевых системах — FF Battle и Card Battle. Таковы Power strike, Fireball, Heal и Guard break из Classic RPG Rules.

Кроме того, мод вычисляет боевые числа врагов из их характеристик и рисует запасы вроде маны полосками на боевых картах.

Формулы написаны на языке формул Stats Engine; боевые экраны принадлежат боевым системам. Этот мод — связующее звено между ними.

Навык шаг за шагом

Power strike из Classic RPG Rules:

{ "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), а также описание «Полный замах: полторы атаки и ещё немного от силы».

У воина из 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).

Щит волка (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.

Враги берут числа из своих характеристик

Здоровье волка 31, атака 7 и щит 2 нигде не записаны числами. RPG Plus даёт волку характеристики патчем:

{ "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:

"Values": [ "RequiredPoint=1", "Cost=mp:4", "Pierce=1", "Formula=a.mag * 2 + rand(1, 6)" ]

Если что-то пошло не так

  1. Навык делает 0. Какое-то имя в формуле — не характеристика игры (неизвестные имена считаются за 0), либо результат вышел отрицательным.
  2. Навык отклонён. Персонажу не хватило очков действий либо характеристики-запаса, указанной в Cost=.
  3. У врага числа из файла, а не из характеристик. У него нет Stats, Archetype или Traits.