diff --git a/lang/en.json b/lang/en.json index b4b1410e..2efd6d7b 100755 --- a/lang/en.json +++ b/lang/en.json @@ -119,7 +119,8 @@ "deleteTriggerContent": "Are you sure you want to delete the {trigger} trigger?", "advantageState": "Advantage State", "damageOnSave": "Damage on Save", - "useDefaultItemValues": "Use default Item values" + "useDefaultItemValues": "Use default Item values", + "itemDamageIsUsed": "Item Damage Is Used" }, "RollField": { "diceRolling": { @@ -134,7 +135,7 @@ "attackModifier": "Attack Modifier", "attackName": "Attack Name", "criticalThreshold": "Critical Threshold", - "includeBase": { "label": "Include Item Damage" }, + "includeBase": { "label": "Use Item Damage" }, "groupAttack": { "label": "Group Attack" }, "multiplier": "Multiplier", "saveHint": "Set a default Trait to enable Reaction Roll. It can be changed later in Reaction Roll Dialog.", @@ -758,20 +759,15 @@ } }, "GroupRollSelect": { - "cancelConfirmText": "Are you sure you want to cancel the Group Roll? This will close it for all other players too.", - "cancelConfirmTitle": "Cancel Group Roll", - "initializationTitle": "Character Selection", - "finishGroupRoll": "Finish Group Roll", + "title": "Group Roll", + "aidingCharacters": "Aiding Characters", "leader": "Leader", "leaderRoll": "Leader Roll", - "members": "Members", "openDialogForAll": "Open Dialog For All", - "removeRoll": "Remove Roll", - "resultsHint": "Results will appear when characters roll", - "selectLeaderHint": "Select one Character to be the leader", - "selectParticipantsHint": "Select one Character to be the leader", "startGroupRoll": "Start Group Roll", - "title": "Group Roll" + "finishGroupRoll": "Finish Group Roll", + "cancelConfirmTitle": "Cancel Group Roll", + "cancelConfirmText": "Are you sure you want to cancel the Group Roll? This will close it for all other players too." }, "TokenConfig": { "actorSizeUsed": "Actor size is set, determining the dimensions" diff --git a/module/applications/dialogs/actionSelectionDialog.mjs b/module/applications/dialogs/actionSelectionDialog.mjs index 6123c970..995c4894 100644 --- a/module/applications/dialogs/actionSelectionDialog.mjs +++ b/module/applications/dialogs/actionSelectionDialog.mjs @@ -72,8 +72,8 @@ export default class ActionSelectionDialog extends HandlebarsApplicationMixin(Ap static async #onChooseAction(event, button) { const { actionId } = button.dataset; - this.#action = this.item.system.actionsList.find(a => a._id === actionId); - Object.defineProperty(this.#event, 'shiftKey', { + this.action = this.item.system.actionsList.find(a => a._id === actionId); + Object.defineProperty(this.event, 'shiftKey', { get() { return event.shiftKey; } diff --git a/module/applications/dialogs/groupRollDialog.mjs b/module/applications/dialogs/groupRollDialog.mjs index df03a061..6325795a 100644 --- a/module/applications/dialogs/groupRollDialog.mjs +++ b/module/applications/dialogs/groupRollDialog.mjs @@ -146,10 +146,12 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat const leader = this.party.system.groupRoll.leader; partContext.hasRolled = leader?.rollData || - Object.values(this.party.system.groupRoll?.aidingCharacters ?? {}).some(x => x.successful !== null); + Object.values(this.party.system.groupRoll?.aidingCharacters ?? {}).some( + x => x.successfull !== null + ); const { modifierTotal, modifiers } = Object.values(this.party.system.groupRoll.aidingCharacters).reduce( (acc, curr) => { - const modifier = curr.successful === true ? 1 : curr.successful === false ? -1 : null; + const modifier = curr.successfull === true ? 1 : curr.successfull === false ? -1 : null; if (modifier) { acc.modifierTotal += modifier; acc.modifiers.push(modifier); @@ -175,7 +177,7 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat case 'footer': partContext.canFinishRoll = Boolean(this.party.system.groupRoll.leader?.rollData) && - Object.values(this.party.system.groupRoll.aidingCharacters).every(x => x.successful !== null); + Object.values(this.party.system.groupRoll.aidingCharacters).every(x => x.successfull !== null); break; } @@ -193,10 +195,6 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat const actor = game.actors.get(data.id); const isLeader = data === this.party.system.groupRoll.leader; - const roll = data.roll; - const withTypeSuffix = !roll ? null : roll.isCritical ? 'criticalShort' : roll.withHope ? 'hope' : 'fear'; - const thing = withTypeSuffix ? _loc(`DAGGERHEART.GENERAL.${withTypeSuffix}`) : null; - return { ...data, type: isLeader ? 'leader' : 'aid', @@ -207,8 +205,7 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat key: partId, readyToRoll: Boolean(data.rollChoice), hasRolled: Boolean(data.rollData), - modifier: data.successful ? 1 : data.successful === false ? -1 : 0, - withLabelShort: thing ? _loc('DAGGERHEART.GENERAL.withThing', { thing }) : null + modifier: data.successfull ? 1 : data.successfull === false ? -1 : 0 }; } @@ -301,9 +298,6 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat static #toggleSelectMember(_, button) { const member = this.partyMembers.find(x => x.id === button.dataset.id); member.selected = !member.selected; - if (this.leader?.memberId === member.id) { - this.leader = null; - } this.render(); } @@ -343,14 +337,11 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat } //#endregion - /** @this GroupRollDialog */ - static async #makeRoll(_event, button) { - const member = button.closest('[data-member-key]').dataset.memberKey; - const { data, basePath } = this.#getCharacterDataById(member); - const actor = game.actors.find(x => x.id === data.id); + async makeRoll(button, characterData, path) { + const actor = game.actors.find(x => x.id === characterData.id); if (!actor) return; - const result = await actor.rollTrait(data.rollChoice, { + const result = await actor.rollTrait(characterData.rollChoice, { skips: { createMessage: true, resources: true, @@ -359,30 +350,34 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat }); if (!result) return; - // todo: move logic to actor.rollTrait() or actor.diceRoll() if (!game.modules.get('dice-so-nice')?.active) foundry.audio.AudioHelper.play({ src: CONFIG.sounds.dice }); const rollData = result.messageRoll.toJSON(); delete rollData.options.messageRoll; this.updatePartyData( { - [basePath]: { rollData, successful: null } + [path]: rollData }, this.getUpdatingParts(button) ); } + /** @this GroupRollDialog */ + static async #makeRoll(_event, button) { + const { data, basePath } = this.#getCharacterDataById(button.dataset.member); + this.makeRoll(button, data, `${basePath}.rollData`); + } + /** @this GroupRollDialog */ static async #removeRoll(_event, button) { - const member = button.closest('[data-member-key]').dataset.memberKey; - const { basePath } = this.#getCharacterDataById(member); + const { basePath } = this.#getCharacterDataById(button.dataset.member); this.updatePartyData( { [basePath]: { rollData: null, rollChoice: null, selected: false, - successful: null + successfull: null } }, this.getUpdatingParts(button) @@ -414,11 +409,11 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat static #markSuccessful(_event, button) { const memberKey = button.closest('[data-member-key]').dataset.memberKey; - const previousValue = this.party.system.groupRoll.aidingCharacters[memberKey].successful; + const previousValue = this.party.system.groupRoll.aidingCharacters[memberKey].successfull; const newValue = Boolean(button.dataset.success === 'true'); this.updatePartyData( { - [`system.groupRoll.aidingCharacters.${memberKey}.successful`]: + [`system.groupRoll.aidingCharacters.${memberKey}.successfull`]: previousValue === newValue ? null : newValue }, this.getUpdatingParts(button) @@ -462,7 +457,7 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat static async #finishRoll() { const totalRoll = this.party.system.groupRoll.leader.roll; for (const character of Object.values(this.party.system.groupRoll.aidingCharacters)) { - totalRoll.terms.push(new foundry.dice.terms.OperatorTerm({ operator: character.successful ? '+' : '-' })); + totalRoll.terms.push(new foundry.dice.terms.OperatorTerm({ operator: character.successfull ? '+' : '-' })); totalRoll.terms.push(new foundry.dice.terms.NumericTerm({ number: 1 })); } diff --git a/module/applications/sheets-configs/action-base-config.mjs b/module/applications/sheets-configs/action-base-config.mjs index 7406b084..a94abb26 100644 --- a/module/applications/sheets-configs/action-base-config.mjs +++ b/module/applications/sheets-configs/action-base-config.mjs @@ -156,7 +156,7 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) context.openSection = this.openSection; context.tabs = this._getTabs(this.constructor.TABS); context.config = CONFIG.DH; - if (this.action.damage) { + if (this.action.hasDamage) { context.allDamageTypesUsed = !getUnusedDamageTypes(this.action.damage.parts).length; if (this.action.damage.hasOwnProperty('includeBase') && this.action.type === 'attack') @@ -302,7 +302,7 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) static addDamage(_event) { if (!this.action.damage.parts) return; - const choices = getUnusedDamageTypes(this.action._source.damage.parts); + const choices = getUnusedDamageTypes(this.action.damage.parts); const content = new foundry.data.fields.StringField({ label: game.i18n.localize('Damage Type'), choices, diff --git a/module/applications/sheets-configs/setting-feature-config.mjs b/module/applications/sheets-configs/setting-feature-config.mjs index a5bcc4f9..f90bb52f 100644 --- a/module/applications/sheets-configs/setting-feature-config.mjs +++ b/module/applications/sheets-configs/setting-feature-config.mjs @@ -188,9 +188,8 @@ export default class SettingFeatureConfig extends HandlebarsApplicationMixin(App if (type === 'effect') { const move = foundry.utils.getProperty(this.settings, this.movePath); for (const action of move.actions) { - const actionEffects = action.effects ?? []; - const remainingEffects = actionEffects.filter(x => x._id !== id); - if (actionEffects.length !== remainingEffects.length) { + const remainingEffects = action.effects.filter(x => x._id !== id); + if (action.effects.length !== remainingEffects.length) { await action.update({ effects: remainingEffects.map(x => { const { _id, ...rest } = x; diff --git a/module/config/itemConfig.mjs b/module/config/itemConfig.mjs index 43054ec5..a3e785c3 100644 --- a/module/config/itemConfig.mjs +++ b/module/config/itemConfig.mjs @@ -453,7 +453,7 @@ export const allArmorFeatures = () => { const feature = homebrewFeatures[key]; const actions = feature.actions.map(action => ({ ...action, - effects: action.effects?.map(effect => feature.effects.find(x => x.id === effect._id)) ?? [], + effects: action.effects.map(effect => feature.effects.find(x => x.id === effect._id)), type: action.type })); const actionEffects = actions.flatMap(a => a.effects); @@ -1407,7 +1407,7 @@ export const allWeaponFeatures = () => { const actions = feature.actions.map(action => ({ ...action, - effects: action.effects?.map(effect => feature.effects.find(x => x.id === effect._id)) ?? [], + effects: action.effects.map(effect => feature.effects.find(x => x.id === effect._id)), type: action.type })); const actionEffects = actions.flatMap(a => a.effects); diff --git a/module/data/action/attackAction.mjs b/module/data/action/attackAction.mjs index c4d07c25..15cc1696 100644 --- a/module/data/action/attackAction.mjs +++ b/module/data/action/attackAction.mjs @@ -1,3 +1,4 @@ +import { DHDamageData } from '../fields/action/damageField.mjs'; import DHDamageAction from './damageAction.mjs'; export default class DHAttackAction extends DHDamageAction { @@ -11,19 +12,8 @@ export default class DHAttackAction extends DHDamageAction { super.prepareData(); if (!!this.item?.system?.attack) { if (this.damage.includeBase) { - const baseDamage = this.getParentHitPointDamage(); - if (baseDamage) { - if (!this.damage.parts.hitPoints) { - this.damage.parts.hitPoints = baseDamage; - } else { - for (const type of baseDamage.type) this.damage.parts.hitPoints.type.add(type); - - this.damage.parts.hitPoints.value.custom = { - enabled: true, - formula: `${baseDamage.value.getFormula()} + ${this.damage.parts.hitPoints.value.getFormula()}` - }; - } - } + const baseDamage = this.getParentDamage(); + this.damage.parts.hitPoints = new DHDamageData(baseDamage); } if (this.roll.useDefault) { this.roll.trait = this.item.system.attack.roll.trait; @@ -32,8 +22,16 @@ export default class DHAttackAction extends DHDamageAction { } } - getParentHitPointDamage() { - return this.item?.system?.attack.damage.parts.hitPoints; + getParentDamage() { + return { + value: { + multiplier: 'prof', + dice: this.item?.system?.attack.damage.parts.hitPoints.value.dice, + bonus: this.item?.system?.attack.damage.parts.hitPoints.value.bonus ?? 0 + }, + type: this.item?.system?.attack.damage.parts.hitPoints.type, + base: true + }; } get damageFormula() { diff --git a/module/data/groupRollData.mjs b/module/data/groupRollData.mjs index 10123152..78a06b13 100644 --- a/module/data/groupRollData.mjs +++ b/module/data/groupRollData.mjs @@ -30,7 +30,7 @@ export class CharacterData extends foundry.abstract.DataModel { }), rollData: new fields.JSONField({ nullable: true, initial: null }), selected: new fields.BooleanField({ initial: false }), - successful: new fields.BooleanField({ nullable: true, initial: null }) + successfull: new fields.BooleanField({ nullable: true, initial: null }) }; } diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 52150dae..db249033 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -99,7 +99,7 @@ export default class DhpActor extends Actor { } // Configure prototype token settings - if (['character', 'companion', 'party'].includes(this.type)) { + if (['character', 'companion', 'party'].includes(this.type)) Object.assign(update, { prototypeToken: { sight: { enabled: true }, @@ -107,8 +107,6 @@ export default class DhpActor extends Actor { disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY } }); - } - this.updateSource(update); } diff --git a/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json b/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json index fd313fcf..a660daf5 100644 --- a/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json +++ b/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json @@ -77,16 +77,7 @@ }, "name": "Attack", "img": "icons/creatures/abilities/dragon-fire-breath-orange.webp", - "range": "veryClose", - "areas": [ - { - "name": "Elemental Breath", - "type": "placed", - "shape": "emanation", - "size": "veryClose", - "effects": [] - } - ] + "range": "veryClose" } }, "originItemType": null, diff --git a/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json b/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json index 36080868..43ba16a8 100644 --- a/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json +++ b/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json @@ -3,7 +3,7 @@ "type": "feature", "img": "icons/magic/earth/barrier-stone-brown-green.webp", "system": { - "description": "

Spend a Hope to move up to Far range in a straight line and make an attack against all targets within Melee range of the line. Targets you succeed against take d8+10 physical damage using your Proficiency and are temporarily Vulnerable.

", + "description": "

Spend a Hope to move up to Far range in a straight line and make an attack against all targets within Melee range of the line. Targets you succeed against take d8+10 physical damage using your Proficiency and are temporarily Vulnerable.

@Template[type:ray|range:f]

", "resource": null, "actions": { "5SXMT39vrZoK7GBM": { @@ -23,7 +23,7 @@ ], "uses": { "value": null, - "max": "", + "max": null, "recovery": null }, "damage": { @@ -87,16 +87,7 @@ }, "name": "Attack", "img": "icons/magic/earth/barrier-stone-brown-green.webp", - "range": "far", - "areas": [ - { - "name": "Demolish", - "type": "placed", - "shape": "line", - "size": "far", - "effects": [] - } - ] + "range": "far" } }, "originItemType": null, diff --git a/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json b/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json index 90801cf6..4f0ea6c3 100644 --- a/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json +++ b/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json @@ -3,7 +3,7 @@ "type": "feature", "img": "icons/environment/people/charge.webp", "system": { - "description": "

Mark a Stress to move up to Close range in a straight line and make an attack against all targets within Melee range of the line. Targets you succeed against take d8+1 physical damage using your Proficiency and are temporarily Vulnerable.

", + "description": "

Mark a Stress to move up to Close range in a straight line and make an attack against all targets within Melee range of the line. Targets you succeed against take d8+1 physical damage using your Proficiency and are temporarily Vulnerable.

@Template[type:ray|range:close]

", "resource": null, "actions": { "YCOTIv9IVEKpumbJ": { @@ -23,7 +23,7 @@ ], "uses": { "value": null, - "max": "", + "max": null, "recovery": null }, "damage": { @@ -56,7 +56,7 @@ "includeBase": false }, "target": { - "type": "", + "type": null, "amount": null }, "effects": [ @@ -87,16 +87,7 @@ }, "name": "Attack", "img": "icons/environment/people/charge.webp", - "range": "close", - "areas": [ - { - "name": "Trample", - "type": "placed", - "shape": "line", - "size": "close", - "effects": [] - } - ] + "range": "close" } }, "originItemType": null, diff --git a/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json b/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json index c01cb756..d84a8e18 100644 --- a/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json +++ b/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json @@ -66,7 +66,7 @@ "type": "attack", "_id": "K26kfjmTEH9zPMMO", "systemPath": "actions", - "description": "

Make a Spellcast Roll (15). On a success, create a temporary wall of magical flame between two points within Far range. All creatures in its path must choose a side to be on, and anything that subsequently passes through the wall takes 4d10+3 magic damage.

", + "description": "

Make a Spellcast Roll (15). On a success, create a temporary wall of magical flame between two points within Far range. All creatures in its path must choose a side to be on, and anything that subsequently passes through the wall takes 4d10+3 magic damage.

@Template[type:ray|range:f]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -133,16 +133,7 @@ }, "name": "Wall Of Flame", "img": "icons/magic/fire/barrier-wall-flame-ring-yellow.webp", - "range": "", - "areas": [ - { - "name": "Book of Grynn", - "type": "placed", - "shape": "line", - "size": "far", - "effects": [] - } - ] + "range": "" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json b/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json index 3eb501e8..d97c514b 100644 --- a/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json +++ b/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json @@ -113,7 +113,7 @@ "type": "damage", "_id": "fb2HYD9J759nHKhV", "systemPath": "actions", - "description": "

Mark a Stress to create a temporary magical circle on the ground where you stand. All adversaries within Melee range, or who enter Melee range, take 2d12+4 magic damage and are knocked back to Very Close range.

", + "description": "

Mark a Stress to create a temporary magical circle on the ground where you stand. All adversaries within Melee range, or who enter Melee range, take 2d12+4 magic damage and are knocked back to Very Close range.

@Template[type:emanation|range:m]

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -167,16 +167,7 @@ "effects": [], "name": "Rune Circle", "img": "icons/magic/symbols/runes-star-pentagon-blue.webp", - "range": "", - "areas": [ - { - "name": "Book of Korvax", - "type": "placed", - "shape": "emanation", - "size": "melee", - "effects": [] - } - ] + "range": "" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json b/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json index 78028bab..f32f380a 100644 --- a/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json +++ b/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json @@ -91,7 +91,7 @@ "type": "attack", "_id": "GI2VkIcGDOjFRxpT", "systemPath": "actions", - "description": "

Make a Spellcast Roll against a target within Very Far range. On a success, hurl a sphere of fire toward them that explodes on impact.

", + "description": "

Make a Spellcast Roll against a target within Very Far range. On a success, hurl a sphere of fire toward them that explodes on impact. The target and all creatures within Very Close range of them must make a Reaction Roll (13). Targets who fail take d20+5 magic damage using your Proficiency. Targets who succeed take half damage.

@Template[type:emanation|range:vc]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -101,7 +101,34 @@ "recovery": null }, "damage": { - "parts": {}, + "parts": { + "hitPoints": { + "resultBased": false, + "value": { + "custom": { + "enabled": false + }, + "multiplier": "prof", + "dice": "d20", + "bonus": 5, + "flatMultiplier": 1 + }, + "applyTo": "hitPoints", + "type": [ + "magical" + ], + "base": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + }, "includeBase": false }, "target": { @@ -124,105 +151,14 @@ }, "useDefault": false }, - "save": { - "trait": null, - "difficulty": 13, - "damageMod": "half" - }, - "name": "Fireball - Cast", - "img": "icons/magic/fire/explosion-fireball-large-red-orange.webp", - "range": "veryFar" - }, - "HJ749c2a8WTjkSHY": { - "type": "attack", - "_id": "HJ749c2a8WTjkSHY", - "systemPath": "actions", - "baseAction": false, - "description": "

The target and all creatures within Very Close range of them must make a Reaction Roll (13). Targets who fail take d20+5 magic damage using your Proficiency. Targets who succeed take half damage.

", - "chatDisplay": true, - "originItem": { - "type": "itemCollection" - }, - "actionType": "action", - "triggers": [], - "areas": [ - { - "name": "Fireball", - "type": "placed", - "shape": "emanation", - "size": "veryClose", - "effects": [] - } - ], - "cost": [], - "uses": { - "value": null, - "max": "", - "recovery": null, - "consumeOnSuccess": false - }, - "damage": { - "parts": { - "hitPoints": { - "applyTo": "hitPoints", - "resultBased": false, - "value": { - "multiplier": "prof", - "flatMultiplier": 1, - "dice": "d20", - "bonus": 5, - "custom": { - "enabled": false, - "formula": "" - } - }, - "valueAlt": { - "multiplier": "flat", - "flatMultiplier": 1, - "dice": "d6", - "bonus": null, - "custom": { - "enabled": false, - "formula": "" - } - }, - "base": false, - "type": [ - "magical" - ] - } - }, - "includeBase": false, - "direct": false - }, - "target": { - "type": "any", - "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 - }, "save": { "trait": "agility", "difficulty": 13, "damageMod": "half" }, - "name": "Fireball - Explosion", - "range": "", - "img": "icons/magic/fire/explosion-fireball-large-red-orange.webp" + "name": "Fireball", + "img": "icons/magic/fire/explosion-fireball-large-red-orange.webp", + "range": "veryFar" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json b/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json index 45fbc77f..17eb4223 100644 --- a/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json +++ b/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json @@ -14,7 +14,7 @@ "type": "attack", "_id": "IxoglRervMx9YdVn", "systemPath": "actions", - "description": "

