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.
|
||||
* Règle simplifiée : niveau × 2, plafonné à 10.
|
||||
* Calcule la réserve max selon le nombre de membres (personnages).
|
||||
* Règles p. 68-69 : la Réserve débute à 3D et gagne 1D par personnage,
|
||||
* avec un maximum de 10D.
|
||||
*/
|
||||
_calculateGroupReserve() {
|
||||
const level = this.level?.value || 1
|
||||
this.reserve.max = Math.min(10, level * 2)
|
||||
const members = Array.isArray(this.members) ? this.members : []
|
||||
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) {
|
||||
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 */
|
||||
/* -------------------------------------------- */
|
||||
|
||||
Reference in New Issue
Block a user