-
Notifications
You must be signed in to change notification settings - Fork 2
/
fvtt-Macro-token-items-updater-(CoC7).js
84 lines (73 loc) · 2.72 KB
/
fvtt-Macro-token-items-updater-(CoC7).js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//
// Token items updater (CoC7) v0.5
// By Viriato139ac, based on the code created for RQG by wake
//
const macroName = "Token items updater";
const macroVersion = "0.5";
const macroImage = "icons/sundries/books/book-worn-blue.webp";
updateTokenItems();
async function updateTokenItems() {
if (canvas.tokens.controlled.length === 0) {
ui.notifications.error(`No token selected`);
return;
}
let select = canvas.tokens.controlled;
let selected = select[0].actor;
const worldLanguage = game.settings.get("core", "language");
const updatesDocuments = [];
let updatedDocument;
let betterDocument;
// Skills
const skills = selected.items.filter(i => i.type === "skill");
for (const skill of skills) {
betterDocument = await game.system.api.cocid.fromCoCID(skill.flags?.CoC7?.cocidFlag?.id, worldLanguage);
if (betterDocument[0]) {
updatedDocument = {
_id: skill.id,
name: betterDocument[0].name,
system: {
skillName: betterDocument[0].system.skillName,
specialization: betterDocument[0].system.specialization,
description: {
value: betterDocument[0].system.description.value,
opposingDifficulty: betterDocument[0].system.description.opposingDifficulty,
pushedFaillureConsequences: betterDocument[0].system.description.pushedFaillureConsequences,
chat: betterDocument[0].system.description.chat,
keeper: betterDocument[0].system.description.keeper
}
}
}
//console.log(updatedDocument);
updatesDocuments.push(updatedDocument);
}
}
// Occupation
const occupations = selected.items.filter(i => i.type === "occupation");
for (const occupation of occupations) {
betterDocument = await game.system.api.cocid.fromCoCID(occupation.flags?.CoC7?.cocidFlag?.id, worldLanguage);
if (betterDocument[0]) {
updatedDocument = {
_id: occupation.id,
name: betterDocument[0].name
}
//console.log(updatedDocument);
updatesDocuments.push(updatedDocument);
}
}
// Weapons
const weapons = selected.items.filter(i => i.type === "weapon");
for (const weapon of weapons) {
betterDocument = await game.system.api.cocid.fromCoCID(weapon.flags?.CoC7?.cocidFlag?.id, worldLanguage);
if (betterDocument[0]) {
updatedDocument = {
_id: weapon.id,
name: betterDocument[0].name
}
//console.log(updatedDocument);
updatesDocuments.push(updatedDocument);
}
}
await selected.updateEmbeddedDocuments("Item", updatesDocuments);
ui.notifications.info(`Updated ${updatesDocuments.length} item names from ` + selected.name + ' (id: ' + selected.id + ')');
//console.log("updates", updatesDocuments);
}