Make a Spellcast Roll (18). On a success, time temporarily slows to a halt for everyone within Far range except for you. It resumes the next time you make an action roll that targets another creature.

", + "description": "

Make a Spellcast Roll (18). On a success, time temporarily slows to a halt for everyone within Far range except for you. It resumes the next time you make an action roll that targets another creature.

@Template[type:emanation|range:f]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -54,16 +54,7 @@ }, "name": "Timejammer", "img": "icons/magic/time/hourglass-tilted-glowing-gold.webp", - "range": "far", - "areas": [ - { - "name": "Book of Yarrow", - "type": "placed", - "shape": "emanation", - "size": "far", - "effects": [] - } - ] + "range": "far" }, "ZcQfbtGet0KQWjWS": { "type": "effect", diff --git a/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json b/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json index 6da2a76c..c2bf721f 100644 --- a/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json +++ b/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json @@ -90,16 +90,7 @@ }, "name": "Cast", "img": "icons/magic/lightning/bolts-forked-large-blue-yellow.webp", - "range": "close", - "areas": [ - { - "name": "Chain Lightning", - "type": "placed", - "shape": "emanation", - "size": "close", - "effects": [] - } - ] + "range": "close" }, "tRJNO3DVvVYwW3tt": { "type": "damage", diff --git a/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json b/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json index d9e8da6d..d1d1789d 100644 --- a/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json +++ b/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json @@ -178,16 +178,7 @@ }, "name": "Fire Flies: Cast", "img": "icons/creatures/invertebrates/wasp-swarm-movement.webp", - "range": "close", - "areas": [ - { - "name": "Conjure Swarm", - "type": "placed", - "shape": "emanation", - "size": "close", - "effects": [] - } - ] + "range": "close" } }, "attribution": { @@ -213,28 +204,31 @@ "type": "withinRange", "target": "hostile", "range": "melee" - }, - "changes": [ - { - "key": "system.rules.damageReduction.reduceSeverity.magical", - "value": 1, - "priority": null, - "type": "add" - }, - { - "key": "system.rules.damageReduction.reduceSeverity.physical", - "value": 1, - "priority": null, - "type": "add" - } - ] + } }, + "changes": [ + { + "key": "system.rules.damageReduction.reduceSeverity.magical", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.rules.damageReduction.reduceSeverity.physical", + "mode": 2, + "value": "1", + "priority": null + } + ], "disabled": false, "duration": { - "value": null, - "units": "seconds", - "expiry": null, - "expired": false + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "description": "", "tint": "#ffffff", @@ -244,9 +238,6 @@ "_stats": { "compendiumSource": null }, - "start": null, - "showIcon": 1, - "folder": null, "_key": "!items.effects!rZPH0BY8Sznc9sFG.dImnF8ZT2rVybiIP" } ], diff --git a/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json b/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json index d33b6bab..214dae17 100644 --- a/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json +++ b/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json @@ -214,16 +214,7 @@ }, "name": "Hit All Adversaries Between", "img": "icons/magic/nature/root-vine-beanstalk-moon.webp", - "range": "", - "areas": [ - { - "name": "Line To Target", - "type": "placed", - "shape": "line", - "size": "close", - "effects": [] - } - ] + "range": "" } }, "attribution": { @@ -249,15 +240,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" - }, - "changes": [] + } }, + "changes": [], "disabled": false, "duration": { - "value": null, - "units": "seconds", - "expiry": null, - "expired": false + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "description": "", "tint": "#ffffff", @@ -269,9 +263,6 @@ "_stats": { "compendiumSource": null }, - "start": null, - "showIcon": 1, - "folder": null, "_key": "!items.effects!x0FVGE1YbfXalJiw.wMXCIQxqLS9IbsEK" }, { @@ -287,15 +278,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" - }, - "changes": [] + } }, + "changes": [], "disabled": false, "duration": { - "value": null, - "units": "seconds", - "expiry": null, - "expired": false + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "description": "", "tint": "#ffffff", @@ -307,9 +301,6 @@ "_stats": { "compendiumSource": null }, - "start": null, - "showIcon": 1, - "folder": null, "_key": "!items.effects!x0FVGE1YbfXalJiw.bZ0xgZ6TT2099OYp" }, { @@ -325,15 +316,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" - }, - "changes": [] + } }, + "changes": [], "disabled": false, "duration": { - "value": null, - "units": "seconds", - "expiry": null, - "expired": false + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "description": "", "tint": "#ffffff", @@ -345,9 +339,6 @@ "_stats": { "compendiumSource": null }, - "start": null, - "showIcon": 1, - "folder": null, "_key": "!items.effects!x0FVGE1YbfXalJiw.Oe95zWWY41nH8y5l" } ], diff --git a/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json b/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json index e2afaf66..c797a148 100644 --- a/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json +++ b/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json @@ -60,16 +60,7 @@ }, "name": "Cast", "img": "icons/magic/nature/moon-crescent.webp", - "range": "far", - "areas": [ - { - "name": "Eclipse", - "type": "placed", - "shape": "emanation", - "size": "far", - "effects": [] - } - ] + "range": "far" }, "rvkNiqCr8N6t6KPo": { "type": "damage", @@ -147,22 +138,25 @@ "type": "withinRange", "target": "hostile", "range": "melee" - }, - "changes": [ - { - "key": "system.disadvantageSources", - "value": "Attacking you or an ally within this eclipse's shadow", - "priority": null, - "type": "add" - } - ] + } }, + "changes": [ + { + "key": "system.disadvantageSources", + "mode": 2, + "value": "Attacking you or an ally within this eclipse's shadow", + "priority": null + } + ], "disabled": false, "duration": { - "value": null, - "units": "seconds", - "expiry": null, - "expired": false + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "description": "

Attack rolls have disadvantage when targeting you or an ally within this shadow.

", "tint": "#ffffff", @@ -172,9 +166,6 @@ "_stats": { "compendiumSource": null }, - "start": null, - "showIcon": 1, - "folder": null, "_key": "!items.effects!62Sj67PdPFzwWVe3.ARMcw2FtKfaYr902" } ], diff --git a/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json b/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json index 2086deaa..05496132 100644 --- a/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json +++ b/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "7Cs44YADBTmmtCw6", "system": { - "description": "

Make a Spellcast Roll against all adversaries within Far range. Mark any number of Stress to make shards of arcana rain down from above. Targets you succeed against take 1d20+2 magic damage for each Stress marked.

", + "description": "

Make a Spellcast Roll against all adversaries within Far range. Mark any number of Stress to make shards of arcana rain down from above. Targets you succeed against take 1d20+2 magic damage for each Stress marked.

@Template[type:emanation|range:f]

", "domain": "arcana", "recallCost": 1, "level": 10, @@ -14,7 +14,7 @@ "type": "attack", "_id": "xJfXJDVsBayGaqkr", "systemPath": "actions", - "description": "", + "description": "

Make a Spellcast Roll against all adversaries within Far range. Mark any number of Stress to make shards of arcana rain down from above. Targets you succeed against take 1d20+2 magic damage for each Stress marked.

@Template[type:emanation|range:f]

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -89,16 +89,7 @@ }, "name": "Attack", "img": "icons/magic/light/projectiles-star-purple.webp", - "range": "", - "areas": [ - { - "name": "Falling Sky", - "type": "placed", - "shape": "emanation", - "size": "far", - "effects": [] - } - ] + "range": "" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json b/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json index 452e8f76..5663c6b3 100644 --- a/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json +++ b/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "FUzQxkv4gFc46SIs", "system": { - "description": "

Spend 2 Hope to strike the ground where you stand and make a Strength Roll against all targets within Very Close range. Targets you succeed against are thrown back to Far range and must make a Reaction Roll (17). Targets who fail take 4d10+8 damage. Targets who succeed take half damage.

", + "description": "

Spend 2 Hope to strike the ground where you stand and make a Strength Roll against all targets within Very Close range. Targets you succeed against are thrown back to Far range and must make a Reaction Roll (17). Targets who fail take 4d10+8 damage. Targets who succeed take half damage.

@Template[type:emanation|range:vc]

", "domain": "valor", "recallCost": 2, "level": 8, @@ -14,7 +14,7 @@ "type": "attack", "_id": "FOrohOCnzfdBl4sM", "systemPath": "actions", - "description": "", + "description": "

Spend 2 Hope to strike the ground where you stand and make a Strength Roll against all targets within Very Close range. Targets you succeed against are thrown back to Far range and must make a Reaction Roll (17). Targets who fail take 4d10+8 damage. Targets who succeed take half damage.

@Template[type:emanation|range:vc]

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -88,16 +88,7 @@ }, "name": "Strike Ground", "img": "icons/magic/earth/barrier-stone-brown-green.webp", - "range": "veryClose", - "areas": [ - { - "name": "Ground Pound", - "type": "placed", - "shape": "emanation", - "size": "veryClose", - "effects": [] - } - ] + "range": "veryClose" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json b/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json index 8ee53c81..d918d49f 100644 --- a/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json +++ b/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json @@ -84,16 +84,7 @@ }, "name": "Heal 1 Hit Point", "img": "icons/commodities/gems/gem-faceted-diamond-green.webp", - "range": "close", - "areas": [ - { - "name": "Healing Field", - "type": "placed", - "shape": "emanation", - "size": "close", - "effects": [] - } - ] + "range": "close" }, "EqamWsxO86ZjY8WV": { "type": "healing", @@ -177,16 +168,7 @@ }, "name": "Heal 2 Hit Points", "img": "icons/commodities/gems/gem-faceted-diamond-green.webp", - "range": "close", - "areas": [ - { - "name": "Healing Field", - "type": "placed", - "shape": "emanation", - "size": "close", - "effects": [] - } - ] + "range": "close" } }, "resource": { diff --git a/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json b/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json index 08f0d3ee..15a59635 100644 --- a/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json +++ b/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json @@ -14,7 +14,7 @@ "type": "attack", "_id": "kLMAuyZktmohOSXa", "systemPath": "actions", - "description": "

Make a Spellcast Roll against all adversaries in front of you within Close range. Once per rest on a success, create an illusion of flashing colors and lights that temporarily Stuns targets you succeed against and forces them to mark a Stress. While Stunned, they can’t use reactions and can’t take any other actions until they clear this condition.

", + "description": "

Make a Spellcast Roll against all adversaries in front of you within Close range. Once per rest on a success, create an illusion of flashing colors and lights that temporarily Stuns targets you succeed against and forces them to mark a Stress. While Stunned, they can’t use reactions and can’t take any other actions until they clear this condition.

@Template[type:infront|range:c]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -86,16 +86,7 @@ }, "name": "Cast", "img": "icons/magic/control/hypnosis-mesmerism-swirl.webp", - "range": "close", - "areas": [ - { - "name": "Hypnotic Shimmer", - "type": "placed", - "shape": "inFront", - "size": "close", - "effects": [] - } - ] + "range": "close" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json b/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json index cde6cdc8..02f20956 100644 --- a/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json +++ b/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "pDtffkb0SMv1O8pL", "system": { - "description": "

Make a Spellcast Roll (15). Once per rest on a success, spend a Hope to create a temporary magical wall between two points within Far range. It can be up to 50 feet high and form at any angle. Creatures or objects in its path are shunted to a side of your choice. The wall stays up until your next rest or you cast Manifest Wall again.

", + "description": "

Make a Spellcast Roll (15). Once per rest on a success, spend a Hope to create a temporary magical wall between two points within Far range. It can be up to 50 feet high and form at any angle. Creatures or objects in its path are shunted to a side of your choice. The wall stays up until your next rest or you cast Manifest Wall again.

@Template[type:ray|range:f]

", "domain": "codex", "recallCost": 2, "level": 5, @@ -14,7 +14,7 @@ "type": "attack", "_id": "nFzMCrW7wuXCCmJW", "systemPath": "actions", - "description": "", + "description": "

Make a Spellcast Roll (15). Once per rest on a success, spend a Hope to create a temporary magical wall between two points within Far range. It can be up to 50 feet high and form at any angle. Creatures or objects in its path are shunted to a side of your choice. The wall stays up until your next rest or you cast Manifest Wall again.

@Template[type:ray|range:f]

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -63,16 +63,7 @@ }, "name": "Spend Hope", "img": "icons/magic/symbols/ring-circle-smoke-blue.webp", - "range": "", - "areas": [ - { - "name": "Manifest Wall", - "type": "placed", - "shape": "line", - "size": "far", - "effects": [] - } - ] + "range": "" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json b/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json index 8ada8d80..7e925700 100644 --- a/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json +++ b/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "7O1tTswJMNdPgLsx", "system": { - "description": "

Make a Spellcast Roll against all targets within Far range. Targets you succeed against become temporarily Enraptured. While Enraptured, a target’s attention is fixed on you, narrowing their field of view and drowning out any sound but your voice. Mark a Stress to force all Enraptured targets to mark a Stress, ending this spell.

", + "description": "

Make a Spellcast Roll against all targets within Far range. Targets you succeed against become temporarily Enraptured. While Enraptured, a target’s attention is fixed on you, narrowing their field of view and drowning out any sound but your voice. Mark a Stress to force all Enraptured targets to mark a Stress, ending this spell.

@Template[type:emanation|range:f]

", "domain": "grace", "recallCost": 3, "level": 8, @@ -14,7 +14,7 @@ "type": "attack", "_id": "r5eA3tAH7EplOQCP", "systemPath": "actions", - "description": "", + "description": "

Make a Spellcast Roll against all targets within Far range. Targets you succeed against become temporarily Enraptured. While Enraptured, a target’s attention is fixed on you, narrowing their field of view and drowning out any sound but your voice. Mark a Stress to force all Enraptured targets to mark a Stress, ending this spell.

@Template[type:emanation|range:f]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -59,16 +59,7 @@ }, "name": "Enrapture", "img": "icons/magic/control/hypnosis-mesmerism-eye.webp", - "range": "far", - "areas": [ - { - "name": "Mass Enrapture", - "type": "placed", - "shape": "emanation", - "size": "far", - "effects": [] - } - ] + "range": "far" }, "QhBaM0LU9tmSI3IO": { "type": "damage", diff --git a/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json b/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json index 8eefeec4..d40b1c43 100644 --- a/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json +++ b/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "2rqOUxEglhhPKk2j", "system": { - "description": "

Once per long rest, choose any targets within Very Close range to perceive you as a nightmarish horror. The targets must succeed on a Reaction Roll (16) or become temporarily Horrified. While Horrified, they’re Vulnerable. Steal a number of Fear from the GM equal to the number of targets that are Horrified (up to the number of Fear in the GM’s pool). Roll a number of d6s equal to the number of stolen Fear and deal the total damage to each Horrified target. Discard the stolen Fear.

", + "description": "

Once per long rest, choose any targets within Very Close range to perceive you as a nightmarish horror. The targets must succeed on a Reaction Roll (16) or become temporarily Horrified. While Horrified, they’re Vulnerable. Steal a number of Fear from the GM equal to the number of targets that are Horrified (up to the number of Fear in the GM’s pool). Roll a number of d6s equal to the number of stolen Fear and deal the total damage to each Horrified target. Discard the stolen Fear.

@Template[type:emanation|range:vc]

", "domain": "midnight", "recallCost": 2, "level": 9, @@ -14,7 +14,7 @@ "type": "attack", "_id": "e4A6GQERsn08IBby", "systemPath": "actions", - "description": "", + "description": "

Once per long rest, choose any targets within Very Close range to perceive you as a nightmarish horror. The targets must succeed on a Reaction Roll (16) or become temporarily Horrified. While Horrified, they’re Vulnerable. Steal a number of Fear from the GM equal to the number of targets that are Horrified (up to the number of Fear in the GM’s pool). Roll a number of d6s equal to the number of stolen Fear and deal the total damage to each Horrified target. Discard the stolen Fear.

@Template[type:emanation|range:vc]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -59,16 +59,7 @@ }, "name": "Horrify", "img": "icons/creatures/magical/spirit-fear-energy-pink.webp", - "range": "veryClose", - "areas": [ - { - "name": "Night Terror", - "type": "placed", - "shape": "emanation", - "size": "veryClose", - "effects": [] - } - ] + "range": "veryClose" }, "ELzQvftGxZigPkBH": { "type": "damage", diff --git a/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json b/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json index ad41f6ec..293490e3 100644 --- a/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json +++ b/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json @@ -14,7 +14,7 @@ "type": "attack", "_id": "WTnjKQs2uI1TuF9r", "systemPath": "actions", - "description": "

Spend a Hope to make a Spellcast Roll and conjure throwing blades that strike out at all targets within Very Close range. Targets you succeed against take d8+2 magic damage using your Proficiency.

", + "description": "

Spend a Hope to make a Spellcast Roll and conjure throwing blades that strike out at all targets within Very Close range. Targets you succeed against take d8+2 magic damage using your Proficiency.

@Template[type:emanation|range:vc]

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -88,16 +88,7 @@ }, "name": "Cast", "img": "icons/skills/melee/spear-tips-three-green.webp", - "range": "veryClose", - "areas": [ - { - "name": "Rain of Blades", - "type": "placed", - "shape": "emanation", - "size": "veryClose", - "effects": [] - } - ] + "range": "veryClose" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json b/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json index 6d8757f7..11e15a0b 100644 --- a/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json +++ b/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "qY4Zqc1Ch6p317uK", "system": { - "description": "

Make a Spellcast Roll (15). Once per rest on a success, create a temporary barrier of protective energy around you at Very Close range. You and all allies within the barrier when this spell is cast clear 1d4 Hit Points. While the barrier is up, you and all allies within have resistance to physical damage from outside the barrier.

When you move, the barrier follows you.

", + "description": "

Make a Spellcast Roll (15). Once per rest on a success, create a temporary barrier of protective energy around you at Very Close range. You and all allies within the barrier when this spell is cast clear 1d4 Hit Points. While the barrier is up, you and all allies within have resistance to physical damage from outside the barrier.

When you move, the barrier follows you.

@Template[type:emanation|range:vc]

", "domain": "sage", "recallCost": 1, "level": 8, @@ -14,7 +14,7 @@ "type": "healing", "_id": "XdAwXl2uWNinInFe", "systemPath": "actions", - "description": "", + "description": "

Make a Spellcast Roll (15). Once per rest on a success, create a temporary barrier of protective energy around you at Very Close range. You and all allies within the barrier when this spell is cast clear 1d4 Hit Points. While the barrier is up, you and all allies within have resistance to physical damage from outside the barrier.

When you move, the barrier follows you.

@Template[type:emanation|range:vc]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -80,16 +80,7 @@ }, "name": "Cast", "img": "icons/magic/nature/leaf-hand-green.webp", - "range": "veryClose", - "areas": [ - { - "name": "Rejuvenation Barrier", - "type": "placed", - "shape": "emanation", - "size": "veryClose", - "effects": [] - } - ] + "range": "veryClose" } }, "attribution": { @@ -115,22 +106,25 @@ "type": "withinRange", "target": "hostile", "range": "melee" - }, - "changes": [ - { - "key": "system.resistance.physical.resistance", - "value": true, - "priority": null, - "type": "override" - } - ] + } }, + "changes": [ + { + "key": "system.resistance.physical.resistance", + "mode": 5, + "value": "true", + "priority": null + } + ], "disabled": false, "duration": { - "value": null, - "units": "seconds", - "expiry": null, - "expired": false + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "description": "

While the barrier is up, the caster and all allies within have resistance to physical damage from outside the barrier. When the caster moves, the barrier follows them.

", "tint": "#ffffff", @@ -140,9 +134,6 @@ "_stats": { "compendiumSource": null }, - "start": null, - "showIcon": 1, - "folder": null, "_key": "!items.effects!HtWx5IIemCoorMj2.obul9k0P4CjFuxJD" } ], diff --git a/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json b/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json index 05a62281..3f81c8ac 100644 --- a/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json +++ b/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json @@ -14,7 +14,7 @@ "type": "healing", "_id": "dmnB4ZMSk8lsB8Lg", "systemPath": "actions", - "description": "", + "description": "

Make a Spellcast Roll (16). On a success, mark any number of Stress to target a line of allies within Far range. You can clear Hit Points on the targets equal to the number of Stress marked, divided among them however you’d like.

@Template[type:ray|range:f]

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -84,16 +84,7 @@ }, "name": "Cast", "img": "icons/magic/light/beams-rays-orange-purple-large.webp", - "range": "far", - "areas": [ - { - "name": "Salvation Beam", - "type": "placed", - "shape": "line", - "size": "far", - "effects": [] - } - ] + "range": "far" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json b/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json index a90ec0f7..0fc6ce4b 100644 --- a/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json +++ b/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "Abn46nCQst6kpGeA", "system": { - "description": "

Make a Spellcast Roll against all adversaries within Very Close range. Targets you succeed against are temporarily Restrained as their shadow binds them in place.

", + "description": "

Make a Spellcast Roll against all adversaries within Very Close range. Targets you succeed against are temporarily Restrained as their shadow binds them in place.

@Template[type:emanation|range:vc]

", "domain": "midnight", "recallCost": 0, "level": 2, @@ -14,7 +14,7 @@ "type": "attack", "_id": "Llr9uIDUCrfsiZNn", "systemPath": "actions", - "description": "", + "description": "

Make a Spellcast Roll against all adversaries within Very Close range. Targets you succeed against are temporarily Restrained as their shadow binds them in place.

@Template[type:emanation|range:vc]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -59,16 +59,7 @@ }, "name": "Cast", "img": "icons/magic/control/debuff-energy-snare-blue.webp", - "range": "veryClose", - "areas": [ - { - "name": "Shadowbind", - "type": "placed", - "shape": "emanation", - "size": "veryClose", - "effects": [] - } - ] + "range": "veryClose" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json b/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json index e2d68a10..2f66c1f0 100644 --- a/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json +++ b/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json @@ -95,16 +95,7 @@ }, "name": "Cast", "img": "icons/magic/light/beam-strike-village-yellow.webp", - "range": "far", - "areas": [ - { - "name": "Stunning Sunlight", - "type": "placed", - "shape": "inFront", - "size": "far", - "effects": [] - } - ] + "range": "far" }, "AI8sGbUXLw4gG8mW": { "type": "damage", diff --git a/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json b/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json index e027ca8f..3599017c 100644 --- a/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json +++ b/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json @@ -86,16 +86,7 @@ }, "name": "Blizzard", "img": "icons/magic/water/projectiles-ice-faceted-shard-salvo-blue.webp", - "range": "far", - "areas": [ - { - "name": "Tempest", - "type": "placed", - "shape": "emanation", - "size": "far", - "effects": [] - } - ] + "range": "far" }, "FEPhujGa5lvu5fXr": { "type": "attack", @@ -173,16 +164,7 @@ }, "name": "Hurricane", "img": "icons/magic/air/wind-tornado-cyclone-purple-blue.webp", - "range": "far", - "areas": [ - { - "name": "Tempest", - "type": "placed", - "shape": "emanation", - "size": "far", - "effects": [] - } - ] + "range": "far" }, "CzMlqo91kuTgg1As": { "type": "attack", @@ -260,16 +242,7 @@ }, "name": "Sandstorm", "img": "icons/magic/air/air-wave-gust-smoke-yellow.webp", - "range": "far", - "areas": [ - { - "name": "Tempest", - "type": "placed", - "shape": "emanation", - "size": "far", - "effects": [] - } - ] + "range": "far" } }, "attribution": { @@ -343,15 +316,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" - }, - "changes": [] + } }, + "changes": [], "disabled": false, "duration": { - "value": null, - "units": "seconds", - "expiry": null, - "expired": false + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "description": "

Targets can’t move against the wind.

", "tint": "#ffffff", @@ -361,9 +337,6 @@ "_stats": { "compendiumSource": null }, - "start": null, - "showIcon": 1, - "folder": null, "_key": "!items.effects!X7YaZgFieBlqaPdZ.tB7AyDy0pbE9q5hM" }, { @@ -379,15 +352,18 @@ "type": "withinRange", "target": "hostile", "range": "melee" - }, - "changes": [] + } }, + "changes": [], "disabled": false, "duration": { - "value": null, - "units": "seconds", - "expiry": null, - "expired": false + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "description": "

Attacks made from beyond Melee range have disadvantage.

", "tint": "#ffffff", @@ -397,9 +373,6 @@ "_stats": { "compendiumSource": null }, - "start": null, - "showIcon": 1, - "folder": null, "_key": "!items.effects!X7YaZgFieBlqaPdZ.S4Vpgf3FMmq8MGrb" } ], diff --git a/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json b/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json index 70a1fbda..4696c144 100644 --- a/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json +++ b/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json @@ -98,16 +98,7 @@ }, "name": "Use as attack", "img": "icons/magic/nature/root-vine-entangled-humanoid.webp", - "range": "close", - "areas": [ - { - "name": "Towering Stalk", - "type": "placed", - "shape": "emanation", - "size": "close", - "effects": [] - } - ] + "range": "close" }, "I6eSBTpuYDU1nEgr": { "type": "effect", diff --git a/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json b/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json index cff0c185..abac35be 100644 --- a/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json +++ b/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json @@ -59,16 +59,7 @@ }, "name": "Cast", "img": "icons/magic/unholy/barrier-shield-glowing-pink.webp", - "range": "self", - "areas": [ - { - "name": "Veil of Night", - "type": "placed", - "shape": "line", - "size": "far", - "effects": [] - } - ] + "range": "self" } }, "attribution": { @@ -94,22 +85,25 @@ "type": "withinRange", "target": "hostile", "range": "melee" - }, - "changes": [ - { - "key": "system.advantageSources", - "value": "Attack rolls you make through the darkness", - "priority": null, - "type": "add" - } - ] + } }, + "changes": [ + { + "key": "system.advantageSources", + "mode": 2, + "value": "Attack rolls you make through the darkness", + "priority": null + } + ], "disabled": false, "duration": { - "value": null, - "units": "seconds", - "expiry": null, - "expired": false + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "description": "", "tint": "#ffffff", @@ -121,9 +115,6 @@ "_stats": { "compendiumSource": null }, - "start": null, - "showIcon": 1, - "folder": null, "_key": "!items.effects!gV4L5ZZmfPrEbIDh.eSfBBZ7IP8qirLu7" } ], diff --git a/src/packs/domains/domainCard_Whirlwind_anO0arioUy7I5zBg.json b/src/packs/domains/domainCard_Whirlwind_anO0arioUy7I5zBg.json index 610ced15..237e5736 100644 --- a/src/packs/domains/domainCard_Whirlwind_anO0arioUy7I5zBg.json +++ b/src/packs/domains/domainCard_Whirlwind_anO0arioUy7I5zBg.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "9Xc6KzNyjDtTGZkp", "system": { - "description": "

When you make a successful attack against a target within Very Close range, you can spend a Hope to use the attack against all other targets within Very Close range. All additional adversaries you succeed against with this ability take half damage.

", + "description": "

When you make a successful attack against a target within Very Close range, you can spend a Hope to use the attack against all other targets within Very Close range. All additional adversaries you succeed against with this ability take half damage.

@Template[type:emanation|range:vc]

", "domain": "blade", "recallCost": 0, "level": 1, @@ -14,7 +14,7 @@ "type": "effect", "_id": "g9X0wRuCtAYzF576", "systemPath": "actions", - "description": "", + "description": "

When you make a successful attack against a target within Very Close range, you can spend a Hope to use the attack against all other targets within Very Close range. All additional adversaries you succeed against with this ability take half damage.

@Template[type:emanation|range:vc]

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -39,16 +39,7 @@ }, "name": "Spend a Hope", "img": "icons/magic/control/buff-flight-wings-runes-purple-orange.webp", - "range": "", - "areas": [ - { - "name": "Whirlwind", - "type": "placed", - "shape": "emanation", - "size": "veryClose", - "effects": [] - } - ] + "range": "" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json b/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json index eec2e76e..22042f7d 100644 --- a/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json +++ b/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "n7pgTBYSItMzCX0s", "system": { - "description": "

Make an Agility Roll against all targets within Close range. Spend a Hope to move targets you succeed against, and any willing allies within Close range, to another point within Close range.

", + "description": "

Make an Agility Roll against all targets within Close range. Spend a Hope to move targets you succeed against, and any willing allies within Close range, to another point within Close range.

@Template[type:emanation|range:c]

", "domain": "bone", "recallCost": 1, "level": 8, @@ -55,16 +55,7 @@ }, "name": "Agility Roll", "img": "icons/skills/melee/sword-engraved-glow-purple.webp", - "range": "close", - "areas": [ - { - "name": "Wrangle", - "type": "placed", - "shape": "emanation", - "size": "close", - "effects": [] - } - ] + "range": "close" } }, "attribution": { diff --git a/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json b/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json index b9090717..19bff136 100644 --- a/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json +++ b/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "OwsbTSWzKq2WJmQN", "system": { - "description": "

Make a Spellcast Roll (16). Once per long rest on a success, choose a point within Far range and create a visible zone of protection there for all allies within Very Close range of that point. When you do, place a d6 on this card with the 1 value facing up. When an ally in this zone takes damage, they reduce it by the die’s value. You then increase the die’s value by one. When the die’s value would exceed 6, this effect ends.

", + "description": "

Make a Spellcast Roll (16). Once per long rest on a success, choose a point within Far range and create a visible zone of protection there for all allies within Very Close range of that point. When you do, place a d6 on this card with the 1 value facing up. When an ally in this zone takes damage, they reduce it by the die’s value. You then increase the die’s value by one. When the die’s value would exceed 6, this effect ends.

@Template[type:emanation|range:vc]

", "domain": "splendor", "recallCost": 2, "level": 6, @@ -55,16 +55,7 @@ }, "name": "Cast", "img": "icons/magic/control/buff-flight-wings-runes-purple-orange.webp", - "range": "far", - "areas": [ - { - "name": "Zone of Protection", - "type": "placed", - "shape": "emanation", - "size": "veryClose", - "effects": [] - } - ] + "range": "far" } }, "resource": null, diff --git a/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json b/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json index 25340e77..0cab16a2 100644 --- a/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json +++ b/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json @@ -171,7 +171,7 @@ "type": "attack", "_id": "47fcdhe1FDdm9rQU", "systemPath": "actions", - "description": "", + "description": "

Pick a point within the grove. All targets within Very Close range of that point must succeed on an Agility Reaction Roll or take 1d8+3 physical damage and become Restrained by barbed vines. Restrained lasts until they’re freed with a successful Finesse or Strength roll or by dealing at least 6 damage to the vines.

@Template[type:rect|range:vc]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -209,8 +209,7 @@ } } }, - "includeBase": false, - "groupAttack": "" + "includeBase": false }, "target": { "type": "any", @@ -244,16 +243,7 @@ }, "name": "Roll Save", "img": "icons/magic/nature/root-vine-spiral-thorns-teal.webp", - "range": "veryClose", - "areas": [ - { - "name": "Barbed Vines", - "type": "placed", - "shape": "circle", - "size": "veryClose", - "effects": [] - } - ] + "range": "veryClose" } }, "originItemType": null, diff --git a/src/packs/environments/environment_Burning_Heart_of_the_Woods_oY69NN4rYxoRE4hl.json b/src/packs/environments/environment_Burning_Heart_of_the_Woods_oY69NN4rYxoRE4hl.json index 86d3eff4..c380a4e2 100644 --- a/src/packs/environments/environment_Burning_Heart_of_the_Woods_oY69NN4rYxoRE4hl.json +++ b/src/packs/environments/environment_Burning_Heart_of_the_Woods_oY69NN4rYxoRE4hl.json @@ -57,9 +57,12 @@ "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, + "offsetX": 0, + "offsetY": 0, "fit": "contain", "scaleX": 1, "scaleY": 1, + "rotation": 0, "tint": "#ffffff", "alphaThreshold": 0.75 }, @@ -110,7 +113,7 @@ "saturation": 0, "contrast": 0 }, - "detectionModes": {}, + "detectionModes": [], "occludable": { "radius": 0 }, @@ -136,8 +139,7 @@ "flags": {}, "randomImg": false, "appendNumber": false, - "prependAdjective": false, - "depth": 1 + "prependAdjective": false }, "items": [ { @@ -323,14 +325,14 @@ "name": "Charcoal Constructs", "type": "feature", "system": { - "description": "

