forked from public/foundryvtt-reve-de-dragon
Gestion des points de coeur
- Les suivants/compagnons/amoureux sont dans l'onglet description - si acteurs "liés", ils peuvent avoir des points de coeur - les jets de volonté peuvent être ajustés s'ils concernent un compagnon pour lequel on a du coeur - on peut ajouter des points de coeur (entre la gestion de Chateau dormant par le gardien et le jet de repos si ce mode est utilisé) - on peut retirer des points de coeur en perdant du moral (mêmes conditions) - on peut passer de tendres moments si les deux acteurs acceptent - les tendre moments font jouer un jet de moral adapté - on peut perdre un point de coeur suite à un tendre moment qui ne fait pas gagner de moral
This commit is contained in:
@ -1096,18 +1096,19 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
/* -------------------------------------------- */
|
||||
async moralIncDec(ajustementMoral) {
|
||||
if (ajustementMoral != 0) {
|
||||
ajustementMoral = Math.sign(ajustementMoral)
|
||||
let moral = Misc.toInt(this.system.compteurs.moral.value) + ajustementMoral
|
||||
if (moral > 3) { // exaltation
|
||||
const exaltation = Misc.toInt(this.system.compteurs.exaltation.value) + ajustementMoral;
|
||||
await this.updateCompteurValue('exaltation', exaltation);
|
||||
const startMoral = parseInt(this.system.compteurs.moral.value)
|
||||
const moralTheorique = startMoral + ajustementMoral
|
||||
if (moralTheorique > 3) { // exaltation
|
||||
const ajoutExaltation = moralTheorique - 3
|
||||
const exaltation = parseInt(this.system.compteurs.exaltation.value) + ajoutExaltation
|
||||
await this.updateCompteurValue('exaltation', exaltation)
|
||||
}
|
||||
if (moral < -3) { // dissolution
|
||||
const dissolution = Misc.toInt(this.system.compteurs.dissolution.value) - ajustementMoral;
|
||||
await this.updateCompteurValue('dissolution', dissolution);
|
||||
if (moralTheorique < -3) { // dissolution
|
||||
const ajoutDissolution = -3 - moralTheorique
|
||||
const dissolution = parseInt(this.system.compteurs.dissolution.value) + ajoutDissolution
|
||||
await this.updateCompteurValue('dissolution', dissolution)
|
||||
}
|
||||
moral = Math.max(-3, Math.min(moral, 3));
|
||||
await this.updateCompteurValue('moral', moral);
|
||||
await this.updateCompteurValue('moral', Math.max(-3, Math.min(moralTheorique, 3)));
|
||||
}
|
||||
return this.system.compteurs.moral.value;
|
||||
}
|
||||
@ -2634,6 +2635,7 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
/* -------------------------------------------- */
|
||||
static $transformSubActeurSuivant = (suivant, link) => {
|
||||
return mergeObject(RdDBaseActor.extractActorMin(suivant), {
|
||||
ephemere: !suivant.prototypeToken.actorLink,
|
||||
coeur: link.coeur ?? 0
|
||||
})
|
||||
};
|
||||
@ -2652,6 +2654,19 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
return undefined
|
||||
}
|
||||
|
||||
getPointsCoeur(actorId) {
|
||||
return this.getSuivant(actorId)?.coeur ?? 0;
|
||||
}
|
||||
|
||||
async setPointsCoeur(actorId, coeur) {
|
||||
const amoureux = this.getSuivant(actorId);
|
||||
if (amoureux) {
|
||||
const suivants = this.system.subacteurs.suivants;
|
||||
let newSuivants = [...suivants.filter(it => it.id != actorId), { id: actorId, coeur: coeur }]
|
||||
await this.update({ 'system.subacteurs.suivants': newSuivants });
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static $transformSubActeurVehicule = (vehicle, link) => {
|
||||
return mergeObject(RdDBaseActor.extractActorMin(vehicle), {
|
||||
|
Reference in New Issue
Block a user