Фреймворки на коде
Рецепт: производная характеристика
Вычислите значение из других значений с помощью функции журнала.
Цель
Показать Ward, равный половине максимума HP с округлением вниз.
Что менять
Объявите функцию в схеме.
schemas/keeper.json
"ledgerFunctions": [
{
"id": "ward",
"name": "Ward",
"field": "ward",
"source": "rules/ward.ts"
}
]- Строки 19-22 field это хранимое значение, которое заполняет Ward.
rules/ward.ts
export function ward(currentValue: number, self: ElementRef): number {
const max_hp: number = element.var(self, "max_hp") as number;
return math.floor(max_hp / 2);
}- Строка 1 currentValue это значение на данный момент. Большинство производных значений его игнорируют.
- Строка 2 Прочитайте нужное с помощью element.var.
- Строка 3 Верните выведенное число.
Конструктор по-прежнему возвращает поле с начальным значением 0.
rules/keeper.ts
export function construct(
name: string,
max_hp: number,
): { name: string; max_hp: number; hp: number; ward: number } {
return { name: name, max_hp: max_hp, hp: max_hp, ward: 0 };
}- Строки 4-5 ward возвращается как 0. Функция журнала выводит его сразу после.
Проверьте
scenarios/new-keeper.json
"ledger": [{ "function": "ward", "currentValue": 0, "expected": 5 }]- Строка 6 Проверяет функцию: она начинает с 0 и должна вернуть 5.
Также добавьте ward в expectedValues в каждый сценарий для Keeper.

