Files
foundryvtt-reve-de-dragon/module/models/creature.mjs
T
fabres 84ce2f78d7 appv2: correction des éditeurs ProseMirror et scrollbar sur les fiches d'acteur
- Migration des fiches acteur V2 : racine <form> → <section>
  (DocumentSheetV2 encapsule déjà dans <form>, élimine les formulaires imbriqués)
- Ajout de submitOnChange: true sur la feuille de base acteur
  (nécessaire pour que les événements change des éditeurs déclenchent la mise à jour)
- Ajout de toggled=true + wrapper <fieldset><div><label> sur tous les formInput
  (comportement identique aux fiches d'objet)
- CSS : .window-content > section ajouté à côté de > form
  (évite la perte du flex layout et des scrollbar en passant de form à section)
- Modèles acteur : passage de StringField à HTMLField pour les champs
  description/notes/biographie/notesmj (permet le rendu ProseMirror)
- Ajout de systemFields dans le contexte _prepareContext()
2026-07-22 00:29:56 +02:00

49 lines
1.9 KiB
JavaScript

import { STRING, HTMLSTRING } from "../common/field-types.mjs";
import { statField, santeField, attributField, compteurField } from "./_actor-helpers.mjs";
const fields = foundry.data.fields;
export default class RdDModelCreature extends foundry.abstract.TypeDataModel {
static defineSchema() {
return {
carac: new fields.SchemaField({
taille: statField(10, "Taille"),
constitution: statField(10, "Constitution"),
force: statField(10, "Force"),
perception: statField(10, "Perception"),
volonte: statField(10, "Volonté"),
reve: statField(10, "Rêve"),
}),
sante: new fields.SchemaField({
vie: santeField(10, 10, "Vie"),
endurance: santeField(10, 10, "Endurance"),
bonusPotion: new fields.NumberField({ initial: 0, integer: true }),
}),
attributs: new fields.SchemaField({
plusdom: attributField(0, "+dom", true),
encombrement: attributField(0.0, "Encombrement", true),
vitesse: attributField(0, "Vitesse", false, true),
protection: attributField(0, "Protection naturelle", false),
}),
compteurs: new fields.SchemaField({
etat: compteurField(0, "Etat général"),
}),
description: new fields.HTMLField({ initial: "", ...HTMLSTRING }),
race: new fields.StringField({ initial: "", ...STRING }),
notesmj: new fields.HTMLField({ initial: "", ...HTMLSTRING }),
};
}
prepareDerivedData() {
const actor = this.parent;
this.sante.vie.max = Math.ceil((actor.getTaille() + actor.getConstitution()) / 2);
this.sante.vie.value = Math.min(this.sante.vie.value, this.sante.vie.max);
this.attributs.encombrement.value = actor.getEncombrementMax();
this.attributs.plusdom.value = actor.getBonusDegat();
this.sante.endurance.max = actor.getEnduranceMax();
this.sante.endurance.value = Math.min(this.sante.endurance.value, this.sante.endurance.max);
}
}