diff --git a/assets/ui/fond_cadrille.jpg b/assets/ui/fond_cadrille.jpg deleted file mode 100644 index 558f357..0000000 Binary files a/assets/ui/fond_cadrille.jpg and /dev/null differ diff --git a/assets/ui/fond_cadrille2.jpg b/assets/ui/fond_cadrille2.jpg deleted file mode 100644 index 21edb28..0000000 Binary files a/assets/ui/fond_cadrille2.jpg and /dev/null differ diff --git a/lang/fr.json b/lang/fr.json index 562ce66..38af1f1 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -185,7 +185,7 @@ "puiser": "Puiser dans ses ressources", "puiserDesc": "Ignore tous les malus — coche 1 case de Spleen", "usedPuiser": "Ressources puisées — malus ignorés, +1 Spleen", - "autoSuccess": "Réussite automatique", + "situationMod": "Mod. de situation", "resistanceTest": "Test de résistance", "resistanceClickToRoll": "Lancer un test de résistance", "woundTaken": "Blessure cochée suite à l'échec" diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index 970a818..0e808c1 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -59,6 +59,10 @@ export class CelestopolRoll extends Roll { value: v, label: v > 0 ? `+${v}` : `${v}`, })) + const situationChoices = Array.from({ length: 17 }, (_, i) => { + const v = i - 8 + return { value: v, label: v > 0 ? `+${v}` : `${v}` } + }) const dialogContext = { actorName: options.actorName, @@ -79,6 +83,7 @@ export class CelestopolRoll extends Roll { weaponDegats, modifierChoices, aspectChoices, + situationChoices, fortuneValue, } @@ -108,6 +113,7 @@ export class CelestopolRoll extends Roll { const autoSucc = rawMod === "auto" const modifier = autoSucc ? 0 : (parseInt(rawMod ?? 0) || 0) const aspectMod = parseInt(wrap.querySelector('#aspectModifier')?.value ?? 0) || 0 + const situMod = parseInt(wrap.querySelector('#situationMod')?.value ?? 0) || 0 const useDestin = wrap.querySelector('#useDestin')?.checked const useFort = wrap.querySelector('#useFortune')?.checked const puiser = wrap.querySelector('#puiserRessources')?.checked @@ -128,7 +134,8 @@ export class CelestopolRoll extends Roll { const effWound = puiser ? 0 : woundMalus const effMod = puiser ? Math.max(0, modifier) : modifier const effAspect = puiser ? Math.max(0, aspectMod) : aspectMod - const totalMod = skillValue + effWound + effMod + effAspect + const effSit = puiser ? Math.max(0, situMod) : situMod + const totalMod = skillValue + effWound + effMod + effAspect + effSit let formula if (autoSucc) { @@ -146,7 +153,7 @@ export class CelestopolRoll extends Roll { if (previewEl) previewEl.textContent = formula } - wrap.querySelectorAll('#modifier, #aspectModifier, #useDestin, #useFortune, #puiserRessources, #corpsPnj') + wrap.querySelectorAll('#modifier, #aspectModifier, #situationMod, #useDestin, #useFortune, #puiserRessources, #corpsPnj') .forEach(el => { el.addEventListener('change', update) el.addEventListener('input', update) @@ -181,6 +188,7 @@ export class CelestopolRoll extends Roll { const autoSuccess = rollContext.modifier === "auto" const modifier = autoSuccess ? 0 : (parseInt(rollContext.modifier ?? 0) || 0) const aspectMod = parseInt(rollContext.aspectModifier ?? 0) || 0 + const situationMod = parseInt(rollContext.situationMod ?? 0) || 0 const useDestin = destGaugeFull && (rollContext.useDestin === true || rollContext.useDestin === "true") const useFortune = fortuneValue > 0 && (rollContext.useFortune === true || rollContext.useFortune === "true") const puiserRessources = rollContext.puiserRessources === true || rollContext.puiserRessources === "true" @@ -191,13 +199,14 @@ export class CelestopolRoll extends Roll { const effectiveMoon = isResistance ? false : rollMoonDie // Puiser dans ses ressources → ignorer tous les malus - const effectiveWoundMalus = effectivePuiser ? 0 : woundMalus - const effectiveModifier = effectivePuiser ? Math.max(0, modifier) : modifier - const effectiveAspectMod = effectivePuiser ? Math.max(0, aspectMod) : aspectMod + const effectiveWoundMalus = effectivePuiser ? 0 : woundMalus + const effectiveModifier = effectivePuiser ? Math.max(0, modifier) : modifier + const effectiveAspectMod = effectivePuiser ? Math.max(0, aspectMod) : aspectMod + const effectiveSituationMod = effectivePuiser ? Math.max(0, situationMod) : situationMod // Fortune : 1d8 + 8 ; Destin : 3d8 ; sinon : 2d8 const nbDice = (!isResistance && useDestin) ? 3 : 2 - const totalModifier = skillValue + effectiveWoundMalus + effectiveAspectMod + effectiveModifier + const totalModifier = skillValue + effectiveWoundMalus + effectiveAspectMod + effectiveModifier + effectiveSituationMod const formula = (!isResistance && useFortune) ? buildFormula(1, totalModifier + 8) : buildFormula(nbDice, totalModifier) @@ -219,6 +228,7 @@ export class CelestopolRoll extends Roll { difficultyValue: diffConfig.value, modifier: effectiveModifier, aspectMod: effectiveAspectMod, + situationMod: effectiveSituationMod, woundMalus: effectiveWoundMalus, autoSuccess, isResistance, diff --git a/templates/chat-message.hbs b/templates/chat-message.hbs index 475a689..518ddf4 100644 --- a/templates/chat-message.hbs +++ b/templates/chat-message.hbs @@ -63,6 +63,10 @@ {{#if (gt aspectMod 0)}}+{{else}}−{{/if}} ✦{{abs aspectMod}} {{/if}} + {{#if situationMod}} + {{#if (gt situationMod 0)}}+{{else}}−{{/if}} + ◈{{abs situationMod}} + {{/if}} = {{total}} diff --git a/templates/roll-dialog.hbs b/templates/roll-dialog.hbs index 0b54fe7..de6f42e 100644 --- a/templates/roll-dialog.hbs +++ b/templates/roll-dialog.hbs @@ -134,6 +134,16 @@ {{/unless}}{{!-- /isResistance --}} + {{!-- Modificateur de situation (-8 à +8) — tous les jets --}} +