feat: capacités de créature, blessures séquentielles et refonte fiche Groupe
- Nouvel item Capacité de créature (creaturecapacity) : DataModel, fiche AppV2, chat card, types Base/Survie/Cauchemar/Apocalypse, liste sur l'onglet Informations de la créature avec drag&drop et post au chat. - Blessures : coches séquentielles respectant la gravité (onClickWound), malus de blessure -1D/-2D/-3D appliqué aux jets (Règles p.42), montée en gravité automatique si les cercles sont pleins. - Fiche Groupe : objectifs majeurs/mineurs éditables, liste de membres simplifiée, notes de voyage (roadNotes), totem qui remplit instinct/interdits, refonte visuelle des onglets. - Créature : Réaction lançable, seuils/cercles de blessures corrigés (Taille cumulée, Groupe sans seuil), libellés Taille/Meute. - Corrections : icône de carte de chat plafonnée à 64px, slash orphelin d'entrave à 0, notes de matériel du Groupe éditable (formInput), bonus de Réaction non double-compté. - Divers : suppression des captures de débogage, licence README.
This commit is contained in:
+26
-23
@@ -130,8 +130,9 @@ export default class VermineCreatureData extends foundry.abstract.TypeDataModel
|
||||
// Vigueur : taille + meute
|
||||
this.computed.vigor = sizeVigor + (packConfig.damage || 0)
|
||||
|
||||
// Réaction : rôle
|
||||
this.computed.reaction = (roleConfig.reaction || 0) + (roleConfig.reaction_bonus || 0)
|
||||
// Réaction : rôle (le bonus de rôle est compté séparément et ajouté
|
||||
// comme réussites automatiques par le NpcRollDialog — cf. modèle PNJ).
|
||||
this.computed.reaction = roleConfig.reaction || 0
|
||||
this.computed.reactionBonus = roleConfig.reaction_bonus || 0
|
||||
|
||||
// Réserves
|
||||
@@ -146,8 +147,13 @@ export default class VermineCreatureData extends foundry.abstract.TypeDataModel
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcule les seuils de blessures à partir du patron, de la taille et de la meute.
|
||||
* Les seuils sont la somme des valeurs correspondantes des trois sources.
|
||||
* Calcule les seuils et les cercles de blessures à partir du patron, de la
|
||||
* taille et de la meute.
|
||||
*
|
||||
* Règles (regles_creatures.txt) :
|
||||
* - Seuil = contribution du Gabarit + contributions de Taille (cumulées).
|
||||
* Le Groupe n'ajoute PAS de seuil (tableau « Groupe » : cercles seuls).
|
||||
* - Cercles = cercles du Gabarit + cercles de Taille (cumulés) + cercles du Groupe.
|
||||
*/
|
||||
_calculateCreatureWoundThresholds() {
|
||||
const patternLevel = this.pattern?.value || 1
|
||||
@@ -159,30 +165,27 @@ export default class VermineCreatureData extends foundry.abstract.TypeDataModel
|
||||
|
||||
// Les modificateurs de Taille se cumulent (Taille N = somme des tailles 1..N).
|
||||
const sizeLevels = CONFIG.VERMINE.creatureSizeLevels || {}
|
||||
let sizeMinor = 0
|
||||
let sizeMajor = 0
|
||||
let sizeDeadly = 0
|
||||
const sizeThresholds = { minor: 0, major: 0, deadly: 0 }
|
||||
const sizeWounds = { minor: 0, major: 0, deadly: 0 }
|
||||
for (let i = 1; i <= sizeLevel; i++) {
|
||||
const cfg = sizeLevels[i] || {}
|
||||
sizeMinor += cfg.minorWound || 0
|
||||
sizeMajor += cfg.majorWound || 0
|
||||
sizeDeadly += cfg.deadlyWound || 0
|
||||
sizeThresholds.minor += cfg.minorThreshold || 0
|
||||
sizeThresholds.major += cfg.majorThreshold || 0
|
||||
sizeThresholds.deadly += cfg.deadlyThreshold || 0
|
||||
sizeWounds.minor += cfg.minorWound || 0
|
||||
sizeWounds.major += cfg.majorWound || 0
|
||||
sizeWounds.deadly += cfg.deadlyWound || 0
|
||||
}
|
||||
|
||||
this.minorWound.threshold = (patternConfig.minorWound || 0)
|
||||
+ sizeMinor
|
||||
+ (packConfig.minorWound || 0)
|
||||
this.majorWound.threshold = (patternConfig.majorWound || 0)
|
||||
+ sizeMajor
|
||||
+ (packConfig.majorWound || 0)
|
||||
this.deadlyWound.threshold = (patternConfig.deadlyWound || 0)
|
||||
+ sizeDeadly
|
||||
+ (packConfig.deadlyWound || 0)
|
||||
// Seuils : gabarit + taille cumulée (pas de contribution du groupe).
|
||||
this.minorWound.threshold = (patternConfig.minorThreshold ?? 0) + sizeThresholds.minor
|
||||
this.majorWound.threshold = (patternConfig.majorThreshold ?? 0) + sizeThresholds.major
|
||||
this.deadlyWound.threshold = (patternConfig.deadlyThreshold ?? 0) + sizeThresholds.deadly
|
||||
|
||||
// Max de blessures
|
||||
this.minorWound.max = Math.min(5, this.minorWound.threshold + 2)
|
||||
this.majorWound.max = Math.min(4, this.majorWound.threshold + 1)
|
||||
this.deadlyWound.max = Math.min(2, this.deadlyWound.threshold)
|
||||
// Cercles : gabarit + taille cumulée + groupe.
|
||||
this.minorWound.max = (patternConfig.minorWound ?? 0) + sizeWounds.minor + (packConfig.minorWound ?? 0)
|
||||
this.majorWound.max = (patternConfig.majorWound ?? 0) + sizeWounds.major + (packConfig.majorWound ?? 0)
|
||||
this.deadlyWound.max = (patternConfig.deadlyWound ?? 0) + sizeWounds.deadly + (packConfig.deadlyWound ?? 0)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user