Saltar al contenido principal

Code frameworks

Receta: una estadística derivada

Calcula un valor a partir de otros valores con una función del ledger.

Objetivo

Muestra un Ward que sea la mitad de los HP máximos, redondeada hacia abajo.

El cambio

Declara la función en el esquema.

schemas/keeper.json
  "ledgerFunctions": [
    {
      "id": "ward",
      "name": "Ward",
      "field": "ward",
      "source": "rules/ward.ts"
    }
  ]
  1. Líneas 19-22 field es el valor guardado que rellena 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. Línea 1 currentValue es el valor hasta ahora. La mayoría de los valores derivados lo ignoran.
  2. Línea 2 Lee lo que necesites con element.var.
  3. Línea 3 Devuelve el número derivado.

El constructor sigue devolviendo el campo, con un valor inicial de 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. Líneas 4-5 ward se devuelve como 0. La función del ledger lo deriva justo después.

Pruébalo

scenarios/new-keeper.json
  "ledger": [{ "function": "ward", "currentValue": 0, "expected": 5 }]
  1. Línea 6 Comprueba la función: parte de 0 y debe devolver 5.

Añade también ward a expectedValues en todos los escenarios del Keeper.

Siguiente