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:
2023-11-21 21:07:37 +01:00
parent 135546467d
commit 4a03c222d5
16 changed files with 347 additions and 45 deletions

View File

@ -16,13 +16,14 @@ import { RdDItem } from "./item.js";
import { RdDItemBlessure } from "./item/blessure.js";
import { RdDEmpoignade } from "./rdd-empoignade.js";
import { RdDBaseActorSangSheet } from "./actor/base-actor-sang-sheet.js";
import { ChatUtility } from "./chat-utility.js";
import { RdDCoeur } from "./coeur/rdd-coeur.js";
/* -------------------------------------------- */
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
export class RdDActorSheet extends RdDBaseActorSangSheet {
/** @override */
static get defaultOptions() {
@ -127,9 +128,13 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
})
this.html.find('.subacteur-coeur-toggle a').click(async event => {
const actorId = RdDSheetUtility.getEventItemData(event, 'actor-id')
const clickCoeurNombre = $(event.currentTarget).data("coeur-nombre")
this.toggleSubActeurCoeur(actorId, clickCoeurNombre)
const subActorIdactorId = RdDSheetUtility.getEventItemData(event, 'subactor-id')
const coeurNombre = $(event.currentTarget).data('coeur-nombre')
RdDCoeur.toggleSubActeurCoeur(this.actor.id, subActorIdactorId, coeurNombre)
})
this.html.find('.subacteur-tendre-moment').click(async event => {
const subActorId = RdDSheetUtility.getEventItemData(event, 'subactor-id')
RdDCoeur.startSubActeurTendreMoment(this.actor.id, subActorId)
})
this.html.find('.subacteur-open').click(async event => {
const subActorId = RdDSheetUtility.getEventItemData(event, 'subactor-id');
@ -297,10 +302,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
}
openSubActeur(actorId) {
let actor = game.actors.get(actorId);
if (actor) {
actor.sheet.render(true);
}
game.actors.get(actorId)?.sheet.render(true)
}
deleteSubActeur(actorId, li) {
@ -308,24 +310,12 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
const subActor = game.actors.get(actorId);
RdDUtility.confirmSubActeurDelete(this, subActor, li, () => {
console.log('Delete : ', subActor.id);
this.actor.removeSubActeur(subActor.id);
this.actor.deleteSubActeur(subActor.id);
RdDUtility.slideOnDelete(this, li);
});
}
}
toggleSubActeurCoeur(actorId, toggleCoeur) {
console.log(this.actor, 'toggleSubActeurCoeur', actorId, toggleCoeur)
const coeur = this.actor.getPointsCoeur(actorId)
if (toggleCoeur <= coeur) {
this.actor.jetDeMoral('malheureuse');
this.actor.setPointsCoeur(actorId, Math.max(0, coeur - 1))
}
else {
this.actor.setPointsCoeur(actorId, Math.min(4, toggleCoeur))
}
}
/* -------------------------------------------- */
async selectTypeOeuvreToCreate() {
let types = RdDItem.getTypesOeuvres();