Merged with main

This commit is contained in:
WBHarry 2026-03-23 01:14:20 +01:00
commit 7a7940aa04
65 changed files with 11 additions and 137 deletions

View file

@ -2521,8 +2521,7 @@
"featuresLabel": "Community Feature"
},
"Consumable": {
"consumeOnUse": "Consume On Use",
"destroyOnEmpty": "Destroy On Empty"
"consumeOnUse": "Consume On Use"
},
"DomainCard": {
"type": "Type",

View file

@ -18,8 +18,7 @@ export default class DHConsumable extends BaseDataItem {
const fields = foundry.data.fields;
return {
...super.defineSchema(),
consumeOnUse: new fields.BooleanField({ initial: true }),
destroyOnEmpty: new fields.BooleanField({ initial: true })
consumeOnUse: new fields.BooleanField({ initial: true })
};
}

View file

@ -771,20 +771,10 @@ export default class DhpActor extends Actor {
resources.forEach(r => {
if (r.itemId) {
const { path, value } = game.system.api.fields.ActionFields.CostField.getItemIdCostUpdate(r);
if (
r.key === 'quantity' &&
r.target.type === 'consumable' &&
value === 0 &&
r.target.system.destroyOnEmpty
) {
r.target.delete();
} else {
updates.items[r.key] = {
target: r.target,
resources: { [path]: value }
};
}
updates.items[r.key] = {
target: r.target,
resources: { [path]: value }
};
} else {
const valueFunc = (base, resource, baseMax) => {
if (resource.clear) return baseMax && base.inverted ? baseMax : 0;

View file

@ -169,70 +169,19 @@ export default class DhTooltipManager extends foundry.helpers.interaction.Toolti
}
}
this.baseActivate(element, { ...options, html: html });
this.noOffset = options.noOffset;
super.activate(element, { ...options, html: html });
}
/* Need to pass more options to _setAnchor, so have to copy whole foundry method >_< */
async baseActivate(element, options) {
let { text, direction, cssClass, locked = false, html, content } = options;
if (content && !html) {
foundry.utils.logCompatibilityWarning(
'The content option has been deprecated in favor of the html option',
{ since: 13, until: 15, once: true }
);
html = content;
}
if (text && html) throw new Error('Cannot provide both text and html options to TooltipManager#activate.');
// Deactivate currently active element
this.deactivate();
// Check if the element still exists in the DOM.
if (!document.body.contains(element)) return;
// Mark the new element as active
this.#active = true;
this.element = element;
element.setAttribute('aria-describedby', 'tooltip');
html ||= element.dataset.tooltipHtml;
if (html) {
if (typeof html === 'string') this.tooltip.innerHTML = foundry.utils.cleanHTML(html);
else {
this.tooltip.innerHTML = ''; // Clear existing HTML
this.tooltip.appendChild(html);
}
} else {
text ||= element.dataset.tooltipText;
if (text) this.tooltip.textContent = text;
else {
text = element.dataset.tooltip;
// Localized message should be safe
if (game.i18n.has(text)) this.tooltip.innerHTML = game.i18n.localize(text);
else this.tooltip.innerHTML = foundry.utils.cleanHTML(text);
}
}
// Activate display of the tooltip
this.tooltip.removeAttribute('class');
this.tooltip.classList.add('active', 'themed', 'theme-dark');
this.tooltip.showPopover();
cssClass ??= element.closest('[data-tooltip-class]')?.dataset.tooltipClass;
if (cssClass) this.tooltip.classList.add(...cssClass.split(' '));
// Set tooltip position
direction ??= element.closest('[data-tooltip-direction]')?.dataset.tooltipDirection;
if (!direction) direction = this._determineDirection();
this._setAnchor(direction, options);
if (locked || element.dataset.hasOwnProperty('locked')) this.lockTooltip();
}
_setAnchor(direction, options = {}) {
_setAnchor(direction) {
const directions = this.constructor.TOOLTIP_DIRECTIONS;
const pad = this.constructor.TOOLTIP_MARGIN_PX;
const pos = this.element.getBoundingClientRect();
const { innerHeight, innerWidth } = this.tooltip.ownerDocument.defaultView;
const tooltipPadding = 16;
const horizontalOffset = options.noOffset ? tooltipPadding : this.tooltip.offsetWidth / 2 - pos.width / 2;
const verticalOffset = options.noOffset ? tooltipPadding : this.tooltip.offsetHeight / 2 - pos.height / 2;
const horizontalOffset = this.noOffset ? tooltipPadding : this.tooltip.offsetWidth / 2 - pos.width / 2;
const verticalOffset = this.noOffset ? tooltipPadding : this.tooltip.offsetHeight / 2 - pos.height / 2;
const style = {};
switch (direction) {

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -48,7 +48,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -89,7 +89,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -71,7 +71,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -134,7 +134,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -84,7 +84,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -91,7 +91,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -71,7 +71,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -89,7 +89,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -84,7 +84,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -84,7 +84,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -84,7 +84,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -84,7 +84,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -85,7 +85,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -85,7 +85,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -84,7 +84,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -71,7 +71,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -64,7 +64,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -159,7 +159,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 62,

View file

@ -91,7 +91,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -85,7 +85,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -40,7 +40,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 60,

View file

@ -45,7 +45,6 @@
}
},
"consumeOnUse": true,
"destroyOnEmpty": true,
"attribution": {
"source": "Daggerheart SRD",
"page": 61,

View file

@ -10,8 +10,5 @@
<span>{{localize "DAGGERHEART.ITEMS.Consumable.consumeOnUse"}}</span>
{{formField systemFields.consumeOnUse value=source.system.consumeOnUse}}
<span>{{localize "DAGGERHEART.ITEMS.Consumable.destroyOnEmpty"}}</span>
{{formField systemFields.destroyOnEmpty value=source.system.destroyOnEmpty}}
</fieldset>
</section>