Try this on('chat:message', function (msg) {
// ROLL LISTENER
if (msg.content.includes("hit-dice-u") && msg.playerid.toLowerCase() != "api" && msg.rolltemplate) {
var cname = msg.content.split("charname=")[1].split('{{')[0].trim().replace(/}}/, '').trim();
log("cname: " + cname)
var character = cname ? findObjs({
name: cname,
type: 'character'
})[0] : undefined;
if (["simple"].indexOf(msg.rolltemplate) > -1) {
if (_.has(msg, 'inlinerolls') && msg.content.indexOf("^{hit-dice-u}") > -1 && character) {
handlehd(msg, character);
}
}
}
});
// CHECK CURRENT HD, DECREMENT HD, THEN APPLY HP
var handlehd = function (msg, character) {
var hd = findObjs({
type: 'attribute',
characterid: character.id,
name: "hit_dice"
}, {
caseInsensitive: true
})[0];
var hp = findObjs({
type: 'attribute',
characterid: character.id,
name: "hp"
}, {
caseInsensitive: true
})[0];
if (!hd || hd.get("current") === "" || hd.get("max") === "") {
log("CHARACTER HAS NO HIT_DICE ATTRIBUTE OR HD CURRENT/MAX IS NULL");
sendChat(msg.who, "<div class='sheet-rolltemplate-simple' style='margin-top:-7px;'><div class='sheet-container'><div class='sheet-label' style='margin-top:5px;'><span>" + "HD attribute on " + character.get("name") + " is missing or current/max values are not filled out, Hit Points were not applied." + "</span></div></div></div>");
return;
} else if (!hp || hp.get("current") === "" || hp.get("max") === "") {
log("CHARACTER HAS NO HP ATTRIBUTE OR HP CURRENT/MAX IS NULL");
sendChat(msg.who, "<div class='sheet-rolltemplate-simple' style='margin-top:-7px;'><div class='sheet-container'><div class='sheet-label' style='margin-top:5px;'><span>" + "HP attribute on " + character.get("name") + " is missing or current/max values are not filled out, Hit Points were not applied." + "</span></div></div></div>");
return;
} else {
var curhd = parseInt(hd.get("current"));
var newhd = curhd - 1;
}
var maxhp = parseInt(hp.get("max"));
var curhp = parseInt(hp.get("current"));
if (curhd === 0) {
sendChat(msg.who, "<div class='sheet-rolltemplate-simple' style='margin-top:-7px;'><div class='sheet-container'><div class='sheet-label' style='margin-top:5px;'><span>" + character.get("name") + " has no HD remaining, HP were not applied." + "</span></div></div></div>");
} else if (curhp === maxhp) {
sendChat(msg.who, "<div class='sheet-rolltemplate-simple' style='margin-top:-7px;'><div class='sheet-container'><div class='sheet-label' style='margin-top:5px;'><span>" + character.get("name") + " alread at full HP, no HD used." + "</span></div></div></div>");
} else {
hd.set({
current: newhd
});
var result = msg.inlinerolls[2].results.total ? msg.inlinerolls[2].results.total : false;
var newhp = curhp + result;
if (result === false) {
log("FAILED TO GET HD RESULT");
} else if (newhp > maxhp) {
hp.set({
current: maxhp
});
} else {
hp.set({
current: newhp
});
}
}
};