'
})
);
}
diff --git a/module/dice/dualityRoll.mjs b/module/dice/dualityRoll.mjs
index 1cfed094..e2d967a3 100644
--- a/module/dice/dualityRoll.mjs
+++ b/module/dice/dualityRoll.mjs
@@ -1,6 +1,6 @@
import D20RollDialog from '../applications/dialogs/d20RollDialog.mjs';
import D20Roll from './d20Roll.mjs';
-import { parseRallyDice, setDiceSoNiceForDualityRoll } from '../helpers/utils.mjs';
+import { parseRallyDice, setDiceSoNiceForDualityRoll, shouldUseHopeFearAutomation } from '../helpers/utils.mjs';
import { getDiceSoNicePresets } from '../config/generalConfig.mjs';
import { updateResourcesForDualityReroll } from './helpers.mjs';
@@ -312,11 +312,9 @@ export default class DualityRoll extends D20Roll {
}
static async addDualityResourceUpdates(config) {
- const automationSettings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
- const hopeFearAutomation = automationSettings.hopeFear;
if (
!config.source?.actor ||
- (game.user.isGM ? !hopeFearAutomation.gm : !hopeFearAutomation.players) ||
+ !shouldUseHopeFearAutomation() ||
config.actionType === 'reaction' ||
config.skips?.resources
)
@@ -334,15 +332,15 @@ export default class DualityRoll extends D20Roll {
const fear =
(config.roll.result.duality === -1 ? 1 : 0) - (config.rerolledRoll.result.duality === -1 ? 1 : 0);
- if (hope !== 0) updates.push({ key: 'hope', value: hope, total: -1 * hope, enabled: true });
- if (stress !== 0) updates.push({ key: 'stress', value: -1 * stress, total: stress, enabled: true });
- if (fear !== 0) updates.push({ key: 'fear', value: fear, total: -1 * fear, enabled: true });
+ if (hope !== 0) updates.push({ key: 'hope', value: hope, enabled: true });
+ if (stress !== 0) updates.push({ key: 'stress', value: -1 * stress, enabled: true });
+ if (fear !== 0) updates.push({ key: 'fear', value: fear, enabled: true });
}
} else {
if (config.roll.isCritical || config.roll.result.duality === 1)
- updates.push({ key: 'hope', value: 1, total: -1, enabled: true });
- if (config.roll.isCritical) updates.push({ key: 'stress', value: -1, total: 1, enabled: true });
- if (config.roll.result.duality === -1) updates.push({ key: 'fear', value: 1, total: -1, enabled: true });
+ updates.push({ key: 'hope', value: 1, enabled: true });
+ if (config.roll.isCritical) updates.push({ key: 'stress', value: -1, enabled: true });
+ if (config.roll.result.duality === -1) updates.push({ key: 'fear', value: 1, enabled: true });
}
if (updates.length) {
diff --git a/module/dice/helpers.mjs b/module/dice/helpers.mjs
index 35adb8b7..5f8a7bbb 100644
--- a/module/dice/helpers.mjs
+++ b/module/dice/helpers.mjs
@@ -9,9 +9,9 @@ export function updateResourcesForDualityReroll(oldDuality, newDuality, actor) {
const stress = (newDuality === 0 ? 1 : 0) - (oldDuality === 0 ? 1 : 0);
const fear = (newDuality === -1 ? 1 : 0) - (oldDuality === -1 ? 1 : 0);
- if (hope !== 0) updates.push({ key: 'hope', value: hope, total: -1 * hope, enabled: true });
- if (stress !== 0) updates.push({ key: 'stress', value: -1 * stress, total: stress, enabled: true });
- if (fear !== 0) updates.push({ key: 'fear', value: fear, total: -1 * fear, enabled: true });
+ if (hope !== 0) updates.push({ key: 'hope', value: hope, enabled: true });
+ if (stress !== 0) updates.push({ key: 'stress', value: -1 * stress, enabled: true });
+ if (fear !== 0) updates.push({ key: 'fear', value: fear, enabled: true });
const resourceUpdates = new ResourceUpdateMap(actor);
resourceUpdates.addResources(updates);
diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs
index 3c5192be..6467edd7 100644
--- a/module/helpers/utils.mjs
+++ b/module/helpers/utils.mjs
@@ -885,3 +885,8 @@ export async function triggerChatRollFx(rolls, options = { whisper: false, blind
foundry.audio.AudioHelper.play({ src: CONFIG.sounds.dice });
}
}
+
+export function shouldUseHopeFearAutomation(options = { gmAsPlayer: true }) {
+ const { hopeFear } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
+ return (!game.user.isGM || options.gmAsPlayer) ? hopeFear.players : hopeFear.gm;
+}
\ No newline at end of file
diff --git a/styles/less/dialog/tag-team-dialog/initialization.less b/styles/less/dialog/tag-team-dialog/initialization.less
index d6f7ad29..e79ed65c 100644
--- a/styles/less/dialog/tag-team-dialog/initialization.less
+++ b/styles/less/dialog/tag-team-dialog/initialization.less
@@ -88,9 +88,21 @@
grid-template-columns: 1fr 1fr;
gap: 8px;
- &.inactive {
+ .inactive {
opacity: 0.4;
}
+
+ .initiator-cost-fields {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+
+ .initiator-cost-inputs {
+ display: grid;
+ grid-template-columns: auto 1fr;
+ align-items: center;
+ }
+ }
}
footer {
diff --git a/styles/less/sheets/actors/adversary/features.less b/styles/less/sheets/actors/adversary/features.less
index c7731df7..f5bbd8aa 100644
--- a/styles/less/sheets/actors/adversary/features.less
+++ b/styles/less/sheets/actors/adversary/features.less
@@ -16,15 +16,5 @@
scrollbar-gutter: stable;
.with-scroll-shadows();
}
- > button {
- --button-size: 1.75rem;
- width: 1.75rem;
- position: absolute;
- inset: auto 16px 0 auto;
- box-shadow: 0 0 5px @light-black;
- }
- &:has(> button) .feature-section {
- padding-bottom: calc(1px + 1.75rem);
- }
}
}
diff --git a/styles/less/sheets/actors/environment/features.less b/styles/less/sheets/actors/environment/features.less
index a8fff527..295636a7 100644
--- a/styles/less/sheets/actors/environment/features.less
+++ b/styles/less/sheets/actors/environment/features.less
@@ -14,15 +14,5 @@
scrollbar-gutter: stable;
.with-scroll-shadows();
}
- > button {
- --button-size: 1.75rem;
- width: 1.75rem;
- position: absolute;
- inset: auto 16px 0 auto;
- box-shadow: 0 0 5px @light-black;
- }
- &:has(> button) .feature-section {
- padding-bottom: calc(1px + 1.75rem);
- }
}
}
diff --git a/styles/less/ui/game-pause/game-pause.less b/styles/less/ui/game-pause/game-pause.less
index 60d08bec..daf9a1e4 100644
--- a/styles/less/ui/game-pause/game-pause.less
+++ b/styles/less/ui/game-pause/game-pause.less
@@ -1,23 +1,34 @@
@import '../../utils/mixin.less';
#pause.dh-style {
+ animation: none;
+
+ img {
+ width: 125px;
+ height: 125px;
+ }
+
figcaption {
+ --base-shadow: drop-shadow(2px 2px 2px black);
position: absolute;
margin-top: 24px;
animation: pause-pulse 3s ease-in-out infinite;
+ font-size: var(--font-size-30);
+ letter-spacing: 0.18em;
+ filter: var(--base-shadow);
}
@keyframes pause-pulse {
0% {
- filter: drop-shadow(0 0 5px @secondary-blue);
+ filter: var(--base-shadow) drop-shadow(0 0 5px @secondary-blue);
}
50% {
- filter: drop-shadow(0 0 5px @golden);
+ filter: var(--base-shadow) drop-shadow(0 0 5px @golden-secondary);
}
100% {
- filter: drop-shadow(0 0 5px @secondary-blue);
+ filter: var(--base-shadow) drop-shadow(0 0 5px @secondary-blue);
}
}
}
\ No newline at end of file
diff --git a/styles/less/utils/fonts.less b/styles/less/utils/fonts.less
index 07da3389..72ee1a85 100755
--- a/styles/less/utils/fonts.less
+++ b/styles/less/utils/fonts.less
@@ -10,6 +10,7 @@
--font-size-8: 0.5rem;
--font-size-9: 0.5625rem;
--font-size-22: 1.375rem;
+ --font-size-30: 1.875rem;
}
@font-title: ~"var(--dh-font-title, 'Cinzel Decorative'), serif";
diff --git a/templates/dialogs/tagTeamDialog/initialization.hbs b/templates/dialogs/tagTeamDialog/initialization.hbs
index 0b92e68e..40491e1b 100644
--- a/templates/dialogs/tagTeamDialog/initialization.hbs
+++ b/templates/dialogs/tagTeamDialog/initialization.hbs
@@ -26,11 +26,16 @@
-
diff --git a/templates/sheets-settings/adversary-settings/features.hbs b/templates/sheets-settings/adversary-settings/features.hbs
index 2f2f5f47..1cab8cfe 100644
--- a/templates/sheets-settings/adversary-settings/features.hbs
+++ b/templates/sheets-settings/adversary-settings/features.hbs
@@ -3,27 +3,31 @@
data-tab='{{tabs.features.id}}'
data-group='{{tabs.features.group}}'
>
-
-
+ {{#each featureGroups as |group|}}
+
+ {{/each}}
+
+ {{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}}
+
\ No newline at end of file
diff --git a/templates/sheets-settings/environment-settings/features.hbs b/templates/sheets-settings/environment-settings/features.hbs
index 579fe74e..1cab8cfe 100644
--- a/templates/sheets-settings/environment-settings/features.hbs
+++ b/templates/sheets-settings/environment-settings/features.hbs
@@ -3,24 +3,31 @@
data-tab='{{tabs.features.id}}'
data-group='{{tabs.features.group}}'
>
-
-
+ {{#each featureGroups as |group|}}
+
+ {{/each}}
+
+ {{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}}
+
\ No newline at end of file
diff --git a/templates/sheets-settings/npc-settings/features.hbs b/templates/sheets-settings/npc-settings/features.hbs
index 2f2f5f47..1cab8cfe 100644
--- a/templates/sheets-settings/npc-settings/features.hbs
+++ b/templates/sheets-settings/npc-settings/features.hbs
@@ -3,27 +3,31 @@
data-tab='{{tabs.features.id}}'
data-group='{{tabs.features.group}}'
>
-
-
+ {{#each featureGroups as |group|}}
+
+ {{/each}}
+
+ {{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}}
+
\ No newline at end of file
diff --git a/templates/sheets/actors/adversary/features.hbs b/templates/sheets/actors/adversary/features.hbs
index 685540e7..8430d454 100644
--- a/templates/sheets/actors/adversary/features.hbs
+++ b/templates/sheets/actors/adversary/features.hbs
@@ -12,9 +12,4 @@
}}
{{/each}}
- {{#if @root.editable}}
-
- {{/if}}
diff --git a/templates/sheets/actors/environment/features.hbs b/templates/sheets/actors/environment/features.hbs
index 1dbd4b94..264d6bf5 100644
--- a/templates/sheets/actors/environment/features.hbs
+++ b/templates/sheets/actors/environment/features.hbs
@@ -14,10 +14,5 @@
showActions=@root.editable
}}
{{/each}}
-
- {{#if @root.editable}}
-
- {{/if}}
+
\ No newline at end of file
diff --git a/templates/sheets/global/partials/inventory-item-V2.hbs b/templates/sheets/global/partials/inventory-item-V2.hbs
index 523e9304..f7d22a30 100644
--- a/templates/sheets/global/partials/inventory-item-V2.hbs
+++ b/templates/sheets/global/partials/inventory-item-V2.hbs
@@ -27,17 +27,17 @@ Parameters:
>