[Feature] Damage Reduction Rules (#574)

* More rules

* Updated some cards with damageReduction

* Fixed Endurance and HighStamina Features

* More style improvements
This commit is contained in:
WBHarry 2025-08-04 16:18:03 +02:00 committed by GitHub
parent 6bdeccfbf9
commit 02a8a9c313
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
59 changed files with 640 additions and 245 deletions

View file

@ -318,6 +318,7 @@
"DamageReduction": {
"armorMarks": "Armor Marks",
"armorWithStress": "Spend 1 stress to use an extra mark",
"thresholdImmunities": "Threshold Immunities",
"stress": "Stress",
"stressReduction": "Reduce By Stress",
"title": "Damage Reduction",
@ -952,6 +953,12 @@
"name": "Dice Set"
}
},
"RuleChoice": {
"off": "Off",
"offWithToggle": "Off With Toggle",
"on": "On",
"onWithToggle": "On With Toggle"
},
"SelectAction": {
"selectType": "Select Action Type",
"selectAction": "Action Selection"
@ -1662,7 +1669,8 @@
"major": "Major",
"severe": "Severe",
"majorThreshold": "Major Damage Threshold",
"severeThreshold": "Severe Damage Threshold"
"severeThreshold": "Severe Damage Threshold",
"with": "{threshold} Damage Threshold"
},
"Dice": {
"single": "Die",
@ -1772,6 +1780,10 @@
"hint": "If this value is set you can use up to that much stress to spend additional Armor Marks beyond your normal maximum."
},
"stress": {
"any": {
"label": "Stress Damage Reduction: Any",
"hint": "The cost in stress you can pay to reduce incoming damage down one threshold"
},
"severe": {
"label": "Stress Damage Reduction: Severe",
"hint": "The cost in stress you can pay to reduce severe damage down to major."
@ -1850,6 +1862,7 @@
},
"actorName": "Actor Name",
"amount": "Amount",
"any": "Any",
"armorScore": "Armor Score",
"activeEffects": "Active Effects",
"armorSlots": "Armor Slots",
@ -2059,6 +2072,10 @@
"hint": "Automatically increase the GM's fear pool on a fear duality roll result."
},
"FIELDS": {
"damageReductionRulesDefault": {
"label": "Damage Reduction Rules Default",
"hint": "Wether using armor and reductions has rules on by default"
},
"hopeFear": {
"label": "Hope & Fear",
"gm": { "label": "GM" },
@ -2312,7 +2329,9 @@
"appliedEvenIfSuccessful": "Applied even if save succeeded",
"diceIsRerolled": "The dice has been rerolled (x{times})",
"pendingSaves": "Pending Reaction Rolls",
"openSheetSettings": "Open Settings"
"openSheetSettings": "Open Settings",
"rulesOn": "Rules On",
"rulesOff": "Rules Off"
}
}
}

View file

