Thank you, I replaced defineProperty and now it work. If you still want to see the full worker, here it is : let fields = [
'vehiclerangedweapons:V_R_weapon_dam-roll', 'vehiclerangedweapons:V_R_weapon_vengeful', 'vehiclerangedweapons:V_R_weapon_min', 'vehiclerangedweapons:V_R_weapon_max',
'rangedweapons:R_weapon_dam-roll', 'rangedweapons:R_weapon_vengeful', 'rangedweapons:R_weapon_min', 'rangedweapons:R_weapon_max',
'vehiclemeleeweapons:V_M_weapon_dam-roll', 'vehiclemeleeweapons:V_M_weapon_vengeful', 'vehiclemeleeweapons:V_M_weapon_min', 'vehiclemeleeweapons:V_M_weapon_max',
'meleeweapons:M_weapon_dam-roll', 'meleeweapons:M_weapon_vengeful', 'meleeweapons:M_weapon_min', 'meleeweapons:M_weapon_max',
];
on(fields.map(field => 'change:repeating_' + field).join(' '), (e) => {
// use regex to find repeating section ID
let id = /[a-z0-9_]*_-[a-z0-9]*[rvm_]*_/.exec(e.sourceAttribute);
// dice regex
let redice = /(\d+)(d\d+)((?:kh?\d+)?(?:kl\d+)?(?:dl?\d+)?(?:dh\d+)?(?:[\+|-]\d+)?)?/;
// transform lower case to upper case
let source = id[0].replace('v_', 'V_').replace('r_', 'R_').replace('m_', 'M_');
// to avoid retyping long strings because i'm lazy
var dam = source + 'weapon_dam-roll',
ven = source + 'weapon_vengeful', // crit
min = source + 'weapon_min', // proven
max = source + 'weapon_max'; // primitive
getAttrs([dam, ven, min, max], (v) => {
let dmg = redice.exec(v[dam])
ven = parseInt(v[ven], 10) || 0,
min = parseInt(v[min], 10) || 0,
max = parseInt(v[max], 10) || 0;
let dicenum = parseInt(dmg[1], 10) || 0,
dicetype = dmg[2],
mod = dmg[3];
let damTotal = '{';
for (var i = 0; i < dicenum; i++) {
if (i) damTotal += ', '
if (min) damTotal += '{';
if (max) damTotal += '{';
damTotal += '1' + dicetype;
if (ven) damTotal += 'cs>' + ven;
if (min) damTotal += ', 0d1+' + min + '}kh1';
if (max) damTotal += ', 0d1+' + max + '}kl1';
}
damTotal += '}';
if (mod) damTotal += mod;
console.log(v[dam], `\nwith vengeful: ${ven}\nmin: ${min}\nand max: ${max}\ntranformed to:\n` ,damTotal);
let attr = {};
//Object.defineProperty(attr, `${source}weapon_real_dmg`, {value: damTotal});
attr[`${source}weapon_real_dmg`] = damTotal;
console.log(attr);
setAttrs(attr, null, () => {
getAttrs([`${source}weapon_real_dmg`], (v) => {console.log(v);}) // check if real_dmg was set
});
});
}); PS: how do you get the sheet author badge?