From 820a7d61cf4bd584e4676212bcdcedf97ba88fd2 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnier Date: Thu, 7 May 2026 00:14:20 +0200 Subject: [PATCH] Corrections sur focus --- modules/donjon-et-cie-actor.mjs | 13 +++++++++++++ modules/donjon-et-cie-rolls.mjs | 14 ++++++++++---- packs/system-help/{000040.log => 000004.log} | 0 packs/system-help/000005.ldb | Bin 0 -> 3056 bytes packs/system-help/LOG | 10 +++++----- packs/system-help/MANIFEST-000002 | Bin 0 -> 161 bytes 6 files changed, 28 insertions(+), 9 deletions(-) rename packs/system-help/{000040.log => 000004.log} (100%) create mode 100644 packs/system-help/000005.ldb create mode 100644 packs/system-help/MANIFEST-000002 diff --git a/modules/donjon-et-cie-actor.mjs b/modules/donjon-et-cie-actor.mjs index 35c3902..7b48475 100644 --- a/modules/donjon-et-cie-actor.mjs +++ b/modules/donjon-et-cie-actor.mjs @@ -29,6 +29,19 @@ export class DonjonEtCieActor extends Actor { } } + async _preUpdate(changed, options, user) { + if ( + foundry.utils.hasProperty(changed, "system.magie.focus.delta") + && !foundry.utils.hasProperty(changed, "system.magie.focus.resultat") + && !foundry.utils.hasProperty(changed, "system.magie.focus.sceneId") + ) { + foundry.utils.setProperty(changed, "system.magie.focus.resultat", 0); + foundry.utils.setProperty(changed, "system.magie.focus.sceneId", ""); + } + + return super._preUpdate(changed, options, user); + } + getCharacteristicEntries() { return DonjonEtCieUtility.getCharacteristicEntries(this.system); } diff --git a/modules/donjon-et-cie-rolls.mjs b/modules/donjon-et-cie-rolls.mjs index 994f269..ee72673 100644 --- a/modules/donjon-et-cie-rolls.mjs +++ b/modules/donjon-et-cie-rolls.mjs @@ -393,6 +393,7 @@ export class DonjonEtCieRolls { static async rollSpell(actor, item, { mode = "normal", favorKey = "" } = {}) { const characteristicKey = item.system.caracteristique || "intelligence"; const focus = await this.#ensureFocus(actor); + const currentSceneId = DonjonEtCieUtility.getCurrentSceneId(); const rank = Number(actor.system.anciennete?.rang ?? actor.system.sante?.dv ?? 0); const cost = Number(item.system.coutPv ?? 0); const autoDisadvantage = cost > rank; @@ -403,8 +404,13 @@ export class DonjonEtCieRolls { if (!result) return null; - const currentPv = Number(actor.system.sante?.pv?.value ?? 0); - const availableMagicHp = currentPv + focus.activeValue; + const liveActor = game.actors.get(actor.id) ?? actor; + const currentPv = Number(liveActor.system.sante?.pv?.value ?? 0); + const currentFocusSceneId = liveActor.system.magie?.focus?.sceneId ?? ""; + const currentFocusValue = currentFocusSceneId === currentSceneId + ? Number(liveActor.system.magie?.focus?.resultat ?? 0) + : 0; + const availableMagicHp = currentPv + currentFocusValue; if (cost > availableMagicHp) { ui.notifications.warn(game.i18n.localize("DNC.Warn.SpellInsufficientResources")); @@ -413,8 +419,8 @@ export class DonjonEtCieRolls { const characteristicShort = DONJON_ET_CIE.characteristics[characteristicKey]?.short ?? characteristicKey; const success = result.isNaturalTwenty ? false : result.success; - const focusSpent = result.isNaturalOne ? 0 : Math.min(cost, focus.activeValue); - const focusRemaining = Math.max(focus.activeValue - focusSpent, 0); + const focusSpent = result.isNaturalOne ? 0 : Math.min(cost, currentFocusValue); + const focusRemaining = Math.max(currentFocusValue - focusSpent, 0); const spentPv = result.isNaturalOne ? 0 : Math.max(cost - focusSpent, 0); const remainingPv = Math.max(currentPv - spentPv, 0); const updateData = {}; diff --git a/packs/system-help/000040.log b/packs/system-help/000004.log similarity index 100% rename from packs/system-help/000040.log rename to packs/system-help/000004.log diff --git a/packs/system-help/000005.ldb b/packs/system-help/000005.ldb new file mode 100644 index 0000000000000000000000000000000000000000..9911048f0ddc9330fc22df9c3e4ba61fd01cf864 GIT binary patch literal 3056 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 SvFraoH(c3wsK(#;;eP;G1iecD literal 0 HcmV?d00001 diff --git a/packs/system-help/LOG b/packs/system-help/LOG index bedbd32..77b6b27 100644 --- a/packs/system-help/LOG +++ b/packs/system-help/LOG @@ -1,5 +1,5 @@ -2026/05/03-21:49:37.907525 7f8d8a3ff6c0 Delete type=3 #1 -2026/05/03-21:49:37.915375 7f8d6bfff6c0 Level-0 table #5: started -2026/05/03-21:49:37.919396 7f8d6bfff6c0 Level-0 table #5: 3056 bytes OK -2026/05/03-21:49:37.925768 7f8d6bfff6c0 Delete type=0 #3 -2026/05/03-21:49:37.926041 7f8d6bfff6c0 Manual compaction at level-0 from '!journal!69Da9YvF9BfOV7oK' @ 72057594037927935 : 1 .. '!journal.pages!69Da9YvF9BfOV7oK.XM0eLkgKXPyskV65' @ 0 : 0; will stop at (end) +2026/05/07-00:10:15.348093 7f00437ef6c0 Delete type=3 #1 +2026/05/07-00:10:15.351196 7f00417eb6c0 Level-0 table #5: started +2026/05/07-00:10:15.354504 7f00417eb6c0 Level-0 table #5: 3056 bytes OK +2026/05/07-00:10:15.361308 7f00417eb6c0 Delete type=0 #3 +2026/05/07-00:10:15.361446 7f00417eb6c0 Manual compaction at level-0 from '!journal!69Da9YvF9BfOV7oK' @ 72057594037927935 : 1 .. '!journal.pages!69Da9YvF9BfOV7oK.XM0eLkgKXPyskV65' @ 0 : 0; will stop at (end) diff --git a/packs/system-help/MANIFEST-000002 b/packs/system-help/MANIFEST-000002 new file mode 100644 index 0000000000000000000000000000000000000000..6c12011b91dfd82f9fe5c4406e7f9a7316383f9f GIT binary patch literal 161 zcmWIhx#Ncn10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAe$kRS-TOEg7@3$k8JJmE z7>+e~Ow0gsS%6$N7AAHk)(_%}idp%kMR|!iie{EBiI$ONZkA4I{$b|%-i(Y4U|<1L ip;wTYo?48dPA|gOAk`;3-8&+nvN$`;%#@J{q7eWa)huTK literal 0 HcmV?d00001