From c9c86e8c5f8f9aa181d8efc80e0ee6e6dbdc5860 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnier Date: Fri, 10 Jul 2026 23:14:14 +0200 Subject: [PATCH] fix: sanitisation des formules de roll invalides au chargement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- module/documents/chat-message.mjs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/module/documents/chat-message.mjs b/module/documents/chat-message.mjs index d9f8b6c..43a6a38 100644 --- a/module/documents/chat-message.mjs +++ b/module/documents/chat-message.mjs @@ -1,10 +1,23 @@ 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) { const data = messageData.message const { default: HamalronTirageTarot } = await import("./tirage-tarot.mjs") if (this.rolls[0] instanceof HamalronTirageTarot) { const isPrivate = !this.isContentVisible - // _renderRollHTML va appeler render sur tous les rolls const rollHTML = await this._renderRollHTML(isPrivate) if (isPrivate) { data.flavor = game.i18n.format("CHAT.PrivateRollContent", { user: this.user.name })