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"
}
]- 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);
}- Línea 1 currentValue es el valor hasta ahora. La mayoría de los valores derivados lo ignoran.
- Línea 2 Lee lo que necesites con element.var.
- 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 };
}- 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 }]- 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.

