コードフレームワーク
レシピ: 派生ステータス
レジャー関数で、ほかの値から値を計算します。
目標
最大 HP の半分(小数点以下切り捨て)を Ward として表示します。
変更内容
スキーマで関数を宣言します。
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 を返す必要があります。
Keeper のすべてのシナリオの expectedValues にも ward を加えます。