Warped animals wreathed in indigo flame trample through a point of your choice. All targets within Close range of that point must make an Agility Reaction Roll. Targets who fail take 3d12+3 physical damage. Targets who succeed take half damage instead.

Are these real animals consumed by the fl ame or merely constructs of the corrupting magic?

", + "description": "

Warped animals wreathed in indigo flame trample through a point of your choice. All targets within Close range of that point must make an Agility Reaction Roll. Targets who fail take 3d12+3 physical damage. Targets who succeed take half damage instead.

@Template[type:emanation|range:c]

Are these real animals consumed by the fl ame or merely constructs of the corrupting magic?

", "resource": null, "actions": { "gbXIaKr8em134IZC": { "type": "attack", "_id": "gbXIaKr8em134IZC", "systemPath": "actions", - "description": "", + "description": "

Warped animals wreathed in indigo f l ame trample through a point of your choice. All targets within Close range of that point must make an Agility Reaction Roll. Targets who fail take 3d12+3 physical damage. Targets who succeed take half damage instead.

@Template[type:emanation|range:c]

Are these real animals consumed by the fl ame or merely constructs of the corrupting magic?

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -368,8 +370,7 @@ } } }, - "includeBase": false, - "groupAttack": "" + "includeBase": false }, "target": { "type": "any", @@ -398,16 +399,7 @@ }, "name": "Roll Save", "img": "icons/creatures/magical/construct-face-stone-pink.webp", - "range": "close", - "areas": [ - { - "name": "Charcoal Constructs", - "type": "placed", - "shape": "circle", - "size": "close", - "effects": [] - } - ] + "range": "close" } }, "originItemType": null, diff --git a/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json b/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json index 190d78b1..fdfc9a5d 100644 --- a/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json +++ b/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json @@ -54,9 +54,12 @@ "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, + "offsetX": 0, + "offsetY": 0, "fit": "contain", "scaleX": 1, "scaleY": 1, + "rotation": 0, "tint": "#ffffff", "alphaThreshold": 0.75 }, @@ -107,7 +110,7 @@ "saturation": 0, "contrast": 0 }, - "detectionModes": {}, + "detectionModes": [], "occludable": { "radius": 0 }, @@ -133,8 +136,7 @@ "flags": {}, "randomImg": false, "appendNumber": false, - "prependAdjective": false, - "depth": 1 + "prependAdjective": false }, "items": [ { @@ -323,14 +325,14 @@ "name": "Collateral Damage", "type": "feature", "system": { - "description": "

