diff --git a/script/common/actor.js b/script/common/actor.js index a4c272c..45ea3b5 100644 --- a/script/common/actor.js +++ b/script/common/actor.js @@ -594,6 +594,7 @@ export class SymbaroumActor extends Actor { reference: item.system.reference, isMelee: item.system.isMelee, isDistance: item.system.isDistance, + isArtifact: item.system.isArtifact, doAlternativeDamage: doAlternativeDamage, qualities: item.system.qualities, damage: { @@ -992,7 +993,7 @@ export class SymbaroumActor extends Actor { favour: 0, modifier: 0, poison: 0, - isMystical: weapon.qualities.mystical || weapon.system.isArtifact, + isMystical: weapon.qualities.mystical || weapon.isArtifact, isAlternativeDamage: false, alternativeDamageAttribute: "none", introText: actingCharName + game.i18n.localize("COMBAT.CHAT_INTRO") + weapon.name, diff --git a/script/common/item.js b/script/common/item.js index 08117dc..768ddae 100644 --- a/script/common/item.js +++ b/script/common/item.js @@ -3553,9 +3553,10 @@ async function attackResult(rollData, functionStuff) { actor: actorid, }), content: html, - roll: JSON.stringify(createRollData(rolls)), + rolls: [createRollData(rolls)], rollMode: game.settings.get("core", "rollMode"), }; + ChatMessage.applyRollMode(chatData, "roll"); let NewMessage = await ChatMessage.create(chatData); if (flagDataArray.length > 0) { await createModifyTokenChatButton(flagDataArray); @@ -4002,8 +4003,9 @@ async function standardPowerResult(rollData, functionStuff) { } } else if (rolls.length > 0) { // Only shows rolls if they are displayed to - chatData.roll = JSON.stringify(createRollData(rolls)); + chatData.rolls = [createRollData(rolls)]; } + ChatMessage.applyRollMode(chatData, "roll"); let NewMessage = await ChatMessage.create(chatData); if (trueActorSucceeded && functionStuff.addTargetEffect.length > 0) { for (let effect of functionStuff.addTargetEffect) { diff --git a/script/common/macro.js b/script/common/macro.js index 8b3209a..ef0e665 100644 --- a/script/common/macro.js +++ b/script/common/macro.js @@ -186,13 +186,8 @@ export class SymbaroumMacros { } else return; } - /********************************************** - * Macro: addExp - */ - // Built-in macros - async addExp() { - let defaultCheck = "checked"; // set to unchecked + getPlayerList() { let actorslist = []; if (canvas.tokens.controlled.length > 0) { @@ -216,8 +211,26 @@ export class SymbaroumMacros { }); Array.prototype.push.apply(actorslist, gameacts); } + return actorslist; + } + + /********************************************** + * Macro: addExp + */ + + // Built-in macros + async addExp() { + let defaultCheck = "checked"; // set to unchecked let allKeys = ""; + const actorslist = this.getPlayerList(); + + if(actorslist.length === 0) { + ui.notifications.info(`No actor available for you to add exp to`); + return; + } else if(actorslist.length === 1) { + defaultCheck = "checked"; + } actorslist.forEach((t) => { allKeys = allKeys.concat(`