mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
* Updated the background image for the system * Fixed so Weapon/Armor features are added again * Fixed so fear is available as a resource to be deducted by actions (#757) * Changed to use the config labels and src * Updated Weapons * Fixed so the decrease button of simple fear tracker is not visible when not hovered * Fixed so armor preUpdate doesn't fail if no system changes are made * Updated .gitignore and author details (#777) * Add author details and name mapping for chrisryan10 (#773) Co-authored-by: Chris Ryan <chrisr@blackhole> * Add build to ignore for my linux dev (#775) Co-authored-by: Chris Ryan <chrisr@blackhole> --------- Co-authored-by: Chris Ryan <chrisr@blackhole> * Corrected sneak attack active effect (#780) * Fixed a spelling error (#779) * Fix bardic rally showing in damage dialog when it should not (#783) * update spelling (#786) * Translating inventory descriptions (#782) * updated credits for 1.0.1 release (#797) * updated credits for 1.0.1 release * further updated artwork credits * Chagned handlebarhelper rollparsed to be more defensive (#794) * Added missing scene refreshType (#790) * Remove ability use buttons for not owned abilities (#795) * [Fix] PrayerDice Fixed (#799) * Fixed prayer dice, and wheelchair images * Fixed -settings data sources * Dragging features from one adversary to another (#788) * [Fix] Levelup Fixes (#787) * Fixed crash on experience selection. Fixed subclass error on multiclassing * Fixed so multiclasses do not gain the hope feature for the class * Fixed so Class/Subclass features are properly deleted on delevel * Removed automatic deletion of features on delevel when not using levelup auto * Fixed so custom domains can be selected in levelup when multiclassing * Changed so encounter countdowns is a button (#804) * Fixed so that dropping on class/subclass...creates the item on the character (#803) * [BUG] - Importing All Adversaries/Environments (#814) Fixes #774 Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com> * Bug/671 reaction roll chat title (#809) * Update Reaction Roll Chat Message Title * Removed console log --------- Co-authored-by: WBHarry <williambjrklund@gmail.com> * Improve Trait tooltip display (#817) Fixes #806 Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com> * [BUG] - Combat Tracker d12 logo not found (#812) Fixes #764 Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com> * Compendium Browser (#821) * Corrected timbending description localization (#816) * [Fix] Compendium Item (#810) * Corrected Emberwoven Armor * Fixed subclass regression * Fixed so character's with wildcard images don't break beastform (#815) * Fix roll result based duality damage (#822) --------- Co-authored-by: Chris Ryan <73275196+chrisryan10@users.noreply.github.com> Co-authored-by: Chris Ryan <chrisr@blackhole> Co-authored-by: Dapoulp <74197441+Dapoulp@users.noreply.github.com> Co-authored-by: IrkTheImp <41175833+IrkTheImp@users.noreply.github.com> Co-authored-by: CPTN_Cosmo <cptncosmo@gmail.com> Co-authored-by: Josh Q. <jshqntnr13@gmail.com> Co-authored-by: joaquinpereyra98 <24190917+joaquinpereyra98@users.noreply.github.com> Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com>
65 lines
2.3 KiB
JavaScript
65 lines
2.3 KiB
JavaScript
import { setsEqual } from '../../helpers/utils.mjs';
|
|
import DHBaseAction from './baseAction.mjs';
|
|
|
|
export default class DHDamageAction extends DHBaseAction {
|
|
static extraSchemas = [...super.extraSchemas, 'damage', 'target', 'effects'];
|
|
|
|
getFormulaValue(part, data) {
|
|
let formulaValue = part.value;
|
|
|
|
if (data.hasRoll && part.resultBased && data.roll.result.duality === -1) return part.valueAlt;
|
|
|
|
const isAdversary = this.actor.type === 'adversary';
|
|
if (isAdversary && this.actor.system.type === CONFIG.DH.ACTOR.adversaryTypes.horde.id) {
|
|
const hasHordeDamage = this.actor.effects.find(x => x.type === 'horde');
|
|
if (hasHordeDamage && !hasHordeDamage.disabled) return part.valueAlt;
|
|
}
|
|
|
|
return formulaValue;
|
|
}
|
|
|
|
formatFormulas(formulas, systemData) {
|
|
const formattedFormulas = [];
|
|
formulas.forEach(formula => {
|
|
if (isNaN(formula.formula))
|
|
formula.formula = Roll.replaceFormulaData(formula.formula, this.getRollData(systemData));
|
|
const same = formattedFormulas.find(
|
|
f => setsEqual(f.damageTypes, formula.damageTypes) && f.applyTo === formula.applyTo
|
|
);
|
|
if (same) same.formula += ` + ${formula.formula}`;
|
|
else formattedFormulas.push(formula);
|
|
});
|
|
return formattedFormulas;
|
|
}
|
|
|
|
async rollDamage(event, data) {
|
|
const systemData = data.system ?? data;
|
|
|
|
let formulas = this.damage.parts.map(p => ({
|
|
formula: this.getFormulaValue(p, systemData).getFormula(this.actor),
|
|
damageTypes: p.applyTo === 'hitPoints' && !p.type.size ? new Set(['physical']) : p.type,
|
|
applyTo: p.applyTo
|
|
}));
|
|
|
|
if (!formulas.length) return;
|
|
|
|
formulas = this.formatFormulas(formulas, systemData);
|
|
|
|
delete systemData.evaluate;
|
|
const config = {
|
|
...systemData,
|
|
roll: formulas,
|
|
dialog: {},
|
|
data: this.getRollData()
|
|
};
|
|
if (this.hasSave) config.onSave = this.save.damageMod;
|
|
if (data.system) {
|
|
config.source.message = data._id;
|
|
config.directDamage = false;
|
|
} else {
|
|
config.directDamage = true;
|
|
}
|
|
|
|
return CONFIG.Dice.daggerheart.DamageRoll.build(config);
|
|
}
|
|
}
|