fix: sanitisation des formules de roll invalides au chargement

Les anciens messages d'initiative stockaient des formules comme
'3 de Bâton (3)' qui cassent Roll.parse(). Le override de
prepareDerivedData dans HamalronChatMessage valide chaque formule
via Roll.parse() et remplace par '1d6' si invalide.
This commit is contained in:
2026-07-10 23:14:14 +02:00
parent 6943a1f429
commit c9c86e8c5f
+14 -1
View File
@@ -1,10 +1,23 @@
export default class HamalronChatMessage extends ChatMessage { export default class HamalronChatMessage extends ChatMessage {
/** @override */
prepareDerivedData() {
if (this._source?.rolls) {
for (const r of this._source.rolls) {
try {
Roll.parse(r.formula || "1d6")
} catch (e) {
r.formula = "1d6"
}
}
}
super.prepareDerivedData()
}
async _renderRollContent(messageData) { async _renderRollContent(messageData) {
const data = messageData.message const data = messageData.message
const { default: HamalronTirageTarot } = await import("./tirage-tarot.mjs") const { default: HamalronTirageTarot } = await import("./tirage-tarot.mjs")
if (this.rolls[0] instanceof HamalronTirageTarot) { if (this.rolls[0] instanceof HamalronTirageTarot) {
const isPrivate = !this.isContentVisible const isPrivate = !this.isContentVisible
// _renderRollHTML va appeler render sur tous les rolls
const rollHTML = await this._renderRollHTML(isPrivate) const rollHTML = await this._renderRollHTML(isPrivate)
if (isPrivate) { if (isPrivate) {
data.flavor = game.i18n.format("CHAT.PrivateRollContent", { user: this.user.name }) data.flavor = game.i18n.format("CHAT.PrivateRollContent", { user: this.user.name })