Перейти к содержимому

Нотация формул

Формулы одинаково работают в поле ввода дайсницы и в формулах виджетов. Отличие одно: в формулах виджетов дополнительно доступны переменные в квадратных скобках — [str], [local-modifier]. Те же правила записи у листа персонажа D&D.

Запись кости — NdS: N костей по S граней. Если N не указано, кость одна.

Запись Что это
1d20, d20 одна двадцатигранная кость
2d6 две шестигранных
3к8, 1К12, 2D4 то же самое: буква кости — d, D, к или К
d% процентная кость, то же, что d100
dF кость Fate: −1, 0, +1

Количество и грани можно посчитать: (ceil([LVL]/2))d6, max(1,[WIS])d8, 1d(6+2). Посчитанное количество округляется вниз; если вышло меньше нуля — костей ноль. 0d6 — ноль костей, даёт 0.

Модификаторы пишутся сразу после кости или группы {…} латинскими буквами.

Запись Что делает Пример
khN, klN оставить N старших / младших 2d20kh1 — с преимуществом, 4d6kh3
dhN, dlN отбросить N старших / младших 4d6dl1
! взрыв: на максимуме добросить ещё кость 3d6!, 1d10!>=9
!!, !p взрыв в ту же кость; каждый доброс −1 2d6!!, 2d6!p
r, ro + условие перебрасывать; ro — один раз 1d20ro=1, 2d6r<2
u, uo перебрасывать повторы 4d6u
minN, maxN грань не ниже / не выше N 4d6min2, 4d6max3
cs, cf + условие какие грани — критический успех / провал 1d20cs=20cf=1, 1d100cs<=5
sa, sd отсортировать грани в расшифровке 4d6sd
условие подсчёт успехов: итог — сколько костей прошли условие, минус провалы f… 10d10>=8, 4d6>4f<3

Условие — =, != (или <>), >, <, >=, <= и число. Сброшенные кости в логе приглушены, в сообщениях Vortex и мессенджеров — зачёркнуты.

Действия: +, -, *, /, % (остаток), ^ (степень). Порядок обычный — скобки, степень, умножение и деление, сложение и вычитание:

  • 1d20 + 5, 2d6 - 1
  • (1d6 + 2) * 2 — скобки работают как в математике
  • -1d4, 2 * -1d4 — минус перед костью вычитает её
  • 1d6 / 2 — деление точное, итог броска округляется по правилам игры

Пробелы не важны: 1d20 + 5 — то же, что 1d20+5. Дробные числа пишутся через точку: 0.5. Типографские −, ×, ÷ понимаются как -, *, /.

Функции — имя вплотную к скобке:

Функция Что делает Пример
floor, ceil, round округление вниз / вверх / к ближайшему floor(4d10/3)
min, max меньшее / большее из значений max(4d6, 10), min([LVL], 5)
abs модуль abs(4d10-25)
pow, sqrt степень, корень pow(2d6, 2)
sign, exp, log, sin, cos, tan прочая математика

В квадратных скобках — значение другого поля: алиас ([str]), поле этого же виджета ([local-modifier]) или поле другого виджета. Регистр и пробелы по краям имени не важны: [str] — то же, что [STR]. Как называть поля и связывать виджеты — в разделе Формулы и переменные.

  • 1d20 + [str] — модификатор из поля с алиасом str
  • [[str]+1]d6 — квадратные скобки считаются изнутри наружу: [3+1] → 4, итог 4d6
  • [2d6] — кости внутри квадратных скобок бросаются сразу, когда виджет пересчитывается: в поле видно уже выпавшее число

Неизвестная переменная — ошибка, формула не бросается; в обычном текстовом поле на её месте выводится ~error~. Имя [composition] занято композицией.

Фигурные скобки бросают несколько формул вместе, к группе можно приписать модификатор:

  • {1d20, 1d20}kh1 — две d20, остаётся большая
  • {4d6, 2d6}>=6 — подсчёт успехов по частям
  • {1d12 (Надежда), 1d12 (Страх)} — у каждой части своя подпись, в логе она под чертой

if(условие, тогда, иначе) выбирает часть формулы — как в таблицах. Бросается только выбранная ветка, вложенность разрешена:

  • if([STR] >= 3, 2d6+3, 1d6)
  • if([a] > 0, if([b] > 0, 1d6, 1d4), 0)

В условии — числа, переменные, математика, сравнения = (или ==), !=, >, <, >=, <= и and, or, not. Ноль — «нет», любое другое число — «да». Кости в условии нельзя: if(1d20 > 10, …) — ошибка, условие должно сводиться к числу. В ветках кости любые.

Сравнение сразу после кости — это подсчёт успехов (10d10>=8), а не «да / нет». В другом месте формулы сравнение без if — ошибка.

Бросок можно подписать — подпись видна в логе и уходит в мессенджеры:

Где Пример Что значит
перед формулой Вдохновение барда 1d6 название броска; цифр в нём быть не должно
в скобках в конце 1d20+5 (Атака), 2d6+3 (Урон огнём) подпись броска
после # 1d100cs<=25 # Слишком медленный жест подпись до конца строки — так пишет Foundry VTT
у части группы {1d12 (Надежда), 1d12 (Страх)} подпись каждой части

Скобки в конце — подпись, только если внутри не формула: 1d20 + (1d6) — это математика.

Слова после формулы без скобок и без # (2d6 огонь) — ошибка.

Формула с ошибкой не бросается — вместо броска видна причина: неизвестная переменная, непарная скобка, лишние слова. Подсказка с диапазоном «среднее (мин–макс)» строится тем же разбором, что и бросок: если подсказка есть, бросок пройдёт.

Ограничения защищают от формул вроде 999999d6 в чужих листах: до 1000 символов, до 32 уровней скобок, до 1000 костей во всей формуле и до 100 добросов и перебросов на одну кость.

// и /* */ — не комментарии, а ошибка: подпись пишется после #.

Профиль бросков у Anima пока общий для всех систем:

  • Крит отмечается только тем, что задано в формуле: 1d20cs=20cf=1.
  • Преимущество и помеха пишутся в формуле: 2d20kh1, 2d20kl1, {…}kh1.
  • Итог не округляется — до двух знаков после точки: 1d6/2 может дать 1.5.

Если формула не считается или показывает ~error~, разбор типичных причин собран в Вопросах и ответах.