From df9df90ccb765e1cb37e7ce3ce58421e262e02fb Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 29 Aug 2025 01:02:27 +0200 Subject: [PATCH] Init premier round --- module/rdd-combat.js | 68 ++++++++++++++++++++++------------------- module/rdd-token-hud.js | 1 - 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/module/rdd-combat.js b/module/rdd-combat.js index f596abad..d10c7cc4 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -17,23 +17,23 @@ import { RdDRollResult } from "./rdd-roll-result.js"; /* -------------------------------------------- */ const premierRoundInit = [ - { pattern: 'hast', init: 5.90 }, - { pattern: 'lance', init: 5.85 }, - { pattern: 'baton', init: 5.80 }, - { pattern: 'doubledragonne', init: 5.75 }, - { pattern: 'esparlongue', init: 5.70 }, - { pattern: 'epeedragonne', init: 5.65 }, - { pattern: 'epeebatarde', init: 5.60 }, - { pattern: 'epeecyane', init: 5.55 }, - { pattern: 'epeesorde', init: 5.50 }, - { pattern: 'grandehache', init: 5.45 }, - { pattern: 'bataille', init: 5.40 }, - { pattern: 'epeegnome', init: 5.35 }, - { pattern: 'masse', init: 5.30 }, - { pattern: 'gourdin', init: 5.25 }, - { pattern: 'fleau', init: 5.20 }, - { pattern: 'dague', init: 5.15 }, - { pattern: 'autre', init: 5.10 }, + { pattern: 'hast' }, + { pattern: 'lance' }, + { pattern: 'baton' }, + { pattern: 'doubledragonne' }, + { pattern: 'esparlongue' }, + { pattern: 'epeedragonne' }, + { pattern: 'epeebatarde' }, + { pattern: 'epeecyane' }, + { pattern: 'epeesorde' }, + { pattern: 'grandehache' }, + { pattern: 'bataille' }, + { pattern: 'epeegnome' }, + { pattern: 'masse' }, + { pattern: 'gourdin' }, + { pattern: 'fleau' }, + { pattern: 'dague' }, + { pattern: 'autre' }, ]; /* -------------------------------------------- */ @@ -45,6 +45,10 @@ export class RdDCombatManager extends Combat { Hooks.on("updateCombat", (combat, change, options, userId) => { RdDCombat.onUpdateCombat(combat, change, options, userId) }); Hooks.on("preDeleteCombat", (combat, html, id) => { combat.onPreDeleteCombat() }) Hooks.on("deleteCombat", (combat, html, id) => { combat.onDeleteCombat() }) + + for (let i = 0.0; i < premierRoundInit.length; i++) { + premierRoundInit[i].init = 5.99 - i / 100 + } } /* -------------------------------------------- */ @@ -108,9 +112,7 @@ export class RdDCombatManager extends Combat { async rollInitiative(ids, messageOptions = {}) { console.log(`${game.system.title} | Combat.rollInitiative()`, ids, messageOptions) ids = typeof ids === "string" ? [ids] : ids - ids.forEach(async id => - await this.rollInitRdD(id, undefined, messageOptions) - ) + Promise.all(ids.map(id => this.rollInitRdD(id, undefined, messageOptions))) return this } @@ -251,19 +253,20 @@ export class RdDCombatManager extends Combat { let initMissing = game.combat.combatants.find(it => !it.initiative); if (!initMissing) { // Premier round ! for (let combatant of game.combat.combatants) { - let action = combatant.initiativeData?.arme; - //console.log("Parsed !!!", combatant, initDone, game.combat.current, arme); - if (action && action.type == "arme") { - for (let initData of premierRoundInit) { - if (Grammar.toLowerCaseNoAccentNoSpace(action.system.initpremierround).includes(initData.pattern)) { - let msg = `

L'initiative de ${combatant.actor.getAlias()} a été modifiée !

+ if (combatant.initiativeData?.arme?.type == "arme") { + // TODO: get init data premier round + const initiativeData = combatant.initiativeData; + const action = combatant.initiativeData.arme; + const fromArme = Grammar.toLowerCaseNoAccentNoSpace(action.system.initpremierround) + const initData = premierRoundInit.find(it => fromArme.includes(initData.pattern)) + if (initData) { + let msg = `

L'initiative de ${combatant.actor.getAlias()} a été modifiée !


Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}.
` - ChatMessage.create({ content: msg }); - game.combat.setInitiative(combatant._id, initData.init); - } + ChatMessage.create({ content: msg }); + game.combat.setInitiative(combatant._id, initData.init); } } } @@ -297,7 +300,7 @@ export class RdDCombatManager extends Combat { ].concat(options); } /* -------------------------------------------- */ - static rollInitiativeAction(combatantId, action) { + static async rollInitiativeAction(combatantId, action) { const combatant = game.combat.combatants.get(combatantId) const actor = RdDCombatManager.getActorCombatant(combatant) if (actor == undefined) { return [] } @@ -308,7 +311,8 @@ export class RdDCombatManager extends Combat { const ajustement = RdDCombatManager.calculAjustementInit(actor, action) const rollFormula = RdDCombatManager.formuleInitiative(init.offset, init.carac, init.niveau, ajustement); - game.combat.rollInitRdD(combatantId, rollFormula, init); + await game.combat.rollInitRdD(combatantId, rollFormula, init); + combatant.initiativeData } static getInitData(actor, action) { @@ -1141,7 +1145,7 @@ export class RdDCombat { if (RdDCombat.isParticuliere(defenderRoll)) { await this._onEsquiveParticuliere(defenderRoll) } - return + return } return await this._onEsquiveEchec(defenderRoll) } diff --git a/module/rdd-token-hud.js b/module/rdd-token-hud.js index f6e0975d..4b36f2ae 100644 --- a/module/rdd-token-hud.js +++ b/module/rdd-token-hud.js @@ -1,6 +1,5 @@ /* -------------------------------------------- */ import { HtmlUtility } from "./html-utility.js"; -import { Misc } from "./misc.js"; import { RdDCombatManager } from "./rdd-combat.js"; import { Targets } from "./targets.js";