diff --git a/module/data/fields/action/beastformField.mjs b/module/data/fields/action/beastformField.mjs index 25e3cf9c..832bd9f6 100644 --- a/module/data/fields/action/beastformField.mjs +++ b/module/data/fields/action/beastformField.mjs @@ -4,7 +4,25 @@ export default class BeastformField extends fields.SchemaField { constructor(options = {}, context = {}) { const beastformFields = { tierAccess: new fields.SchemaField({ - exact: new fields.NumberField({ integer: true, nullable: true, initial: null }) + exact: new fields.NumberField({ + integer: true, + nullable: true, + initial: null, + choices: () => { + const settingsTiers = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.LevelTiers + ).tiers; + return Object.values(settingsTiers).reduce( + (acc, tier) => { + acc[tier.tier] = game.i18n.localize(tier.name); + return acc; + }, + { 1: game.i18n.localize('DAGGERHEART.GENERAL.Tiers.1') } + ); + }, + hint: 'DAGGERHEART.ACTIONS.Config.beastform.exactHint' + }) }) }; super(beastformFields, options, context); diff --git a/module/data/item/beastform.mjs b/module/data/item/beastform.mjs index 4ebcfade..68c934ed 100644 --- a/module/data/item/beastform.mjs +++ b/module/data/item/beastform.mjs @@ -88,6 +88,26 @@ export default class DHBeastform extends BaseDataItem { /* -------------------------------------------- */ + get beastformAttackData() { + const effect = this.parent.effects.find(x => x.type === 'beastform'); + if (!effect) return null; + + const traitBonus = effect.changes.find(x => x.key === `system.traits.${this.mainTrait}.value`)?.value ?? 0; + const evasionBonus = effect.changes.find(x => x.key === 'system.evasion')?.value ?? 0; + + const damageDiceIndex = effect.changes.find(x => x.key === 'system.rules.attack.damage.diceIndex'); + const damageDice = damageDiceIndex ? Object.keys(CONFIG.DH.GENERAL.diceTypes)[damageDiceIndex.value] : null; + const damageBonus = effect.changes.find(x => x.key === 'system.rules.attack.damage.bonus')?.value ?? 0; + + return { + trait: game.i18n.localize(CONFIG.DH.ACTOR.abilities[this.mainTrait].label), + traitBonus: traitBonus ? Number(traitBonus).signedString() : '', + evasionBonus: evasionBonus ? Number(evasionBonus).signedString() : '', + damageDice: damageDice, + damageBonus: damageBonus ? `${Number(damageBonus).signedString()}` : '' + }; + } + async _preCreate() { if (!this.actor) return; diff --git a/module/documents/tooltipManager.mjs b/module/documents/tooltipManager.mjs index 974f5596..ec6c8d9e 100644 --- a/module/documents/tooltipManager.mjs +++ b/module/documents/tooltipManager.mjs @@ -161,7 +161,7 @@ export default class DhTooltipManager extends foundry.helpers.interaction.Toolti for (const [index, itemValue] of pathValue.entries()) { const itemIsAction = itemValue instanceof game.system.api.models.actions.actionsTypes.base; const value = itemIsAction || !itemValue?.item ? itemValue : itemValue.item; - const enrichedValue = await TextEditor.enrichHTML(value.description); + const enrichedValue = await TextEditor.enrichHTML(value.system?.description ?? value.description); if (itemIsAction) value.enrichedDescription = enrichedValue; else foundry.utils.setProperty(item, `${basePath}.${index}.enrichedDescription`, enrichedValue); } diff --git a/styles/less/ux/tooltip/tooltip.less b/styles/less/ux/tooltip/tooltip.less index 44f8ce1a..43f47da5 100644 --- a/styles/less/ux/tooltip/tooltip.less +++ b/styles/less/ux/tooltip/tooltip.less @@ -34,6 +34,10 @@ text-align: start; } + .simple-info { + font-style: italic; + } + .tooltip-sub-title { margin: 0; color: light-dark(@dark-blue, @beige); @@ -45,6 +49,10 @@ grid-template-columns: 1fr 1fr; gap: 4px; + &.spaced { + margin-top: 8px; + } + &.triple { grid-template-columns: 1fr 1fr 1fr; } diff --git a/templates/actionTypes/beastform.hbs b/templates/actionTypes/beastform.hbs index d7ddba7a..b2710208 100644 --- a/templates/actionTypes/beastform.hbs +++ b/templates/actionTypes/beastform.hbs @@ -4,14 +4,6 @@
{{localize "DAGGERHEART.ACTIONS.Config.beastform.exactHint"}}
-