// Макрос для обновления флагов во всех сущностях мира const OLD_FLAG = 'Test Tube Merchant'; const NEW_FLAG = 'test_tube_merchant'; async function updateFlags() { let updates = []; let processed = 0; let updated = 0; // Обновляем всех акторов в мире for (let actor of game.actors) { let itemsToUpdate = actor.items.filter(i => i.flags?.[OLD_FLAG]); for (let item of itemsToUpdate) { let flags = duplicate(item.flags); if (flags[OLD_FLAG]) { flags[NEW_FLAG] = flags[OLD_FLAG]; delete flags[OLD_FLAG]; updates.push({ _id: item.id, flags: flags, 'flags.-=Test Tube Merchant': null }); updated++; console.log(item); } processed++; } if (updates.length) { await actor.updateEmbeddedDocuments("Item", updates); updates = []; } } // Обновляем все компендиумы for (let pack of game.packs) { if (pack.documentName === "Item") { const items = await pack.getDocuments(); updates = []; for (let item of items) { if (item.flags?.[OLD_FLAG]) { let flags = duplicate(item.flags); flags[NEW_FLAG] = flags[OLD_FLAG]; delete flags[OLD_FLAG]; updates.push({ _id: item.id, flags: flags, 'flags.-=Test Tube Merchant': null }); updated++; console.log(item); } processed++; } if (updates.length) { await pack.updateDocuments(updates); } } } // Выводим статистику ui.notifications.info(`Обработано ${processed} предметов, обновлено ${updated} флагов.`); } // Запускаем обновление updateFlags();