Files
test_tube_merchant/macross/macro.js
T
shiranui e21d8c5198
Build release archive / release (push) Failing after 28s
Релиз v1.2.9
Изменено:
 - Поддержка новых типов товаров: "Механические приспособления" и "Религиозные товары".
 - Добавлена возможность случайной генерации уровня торговца.
 - Улучшена производительность при загрузке предметов из компендиумов.
 - Обновлены тексты описаний для категорий товаров.
 - Исправлена ошибка при добавлении предметов к торговцу (см. `module/data.mjs`, строки 2436-2446).
 - Исправлена проблема с отображением характеристик торговца в интерфейсе.
2026-07-15 19:42:45 +03:00

65 lines
2.2 KiB
JavaScript
Executable File

// Макрос для обновления флагов во всех сущностях мира
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();