diff --git a/lang/en.json b/lang/en.json index a8ceef69..b285a9eb 100755 --- a/lang/en.json +++ b/lang/en.json @@ -2086,7 +2086,7 @@ "FIELDS": { "maxFear": { "label": "Max Fear" }, "traitArray": { "label": "Initial Trait Modifiers" }, - "maxLoadout": { "label": "Max Cards in Loadout" } + "maxLoadout": { "label": "Max Cards in Loadout", "hint": "Set to blank or 0 for unlimited maximum" } }, "currency": { "enabled": "Enable Overrides", @@ -2276,7 +2276,7 @@ "beastformToManyAdvantages": "You cannot select any more advantages.", "beastformToManyFeatures": "You cannot select any more features.", "beastformEquipWeapon": "You cannot use weapons while in a Beastform.", - "loadoutMaxReached": "You already have {max} cards in your loadout. Move atleast one to your vault before adding a new one.", + "loadoutMaxReached": "You've reached maximum loadout. Move atleast one domain card to the vault.", "insufficientResources": "You have insufficient resources", "multiclassAlreadyPresent": "You already have a class and multiclass", "subclassesAlreadyPresent": "You already have a class and multiclass subclass" diff --git a/module/applications/sheets/actors/character.mjs b/module/applications/sheets/actors/character.mjs index 6e38e25d..76ca7562 100644 --- a/module/applications/sheets/actors/character.mjs +++ b/module/applications/sheets/actors/character.mjs @@ -266,9 +266,7 @@ export default class CharacterSheet extends DHBaseActorSheet { const doc = await getDocFromElement(target); const actorLoadout = doc.actor.system.loadoutSlot; if (actorLoadout.available) return doc.update({ 'system.inVault': false }); - ui.notifications.warn( - game.i18n.format('DAGGERHEART.UI.Notifications.loadoutMaxReached', { max: actorLoadout.max }) - ); + ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.loadoutMaxReached')); } }, { @@ -686,6 +684,11 @@ export default class CharacterSheet extends DHBaseActorSheet { */ static async #toggleVault(_event, button) { const doc = await getDocFromElement(button); + const { available } = this.document.system.loadoutSlot; + if (doc.system.inVault && !available) { + return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.loadoutMaxReached')); + } + await doc?.update({ 'system.inVault': !doc.system.inVault }); } diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index 83311c96..cd84f673 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -362,13 +362,12 @@ export default class DhCharacter extends BaseDataActor { get loadoutSlot() { const loadoutCount = this.domainCards.loadout?.length ?? 0, - max = - game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxLoadout + - this.bonuses.maxLoadout; + worldSetting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxLoadout, + max = !worldSetting ? null : worldSetting + this.bonuses.maxLoadout; return { current: loadoutCount, - available: Math.max(max - loadoutCount, 0), + available: !max ? true : Math.max(max - loadoutCount, 0), max }; } diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index ef968b47..4dad59c7 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -318,8 +318,16 @@ export default class DhpActor extends Actor { for (var domainCard of domainCards) { if (levelupAuto) { - const item = await foundry.utils.fromUuid(domainCard.data[0]); - const embeddedItem = await this.createEmbeddedDocuments('Item', [item.toObject()]); + const itemData = (await foundry.utils.fromUuid(domainCard.data[0])).toObject(); + const embeddedItem = await this.createEmbeddedDocuments('Item', [ + { + ...itemData, + system: { + ...itemData.system, + inVault: true + } + } + ]); selections.push({ ...domainCard, itemUuid: embeddedItem[0].uuid }); } else { selections.push({ ...domainCard }); @@ -329,8 +337,16 @@ export default class DhpActor extends Actor { const achievementDomainCards = []; if (levelupAuto) { for (var card of Object.values(level.achievements.domainCards)) { - const item = await foundry.utils.fromUuid(card.uuid); - const embeddedItem = await this.createEmbeddedDocuments('Item', [item.toObject()]); + const itemData = (await foundry.utils.fromUuid(card.uuid)).toObject(); + const embeddedItem = await this.createEmbeddedDocuments('Item', [ + { + ...itemData, + system: { + ...itemData.system, + inVault: true + } + } + ]); card.itemUuid = embeddedItem[0].uuid; achievementDomainCards.push(card); } diff --git a/styles/less/ui/settings/settings.less b/styles/less/ui/settings/settings.less index 0ba6f094..3033b4e7 100644 --- a/styles/less/ui/settings/settings.less +++ b/styles/less/ui/settings/settings.less @@ -126,4 +126,16 @@ } } } + + .settings-hint { + width: 100%; + display: flex; + justify-content: end; + + label { + width: 240px; + font-style: italic; + text-align: center; + } + } } diff --git a/templates/settings/homebrew-settings.hbs b/templates/settings/homebrew-settings.hbs index 6bfcbb9c..152723cd 100644 --- a/templates/settings/homebrew-settings.hbs +++ b/templates/settings/homebrew-settings.hbs @@ -4,6 +4,7 @@ {{formGroup settingFields.schema.fields.maxFear value=settingFields._source.maxFear localize=true}} {{formGroup settingFields.schema.fields.maxLoadout value=settingFields._source.maxLoadout localize=true}} +