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

Фреймворки на коде

Рецепт: вспомогательная функция

Используйте небольшое вычисление в одном файле правил.

Цель

Использовать одну функцию с ограничением вместо повторения math.min.

Что менять

rules/heal.ts
function capped(value: number, limit: number): number {
  return math.min(value, limit);
}

export function heal(self: ElementRef, amount: number): void {
  const hp: number = element.var(self, "hp") as number;
  const max_hp: number = element.var(self, "max_hp") as number;
  if (hp < max_hp) {
    ledger.set(self, "hp", capped(hp + amount, max_hp));
  }
}
  1. Строки 1-3 У вспомогательной функции нет export.
  2. Строка 9 Вызывайте её по имени из того же файла.

Файл, экспортирующий больше одной функции, отклоняется, если каждый экспорт не объявлен для этого файла как идентификатор действия или функции журнала.

functions but only the action heal uses it

Вспомогательная функция может только вычислять. Она не может вызывать ledger.set или ledger.add, а вспомогательная функция, которая пишет, отклоняется:

effectful action helpers are not supported until call-target provenance is enforced

Верните значение из вспомогательной функции и запишите его в действии. Страница «Написание правил» показывает два действия с одной общей вспомогательной функцией.

Проверьте

Вспомогательная функция не добавляет сценарий. Её проверяют сценарии действия, которое её использует.

Дальше