13.0.7 - Sous le signe d'Illysis #768
@@ -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)
|
||||||
}
|
}
|
||||||
|
@@ -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";
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user