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() {