メインコンテンツへスキップ

コードフレームワーク

レシピ: 派生ステータス

レジャー関数で、ほかの値から値を計算します。

目標

最大 HP の半分(小数点以下切り捨て)を Ward として表示します。

変更内容

スキーマで関数を宣言します。

schemas/keeper.json
  "ledgerFunctions": [
    {
      "id": "ward",
      "name": "Ward",
      "field": "ward",
      "source": "rules/ward.ts"
    }
  ]
  1. 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. 1 行目 currentValue はここまでの値です。ほとんどの派生値は使いません。
  2. 2 行目 必要な値は element.var で読みます。
  3. 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 };
}
  1. 4-5 行目 ward は 0 として返されます。そのあとすぐ、レジャー関数が値を導きます。

テストする

scenarios/new-keeper.json
  "ledger": [{ "function": "ward", "currentValue": 0, "expected": 5 }]
  1. 6 行目 関数を確認します。0 から始めて、5 を返す必要があります。

Keeper のすべてのシナリオの expectedValues にも ward を加えます。

次へ