53 lines
2.2 KiB
JavaScript
53 lines
2.2 KiB
JavaScript
import {BoLRoll} from "../controllers/bol-rolls.js";
|
|
|
|
export class Macros {
|
|
/**
|
|
* @name getSpeakersActor
|
|
* @description
|
|
*
|
|
* @returns
|
|
*/
|
|
static getSpeakersActor = function(){
|
|
// Vérifie qu'un seul token est sélectionné
|
|
const tokens = canvas.tokens.controlled;
|
|
if (tokens.length > 1) {
|
|
ui.notifications.warn(game.i18n.localize('BOL.notification.MacroMultipleTokensSelected'));
|
|
return null;
|
|
}
|
|
|
|
const speaker = ChatMessage.getSpeaker();
|
|
let actor;
|
|
// Si un token est sélectionné, le prendre comme acteur cible
|
|
if (speaker.token) actor = game.actors.tokens[speaker.token];
|
|
// Sinon prendre l'acteur par défaut pour l'utilisateur courrant
|
|
if (!actor) actor = game.actors.get(speaker.actor);
|
|
return actor;
|
|
}
|
|
|
|
static rollMacro = async function (rollType, key, adv, mod){
|
|
const actor = this.getSpeakersActor();
|
|
// Several tokens selected
|
|
if (actor === null) return;
|
|
// No token selected
|
|
if (actor === undefined) return ui.notifications.error(game.i18n.localize("BOL.notification.MacroNoTokenSelected"));
|
|
|
|
const actorData = {};
|
|
actorData.data = {
|
|
features : actor.buildFeatures()
|
|
};
|
|
|
|
if(rollType === "attribute") {
|
|
let attribute = eval(`actor.system.attributes.${key}`);
|
|
let rollLabel = (attribute.label) ? game.i18n.localize(attribute.label) : null;
|
|
let description = actor.name + " - " + game.i18n.localize('BOL.ui.attributeCheck') + " - " + game.i18n.localize(attribute.label) ;
|
|
BoLRoll.attributeRollDialog(actor, actorData, attribute, rollLabel, description, adv, mod);
|
|
}
|
|
else if(rollType === "aptitude") {
|
|
let aptitude = eval(`actor.system.aptitudes.${key}`);
|
|
let rollLabel = (aptitude.label) ? game.i18n.localize(aptitude.label) : null;
|
|
let description = actor.name + " - " + game.i18n.localize('BOL.ui.aptitudeCheck') + " - " + game.i18n.localize(aptitude.label) ;
|
|
BoLRoll.aptitudeRollDialog(actor, actorData, aptitude, rollLabel, description, adv, mod);
|
|
}
|
|
}
|
|
}
|