Fix: ajustements surprises

Affichage de l'image de la surprise
This commit is contained in:
2025-10-19 23:47:18 +02:00
parent 77f2de2c5f
commit 8f4df1af56
9 changed files with 58 additions and 26 deletions

View File

@@ -96,7 +96,7 @@ export class RollDialogAdapter {
rolled.niveauNecessaire = RdDResolutionTable.findNiveauNecessaire(rollData.selectedCarac.value, rolled.roll)
rolled.ajustementNecessaire = rolled.niveauNecessaire - diff
}
rollData.ajustements = rollData.ajustements.map(aj => { return { label: aj.label, value: aj.value } })
rollData.ajustements = rollData.ajustements.map(a => { return { label: a.label, value: a.value } })
}
static adjustDemiSurprise(rollData) {
@@ -165,8 +165,6 @@ export class RollDialogAdapter {
comp: attackerRoll.competence,
main: RdDItemArme.getMainAttaque(attackerRoll.competence),
equipe: attackerRoll.arme.system.equipe,
// carac: { key: caracCode, value: caracValue },
// dommagesArme: dommagesArme,
diff: attackerRoll.diffLibre,
particuliere: attackerRoll.particuliere,
tactique: RdDBonus.find(attackerRoll.tactique),

View File

@@ -1,6 +1,7 @@
import { RDD_CONFIG } from "../constants.js"
import { Misc } from "../misc.js"
import { ReglesOptionnelles } from "../settings/regles-optionnelles.js"
import { StatusEffects } from "../settings/status-effects.js"
import { demiReveStatusEffect, StatusEffects } from "../settings/status-effects.js"
import { ROLL_TYPE_ATTAQUE, ROLL_TYPE_DEFENSE } from "./roll-constants.mjs"
import { ROLLDIALOG_SECTION, RollPart } from "./roll-part.mjs"
@@ -40,28 +41,29 @@ export class RollPartSign extends RollPart {
const current = this.getCurrent(rollData)
current.armeDisparate = isCombat && current.armeDisparate
current.surprise = actor.getSurprise(isCombat) // TODO: could be from rollData.active.surprise??
current.reasons = actor.getEffects(it => StatusEffects.niveauSurprise(it) > 0).map(it => it.name)
current.reasons = actor.getEffects(it => StatusEffects.niveauSurprise(it) > 0)
.map(it => { return { img: it.img, label: game.i18n.localize(it.name) } })
current.diviseur = 1
if (current.surprise == 'demi') {
current.diviseur *= 2
}
if (isCombat && actor.isDemiReve()) {
current.reasons.push('Demi-rêve en combat')
current.reasons.push({ img: RDD_CONFIG.icons.demiReve, label: 'Demi-rêve en combat' })
}
if (this.isParadeArmeDisparate(current)) {
current.diviseur *= 2
current.reasons.push('Armes disparates')
current.reasons.push({ img: RDD_CONFIG.icons.armesDisparates, label: 'Armes disparates' })
}
if (this.isAttaqueFinesse(rollData)) {
current.diviseur *= 2
current.reasons.push('Particulière en finesse')
current.reasons.push({ img: RDD_CONFIG.particuliere.finesse.img, label: 'Particulière en finesse' })
}
if (!ReglesOptionnelles.isUsing('tripleSignificative')) {
current.diviseur = Math.min(current.diviseur, 4);
}
current.reason = current.reasons.join(', ')
current.reason = current.reasons.map(it => it.label).join(', ')
}
isAttaqueFinesse(rollData) {
@@ -76,8 +78,16 @@ export class RollPartSign extends RollPart {
const current = this.getCurrent(rollData)
if (current.surprise == 'demi') {
return [
{ label: 'Significative requise ' + Misc.getFractionOneN(current.diviseur) },
...current.reasons.map(it => { return { label: '<i class="fa-solid fa-triangle-exclamation"></i> ' + it } })
{
label: 'Significative requise ' + Misc.getFractionOneN(current.diviseur)
},
...current.reasons.map(it => {
return {
label: it.img
? `<img src="${it.img}"> ${it.label}`
: `<i class="fa-solid fa-triangle-exclamation"></i> ${it.label}`
}
})
]
}
return []

View File

@@ -30,7 +30,8 @@ export class RollPart {
rollData.selected[this.code] = {}
}
}
/** l'acteur actif du jet */
getActor(rollData) { return rollData.active.actor }
/** le conteneur de données du RollPart */
getRefs(rollData) {
return rollData.refs[this.code]