@ -10,14 +10,18 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
this.reject = reject;
this.actor = actor;
this.damage = damage;
this.rulesDefault = game.settings.get(
CONFIG.DH.id,
CONFIG.DH.SETTINGS.gameSettings.Automation
).damageReductionRulesDefault;
this.rulesOn = [CONFIG.DH.GENERAL.ruleChoice.on.id, CONFIG.DH.GENERAL.ruleChoice.onWithToggle.id].includes(
this.rulesDefault
);
const canApplyArmor = damageType.every(t => actor.system.armorApplicableDamageTypes[t] === true);
const maxArmorMarks = canApplyArmor
? Math.min(
actor.system.armorScore - actor.system.armor.system.marks.value,
actor.system.rules.damageReduction.maxArmorMarked.value
)
: 0;
const availableArmor = actor.system.armorScore - actor.system.armor.system.marks.value;
const maxArmorMarks = canApplyArmor ? availableArmor : 0;
const armor = [...Array(maxArmorMarks).keys()].reduce((acc, _) => {
acc[foundry.utils.randomID()] = { selected: false };
@ -42,6 +46,7 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
acc[damage] = {
cost: dr.cost,
selected: false,
any: key === 'any',
from: getDamageLabel(damage),
to: getDamageLabel(damage - 1)
};
@ -51,16 +56,28 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
},
null
);
this.thresholdImmunities = Object.keys(actor.system.rules.damageReduction.thresholdImmunities).reduce(
(acc, key) => {
if (actor.system.rules.damageReduction.thresholdImmunities[key])
acc[damageKeyToNumber(key)] = game.i18n.format(`DAGGERHEART.GENERAL.DamageThresholds.with`, {
threshold: game.i18n.localize(`DAGGERHEART.GENERAL.DamageThresholds.${key}`)
});
return acc;
},
{}
);
}
static DEFAULT_OPTIONS = {
tag: 'form',
classes: ['daggerheart', 'views', 'damage-reduction'],
position: {
width: 240,
width: 280,
height: 'auto'
},
actions: {
toggleRules: this.toggleRules,
setMarks: this.setMarks,
useStressReduction: this.useStressReduction,
takeDamage: this.takeDamage
@ -89,6 +106,12 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
async _prepareContext(_options) {
const context = await super._prepareContext(_options);
context.rulesOn = this.rulesOn;
context.rulesToggleable = [
CONFIG.DH.GENERAL.ruleChoice.onWithToggle.id,
CONFIG.DH.GENERAL.ruleChoice.offWithToggle.id
].includes(this.rulesDefault);
context.thresholdImmunities = this.thresholdImmunities;
const { selectedArmorMarks, selectedStressMarks, stressReductions, currentMarks, currentDamage } =
this.getDamageInfo();
@ -110,12 +133,22 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
}
: null;
context.marks = this.marks;
const maxArmor = this.actor.system.rules.damageReduction.maxArmorMarked.value;
context.marks = {
armor: Object.keys(this.marks.armor).reduce((acc, key, index) => {
const mark = this.marks.armor[key];
if (!this.rulesOn || index + 1 <= maxArmor) acc[key] = mark;
return acc;
}, {}),
stress: this.marks.stress
};
context.availableStressReductions = this.availableStressReductions;
context.damage = getDamageLabel(this.damage);
context.reducedDamage = currentDamage !== this.damage ? getDamageLabel(currentDamage) : null;
context.currentDamage = context.reducedDamage ?? context.damage;
context.currentDamageNr = currentDamage;
return context;
}
@ -136,22 +169,48 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
const armorMarkReduction =
selectedArmorMarks.length * this.actor.system.rules.damageReduction.increasePerArmorMark;
const currentDamage = this.damage - armorMarkReduction - selectedStressMarks.length - stressReductions.length;
let currentDamage = Math.max(
this.damage - armorMarkReduction - selectedStressMarks.length - stressReductions.length,
0
);
if (this.thresholdImmunities[currentDamage]) currentDamage = 0;
return { selectedArmorMarks, selectedStressMarks, stressReductions, currentMarks, currentDamage };
};
static toggleRules() {
this.rulesOn = !this.rulesOn;
const maxArmor = this.actor.system.rules.damageReduction.maxArmorMarked.value;
this.marks = {
armor: Object.keys(this.marks.armor).reduce((acc, key, index) => {
const mark = this.marks.armor[key];
const keepSelectValue = !this.rulesOn || index + 1 <= maxArmor;
acc[key] = { ...mark, selected: keepSelectValue ? mark.selected : false };
return acc;
}, {}),
stress: this.marks.stress
};
this.render();
}
static setMarks(_, target) {
const currentMark = this.marks[target.dataset.type][target.dataset.key];
const { selectedStressMarks, stressReductions, currentMarks, currentDamage } = this.getDamageInfo();
if (!currentMark.selected && currentDamage === 0) {
ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.damageAlreadyNone'));
return;
}
if (!currentMark.selected && currentMarks === this.actor.system.armorScore) {
ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noAvailableArmorMarks'));
return;
if (this.rulesOn) {
if (!currentMark.selected && currentMarks === this.actor.system.armorScore) {
ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noAvailableArmorMarks'));
return;
}
}
if (currentMark.selected) {

View file

@ -2,6 +2,25 @@ export const compendiumJournals = {
welcome: 'Compendium.daggerheart.journals.JournalEntry.g7NhKvwltwafmMyR'
};
export const ruleChoice = {
on: {
id: 'on',
label: 'DAGGERHEART.CONFIG.RuleChoice.on'
},
of: {
id: 'off',
label: 'DAGGERHEART.CONFIG.RuleChoice.off'
},
onWithToggle: {
id: 'onWithToggle',
label: 'DAGGERHEART.CONFIG.RuleChoice.onWithToggle'
},
offWithToggle: {
id: 'offWithToggle',
label: 'DAGGERHEART.CONFIG.RuleChoice.offWithToggle'
}
};
export const range = {
self: {
id: 'self',

View file

@ -240,7 +240,8 @@ export default class DhCharacter extends BaseDataActor {
stressDamageReduction: new fields.SchemaField({
severe: stressDamageReductionRule('DAGGERHEART.GENERAL.Rules.damageReduction.stress.severe'),
major: stressDamageReductionRule('DAGGERHEART.GENERAL.Rules.damageReduction.stress.major'),
minor: stressDamageReductionRule('DAGGERHEART.GENERAL.Rules.damageReduction.stress.minor')
minor: stressDamageReductionRule('DAGGERHEART.GENERAL.Rules.damageReduction.stress.minor'),
any: stressDamageReductionRule('DAGGERHEART.GENERAL.Rules.damageReduction.stress.any')
}),
increasePerArmorMark: new fields.NumberField({
integer: true,
@ -249,7 +250,11 @@ export default class DhCharacter extends BaseDataActor {
hint: 'DAGGERHEART.GENERAL.Rules.damageReduction.increasePerArmorMark.hint'
}),
magical: new fields.BooleanField({ initial: false }),
physical: new fields.BooleanField({ initial: false })
physical: new fields.BooleanField({ initial: false }),
thresholdImmunities: new fields.SchemaField({
minor: new fields.BooleanField({ initial: false })
}),
disabledArmor: new fields.BooleanField({ intial: false })
}),
attack: new fields.SchemaField({
damage: new fields.SchemaField({

View file

@ -103,7 +103,7 @@ class DhCountdown extends foundry.abstract.DataModel {
required: true,
choices: CONFIG.DH.GENERAL.countdownTypes,
initial: CONFIG.DH.GENERAL.countdownTypes.custom.id,
label: 'DAGGERHEART.APPLICATIONS.Countdown.FIELDS.countdowns.element.progress.type.value.label'
label: 'DAGGERHEART.GENERAL.type'
}),
label: new fields.StringField({
label: 'DAGGERHEART.APPLICATIONS.Countdown.FIELDS.countdowns.element.progress.type.label.label'

View file

@ -34,6 +34,12 @@ export default class DhAutomation extends foundry.abstract.DataModel {
initial: true,
label: 'DAGGERHEART.SETTINGS.Automation.FIELDS.effects.rangeDependent.label'
})
}),
damageReductionRulesDefault: new fields.StringField({
required: true,
choices: CONFIG.DH.GENERAL.ruleChoice,
initial: CONFIG.DH.GENERAL.ruleChoice.onWithToggle.id,
label: 'DAGGERHEART.SETTINGS.Automation.FIELDS.damageReductionRulesDefault.label'
})
};
}

View file

@ -464,14 +464,17 @@ export default class DhpActor extends Actor {
}
#canReduceDamage(hpDamage, type) {
const { stressDamageReduction, disabledArmor } = this.system.rules.damageReduction;
if (disabledArmor) return false;
const availableStress = this.system.resources.stress.max - this.system.resources.stress.value;
const canUseArmor =
this.system.armor &&
this.system.armor.system.marks.value < this.system.armorScore &&
type.every(t => this.system.armorApplicableDamageTypes[t] === true);
const canUseStress = Object.keys(this.system.rules.damageReduction.stressDamageReduction).reduce((acc, x) => {
const rule = this.system.rules.damageReduction.stressDamageReduction[x];
const canUseStress = Object.keys(stressDamageReduction).reduce((acc, x) => {
const rule = stressDamageReduction[x];
if (damageKeyToNumber(x) <= hpDamage) return acc || (rule.enabled && availableStress >= rule.cost);
return acc;
}, false);

View file

@ -112,9 +112,9 @@ export default class DHItem extends foundry.documents.Item {
* Generate a localized label array for this item.
* @returns {(string | { value: string, icons: string[] })[]} An array of localized strings and damage label objects.
*/
getLabels() {
_getLabels() {
const labels = [];
if (this.system.getLabels) labels.push(...this.system.getLabels());
if (this.system._getLabels) labels.push(...this.system._getLabels());
return labels;
}

View file

@ -28,7 +28,7 @@
},
"changes": [
{
"key": "system.resources.hitPoints.value",
"key": "system.resources.hitPoints.max",
"mode": 2,
"value": "1",
"priority": null
@ -59,7 +59,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753996768847,
"modifiedTime": 1753999765864,
"modifiedTime": 1754310930764,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!tXWEMdLXafUSZTbK.db8W2Q0Qty84XV0x"

View file

@ -28,7 +28,7 @@
},
"changes": [
{
"key": "system.resources.stress.value",
"key": "system.resources.stress.max",
"mode": 2,
"value": "1",
"priority": null
@ -59,7 +59,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753997348303,
"modifiedTime": 1753999779490,
"modifiedTime": 1754310946414,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!HMXNJZ7ynzajR2KT.Xl3TsKUJcl6vi1ly"

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "o7t2fsAmRxKLoHrO",
"system": {
"description": "<p><p class=\"Body-Foundation\">Once per <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"long-rest\" nexus=\"daggerheart\">long rest</tooltip>, when you compliment someone or ask them about something theyre good at, you can both gain 3 <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hope\" nexus=\"daggerheart\">Hope</tooltip>.</p></p>",
"description": "<p class=\"Body-Foundation\">Once per long rest, when you compliment someone or ask them about something theyre good at, you can both gain 3 Hope.</p>",
"domain": "blade",
"recallCost": 1,
"level": 2,
@ -14,7 +14,7 @@
"type": "healing",
"_id": "7Tcn3wYxEIGEfbJ5",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">Once per long rest, when you compliment someone or ask them about something theyre good at, you can both gain 3 Hope.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [],
@ -89,8 +89,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784407,
"modifiedTime": 1754244754496,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304308103,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "Y08dLFuPXsgeRrHi",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "me7ywrVh38j6T8Sm",
"system": {
"description": "<p><p class=\"Body-Foundation\">Once per <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"long-rest\" nexus=\"daggerheart\">long rest</tooltip>, while youre charging into danger, you can muster a rousing call that inspires your allies. All allies who can hear you each clear a <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"stress\" nexus=\"daggerheart\">Stress</tooltip> and gain a <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hope\" nexus=\"daggerheart\">Hope</tooltip>. Additionally, your allies gain <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"advantage-and-disadvantage\" nexus=\"daggerheart\">advantage</tooltip> on <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"attack-roll\" nexus=\"daggerheart\">attack rolls</tooltip> until you or an ally rolls a failure with <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"fear\" nexus=\"daggerheart\">Fear</tooltip>.</p></p>",
"description": "<p class=\"Body-Foundation\">Once per long rest, while youre charging into danger, you can muster a rousing call that inspires your allies. All allies who can hear you each clear a Stress and gain a Hope. Additionally, your allies gain advantage on attack rolls until you or an ally rolls a failure with Fear.</p>",
"domain": "blade",
"recallCost": 2,
"level": 8,
@ -14,7 +14,7 @@
"type": "healing",
"_id": "jakoB9n8KSgvYVZv",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">Once per long rest, while youre charging into danger, you can muster a rousing call that inspires your allies. All allies who can hear you each clear a Stress and gain a Hope. Additionally, your allies gain advantage on attack rolls until you or an ally rolls a failure with Fear.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [],
@ -119,8 +119,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784413,
"modifiedTime": 1754247384173,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304622040,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "Ef1JsUG50LIoKx2F",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "EiP5dLozOFZKIeWN",
"system": {
"description": "<p><p class=\"Body-Foundation\">Once per <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"long-rest\" nexus=\"daggerheart\">long rest</tooltip> when you would make a <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"death-move\" nexus=\"daggerheart\">Death Move</tooltip>, you can <strong>spend a </strong><tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hope\" nexus=\"daggerheart\"><strong>Hope</strong></tooltip> to clear a <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hit-points\" nexus=\"daggerheart\">Hit Point</tooltip> instead. </p></p>",
"description": "<p class=\"Body-Foundation\">Once per long rest when you would make a Death Move, you can <strong>spend a Hope</strong> to clear a Hit Point instead.</p>",
"domain": "blade",
"recallCost": 2,
"level": 6,
@ -14,7 +14,7 @@
"type": "healing",
"_id": "iucXKML1P8Q7nmcp",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">Once per long rest when you would make a Death Move, you can <strong>spend a Hope</strong> to clear a Hit Point instead.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [],
@ -89,8 +89,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784415,
"modifiedTime": 1754246132892,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304541810,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "NeEOghgfyDUBTwBG",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "7pKKYgRQAKlQAksV",
"system": {
"description": "<p><p class=\"Body-Foundation\">When you make a successful attack against an adversary, you can <strong>mark 4 </strong><tooltip category=\"rule\" class=\"tooltip-convert\" element=\"stress\" nexus=\"daggerheart\"><strong>Stress</strong></tooltip> to force the target to mark a number of <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hit-points\" nexus=\"daggerheart\">Hit Points</tooltip> equal to the number of Hit Points you currently have marked instead of rolling for damage. </p></p>",
"description": "<p class=\"Body-Foundation\">When you make a successful attack against an adversary, you can <strong>mark 4 Stress</strong> to force the target to mark a number of Hit Points equal to the number of Hit Points you currently have marked instead of rolling for damage.</p>",
"domain": "blade",
"recallCost": 0,
"level": 10,
@ -14,10 +14,19 @@
"type": "effect",
"_id": "lekCIrTCQ2FhwGd1",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">When you make a successful attack against an adversary, you can <strong>mark 4 Stress</strong> to force the target to mark a number of Hit Points equal to the number of Hit Points you currently have marked instead of rolling for damage.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [],
"cost": [
{
"scalable": false,
"key": "stress",
"value": 4,
"keyIsID": false,
"step": null,
"consumeOnSuccess": false
}
],
"uses": {
"value": null,
"max": "",
@ -44,8 +53,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784414,
"modifiedTime": 1754248024583,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304799641,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "P0ezScyQ5t8ruByf",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "HAGbPLHwm0UozDeG",
"system": {
"description": "<p><p class=\"Body-Foundation-No-BOLDITALIC\">When 4 or more of the domain cards in your <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"loadout-and-vault\" nexus=\"daggerheart\">loadout</tooltip> are from the Blade domain, gain the following benefits:</p><ul class=\"\"><li class=\"vertical-card-list-found\">+2 bonus to your <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"attack-roll\" nexus=\"daggerheart\">attack rolls</tooltip></li><li class=\"vertical-card-list-found\">+4 bonus to your <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"severe-damage\" nexus=\"daggerheart\">Severe</tooltip> damage threshold</li></ul></p>",
"description": "<p class=\"Body-Foundation-No-BOLDITALIC\">When 4 or more of the domain cards in your loadout are from the Blade domain, gain the following benefits:</p><ul><li class=\"vertical-card-list-found\"><p>+2 bonus to your attack rolls</p></li><li class=\"vertical-card-list-found\"><p>+4 bonus to your Severe damage threshold</p></li></ul>",
"domain": "blade",
"recallCost": 1,
"level": 7,
@ -19,8 +19,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784416,
"modifiedTime": 1754244839691,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304595818,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "Gb5bqpFSBiuBxUix",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "Emnx4o1DWGTVKoAg",
"system": {
"description": "<p><p class=\"Body-Foundation-No-BOLDITALIC\">When you <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"critical-success\" nexus=\"daggerheart\">critically succeed</tooltip> on an attack, you can <strong>spend up to 3 </strong><tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hope\" nexus=\"daggerheart\"><strong>Hope</strong></tooltip> and choose one of the following options for each Hope spent: </p><ul class=\"\"><li class=\"vertical-card-list\">You clear a <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hit-points\" nexus=\"daggerheart\">Hit Point</tooltip>.</li><li class=\"vertical-card-list\">You clear an <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"armor-slot\" nexus=\"daggerheart\">Armor Slot</tooltip>.</li><li class=\"vertical-card-list\">The target must mark an additional Hit Point.</li></ul><p class=\"Card-Feature\">You cant choose the same option more than once.</p></p>",
"description": "<p class=\"Body-Foundation-No-BOLDITALIC\">When you critically succeed on an attack, you can <strong>spend up to 3 Hope</strong> and choose one of the following options for each Hope spent:</p><ul><li class=\"vertical-card-list\"><p>You clear a Hit Point.</p></li><li class=\"vertical-card-list\"><p>You clear an Armor Slot.</p></li><li class=\"vertical-card-list\">The target must mark an additional Hit Point.</li></ul><p class=\"Card-Feature\">You cant choose the same option more than once.</p>",
"domain": "blade",
"recallCost": 1,
"level": 5,
@ -14,7 +14,7 @@
"type": "healing",
"_id": "CbKKgf1TboGPZitf",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation-No-BOLDITALIC\">When you critically succeed on an attack, you can <strong>spend up to 3 Hope</strong> and choose one of the following options for each Hope spent:</p><ul class=\"\"><li class=\"vertical-card-list\"><p>You clear a Hit Point.</p></li><li class=\"vertical-card-list\"><p>You clear an Armor Slot.</p></li><li class=\"vertical-card-list\">The target must mark an additional Hit Point.</li></ul><p class=\"Card-Feature\">You cant choose the same option more than once.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [
@ -239,8 +239,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784433,
"modifiedTime": 1754245291254,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304490701,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "rnejRbUQsNGX1GMC",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "yalAnCU3SndrYImF",
"system": {
"description": "<p><p class=\"Body-Foundation\">Once per rest, you can apply all your focus toward a target of your choice. Until you attack another creature, you defeat the target, or the battle ends, gain a +1 bonus to your <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"proficiency\" nexus=\"daggerheart\">Proficiency</tooltip>.</p></p>",
"description": "<p class=\"Body-Foundation\">Once per rest, you can apply all your focus toward a target of your choice. Until you attack another creature, you defeat the target, or the battle ends, gain a +1 bonus to your Proficiency.</p>",
"domain": "blade",
"recallCost": 2,
"level": 4,
@ -14,14 +14,14 @@
"type": "effect",
"_id": "xdNbP1ggDxpXZ1HP",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">Once per rest, you can apply all your focus toward a target of your choice. Until you attack another creature, you defeat the target, or the battle ends, gain a +1 bonus to your Proficiency.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [],
"uses": {
"value": null,
"max": "",
"recovery": null,
"max": "1",
"recovery": "shortRest",
"consumeOnSuccess": false
},
"effects": [
@ -49,8 +49,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784443,
"modifiedTime": 1754244951595,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304260916,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "xxZOXC4tiZQ6kg1e",
"sort": 3400000,
@ -59,7 +59,7 @@
"name": "Deadly Focus",
"img": "systems/daggerheart/assets/icons/domains/domain-card/blade.png",
"origin": "Compendium.daggerheart.domains.Item.xxZOXC4tiZQ6kg1e",
"transfer": false,
"transfer": true,
"_id": "6sR46Hd554DiLHy4",
"type": "base",
"system": {
@ -78,7 +78,7 @@
"priority": null
}
],
"disabled": false,
"disabled": true,
"duration": {
"startTime": null,
"combat": null,
@ -101,8 +101,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1754244951545,
"modifiedTime": 1754244958779,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304242570,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!xxZOXC4tiZQ6kg1e.6sR46Hd554DiLHy4"
}

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "yalAnCU3SndrYImF",
"system": {
"description": "<p><p class=\"Body\">While you are wearing <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"armor\" nexus=\"daggerheart\">armor</tooltip>, gain a +2 bonus to your damage thresholds.</p></p>",
"description": "<p class=\"Body\">While you are wearing armor, gain a +2 bonus to your damage thresholds.</p>",
"domain": "blade",
"recallCost": 0,
"level": 4,
@ -19,8 +19,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784458,
"modifiedTime": 1754244852896,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304268859,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "oVa49lI107eZILZr",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "me7ywrVh38j6T8Sm",
"system": {
"description": "<p><p class=\"Body-Foundation\">Once per <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"long-rest\" nexus=\"daggerheart\">long rest</tooltip>, you can go into a <em>Frenzy</em> until there are no more adversaries within sight. </p><p class=\"Body-Foundation\">While <em>Frenzied</em>, you cant use <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"armor-slot\" nexus=\"daggerheart\">Armor Slots</tooltip>, and you gain a +10 bonus to your damage rolls and a +8 bonus to your <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"severe-damage\" nexus=\"daggerheart\">Severe</tooltip> damage threshold.</p></p>",
"description": "<p class=\"Body-Foundation\">Once per long rest, you can go into a <em>Frenzy</em> until there are no more adversaries within sight.</p><p class=\"Body-Foundation\">While <em>Frenzied</em>, you cant use Armor Slots, and you gain a +10 bonus to your damage rolls and a +8 bonus to your Severe damage threshold.</p>",
"domain": "blade",
"recallCost": 3,
"level": 8,
@ -49,8 +49,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784459,
"modifiedTime": 1754247528112,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304635322,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "MMl7abdGRLl7TJLO",
"sort": 3400000,
@ -71,12 +71,6 @@
}
},
"changes": [
{
"key": "system.bonuses.damage.primaryWeapon.bonus",
"mode": 2,
"value": "10",
"priority": null
},
{
"key": "system.bonuses.damage.physical.bonus",
"mode": 2,
@ -84,7 +78,7 @@
"priority": null
},
{
"key": "system.bonuses.damage.secondaryWeapon.bonus",
"key": "system.bonuses.damage.magical.bonus",
"mode": 2,
"value": "10",
"priority": null
@ -94,6 +88,12 @@
"mode": 2,
"value": "8",
"priority": null
},
{
"key": "system.rules.damageReduction.disabledArmor",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
@ -106,7 +106,7 @@
"startRound": null,
"startTurn": null
},
"description": "",
"description": "<p class=\"Body-Foundation\">Once per long rest, you can go into a <em>Frenzy</em> until there are no more adversaries within sight.</p><p class=\"Body-Foundation\">While <em>Frenzied</em>, you cant use Armor Slots, and you gain a +10 bonus to your damage rolls and a +8 bonus to your Severe damage threshold.</p>",
"tint": "#ffffff",
"statuses": [],
"sort": 0,
@ -119,8 +119,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1754247528086,
"modifiedTime": 1754247639266,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304880762,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!MMl7abdGRLl7TJLO.1POoAgObPOWDpUco"
}

View file

@ -4,45 +4,12 @@
"type": "domainCard",
"folder": "9Xc6KzNyjDtTGZkp",
"system": {
"description": "<p><p class=\"Body-Foundation\">When you take <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"severe-damage\" nexus=\"daggerheart\">Severe</tooltip> damage, you can <strong>mark a </strong><tooltip category=\"rule\" class=\"tooltip-convert\" element=\"stress\" nexus=\"daggerheart\"><strong>Stress</strong></tooltip> to reduce the severity by one threshold. </p></p>",
"description": "<p class=\"Body-Foundation\">When you take Severe damage, you can <strong>mark a Stress</strong> to reduce the severity by one threshold.</p>",
"domain": "blade",
"recallCost": 1,
"level": 1,
"type": "ability",
"actions": {
"cXjI5GBpJSd7OtZY": {
"type": "effect",
"_id": "cXjI5GBpJSd7OtZY",
"systemPath": "actions",
"description": "",
"chatDisplay": true,
"actionType": "action",
"cost": [
{
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null,
"consumeOnSuccess": false
}
],
"uses": {
"value": null,
"max": "",
"recovery": null,
"consumeOnSuccess": false
},
"effects": [],
"target": {
"type": "any",
"amount": null
},
"name": "Mark a Stress",
"img": "icons/magic/control/silhouette-aura-energy.webp",
"range": ""
}
}
"actions": {}
},
"flags": {},
"_stats": {
@ -53,12 +20,70 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784460,
"modifiedTime": 1754244495256,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304045807,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "BFWN2cObMdlk9uVz",
"sort": 3400000,
"effects": [],
"effects": [
{
"name": "Get Back Up",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"_id": "aV3KUHtXXR86PRMh",
"img": "icons/magic/control/silhouette-aura-energy.webp",
"changes": [
{
"key": "system.rules.damageReduction.stressDamageReduction.severe.cost",
"mode": 5,
"value": "1",
"priority": null
},
{
"key": "system.rules.damageReduction.stressDamageReduction.severe.enabled",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
"combat": null,
"seconds": null,
"rounds": null,
"turns": null,
"startRound": null,
"startTurn": null
},
"description": "<p class=\"Body-Foundation\">When you take Severe damage, you can <strong>mark a Stress</strong> to reduce the severity by one threshold.</p>",
"origin": null,
"tint": "#ffffff",
"transfer": true,
"statuses": [],
"sort": 0,
"flags": {},
"_stats": {
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1754304030600,
"modifiedTime": 1754304076699,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!BFWN2cObMdlk9uVz.aV3KUHtXXR86PRMh"
}
],
"ownership": {
"default": 0
},

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "HAGbPLHwm0UozDeG",
"system": {
"description": "<p><p class=\"Body-Foundation\">When you fail an attack, you can <strong>mark a </strong><tooltip category=\"rule\" class=\"tooltip-convert\" element=\"stress\" nexus=\"daggerheart\"><strong>Stress</strong></tooltip> to deal weapon damage using half your <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"proficiency\" nexus=\"daggerheart\">Proficiency</tooltip>. </p></p>",
"description": "<p class=\"Body-Foundation\">When you fail an attack, you can <strong>mark a Stress</strong> to deal weapon damage using half your Proficiency.</p>",
"domain": "blade",
"recallCost": 1,
"level": 7,
@ -14,7 +14,7 @@
"type": "damage",
"_id": "DUojhK0OtvsotiE6",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">When you fail an attack, you can <strong>mark a Stress</strong> to deal weapon damage using half your Proficiency.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [
@ -57,8 +57,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784462,
"modifiedTime": 1754247275114,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304608102,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "nCNCqSH7UgW4O3To",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "QYdeGsmVYIF34kZR",
"system": {
"description": "<p><p class=\"Body-Foundation\">When you <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"critical-success\" nexus=\"daggerheart\">critically succeed</tooltip> on a weapon attack, gain an additional <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hope\" nexus=\"daggerheart\">Hope</tooltip> or clear an additional <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"stress\" nexus=\"daggerheart\">Stress</tooltip>. </p><p class=\"Body-Foundation\">Additionally, when you deal enough damage to defeat an enemy, gain a Hope or clear a Stress.</p></p>",
"description": "<p class=\"Body-Foundation\">When you critically succeed on a weapon attack, gain an additional Hope or clear an additional Stress.</p><p class=\"Body-Foundation\">Additionally, when you deal enough damage to defeat an enemy, gain a Hope or clear a Stress.</p>",
"domain": "blade",
"recallCost": 2,
"level": 9,
@ -14,7 +14,7 @@
"type": "healing",
"_id": "crvDbD8V8linpzeg",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">When you critically succeed on a weapon attack, gain an additional Hope or clear an additional Stress.</p><p class=\"Body-Foundation\">Additionally, when you deal enough damage to defeat an enemy, gain a Hope or clear a Stress.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [],
@ -50,31 +50,6 @@
}
},
"type": []
},
{
"value": {
"custom": {
"enabled": true,
"formula": "1"
},
"multiplier": "prof",
"flatMultiplier": 1,
"dice": "d6",
"bonus": null
},
"applyTo": "hope",
"base": false,
"resultBased": false,
"valueAlt": {
"multiplier": "prof",
"flatMultiplier": 1,
"dice": "d6",
"bonus": null,
"custom": {
"enabled": false
}
},
"type": []
}
],
"includeBase": false
@ -99,9 +74,77 @@
},
"useDefault": false
},
"name": "Gain Hope & Clear Stress",
"name": "Clear Stress",
"img": "icons/magic/control/buff-flight-wings-runes-purple.webp",
"range": ""
},
"r7MFU8khXqsEpx16": {
"type": "healing",
"_id": "r7MFU8khXqsEpx16",
"systemPath": "actions",
"description": "<p class=\"Body-Foundation\">When you critically succeed on a weapon attack, gain an additional Hope or clear an additional Stress.</p><p class=\"Body-Foundation\">Additionally, when you deal enough damage to defeat an enemy, gain a Hope or clear a Stress.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [],
"uses": {
"value": null,
"max": "",
"recovery": null,
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"value": {
"custom": {
"enabled": true,
"formula": "1"
},
"multiplier": "prof",
"flatMultiplier": 1,
"dice": "d6",
"bonus": null
},
"applyTo": "hope",
"base": false,
"resultBased": false,
"valueAlt": {
"multiplier": "prof",
"flatMultiplier": 1,
"dice": "d6",
"bonus": null,
"custom": {
"enabled": false
}
},
"type": []
}
],
"includeBase": false
},
"target": {
"type": "self",
"amount": null
},
"effects": [],
"roll": {
"type": null,
"trait": null,
"difficulty": null,
"bonus": null,
"advState": "neutral",
"diceRolling": {
"multiplier": "prof",
"flatMultiplier": 1,
"dice": "d6",
"compare": null,
"treshold": null
},
"useDefault": false
},
"name": "Gain Hope",
"img": "icons/magic/holy/barrier-shield-winged-blue.webp",
"range": ""
}
}
},
@ -114,8 +157,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784464,
"modifiedTime": 1754247713267,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304753469,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "3zvjgZ5Od343wHzx",
"sort": 3400000,

View file

@ -24,7 +24,59 @@
},
"_id": "zbxPl81kbWEegKQN",
"sort": 3400000,
"effects": [],
"effects": [
{
"name": "On The Brink",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"_id": "UJTsJlnhi5Zi0XQ2",
"img": "icons/magic/life/heart-cross-blue.webp",
"changes": [
{
"key": "system.rules.damageReduction.thresholdImmunities.minor",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": true,
"duration": {
"startTime": null,
"combat": null,
"seconds": null,
"rounds": null,
"turns": null,
"startRound": null,
"startTurn": null
},
"description": "<p class=\"Body\">When you have 2 or fewer Hit Points unmarked, you dont take Minor damage.</p>",
"origin": null,
"tint": "#ffffff",
"transfer": true,
"statuses": [],
"sort": 0,
"flags": {},
"_stats": {
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1754303484332,
"modifiedTime": 1754303570504,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!zbxPl81kbWEegKQN.UJTsJlnhi5Zi0XQ2"
}
],
"ownership": {
"default": 0
},

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "7pKKYgRQAKlQAksV",
"system": {
"description": "<p><p class=\"Body-Foundation\">When you successfully make an attack with your weapon, you never deal damage beneath a targets <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"major-damage\" nexus=\"daggerheart\">Major</tooltip> damage threshold (the target always marks a minimum of 2 <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hit-points\" nexus=\"daggerheart\">Hit Points</tooltip>).</p><p class=\"Body-Foundation\">Additionally, when a creature within your weapons range deals damage to an ally with an attack that doesnt include you, you can <strong>mark a </strong><tooltip category=\"rule\" class=\"tooltip-convert\" element=\"stress\" nexus=\"daggerheart\"><strong>Stress</strong></tooltip> to force them to make a <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"reaction-roll\" nexus=\"daggerheart\">Reaction Roll</tooltip> (15). On a failure, the target must mark a Hit Point. </p></p>",
"description": "<p class=\"Body-Foundation\">When you successfully make an attack with your weapon, you never deal damage beneath a targets Major damage threshold (the target always marks a minimum of 2 Hit Points).</p><p class=\"Body-Foundation\">Additionally, when a creature within your weapons range deals damage to an ally with an attack that doesnt include you, you can <strong>mark a Stress</strong> to force them to make a Reaction Roll (15). On a failure, the target must mark a Hit Point.</p>",
"domain": "blade",
"recallCost": 3,
"level": 10,
@ -14,7 +14,7 @@
"type": "damage",
"_id": "MxaqNvY9IfWnFe5P",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">When you successfully make an attack with your weapon, you never deal damage beneath a targets Major damage threshold (the target always marks a minimum of 2 Hit Points).</p><p class=\"Body-Foundation\">Additionally, when a creature within your weapons range deals damage to an ally with an attack that doesnt include you, you can <strong>mark a Stress</strong> to force them to make a Reaction Roll (15). On a failure, the target must mark a Hit Point.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [
@ -57,8 +57,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784490,
"modifiedTime": 1754248295075,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304817948,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "I7pNsQ9Yx6mRJX4V",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "EiP5dLozOFZKIeWN",
"system": {
"description": "<p><p class=\"Body-Foundation\">Before you make an attack, you can <strong>mark a </strong><tooltip category=\"rule\" class=\"tooltip-convert\" element=\"stress\" nexus=\"daggerheart\"><strong>Stress</strong></tooltip> to gain a bonus to your damage roll equal to twice your <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"strength\" nexus=\"daggerheart\">Strength</tooltip>. </p><p class=\"Body-Foundation\">You can Rage Up twice per attack.</p></p>",
"description": "<p class=\"Body-Foundation\">Before you make an attack, you can <strong>mark a Stress</strong> to gain a bonus to your damage roll equal to twice your Strength.</p><p class=\"Body-Foundation\">You can Rage Up twice per attack.</p>",
"domain": "blade",
"recallCost": 1,
"level": 6,
@ -95,8 +95,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784496,
"modifiedTime": 1754246820890,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304556054,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "GRL0cvs96vrTDckZ",
"sort": 3400000,
@ -105,7 +105,7 @@
"name": "Rage Up (1)",
"img": "systems/daggerheart/assets/icons/domains/domain-card/blade.png",
"origin": "Compendium.daggerheart.domains.Item.GRL0cvs96vrTDckZ",
"transfer": false,
"transfer": true,
"_id": "bq1MhcmoP6Wo5CXF",
"type": "base",
"system": {
@ -124,7 +124,7 @@
"priority": null
}
],
"disabled": false,
"disabled": true,
"duration": {
"startTime": null,
"combat": null,
@ -147,8 +147,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1754246159246,
"modifiedTime": 1754246767854,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304575352,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!GRL0cvs96vrTDckZ.bq1MhcmoP6Wo5CXF"
},
@ -156,7 +156,7 @@
"name": "Rage Up (2)",
"img": "systems/daggerheart/assets/icons/domains/domain-card/blade.png",
"origin": "Compendium.daggerheart.domains.Item.GRL0cvs96vrTDckZ",
"transfer": false,
"transfer": true,
"_id": "t6SIjQxB6UBUJ98f",
"type": "base",
"system": {
@ -175,7 +175,7 @@
"priority": null
}
],
"disabled": false,
"disabled": true,
"duration": {
"startTime": null,
"combat": null,
@ -198,8 +198,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1754246675511,
"modifiedTime": 1754246707418,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304583724,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!GRL0cvs96vrTDckZ.t6SIjQxB6UBUJ98f"
}

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "QYdeGsmVYIF34kZR",
"system": {
"description": "<p><p class=\"Body-Foundation\">Once per <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"long-rest\" nexus=\"daggerheart\">long rest</tooltip>, <strong>spend a </strong><tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hope\" nexus=\"daggerheart\"><strong>Hope</strong></tooltip> to make an <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"attack-roll\" nexus=\"daggerheart\">attack roll</tooltip>. The GM tells you which targets within range it would succeed against. Choose one of these targets and force them to mark 5 <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"hit-points\" nexus=\"daggerheart\">Hit Points</tooltip>. </p></p>",
"description": "<p class=\"Body-Foundation\">Once per long rest, <strong>spend a Hope</strong> to make an attack roll. The GM tells you which targets within range it would succeed against. Choose one of these targets and force them to mark 5 Hit Points.</p>",
"domain": "blade",
"recallCost": 3,
"level": 9,
@ -14,7 +14,7 @@
"type": "attack",
"_id": "bFW8Qgv6fUswbA6s",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">Once per long rest, <strong>spend a Hope</strong> to make an attack roll. The GM tells you which targets within range it would succeed against. Choose one of these targets and force them to mark 5 Hit Points.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [
@ -77,8 +77,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784498,
"modifiedTime": 1754247964921,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304768446,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "MCgNRlh0s5XUPCfl",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "o7t2fsAmRxKLoHrO",
"system": {
"description": "<p><p class=\"Body-Foundation\"><strong>Mark a </strong><tooltip category=\"rule\" class=\"tooltip-convert\" element=\"stress\" nexus=\"daggerheart\"><strong>Stress</strong></tooltip> to gain <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"advantage-and-disadvantage\" nexus=\"daggerheart\">advantage</tooltip> on an attack. </p></p>",
"description": "<p class=\"Body-Foundation\"><strong>Mark a Stress</strong> to gain advantage on an attack.</p>",
"domain": "blade",
"recallCost": 1,
"level": 2,
@ -14,7 +14,7 @@
"type": "effect",
"_id": "1vOYZjiUbRBmLcVr",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\"><strong>Mark a Stress</strong> to gain advantage on an attack.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [
@ -53,8 +53,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784500,
"modifiedTime": 1754244790951,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304322191,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "2ooUo2yoilGifY81",
"sort": 3400000,

View file

@ -4,11 +4,36 @@
"type": "domainCard",
"folder": "wWL9mV6i2EGX5xHS",
"system": {
"description": "<p><p class=\"Body-Foundation\">Once per rest, when a creature within <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"melee\" nexus=\"daggerheart\">Melee</tooltip> range would deal damage to you, you can avoid the attack and safely move out of Melee range of the enemy. </p></p>",
"description": "<p class=\"Body-Foundation\">Once per rest, when a creature within Melee range would deal damage to you, you can avoid the attack and safely move out of Melee range of the enemy.</p>",
"domain": "blade",
"recallCost": 1,
"level": 3,
"type": "ability"
"type": "ability",
"actions": {
"lcEmS1XXO5wH54cQ": {
"type": "effect",
"_id": "lcEmS1XXO5wH54cQ",
"systemPath": "actions",
"description": "<p class=\"Body-Foundation\">Once per rest, when a creature within Melee range would deal damage to you, you can avoid the attack and safely move out of Melee range of the enemy.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [],
"uses": {
"value": null,
"max": "1",
"recovery": "shortRest",
"consumeOnSuccess": false
},
"effects": [],
"target": {
"type": "self",
"amount": null
},
"name": "Avoid",
"img": "icons/skills/movement/feet-winged-boots-brown.webp",
"range": "melee"
}
}
},
"flags": {},
"_stats": {
@ -19,8 +44,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784509,
"modifiedTime": 1754244800614,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304188850,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "5bBU9jWHOuOY12lR",
"sort": 3400000,

View file

@ -81,7 +81,65 @@
},
"_id": "JwfhtgmmuRxg4zhI",
"sort": 3400000,
"effects": [],
"effects": [
{
"name": "Shrug It Off",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"_id": "5DTQDVU8Jy5Nnp5V",
"img": "icons/magic/defensive/shield-barrier-deflect-teal.webp",
"changes": [
{
"key": "system.rules.damageReduction.stressDamageReduction.any.cost",
"mode": 5,
"value": "1",
"priority": null
},
{
"key": "system.rules.damageReduction.stressDamageReduction.any.enabled",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
"combat": null,
"seconds": null,
"rounds": null,
"turns": null,
"startRound": null,
"startTurn": null
},
"description": "<p class=\"Body-Foundation\">When you would take damage, you can <strong>mark a Stress</strong> to reduce the severity of the damage by one threshold. When you do, roll a <strong>d6</strong>. On a result of 3 or lower, place this card in your vault.</p>",
"origin": null,
"tint": "#ffffff",
"transfer": true,
"statuses": [],
"sort": 0,
"flags": {},
"_stats": {
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1754306645903,
"modifiedTime": 1754306703368,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!JwfhtgmmuRxg4zhI.5DTQDVU8Jy5Nnp5V"
}
],
"ownership": {
"default": 0
},

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "wWL9mV6i2EGX5xHS",
"system": {
"description": "<p><p class=\"Body-Foundation\">You can use a different <tooltip category=\"rule\" class=\"tooltip-convert\" element=\"character-traits\" nexus=\"daggerheart\">character trait</tooltip> for an equipped weapon, rather than the trait the weapon calls for. </p><p class=\"Body-Foundation\">When you deal damage, you can <strong>mark a </strong><tooltip category=\"rule\" class=\"tooltip-convert\" element=\"stress\" nexus=\"daggerheart\"><strong>Stress</strong></tooltip> to use the maximum result of one of your damage dice instead of rolling it. </p></p>",
"description": "<p class=\"Body-Foundation\">You can use a different character trait for an equipped weapon, rather than the trait the weapon calls for.</p><p class=\"Body-Foundation\">When you deal damage, you can <strong>mark a Stress</strong> to use the maximum result of one of your damage dice instead of rolling it.</p>",
"domain": "blade",
"recallCost": 1,
"level": 3,
@ -14,7 +14,7 @@
"type": "effect",
"_id": "XAaygVE635axvBX7",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">You can use a different character trait for an equipped weapon, rather than the trait the weapon calls for.</p><p class=\"Body-Foundation\">When you deal damage, you can <strong>mark a Stress</strong> to use the maximum result of one of your damage dice instead of rolling it.</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [
@ -53,8 +53,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784541,
"modifiedTime": 1754244901236,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304293769,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "wQ53ImDswEHv5SGQ",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "Emnx4o1DWGTVKoAg",
"system": {
"description": "<p></p><p class=\"Body-Foundation\">When you choose this card, permanently gain two of the following benefits:</p><ul><li class=\"vertical-card-list-found\"><p>One Stress slot</p></li><li class=\"vertical-card-list-found\"><p>One Hit Point slot</p></li><li class=\"vertical-card-list-found\">+2 bonus to your damage thresholds</li></ul><p class=\"Body-Foundation\">Then place this card in your vault permanently.</p><p></p>",
"description": "<p class=\"Body-Foundation\">When you choose this card, permanently gain two of the following benefits:</p><ul><li class=\"vertical-card-list-found\"><p>One Stress slot</p></li><li class=\"vertical-card-list-found\"><p>One Hit Point slot</p></li><li class=\"vertical-card-list-found\">+2 bonus to your damage thresholds</li></ul><p class=\"Body-Foundation\">Then place this card in your vault permanently.</p>",
"domain": "blade",
"recallCost": 0,
"level": 5,
@ -57,8 +57,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784542,
"modifiedTime": 1754245974822,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304501280,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "sWUlSPOJEaXyQLCj",
"sort": 3400000,

View file

@ -4,7 +4,7 @@
"type": "domainCard",
"folder": "9Xc6KzNyjDtTGZkp",
"system": {
"description": "<p><p class=\"Body-Foundation\">When you make a successful attack against a target within <tooltip nexus=\"daggerheart\" category=\"rule\" element=\"very-close\" class=\"tooltip-convert\">Very Close</tooltip> range, you can <strong>spend a <tooltip nexus=\"daggerheart\" category=\"rule\" element=\"hope\" class=\"tooltip-convert\">Hope</tooltip></strong> to use the attack against all other targets within Very Close range. All additional adversaries you succeed against with this ability take half damage.</p></p>",
"description": "<p class=\"Body-Foundation\">When you make a successful attack against a target within Very Close range, you can <strong>spend a Hope</strong> to use the attack against all other targets within Very Close range. All additional adversaries you succeed against with this ability take half damage.</p><p>@Template[type:emanation|range:vc]</p>",
"domain": "blade",
"recallCost": 0,
"level": 1,
@ -14,7 +14,7 @@
"type": "effect",
"_id": "g9X0wRuCtAYzF576",
"systemPath": "actions",
"description": "",
"description": "<p class=\"Body-Foundation\">When you make a successful attack against a target within Very Close range, you can <strong>spend a Hope</strong> to use the attack against all other targets within Very Close range. All additional adversaries you succeed against with this ability take half damage.</p><p>@Template[type:emanation|range:vc]</p>",
"chatDisplay": true,
"actionType": "action",
"cost": [
@ -53,8 +53,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753922784545,
"modifiedTime": 1754244586174,
"lastModifiedBy": "l5jB3XmcVXOTQpRZ"
"modifiedTime": 1754304354572,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_id": "anO0arioUy7I5zBg",
"sort": 3400000,

View file

@ -6,7 +6,7 @@
"sorting": "a",
"_id": "D1MFCYakdFIKDmcD",
"description": "",
"sort": 2100000,
"sort": 1000000,
"flags": {},
"_stats": {
"compendiumSource": null,
@ -16,7 +16,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": "MQSznptE5yLT7kj8",
"modifiedTime": 1754241657301
"modifiedTime": 1754303642814
},
"_key": "!folders!D1MFCYakdFIKDmcD"
}

View file

@ -6,7 +6,7 @@
"sorting": "a",
"_id": "QpOL7jPbMBzH96qR",
"description": "",
"sort": 1200000,
"sort": 100000,
"flags": {},
"_stats": {
"compendiumSource": null,
@ -16,7 +16,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": "MQSznptE5yLT7kj8",
"modifiedTime": 1754241649342
"modifiedTime": 1754303642814
},
"_key": "!folders!QpOL7jPbMBzH96qR"
}

View file

@ -6,7 +6,7 @@
"sorting": "a",
"_id": "pk4xXE8D3vTawrqj",
"description": "",
"sort": 1300000,
"sort": 200000,
"flags": {},
"_stats": {
"compendiumSource": null,
@ -16,7 +16,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": "MQSznptE5yLT7kj8",
"modifiedTime": 1754241651400
"modifiedTime": 1754303642814
},
"_key": "!folders!pk4xXE8D3vTawrqj"
}

View file

@ -6,7 +6,7 @@
"sorting": "a",
"_id": "Oo9EkkF7CDD3QZEG",
"description": "",
"sort": 1400000,
"sort": 300000,
"flags": {},
"_stats": {
"compendiumSource": null,
@ -16,7 +16,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": "MQSznptE5yLT7kj8",
"modifiedTime": 1754241653016
"modifiedTime": 1754303642814
},
"_key": "!folders!Oo9EkkF7CDD3QZEG"
}

View file

@ -6,7 +6,7 @@
"sorting": "a",
"_id": "cOZgzLQRGNnBzsHT",
"description": "",
"sort": 1500000,
"sort": 400000,
"flags": {},
"_stats": {
"compendiumSource": null,
@ -16,7 +16,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": "MQSznptE5yLT7kj8",
"modifiedTime": 1754241653668
"modifiedTime": 1754303642814
},
"_key": "!folders!cOZgzLQRGNnBzsHT"
}

View file

@ -6,7 +6,7 @@
"sorting": "a",
"_id": "XDSp0FdiYDVO0tfw",
"description": "",
"sort": 1600000,
"sort": 500000,
"flags": {},
"_stats": {
"compendiumSource": null,
@ -16,7 +16,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": "MQSznptE5yLT7kj8",
"modifiedTime": 1754241654308
"modifiedTime": 1754303642814
},
"_key": "!folders!XDSp0FdiYDVO0tfw"
}

View file

@ -6,7 +6,7 @@
"sorting": "a",
"_id": "nKCmeAn7ESsb4byE",
"description": "",
"sort": 1700000,
"sort": 600000,
"flags": {},
"_stats": {
"compendiumSource": null,
@ -16,7 +16,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": "MQSznptE5yLT7kj8",
"modifiedTime": 1754241654911
"modifiedTime": 1754303642814
},
"_key": "!folders!nKCmeAn7ESsb4byE"
}

View file

@ -6,7 +6,7 @@
"sorting": "a",
"_id": "kj3gwg5bmCqwFYze",
"description": "",
"sort": 1800000,
"sort": 700000,
"flags": {},
"_stats": {
"compendiumSource": null,
@ -16,7 +16,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": "MQSznptE5yLT7kj8",
"modifiedTime": 1754241655520
"modifiedTime": 1754303642814
},
"_key": "!folders!kj3gwg5bmCqwFYze"
}

View file

@ -6,7 +6,7 @@
"sorting": "a",
"_id": "FUzQxkv4gFc46SIs",
"description": "",
"sort": 1900000,
"sort": 800000,
"flags": {},
"_stats": {
"compendiumSource": null,
@ -16,7 +16,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": "MQSznptE5yLT7kj8",
"modifiedTime": 1754241656103
"modifiedTime": 1754303642814
},
"_key": "!folders!FUzQxkv4gFc46SIs"
}

View file

@ -6,7 +6,7 @@
"sorting": "a",
"_id": "8DOVMjTtZFKtwX4p",
"description": "",
"sort": 2000000,
"sort": 900000,
"flags": {},
"_stats": {
"compendiumSource": null,
@ -16,7 +16,7 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": "MQSznptE5yLT7kj8",
"modifiedTime": 1754241656688
"modifiedTime": 1754303642814
},
"_key": "!folders!8DOVMjTtZFKtwX4p"
}

View file

@ -31,18 +31,20 @@
"effects": [
{
"name": "Reinforced",
"description": "When you mark your last Armor Slot, increase your damage thresholds by +2 until you clear at least 1 Armor Slot.",
"description": "<p>When you mark your last Armor Slot, increase your damage thresholds by +2 until you clear at least 1 Armor Slot.</p>",
"img": "icons/magic/defensive/shield-barrier-glowing-triangle-green.webp",
"changes": [
{
"key": "system.bunuses.damageThresholds.major",
"key": "system.damageThresholds.major",
"mode": 2,
"value": "2"
"value": "2",
"priority": null
},
{
"key": "system.bunuses.damageThresholds.severe",
"key": "system.damageThresholds.severe",
"mode": 2,
"value": "2"
"value": "2",
"priority": null
}
],
"_id": "P3aCN8PQgPXP4C9M",
@ -51,7 +53,12 @@
"disabled": false,
"duration": {
"startTime": null,
"combat": null
"combat": null,
"seconds": null,
"rounds": null,
"turns": null,
"startRound": null,
"startTurn": null
},
"origin": null,
"tint": "#ffffff",
@ -67,8 +74,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753807455490,
"modifiedTime": 1753807455490,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754297884536,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!tzZntboNtHL5C6VM.P3aCN8PQgPXP4C9M"
}

View file

@ -2,11 +2,35 @@
.daggerheart.views.damage-reduction {
.damage-reduction-container {
position: relative;
padding: 8px 0;
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
.rules-button {
position: absolute;
top: 4px;
right: 4px;
border-radius: 50%;
&.inactive {
opacity: 0.4;
::after {
position: absolute;
content: '/';
color: red;
font-weight: 700;
font-size: 1.8em;
left: 5px;
top: 0;
rotate: 13deg;
}
}
}
.section-container {
display: flex;
flex-direction: column;
@ -44,7 +68,7 @@
.mark-selection-inner {
display: flex;
gap: 2px;
gap: 8px;
.mark-container {
cursor: pointer;
@ -58,10 +82,6 @@
justify-content: center;
opacity: 0.4;
&:not(:last-child) {
margin-right: 8px;
}
&.selected {
opacity: 1;
}
@ -79,11 +99,11 @@
}
}
.stress-reduction-container {
.chip-container {
margin: 0;
width: 100%;
.stress-reduction {
.chip-inner-container {
border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px;
height: 26px;
@ -113,6 +133,14 @@
}
}
.threshold-label {
opacity: 0.6;
&.active {
opacity: 1;
}
}
.markers-subtitle {
margin: -4px 0 0 0;

View file

@ -2,6 +2,6 @@
.daggerheart.views.damage-reduction {
.window-content {
padding: 8px 0;
padding: 0;
}
}

View file

@ -94,6 +94,7 @@
.label {
gap: 4px;
color: @beige-80;
}
}
}

View file

@ -8,9 +8,8 @@
flex-direction: column;
gap: 10px;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%);
padding: 20px 0;
padding-top: 10px;
mask-image: linear-gradient(0deg, transparent 0%, black 5%);
padding-bottom: 20px;
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;

View file

@ -6,7 +6,6 @@
display: grid;
grid-template-columns: 275px 1fr;
grid-template-rows: auto 1fr;
gap: 15px 0;
height: 100%;
width: 100%;
padding-bottom: 0;

View file

@ -8,9 +8,8 @@
flex-direction: column;
gap: 10px;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%);
padding: 20px 0;
padding-top: 10px;
mask-image: linear-gradient(0deg, transparent 0%, black 5%);
padding-bottom: 20px;
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;

View file

@ -8,9 +8,8 @@
flex-direction: column;
gap: 10px;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%);
padding: 20px 0;
padding-top: 10px;
mask-image: linear-gradient(0deg, transparent 0%, black 5%);
padding-bottom: 20px;
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;

View file

@ -6,7 +6,6 @@
display: grid;
grid-template-columns: 275px 1fr;
grid-template-rows: auto 1fr;
gap: 15px 0;
height: 100%;
width: 100%;
padding-bottom: 0;

View file

@ -445,7 +445,7 @@
overflow-y: hidden;
padding-top: 10px;
padding-bottom: 20px;
mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%);
mask-image: linear-gradient(0deg, transparent 0%, black 5%);
&:hover {
overflow-y: auto;

View file

@ -0,0 +1,18 @@
@import '../../../utils/colors.less';
@import '../../../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.environment {
.tab.features {
.feature-section {
display: flex;
flex-direction: column;
gap: 10px;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 5%);
padding-bottom: 20px;
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;
}
}
}

View file

@ -16,6 +16,7 @@
@import './actors/companion/header.less';
@import './actors/companion/sheet.less';
@import './actors/environment/actions.less';
@import './actors/environment/header.less';
@import './actors/environment/sheet.less';

View file

@ -55,6 +55,7 @@
@beige: #efe6d8;
@beige-15: #efe6d815;
@beige-50: #efe6d850;
@beige-80: #efe6d880;
@soft-white-shadow: rgba(255, 255, 255, 0.05);

View file

@ -1,4 +1,9 @@
<div class="damage-reduction-container">
{{#if rulesToggleable}}
<button type="button" class="rules-button {{#unless rulesOn}}inactive{{/unless}}" data-action="toggleRules" data-tooltip-text="{{#if rulesOn}}{{localize "DAGGERHEART.UI.Tooltip.rulesOn"}}{{else}}{{localize "DAGGERHEART.UI.Tooltip.rulesOff"}}{{/if}}">
<i class="fa-solid fa-book"></i>
</button>
{{/if}}
<div class="section-container padded">
<div class="resources-container">
<div class="resource-container">
@ -25,8 +30,6 @@
<i class="fa-solid fa-shield"></i>
</div>
{{/each}}
</div>
<div class="mark-selection-inner">
{{#each marks.stress}}
<div
class="mark-container {{#if this.selected}}selected{{/if}} {{#if (not @root.basicMarksUsed)}}inactive{{/if}}"
@ -40,19 +43,25 @@
<div class="markers-subtitle bold">{{localize "DAGGERHEART.APPLICATIONS.DamageReduction.usedMarks"}}</div>
</div>
{{#if availableStressReductions}}
<div class="resources-container">
<div class="resource-container">
<h4 class="armor-title">{{localize "DAGGERHEART.APPLICATIONS.DamageReduction.stressReduction"}}</h4>
</div>
</div>
{{/if}}
{{#each availableStressReductions}}
<div class="section-container">
<h4 class="stress-reduction-container divider">
<div class="stress-reduction {{#if (eq this.from @root.currentDamage)}}active{{/if}} {{#if this.selected}}selected{{/if}}" data-action="useStressReduction" data-reduction="{{@key}}">
{{this.from}}
<i class="fa-solid fa-arrow-right-long"></i>
{{this.to}}
<h4 class="chip-container divider">
<div class="chip-inner-container selectable {{#if (or this.any (eq this.from @root.currentDamage))}}active{{/if}} {{#if this.selected}}selected{{/if}}" data-action="useStressReduction" data-reduction="{{@key}}">
{{#if this.any}}
{{localize "DAGGERHEART.GENERAL.any"}}
{{else}}
{{this.from}}
<i class="fa-solid fa-arrow-right-long"></i>
{{this.to}}
{{/if}}
<div class="stress-reduction-cost">
{{this.cost}}
<i class="fa-solid fa-bolt"></i>
@ -62,6 +71,18 @@
</div>
{{/each}}
{{#if thresholdImmunities}}
<div class="resources-container">
<div class="resource-container">
<h4 class="armor-title">{{localize "DAGGERHEART.APPLICATIONS.DamageReduction.thresholdImmunities"}}</h4>
</div>
</div>
{{/if}}
{{#each thresholdImmunities as | immunity key |}}
<div class="threshold-label {{#if (gte key @root.currentDamageNr)}}active{{/if}}">{{immunity}}</div>
{{/each}}
<footer class="padded">
<button type="button" data-action="takeDamage">
{{localize "Take"}}

View file

@ -12,6 +12,7 @@
{{formGroup settingFields.schema.fields.hordeDamage value=settingFields._source.hordeDamage localize=true}}
{{formGroup settingFields.schema.fields.effects.fields.rangeDependent value=settingFields._source.effects.rangeDependent localize=true}}
{{formGroup settingFields.schema.fields.levelupAuto value=settingFields._source.levelupAuto localize=true}}
{{formGroup settingFields.schema.fields.damageReductionRulesDefault value=settingFields._source.damageReductionRulesDefault localize=true}}
<footer class="form-footer">
<button data-action="reset">

View file

@ -89,8 +89,7 @@
<div class="domains-section">
{{#each document.system.class.value.system.domains as |domain|}}
<div class="domain">
<span class="label">{{localize (concat 'DAGGERHEART.GENERAL.Domain.' domain '.label')}}</span>
<img src="{{concat 'systems/daggerheart/assets/icons/domains/' domain '.svg'}}" alt="">
<img src="{{concat 'systems/daggerheart/assets/icons/domains/' domain '.svg'}}" alt="" data-tooltip="{{localize (concat 'DAGGERHEART.GENERAL.Domain.' domain '.label')}}" />
</div>
{{/each}}
</div>

View file

@ -55,7 +55,7 @@ Parameters:
{{/each}}
</div>
{{else if (not ../hideLabels)}}
<div class="item-lables">
<div class="item-labels">
<div class="label">
{{#each this._getLabels as |label|}}
{{ifThen label.value label.value label}}