When an adversary is defeated, you can spend a Fear to have a stray attack from a siege weapon hit a point on the battlefield. All targets within Very Close range of that point must make an Agility Reaction Roll.

What debris is scattered by the attack? What is broken by the strike that can’t be easily mended?

", + "description": "

When an adversary is defeated, you can spend a Fear to have a stray attack from a siege weapon hit a point on the battlefield. All targets within Very Close range of that point must make an Agility Reaction Roll.

@Template[type:circle|range:vc]

What debris is scattered by the attack? What is broken by the strike that can’t be easily mended?

", "resource": null, "actions": { "r5JN5oFYL5DC6Qqw": { "type": "attack", "_id": "r5JN5oFYL5DC6Qqw", "systemPath": "actions", - "description": "

When an adversary is defeated, you can spend a Fear to have a stray attack from a siege weapon hit a point on the battlefield. All targets within Very Close range of that point must make an Agility Reaction Roll.

What debris is scattered by the attack? What is broken by the strike that can’t be easily mended?

", + "description": "

When an adversary is defeated, you can spend a Fear to have a stray attack from a siege weapon hit a point on the battlefield. All targets within Very Close range of that point must make an Agility Reaction Roll.

@Template[type:circle|range:vc]

What debris is scattered by the attack? What is broken by the strike that can’t be easily mended?

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -368,8 +370,7 @@ } } }, - "includeBase": false, - "groupAttack": "" + "includeBase": false }, "target": { "type": "any", @@ -398,16 +399,7 @@ }, "name": "Roll Save", "img": "icons/magic/earth/projectile-stone-boulder-brown.webp", - "range": "", - "areas": [ - { - "name": "Collateral Damage", - "type": "placed", - "shape": "circle", - "size": "veryClose", - "effects": [] - } - ] + "range": "" } }, "originItemType": null, diff --git a/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json b/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json index 299e8729..949e3dc1 100644 --- a/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json +++ b/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json @@ -43,9 +43,12 @@ "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, + "offsetX": 0, + "offsetY": 0, "fit": "contain", "scaleX": 1, "scaleY": 1, + "rotation": 0, "tint": "#ffffff", "alphaThreshold": 0.75 }, @@ -96,7 +99,7 @@ "saturation": 0, "contrast": 0 }, - "detectionModes": {}, + "detectionModes": [], "occludable": { "radius": 0 }, @@ -122,8 +125,7 @@ "flags": {}, "randomImg": false, "appendNumber": false, - "prependAdjective": false, - "depth": 1 + "prependAdjective": false }, "items": [ { @@ -233,14 +235,14 @@ "name": "Skeletal Burst", "type": "feature", "system": { - "description": "

