From 3d672baddfac3d9a8cdd7de38da6229a841cf647 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Wed, 4 Feb 2026 13:51:07 +0100 Subject: [PATCH] Added duration to all tier1 adversaries --- lang/en.json | 1 + .../sheets-configs/activeEffectConfig.mjs | 9 ++++ module/applications/ui/combatTracker.mjs | 3 ++ module/config/generalConfig.mjs | 4 ++ module/helpers/utils.mjs | 10 ++++- ...ersary_Acid_Burrower_89yAh30vaNQOALlz.json | 26 ++++++++---- ...ry_Assassin_Poisoner_h5RuhzGL17dW5FBT.json | 29 +++++++++---- .../adversary_Bear_71qKDLKO3CsrNkdy.json | 27 ++++++++---- ...versary_Bladed_Guard_B4LZcGuBAHzyVdzy.json | 27 ++++++++---- ...ersary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json | 26 ++++++++---- .../adversary_Courtier_CBBuEXAlLKFMJdjg.json | 26 ++++++++---- ...ry_Deeproot_Defender_9x2xY9zwc3xzbXo5.json | 27 ++++++++---- .../adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json | 27 ++++++++---- ...rsary_Giant_Scorpion_fmfntuJ8mHRCAktP.json | 26 ++++++++---- ...adversary_Green_Ooze_SHXedd9zZPVfUgUa.json | 27 ++++++++---- ...y_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json | 26 ++++++++---- ...ed_Knife_Kneebreaker_CBKixLH3yhivZZuL.json | 41 ++++++++++++------- ...inor_Chaos_Elemental_sRn4bqerfARvhgSV.json | 26 ++++++++---- .../adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json | 27 ++++++++---- ...sary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json | 10 ++--- ...versary_Weaponmaster_ZNbQ2jg35LG4t9eH.json | 27 ++++++++---- ...dversary_Young_Dryad_8yUj2Mzvnifhxegm.json | 29 +++++++++---- 22 files changed, 337 insertions(+), 144 deletions(-) diff --git a/lang/en.json b/lang/en.json index 5762f87b..6bf30a59 100755 --- a/lang/en.json +++ b/lang/en.json @@ -661,6 +661,7 @@ "CONFIG": { "ActiveEffectDuration": { "temporary": "Temporary", + "act": "Next Spotlight", "scene": "Next Scene", "shortRest": "Next Rest", "longRest": "Next Long Rest", diff --git a/module/applications/sheets-configs/activeEffectConfig.mjs b/module/applications/sheets-configs/activeEffectConfig.mjs index d51164a0..74383d48 100644 --- a/module/applications/sheets-configs/activeEffectConfig.mjs +++ b/module/applications/sheets-configs/activeEffectConfig.mjs @@ -186,4 +186,13 @@ export default class DhActiveEffectConfig extends foundry.applications.sheets.Ac else durationDescription.classList.remove('visible'); } } + + /** @inheritDoc */ + _processFormData(event, form, formData) { + const submitData = super._processFormData(event, form, formData); + if (submitData.start && !submitData.start.time) submitData.start.time = '0'; + else if (!submitData) submitData.start = null; + + return submitData; + } } diff --git a/module/applications/ui/combatTracker.mjs b/module/applications/ui/combatTracker.mjs index fc47f085..345c6fcd 100644 --- a/module/applications/ui/combatTracker.mjs +++ b/module/applications/ui/combatTracker.mjs @@ -1,4 +1,5 @@ import { AdversaryBPPerEncounter } from '../../config/encounterConfig.mjs'; +import { expireActiveEffects } from '../../helpers/utils.mjs'; export default class DhCombatTracker extends foundry.applications.sidebar.tabs.CombatTracker { static DEFAULT_OPTIONS = { @@ -177,6 +178,8 @@ export default class DhCombatTracker extends foundry.applications.sidebar.tabs.C if (autoPoints) { update.system.actionTokens = Math.max(combatant.system.actionTokens - 1, 0); } + + if (combatant.actor) expireActiveEffects(combatant.actor, [CONFIG.DH.GENERAL.activeEffectDurations.act.id]); } await this.viewed.update({ diff --git a/module/config/generalConfig.mjs b/module/config/generalConfig.mjs index 1cc4b07f..7012a084 100644 --- a/module/config/generalConfig.mjs +++ b/module/config/generalConfig.mjs @@ -789,6 +789,10 @@ export const activeEffectDurations = { id: 'temporary', label: 'DAGGERHEART.CONFIG.ActiveEffectDuration.temporary' }, + act: { + id: 'act', + label: 'DAGGERHEART.CONFIG.ActiveEffectDuration.act' + }, scene: { id: 'scene', label: 'DAGGERHEART.CONFIG.ActiveEffectDuration.scene' diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index 06fd4bc8..a47a2671 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -491,6 +491,12 @@ export function refreshIsAllowed(allowedTypes, typeToCheck) { } } +function expireActiveEffectIsAllowed(allowedTypes, typeToCheck) { + if (typeToCheck === CONFIG.DH.GENERAL.activeEffectDurations.act.id) return true; + + return refreshIsAllowed(allowedTypes, typeToCheck); +} + export function expireActiveEffects(actor, allowedTypes = null) { const shouldExpireEffects = game.settings.get( CONFIG.DH.id, @@ -506,7 +512,7 @@ export function expireActiveEffects(actor, allowedTypes = null) { const { temporary, custom } = CONFIG.DH.GENERAL.activeEffectDurations; if ([temporary.id, custom.id].includes(effect.system.duration.type)) return false; - return refreshIsAllowed(allowedTypes, effect.system.duration.type); + return expireActiveEffectIsAllowed(allowedTypes, effect.system.duration.type); }) .map(x => x.id); @@ -527,6 +533,8 @@ export function htmlToText(html) { export function getIconVisibleActiveEffects(effects) { return effects.filter(effect => { + if (!(effect instanceof game.system.api.documents.DhActiveEffect)) return true; + const alwaysShown = effect.showIcon === CONST.ACTIVE_EFFECT_SHOW_ICON.ALWAYS; const conditionalShown = effect.showIcon === CONST.ACTIVE_EFFECT_SHOW_ICON.CONDITIONAL && !effect.transfer; // TODO: system specific logic diff --git a/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json b/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json index e2b3a444..70d0072b 100644 --- a/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json +++ b/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json @@ -400,18 +400,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "act" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "", "tint": "#ffffff", @@ -423,6 +423,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!89yAh30vaNQOALlz.ctXYwil2D1zfsekT.9PsnogEPsp1OOK64" } ], diff --git a/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json b/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json index 6594cbbe..91a8655e 100644 --- a/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json +++ b/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json @@ -277,20 +277,21 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary", + "description": "

Until you clear a HP.

" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, - "description": "

Vulnerable until you clear a HP.

", + "description": "

Vulnerable until you clear a HP.

", "tint": "#ffffff", "statuses": [ "vulnerable" @@ -300,6 +301,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!h5RuhzGL17dW5FBT.Fz2lnUEeBxsDpx0G.2iBVUGHtGW3I9VIj" } ], diff --git a/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json b/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json index da5de611..959ef9dd 100644 --- a/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json +++ b/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json @@ -368,18 +368,19 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary", + "description": "

Until you break free with a successful Strength Roll.

" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "

You are Restrained until you break free with a successful Strength Roll.

", "tint": "#ffffff", @@ -391,6 +392,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!71qKDLKO3CsrNkdy.zgR0MEqyobKp2yXr.U50Ccm9emMqAxma6" } ], diff --git a/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json b/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json index 8ee7c56c..0a332575 100644 --- a/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json +++ b/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json @@ -376,18 +376,19 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary", + "description": "

Until you break free with a successful attack, Finesse Roll, or Strength Roll.

" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "

You are Restrained until you break free with a successful attack, Finesse Roll, or Strength Roll.

", "tint": "#ffffff", @@ -399,6 +400,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!B4LZcGuBAHzyVdzy.9gizFt9ovKL05DXu.LmzztuktRkwOCy1a" } ], diff --git a/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json b/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json index c829c3f9..a169bf61 100644 --- a/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json +++ b/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json @@ -452,18 +452,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "", "tint": "#ffffff", @@ -475,6 +475,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!2UeZ0tEe7AzgSJNd.69reUZ5tv3splqyO.CjMrSdL6kgD8mKRQ" } ], diff --git a/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json b/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json index 6721666f..1ffc7ece 100644 --- a/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json +++ b/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json @@ -336,18 +336,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "scene" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "", "tint": "#ffffff", @@ -359,6 +359,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!CBBuEXAlLKFMJdjg.LYNaKEYcYMgvF4Rf.YNMhgBZW8ndrCjIp" } ], diff --git a/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json b/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json index cd745eb6..f66ce7f0 100644 --- a/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json +++ b/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json @@ -407,18 +407,19 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary", + "description": "

Until the Deeproot Defender takes Severe damage.

" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "

You are Restrained until the Defender takes Severe damage.

", "tint": "#ffffff", @@ -430,6 +431,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!9x2xY9zwc3xzbXo5.rreGFW5TbhUoZf2T.F3E7fiz01AbF2kr5" } ], diff --git a/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json b/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json index e3ecda4e..69301cb2 100644 --- a/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json +++ b/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json @@ -435,18 +435,19 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary", + "description": "

Until they clear at least 1 HP.

" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "", "tint": "#ffffff", @@ -458,6 +459,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!wNzeuQLfLUMvgHlQ.85XrqDvLP30YOO43.YNKHEFQ4ucGr4Rmc" } ], diff --git a/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json b/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json index 99b5ed46..fda3e656 100644 --- a/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json +++ b/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json @@ -438,18 +438,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "shortRest" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "

You are Poisoned until your next rest or until you succeed on a Knowledge Roll (16). While Poisoned, you must roll a d6 before you make an action roll. On a result of 4 or lower, you must mark a Stress.

[[/dr trait=knowledge difficulty=16]]

", "tint": "#ffffff", @@ -459,6 +459,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!fmfntuJ8mHRCAktP.lANiDkxxth2sGacT.oILkLJlGNZl7KI1R" } ], diff --git a/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json b/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json index b03b5495..5f3f52c2 100644 --- a/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json +++ b/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json @@ -465,18 +465,19 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary", + "description": "

If the Green Ooze takes Severe damage, the target is freed.

" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "

You must mark an additional Stress when you make an action roll. If the Ooze takes Severe damage, you are freed.

", "tint": "#ffffff", @@ -486,6 +487,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!SHXedd9zZPVfUgUa.Sm9Sk4mSvcq6PkmR.yk5kR5OVLCgDWfgY" } ], diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json b/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json index 6ca9749c..e56f7af5 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json @@ -278,18 +278,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "

Whenever you roll with Hope, the hexer can mark a stress to make the roll be with Fear instead.

", "tint": "#ffffff", @@ -299,6 +299,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!MbBPIOxaxXYNApXz.Bl8L0RCGOgVUzuXo.ihy3kvEGSOEKdNfT" } ], diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json b/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json index c38260e9..d8115fd9 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json @@ -334,25 +334,26 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [ + { + "key": "system.rules.attack.damage.hpDamageTakenMultiplier", + "value": 2, + "priority": null, + "type": "override" + } + ], + "duration": { + "type": "temporary", + "description": "

The target can break free, clearing both conditions, with a successful Strength Roll or is freed automatically if the Jagged Knife Kneebreaker takes Major or greater damage.

" } }, - "changes": [ - { - "key": "system.rules.attack.damage.hpDamageTakenMultiplier", - "mode": 5, - "value": "2", - "priority": null - } - ], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "", "tint": "#ffffff", @@ -365,6 +366,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!CBKixLH3yhivZZuL.Sa4Nt0eoDjirBKGf.d7sB1Qa1kJMnglqu" } ], diff --git a/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json b/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json index b1732c71..57dc2980 100644 --- a/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json +++ b/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json @@ -380,18 +380,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "shortRest" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "

Vulnerable until your next rest or you clear a HP.

", "tint": "#ffffff", @@ -403,6 +403,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!sRn4bqerfARvhgSV.oAxhAawgcK7DAdpa.KIyV2eXDmmymXY5y" } ], diff --git a/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json b/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json index 2c10ae3f..cd8a44b6 100644 --- a/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json +++ b/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json @@ -409,18 +409,19 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary", + "description": "

Until they’re extinguished with a successful Finesse Roll (14)

" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "

You are Ignited until you are extinguished with a successful Finesse Roll (14). While Ignited, you take 1d4 magic damage whenever you make an action roll.

[[/dr trait=finesse difficulty=14]]

", "tint": "#ffffff", @@ -430,6 +431,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!9rVlbJVrDNn1x7PS.JU9uVwZSM0ItnZRq.9UBLk9M87VIUziAQ" } ], diff --git a/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json b/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json index 6a984b3c..2b3867aa 100644 --- a/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json +++ b/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json @@ -128,12 +128,9 @@ "src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg", "anchorX": 0.5, "anchorY": 0.5, - "offsetX": 0, - "offsetY": 0, "fit": "contain", "scaleX": 1, "scaleY": 1, - "rotation": 0, "tint": "#ffffff", "alphaThreshold": 0.75 }, @@ -184,7 +181,7 @@ "saturation": 0, "contrast": 0 }, - "detectionModes": [], + "detectionModes": {}, "occludable": { "radius": 0 }, @@ -210,7 +207,8 @@ "flags": {}, "randomImg": false, "appendNumber": false, - "prependAdjective": false + "prependAdjective": false, + "depth": 1 }, "items": [ { @@ -219,7 +217,7 @@ "_id": "WpOh5kHHx7lcTvEY", "img": "icons/magic/acid/dissolve-drip-droplet-smoke.webp", "system": { - "description": "

When the @Lookup[@name] makes a successful attack, the target must mark an Armor Slot without receiving its benefi ts (they can still use armor to reduce the damage). If they can’t mark an Armor Slot, they must mark an additional HP.

", + "description": "

When the @Lookup[@name] makes a successful attack, the target must mark an Armor Slot without receiving its benefits (they can still use armor to reduce the damage). If they can’t mark an Armor Slot, they must mark an additional HP.

", "resource": null, "actions": { "HfK0u0c7NRppuF1Q": { diff --git a/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json b/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json index 2989468b..55c7cb23 100644 --- a/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json +++ b/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json @@ -324,18 +324,19 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary", + "description": "

Until your next successful attack

" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, "description": "

The next time the Taunted target attacks, they have disadvantage against targets other than the Weaponmaster.

", "tint": "#ffffff", @@ -345,6 +346,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!ZNbQ2jg35LG4t9eH.tyGgOqQzDSIypoMz.j2jYmYbtWXvq32yX" } ], diff --git a/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json b/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json index 446a4af3..d097f765 100644 --- a/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json +++ b/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json @@ -367,20 +367,21 @@ "type": "withinRange", "target": "hostile", "range": "melee" + }, + "changes": [], + "duration": { + "type": "temporary", + "description": "

Until they’re freed with a successful Strength Roll.

" } }, - "changes": [], "disabled": false, "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null + "value": null, + "units": "seconds", + "expiry": null, + "expired": false }, - "description": "

You are Restrained until you're freed with a successful Strength Roll. When a creature makes an action roll against the cage, they must mark a Stress.

", + "description": "

You are Restrained until you're freed with a successful Strength Roll. When a creature makes an action roll against the cage, they must mark a Stress.

", "tint": "#ffffff", "statuses": [ "restrained" @@ -390,6 +391,16 @@ "_stats": { "compendiumSource": null }, + "start": { + "time": 0, + "combat": null, + "combatant": null, + "initiative": null, + "round": null, + "turn": null + }, + "showIcon": 1, + "folder": null, "_key": "!actors.items.effects!8yUj2Mzvnifhxegm.i8NoUGUTNY2C5NhC.k8LzBWRZo6VPqvpH" } ],