var applyDamage = applyDamage || (function () {
'use strict';
const version = '1.0',
boundedBar = false,
checkInstall = function () {
log('-=> ApplyDamage v' + version + ' <=-');
},
defaultOpts = {
type: 'half',
ids: '',
saves: '',
DC: '-1',
dmg: '0',
bar: '1'
},
statusMarkers = [
'red', 'blue', 'green', 'brown', 'purple', 'pink', 'yellow', 'dead', 'skull', 'sleepy', 'half-heart', 'half-haze', 'interdiction', 'snail', 'lightning-helix', 'spanner', 'chained-heart', 'chemical-bolt', 'death-zone', 'drink-me', 'edge-crack', 'ninja-mask', 'stopwatch', 'fishing-net', 'overdrive', 'strong', 'fist', 'padlock', 'three-leaves', 'fluffy-wing', 'pummeled', 'tread', 'arrowed', 'aura', 'back-pain', 'black-flag', 'bleeding-eye', 'bolt-shield', 'broken-heart', 'cobweb', 'broken-shield', 'flying-flag', 'radioactive', 'trophy', 'broken-skull', 'frozen-orb', 'rolling-bomb', 'white-tower', 'grab', 'screaming', 'grenade', 'sentry-gun', 'all-for-one', 'angel-outfit', 'archery-target'],
getWhisperPrefix = function (playerid) {
let player = getObj('player', playerid);
if (player && player.get('_displayname')) {
return '/w "' + player.get('_displayname') + '" ';
}
else {
return '/w GM ';
}
},
parseOpts = function (content, hasValue) {
return _.chain(content.replace(/
\n/g, ' ')
.replace(/({{(.*?)\s*}}\s*$)/g, '$2')
.split(/\s+--/))
.rest()
.reduce(function (opts, arg) {
let kv = arg.split(/\s(.+)/);
(_.contains(hasValue, kv[0])) ? (opts[kv[0]] = (kv[1] || '')) :
(opts[arg] = true);
return opts;
}, {})
.value();
},
processInlinerolls = function (msg) {
if (_.has(msg, 'inlinerolls')) {
return _.chain(msg.inlinerolls)
.reduce(function (m, v, k) {
let ti = _.reduce(v.results.rolls, function (m2, v2) {
if (_.has(v2, 'table')) {
m2.push(_.reduce(v2.results, function (m3, v3) {
m3.push(v3.tableItem.name);
return m3;
}, []).join(', '));
}
return m2;
}, []).join(', ');
m['$[[' + k + ']]'] = (ti.length && ti) || v.results.total || 0;
return m;
}, {})
.reduce((m, v, k) => m.replace(k, v), msg.content)
.value();
}
else {
return msg.content;
}
},
handleError = function (whisper, errorMsg) {
let output = whisper+'
' + errorMsg + '
' + (opts.dmg ? opts.dmg + ' damage applied to tokens, with ' + (opts.type === 'half' ? 'half ' : 'no ') + 'damage on a successful saving throw.' : '') + (opts.status ? ` ${opts.status} status marker applied to tokens that failed the save.` : '') + '