Add initiative and ammo

This commit is contained in:
2023-10-21 10:25:39 +02:00
parent 78edf6b80b
commit 06e265586b
62 changed files with 398 additions and 207 deletions

View File

@@ -2,17 +2,29 @@ import { DarkStarsUtility } from "./dark-stars-utility.js";
/* -------------------------------------------- */
export class DarkStarsCombat extends Combat {
/* -------------------------------------------- */
async rollInitiative(ids, formula = undefined, messageOptions = {} ) {
ids = typeof ids === "string" ? [ids] : ids;
for (let cId = 0; cId < ids.length; cId++) {
const c = this.combatants.get(ids[cId]);
let id = c._id || c.id;
let initBonus = c.actor ? c.actor.getInitiativeScore( this.id, id ) : -1;
await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: initBonus } ]);
}
/* -------------------------------------------- */
processOtherTurns(c, initScore) {
let toCreate = []
let token = canvas.tokens.get(c.tokenId)
let hasLastWord = token.actor.hasLastWord()
while ( (initScore > 5) || (hasLastWord && initScore >= 5)) {
initScore -= 5;
toCreate.push({tokenId: c.tokenId, sceneId: c.sceneId, actorId: c.actorId, hidden: c.hidden, initiative: initScore, isDuplicated: true});
}
this.createEmbeddedDocuments("Combatant", toCreate);
}
/* -------------------------------------------- */
async rollInitiative(ids, formula = undefined, messageOptions = {}) {
ids = typeof ids === "string" ? [ids] : ids;
for (let cId of ids) {
const c = this.combatants.get(cId);
let id = c._id || c.id;
let initScore = c.actor ? c.actor.getInitiativeScore(this.id, id) : -1;
await this.updateEmbeddedDocuments("Combatant", [{ _id: id, initiative: initScore }]);
setTimeout(() => this.processOtherTurns(c, initScore), 400)
}
return this;
}
@@ -20,11 +32,4 @@ export class DarkStarsCombat extends Combat {
_onUpdate(changed, options, userId) {
}
/* -------------------------------------------- */
static async checkTurnPosition() {
while (game.combat.turn > 0) {
await game.combat.previousTurn()
}
}
}