From d46b039a63b20a4e27de08222a5ebfab120c128e Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Thu, 2 Oct 2025 19:44:27 +0200 Subject: [PATCH] Ajout des saignements --- module/actor.js | 2 ++ module/actor/base-actor.js | 25 ++++++++++++++++++++++++- module/item/blessure.js | 3 +++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/module/actor.js b/module/actor.js index 1f4a34e1..9debfcdb 100644 --- a/module/actor.js +++ b/module/actor.js @@ -2917,7 +2917,9 @@ export class RdDActor extends RdDBaseActorSang { break case ITEM_TYPES.race: await this.onCreateOwnedRace(item, options, id) + break } + await super.onCreateItem(item, options, id) await item.onCreateItemTemporel(this); await item.onCreateDecoupeComestible(this); } diff --git a/module/actor/base-actor.js b/module/actor/base-actor.js index 18cc9640..3a71d922 100644 --- a/module/actor/base-actor.js +++ b/module/actor/base-actor.js @@ -10,6 +10,7 @@ import { RdDConfirm } from "../rdd-confirm.js"; import { RdDUtility } from "../rdd-utility.js"; import { SystemCompendiums } from "../settings/system-compendiums.js"; import { RdDItem } from "../item.js"; +import { STATUSES } from "../settings/status-effects.js"; export class RdDBaseActor extends Actor { @@ -47,6 +48,7 @@ export class RdDBaseActor extends Actor { static init() { Hooks.on("preUpdateItem", (item, change, options, id) => Misc.documentIfResponsible(item.parent)?.onPreUpdateItem(item, change, options, id)) Hooks.on("createItem", (item, options, id) => Misc.documentIfResponsible(item.parent)?.onCreateItem(item, options, id)) + Hooks.on("updateItem", (item, options, id) => Misc.documentIfResponsible(item.parent)?.onUpdateItem(item, options, id)) Hooks.on("deleteItem", (item, options, id) => Misc.documentIfResponsible(item.parent)?.onDeleteItem(item, options, id)) Hooks.on("updateActor", (actor, change, options, actorId) => Misc.documentIfResponsible(actor)?.onUpdateActor(change, options, actorId)) } @@ -243,7 +245,28 @@ export class RdDBaseActor extends Actor { } /* -------------------------------------------- */ async onPreUpdateItem(item, change, options, id) { } - async onCreateItem(item, options, id) { } + + async onCreateItem(item, options, id) { + switch (item.type) { + case ITEM_TYPES.blessure: + await this.changeBleedingState() + break + } + } + + async onUpdateItem(item, options, id){ + switch (item.type) { + case ITEM_TYPES.blessure: + await this.changeBleedingState() + break + } + } + + async changeBleedingState() { + const bleeding = this.itemTypes[ITEM_TYPES.blessure].find(it => it.isBleeding()) + await this.setEffect(STATUSES.StatusBleeding, bleeding ? true : false) + } + async onUpdateActor(update, options, actorId) { } async onDeleteItem(item, options, id) { if (item.isInventaire()) { diff --git a/module/item/blessure.js b/module/item/blessure.js index 74365fb0..ac282db3 100644 --- a/module/item/blessure.js +++ b/module/item/blessure.js @@ -209,6 +209,9 @@ export class RdDItemBlessure extends RdDItem { isCritique() { return this.system.gravite > 4 && this.system.gravite <= 6 } + isBleeding() { + return this.system.gravite > 2 && !this.system.premierssoins.done + } isMort() { return this.system.gravite > 6 }