mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
69 lines
2.6 KiB
JavaScript
69 lines
2.6 KiB
JavaScript
export default class DhpCombat extends Combat {
|
|
async startCombat() {
|
|
this._playCombatSound('startEncounter');
|
|
const updateData = { round: 1, turn: null };
|
|
Hooks.callAll('combatStart', this, updateData);
|
|
await this.update(updateData);
|
|
return this;
|
|
}
|
|
|
|
_sortCombatants(a, b) {
|
|
const aNPC = Number(a.isNPC);
|
|
const bNPC = Number(b.isNPC);
|
|
if (aNPC !== bNPC) {
|
|
return aNPC - bNPC;
|
|
}
|
|
|
|
return a.name.localeCompare(b.name);
|
|
}
|
|
|
|
async toggleModifierEffects(add, actors, category, groupingKey) {
|
|
const effectData = category && groupingKey ? [{ category, grouping: groupingKey }] : this.system.battleToggles;
|
|
if (add) {
|
|
const effects = effectData.reduce((acc, toggle) => {
|
|
const grouping = CONFIG.DH.ENCOUNTER.BPModifiers[toggle.category]?.[toggle.grouping];
|
|
if (!grouping?.effects?.length) return acc;
|
|
acc.push(
|
|
...grouping.effects.map(effect => ({
|
|
...effect,
|
|
name: game.i18n.localize(effect.name),
|
|
description: game.i18n.localize(effect.description),
|
|
effectTargetTypes: grouping.effectTargetTypes ?? [],
|
|
flags: {
|
|
[`${CONFIG.DH.id}.${CONFIG.DH.FLAGS.combatToggle}`]: {
|
|
category: toggle.category,
|
|
grouping: toggle.grouping
|
|
}
|
|
}
|
|
}))
|
|
);
|
|
|
|
return acc;
|
|
}, []);
|
|
|
|
if (!effects.length) return;
|
|
|
|
for (let actor of actors) {
|
|
await actor.createEmbeddedDocuments(
|
|
'ActiveEffect',
|
|
effects.filter(x => x.effectTargetTypes.includes(actor.type))
|
|
);
|
|
}
|
|
} else {
|
|
for (let actor of actors) {
|
|
await actor.deleteEmbeddedDocuments(
|
|
'ActiveEffect',
|
|
actor.effects
|
|
.filter(x => {
|
|
const flag = x.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.combatToggle);
|
|
if (!flag) return false;
|
|
return effectData.some(
|
|
data => flag.category == data.category && flag.grouping === data.grouping
|
|
);
|
|
})
|
|
.map(x => x.id)
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|