Frameworks de code
Recette : une statistique dérivée
Calculez une valeur à partir d'autres valeurs avec une fonction de registre.
Objectif
Affichez un Ward égal à la moitié des PV maximum, arrondie à l'inférieur.
Le changement
Déclarez la fonction dans le schéma.
schemas/keeper.json
"ledgerFunctions": [
{
"id": "ward",
"name": "Ward",
"field": "ward",
"source": "rules/ward.ts"
}
]- Lignes 19-22 field est la valeur stockée que Ward remplit.
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);
}- Ligne 1 currentValue est la valeur actuelle. La plupart des valeurs dérivées l'ignorent.
- Ligne 2 Lisez ce dont vous avez besoin avec element.var.
- Ligne 3 Renvoie le nombre dérivé.
Le constructeur renvoie toujours le champ, avec une valeur de départ 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 };
}- Lignes 4-5 ward est renvoyé à 0. La fonction de registre le dérive juste après.
Testez-le
scenarios/new-keeper.json
"ledger": [{ "function": "ward", "currentValue": 0, "expected": 5 }]- Ligne 6 Vérifie la fonction : elle part de 0 et doit renvoyer 5.
Ajoutez aussi ward à expectedValues dans chaque scénario du Keeper.

