From 0b53b19cf8132e011d5f135570e10c742f64ace1 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnier Date: Sun, 29 Mar 2026 21:31:31 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20migration=20auto=20des=20items=20de=20ty?= =?UTF-8?q?pes=20obsol=C3=A8tes=20au=20d=C3=A9marrage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Hook 'ready' (GM uniquement) supprime les items dont le type n'est plus enregistré (ex: 'attribute' de l'ancienne version) - Évite l'erreur 'type X is not a valid type for Item Document class' Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- fvtt-celestopol.mjs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/fvtt-celestopol.mjs b/fvtt-celestopol.mjs index 2b8c900..2d15920 100644 --- a/fvtt-celestopol.mjs +++ b/fvtt-celestopol.mjs @@ -126,8 +126,35 @@ Hooks.once("ready", () => { if (game.socket) { game.socket.on(`system.${SYSTEM_ID}`, _onSocketMessage) } + + // Migration : supprime les items de types obsolètes (ex: "attribute") + if (game.user.isGM) { + _migrateObsoleteItems() + } }) +/** Supprime les items dont le type n'est plus reconnu par le système. */ +async function _migrateObsoleteItems() { + const validTypes = new Set(["anomaly", "aspect", "equipment", "weapon", "armure"]) + for (const actor of game.actors) { + const toDelete = actor.items + .filter(i => !validTypes.has(i.type)) + .map(i => i.id) + if (toDelete.length) { + console.warn(`${SYSTEM_ID} | Migration: suppression de ${toDelete.length} item(s) obsolète(s) sur ${actor.name}`, toDelete) + await actor.deleteEmbeddedDocuments("Item", toDelete) + } + } + // Items globaux (hors acteur) + const globalToDelete = game.items + .filter(i => !validTypes.has(i.type)) + .map(i => i.id) + if (globalToDelete.length) { + console.warn(`${SYSTEM_ID} | Migration: suppression de ${globalToDelete.length} item(s) global(aux) obsolète(s)`, globalToDelete) + await Item.deleteDocuments(globalToDelete) + } +} + /* ─── Handlebars helpers ─────────────────────────────────────────────────── */ function _registerHandlebarsHelpers() {