13.0.7 - Sous le signe d'Illysis #768

Merged
uberwald merged 6 commits from VincentVk/foundryvtt-reve-de-dragon:v13 into v13 2025-09-12 20:56:25 +02:00
2 changed files with 36 additions and 33 deletions
Showing only changes of commit df9df90ccb - Show all commits

View File

@@ -17,23 +17,23 @@ import { RdDRollResult } from "./rdd-roll-result.js";
/* -------------------------------------------- */ /* -------------------------------------------- */
const premierRoundInit = [ const premierRoundInit = [
{ pattern: 'hast', init: 5.90 }, { pattern: 'hast' },
{ pattern: 'lance', init: 5.85 }, { pattern: 'lance' },
{ pattern: 'baton', init: 5.80 }, { pattern: 'baton' },
{ pattern: 'doubledragonne', init: 5.75 }, { pattern: 'doubledragonne' },
{ pattern: 'esparlongue', init: 5.70 }, { pattern: 'esparlongue' },
{ pattern: 'epeedragonne', init: 5.65 }, { pattern: 'epeedragonne' },
{ pattern: 'epeebatarde', init: 5.60 }, { pattern: 'epeebatarde' },
{ pattern: 'epeecyane', init: 5.55 }, { pattern: 'epeecyane' },
{ pattern: 'epeesorde', init: 5.50 }, { pattern: 'epeesorde' },
{ pattern: 'grandehache', init: 5.45 }, { pattern: 'grandehache' },
{ pattern: 'bataille', init: 5.40 }, { pattern: 'bataille' },
{ pattern: 'epeegnome', init: 5.35 }, { pattern: 'epeegnome' },
{ pattern: 'masse', init: 5.30 }, { pattern: 'masse' },
{ pattern: 'gourdin', init: 5.25 }, { pattern: 'gourdin' },
{ pattern: 'fleau', init: 5.20 }, { pattern: 'fleau' },
{ pattern: 'dague', init: 5.15 }, { pattern: 'dague' },
{ pattern: 'autre', init: 5.10 }, { 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("updateCombat", (combat, change, options, userId) => { RdDCombat.onUpdateCombat(combat, change, options, userId) });
Hooks.on("preDeleteCombat", (combat, html, id) => { combat.onPreDeleteCombat() }) Hooks.on("preDeleteCombat", (combat, html, id) => { combat.onPreDeleteCombat() })
Hooks.on("deleteCombat", (combat, html, id) => { combat.onDeleteCombat() }) 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 = {}) { async rollInitiative(ids, messageOptions = {}) {
console.log(`${game.system.title} | Combat.rollInitiative()`, ids, messageOptions) console.log(`${game.system.title} | Combat.rollInitiative()`, ids, messageOptions)
ids = typeof ids === "string" ? [ids] : ids ids = typeof ids === "string" ? [ids] : ids
ids.forEach(async id => Promise.all(ids.map(id => this.rollInitRdD(id, undefined, messageOptions)))
await this.rollInitRdD(id, undefined, messageOptions)
)
return this return this
} }
@@ -251,19 +253,20 @@ export class RdDCombatManager extends Combat {
let initMissing = game.combat.combatants.find(it => !it.initiative); let initMissing = game.combat.combatants.find(it => !it.initiative);
if (!initMissing) { // Premier round ! if (!initMissing) { // Premier round !
for (let combatant of game.combat.combatants) { for (let combatant of game.combat.combatants) {
let action = combatant.initiativeData?.arme; if (combatant.initiativeData?.arme?.type == "arme") {
//console.log("Parsed !!!", combatant, initDone, game.combat.current, arme); // TODO: get init data premier round
if (action && action.type == "arme") { const initiativeData = combatant.initiativeData;
for (let initData of premierRoundInit) { const action = combatant.initiativeData.arme;
if (Grammar.toLowerCaseNoAccentNoSpace(action.system.initpremierround).includes(initData.pattern)) { const fromArme = Grammar.toLowerCaseNoAccentNoSpace(action.system.initpremierround)
let msg = `<h4>L'initiative de ${combatant.actor.getAlias()} a été modifiée !</h4> const initData = premierRoundInit.find(it => fromArme.includes(initData.pattern))
if (initData) {
let msg = `<h4>L'initiative de ${combatant.actor.getAlias()} a été modifiée !</h4>
<hr> <hr>
<div> <div>
Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}. Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}.
</div>` </div>`
ChatMessage.create({ content: msg }); ChatMessage.create({ content: msg });
game.combat.setInitiative(combatant._id, initData.init); game.combat.setInitiative(combatant._id, initData.init);
}
} }
} }
} }
@@ -297,7 +300,7 @@ export class RdDCombatManager extends Combat {
].concat(options); ].concat(options);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static rollInitiativeAction(combatantId, action) { static async rollInitiativeAction(combatantId, action) {
const combatant = game.combat.combatants.get(combatantId) const combatant = game.combat.combatants.get(combatantId)
const actor = RdDCombatManager.getActorCombatant(combatant) const actor = RdDCombatManager.getActorCombatant(combatant)
if (actor == undefined) { return [] } if (actor == undefined) { return [] }
@@ -308,7 +311,8 @@ export class RdDCombatManager extends Combat {
const ajustement = RdDCombatManager.calculAjustementInit(actor, action) const ajustement = RdDCombatManager.calculAjustementInit(actor, action)
const rollFormula = RdDCombatManager.formuleInitiative(init.offset, init.carac, init.niveau, ajustement); 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) { static getInitData(actor, action) {
@@ -1141,7 +1145,7 @@ export class RdDCombat {
if (RdDCombat.isParticuliere(defenderRoll)) { if (RdDCombat.isParticuliere(defenderRoll)) {
await this._onEsquiveParticuliere(defenderRoll) await this._onEsquiveParticuliere(defenderRoll)
} }
return return
} }
return await this._onEsquiveEchec(defenderRoll) return await this._onEsquiveEchec(defenderRoll)
} }

View File

@@ -1,6 +1,5 @@
/* -------------------------------------------- */ /* -------------------------------------------- */
import { HtmlUtility } from "./html-utility.js"; import { HtmlUtility } from "./html-utility.js";
import { Misc } from "./misc.js";
import { RdDCombatManager } from "./rdd-combat.js"; import { RdDCombatManager } from "./rdd-combat.js";
import { Targets } from "./targets.js"; import { Targets } from "./targets.js";