Compare commits

...

5 commits

Author SHA1 Message Date
WBHarry
4558fbdcf6 Raised version
Some checks are pending
Project CI / build (24.x) (push) Waiting to run
2026-05-01 23:09:45 +02:00
Carlos Fernandez
c7159eff11
Fix retrieving parent documents when the model is null (#1853) 2026-05-01 23:00:03 +02:00
WBHarry
d0c2c783f1
Improved armor source names (#1851) 2026-05-01 16:53:20 -04:00
WBHarry
905d1f7e88 Corrected a typo in Greater Earth Elemental and Huge Green Ooze 2026-05-01 20:58:21 +02:00
Carlos Fernandez
b22ce9697d
Fix detection of negative modifiers (#1847) 2026-05-01 20:54:18 +02:00
7 changed files with 16 additions and 19 deletions

View file

@ -22,9 +22,10 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
);
const orderedArmorSources = getArmorSources(actor).filter(s => !s.disabled);
const armor = orderedArmorSources.reduce((acc, { document }) => {
const armor = orderedArmorSources.reduce((acc, { name, document }) => {
const { current, max } = document.type === 'armor' ? document.system.armor : document.system.armorData;
acc.push({
name,
effect: document,
marks: [...Array(max).keys()].reduce((acc, _, index) => {
const spent = index < current;
@ -152,14 +153,8 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
const armorSources = [];
for (const source of this.marks.armor) {
const parent = source.effect.origin
? await foundry.utils.fromUuid(source.effect.origin)
: source.effect.parent;
const useEffectName = parent.type === 'armor' || parent instanceof Actor;
const label = useEffectName ? source.effect.name : parent.name;
armorSources.push({
label: label,
label: source.name,
uuid: source.effect.uuid,
marks: source.marks
});

View file

@ -257,7 +257,7 @@ export default class DHRoll extends Roll {
if (!roll.terms[i].isDeterministic) continue;
const termTotal = roll.terms[i].total;
if (typeof termTotal === 'number') {
const multiplier = roll.terms[i - 1]?.operator === ' - ' ? -1 : 1;
const multiplier = roll.terms[i - 1]?.operator === '-' ? -1 : 1;
modifierTotal += multiplier * termTotal;
}
}

View file

@ -171,6 +171,7 @@ export default class DhActiveEffect extends foundry.documents.ActiveEffect {
/** Recursively finds the first parent document of the given object */
static #resolveParentDocument(model, documentClass) {
if (!model) return null;
return model instanceof documentClass
? model
: model.parent

View file

@ -757,9 +757,12 @@ export function getArmorSources(actor) {
// Get the origin item. Since the actor is already loaded, it should already be cached
// Consider the relative function versions if this causes an issue
const origin = doc.origin ? foundry.utils.fromUuidSync(doc.origin) : doc;
const useParentName = doc.parent && !(doc.parent instanceof Actor);
const name = doc.origin || !useParentName ? doc.name : doc.parent.name;
return {
origin,
name: origin.name,
name,
document: doc,
data: doc.system.armor ?? doc.system.armorData,
disabled: !!doc.disabled || !!doc.isSuppressed

View file

@ -249,7 +249,7 @@
"name": "Crushing Blows",
"type": "feature",
"system": {
"description": "<p>When the @Lookup[@name] makes a successful attack, the target must mark an Armor Slot without receiving its benefi ts (they can still use armor to reduce the damage). If they cant mark an Armor Slot, they must mark an additional HP.</p>",
"description": "<p>When the @Lookup[@name] makes a successful attack, the target must mark an Armor Slot without receiving its benefits (they can still use armor to reduce the damage). If they cant mark an Armor Slot, they must mark an additional HP.</p>",
"resource": null,
"actions": {
"0sXciTiPc30v8czv": {

View file

@ -138,12 +138,9 @@
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
"anchorX": 0.5,
"anchorY": 0.5,
"offsetX": 0,
"offsetY": 0,
"fit": "contain",
"scaleX": 1,
"scaleY": 1,
"rotation": 0,
"tint": "#ffffff",
"alphaThreshold": 0.75
},
@ -194,7 +191,7 @@
"saturation": 0,
"contrast": 0
},
"detectionModes": [],
"detectionModes": {},
"occludable": {
"radius": 0
},
@ -220,7 +217,8 @@
"flags": {},
"randomImg": false,
"appendNumber": false,
"prependAdjective": false
"prependAdjective": false,
"depth": 1
},
"items": [
{
@ -257,7 +255,7 @@
"name": "Acidic Form",
"type": "feature",
"system": {
"description": "<p>When the @Lookup[@name] makes a successful attack, the target must mark an Armor Slot without receiving its benefi ts (they can still use armor to reduce the damage). If they cant mark an Armor Slot, they must mark an additional HP.</p>",
"description": "<p>When the @Lookup[@name] makes a successful attack, the target must mark an Armor Slot without receiving its benefits (they can still use armor to reduce the damage). If they cant mark an Armor Slot, they must mark an additional HP.</p>",
"resource": null,
"actions": {
"gtT2oHSyZg9OHHJD": {

View file

@ -2,7 +2,7 @@
"id": "daggerheart",
"title": "Daggerheart",
"description": "An unofficial implementation of the Daggerheart system",
"version": "2.2.1",
"version": "2.2.2",
"compatibility": {
"minimum": "14.359",
"verified": "14.360",
@ -10,7 +10,7 @@
},
"url": "https://github.com/Foundryborne/daggerheart",
"manifest": "https://raw.githubusercontent.com/Foundryborne/daggerheart/v14/system.json",
"download": "https://github.com/Foundryborne/daggerheart/releases/download/2.2.1/system.zip",
"download": "https://github.com/Foundryborne/daggerheart/releases/download/2.2.2/system.zip",
"authors": [
{
"name": "WBHarry"