forked from Kekilla0/Personal-Macros
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCall_New.js
130 lines (129 loc) · 4.84 KB
/
Call_New.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*new call macro (removes need for about-time, use in base macros)
args[0] => actor
args[1] => {name , setAs} //Conditions
args[2] => {name , setAs} //Passive Effect
args[3] => {originalActordata, newActorData} //update actor data
args[4] => {data , data} //two data sets to compare
args[5] => time //Stored as seconds
*/
let log =(...args) => console.log("Call Macro | ", ...args);
log(`Passed Arguments :`);
for(let arg of args){if (arg !== "") log(arg);}
(async () => {
let message = "";
if(args[1] !== "" && args[1] !== undefined)
{
updateCondition(args[0]._id,args[1]).then (()=>{
message += `${args[0].name} : ${args[1].name} condition `;
if(args[1].setAs === true)
{
message+= "applied."
}else{
message+= "removed."
}
display(messsage);
});
if(args[5] !== "" && args[5] !== undefined && game.modules.get("about-time").active)
{
game.Gametime.doIn({seconds : args[5]}, () =>{
let message = "";
args[1].setAs = !args[1].setAs;
updateCondition(args[0]._id,args[1]).then (()=>{
message += `${args[0].name} : ${args[1].name} condition `;
if(args[1].setAs === true)
{
message+= "applied."
}else{
message+= "removed."
}
display(messsage);
});
});
}
}
if(args[2] !== "" && args[2] !== undefined)
{
updateEffect(args[0]._id,args[2]).then (()=>{
message += `${args[0].name} : ${args[2].name} effect `;
if(args[2].setAs === true)
{
message+= "applied."
}else{
message+= "removed."
}
display(message);
});
if(args[5] !== "" && args[5] !== undefined && game.modules.get("about-time").active)
{
game.Gametime.doIn({seconds : args[5]}, () =>{
let message = "";
args[2].setAs = !args[2].setAs;
updateEffect(args[0]._id,args[2]).then (()=>{
message += `${args[0].name} : ${args[2].name} condition `;
if(args[2].setAs === true)
{
message+= "applied."
}else{
message+= "removed."
}
display(messsage);
});
});
}
}
if(args[3] !== "" && args[3] !== undefined)
{
updateData(args[0]._id,args[3].newData).then ((result)=>{
message += `${args[0].name} : actor data updated.`;
display(message);
});
if(args[5] !== "" && args[5] !== undefined && game.modules.get("about-time").active)
{
game.Gametime.doIn({seconds : args[5]}, () =>{
updateCondition(args[0]._id,args[3].original).then (()=>{
message += `${args[0].name} : ${args[3].name} actor data updated. `;
display(messsage);
});
});
}
}
})();
function display(data = ""){
if(data!=="")
{
ChatMessage.create({
user : game.user._id,
content : data,
speaker : speaker,
whisper : game.users.entities.filter(u=>u.isGM).map(u=>u._id)
});
}
}
async function updateCondition(_id,condition){
if(_id === "") return false;
if(condition === "") return false;
if(!game.modules.get("combat-utility-belt").active) return ui.notifications.warn(`CUB isnt loaded`);
let actor = game.actor.find(i=>i._id===_id);
if(condition.setAs){
game.cub.applyCondition(condition.name,actor.getActiveTokens());
}else{
game.cub.removeCondition(condition.name,actor.getActiveTokens());
}
return true;
}
async function updateEffect(_id = "", effect= ""){
if(_id === "") return false;
if(effect === "") return false;
if(!game.modules.get("dynamiceffects").active) return ui.notification.warn (`Dynamic Effects isnt loaded`);
DynamicEffects._toggleActorIdEffect(_id,effect.name,"",effect.setAs);
return true;
}
async function updateData (_id = "",data = ""){
if (_id === "") return false;
if (data === "") return false;
let actor = game.actors.find(i=>i._id===_id);
await actor.update(data);
log("Actor after update : ", actor);
}
/* Check Change Function
checks for a change in a data structure and returns the data.*/