diff --git a/templates/sheets/global/partials/inventory-item-V2.hbs b/templates/sheets/global/partials/inventory-item-V2.hbs
index 71b06202..10ff20eb 100644
--- a/templates/sheets/global/partials/inventory-item-V2.hbs
+++ b/templates/sheets/global/partials/inventory-item-V2.hbs
@@ -186,7 +186,7 @@ Parameters:
{{/if}}
{{#if (and (not hideResources) item.system.quantity)}}
{{/if}}
diff --git a/templates/sheets/global/partials/item-resource.hbs b/templates/sheets/global/partials/item-resource.hbs
index d90f0b3f..b29c818e 100644
--- a/templates/sheets/global/partials/item-resource.hbs
+++ b/templates/sheets/global/partials/item-resource.hbs
@@ -1,7 +1,7 @@
{{#if (eq item.system.resource.type 'simple')}}
From 26e3c38aa974fee887a283151ee2c78bbb89b684 Mon Sep 17 00:00:00 2001
From: Dapoulp <74197441+Dapoulp@users.noreply.github.com>
Date: Fri, 25 Jul 2025 18:04:56 +0200
Subject: [PATCH 2/5] Fix Healing Action target (#409)
---
module/data/action/healingAction.mjs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/module/data/action/healingAction.mjs b/module/data/action/healingAction.mjs
index b2cdf385..48aa4146 100644
--- a/module/data/action/healingAction.mjs
+++ b/module/data/action/healingAction.mjs
@@ -28,7 +28,7 @@ export default class DHHealingAction extends DHBaseAction {
healing: game.i18n.localize(CONFIG.DH.GENERAL.healingTypes[this.healing.applyTo].label)
}),
roll: formulas,
- targets: (data.system?.targets ?? data.targets).filter(t => t.hit),
+ targets: systemData.targets?.filter(t => t.hit),
messageType: 'healing',
source: systemData.source,
data: this.getRollData(),
From 3f95740b7a2f8b4a47c12f3d75a7588b925f6bbe Mon Sep 17 00:00:00 2001
From: Dapoulp <74197441+Dapoulp@users.noreply.github.com>
Date: Fri, 25 Jul 2025 19:13:21 +0200
Subject: [PATCH 3/5] Reduce Action Selection click number & Style Action Type
Dialog (#408)
* Reduce Action Selection click number & Style Action Type Dialog
* fixes
* Action Select buttons color
---
lang/en.json | 21 +-
module/applications/dialogs/_module.mjs | 1 +
.../dialogs/actionSelectionDialog.mjs | 87 +++
.../sheets-configs/action-config.mjs | 2 +-
module/config/actionConfig.mjs | 45 +-
module/data/fields/actionField.mjs | 7 +-
module/documents/item.mjs | 32 +-
styles/less/dialog/actions/action-list.less | 48 +-
styles/less/global/elements.css | 618 ------------------
styles/less/global/elements.less | 13 +
styles/less/global/inventory-item.less | 2 +-
templates/actionTypes/actionType.hbs | 7 +-
templates/actionTypes/effect.hbs | 21 +-
templates/dialogs/actionSelect.hbs | 8 +-
14 files changed, 228 insertions(+), 684 deletions(-)
create mode 100644 module/applications/dialogs/actionSelectionDialog.mjs
delete mode 100644 styles/less/global/elements.css
diff --git a/lang/en.json b/lang/en.json
index bf2f0fc3..29a444f7 100755
--- a/lang/en.json
+++ b/lang/en.json
@@ -49,25 +49,32 @@
},
"TYPES": {
"attack": {
- "name": "Attack"
+ "name": "Attack",
+ "tooltip": "Offensive Action like weapon attack, spellcast, etc."
},
"beastform": {
- "name": "Beastform"
+ "name": "Beastform",
+ "tooltip": "Shapeshift the user into another form."
},
"damage": {
- "name": "Damage"
+ "name": "Damage",
+ "tooltip": "Direct damage without a roll."
},
"effect": {
- "name": "Effect"
+ "name": "Generic",
+ "tooltip": "Generic action that only display a chat message if nothing is configured."
},
"healing": {
- "name": "Healing"
+ "name": "Healing",
+ "tooltip": "Restore resources to the target. May have a roll configured."
},
"macro": {
- "name": "Macro"
+ "name": "Macro",
+ "tooltip": "Execute a macro by UUID."
},
"summon": {
- "name": "Summon"
+ "name": "Summon",
+ "tooltip": "Create tokens in the scene."
}
}
},
diff --git a/module/applications/dialogs/_module.mjs b/module/applications/dialogs/_module.mjs
index bbffb791..f9b40f3f 100644
--- a/module/applications/dialogs/_module.mjs
+++ b/module/applications/dialogs/_module.mjs
@@ -7,3 +7,4 @@ export { default as DeathMove } from './deathMove.mjs';
export { default as Downtime } from './downtime.mjs';
export { default as OwnershipSelection } from './ownershipSelection.mjs';
export { default as ResourceDiceDialog } from './resourceDiceDialog.mjs';
+export { default as ActionSelectionDialog } from './actionSelectionDialog.mjs';
diff --git a/module/applications/dialogs/actionSelectionDialog.mjs b/module/applications/dialogs/actionSelectionDialog.mjs
new file mode 100644
index 00000000..c029be24
--- /dev/null
+++ b/module/applications/dialogs/actionSelectionDialog.mjs
@@ -0,0 +1,87 @@
+const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api;
+
+export default class ActionSelectionDialog extends HandlebarsApplicationMixin(ApplicationV2) {
+ constructor(item, event, options={}) {
+ super(options);
+ this.#item = item;
+ this.#event = event;
+ }
+
+ /* -------------------------------------------- */
+
+ /** @override */
+ static DEFAULT_OPTIONS = {
+ classes: ['daggerheart', 'dh-style', 'dialog'],
+ actions: {
+ choose: ActionSelectionDialog.#onChooseAction
+ },
+ position: {
+ width: 400
+ }
+ };
+
+ /* -------------------------------------------- */
+
+ static PARTS = {
+ actions: {
+ template: "systems/daggerheart/templates/dialogs/actionSelect.hbs"
+ }
+ };
+
+ #item;
+
+ get item() {
+ return this.#item;
+ }
+
+ #event;
+
+ get event() {
+ return this.#event;
+ }
+
+ #action;
+
+ get action() {
+ return this.#action ?? null;
+ }
+
+ /* -------------------------------------------- */
+
+ /** @override */
+ get title() {
+ return game.i18n.localize('DAGGERHEART.CONFIG.SelectAction.selectAction');
+ }
+
+ /* -------------------------------------------- */
+
+ /** @inheritDoc */
+ async _prepareContext(options) {
+ const actions = this.#item.system.actionsList,
+ itemName = this.#item.name;
+ return {
+ ...await super._prepareContext(options),
+ actions,
+ itemName
+ }
+ }
+
+ static async #onChooseAction(event, button) {
+ const { actionId } = button.dataset;
+ this.#action = this.#item.system.actionsList.find(a => a._id === actionId);
+ Object.defineProperty(this.#event, 'shiftKey', {
+ get() {
+ return event.shiftKey;
+ }
+ });
+ this.close();
+ }
+
+ static create(item, event, options) {
+ return new Promise(resolve => {
+ const dialog = new this(item, event, options);
+ dialog.addEventListener("close", () => resolve(dialog.action), { once: true });
+ dialog.render({ force: true });
+ });
+ }
+}
\ No newline at end of file
diff --git a/module/applications/sheets-configs/action-config.mjs b/module/applications/sheets-configs/action-config.mjs
index f6b9932f..92aa9dcd 100644
--- a/module/applications/sheets-configs/action-config.mjs
+++ b/module/applications/sheets-configs/action-config.mjs
@@ -236,7 +236,7 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) {
if (!this.action.effects) return;
const index = button.dataset.index,
effectId = this.action.effects[index]._id;
- this.constructor.removeElement.bind(this)(event);
+ this.constructor.removeElement.bind(this)(event, button);
this.action.item.deleteEmbeddedDocuments('ActiveEffect', [effectId]);
}
diff --git a/module/config/actionConfig.mjs b/module/config/actionConfig.mjs
index 5600ae72..f6fa41f6 100644
--- a/module/config/actionConfig.mjs
+++ b/module/config/actionConfig.mjs
@@ -2,37 +2,44 @@ export const actionTypes = {
attack: {
id: 'attack',
name: 'DAGGERHEART.ACTIONS.TYPES.attack.name',
- icon: 'fa-swords'
+ icon: 'fa-khanda',
+ tooltip: 'DAGGERHEART.ACTIONS.TYPES.attack.tooltip'
},
healing: {
id: 'healing',
name: 'DAGGERHEART.ACTIONS.TYPES.healing.name',
- icon: 'fa-kit-medical'
+ icon: 'fa-kit-medical',
+ tooltip: 'DAGGERHEART.ACTIONS.TYPES.healing.tooltip'
},
damage: {
id: 'damage',
name: 'DAGGERHEART.ACTIONS.TYPES.damage.name',
- icon: 'fa-bone-break'
- },
- summon: {
- id: 'summon',
- name: 'DAGGERHEART.ACTIONS.TYPES.summon.name',
- icon: 'fa-ghost'
- },
- effect: {
- id: 'effect',
- name: 'DAGGERHEART.ACTIONS.TYPES.effect.name',
- icon: 'fa-person-rays'
- },
- macro: {
- id: 'macro',
- name: 'DAGGERHEART.ACTIONS.TYPES.macro.name',
- icon: 'fa-scroll'
+ icon: 'fa-heart-crack',
+ tooltip: 'DAGGERHEART.ACTIONS.TYPES.damage.tooltip'
},
beastform: {
id: 'beastform',
name: 'DAGGERHEART.ACTIONS.TYPES.beastform.name',
- icon: 'fa-paw'
+ icon: 'fa-paw',
+ tooltip: 'DAGGERHEART.ACTIONS.TYPES.beastform.tooltip'
+ },
+ summon: {
+ id: 'summon',
+ name: 'DAGGERHEART.ACTIONS.TYPES.summon.name',
+ icon: 'fa-ghost',
+ tooltip: 'DAGGERHEART.ACTIONS.TYPES.summon.tooltip'
+ },
+ effect: {
+ id: 'effect',
+ name: 'DAGGERHEART.ACTIONS.TYPES.effect.name',
+ icon: 'fa-person-rays',
+ tooltip: 'DAGGERHEART.ACTIONS.TYPES.effect.tooltip'
+ },
+ macro: {
+ id: 'macro',
+ name: 'DAGGERHEART.ACTIONS.TYPES.macro.name',
+ icon: 'fa-scroll',
+ tooltip: 'DAGGERHEART.ACTIONS.TYPES.macro.tooltip'
}
};
diff --git a/module/data/fields/actionField.mjs b/module/data/fields/actionField.mjs
index bc28943a..74379ac1 100644
--- a/module/data/fields/actionField.mjs
+++ b/module/data/fields/actionField.mjs
@@ -168,9 +168,14 @@ export function ActionMixin(Base) {
({ type } =
(await foundry.applications.api.DialogV2.input({
window: { title: 'Select Action Type' },
+ position: { width: 300 },
+ classes: ['daggerheart', 'dh-style'],
content: await foundry.applications.handlebars.renderTemplate(
'systems/daggerheart/templates/actionTypes/actionType.hbs',
- { types: CONFIG.DH.ACTIONS.actionTypes }
+ {
+ types: CONFIG.DH.ACTIONS.actionTypes,
+ itemName: parent.parent?.name
+ }
),
ok: {
label: game.i18n.format('DOCUMENT.Create', {
diff --git a/module/documents/item.mjs b/module/documents/item.mjs
index 4bad4fdc..e75547f3 100644
--- a/module/documents/item.mjs
+++ b/module/documents/item.mjs
@@ -1,3 +1,5 @@
+import ActionSelectionDialog from "../applications/dialogs/actionSelectionDialog.mjs";
+
/**
* Override and extend the basic Item implementation.
* @extends {foundry.documents.Item}
@@ -94,41 +96,13 @@ export default class DHItem extends foundry.documents.Item {
});
}
- async selectActionDialog(prevEvent) {
- const content = await foundry.applications.handlebars.renderTemplate(
- 'systems/daggerheart/templates/dialogs/actionSelect.hbs',
- {
- actions: this.system.actionsList,
- itemName: this.name
- }
- ),
- title = game.i18n.localize('DAGGERHEART.CONFIG.SelectAction.selectAction');
-
- return foundry.applications.api.DialogV2.prompt({
- window: { title },
- classes: ['daggerheart', 'dh-style'],
- content,
- ok: {
- label: title,
- callback: (event, button, dialog) => {
- Object.defineProperty(prevEvent, 'shiftKey', {
- get() {
- return event.shiftKey;
- }
- });
- return this.system.actionsList.find(a => a._id === button.form.elements.actionId.value);
- }
- }
- });
- }
-
async use(event) {
const actions = new Set(this.system.actionsList);
if (actions?.size) {
let action = actions.first();
if (actions.size > 1 && !event?.shiftKey) {
// Actions Choice Dialog
- action = await this.selectActionDialog(event);
+ action = await ActionSelectionDialog.create(this, event);
}
if (action) return action.use(event);
}
diff --git a/styles/less/dialog/actions/action-list.less b/styles/less/dialog/actions/action-list.less
index 1f405b5d..f51e9a60 100644
--- a/styles/less/dialog/actions/action-list.less
+++ b/styles/less/dialog/actions/action-list.less
@@ -1,18 +1,62 @@
@import '../../utils/fonts.less';
.application.daggerheart.dh-style {
- .actions-list {
+
+ .actions-list, .action-buttons-list {
display: flex;
flex-direction: column;
- gap: 10px;
.action-item {
display: flex;
align-items: center;
gap: 5px;
+ }
+ }
+
+ .action-buttons-list {
+ gap: 10px;
+ button {
+ flex: 1;
+ display: flex;
+ padding: 6px 40px 6px 6px;
+ height: fit-content;
+ img {
+ width: 30px;
+ }
+ span {
+ font-family: @font-body;
+ flex: 1;
+ font-weight: bold;
+ }
+ }
+ }
+
+ .actions-list {
+ gap: 5px;
+
+ .action-item {
+ &:hover {
+ background-color: rgba(255,255,255,.05);
+ }
+ padding: 5px;
+ border-radius: 5px;
+ transition: background-color .3s ease-in-out;
.label {
+ display: flex;
+ align-items: center;
+ gap: 10px;
font-family: @font-body;
+ cursor: pointer;
+ flex: 1;
+ i {
+ text-align: center;
+ width: 30px;
+ }
+ }
+
+ input[type="radio"] {
+ margin-left: auto;
}
}
}
diff --git a/styles/less/global/elements.css b/styles/less/global/elements.css
deleted file mode 100644
index 5c9d36d1..00000000
--- a/styles/less/global/elements.css
+++ /dev/null
@@ -1,618 +0,0 @@
-@keyframes glow {
- 0% {
- box-shadow: 0 0 1px 1px #f3c267;
- }
- 100% {
- box-shadow: 0 0 2px 2px #f3c267;
- }
-}
-@keyframes glow-dark {
- 0% {
- box-shadow: 0 0 1px 1px #18162e;
- }
- 100% {
- box-shadow: 0 0 2px 2px #18162e;
- }
-}
-@font-face {
- font-family: 'Cinzel';
- font-style: normal;
- font-weight: 400;
- font-display: swap;
- src: url(https://fonts.gstatic.com/s/cinzel/v25/8vIU7ww63mVu7gtR-kwKxNvkNOjw-tbnTYo.ttf) format('truetype');
-}
-@font-face {
- font-family: 'Cinzel';
- font-style: normal;
- font-weight: 700;
- font-display: swap;
- src: url(https://fonts.gstatic.com/s/cinzel/v25/8vIU7ww63mVu7gtR-kwKxNvkNOjw-jHgTYo.ttf) format('truetype');
-}
-@font-face {
- font-family: 'Cinzel Decorative';
- font-style: normal;
- font-weight: 700;
- font-display: swap;
- src: url(https://fonts.gstatic.com/s/cinzeldecorative/v18/daaHSScvJGqLYhG8nNt8KPPswUAPniZoaelD.ttf)
- format('truetype');
-}
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 400;
- font-display: swap;
- src: url(https://fonts.gstatic.com/s/montserrat/v30/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew-.ttf) format('truetype');
-}
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 600;
- font-display: swap;
- src: url(https://fonts.gstatic.com/s/montserrat/v30/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCu170w-.ttf) format('truetype');
-}
-.application.sheet.daggerheart.dh-style h1 {
- font-family: 'Cinzel Decorative', serif;
- margin: 0;
- border: none;
- font-weight: normal;
-}
-.application.sheet.daggerheart.dh-style h2,
-.application.sheet.daggerheart.dh-style h3 {
- font-family: 'Cinzel', serif;
- margin: 0;
- border: none;
- font-weight: normal;
-}
-.application.sheet.daggerheart.dh-style h4 {
- font-family: 'Montserrat', sans-serif;
- font-size: 14px;
- border: none;
- font-weight: 700;
- margin: 0;
- text-shadow: none;
- color: #f3c267;
- font-weight: normal;
-}
-.application.sheet.daggerheart.dh-style h5 {
- font-size: 14px;
- color: #f3c267;
- margin: 0;
- font-weight: normal;
-}
-.application.sheet.daggerheart.dh-style p,
-.application.sheet.daggerheart.dh-style span {
- font-family: 'Montserrat', sans-serif;
-}
-.application.sheet.daggerheart.dh-style small {
- font-family: 'Montserrat', sans-serif;
- opacity: 0.8;
-}
-.application.dh-style {
- border: 1px solid light-dark(#18162e, #f3c267);
-}
-.application.dh-style input[type='text'],
-.application.dh-style input[type='number'] {
- background: light-dark(transparent, transparent);
- border-radius: 6px;
- box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05);
- backdrop-filter: blur(9.5px);
- -webkit-backdrop-filter: blur(9.5px);
- outline: none;
- color: light-dark(#18162e, #f3c267);
- border: 1px solid light-dark(#222, #efe6d8);
-}
-.application.dh-style input[type='text']:hover[type='text'],
-.application.dh-style input[type='number']:hover[type='text'],
-.application.dh-style input[type='text']:hover[type='number'],
-.application.dh-style input[type='number']:hover[type='number'],
-.application.dh-style input[type='text']:focus[type='text'],
-.application.dh-style input[type='number']:focus[type='text'],
-.application.dh-style input[type='text']:focus[type='number'],
-.application.dh-style input[type='number']:focus[type='number'] {
- background: light-dark(rgba(0, 0, 0, 0.05), rgba(24, 22, 46, 0.33));
- box-shadow: none;
- outline: 2px solid light-dark(#222, #efe6d8);
-}
-.application.dh-style input[type='text']:disabled[type='text'],
-.application.dh-style input[type='number']:disabled[type='text'],
-.application.dh-style input[type='text']:disabled[type='number'],
-.application.dh-style input[type='number']:disabled[type='number'] {
- outline: 2px solid transparent;
- cursor: not-allowed;
-}
-.application.dh-style input[type='text']:disabled[type='text']:hover,
-.application.dh-style input[type='number']:disabled[type='text']:hover,
-.application.dh-style input[type='text']:disabled[type='number']:hover,
-.application.dh-style input[type='number']:disabled[type='number']:hover {
- background: transparent;
-}
-.application.dh-style input[type='checkbox']:checked::after,
-.application.dh-style input[type='radio']:checked::after {
- color: light-dark(#222, #f3c267);
-}
-.application.dh-style input[type='checkbox']:checked::before,
-.application.dh-style input[type='radio']:checked::before {
- color: light-dark(#22222240, #f3c26740);
-}
-.application.dh-style input[type='checkbox']::before,
-.application.dh-style input[type='radio']::before {
- color: light-dark(#22222240, #f3c26740);
-}
-.application.dh-style button {
- background: light-dark(transparent, #f3c267);
- border: 1px solid light-dark(#18162e, #18162e);
- color: light-dark(#18162e, #18162e);
- outline: none;
- box-shadow: none;
-}
-.application.dh-style button:hover {
- background: light-dark(rgba(0, 0, 0, 0.3), #18162e);
- color: light-dark(#18162e, #f3c267);
-}
-.application.dh-style button.glow {
- animation: glow 0.75s infinite alternate;
-}
-.application.dh-style button:disabled {
- background: light-dark(transparent, #f3c267);
- color: light-dark(#18162e, #18162e);
- opacity: 0.6;
- cursor: not-allowed;
-}
-.application.dh-style button:disabled:hover {
- background: light-dark(transparent, #f3c267);
- color: light-dark(#18162e, #18162e);
-}
-.application.dh-style select {
- background: light-dark(transparent, transparent);
- color: light-dark(#222, #efe6d8);
- font-family: 'Montserrat', sans-serif;
- outline: 2px solid transparent;
- border: 1px solid light-dark(#222, #efe6d8);
-}
-.application.dh-style select:focus,
-.application.dh-style select:hover {
- outline: 2px solid light-dark(#222, #efe6d8);
- box-shadow: none;
-}
-.application.dh-style select option,
-.application.dh-style select optgroup {
- color: #efe6d8;
- background-color: #18162e;
- border-radius: 6px;
-}
-.application.dh-style select:disabled {
- opacity: 0.6;
- outline: 2px solid transparent;
- cursor: not-allowed;
-}
-.application.dh-style multi-select {
- position: relative;
- height: 34px;
-}
-.application.dh-style multi-select .tags {
- justify-content: flex-start;
- margin: 4px;
- height: inherit;
-}
-.application.dh-style multi-select .tags .tag {
- padding: 0.3rem 0.5rem;
- color: light-dark(#18162e, #f3c267);
- background-color: light-dark(#18162e10, #f3c26740);
- font-family: 'Montserrat', sans-serif;
- border-radius: 3px;
- transition: 0.13s ease-out;
- gap: 0.5rem;
- z-index: 1;
-}
-.application.dh-style multi-select .tags .tag .remove {
- font-size: 10px;
-}
-.application.dh-style multi-select select {
- position: absolute;
- height: inherit;
- outline: initial;
-}
-.application.dh-style p {
- margin: 0;
-}
-.application.dh-style ul {
- margin: 0;
- padding: 0;
- list-style: none;
-}
-.application.dh-style li {
- margin: 0;
-}
-.application.dh-style a:hover,
-.application.dh-style a.active {
- font-weight: bold;
- text-shadow: 0 0 8px light-dark(#18162e, #f3c267);
-}
-.application.dh-style fieldset {
- align-items: center;
- margin-top: 5px;
- border-radius: 6px;
- border-color: light-dark(#18162e, #f3c267);
-}
-.application.dh-style fieldset.glassy {
- background-color: light-dark(#18162e10, #f3c26710);
- border-color: transparent;
-}
-.application.dh-style fieldset.glassy legend {
- padding: 2px 12px;
- border-radius: 3px;
- background-color: light-dark(#18162e, #f3c267);
- color: light-dark(#efe6d8, #18162e);
-}
-.application.dh-style fieldset.fit-height {
- height: 95%;
-}
-.application.dh-style fieldset.flex {
- display: flex;
- gap: 20px;
-}
-.application.dh-style fieldset.flex.wrap {
- flex-wrap: wrap;
- gap: 10px 20px;
-}
-.application.dh-style fieldset.flex .inline-child {
- flex: 1;
-}
-.application.dh-style fieldset .list-w-img {
- padding: 5px;
-}
-.application.dh-style fieldset .list-w-img label {
- flex: 1;
-}
-.application.dh-style fieldset .list-w-img img {
- width: 2rem;
- height: 2rem;
-}
-.application.dh-style fieldset.one-column {
- display: flex;
- flex-direction: column;
- align-items: start;
- gap: 10px;
- min-height: 64px;
- flex: 1;
-}
-.application.dh-style fieldset.one-column > .one-column {
- width: 100%;
-}
-.application.dh-style fieldset.two-columns {
- display: grid;
- grid-template-columns: 1fr 2fr;
- gap: 10px;
-}
-.application.dh-style fieldset.two-columns.even {
- grid-template-columns: 1fr 1fr;
-}
-.application.dh-style fieldset.two-columns .full-width {
- grid-column: span 2;
-}
-.application.dh-style fieldset legend {
- font-family: 'Montserrat', sans-serif;
- font-weight: bold;
- color: light-dark(#18162e, #f3c267);
-}
-.application.dh-style fieldset input[type='text'],
-.application.dh-style fieldset input[type='number'] {
- color: light-dark(#222, #efe6d8);
- font-family: 'Montserrat', sans-serif;
- transition: all 0.3s ease;
- outline: 2px solid transparent;
-}
-.application.dh-style fieldset input[type='text']:focus,
-.application.dh-style fieldset input[type='number']:focus,
-.application.dh-style fieldset input[type='text']:hover,
-.application.dh-style fieldset input[type='number']:hover {
- outline: 2px solid light-dark(#222, #efe6d8);
-}
-.application.dh-style fieldset[disabled],
-.application.dh-style fieldset.child-disabled .form-group,
-.application.dh-style fieldset select[disabled],
-.application.dh-style fieldset input[disabled] {
- opacity: 0.5;
-}
-.application.dh-style fieldset.child-disabled .form-group {
- pointer-events: none;
-}
-.application.dh-style fieldset .nest-inputs {
- display: flex;
- align-items: center;
- width: 100%;
- gap: 5px;
-}
-.application.dh-style fieldset .nest-inputs .btn {
- padding-top: 15px;
-}
-.application.dh-style fieldset .nest-inputs .image {
- height: 40px;
- width: 40px;
- object-fit: cover;
- border-radius: 6px;
- border: none;
-}
-.application.dh-style fieldset .nest-inputs > .checkbox {
- align-self: end;
-}
-.application.dh-style fieldset .form-group {
- width: 100%;
-}
-.application.dh-style fieldset .form-group label {
- font-family: 'Montserrat', sans-serif;
- font-weight: bold;
- font-size: smaller;
-}
-.application.dh-style fieldset .form-group.checkbox {
- width: fit-content;
- display: flex;
- align-items: center;
-}
-.application.dh-style fieldset .form-group.checkbox .form-fields {
- height: 32px;
- align-content: center;
-}
-.application.dh-style fieldset:has(.list-w-img) {
- gap: 0;
-}
-.application.dh-style .two-columns {
- display: grid;
- grid-template-columns: 1fr 2fr;
- gap: 10px;
-}
-.application.dh-style .two-columns.even {
- grid-template-columns: 1fr 1fr;
-}
-.application.dh-style line-div {
- display: block;
- height: 1px;
- width: 100%;
- border-bottom: 1px solid light-dark(#18162e, #f3c267);
- mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%);
-}
-.application.dh-style side-line-div {
- display: block;
- height: 1px;
- width: 100%;
- border-bottom: 1px solid light-dark(#18162e, #f3c267);
- mask-image: linear-gradient(270deg, transparent 0%, black 100%);
-}
-.application.dh-style side-line-div.invert {
- mask-image: linear-gradient(270deg, black 0%, transparent 100%);
-}
-.application.dh-style .item-description {
- opacity: 1;
- transform: translateY(0);
- grid-column: 1/-1;
- transition:
- opacity 0.3s ease-out,
- transform 0.3s ease-out;
-}
-.application.dh-style .item-description.invisible {
- height: 0;
- opacity: 0;
- overflow: hidden;
- transform: translateY(-20px);
- transform-origin: top;
-}
-.application.dh-style .item-buttons {
- grid-column: span 3;
- display: flex;
- gap: 8px;
- flex-wrap: wrap;
-}
-.application.dh-style .item-buttons button {
- white-space: nowrap;
-}
-.application.setting.dh-style fieldset h2,
-.application.setting.dh-style fieldset h3,
-.application.setting.dh-style fieldset h4 {
- margin: 8px 0 4px;
- text-align: center;
-}
-.application.setting.dh-style fieldset .title-hint {
- font-size: 12px;
- font-variant: small-caps;
- text-align: center;
-}
-.application.setting.dh-style fieldset .field-section .split-section {
- display: grid;
- grid-template-columns: 1fr 1fr;
- gap: 10px;
-}
-.application.setting.dh-style fieldset .label-container {
- display: grid;
- grid-template-columns: 1fr 1fr;
- gap: 10px;
-}
-.application.setting.dh-style fieldset .label-container label {
- align-self: center;
- text-align: center;
-}
-.application.setting.dh-style footer {
- margin-top: 8px;
- display: flex;
- gap: 8px;
-}
-.application.setting.dh-style footer button {
- flex: 1;
-}
-.application.setting.dh-style .form-group {
- display: flex;
- justify-content: space-between;
- align-items: center;
-}
-.application.setting.dh-style .form-group label {
- font-size: 16px;
- font-family: 'Montserrat', sans-serif;
-}
-.application.setting.dh-style .form-group .form-fields {
- display: flex;
- gap: 4px;
- align-items: center;
-}
-.system-daggerheart .tagify {
- background: light-dark(transparent, transparent);
- border: 1px solid light-dark(#222, #efe6d8);
- height: 34px;
- --tags-disabled-bg: none;
- --tags-border-color: none;
- --tags-hover-border-color: none;
- --tags-focus-border-color: none;
- --tag-border-radius: 3px;
- --tag-bg: light-dark(#18162e, #f3c267);
- --tag-remove-btn-color: light-dark(#18162e, #f3c267);
- --tag-hover: light-dark(#18162e, #f3c267);
- --tag-text-color: light-dark(#efe6d8, #222);
- --tag-text-color--edit: light-dark(#efe6d8, #222);
- --tag-pad: 0.3em 0.5em;
- --tag-inset-shadow-size: 1.2em;
- --tag-invalid-color: #d39494;
- --tag-invalid-bg: rgba(211, 148, 148, 0.5);
- --tag--min-width: 1ch;
- --tag--max-width: 100%;
- --tag-hide-transition: 0.3s;
- --tag-remove-bg: light-dark(#18162e40, #f3c26740);
- --tag-remove-btn-color: light-dark(#efe6d8, #222);
- --tag-remove-btn-bg: none;
- --tag-remove-btn-bg--hover: light-dark(#efe6d8, #222);
- --input-color: inherit;
- --placeholder-color: light-dark(#efe6d815, #22222215);
- --placeholder-color-focus: light-dark(#efe6d815, #22222215);
- --loader-size: 0.8em;
- --readonly-striped: 1;
- border-radius: 3px;
- margin-right: 1px;
-}
-.system-daggerheart .tagify tag div {
- display: flex;
- justify-content: space-between;
- align-items: center;
- height: 22px;
-}
-.system-daggerheart .tagify tag div span {
- font-weight: 400;
-}
-.system-daggerheart .tagify tag div img {
- margin-left: 8px;
- height: 20px;
- width: 20px;
-}
-.system-daggerheart .tagify__dropdown {
- border: 1px solid light-dark(#222, #efe6d8) !important;
- font-family: 'Montserrat', sans-serif;
- color: light-dark(#222, #efe6d8);
-}
-.system-daggerheart .tagify__dropdown .tagify__dropdown__wrapper {
- background-image: url(../assets/parchments/dh-parchment-dark.png);
- background-color: transparent;
- border: 0;
- color: light-dark(#222, #efe6d8);
-}
-.system-daggerheart .tagify__dropdown .tagify__dropdown__wrapper .tagify__dropdown__item--active {
- background-color: light-dark(#222, #efe6d8);
- color: light-dark(#efe6d8, #222);
-}
-.system-daggerheart.theme-light .tagify__dropdown .tagify__dropdown__wrapper {
- background-image: url(../assets/parchments/dh-parchment-light.png);
-}
-.theme-light .application.sheet.dh-style button.glow {
- animation: glow-dark 0.75s infinite alternate;
-}
-.theme-light .application .component.dh-style.card-preview-container {
- background-image: url('../assets/parchments/dh-parchment-light.png');
-}
-.theme-light .application .component.dh-style.card-preview-container .preview-text-container {
- background-image: url(../assets/parchments/dh-parchment-dark.png);
-}
-.theme-light .application .component.dh-style.card-preview-container .preview-selected-icon-container {
- background-image: url(../assets/parchments/dh-parchment-dark.png);
- color: var(--color-light-5);
-}
-.application .component.dh-style.card-preview-container {
- position: relative;
- border-radius: 6px;
- border: 2px solid var(--color-tabs-border);
- display: flex;
- flex-direction: column;
- aspect-ratio: 0.75;
- background-image: url('../assets/parchments/dh-parchment-dark.png');
-}
-.application .component.dh-style.card-preview-container.selectable {
- cursor: pointer;
-}
-.application .component.dh-style.card-preview-container.disabled {
- pointer-events: none;
- opacity: 0.4;
-}
-.application .component.dh-style.card-preview-container .preview-image-outer-container {
- position: relative;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-.application .component.dh-style.card-preview-container .preview-image-container {
- flex: 1;
- border-radius: 4px 4px 0 0;
-}
-.application .component.dh-style.card-preview-container .preview-text-container {
- flex: 1;
- border-radius: 0 0 4px 4px;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- font-size: 18px;
- text-align: center;
- color: var(--color-text-selection-bg);
- background-image: url(../assets/parchments/dh-parchment-light.png);
-}
-.application .component.dh-style.card-preview-container .preview-empty-container {
- pointer-events: none;
- position: relative;
- display: flex;
- align-items: center;
- justify-content: center;
- flex: 1;
-}
-.application .component.dh-style.card-preview-container .preview-empty-container .preview-empty-inner-container {
- width: 100%;
- display: flex;
- justify-content: center;
-}
-.application
- .component.dh-style.card-preview-container
- .preview-empty-container
- .preview-empty-inner-container
- .preview-add-icon {
- font-size: 48px;
-}
-.application
- .component.dh-style.card-preview-container
- .preview-empty-container
- .preview-empty-inner-container
- .preview-empty-subtext {
- position: absolute;
- top: 10%;
- font-size: 18px;
- font-variant: small-caps;
- text-align: center;
-}
-.application .component.dh-style.card-preview-container .preview-selected-icon-container {
- position: absolute;
- height: 54px;
- width: 54px;
- border-radius: 50%;
- border: 2px solid;
- font-size: 48px;
- display: flex;
- align-items: center;
- justify-content: center;
- background-image: url(../assets/parchments/dh-parchment-light.png);
- color: var(--color-dark-5);
-}
-.application .component.dh-style.card-preview-container .preview-selected-icon-container i {
- position: relative;
- right: 2px;
-}
diff --git a/styles/less/global/elements.less b/styles/less/global/elements.less
index 4c319ed5..dda82362 100755
--- a/styles/less/global/elements.less
+++ b/styles/less/global/elements.less
@@ -97,6 +97,19 @@
color: light-dark(@dark-blue, @dark-blue);
}
}
+
+ &.reverted {
+ background: light-dark(@dark-blue-10, @golden-10);
+ color: light-dark(@dark-blue, @golden);
+ border: 1px solid light-dark(@dark, transparent);
+ &:hover {
+ background: light-dark(transparent, @golden);
+ color: light-dark(@dark-blue, @dark-blue);
+ }
+ img {
+ border-radius: 3px;
+ }
+ }
}
select {
diff --git a/styles/less/global/inventory-item.less b/styles/less/global/inventory-item.less
index 077ae165..452d997b 100644
--- a/styles/less/global/inventory-item.less
+++ b/styles/less/global/inventory-item.less
@@ -23,7 +23,7 @@
width: 100%;
list-style-type: none;
- &:hover {
+ &:not(.single-img):hover {
.inventory-item-header .img-portait {
.roll-img {
opacity: 1;
diff --git a/templates/actionTypes/actionType.hbs b/templates/actionTypes/actionType.hbs
index 1cd912e9..5dbe63c0 100644
--- a/templates/actionTypes/actionType.hbs
+++ b/templates/actionTypes/actionType.hbs
@@ -5,8 +5,11 @@
diff --git a/templates/actionTypes/effect.hbs b/templates/actionTypes/effect.hbs
index 0d89399c..dd6a7974 100644
--- a/templates/actionTypes/effect.hbs
+++ b/templates/actionTypes/effect.hbs
@@ -4,7 +4,7 @@
+ {{/each}} --}}
+ {{#each source as | effect index |}}
+
{{/each}}
\ No newline at end of file
diff --git a/templates/dialogs/actionSelect.hbs b/templates/dialogs/actionSelect.hbs
index f2190121..e3468249 100644
--- a/templates/dialogs/actionSelect.hbs
+++ b/templates/dialogs/actionSelect.hbs
@@ -2,11 +2,13 @@
-