This commit is contained in:
WBHarry 2025-07-26 19:05:56 +02:00
parent e6bfe08d83
commit e8c5cd8c9f
5 changed files with 45 additions and 8 deletions

View file

@ -1243,6 +1243,9 @@
"attack": { "attack": {
"damage": { "damage": {
"value": { "label": "Base Attack: Damage" } "value": { "label": "Base Attack: Damage" }
},
"roll": {
"trait": { "label": "Base Attack: Trait" }
} }
} }
}, },
@ -1593,6 +1596,10 @@
"hint": "test" "hint": "test"
} }
} }
},
"ResetSettings": {
"resetConfirmationTitle": "Reset Settings",
"resetConfirmationText": "Are you sure you want to reset the {settings}?"
} }
}, },
"UI": { "UI": {

View file

@ -136,10 +136,14 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli
...move, ...move,
name: game.i18n.localize(move.name), name: game.i18n.localize(move.name),
description: game.i18n.localize(move.description), description: game.i18n.localize(move.description),
actions: move.actions.map(action => ({ actions: Object.keys(move.actions).reduce((acc, key) => {
const action = move.actions[key];
acc[key] = {
...action, ...action,
name: game.i18n.localize(action.name) name: game.i18n.localize(action.name)
})) };
return acc;
}, {})
}; };
return acc; return acc;
@ -165,8 +169,18 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli
} }
static async reset() { static async reset() {
const confirmed = await foundry.applications.api.DialogV2.confirm({
window: {
title: game.i18n.format('DAGGERHEART.SETTINGS.ResetSettings.resetConfirmationTitle')
},
content: game.i18n.format('DAGGERHEART.SETTINGS.ResetSettings.resetConfirmationText', {
settings: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.homebrew.name')
})
});
if (!confirmed) return;
const resetSettings = new DhHomebrew(); const resetSettings = new DhHomebrew();
let localizedSettings = this.localizeObject(resetSettings); let localizedSettings = this.localizeObject(resetSettings.toObject());
this.settings.updateSource(localizedSettings); this.settings.updateSource(localizedSettings);
this.render(); this.render();
} }

View file

@ -81,6 +81,7 @@ export default class BeastformSheet extends DHBaseItemSheet {
case 'effects': case 'effects':
context.effects.actives = context.effects.actives.map(effect => { context.effects.actives = context.effects.actives.map(effect => {
const data = effect.toObject(); const data = effect.toObject();
data.uuid = effect.uuid;
data.id = effect.id; data.id = effect.id;
if (effect.type === 'beastform') data.mandatory = true; if (effect.type === 'beastform') data.mandatory = true;

View file

@ -141,6 +141,7 @@ export const defaultRestOptions = {
actions: { actions: {
tendToWounds: { tendToWounds: {
type: 'healing', type: 'healing',
systemPath: 'restMoves.shortRest.moves.tendToWounds.actions',
name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.tendToWounds.name'), name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.tendToWounds.name'),
img: 'icons/magic/life/cross-worn-green.webp', img: 'icons/magic/life/cross-worn-green.webp',
actionType: 'action', actionType: 'action',
@ -166,6 +167,7 @@ export const defaultRestOptions = {
actions: { actions: {
clearStress: { clearStress: {
type: 'healing', type: 'healing',
systemPath: 'restMoves.shortRest.moves.clearStress.actions',
name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.clearStress.name'), name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.clearStress.name'),
img: 'icons/magic/perception/eye-ringed-green.webp', img: 'icons/magic/perception/eye-ringed-green.webp',
actionType: 'action', actionType: 'action',
@ -191,6 +193,7 @@ export const defaultRestOptions = {
actions: { actions: {
repairArmor: { repairArmor: {
type: 'healing', type: 'healing',
systemPath: 'restMoves.shortRest.moves.repairArmor.actions',
name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.repairArmor.name'), name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.repairArmor.name'),
img: 'icons/skills/trades/smithing-anvil-silver-red.webp', img: 'icons/skills/trades/smithing-anvil-silver-red.webp',
actionType: 'action', actionType: 'action',
@ -226,6 +229,7 @@ export const defaultRestOptions = {
actions: { actions: {
tendToWounds: { tendToWounds: {
type: 'healing', type: 'healing',
systemPath: 'restMoves.longRest.moves.tendToWounds.actions',
name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.tendToWounds.name'), name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.tendToWounds.name'),
img: 'icons/magic/life/cross-worn-green.webp', img: 'icons/magic/life/cross-worn-green.webp',
actionType: 'action', actionType: 'action',
@ -251,6 +255,7 @@ export const defaultRestOptions = {
actions: { actions: {
clearStress: { clearStress: {
type: 'healing', type: 'healing',
systemPath: 'restMoves.longRest.moves.clearStress.actions',
name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.clearStress.name'), name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.clearStress.name'),
img: 'icons/magic/perception/eye-ringed-green.webp', img: 'icons/magic/perception/eye-ringed-green.webp',
actionType: 'action', actionType: 'action',
@ -276,6 +281,7 @@ export const defaultRestOptions = {
actions: { actions: {
repairArmor: { repairArmor: {
type: 'healing', type: 'healing',
systemPath: 'restMoves.longRest.moves.repairArmor.actions',
name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.repairArmor.name'), name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.repairArmor.name'),
img: 'icons/skills/trades/smithing-anvil-silver-red.webp', img: 'icons/skills/trades/smithing-anvil-silver-red.webp',
actionType: 'action', actionType: 'action',

View file

@ -204,7 +204,7 @@ export default class DhCharacter extends BaseDataActor {
}) })
}) })
}), }),
maxLoadout : new fields.NumberField({ maxLoadout: new fields.NumberField({
integer: true, integer: true,
initial: 0, initial: 0,
label: 'DAGGERHEART.GENERAL.Bonuses.maxLoadout.label' label: 'DAGGERHEART.GENERAL.Bonuses.maxLoadout.label'
@ -249,6 +249,13 @@ export default class DhCharacter extends BaseDataActor {
initial: '@profd4', initial: '@profd4',
label: 'DAGGERHEART.GENERAL.Rules.attack.damage.value.label' label: 'DAGGERHEART.GENERAL.Rules.attack.damage.value.label'
}) })
}),
roll: new fields.SchemaField({
trait: new fields.StringField({
required: true,
initial: CONFIG.DH.ACTOR.abilities.strength.id,
label: 'DAGGERHEART.GENERAL.Rules.attack.roll.trait.label'
})
}) })
}), }),
weapon: new fields.SchemaField({ weapon: new fields.SchemaField({
@ -329,13 +336,15 @@ export default class DhCharacter extends BaseDataActor {
get loadoutSlot() { get loadoutSlot() {
const loadoutCount = this.domainCards.loadout?.length ?? 0, const loadoutCount = this.domainCards.loadout?.length ?? 0,
max = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxLoadout + this.bonuses.maxLoadout; max =
game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxLoadout +
this.bonuses.maxLoadout;
return { return {
current: loadoutCount, current: loadoutCount,
available: Math.max(max - loadoutCount, 0), available: Math.max(max - loadoutCount, 0),
max max
} };
} }
get armor() { get armor() {