All targets within Close range of a point you choose in this environment must succeed on an Agility Reaction Roll or take 4d8+8 physical damage from skeletal shrapnel as part of the ossuary detonates around them.

What ancient skeletal architecture is destroyed? What bones stick in your armor?

", + "description": "

All targets within Close range of a point you choose in this environment must succeed on an Agility Reaction Roll or take 4d8+8 physical damage from skeletal shrapnel as part of the ossuary detonates around them.

@Template[type:circle|range:c]

What ancient skeletal architecture is destroyed? What bones stick in your armor?

", "resource": null, "actions": { "M1mOwi4Limw2hRwL": { "type": "attack", "_id": "M1mOwi4Limw2hRwL", "systemPath": "actions", - "description": "

All targets within Close range of a point you choose in this environment must succeed on an Agility Reaction Roll or take 4d8+8 physical damage from skeletal shrapnel as part of the ossuary detonates around them.

What ancient skeletal architecture is destroyed? What bones stick in your armor?

", + "description": "

All targets within Close range of a point you choose in this environment must succeed on an Agility Reaction Roll or take 4d8+8 physical damage from skeletal shrapnel as part of the ossuary detonates around them.

@Template[type:circle|range:c]

What ancient skeletal architecture is destroyed? What bones stick in your armor?

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -276,8 +278,7 @@ } } }, - "includeBase": false, - "groupAttack": "" + "includeBase": false }, "target": { "type": "any", @@ -306,16 +307,7 @@ }, "name": "Roll Save", "img": "icons/magic/death/bones-crossed-gray.webp", - "range": "", - "areas": [ - { - "name": "Skeletal Burst", - "type": "placed", - "shape": "circle", - "size": "close", - "effects": [] - } - ] + "range": "" } }, "originItemType": null, diff --git a/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json b/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json index 42fbd8f9..14c724e3 100644 --- a/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json +++ b/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json @@ -54,9 +54,12 @@ "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, + "offsetX": 0, + "offsetY": 0, "fit": "contain", "scaleX": 1, "scaleY": 1, + "rotation": 0, "tint": "#ffffff", "alphaThreshold": 0.75 }, @@ -107,7 +110,7 @@ "saturation": 0, "contrast": 0 }, - "detectionModes": {}, + "detectionModes": [], "occludable": { "radius": 0 }, @@ -133,8 +136,7 @@ "flags": {}, "randomImg": false, "appendNumber": false, - "prependAdjective": false, - "depth": 1 + "prependAdjective": false }, "items": [ { @@ -192,14 +194,14 @@ "name": "War Magic", "type": "feature", "system": { - "description": "

