feat: ajoute la règle Fortune dans les jets

Règle : si Fortune > 0, le joueur peut cocher 'Fortune' pour lancer
1d8 + 8 au lieu de 2d8 (contraint les probabilités vers le haut).

- character.mjs : passe fortuneValue dans roll.prompt()
- roll.mjs : checkbox Fortune, formule 1d8 + 8 + totalModifier si cochée
- roll-dialog.hbs : bloc Fortune (visible si fortuneValue > 0), preview mis à jour
- chat-message.hbs : affiche '+8' dans la zone dés, ligne formule avec badge Fortune
- roll.less : styles .form-fortune-row, .fl-mod.fortune, .fortune-fixed-badge
- lang/fr.json : Roll.fortune/fortuneBonus/fortuneFixed/usedFortune

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-03-29 20:08:06 +02:00
parent 79f961c4fa
commit 3cb31dfdef
6 changed files with 153 additions and 8 deletions

View File

@@ -38,6 +38,7 @@ export class CelestopolRoll extends Roll {
const skillValue = options.skillValue ?? 0
const woundLevelId = options.woundLevel ?? 0
const destGaugeFull = options.destGaugeFull ?? false
const fortuneValue = options.fortuneValue ?? 0
const woundLabel = woundLevelId > 0
? game.i18n.localize(SYSTEM.WOUND_LEVELS[woundLevelId]?.label ?? "")
: null
@@ -59,6 +60,7 @@ export class CelestopolRoll extends Roll {
destGaugeFull,
defaultRollMoonDie: options.rollMoonDie ?? false,
modifierChoices,
fortuneValue,
}
const content = await foundry.applications.handlebars.renderTemplate(
@@ -98,10 +100,15 @@ export class CelestopolRoll extends Roll {
const modifier = parseInt(rollContext.modifier ?? 0) || 0
const aspectMod = parseInt(rollContext.aspectModifier ?? 0) || 0
const useDestin = destGaugeFull && (rollContext.useDestin === true || rollContext.useDestin === "true")
const useFortune = fortuneValue > 0 && (rollContext.useFortune === true || rollContext.useFortune === "true")
const rollMoonDie = rollContext.rollMoonDie === true || rollContext.rollMoonDie === "true"
// Fortune : 1d8 + 8 ; Destin : 3d8 ; sinon : 2d8
const nbDice = useDestin ? 3 : 2
const totalModifier = skillValue + woundMalus + aspectMod + modifier
const formula = buildFormula(nbDice, totalModifier)
const formula = useFortune
? buildFormula(1, totalModifier + 8)
: buildFormula(nbDice, totalModifier)
// Jet du dé de lune séparé (narratif)
let moonDieResult = null
@@ -121,7 +128,8 @@ export class CelestopolRoll extends Roll {
modifier,
aspectMod,
useDestin,
nbDice,
useFortune,
nbDice: useFortune ? 1 : nbDice,
formula,
rollMode: rollContext.visibility ?? "publicroll",
rollMoonDie,
@@ -245,6 +253,7 @@ export class CelestopolRoll extends Roll {
aspectMod: this.options.aspectMod ?? 0,
skillValue,
useDestin: this.options.useDestin ?? false,
useFortune: this.options.useFortune ?? false,
nbDice: this.options.nbDice ?? diceResults.length,
woundMalus,
woundLabel,