fvtt-vadentis/modules/vadentis-combat.js

48 lines
1.5 KiB
JavaScript

import { VadentisUtility } from "./vadentis-utility.js";
/* -------------------------------------------- */
export class VadentisCombat extends Combat {
/* -------------------------------------------- */
async rollInitiative(ids, formula = undefined, messageOptions = {} ) {
console.log("Initiative is requested !!!");
ids = typeof ids === "string" ? [ids] : ids;
//const currentId = this.combatant.id;
for (let cId = 0; cId < ids.length; cId++) {
const c = this.combatants.get(ids[cId]);
let initBonus = c.actor ? c.actor.getInitiativeScore() : 0;
console.log("Init for ", initBonus);
const roll = c.getInitiativeRoll("1d20+"+initBonus);
if ( !roll.total) {
roll.evaluate( {async: false});
}
if (roll.total <= 0) roll.total = 0;
let id = c._id || c.id;
await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: roll.total } ]);
// Send a chat message
let rollMode = messageOptions.rollMode || game.settings.get("core", "rollMode");
let messageData = mergeObject(
{
speaker: {
scene: canvas.scene.id,
actor: id,
token: c.token._id,
alias: c.token.name,
sound: CONFIG.sounds.dice,
},
flavor: `${c.token.name} a fait son jet d'Initiative (1d20+${initBonus})
<br>
`,
},
messageOptions
);
roll.toMessage(messageData, { rollMode, create: true });
}
return this;
}
}