Spend a Fear as a mage from one side uses large-scale destructive magic. Pick a point on the battlefield within Very Far range of the mage. All targets within Close range of that point must make an Agility Reaction Roll. Targets who fail take 3d12+8 magic damage and must mark a Stress.

What form does the attack take—fireball raining acid a storm of blades? What tactical objective is this attack meant to accomplish and what comes next?

", + "description": "

Spend a Fear as a mage from one side uses large-scale destructive magic. Pick a point on the battlefield within Very Far range of the mage. All targets within Close range of that point must make an Agility Reaction Roll. Targets who fail take 3d12+8 magic damage and must mark a Stress.

@Template[type:circle|range:c]

What form does the attack take—fireball raining acid a storm of blades? What tactical objective is this attack meant to accomplish and what comes next?

", "resource": null, "actions": { "1giAFbu3tGqXwi8g": { "type": "attack", "_id": "1giAFbu3tGqXwi8g", "systemPath": "actions", - "description": "

Spend a Fear as a mage from one side uses large-scale destructive magic. Pick a point on the battlefield within Very Far range of the mage. All targets within Close range of that point must make an Agility Reaction Roll. Targets who fail take 3d12+8 magic damage and must mark a Stress.

What form does the attack take—fireball raining acid a storm of blades? What tactical objective is this attack meant to accomplish and what comes next?

