fix: réserve de Groupe calculée selon les membres (3D + 1D/personnage)
- _calculateGroupReserve utilisait une règle simplifiée (niveau × 2) au lieu du nombre de personnages membres. Désormais max = 3 + membres (personnages uniquement), plafonné à 10D, conforme aux règles p. 68-69. - Un Groupe nouvellement créé démarre avec sa Réserve à son maximum.
This commit is contained in:
@@ -129,12 +129,14 @@ export default class VermineGroupData extends foundry.abstract.TypeDataModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calcule la réserve max en fonction du niveau du groupe.
|
* Calcule la réserve max selon le nombre de membres (personnages).
|
||||||
* Règle simplifiée : niveau × 2, plafonné à 10.
|
* Règles p. 68-69 : la Réserve débute à 3D et gagne 1D par personnage,
|
||||||
|
* avec un maximum de 10D.
|
||||||
*/
|
*/
|
||||||
_calculateGroupReserve() {
|
_calculateGroupReserve() {
|
||||||
const level = this.level?.value || 1
|
const members = Array.isArray(this.members) ? this.members : []
|
||||||
this.reserve.max = Math.min(10, level * 2)
|
const characterCount = members.filter((id) => game.actors?.get(id)?.type === "character").length
|
||||||
|
this.reserve.max = Math.min(10, 3 + characterCount)
|
||||||
|
|
||||||
if (this.reserve.value > this.reserve.max) {
|
if (this.reserve.value > this.reserve.max) {
|
||||||
this.reserve.value = this.reserve.max
|
this.reserve.value = this.reserve.max
|
||||||
|
|||||||
@@ -131,6 +131,15 @@ export const registerHooks = function () {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Un Groupe démarre avec une Réserve à son maximum (3D + 1D par membre).
|
||||||
|
Hooks.on("createActor", async function (actor) {
|
||||||
|
if (actor.type !== "group") return;
|
||||||
|
const reserve = actor.system?.reserve;
|
||||||
|
if (reserve && reserve.value === 0 && reserve.max > 0) {
|
||||||
|
await actor.update({ "system.reserve.value": reserve.max });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/* Combat Hooks */
|
/* Combat Hooks */
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|||||||
Reference in New Issue
Block a user