Impproved Adversary Sheet Data Display

Fixes #604
This commit is contained in:
Joaquin Pereyra 2025-08-09 16:08:15 -03:00
parent 263e36500e
commit 8156aa6016
127 changed files with 481 additions and 300 deletions

View file

@ -42,4 +42,34 @@ export default class DHAttackAction extends DHDamageAction {
return result;
}
/**
* Generate a localized label array for this item subtype.
* @returns {(string | { value: string, icons: string[] })[]} An array of localized strings and damage label objects.
*/
_getLabels() {
const labels = [];
const { roll, range, damage } = this;
if (roll.trait) labels.push(game.i18n.localize(`DAGGERHEART.CONFIG.Traits.${roll.trait}.short`))
labels.push(game.i18n.localize(`DAGGERHEART.CONFIG.Range.${range}.short`));
for (const { value, type } of damage.parts) {
const str = [value.dice];
if (value.bonus) str.push(value.bonus.signedString());
const icons = Array.from(type)
.map(t => CONFIG.DH.GENERAL.damageTypes[t]?.icon)
.filter(Boolean);
const labelValue = str.join('');
if (icons.length === 0) {
labels.push(labelValue);
} else {
labels.push({ value: labelValue, icons });
}
}
return labels;
}
}

View file

@ -103,7 +103,7 @@ export default class DhCharacter extends BaseDataActor {
}),
attack: new ActionField({
initial: {
name: 'Attack',
name: 'Unarmed Attack',
img: 'icons/skills/melee/unarmed-punch-fist-yellow-red.webp',
_id: foundry.utils.randomID(),
systemPath: 'attack',
@ -395,19 +395,22 @@ export default class DhCharacter extends BaseDataActor {
return this.parent.effects.find(x => x.type === 'beastform');
}
/**
* Gets the unarmed attackwhen no primary or secondary weapon is equipped.
* Returns `null` if either weapon is equipped.
* If the actor is in beastform, overrides the attack's name and image.
*
* @returns {DHAttackAction|null}
*/
get usedUnarmed() {
const primaryWeaponEquipped = this.primaryWeapon?.system?.equipped;
const secondaryWeaponEquipped = this.secondaryWeapon?.system?.equipped;
return !primaryWeaponEquipped && !secondaryWeaponEquipped
? {
...this.attack,
uuid: this.attack.uuid,
id: this.attack.id,
name: this.activeBeastform ? 'DAGGERHEART.ITEMS.Beastform.attackName' : this.attack.name,
img: this.activeBeastform ? 'icons/creatures/claws/claw-straight-brown.webp' : this.attack.img,
actor: this.parent
}
: null;
if (this.primaryWeapon?.system?.equipped || this.secondaryWeapon?.system?.equipped) return null;
const attack = foundry.utils.deepClone(this.attack);
if (this.activeBeastform) {
attack.name = 'DAGGERHEART.ITEMS.Beastform.attackName';
attack.img = 'icons/creatures/claws/claw-straight-brown.webp';
}
return attack;
}
get sheetLists() {