", + "description": "

Spend a Fear as a mage from one side uses large-scale destructive magic. Pick a point on the battlefield within Very Far range of the mage. All targets within Close range of that point must make an Agility Reaction Roll. Targets who fail take 3d12+8 magic damage and must mark a Stress.

@Template[type:circle|range:c]

What form does the attack take—fireball raining acid a storm of blades? What tactical objective is this attack meant to accomplish and what comes next?

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -244,8 +246,7 @@ } } }, - "includeBase": false, - "groupAttack": "" + "includeBase": false }, "target": { "type": "any", @@ -274,16 +275,7 @@ }, "name": "Roll Save", "img": "icons/magic/fire/explosion-flame-lightning-strike.webp", - "range": "far", - "areas": [ - { - "name": "War Magic", - "type": "placed", - "shape": "circle", - "size": "close", - "effects": [] - } - ] + "range": "far" } }, "originItemType": null, diff --git a/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json b/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json index 8ac6aef2..d0bd5c22 100644 --- a/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json +++ b/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json @@ -5,14 +5,14 @@ "_id": "frBTtNMX9Y2gkuPz", "img": "icons/magic/air/wind-vortex-swirl-purple.webp", "system": { - "description": "

Make a Spellcast Roll (15). On a success, create a temporary dark cloud that covers any area within Close range. Anyone in this cloud can’t see outside of it, and anyone outside of it can’t see in. You’re considered Cloaked from any adversary for whom the cloud blocks line of sight.

", + "description": "

Make a Spellcast Roll (15). On a success, create a temporary dark cloud that covers any area within Close range. Anyone in this cloud can’t see outside of it, and anyone outside of it can’t see in. You’re considered Cloaked from any adversary for whom the cloud blocks line of sight.

@Template[type:emanation|range:c]

", "resource": null, "actions": { "nIgBwYfAVAJ98lzb": { "type": "attack", "_id": "nIgBwYfAVAJ98lzb", "systemPath": "actions", - "description": "", + "description": "

Make a Spellcast Roll (15). On a success, create a temporary dark cloud that covers any area within Close range. Anyone in this cloud can’t see outside of it, and anyone outside of it can’t see in. You’re considered Cloaked from any adversary for whom the cloud blocks line of sight.

@Template[type:emanation|range:c]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -52,8 +52,7 @@ }, "name": "SpellCast: Dark Cloud", "img": "icons/magic/air/wind-vortex-swirl-purple.webp", - "range": "", - "areas": [] + "range": "" } }, "originItemType": null, diff --git a/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json b/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json index b5ca1eba..ab7b4972 100644 --- a/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json +++ b/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json @@ -72,16 +72,7 @@ }, "name": "Talk to your allies!", "img": "icons/equipment/head/mask-plague-leather-brown.webp", - "range": "far", - "areas": [ - { - "name": "Rousing Speech", - "type": "placed", - "shape": "emanation", - "size": "far", - "effects": [] - } - ] + "range": "far" } }, "originItemType": null, diff --git a/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json b/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json index a6cb2d97..0c6ad3e3 100644 --- a/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json +++ b/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json @@ -74,16 +74,7 @@ }, "name": "Healing", "img": "icons/commodities/currency/coin-embossed-ruby-gold.webp", - "range": "", - "areas": [ - { - "name": "Warden’s Protection", - "type": "placed", - "shape": "emanation", - "size": "close", - "effects": [] - } - ] + "range": "" } }, "originItemType": null, diff --git a/styles/less/dialog/group-roll-dialog/main.less b/styles/less/dialog/group-roll-dialog/main.less index e0742f0c..d89c61bf 100644 --- a/styles/less/dialog/group-roll-dialog/main.less +++ b/styles/less/dialog/group-roll-dialog/main.less @@ -78,9 +78,10 @@ align-items: center; justify-content: space-between; gap: 8px; - min-height: 3.375rem; + height: 3.375rem; &.inactive { + opacity: 0.3; pointer-events: none; } @@ -108,16 +109,10 @@ .buttons { display: flex; - flex-direction: row; + flex-direction: column; button { - --button-text-color: var(--color-text-primary); --button-size: 1.5em; padding: 0 var(--spacer-4); - img { - width: 100%; - height: 100%; - object-fit: contain; - } } } @@ -190,7 +185,7 @@ } .buttons { - flex-direction: column; + gap: 2px; button { color: var(--medium-red); &[data-success=true] { @@ -214,16 +209,6 @@ padding: 6px 12px; margin-top: 8px; - &.empty { - color: light-dark(@dark-blue-80, @beige-80); - border-radius: 3px; - justify-content: center; - border: 1px dashed light-dark(@dark-blue-80, @beige-80); - text-align: center; - height: 3.25rem; - font-family: @font-body; - } - .row { display: flex; align-items: center; diff --git a/system.json b/system.json index 6751f957..babdde26 100644 --- a/system.json +++ b/system.json @@ -2,7 +2,7 @@ "id": "daggerheart", "title": "Daggerheart", "description": "An unofficial implementation of the Daggerheart system", - "version": "2.2.0", + "version": "2.1.2", "compatibility": { "minimum": "14.359", "verified": "14.360", @@ -10,7 +10,7 @@ }, "url": "https://github.com/Foundryborne/daggerheart", "manifest": "https://raw.githubusercontent.com/Foundryborne/daggerheart/v14/system.json", - "download": "https://github.com/Foundryborne/daggerheart/releases/download/2.2.0/system.zip", + "download": "https://github.com/Foundryborne/daggerheart/releases/download/2.1.2/system.zip", "authors": [ { "name": "WBHarry" diff --git a/templates/actionTypes/damage.hbs b/templates/actionTypes/damage.hbs index 03300840..454d0413 100644 --- a/templates/actionTypes/damage.hbs +++ b/templates/actionTypes/damage.hbs @@ -31,40 +31,44 @@ {{/unless}} - {{#if (and (not @root.isNPC) @root.hasRoll (not dmg.base))}} - {{formField ../fields.resultBased value=dmg.resultBased name=(concat "damage.parts." dmg.applyTo ".resultBased") localize=true classes="checkbox"}} - {{/if}} - {{#if (and (not @root.isNPC) @root.hasRoll (not dmg.base) dmg.resultBased)}} -
-
- {{localize "DAGGERHEART.GENERAL.withThing" thing=(localize "DAGGERHEART.GENERAL.hope")}} - {{> formula fields=../fields.value.fields type=../fields.type dmg=dmg source=dmg.value target="value" key=dmg.applyTo path=../path}} -
-
- {{localize "DAGGERHEART.GENERAL.withThing" thing=(localize "DAGGERHEART.GENERAL.fear")}} - {{> formula fields=../fields.valueAlt.fields type=../fields.type dmg=dmg source=dmg.valueAlt target="valueAlt" key=dmg.applyTo path=../path}} -
-
- {{else}} - {{> formula fields=../fields.value.fields type=../fields.type dmg=dmg source=dmg.value target="value" key=dmg.applyTo path=../path}} - {{/if}} - - {{#if (and (eq dmg.applyTo 'hitPoints') (ne @root.source.type 'healing'))}} - {{formField ../fields.type value=dmg.type name=(concat ../path "damage.parts." dmg.applyTo ".type") localize=true}} - {{/if}} - - {{#if ../horde}} -
- {{localize "DAGGERHEART.ACTORS.Adversary.hordeDamage"}} + {{#unless (and @root.source.damage.includeBase (eq key 'hitPoints'))}} + {{#if (and (not @root.isNPC) @root.hasRoll (not dmg.base))}} + {{formField ../fields.resultBased value=dmg.resultBased name=(concat "damage.parts." dmg.applyTo ".resultBased") localize=true classes="checkbox"}} + {{/if}} + {{#if (and (not @root.isNPC) @root.hasRoll (not dmg.base) dmg.resultBased)}}
- - {{formField ../fields.valueAlt.fields.flatMultiplier value=dmg.valueAlt.flatMultiplier name=(concat ../path "damage.parts." dmg.applyTo ".valueAlt.flatMultiplier") label="DAGGERHEART.ACTIONS.Settings.multiplier" classes="inline-child" localize=true }} - {{formField ../fields.valueAlt.fields.dice value=dmg.valueAlt.dice name=(concat ../path "damage.parts." dmg.applyTo ".valueAlt.dice") classes="inline-child" localize=true}} - {{formField ../fields.valueAlt.fields.bonus value=dmg.valueAlt.bonus name=(concat ../path "damage.parts." dmg.applyTo ".valueAlt.bonus") localize=true classes="inline-child"}} +
+ {{localize "DAGGERHEART.GENERAL.withThing" thing=(localize "DAGGERHEART.GENERAL.hope")}} + {{> formula fields=../fields.value.fields type=../fields.type dmg=dmg source=dmg.value target="value" key=dmg.applyTo path=../path}} +
+
+ {{localize "DAGGERHEART.GENERAL.withThing" thing=(localize "DAGGERHEART.GENERAL.fear")}} + {{> formula fields=../fields.valueAlt.fields type=../fields.type dmg=dmg source=dmg.valueAlt target="valueAlt" key=dmg.applyTo path=../path}} +
-
- {{/if}} - + {{else}} + {{> formula fields=../fields.value.fields type=../fields.type dmg=dmg source=dmg.value target="value" key=dmg.applyTo path=../path}} + {{/if}} + + {{#if (and (eq dmg.applyTo 'hitPoints') (ne @root.source.type 'healing'))}} + {{formField ../fields.type value=dmg.type name=(concat ../path "damage.parts." dmg.applyTo ".type") localize=true}} + {{/if}} + + {{#if ../horde}} +
+ {{localize "DAGGERHEART.ACTORS.Adversary.hordeDamage"}} +
+ + {{formField ../fields.valueAlt.fields.flatMultiplier value=dmg.valueAlt.flatMultiplier name=(concat ../path "damage.parts." dmg.applyTo ".valueAlt.flatMultiplier") label="DAGGERHEART.ACTIONS.Settings.multiplier" classes="inline-child" localize=true }} + {{formField ../fields.valueAlt.fields.dice value=dmg.valueAlt.dice name=(concat ../path "damage.parts." dmg.applyTo ".valueAlt.dice") classes="inline-child" localize=true}} + {{formField ../fields.valueAlt.fields.bonus value=dmg.valueAlt.bonus name=(concat ../path "damage.parts." dmg.applyTo ".valueAlt.bonus") localize=true classes="inline-child"}} +
+
+ {{/if}} + + {{else}} + {{localize "DAGGERHEART.ACTIONS.Config.itemDamageIsUsed"}} + {{/unless}} {{/each}} diff --git a/templates/dialogs/groupRollDialog/initialization.hbs b/templates/dialogs/groupRollDialog/initialization.hbs index a01a00bb..fcbbcf95 100644 --- a/templates/dialogs/groupRollDialog/initialization.hbs +++ b/templates/dialogs/groupRollDialog/initialization.hbs @@ -1,15 +1,15 @@
-

{{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.initializationTitle"}}

-
{{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.leader"}}
+

Character Selection

+
Leader
-
{{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.selectLeaderHint"}}
+
Select one Character to be the leader
-
{{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.members"}}
-
{{"DAGGERHEART.APPLICATIONS.GroupRollSelect.selectParticipantsHint"}}
+
Party Members
+
Select all Characters who will participate in the roll
{{#each memberSelection as |member|}} {{/each}} diff --git a/templates/dialogs/groupRollDialog/main.hbs b/templates/dialogs/groupRollDialog/main.hbs index 6807a7e4..b1e855fc 100644 --- a/templates/dialogs/groupRollDialog/main.hbs +++ b/templates/dialogs/groupRollDialog/main.hbs @@ -1,15 +1,15 @@
-

{{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.title"}}

-
{{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.members"}}
+

Group Roll

+
Members
{{#each aidKeys as |key|}}
{{/each}}
-
{{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.leader"}}
+
Leader
-
{{localize "DAGGERHEART.GENERAL.result.single"}}
+
Result
\ No newline at end of file diff --git a/templates/dialogs/groupRollDialog/parts/member.hbs b/templates/dialogs/groupRollDialog/parts/member.hbs index 9fa4e49c..535f9992 100644 --- a/templates/dialogs/groupRollDialog/parts/member.hbs +++ b/templates/dialogs/groupRollDialog/parts/member.hbs @@ -1,5 +1,6 @@ {{#with (ifThen (eq partId "leader") leader (lookup members partId))}}
+ {{log this}}
{{name}} @@ -11,23 +12,10 @@ {{numberFormat modifier sign=true}} {{/if}} - {{#if isEditable}} -
- - -
- {{/if}}
{{else if readyToRoll}}
- {{localize "DAGGERHEART.CONFIG.RollTypes.trait.name" }} + Trait @@ -39,7 +27,7 @@
{{roll.total}} - {{withLabelShort}} + {{localize "DAGGERHEART.GENERAL.withThing" thing=roll.totalLabel}}
- {{#if (and @root.isGM (ne ../partId "leader"))}} + {{#if (and isEditable (ne ../partId "leader"))}}
- - + +
{{/if}}
- {{else if (and readyToRoll isEditable)}} - + {{else if readyToRoll}} + 2d12 {{/if}} diff --git a/templates/dialogs/groupRollDialog/parts/result.hbs b/templates/dialogs/groupRollDialog/parts/result.hbs index d90dfb5c..993fbb02 100644 --- a/templates/dialogs/groupRollDialog/parts/result.hbs +++ b/templates/dialogs/groupRollDialog/parts/result.hbs @@ -1,14 +1,15 @@ -{{#if (and hasRolled leader.roll)}} + +{{#if hasRolled}}
- {{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.leaderRoll"}} + Leader Roll {{leader.roll.total}} {{localize "DAGGERHEART.GENERAL.withThing" thing=leader.roll.totalLabel}}
- {{localize "DAGGERHEART.GENERAL.Modifier.plural"}} + Modifiers
{{#each groupRoll.modifiers as |modifier|}} @@ -19,12 +20,12 @@
- {{localize "DAGGERHEART.GENERAL.total"}} + Total {{groupRoll.total}} {{groupRoll.totalLabel}}
{{else}}
- {{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.resultsHint"}} + Results will appear when characters roll
{{/if}} \ No newline at end of file