diff --git a/daggerheart.mjs b/daggerheart.mjs index 26662804..7c72e421 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -233,6 +233,11 @@ Hooks.once('init', () => { return handlebarsRegistration(); }); +Hooks.on('i18nInit', () => { + // Setup homebrew resources + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).refreshConfig(); +}); + Hooks.on('setup', () => { CONFIG.statusEffects = [ ...CONFIG.statusEffects.filter(x => !['dead', 'unconscious'].includes(x.id)), diff --git a/lang/en.json b/lang/en.json index 71bc961c..114176b1 100755 --- a/lang/en.json +++ b/lang/en.json @@ -76,6 +76,15 @@ "invalidDrop": "You can only drop Actor entities to summon.", "chatMessageTitle": "Test2", "chatMessageHeaderTitle": "Summoning" + }, + "transform": { + "name": "Transform", + "tooltip": "Transform one actor into another", + "noTransformActor": "There is no assigned actor to transform into", + "transformActorMissing": "The assigned actor to transform into does not exist. It was probably deleted or moved in/out of a compendium", + "canvasError": "There is no active scene.", + "prototypeError": "You can only use a transform action from a Token", + "actorLinkError": "You cannot transform a token with Actor Link set to true" } }, "Config": { @@ -131,6 +140,12 @@ }, "summon": { "dropSummonsHere": "Drop Summons Here" + }, + "transform": { + "dropTransformHere": "Drop Transform Here", + "actorIsMissing": "The linked actor is missing. You should delete this link.", + "clearHitPoints": "Clear Hitpoints", + "clearStress": "Clear Stress" } } }, @@ -1055,6 +1070,10 @@ "fear": "Fear", "spotlight": "Spotlight" }, + "DaggerheartDiceAnimationEvents": { + "critical": { "name": "Critical" }, + "higher": { "name": "Highest Roll" } + }, "DamageType": { "physical": { "name": "Physical", @@ -2278,6 +2297,7 @@ "identify": "Identity", "imagePath": "Image Path", "inactiveEffects": "Inactive Effects", + "initial": "Initial", "inventory": "Inventory", "itemResource": "Item Resource", "itemQuantity": "Item Quantity", @@ -2305,6 +2325,7 @@ "plurial": "Players" }, "portrait": "Portrait", + "preview": "Preview", "proficiency": "Proficiency", "quantity": "Quantity", "range": "Range", @@ -2645,6 +2666,14 @@ "title": "Triggers" } }, + "Metagaming": { + "FIELDS": { + "hideObserverPermissionInChat": { + "label": "Hide Chat Info From Players", + "hint": "Information such as hit/miss on attack rolls against adversaries will be hidden" + } + } + }, "Homebrew": { "newDowntimeMove": "Downtime Move", "downtimeMove": "Downtime Move", @@ -2659,6 +2688,8 @@ "resetMovesText": "Are you sure you want to reset?", "deleteItemTitle": "Delete Homebrew Item", "deleteItemText": "Are you sure you want to delete the item?", + "deleteResourceTitle": "Delete Homebrew Resource", + "deleteResourceText": "Are you sure you want to delete the resource?", "FIELDS": { "maxFear": { "label": "Max Fear" }, "maxHope": { "label": "Max Hope" }, @@ -2667,6 +2698,13 @@ "label": "Max Cards in Loadout", "hint": "Set to blank or 0 for unlimited maximum" }, + "resources": { + "resources": { + "value": { "label": "Icon" }, + "isIcon": { "label": "Font Awesome Icon" }, + "noColorFilter": { "label": "Disable Color Filter" } + } + }, "maxDomains": { "label": "Max Class Domains", "hint": "Max domains you can set on a class" } }, "currency": { @@ -2695,6 +2733,13 @@ "adversaryType": { "title": "Custom Adversary Types", "newType": "Adversary Type" + }, + "resources": { + "typeTitle": "{type} Resources", + "filledIcon": "Filled Icon", + "emptyIcon": "Empty Icon", + "resourceIdentifier": "Resource Identifier", + "setResourceIdentifier": "Set Resource Identifier" } }, "Menu": { @@ -2704,6 +2749,11 @@ "label": "Configure Automation", "hint": "Various settings automating resource management and more" }, + "metagaming": { + "name": "Metagaming Settings", + "label": "Configure Metagaming", + "hint": "Various settings controlling the flow of information to players" + }, "homebrew": { "name": "Homebrew Settings", "label": "Configure Homebrew", @@ -2729,7 +2779,12 @@ "colorset": "Theme", "material": "Material", "system": "Dice Preset", - "font": "Font" + "font": "Font", + "critical": "Duality Critical Animation", + "diceAppearance": "Dice Appearance", + "animations": "Animations", + "defaultAnimations": "Set Animations As Player Defaults", + "previewAnimation": "Preview Animation" } }, "variantRules": { diff --git a/module/applications/levelup/companionLevelup.mjs b/module/applications/levelup/companionLevelup.mjs index 7f11ccff..d6bf2d78 100644 --- a/module/applications/levelup/companionLevelup.mjs +++ b/module/applications/levelup/companionLevelup.mjs @@ -67,7 +67,7 @@ export default class DhCompanionLevelUp extends BaseLevelUp { break; case 'summary': const levelKeys = Object.keys(this.levelup.levels); - const actorDamageDice = this.actor.system.attack.damage.parts[0].value.dice; + const actorDamageDice = this.actor.system.attack.damage.parts.hitPoints.value.dice; const actorRange = this.actor.system.attack.range; let achievementExperiences = []; diff --git a/module/applications/settings/_module.mjs b/module/applications/settings/_module.mjs index b565777c..28972397 100644 --- a/module/applications/settings/_module.mjs +++ b/module/applications/settings/_module.mjs @@ -1,4 +1,5 @@ export { default as DhAppearanceSettings } from './appearanceSettings.mjs'; export { default as DhAutomationSettings } from './automationSettings.mjs'; export { default as DhHomebrewSettings } from './homebrewSettings.mjs'; +export { default as DhMetagamingSettings } from './metagamingSettings.mjs'; export { default as DhVariantRuleSettings } from './variantRuleSettings.mjs'; diff --git a/module/applications/settings/appearanceSettings.mjs b/module/applications/settings/appearanceSettings.mjs index 9eb0cfbf..151648e1 100644 --- a/module/applications/settings/appearanceSettings.mjs +++ b/module/applications/settings/appearanceSettings.mjs @@ -12,7 +12,7 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App static DEFAULT_OPTIONS = { tag: 'form', id: 'daggerheart-appearance-settings', - classes: ['daggerheart', 'dialog', 'dh-style', 'setting'], + classes: ['daggerheart', 'dialog', 'dh-style', 'setting', 'appearance-settings'], position: { width: '600', height: 'auto' }, window: { title: 'DAGGERHEART.SETTINGS.Menu.title', @@ -70,6 +70,14 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App } } + _attachPartListeners(partId, htmlElement, options) { + super._attachPartListeners(partId, htmlElement, options); + + htmlElement + .querySelector('.default-animations-input') + ?.addEventListener('change', this.toggleSFXOverride.bind(this)); + } + /** @inheritdoc */ _configureRenderParts(options) { const parts = super._configureRenderParts(options); @@ -83,15 +91,20 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App /**@inheritdoc */ async _prepareContext(options) { const context = await super._prepareContext(options); - if (options.isFirstRender) + if (options.isFirstRender) { this.setting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance); + this.globalOverrides = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.GlobalOverrides); + } context.setting = this.setting; + context.globalOverrides = this.globalOverrides; context.fields = this.setting.schema.fields; context.tabs = this._prepareTabs('general'); context.dsnTabs = this._prepareTabs('diceSoNice'); + context.isGM = game.user.isGM; + return context; } @@ -120,6 +133,9 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App * @protected */ async prepareDiceSoNiceContext(context) { + context.animationEvents = CONFIG.DH.GENERAL.daggerheartDiceAnimationEvents; + context.previewAnimation = this.previewAnimation; + context.diceSoNiceTextures = Object.entries(game.dice3d.exports.TEXTURELIST).reduce( (acc, [k, v]) => ({ ...acc, @@ -146,6 +162,13 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App ); context.diceSoNiceFonts = game.dice3d.exports.Utils.prepareFontList(); + const getAnimationsOptions = key => { + const fields = context.fields.diceSoNice.fields[key].fields.sfx.fields; + return { + higher: fields.higher.fields.class.choices + }; + }; + foundry.utils.mergeObject( context.dsnTabs, ['hope', 'fear', 'advantage', 'disadvantage'].reduce( @@ -153,7 +176,8 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App ...acc, [key]: { values: this.setting.diceSoNice[key], - fields: this.setting.schema.getField(`diceSoNice.${key}`).fields + fields: this.setting.schema.getField(`diceSoNice.${key}`).fields, + animations: ['hope', 'fear'].includes(key) ? getAnimationsOptions(key) : {} } }), {} @@ -169,13 +193,20 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App * @param {foundry.applications.ux.FormDataExtended} formData * @returns {Promise} */ - static async #onSubmit(event, form, formData) { + static async #onSubmit(_event, _form, formData) { const data = this.setting.schema.clean(foundry.utils.expandObject(formData.object)); + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance, data); } /* -------------------------------------------- */ + async toggleSFXOverride(event) { + await this.globalOverrides.diceSoNiceSFXUpdate(this.setting, event.target.checked); + this.globalOverrides = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.GlobalOverrides); + this.render(); + } + /** * Submit the configuration form. * @this {DHAppearanceSettings} @@ -183,13 +214,25 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App */ static async #onPreview(_, target) { const formData = new foundry.applications.ux.FormDataExtended(target.closest('form')); - const { diceSoNice } = foundry.utils.expandObject(formData.object); + const { diceSoNice, ...rest } = foundry.utils.expandObject(formData.object); const { key } = target.dataset; const faces = ['advantage', 'disadvantage'].includes(key) ? 'd6' : 'd12'; const preset = await getDiceSoNicePreset(diceSoNice[key], faces); const diceSoNiceRoll = await new foundry.dice.Roll(`1${faces}`).evaluate(); diceSoNiceRoll.dice[0].options.appearance = preset.appearance; diceSoNiceRoll.dice[0].options.modelFile = preset.modelFile; + + const previewAnimation = rest[`${key}PreviewAnimation`]; + const events = CONFIG.DH.GENERAL.daggerheartDiceAnimationEvents; + if (previewAnimation) { + if (previewAnimation === events.critical.id && diceSoNice.sfx.critical.class) { + diceSoNiceRoll.dice[0].options.sfx = { specialEffect: diceSoNice.sfx.critical.class }; + } + if (previewAnimation === events.higher.id && diceSoNice[key].sfx.higher) { + diceSoNiceRoll.dice[0].options.sfx = { specialEffect: diceSoNice[key].sfx.higher.class }; + } + } + await game.dice3d.showForRoll(diceSoNiceRoll, game.user, false); } diff --git a/module/applications/settings/automationSettings.mjs b/module/applications/settings/automationSettings.mjs index e720733e..52def7db 100644 --- a/module/applications/settings/automationSettings.mjs +++ b/module/applications/settings/automationSettings.mjs @@ -31,8 +31,8 @@ export default class DhAutomationSettings extends HandlebarsApplicationMixin(App }; static PARTS = { - tabs: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }, header: { template: 'systems/daggerheart/templates/settings/automation-settings/header.hbs' }, + tabs: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }, general: { template: 'systems/daggerheart/templates/settings/automation-settings/general.hbs' }, rules: { template: 'systems/daggerheart/templates/settings/automation-settings/deathMoves.hbs' }, roll: { template: 'systems/daggerheart/templates/settings/automation-settings/roll.hbs' }, diff --git a/module/applications/settings/homebrewSettings.mjs b/module/applications/settings/homebrewSettings.mjs index 0779bf58..9f0b22c4 100644 --- a/module/applications/settings/homebrewSettings.mjs +++ b/module/applications/settings/homebrewSettings.mjs @@ -1,4 +1,5 @@ import { DhHomebrew } from '../../data/settings/_module.mjs'; +import { Resource } from '../../data/settings/Homebrew.mjs'; import { slugify } from '../../helpers/utils.mjs'; const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; @@ -44,6 +45,9 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli addAdversaryType: this.addAdversaryType, deleteAdversaryType: this.deleteAdversaryType, selectAdversaryType: this.selectAdversaryType, + addResource: this.addResource, + removeResource: this.removeResource, + resetResourceImage: this.resetResourceImage, save: this.save, resetTokenSizes: this.resetTokenSizes, reset: this.reset @@ -56,6 +60,10 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli settings: { template: 'systems/daggerheart/templates/settings/homebrew-settings/settings.hbs' }, domains: { template: 'systems/daggerheart/templates/settings/homebrew-settings/domains.hbs' }, types: { template: 'systems/daggerheart/templates/settings/homebrew-settings/types.hbs' }, + resources: { + template: 'systems/daggerheart/templates/settings/homebrew-settings/resources.hbs', + scrollable: ['.resource-types-container'] + }, itemTypes: { template: 'systems/daggerheart/templates/settings/homebrew-settings/itemFeatures.hbs' }, downtime: { template: 'systems/daggerheart/templates/settings/homebrew-settings/downtime.hbs' }, footer: { template: 'systems/daggerheart/templates/settings/homebrew-settings/footer.hbs' } @@ -64,7 +72,14 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli /** @inheritdoc */ static TABS = { main: { - tabs: [{ id: 'settings' }, { id: 'domains' }, { id: 'types' }, { id: 'itemFeatures' }, { id: 'downtime' }], + tabs: [ + { id: 'settings' }, + { id: 'domains' }, + { id: 'types' }, + { id: 'resources' }, + { id: 'itemFeatures' }, + { id: 'downtime' } + ], initial: 'settings', labelPrefix: 'DAGGERHEART.GENERAL.Tabs' } @@ -77,9 +92,17 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli this.render(); } + _attachPartListeners(partId, htmlElement, options) { + super._attachPartListeners(partId, htmlElement, options); + + for (const element of htmlElement.querySelectorAll('.path-field input')) + element.addEventListener('change', this.toggleResourceIsIcon.bind(this)); + } + async _prepareContext(_options) { const context = await super._prepareContext(_options); context.settingFields = this.settings; + context.schemaFields = context.settingFields.schema.fields; return context; } @@ -103,6 +126,8 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli ? { id: this.selected.adversaryType, ...this.settings.adversaryTypes[this.selected.adversaryType] } : null; break; + case 'resources': + break; case 'downtime': context.restOptions = { shortRest: CONFIG.DH.GENERAL.defaultRestOptions.shortRest(), @@ -124,6 +149,33 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli this.render(); } + async toggleResourceIsIcon(event) { + const element = event.target.closest('.resource-icon-container'); + const { actorType, resourceKey, imageKey } = element.dataset; + + const current = this.settings.resources[actorType].resources[resourceKey].images[imageKey]; + await this.settings.updateSource({ + [`resources.${actorType}.resources.${resourceKey}.images.${imageKey}`]: { + isIcon: !current.isIcon, + value: '' + } + }); + + this.render(); + } + + static async resetResourceImage(_event, button) { + const element = button.closest('.resource-icon-container'); + const { actorType, resourceKey, imageKey } = element.dataset; + + await this.settings.updateSource({ + [`resources.${actorType}.resources.${resourceKey}.images.${imageKey}`]: + Resource.getDefaultImageData(imageKey) + }); + + this.render(); + } + static async changeCurrencyIcon(_, target) { const type = target.dataset.currency; const currentIcon = this.settings.currency[type].icon; @@ -466,6 +518,58 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli this.render(); } + static async addResource(_, target) { + const { actorType } = target.dataset; + const content = new foundry.data.fields.StringField({ + label: game.i18n.localize('DAGGERHEART.SETTINGS.Homebrew.resources.resourceIdentifier'), + required: true + }).toFormGroup({}, { name: 'identifier', localize: true }).outerHTML; + + async function callback(_, button) { + const identifier = button.form.elements.identifier.value; + if (!identifier) return; + + const sluggedIdentifier = slugify(identifier); + + await this.settings.updateSource({ + [`resources.${actorType}.resources.${sluggedIdentifier}`]: Resource.getDefaultResourceData(identifier) + }); + + game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew, this.settings.toObject()); + this.render(); + } + + await foundry.applications.api.DialogV2.prompt({ + content: content, + rejectClose: false, + modal: true, + ok: { callback: callback.bind(this) }, + window: { + title: game.i18n.localize('DAGGERHEART.SETTINGS.Homebrew.resources.setResourceIdentifier') + }, + position: { width: 400 } + }); + } + + static async removeResource(_, target) { + const confirmed = await foundry.applications.api.DialogV2.confirm({ + window: { + title: game.i18n.localize(`DAGGERHEART.SETTINGS.Homebrew.deleteResourceTitle`) + }, + content: game.i18n.localize('DAGGERHEART.SETTINGS.Homebrew.deleteResourceText') + }); + + if (!confirmed) return; + + const { actorType, resourceKey } = target.dataset; + await this.settings.updateSource({ + [`resources.${actorType}.resources.${resourceKey}`]: _del + }); + + game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew, this.settings.toObject()); + this.render(); + } + static async save() { await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew, this.settings.toObject()); this.close(); diff --git a/module/applications/settings/metagamingSettings.mjs b/module/applications/settings/metagamingSettings.mjs new file mode 100644 index 00000000..c29a021b --- /dev/null +++ b/module/applications/settings/metagamingSettings.mjs @@ -0,0 +1,62 @@ +import { DhMetagaming } from '../../data/settings/_module.mjs'; + +const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; + +export default class DhMetagamingSettings extends HandlebarsApplicationMixin(ApplicationV2) { + constructor() { + super({}); + + this.settings = new DhMetagaming( + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Metagaming).toObject() + ); + } + + get title() { + return game.i18n.localize('DAGGERHEART.SETTINGS.Menu.title'); + } + + static DEFAULT_OPTIONS = { + tag: 'form', + id: 'daggerheart-metagaming-settings', + classes: ['daggerheart', 'dh-style', 'dialog', 'setting'], + position: { width: '600', height: 'auto' }, + window: { + icon: 'fa-solid fa-eye-low-vision' + }, + actions: { + reset: this.reset, + save: this.save + }, + form: { handler: this.updateData, submitOnChange: true } + }; + + static PARTS = { + header: { template: 'systems/daggerheart/templates/settings/metagaming-settings/header.hbs' }, + general: { template: 'systems/daggerheart/templates/settings/metagaming-settings/general.hbs' }, + footer: { template: 'systems/daggerheart/templates/settings/metagaming-settings/footer.hbs' } + }; + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + context.settingFields = this.settings; + + return context; + } + + static async updateData(_event, _element, formData) { + const updatedSettings = foundry.utils.expandObject(formData.object); + + await this.settings.updateSource(updatedSettings); + this.render(); + } + + static async reset() { + this.settings = new DhMetagaming(); + this.render(); + } + + static async save() { + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Metagaming, this.settings.toObject()); + this.close(); + } +} diff --git a/module/applications/sheets-configs/action-base-config.mjs b/module/applications/sheets-configs/action-base-config.mjs index 34543086..53c57ec5 100644 --- a/module/applications/sheets-configs/action-base-config.mjs +++ b/module/applications/sheets-configs/action-base-config.mjs @@ -1,3 +1,4 @@ +import { getUnusedDamageTypes } from '../../helpers/utils.mjs'; import DaggerheartSheet from '../sheets/daggerheart-sheet.mjs'; const { ApplicationV2 } = foundry.applications.api; @@ -28,6 +29,7 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) removeEffect: this.removeEffect, addElement: this.addElement, removeElement: this.removeElement, + removeTransformActor: this.removeTransformActor, editEffect: this.editEffect, addDamage: this.addDamage, removeDamage: this.removeDamage, @@ -41,7 +43,7 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) submitOnChange: true, closeOnSubmit: false }, - dragDrop: [{ dragSelector: null, dropSelector: '#summon-drop-zone', handlers: ['_onDrop'] }] + dragDrop: [{ dragSelector: null, dropSelector: '[data-is-drop-zone]', handlers: ['_onDrop'] }] }; static PARTS = { @@ -103,7 +105,7 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) } }; - static CLEAN_ARRAYS = ['damage.parts', 'cost', 'effects', 'summon']; + static CLEAN_ARRAYS = ['cost', 'effects', 'summon']; _getTabs(tabs) { for (const v of Object.values(tabs)) { @@ -120,6 +122,10 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) htmlElement.querySelectorAll('.summon-count-wrapper input').forEach(element => { element.addEventListener('change', this.updateSummonCount.bind(this)); }); + + htmlElement.querySelectorAll('.transform-resource input').forEach(element => { + element.addEventListener('change', this.updateTransformResource.bind(this)); + }); } async _prepareContext(_options) { @@ -133,6 +139,18 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) context.summons.push({ actor, count: summon.count }); } + if (context.source.transform) { + const actor = await foundry.utils.fromUuid(context.source.transform.actorUUID); + context.transform = { + ...context.source.transform, + actor: + actor ?? + (context.source.transform.actorUUID && !actor + ? { error: game.i18n.localize('DAGGERHEART.ACTIONS.Settings.transform.actorIsMissing') } + : null) + }; + } + context.openSection = this.openSection; context.tabs = this._getTabs(this.constructor.TABS); context.config = CONFIG.DH; @@ -155,6 +173,7 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) revealed: this.openTrigger === index }; }); + context.allDamageTypesUsed = !getUnusedDamageTypes(this.action.damage.parts).length; const settingsTiers = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LevelTiers).tiers; context.tierOptions = [ @@ -266,20 +285,69 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) if (doc) return doc.sheet.render({ force: true }); } + static async removeTransformActor() { + const data = this.action.toObject(); + data.transform.actorUUID = null; + this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) }); + } + static addDamage(_event) { if (!this.action.damage.parts) return; - const data = this.action.toObject(), - part = {}; - if (this.action.actor?.isNPC) part.value = { multiplier: 'flat' }; - data.damage.parts.push(part); - this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) }); + + const choices = getUnusedDamageTypes(this.action.damage.parts); + const content = new foundry.data.fields.StringField({ + label: game.i18n.localize('Damage Type'), + choices, + required: true + }).toFormGroup( + {}, + { + name: 'type', + localize: true, + nameAttr: 'value', + labelAttr: 'label' + } + ).outerHTML; + + const callback = (_, button) => { + const data = this.action.toObject(); + const type = choices[button.form.elements.type.value].value; + const part = { applyTo: type }; + if (this.action.actor?.isNPC) part.value = { multiplier: 'flat' }; + data.damage.parts[type] = part; + this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) }); + }; + + const typeDialog = new foundry.applications.api.DialogV2({ + buttons: [ + foundry.utils.mergeObject( + { + action: 'ok', + label: 'Confirm', + icon: 'fas fa-check', + default: true + }, + { callback: callback } + ) + ], + content: content, + rejectClose: false, + modal: false, + window: { + title: game.i18n.localize('Add Damage') + }, + position: { width: 300 } + }); + + typeDialog.render(true); } static removeDamage(_event, button) { if (!this.action.damage.parts) return; - const data = this.action.toObject(), - index = button.dataset.index; - data.damage.parts.splice(index, 1); + const data = this.action.toObject(); + const key = button.dataset.key; + delete data.damage.parts[key]; + data.damage.parts[`${key}`] = _del; this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) }); } @@ -346,6 +414,14 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) }); } + updateTransformResource(event) { + event.stopPropagation(); + + const data = this.action.toObject(); + data.transform.resourceRefresh[event.target.dataset.resource] = event.target.checked; + this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) }); + } + /** Specific implementation in extending classes **/ static async addEffect(_event) {} static removeEffect(_event, _button) {} @@ -364,6 +440,18 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) return; } + const dropZone = event.target.closest('[data-is-drop-zone]'); + if (!dropZone) return; + + switch (dropZone.id) { + case 'summon-drop-zone': + return this.onSummonDrop(data); + case 'transform-drop-zone': + return this.onTransformDrop(data); + } + } + + async onSummonDrop(data) { const actionData = this.action.toObject(); let countvalue = 1; for (const entry of actionData.summon) { @@ -380,4 +468,10 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2) actionData.summon.push({ actorUUID: data.uuid, count: countvalue }); await this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(actionData) }); } + + async onTransformDrop(data) { + const actionData = this.action.toObject(); + actionData.transform.actorUUID = data.uuid; + await this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(actionData) }); + } } diff --git a/module/applications/sheets/actors/character.mjs b/module/applications/sheets/actors/character.mjs index 4ecaeb06..14dd1ae7 100644 --- a/module/applications/sheets/actors/character.mjs +++ b/module/applications/sheets/actors/character.mjs @@ -33,6 +33,7 @@ export default class CharacterSheet extends DHBaseActorSheet { handleResourceDice: CharacterSheet.#handleResourceDice, advanceResourceDie: CharacterSheet.#advanceResourceDie, cancelBeastform: CharacterSheet.#cancelBeastform, + toggleResourceManagement: CharacterSheet.#toggleResourceManagement, useDowntime: this.useDowntime, viewParty: CharacterSheet.#viewParty }, @@ -226,6 +227,9 @@ export default class CharacterSheet extends DHBaseActorSheet { async _preparePartContext(partId, context, options) { context = await super._preparePartContext(partId, context, options); switch (partId) { + case 'header': + await this._prepareHeaderContext(context, options); + break; case 'loadout': await this._prepareLoadoutContext(context, options); break; @@ -240,6 +244,12 @@ export default class CharacterSheet extends DHBaseActorSheet { return context; } + async _prepareHeaderContext(context, _options) { + context.hasExtraResources = Object.keys(CONFIG.DH.RESOURCE.character.all).some( + key => !CONFIG.DH.RESOURCE.character.base[key] + ); + } + /** * Prepare render context for the Loadout part. * @param {ApplicationRenderContext} context @@ -942,6 +952,78 @@ export default class CharacterSheet extends DHBaseActorSheet { }); } + static async #toggleResourceManagement(event, button) { + event.stopPropagation(); + const existingTooltip = document.body.querySelector('.locked-tooltip .resource-management-container'); + if (existingTooltip) { + game.tooltip.dismissLockedTooltips(); + return; + } + + const extraResources = Object.values(CONFIG.DH.RESOURCE.character.all).reduce((acc, resource) => { + if (CONFIG.DH.RESOURCE.character.base[resource.id]) return acc; + + const resourceData = this.document.system.resources[resource.id]; + acc[resource.id] = { + id: resource.id, + label: game.i18n.localize(resource.label), + value: resourceData.value, + max: resourceData.max, + fullIcon: resource.images?.full ?? { value: 'fa-solid fa-circle', isIcon: true }, + emptyIcon: resource.images?.empty ?? { value: 'fa-regular fa-circle', isIcon: true } + }; + + return acc; + }, {}); + + const html = document.createElement('div'); + html.innerHTML = await foundry.applications.handlebars.renderTemplate( + `systems/daggerheart/templates/ui/tooltip/resourceManagement.hbs`, + { + resources: extraResources + } + ); + + const target = button.closest('.resource-section'); + + game.tooltip.dismissLockedTooltips(); + game.tooltip.activate(target, { + html, + locked: true, + cssClass: 'bordered-tooltip', + direction: 'DOWN', + noOffset: true + }); + + const resourceManager = target.querySelector('.resource-manager'); + resourceManager.classList.toggle('inverted'); + + Hooks.once(CONFIG.DH.HOOKS.hooksConfig.lockedTooltipDismissed, () => { + resourceManager.classList.toggle('inverted'); + }); + + for (const element of html.querySelectorAll('.resource-value')) + element.addEventListener('click', this.onUpdateResource.bind(this)); + } + + async onUpdateResource(event) { + const target = event.target.closest('.resource-value'); + const { resource, value: textValue } = target.dataset; + + const inputValue = Number.parseInt(textValue); + const decreasing = inputValue <= this.document.system.resources[resource].value; + const value = decreasing ? inputValue - 1 : inputValue; + await this.document.update({ [`system.resources.${resource}.value`]: value }, { render: false }); + + /* Update resource symbols */ + const section = target.closest('.resource-section'); + for (const element of section.querySelectorAll('.resource-value')) { + const showFull = Number.parseInt(element.dataset.value) <= value; + element.querySelector('.full').classList.toggle('hidden', !showFull); + element.querySelector('.empty').classList.toggle('hidden', showFull); + } + } + /** * Open the downtime application. * @type {ApplicationClickAction} diff --git a/module/applications/sheets/api/actor-setting.mjs b/module/applications/sheets/api/actor-setting.mjs index d8cfb40f..738f7002 100644 --- a/module/applications/sheets/api/actor-setting.mjs +++ b/module/applications/sheets/api/actor-setting.mjs @@ -44,8 +44,32 @@ export default class DHBaseActorSettings extends DHApplicationMixin(DocumentShee const context = await super._prepareContext(options); context.isNPC = this.actor.isNPC; - if (context.systemFields.attack) + if (context.systemFields.attack) { context.systemFields.attack.fields = this.actor.system.attack.schema.fields; + } + + // Create fake fields for actor configurable max resource value. + const resourceConfig = CONFIG.DH.RESOURCE[this.actor.type]?.all; + if (resourceConfig) { + const relevant = ['hitPoints', 'stress'].filter(r => r in resourceConfig); + context.resources = relevant.map(key => { + const data = this.actor._source.system.resources[key]; + const config = resourceConfig[key]; + return { + label: config.label, + name: `system.resources.${key}.max`, + value: data.max ?? config.max, + tooltip: key === 'hitPoints' ? game.i18n.localize('DAGGERHEART.UI.Tooltip.maxHPClassBound') : null, + field: new foundry.data.fields.NumberField({ + initial: config.max, + integer: true, + label: game.i18n.format('DAGGERHEART.GENERAL.maxWithThing', { + thing: game.i18n.localize(config.label) + }) + }) + }; + }); + } return context; } diff --git a/module/applications/sheets/api/application-mixin.mjs b/module/applications/sheets/api/application-mixin.mjs index eb53f073..89941399 100644 --- a/module/applications/sheets/api/application-mixin.mjs +++ b/module/applications/sheets/api/application-mixin.mjs @@ -74,6 +74,15 @@ export default function DHApplicationMixin(Base) { class DHSheetV2 extends HandlebarsApplicationMixin(Base) { #nonHeaderAttribution = ['environment', 'ancestry', 'community', 'domainCard']; + /** + * @param {DHSheetV2Configuration} [options={}] + */ + constructor(options = {}) { + super(options); + + this._setupDragDrop(); + } + /** * The default options for the sheet. * @type {DHSheetV2Configuration} @@ -165,7 +174,9 @@ export default function DHApplicationMixin(Base) { /**@inheritdoc */ _attachPartListeners(partId, htmlElement, options) { super._attachPartListeners(partId, htmlElement, options); - // this._dragDrop.forEach(d => d.bind(htmlElement)); + + /* Core dragDrop from ActorDocument is always only 1. Possible we could refactor our own */ + if (Array.isArray(this._dragDrop)) this._dragDrop.forEach(d => d.bind(htmlElement)); // Handle delta inputs for (const deltaInput of htmlElement.querySelectorAll('input[data-allow-delta]')) { @@ -338,6 +349,26 @@ export default function DHApplicationMixin(Base) { /* Drag and Drop */ /* -------------------------------------------- */ + /** + * Creates drag-drop handlers from the configured options. + * @returns {foundry.applications.ux.DragDrop[]} + * @private + */ + _setupDragDrop() { + if (this._dragDrop) { + this._dragDrop.callbacks.dragStart = this._onDragStart; + this._dragDrop.callback.drop = this._onDrop; + } else { + this._dragDrop = this.options.dragDrop.map(d => { + d.callbacks = { + dragstart: this._onDragStart.bind(this), + drop: this._onDrop.bind(this) + }; + return new foundry.applications.ux.DragDrop.implementation(d); + }); + } + } + /** * Handle dragStart event. * @param {DragEvent} event @@ -472,7 +503,10 @@ export default function DHApplicationMixin(Base) { icon: 'fa-solid fa-explosion', condition: target => { const doc = getDocFromElementSync(target); - return doc?.system?.attack?.damage.parts.length || doc?.damage?.parts.length; + return ( + !foundry.utils.isEmpty(doc?.system?.attack?.damage.parts) || + !foundry.utils.isEmpty(doc?.damage?.parts) + ); }, callback: async (target, event) => { const doc = await getDocFromElement(target), @@ -664,6 +698,9 @@ export default function DHApplicationMixin(Base) { case 'weapon': presets.folder = 'equipments.folders.weapons'; break; + case 'feature': + presets.folder = 'features'; + break; case 'domainCard': presets.folder = 'domains'; presets.filter = { diff --git a/module/applications/ui/itemBrowser.mjs b/module/applications/ui/itemBrowser.mjs index 2d882eba..0c3a77fa 100644 --- a/module/applications/ui/itemBrowser.mjs +++ b/module/applications/ui/itemBrowser.mjs @@ -251,6 +251,12 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { /* If any noticeable slowdown occurs, consider replacing with enriching description on clicking to expand descriptions */ for (const item of this.items) { + if (['weapon', 'armor'].includes(item.type)) { + item.system.enrichedTags = await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/sheets/global/partials/item-tags.hbs', + item.system + ); + } item.system.enrichedDescription = (await item.system.getEnrichedDescription?.()) ?? (await foundry.applications.ux.TextEditor.implementation.enrichHTML(item.description)); diff --git a/module/canvas/placeables/regionLayer.mjs b/module/canvas/placeables/regionLayer.mjs index d50845b7..75c192a0 100644 --- a/module/canvas/placeables/regionLayer.mjs +++ b/module/canvas/placeables/regionLayer.mjs @@ -43,6 +43,53 @@ export default class DhRegionLayer extends foundry.canvas.layers.RegionLayer { const hole = ui.controls.controls[this.options.name].tools.hole?.active ?? false; if (game.activeTool === 'inFront') return { type: 'cone', x: 0, y: 0, radius: 0, angle: 180, hole }; - return super._createDragShapeData(event); + const shape = super._createDragShapeData(event); + const token = shape?.type === 'emanation' && shape.base?.type === 'token' ? this.#findTokenInBounds(event.interactionData.origin) : null; + if (token) { + shape.base.width = token.width; + shape.base.height = token.height; + event.interactionData.origin = token.getCenterPoint(); + } + return shape; + } + + async placeRegion(data, options = {}) { + const preConfirm = ({ _event, document, _create, _options }) => { + const shape = document.shapes[0]; + const isEmanation = shape.type === 'emanation'; + if (isEmanation) { + const token = this.#findTokenInBounds(shape.base.origin); + if (!token) return options.preConfirm?.() ?? true; + const shapeData = shape.toObject(); + document.updateSource({ + shapes: [ + { + ...shapeData, + base: { + ...shapeData.base, + height: token.height, + width: token.width, + x: token.x, + y: token.y + } + } + ] + }); + } + + return options?.preConfirm?.() ?? true; + }; + + super.placeRegion(data, { ...options, preConfirm }); + } + + /** Searches for token at origin point, returning null if there are no tokens or multiple overlapping tokens */ + #findTokenInBounds(origin) { + const { x, y } = origin; + const gridSize = canvas.grid.size; + const inBounds = canvas.scene.tokens.filter(t => { + return x.between(t.x, t.x + t.width * gridSize) && y.between(t.y, t.y + t.height * gridSize); + }); + return inBounds.length === 1 ? inBounds[0] : null; } } diff --git a/module/canvas/placeables/templateLayer.mjs b/module/canvas/placeables/templateLayer.mjs deleted file mode 100644 index 55bd7eb2..00000000 --- a/module/canvas/placeables/templateLayer.mjs +++ /dev/null @@ -1,116 +0,0 @@ -export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer { - static prepareSceneControls() { - const sc = foundry.applications.ui.SceneControls; - return { - name: 'templates', - order: 2, - title: 'CONTROLS.GroupMeasure', - icon: 'fa-solid fa-ruler-combined', - visible: game.user.can('REGION_CREATE'), - onChange: (event, active) => { - if (active) canvas.templates.activate(); - }, - onToolChange: () => canvas.templates.setAllRenderFlags({ refreshState: true }), - tools: { - circle: { - name: 'circle', - order: 1, - title: 'CONTROLS.MeasureCircle', - icon: 'fa-regular fa-circle', - toolclip: { - src: 'toolclips/tools/measure-circle.webm', - heading: 'CONTROLS.MeasureCircle', - items: sc.buildToolclipItems(['create', 'move', 'edit', 'hide', 'delete']) - } - }, - cone: { - name: 'cone', - order: 2, - title: 'CONTROLS.MeasureCone', - icon: 'fa-solid fa-angle-left', - toolclip: { - src: 'toolclips/tools/measure-cone.webm', - heading: 'CONTROLS.MeasureCone', - items: sc.buildToolclipItems(['create', 'move', 'edit', 'hide', 'delete', 'rotate']) - } - }, - inFront: { - name: 'inFront', - order: 3, - title: 'CONTROLS.inFront', - icon: 'fa-solid fa-eye', - toolclip: { - src: 'toolclips/tools/measure-cone.webm', - heading: 'CONTROLS.inFront', - items: sc.buildToolclipItems(['create', 'move', 'edit', 'hide', 'delete', 'rotate']) - } - }, - rect: { - name: 'rect', - order: 4, - title: 'CONTROLS.MeasureRect', - icon: 'fa-regular fa-square', - toolclip: { - src: 'toolclips/tools/measure-rect.webm', - heading: 'CONTROLS.MeasureRect', - items: sc.buildToolclipItems(['create', 'move', 'edit', 'hide', 'delete', 'rotate']) - } - }, - ray: { - name: 'ray', - order: 5, - title: 'CONTROLS.MeasureRay', - icon: 'fa-solid fa-up-down', - toolclip: { - src: 'toolclips/tools/measure-ray.webm', - heading: 'CONTROLS.MeasureRay', - items: sc.buildToolclipItems(['create', 'move', 'edit', 'hide', 'delete', 'rotate']) - } - }, - clear: { - name: 'clear', - order: 6, - title: 'CONTROLS.MeasureClear', - icon: 'fa-solid fa-trash', - visible: game.user.isGM, - onChange: () => canvas.templates.deleteAll(), - button: true - } - }, - activeTool: 'circle' - }; - } - - _onDragLeftStart(event) { - const interaction = event.interactionData; - - // Snap the origin to the grid - if (!event.shiftKey) interaction.origin = this.getSnappedPoint(interaction.origin); - - // Create a pending MeasuredTemplateDocument - const tool = game.activeTool === 'inFront' ? 'cone' : game.activeTool; - const previewData = { - user: game.user.id, - t: tool, - x: interaction.origin.x, - y: interaction.origin.y, - sort: Math.max(this.getMaxSort() + 1, 0), - distance: 1, - direction: 0, - fillColor: game.user.color || '#FF0000', - hidden: event.altKey - }; - const defaults = CONFIG.MeasuredTemplate.defaults; - if (game.activeTool === 'cone') previewData.angle = defaults.angle; - else if (game.activeTool === 'inFront') previewData.angle = 180; - else if (game.activeTool === 'ray') previewData.width = defaults.width * canvas.dimensions.distance; - const cls = foundry.utils.getDocumentClass('MeasuredTemplate'); - const doc = new cls(previewData, { parent: canvas.scene }); - - // Create a preview MeasuredTemplate object - const template = new this.constructor.placeableClass(doc); - doc._object = template; - interaction.preview = this.preview.addChild(template); - template.draw(); - } -} diff --git a/module/config/_module.mjs b/module/config/_module.mjs index 560f3fec..7a725f54 100644 --- a/module/config/_module.mjs +++ b/module/config/_module.mjs @@ -11,3 +11,4 @@ export * as settingsConfig from './settingsConfig.mjs'; export * as systemConfig from './system.mjs'; export * as itemBrowserConfig from './itemBrowserConfig.mjs'; export * as triggerConfig from './triggerConfig.mjs'; +export * as resourceConfig from './resourceConfig.mjs'; diff --git a/module/config/actionConfig.mjs b/module/config/actionConfig.mjs index c9b70193..0b1bf91d 100644 --- a/module/config/actionConfig.mjs +++ b/module/config/actionConfig.mjs @@ -35,6 +35,12 @@ export const actionTypes = { icon: 'fa-ghost', tooltip: 'DAGGERHEART.ACTIONS.TYPES.summon.tooltip' }, + transform: { + id: 'transform', + name: 'DAGGERHEART.ACTIONS.TYPES.transform.name', + icon: 'fa-dragon', + tooltip: 'DAGGERHEART.ACTIONS.TYPES.transform.tooltip' + }, effect: { id: 'effect', name: 'DAGGERHEART.ACTIONS.TYPES.effect.name', diff --git a/module/config/actorConfig.mjs b/module/config/actorConfig.mjs index 2235f873..aa7c3cf7 100644 --- a/module/config/actorConfig.mjs +++ b/module/config/actorConfig.mjs @@ -55,24 +55,6 @@ export const abilities = { } }; -export const scrollingTextResource = { - hitPoints: { - label: 'DAGGERHEART.GENERAL.HitPoints.plural', - reversed: true - }, - stress: { - label: 'DAGGERHEART.GENERAL.stress', - reversed: true - }, - hope: { - label: 'DAGGERHEART.GENERAL.hope' - }, - armor: { - label: 'DAGGERHEART.GENERAL.armor', - reversed: true - } -}; - export const featureProperties = { agility: { name: 'DAGGERHEART.CONFIG.Traits.agility.name', diff --git a/module/config/generalConfig.mjs b/module/config/generalConfig.mjs index 3b87c15d..31e78f0b 100644 --- a/module/config/generalConfig.mjs +++ b/module/config/generalConfig.mjs @@ -245,8 +245,8 @@ export const defaultRestOptions = { type: 'friendly' }, damage: { - parts: [ - { + parts: { + hitPoints: { applyTo: healingTypes.hitPoints.id, value: { custom: { @@ -255,7 +255,7 @@ export const defaultRestOptions = { } } } - ] + } } } }, @@ -279,8 +279,8 @@ export const defaultRestOptions = { type: 'self' }, damage: { - parts: [ - { + parts: { + stress: { applyTo: healingTypes.stress.id, value: { custom: { @@ -289,7 +289,7 @@ export const defaultRestOptions = { } } } - ] + } } } }, @@ -314,8 +314,8 @@ export const defaultRestOptions = { type: 'friendly' }, damage: { - parts: [ - { + parts: { + armor: { applyTo: healingTypes.armor.id, value: { custom: { @@ -324,7 +324,7 @@ export const defaultRestOptions = { } } } - ] + } } } }, @@ -348,8 +348,8 @@ export const defaultRestOptions = { type: 'self' }, damage: { - parts: [ - { + parts: { + hope: { applyTo: healingTypes.hope.id, value: { custom: { @@ -358,7 +358,7 @@ export const defaultRestOptions = { } } } - ] + } } }, prepareWithFriends: { @@ -372,8 +372,8 @@ export const defaultRestOptions = { type: 'self' }, damage: { - parts: [ - { + parts: { + hope: { applyTo: healingTypes.hope.id, value: { custom: { @@ -382,7 +382,7 @@ export const defaultRestOptions = { } } } - ] + } } } }, @@ -409,8 +409,8 @@ export const defaultRestOptions = { type: 'friendly' }, damage: { - parts: [ - { + parts: { + hitPoints: { applyTo: healingTypes.hitPoints.id, value: { custom: { @@ -419,7 +419,7 @@ export const defaultRestOptions = { } } } - ] + } } } }, @@ -443,8 +443,8 @@ export const defaultRestOptions = { type: 'self' }, damage: { - parts: [ - { + parts: { + stress: { applyTo: healingTypes.stress.id, value: { custom: { @@ -453,7 +453,7 @@ export const defaultRestOptions = { } } } - ] + } } } }, @@ -478,8 +478,8 @@ export const defaultRestOptions = { type: 'friendly' }, damage: { - parts: [ - { + parts: { + armor: { applyTo: healingTypes.armor.id, value: { custom: { @@ -488,7 +488,7 @@ export const defaultRestOptions = { } } } - ] + } } } }, @@ -512,8 +512,8 @@ export const defaultRestOptions = { type: 'self' }, damage: { - parts: [ - { + parts: { + hope: { applyTo: healingTypes.hope.id, value: { custom: { @@ -522,7 +522,7 @@ export const defaultRestOptions = { } } } - ] + } } }, prepareWithFriends: { @@ -536,8 +536,8 @@ export const defaultRestOptions = { type: 'self' }, damage: { - parts: [ - { + parts: { + hope: { applyTo: healingTypes.hope.id, value: { custom: { @@ -546,7 +546,7 @@ export const defaultRestOptions = { } } } - ] + } } } }, @@ -634,7 +634,95 @@ export const diceSetNumbers = { flat: 'Flat' }; -export const getDiceSoNicePreset = async (type, faces) => { +export const diceSoNiceSFXClasses = { + PlayAnimationBright: { + id: 'PlayAnimationBright', + label: 'DICESONICE.PlayAnimationBright' + }, + PlayAnimationDark: { + id: 'PlayAnimationDark', + label: 'DICESONICE.PlayAnimationDark' + }, + PlayAnimationOutline: { + id: 'PlayAnimationOutline', + label: 'DICESONICE.PlayAnimationOutline' + }, + PlayAnimationImpact: { + id: 'PlayAnimationImpact', + label: 'DICESONICE.PlayAnimationImpact' + }, + // PlayConfettiStrength1: { + // id: 'PlayConfettiStrength1', + // label: 'DICESONICE.PlayConfettiStrength1' + // }, + // PlayConfettiStrength2: { + // id: 'PlayConfettiStrength2', + // label: 'DICESONICE.PlayConfettiStrength2' + // }, + // PlayConfettiStrength3: { + // id: 'PlayConfettiStrength3', + // label: 'DICESONICE.PlayConfettiStrength3' + // }, + PlayAnimationThormund: { + id: 'PlayAnimationThormund', + label: 'DICESONICE.PlayAnimationThormund' + }, + PlayAnimationParticleSpiral: { + id: 'PlayAnimationParticleSpiral', + label: 'DICESONICE.PlayAnimationParticleSpiral' + }, + PlayAnimationParticleSparkles: { + id: 'PlayAnimationParticleSparkles', + label: 'DICESONICE.PlayAnimationParticleSparkles' + }, + PlayAnimationParticleVortex: { + id: 'PlayAnimationParticleVortex', + label: 'DICESONICE.PlayAnimationParticleVortex' + }, + PlaySoundEpicWin: { + id: 'PlaySoundEpicWin', + label: 'DICESONICE.PlaySoundEpicWin' + }, + PlaySoundEpicFail: { + id: 'PlaySoundEpicFail', + label: 'DICESONICE.PlaySoundEpicFail' + } + // "PlaySoundCustom", + // "PlayMacro" +}; + +export const daggerheartDiceAnimationEvents = { + critical: { + id: 'critical', + label: 'DAGGERHEART.CONFIG.DaggerheartDiceAnimationEvents.critical.name' + }, + higher: { + id: 'higher', + label: 'DAGGERHEART.CONFIG.DaggerheartDiceAnimationEvents.higher.name' + } +}; + +const getDiceSoNiceSFX = sfxOptions => { + const diceSoNice = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance).diceSoNiceData; + const criticalAnimationData = diceSoNice.sfx.critical; + if (sfxOptions.critical && criticalAnimationData.class) { + return { + specialEffect: criticalAnimationData.class, + options: {} + }; + } + + if (sfxOptions.higher && sfxOptions.data.higher) { + return { + specialEffect: sfxOptions.data.higher.class, + options: {} + }; + } + + return {}; +}; + +export const getDiceSoNicePreset = async (type, faces, sfxOptions = {}) => { const system = game.dice3d.DiceFactory.systems.get(type.system).dice.get(faces); if (!system) { ui.notifications.error( @@ -657,16 +745,33 @@ export const getDiceSoNicePreset = async (type, faces) => { appearance: { ...system.appearance, ...type - } + }, + sfx: getDiceSoNiceSFX(sfxOptions) }; }; -export const getDiceSoNicePresets = async (hopeFaces, fearFaces, advantageFaces = 'd6', disadvantageFaces = 'd6') => { - const { diceSoNice } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance); +export const getDiceSoNicePresets = async ( + result, + hopeFaces, + fearFaces, + advantageFaces = 'd6', + disadvantageFaces = 'd6' +) => { + const diceSoNice = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance).diceSoNiceData; + + const { isCritical, withHope, withFear } = result; return { - hope: await getDiceSoNicePreset(diceSoNice.hope, hopeFaces), - fear: await getDiceSoNicePreset(diceSoNice.fear, fearFaces), + hope: await getDiceSoNicePreset(diceSoNice.hope, hopeFaces, { + critical: isCritical, + higher: withHope, + data: diceSoNice.hope.sfx + }), + fear: await getDiceSoNicePreset(diceSoNice.fear, fearFaces, { + critical: isCritical, + higher: withFear, + data: diceSoNice.fear.sfx + }), advantage: await getDiceSoNicePreset(diceSoNice.advantage, advantageFaces), disadvantage: await getDiceSoNicePreset(diceSoNice.disadvantage, disadvantageFaces) }; diff --git a/module/config/hooksConfig.mjs b/module/config/hooksConfig.mjs index 9140ea0a..61ba594c 100644 --- a/module/config/hooksConfig.mjs +++ b/module/config/hooksConfig.mjs @@ -1,3 +1,4 @@ export const hooksConfig = { - effectDisplayToggle: 'DHEffectDisplayToggle' + effectDisplayToggle: 'DHEffectDisplayToggle', + lockedTooltipDismissed: 'DHLockedTooltipDismissed' }; diff --git a/module/config/itemConfig.mjs b/module/config/itemConfig.mjs index 77328987..b424c707 100644 --- a/module/config/itemConfig.mjs +++ b/module/config/itemConfig.mjs @@ -14,8 +14,8 @@ export const armorFeatures = { type: 'hostile' }, damage: { - parts: [ - { + parts: { + stress: { applyTo: 'stress', value: { custom: { @@ -24,7 +24,7 @@ export const armorFeatures = { } } } - ] + } } } ] @@ -732,8 +732,8 @@ export const weaponFeatures = { type: 'hostile' }, damage: { - parts: [ - { + parts: { + stress: { applyTo: 'stress', value: { custom: { @@ -742,7 +742,7 @@ export const weaponFeatures = { } } } - ] + } } } ], @@ -914,8 +914,8 @@ export const weaponFeatures = { type: 'self' }, damage: { - parts: [ - { + parts: { + hitPoints: { applyTo: 'hitPoints', value: { custom: { @@ -924,7 +924,7 @@ export const weaponFeatures = { } } } - ] + } } } ] diff --git a/module/config/resourceConfig.mjs b/module/config/resourceConfig.mjs new file mode 100644 index 00000000..56ef6cd5 --- /dev/null +++ b/module/config/resourceConfig.mjs @@ -0,0 +1,88 @@ +/** + * Full custom typing: + * id + * initial + * max + * reverse + * label + * images { + * full { value, isIcon, noColorFilter } + * empty { value, isIcon noColorFilter } + * } + */ + +const characterBaseResources = Object.freeze({ + hitPoints: { + id: 'hitPoints', + initial: 0, + max: 0, + reverse: true, + label: 'DAGGERHEART.GENERAL.HitPoints.plural', + maxLabel: 'DAGGERHEART.ACTORS.Character.maxHPBonus' + }, + stress: { + id: 'stress', + initial: 0, + max: 6, + reverse: true, + label: 'DAGGERHEART.GENERAL.stress' + }, + hope: { + id: 'hope', + initial: 2, + reverse: false, + label: 'DAGGERHEART.GENERAL.hope' + } +}); + +const adversaryBaseResources = Object.freeze({ + hitPoints: { + id: 'hitPoints', + initial: 0, + max: 0, + reverse: true, + label: 'DAGGERHEART.GENERAL.HitPoints.plural', + maxLabel: 'DAGGERHEART.ACTORS.Character.maxHPBonus' + }, + stress: { + id: 'stress', + initial: 0, + max: 0, + reverse: true, + label: 'DAGGERHEART.GENERAL.stress' + } +}); + +const companionBaseResources = Object.freeze({ + stress: { + id: 'stress', + initial: 0, + max: 0, + reverse: true, + label: 'DAGGERHEART.GENERAL.stress' + }, + hope: { + id: 'hope', + initial: 0, + reverse: false, + label: 'DAGGERHEART.GENERAL.hope' + } +}); + +export const character = { + base: characterBaseResources, + custom: {}, // module stuff goes here + all: { ...characterBaseResources } +}; + +export const adversary = { + base: adversaryBaseResources, + custom: {}, // module stuff goes here + all: { ...adversaryBaseResources } +}; + +export const companion = { + base: companionBaseResources, + custom: {}, // module stuff goes here + all: { ...companionBaseResources } +}; diff --git a/module/config/settingsConfig.mjs b/module/config/settingsConfig.mjs index d3f752bb..0b28f0ab 100644 --- a/module/config/settingsConfig.mjs +++ b/module/config/settingsConfig.mjs @@ -3,6 +3,10 @@ export const menu = { Name: 'GameSettingsAutomation', Icon: 'fa-solid fa-robot' }, + Metagaming: { + Name: 'GameSettingsMetagaming', + Icon: 'fa-solid fa-eye-low-vision' + }, Homebrew: { Name: 'GameSettingsHomebrew', Icon: 'fa-solid fa-flask-vial' @@ -19,8 +23,10 @@ export const menu = { export const gameSettings = { Automation: 'Automation', + Metagaming: 'Metagaming', Homebrew: 'Homebrew', appearance: 'Appearance', + GlobalOverrides: 'GlobalOverrides', variantRules: 'VariantRules', Resources: { Fear: 'ResourcesFear' diff --git a/module/config/system.mjs b/module/config/system.mjs index 47a41e8d..31dba518 100644 --- a/module/config/system.mjs +++ b/module/config/system.mjs @@ -2,6 +2,7 @@ import * as GENERAL from './generalConfig.mjs'; import * as DOMAIN from './domainConfig.mjs'; import * as ENCOUNTER from './encounterConfig.mjs'; import * as ACTOR from './actorConfig.mjs'; +import * as RESOURCE from './resourceConfig.mjs'; import * as ITEM from './itemConfig.mjs'; import * as SETTINGS from './settingsConfig.mjs'; import * as EFFECTS from './effectConfig.mjs'; @@ -19,6 +20,7 @@ export const SYSTEM = { GENERAL, DOMAIN, ACTOR, + RESOURCE, ITEM, SETTINGS, EFFECTS, diff --git a/module/data/action/_module.mjs b/module/data/action/_module.mjs index 9cfc48cb..043b039c 100644 --- a/module/data/action/_module.mjs +++ b/module/data/action/_module.mjs @@ -7,6 +7,7 @@ import EffectAction from './effectAction.mjs'; import HealingAction from './healingAction.mjs'; import MacroAction from './macroAction.mjs'; import SummonAction from './summonAction.mjs'; +import TransformAction from './transformAction.mjs'; export const actionsTypes = { base: BaseAction, @@ -17,5 +18,6 @@ export const actionsTypes = { summon: SummonAction, effect: EffectAction, macro: MacroAction, - beastform: BeastformAction + beastform: BeastformAction, + transform: TransformAction }; diff --git a/module/data/action/attackAction.mjs b/module/data/action/attackAction.mjs index 60112c40..3671613d 100644 --- a/module/data/action/attackAction.mjs +++ b/module/data/action/attackAction.mjs @@ -26,23 +26,23 @@ export default class DHAttackAction extends DHDamageAction { return { value: { multiplier: 'prof', - dice: this.item?.system?.attack.damage.parts[0].value.dice, - bonus: this.item?.system?.attack.damage.parts[0].value.bonus ?? 0 + 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[0].type, + type: this.item?.system?.attack.damage.parts.hitPoints.type, base: true }; } get damageFormula() { - const hitPointsPart = this.damage.parts.find(x => x.applyTo === CONFIG.DH.GENERAL.healingTypes.hitPoints.id); + const hitPointsPart = this.damage.parts.hitPoints; if (!hitPointsPart) return '0'; return hitPointsPart.value.getFormula(); } get altDamageFormula() { - const hitPointsPart = this.damage.parts.find(x => x.applyTo === CONFIG.DH.GENERAL.healingTypes.hitPoints.id); + const hitPointsPart = this.damage.parts.hitPoints; if (!hitPointsPart) return '0'; return hitPointsPart.valueAlt.getFormula(); diff --git a/module/data/action/baseAction.mjs b/module/data/action/baseAction.mjs index f6ffe75f..75fc3981 100644 --- a/module/data/action/baseAction.mjs +++ b/module/data/action/baseAction.mjs @@ -197,7 +197,7 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel async executeWorkflow(config) { for (const [key, part] of this.workflow) { if (Hooks.call(`${CONFIG.DH.id}.pre${key.capitalize()}Action`, this, config) === false) return; - if ((await part.execute(config)) === false) return; + if ((await part.execute(config)) === false) return false; if (Hooks.call(`${CONFIG.DH.id}.post${key.capitalize()}Action`, this, config) === false) return; } } @@ -224,7 +224,9 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel } // Execute the Action Worflow in order based of schema fields - await this.executeWorkflow(config); + const result = await this.executeWorkflow(config); + if (result === false) return; + await config.resourceUpdates.updateResources(); if (Hooks.call(`${CONFIG.DH.id}.postUseAction`, this, config) === false) return; @@ -352,11 +354,11 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel } get hasDamage() { - return this.damage?.parts?.length && this.type !== 'healing'; + return !foundry.utils.isEmpty(this.damage?.parts) && this.type !== 'healing'; } get hasHealing() { - return this.damage?.parts?.length && this.type === 'healing'; + return !foundry.utils.isEmpty(this.damage?.parts) && this.type === 'healing'; } get hasSave() { @@ -376,6 +378,15 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel return tags; } + + static migrateData(source) { + if (source.damage?.parts && Array.isArray(source.damage.parts)) { + source.damage.parts = source.damage.parts.reduce((acc, part) => { + acc[part.applyTo] = part; + return acc; + }, {}); + } + } } export class ResourceUpdateMap extends Map { diff --git a/module/data/action/transformAction.mjs b/module/data/action/transformAction.mjs new file mode 100644 index 00000000..7e552902 --- /dev/null +++ b/module/data/action/transformAction.mjs @@ -0,0 +1,5 @@ +import DHBaseAction from './baseAction.mjs'; + +export default class DHTransformAction extends DHBaseAction { + static extraSchemas = [...super.extraSchemas, 'transform']; +} diff --git a/module/data/actor/adversary.mjs b/module/data/actor/adversary.mjs index 0a446c15..73673896 100644 --- a/module/data/actor/adversary.mjs +++ b/module/data/actor/adversary.mjs @@ -2,7 +2,7 @@ import DHAdversarySettings from '../../applications/sheets-configs/adversary-set import { ActionField } from '../fields/actionField.mjs'; import { commonActorRules } from './base.mjs'; import DhCreature from './creature.mjs'; -import { resourceField, bonusField } from '../fields/actorField.mjs'; +import { bonusField } from '../fields/actorField.mjs'; import { calculateExpectedValue, parseTermsFromSimpleFormula } from '../../helpers/utils.mjs'; import { adversaryExpectedDamage, adversaryScalingData } from '../../config/actorConfig.mjs'; @@ -65,10 +65,6 @@ export default class DhpAdversary extends DhCreature { label: 'DAGGERHEART.GENERAL.DamageThresholds.severeThreshold' }) }), - resources: new fields.SchemaField({ - hitPoints: resourceField(0, 0, 'DAGGERHEART.GENERAL.HitPoints.plural', true), - stress: resourceField(0, 0, 'DAGGERHEART.GENERAL.stress', true) - }), rules: new fields.SchemaField({ ...commonActorRules() }), @@ -89,14 +85,14 @@ export default class DhpAdversary extends DhCreature { type: 'attack' }, damage: { - parts: [ - { + parts: { + hitPoints: { type: ['physical'], value: { multiplier: 'flat' } } - ] + } } } }), @@ -191,6 +187,7 @@ export default class DhpAdversary extends DhCreature { } prepareDerivedData() { + super.prepareDerivedData(); this.attack.roll.isStandardAttack = true; } @@ -268,12 +265,12 @@ export default class DhpAdversary extends DhCreature { } // Update damage in item actions + // Parse damage, and convert all formula matches in the descriptions to the new damage for (const action of Object.values(item.system.actions)) { - if (!action.damage) continue; - - // Parse damage, and convert all formula matches in the descriptions to the new damage try { const result = this.#adjustActionDamage(action, { ...damageMeta, type: 'action' }); + if (!result) continue; + for (const { previousFormula, formula } of Object.values(result)) { const oldFormulaRegexp = new RegExp( previousFormula.replace(' ', '').replace('+', '(?:\\s)?\\+(?:\\s)?') @@ -375,16 +372,14 @@ export default class DhpAdversary extends DhCreature { /** * Updates damage to reflect a specific value. * @throws if damage structure is invalid for conversion - * @returns the converted formula and value as a simplified term + * @returns the converted formula and value as a simplified term, or null if it doesn't deal HP damage */ #adjustActionDamage(action, damageMeta) { - // The current algorithm only returns a value if there is a single damage part - const hpDamageParts = action.damage.parts.filter(d => d.applyTo === 'hitPoints'); - if (hpDamageParts.length !== 1) throw new Error('incorrect number of hp parts'); + if (!action.damage?.parts.hitPoints) return null; const result = {}; for (const property of ['value', 'valueAlt']) { - const data = hpDamageParts[0][property]; + const data = action.damage.parts.hitPoints[property]; const previousFormula = data.custom.enabled ? data.custom.formula : [data.flatMultiplier ? `${data.flatMultiplier}${data.dice}` : 0, data.bonus ?? 0] diff --git a/module/data/actor/base.mjs b/module/data/actor/base.mjs index 3b4de08d..9f571edb 100644 --- a/module/data/actor/base.mjs +++ b/module/data/actor/base.mjs @@ -211,7 +211,7 @@ export default class BaseDataActor extends foundry.abstract.TypeDataModel { const textData = Object.keys(changes.system.resources).reduce((acc, key) => { const resource = changes.system.resources[key]; if (resource.value !== undefined && resource.value !== this.resources[key].value) { - acc.push(getScrollTextData(this.resources, resource, key)); + acc.push(getScrollTextData(this.parent, resource, key)); } return acc; diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index 10fba63c..7af4da9c 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -3,7 +3,7 @@ import ForeignDocumentUUIDField from '../fields/foreignDocumentUUIDField.mjs'; import DhLevelData from '../levelData.mjs'; import { commonActorRules } from './base.mjs'; import DhCreature from './creature.mjs'; -import { attributeField, resourceField, stressDamageReductionRule, bonusField } from '../fields/actorField.mjs'; +import { attributeField, stressDamageReductionRule, bonusField } from '../fields/actorField.mjs'; import { ActionField } from '../fields/actionField.mjs'; import DHCharacterSettings from '../../applications/sheets-configs/character-settings.mjs'; @@ -27,28 +27,6 @@ export default class DhCharacter extends DhCreature { return { ...super.defineSchema(), - resources: new fields.SchemaField({ - hitPoints: resourceField( - 0, - 0, - 'DAGGERHEART.GENERAL.HitPoints.plural', - true, - 'DAGGERHEART.ACTORS.Character.maxHPBonus' - ), - stress: resourceField(6, 0, 'DAGGERHEART.GENERAL.stress', true), - hope: new fields.SchemaField( - { - value: new fields.NumberField({ - initial: 2, - min: 0, - integer: true, - label: 'DAGGERHEART.GENERAL.hope' - }), - isReversed: new fields.BooleanField({ initial: false }) - }, - { label: 'DAGGERHEART.GENERAL.hope' } - ) - }), traits: new fields.SchemaField({ agility: attributeField('DAGGERHEART.CONFIG.Traits.agility.name'), strength: attributeField('DAGGERHEART.CONFIG.Traits.strength.name'), @@ -118,8 +96,8 @@ export default class DhCharacter extends DhCreature { trait: 'strength' }, damage: { - parts: [ - { + parts: { + hitPoints: { type: ['physical'], value: { custom: { @@ -128,7 +106,7 @@ export default class DhCharacter extends DhCreature { } } } - ] + } } } }), @@ -609,6 +587,7 @@ export default class DhCharacter extends DhCreature { } prepareBaseData() { + super.prepareBaseData(); this.evasion += this.class.value?.system?.evasion ?? 0; const currentLevel = this.levelData.level.current; @@ -680,6 +659,7 @@ export default class DhCharacter extends DhCreature { } prepareDerivedData() { + super.prepareDerivedData(); let baseHope = this.resources.hope.value; if (this.companion) { for (let levelKey in this.companion.system.levelData.levelups) { @@ -699,12 +679,13 @@ export default class DhCharacter extends DhCreature { this.attack.roll.trait = this.rules.attack.roll.trait ?? this.attack.roll.trait; this.resources.armor = { + label: 'DAGGERHEART.GENERAL.armor', value: this.armor?.system?.marks?.value ?? 0, max: this.armorScore, isReversed: true }; - this.attack.damage.parts[0].value.custom.formula = `@prof${this.basicAttackDamageDice}${this.rules.attack.damage.bonus ? ` + ${this.rules.attack.damage.bonus}` : ''}`; + this.attack.damage.parts.hitPoints.value.custom.formula = `@prof${this.basicAttackDamageDice}${this.rules.attack.damage.bonus ? ` + ${this.rules.attack.damage.bonus}` : ''}`; } getRollData() { @@ -740,7 +721,8 @@ export default class DhCharacter extends DhCreature { const newHopeMax = this.system.resources.hope.max + diff; const newHopeValue = Math.min(newHopeMax, this.system.resources.hope.value); if (newHopeValue != this.system.resources.hope.value) { - if (!changes.system.resources) changes.system.resources = { hope: { value: 0 } }; + if (!changes.system.resources.hope) changes.system.resources.hope = { value: 0 }; + changes.system.resources.hope = { ...changes.system.resources.hope, value: changes.system.resources.hope.value + newHopeValue diff --git a/module/data/actor/companion.mjs b/module/data/actor/companion.mjs index 6f51b593..81d0aa8a 100644 --- a/module/data/actor/companion.mjs +++ b/module/data/actor/companion.mjs @@ -4,7 +4,7 @@ import ForeignDocumentUUIDField from '../fields/foreignDocumentUUIDField.mjs'; import { ActionField } from '../fields/actionField.mjs'; import { adjustDice, adjustRange } from '../../helpers/utils.mjs'; import DHCompanionSettings from '../../applications/sheets-configs/companion-settings.mjs'; -import { resourceField, bonusField } from '../fields/actorField.mjs'; +import { bonusField } from '../fields/actorField.mjs'; export default class DhCompanion extends DhCreature { static LOCALIZATION_PREFIXES = ['DAGGERHEART.ACTORS.Companion']; @@ -26,10 +26,6 @@ export default class DhCompanion extends DhCreature { return { ...super.defineSchema(), partner: new ForeignDocumentUUIDField({ type: 'Actor' }), - resources: new fields.SchemaField({ - stress: resourceField(3, 0, 'DAGGERHEART.GENERAL.stress', true), - hope: new fields.NumberField({ initial: 0, integer: true, label: 'DAGGERHEART.GENERAL.hope' }) - }), evasion: new fields.NumberField({ required: true, min: 1, @@ -85,15 +81,15 @@ export default class DhCompanion extends DhCreature { bonus: 0 }, damage: { - parts: [ - { + parts: { + hitPoints: { type: ['physical'], value: { dice: 'd6', multiplier: 'prof' } } - ] + } } } }), @@ -127,6 +123,7 @@ export default class DhCompanion extends DhCreature { } prepareBaseData() { + super.prepareBaseData(); this.attack.roll.bonus = this.partner?.system?.spellcastModifier ?? 0; for (let levelKey in this.levelData.levelups) { @@ -138,7 +135,9 @@ export default class DhCompanion extends DhCreature { break; case 'vicious': if (selection.data[0] === 'damage') { - this.attack.damage.parts[0].value.dice = adjustDice(this.attack.damage.parts[0].value.dice); + this.attack.damage.parts.hitPoints.value.dice = adjustDice( + this.attack.damage.parts.hitPoints.value.dice + ); } else { this.attack.range = adjustRange(this.attack.range).id; } @@ -161,6 +160,7 @@ export default class DhCompanion extends DhCreature { } prepareDerivedData() { + super.prepareDerivedData(); /* Partner Related Setup */ if (this.partner) { this.levelData.level.changed = this.partner.system.levelData.level.current; diff --git a/module/data/actor/creature.mjs b/module/data/actor/creature.mjs index c8bf8448..601068ad 100644 --- a/module/data/actor/creature.mjs +++ b/module/data/actor/creature.mjs @@ -1,3 +1,4 @@ +import { ResourcesField } from '../fields/actorField.mjs'; import BaseDataActor from './base.mjs'; export default class DhCreature extends BaseDataActor { @@ -7,6 +8,7 @@ export default class DhCreature extends BaseDataActor { return { ...super.defineSchema(), + resources: new ResourcesField(this.metadata.type), advantageSources: new fields.ArrayField(new fields.StringField(), { label: 'DAGGERHEART.ACTORS.Character.advantageSources.label', hint: 'DAGGERHEART.ACTORS.Character.advantageSources.hint' diff --git a/module/data/actor/environment.mjs b/module/data/actor/environment.mjs index c4a3f747..0aaf8eb0 100644 --- a/module/data/actor/environment.mjs +++ b/module/data/actor/environment.mjs @@ -37,7 +37,7 @@ export default class DhEnvironment extends BaseDataActor { potentialAdversaries: new fields.TypedObjectField( new fields.SchemaField({ label: new fields.StringField(), - adversaries: new ForeignDocumentUUIDArrayField({ type: 'Actor' }, { required: false, initial: [] }) + adversaries: new ForeignDocumentUUIDArrayField({ type: 'Actor' }) }) ), notes: new fields.HTMLField() diff --git a/module/data/fields/_module.mjs b/module/data/fields/_module.mjs index 58423979..930814e2 100644 --- a/module/data/fields/_module.mjs +++ b/module/data/fields/_module.mjs @@ -1,4 +1,5 @@ export { ActionCollection } from './actionField.mjs'; +export { default as IterableTypedObjectField } from './iterableTypedObjectField.mjs'; export { default as FormulaField } from './formulaField.mjs'; export { default as ForeignDocumentUUIDField } from './foreignDocumentUUIDField.mjs'; export { default as ForeignDocumentUUIDArrayField } from './foreignDocumentUUIDArrayField.mjs'; diff --git a/module/data/fields/action/_module.mjs b/module/data/fields/action/_module.mjs index 0bdffca2..fa3b1cd5 100644 --- a/module/data/fields/action/_module.mjs +++ b/module/data/fields/action/_module.mjs @@ -10,3 +10,4 @@ export { default as DamageField } from './damageField.mjs'; export { default as RollField } from './rollField.mjs'; export { default as MacroField } from './macroField.mjs'; export { default as SummonField } from './summonField.mjs'; +export { default as TransformField } from './transformField.mjs'; diff --git a/module/data/fields/action/damageField.mjs b/module/data/fields/action/damageField.mjs index 6439344b..e79a91a2 100644 --- a/module/data/fields/action/damageField.mjs +++ b/module/data/fields/action/damageField.mjs @@ -1,5 +1,6 @@ import FormulaField from '../formulaField.mjs'; import { setsEqual } from '../../../helpers/utils.mjs'; +import IterableTypedObjectField from '../iterableTypedObjectField.mjs'; const fields = foundry.data.fields; @@ -12,7 +13,7 @@ export default class DamageField extends fields.SchemaField { /** @inheritDoc */ constructor(options, context = {}) { const damageFields = { - parts: new fields.ArrayField(new fields.EmbeddedDataField(DHDamageData)), + parts: new IterableTypedObjectField(DHDamageData), includeBase: new fields.BooleanField({ initial: false, label: 'DAGGERHEART.ACTIONS.Settings.includeBase.label' diff --git a/module/data/fields/action/transformField.mjs b/module/data/fields/action/transformField.mjs new file mode 100644 index 00000000..07b32166 --- /dev/null +++ b/module/data/fields/action/transformField.mjs @@ -0,0 +1,103 @@ +const fields = foundry.data.fields; + +export default class DHSummonField extends fields.SchemaField { + /** + * Action Workflow order + */ + static order = 130; + + constructor(options = {}, context = {}) { + const transformFields = { + actorUUID: new fields.DocumentUUIDField({ + type: 'Actor', + required: true + }), + resourceRefresh: new fields.SchemaField({ + hitPoints: new fields.BooleanField({ initial: true }), + stress: new fields.BooleanField({ initial: true }) + }) + }; + super(transformFields, options, context); + } + + static async execute() { + if (!this.transform.actorUUID) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.ACTIONS.TYPES.transform.noTransformActor')); + return false; + } + + const baseActor = await foundry.utils.fromUuid(this.transform.actorUUID); + if (!baseActor) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.ACTIONS.TYPES.transform.transformActorMissing')); + return false; + } + + if (!canvas.scene) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.ACTIONS.TYPES.transform.canvasError')); + return false; + } + + if (this.actor.prototypeToken.actorLink) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.ACTIONS.TYPES.transform.actorLinkError')); + return false; + } + + if (!this.actor.token) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.ACTIONS.TYPES.transform.prototypeError')); + return false; + } + + const actor = await DHSummonField.getWorldActor(baseActor); + const tokenSizes = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).tokenSizes; + const tokenSize = actor?.system.metadata.usesSize ? tokenSizes[actor.system.size] : actor.prototypeToken.width; + + await this.actor.token.update( + { ...actor.prototypeToken.toJSON(), actorId: actor.id, width: tokenSize, height: tokenSize }, + { diff: false, recursive: false, noHook: true } + ); + + if (this.actor.token.combatant) { + this.actor.token.combatant.update({ actorId: actor.id, img: actor.prototypeToken.texture.src }); + } + + const marks = { hitPoints: 0, stress: 0 }; + if (!this.transform.resourceRefresh.hitPoints) { + marks.hitPoints = Math.min( + this.actor.system.resources.hitPoints.value, + this.actor.token.actor.system.resources.hitPoints.max - 1 + ); + } + if (!this.transform.resourceRefresh.stress) { + marks.stress = Math.min( + this.actor.system.resources.stress.value, + this.actor.token.actor.system.resources.stress.max - 1 + ); + } + if (marks.hitPoints || marks.stress) { + this.actor.token.actor.update({ + 'system.resources': { + hitPoints: { value: marks.hitPoints }, + stress: { value: marks.stress } + } + }); + } + + const prevPosition = { ...this.actor.sheet.position }; + this.actor.sheet.close(); + this.actor.token.actor.sheet.render({ force: true, position: prevPosition }); + } + + /* Check for any available instances of the actor present in the world, or create a world actor based on compendium */ + static async getWorldActor(baseActor) { + if (!baseActor.inCompendium) return baseActor; + + const dataType = game.system.api.data.actors[`Dh${baseActor.type.capitalize()}`]; + if (dataType && baseActor.img === dataType.DEFAULT_ICON) { + const worldActorCopy = game.actors.find(x => x.name === baseActor.name); + if (worldActorCopy) return worldActorCopy; + } + + const worldActor = await game.system.api.documents.DhpActor.create(baseActor.toObject()); + return worldActor; + } +} diff --git a/module/data/fields/actionField.mjs b/module/data/fields/actionField.mjs index 624985fc..20e4d6f0 100644 --- a/module/data/fields/actionField.mjs +++ b/module/data/fields/actionField.mjs @@ -87,10 +87,10 @@ export class ActionField extends foundry.data.fields.ObjectField { /* -------------------------------------------- */ /** @override */ - _cleanType(value, options) { + _cleanType(value, options, _state) { if (!(typeof value === 'object')) value = {}; const cls = this.getModel(value); - if (cls) return cls.cleanData(value, options); + if (cls) return cls.cleanData(value, options, _state); return value; } diff --git a/module/data/fields/actorField.mjs b/module/data/fields/actorField.mjs index db1faad4..69ba6bf1 100644 --- a/module/data/fields/actorField.mjs +++ b/module/data/fields/actorField.mjs @@ -6,22 +6,6 @@ const attributeField = label => tierMarked: new fields.BooleanField({ initial: false }) }); -const resourceField = (max = 0, initial = 0, label, reverse = false, maxLabel) => - new fields.SchemaField( - { - value: new fields.NumberField({ initial: initial, min: 0, integer: true, label }), - max: new fields.NumberField({ - initial: max, - integer: true, - label: - maxLabel ?? - game.i18n.format('DAGGERHEART.GENERAL.maxWithThing', { thing: game.i18n.localize(label) }) - }), - isReversed: new fields.BooleanField({ initial: reverse }) - }, - { label } - ); - const stressDamageReductionRule = localizationPath => new fields.SchemaField({ cost: new fields.NumberField({ @@ -37,4 +21,67 @@ const bonusField = label => dice: new fields.ArrayField(new fields.StringField(), { label: `${game.i18n.localize(label)} Dice` }) }); -export { attributeField, resourceField, stressDamageReductionRule, bonusField }; +/** + * Field used for actor resources. It is a resource that validates dynamically based on the config. + * Because "max" may be defined during runtime, we don't attempt to clamp the maximum value. + */ +class ResourcesField extends fields.TypedObjectField { + constructor(actorType) { + super( + new fields.SchemaField({ + value: new fields.NumberField({ min: 0, initial: 0, integer: true }), + // Some resources allow changing max. A null max means its the default + max: new fields.NumberField({ initial: null, integer: true, nullable: true }) + }) + ); + this.actorType = actorType; + } + + getInitialValue() { + const resources = CONFIG.DH.RESOURCE[this.actorType].all; + return Object.values(resources).reduce((result, resource) => { + result[resource.id] = { + value: resource.initial, + max: null + }; + return result; + }, {}); + } + + _validateKey(key) { + return key in CONFIG.DH.RESOURCE[this.actorType].all; + } + + _cleanType(value, options, _state) { + value = super._cleanType(value, options, _state); + + // If not partial, ensure all data exists + if (!options.partial) { + value = foundry.utils.mergeObject(this.getInitialValue(), value); + } + + return value; + } + + /** Initializes the original source data, returning prepared data */ + initialize(...args) { + const data = super.initialize(...args); + const resources = CONFIG.DH.RESOURCE[this.actorType].all; + for (const [key, value] of Object.entries(data)) { + // TypedObjectField only calls _validateKey when persisting, so we also call it here + if (!this._validateKey(key)) { + delete value[key]; + continue; + } + + // Add basic prepared data. + const resource = resources[key]; + value.label = resource.label; + value.isReversed = resources[key].reverse; + value.max = typeof resource.max === 'number' ? (value.max ?? resource.max) : null; + } + return data; + } +} + +export { attributeField, ResourcesField, stressDamageReductionRule, bonusField }; diff --git a/module/data/fields/iterableTypedObjectField.mjs b/module/data/fields/iterableTypedObjectField.mjs new file mode 100644 index 00000000..d50d7dbf --- /dev/null +++ b/module/data/fields/iterableTypedObjectField.mjs @@ -0,0 +1,32 @@ +export default class IterableTypedObjectField extends foundry.data.fields.TypedObjectField { + constructor(model, options = { collectionClass: foundry.utils.Collection }, context = {}) { + super(new foundry.data.fields.EmbeddedDataField(model), options, context); + this.#elementClass = model; + } + + #elementClass; + + /** Initializes an object with an iterator. This modifies the prototype instead of */ + initialize(values) { + const object = Object.create(IterableObjectPrototype); + for (const [key, value] of Object.entries(values)) { + object[key] = new this.#elementClass(value); + } + return object; + } +} + +/** + * The prototype of an iterable object. + * This allows the functionality of a class but also allows foundry.utils.getType() to return "Object" instead of "Unknown". + */ +const IterableObjectPrototype = { + [Symbol.iterator]: function*() { + for (const value of Object.values(this)) { + yield value; + } + }, + map: function (func) { + return Array.from(this, func); + } +}; \ No newline at end of file diff --git a/module/data/item/base.mjs b/module/data/item/base.mjs index 447da3bf..5a16927a 100644 --- a/module/data/item/base.mjs +++ b/module/data/item/base.mjs @@ -224,7 +224,7 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel { const armorChanged = changed.system?.marks?.value !== undefined && changed.system.marks.value !== this.marks.value; if (armorChanged && autoSettings.resourceScrollTexts && this.parent.parent?.type === 'character') { - const armorData = getScrollTextData(this.parent.parent.system.resources, changed.system.marks, 'armor'); + const armorData = getScrollTextData(this.parent.parent, changed.system.marks, 'armor'); options.scrollingTextData = [armorData]; } diff --git a/module/data/item/weapon.mjs b/module/data/item/weapon.mjs index bb2e10d5..9335037c 100644 --- a/module/data/item/weapon.mjs +++ b/module/data/item/weapon.mjs @@ -63,15 +63,15 @@ export default class DHWeapon extends AttachableItem { type: 'attack' }, damage: { - parts: [ - { + parts: { + hitPoints: { type: ['physical'], value: { multiplier: 'prof', dice: 'd8' } } - ] + } } } }), @@ -112,24 +112,14 @@ export default class DHWeapon extends AttachableItem { async getDescriptionData() { const baseDescription = this.description; - const tier = game.i18n.localize(`DAGGERHEART.GENERAL.Tiers.${this.tier}`); - const trait = game.i18n.localize(CONFIG.DH.ACTOR.abilities[this.attack.roll.trait].label); - const range = game.i18n.localize(`DAGGERHEART.CONFIG.Range.${this.attack.range}.name`); - const damage = Roll.replaceFormulaData(this.attack.damageFormula, this.parent.parent ?? this.parent); - const burden = game.i18n.localize(CONFIG.DH.GENERAL.burden[this.burden].label); - const allFeatures = CONFIG.DH.ITEM.allWeaponFeatures(); const features = this.weaponFeatures.map(x => allFeatures[x.value]).filter(x => x); const prefix = await foundry.applications.handlebars.renderTemplate( 'systems/daggerheart/templates/sheets/items/weapon/description.hbs', { - features, - tier, - trait, - range, - damage, - burden + item: this, + features } ); diff --git a/module/data/settings/Appearance.mjs b/module/data/settings/Appearance.mjs index cd98d6f9..9da3afac 100644 --- a/module/data/settings/Appearance.mjs +++ b/module/data/settings/Appearance.mjs @@ -1,6 +1,16 @@ export default class DhAppearance extends foundry.abstract.DataModel { static LOCALIZATION_PREFIXES = ['DAGGERHEART.SETTINGS.Appearance']; + static sfxSchema = () => + new foundry.data.fields.SchemaField({ + class: new foundry.data.fields.StringField({ + nullable: true, + initial: null, + blank: true, + choices: CONFIG.DH.GENERAL.diceSoNiceSFXClasses + }) + }); + static defineSchema() { const { StringField, ColorField, BooleanField, SchemaField } = foundry.data.fields; @@ -15,7 +25,10 @@ export default class DhAppearance extends foundry.abstract.DataModel { colorset: new StringField({ initial: 'inspired', required: true, blank: false }), material: new StringField({ initial: 'metal', required: true, blank: false }), system: new StringField({ initial: 'standard', required: true, blank: false }), - font: new StringField({ initial: 'auto', required: true, blank: false }) + font: new StringField({ initial: 'auto', required: true, blank: false }), + sfx: new SchemaField({ + higher: DhAppearance.sfxSchema() + }) }); return { @@ -30,7 +43,10 @@ export default class DhAppearance extends foundry.abstract.DataModel { hope: diceStyle({ fg: '#ffffff', bg: '#ffe760', outline: '#000000', edge: '#ffffff' }), fear: diceStyle({ fg: '#000000', bg: '#0032b1', outline: '#ffffff', edge: '#000000' }), advantage: diceStyle({ fg: '#ffffff', bg: '#008000', outline: '#000000', edge: '#ffffff' }), - disadvantage: diceStyle({ fg: '#000000', bg: '#b30000', outline: '#ffffff', edge: '#000000' }) + disadvantage: diceStyle({ fg: '#000000', bg: '#b30000', outline: '#ffffff', edge: '#000000' }), + sfx: new SchemaField({ + critical: DhAppearance.sfxSchema() + }) }), extendCharacterDescriptions: new BooleanField(), extendAdversaryDescriptions: new BooleanField(), @@ -65,4 +81,48 @@ export default class DhAppearance extends foundry.abstract.DataModel { showGenericStatusEffects: new BooleanField({ initial: true }) }; } + + get diceSoNiceData() { + const globalOverrides = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.GlobalOverrides); + const getSFX = (baseClientData, overrideKey) => { + if (!globalOverrides.diceSoNice.sfx.overrideEnabled) return baseClientData; + const overrideData = globalOverrides.diceSoNice.sfx[overrideKey]; + const clientData = foundry.utils.deepClone(baseClientData); + return Object.keys(clientData).reduce((acc, key) => { + const data = clientData[key]; + acc[key] = Object.keys(data).reduce((acc, dataKey) => { + const value = data[dataKey]; + acc[dataKey] = value ? value : overrideData[key][dataKey]; + return acc; + }, {}); + return acc; + }, {}); + }; + + return { + ...this.diceSoNice, + sfx: getSFX(this.diceSoNice.sfx, 'global'), + hope: { + ...this.diceSoNice.hope, + sfx: getSFX(this.diceSoNice.hope.sfx, 'hope') + }, + fear: { + ...this.diceSoNice.fear, + sfx: getSFX(this.diceSoNice.fear.sfx, 'fear') + } + }; + } + + /** Invoked by the setting when data changes */ + handleChange() { + if (this.displayFear) { + if (ui.resources) { + if (this.displayFear === 'hide') ui.resources.close({ allowed: true }); + else ui.resources.render({ force: true }); + } + } + + const globalOverrides = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.GlobalOverrides); + globalOverrides.diceSoNiceSFXUpdate(this); + } } diff --git a/module/data/settings/GlobalOverrides.mjs b/module/data/settings/GlobalOverrides.mjs new file mode 100644 index 00000000..746a6355 --- /dev/null +++ b/module/data/settings/GlobalOverrides.mjs @@ -0,0 +1,55 @@ +import DhAppearance from './Appearance.mjs'; + +/** + * A setting to handle cases where we want to allow the GM to set a global default for client settings. + */ +export default class DhGlobalOverrides extends foundry.abstract.DataModel { + static defineSchema() { + const fields = foundry.data.fields; + return { + diceSoNice: new fields.SchemaField({ + sfx: new fields.SchemaField({ + overrideEnabled: new fields.BooleanField(), + global: new fields.SchemaField({ + critical: DhAppearance.sfxSchema() + }), + hope: new fields.SchemaField({ + higher: DhAppearance.sfxSchema() + }), + fear: new fields.SchemaField({ + higher: DhAppearance.sfxSchema() + }) + }) + }) + }; + } + + async diceSoNiceSFXUpdate(appearanceSettings, enabled) { + if (!game.user.isGM) return; + + const newEnabled = enabled !== undefined ? enabled : this.diceSoNice.sfx.overrideEnabled; + if (newEnabled) { + const newOverrides = foundry.utils.mergeObject(this.toObject(), { + diceSoNice: { + sfx: { + overrideEnabled: true, + global: appearanceSettings.diceSoNice.sfx, + hope: appearanceSettings.diceSoNice.hope.sfx, + fear: appearanceSettings.diceSoNice.fear.sfx + } + } + }); + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.GlobalOverrides, newOverrides); + } else { + const newOverrides = { + ...this.toObject(), + diceSoNice: { + sfx: { + overrideEnabled: false + } + } + }; + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.GlobalOverrides, newOverrides); + } + } +} diff --git a/module/data/settings/Homebrew.mjs b/module/data/settings/Homebrew.mjs index b8804fa7..d4b7b03f 100644 --- a/module/data/settings/Homebrew.mjs +++ b/module/data/settings/Homebrew.mjs @@ -145,6 +145,16 @@ export default class DhHomebrew extends foundry.abstract.DataModel { description: new fields.StringField() }) ), + resources: new fields.TypedObjectField( + new fields.SchemaField({ + resources: new fields.TypedObjectField(new fields.EmbeddedDataField(Resource)) + }), + { + initial: { + character: { resources: {} } + } + } + ), itemFeatures: new fields.SchemaField({ weaponFeatures: new fields.TypedObjectField( new fields.SchemaField({ @@ -185,4 +195,117 @@ export default class DhHomebrew extends foundry.abstract.DataModel { } return source; } + + /** Invoked by the setting when data changes */ + handleChange() { + if (this.maxFear) { + if (ui.resources) ui.resources.render({ force: true }); + } + + this.refreshConfig(); + this.#resetActors(); + } + + /** Update config values based on homebrew data. Make sure the references don't change */ + refreshConfig() { + for (const [actorType, actorData] of Object.entries(this.resources)) { + const config = CONFIG.DH.RESOURCE[actorType]; + for (const key of Object.keys(config.all)) { + delete config.all[key]; + } + Object.assign(config.all, { + ...Object.entries(actorData.resources).reduce((result, [key, value]) => { + result[key] = value.toObject(); + result[key].id = key; + return result; + }, {}), + ...config.custom, + ...config.base + }); + } + } + + /** + * Triggers a reset and non-forced re-render on all given actors (if given) + * or all world actors and actors in all scenes to show immediate results for a changed setting. + */ + #resetActors() { + const actors = new Set( + [ + game.actors.contents, + game.scenes.contents.flatMap(s => s.tokens.contents).flatMap(t => t.actor ?? []) + ].flat() + ); + for (const actor of actors) { + for (const app of Object.values(actor.apps)) { + for (const element of app.element?.querySelectorAll('prose-mirror.active')) { + element.open = false; // This triggers a save + } + } + + actor.reset(); + actor.render(); + } + } } + +export class Resource extends foundry.abstract.DataModel { + static defineSchema() { + const fields = foundry.data.fields; + return { + initial: new fields.NumberField({ + required: true, + integer: true, + initial: 0, + min: 0, + label: 'DAGGERHEART.GENERAL.initial' + }), + max: new fields.NumberField({ + nullable: true, + initial: null, + min: 0, + label: 'DAGGERHEART.GENERAL.max' + }), + label: new fields.StringField({ label: 'DAGGERHEART.GENERAL.label' }), + images: new fields.SchemaField({ + full: imageIconField('fa solid fa-circle'), + empty: imageIconField('fa-regular fa-circle') + }) + }; + } + + static getDefaultResourceData = label => { + const images = Resource.schema.fields.images.getInitialValue(); + return { + initial: 0, + max: 0, + label: label ?? '', + images + }; + }; + + static getDefaultImageData = imageKey => { + return Resource.schema.fields.images.fields[imageKey].getInitialValue(); + }; +} + +const imageIconField = defaultValue => + new foundry.data.fields.SchemaField( + { + value: new foundry.data.fields.StringField({ + initial: defaultValue, + label: 'DAGGERHEART.SETTINGS.Homebrew.FIELDS.resources.resources.value.label' + }), + isIcon: new foundry.data.fields.BooleanField({ + required: true, + initial: true, + label: 'DAGGERHEART.SETTINGS.Homebrew.FIELDS.resources.resources.isIcon.label' + }), + noColorFilter: new foundry.data.fields.BooleanField({ + required: true, + initial: false, + label: 'DAGGERHEART.SETTINGS.Homebrew.FIELDS.resources.resources.noColorFilter.label' + }) + }, + { required: true } + ); diff --git a/module/data/settings/Metagaming.mjs b/module/data/settings/Metagaming.mjs new file mode 100644 index 00000000..2bb5afdf --- /dev/null +++ b/module/data/settings/Metagaming.mjs @@ -0,0 +1,12 @@ +export default class DhMetagaming extends foundry.abstract.DataModel { + static defineSchema() { + const fields = foundry.data.fields; + return { + hideObserverPermissionInChat: new fields.BooleanField({ + initial: false, + label: 'DAGGERHEART.SETTINGS.Metagaming.FIELDS.hideObserverPermissionInChat.label', + hint: 'DAGGERHEART.SETTINGS.Metagaming.FIELDS.hideObserverPermissionInChat.hint' + }) + }; + } +} diff --git a/module/data/settings/_module.mjs b/module/data/settings/_module.mjs index db1fbfec..1343c0c4 100644 --- a/module/data/settings/_module.mjs +++ b/module/data/settings/_module.mjs @@ -1,4 +1,6 @@ export { default as DhAppearance } from './Appearance.mjs'; export { default as DhAutomation } from './Automation.mjs'; export { default as DhHomebrew } from './Homebrew.mjs'; +export { default as DhMetagaming } from './Metagaming.mjs'; export { default as DhVariantRules } from './VariantRules.mjs'; +export { default as DhGlobalOverrides } from './GlobalOverrides.mjs'; diff --git a/module/dice/dhRoll.mjs b/module/dice/dhRoll.mjs index 9b9a8ea0..ec2ea0c7 100644 --- a/module/dice/dhRoll.mjs +++ b/module/dice/dhRoll.mjs @@ -140,8 +140,14 @@ export default class DHRoll extends Roll { /** @inheritDoc */ async render({ flavor, template = this.constructor.CHAT_TEMPLATE, isPrivate = false, ...options } = {}) { if (!this._evaluated) return; + + const metagamingSettings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Metagaming); const chatData = await this._prepareChatRenderContext({ flavor, isPrivate, ...options }); - return foundry.applications.handlebars.renderTemplate(template, chatData); + return foundry.applications.handlebars.renderTemplate(template, { + ...chatData, + parent: chatData.parent, + metagamingSettings + }); } /** @inheritDoc */ diff --git a/module/dice/dualityRoll.mjs b/module/dice/dualityRoll.mjs index 01452512..eb15fa5e 100644 --- a/module/dice/dualityRoll.mjs +++ b/module/dice/dualityRoll.mjs @@ -378,6 +378,8 @@ export default class DualityRoll extends D20Roll { let parsedRoll = game.system.api.dice.DualityRoll.fromData({ ...rollString, evaluated: false }); const term = parsedRoll.terms[target.dataset.dieIndex]; await term.reroll(`/r1=${term.total}`); + const result = await parsedRoll.evaluate(); + if (game.modules.get('dice-so-nice')?.active) { const diceSoNiceRoll = { _evaluated: true, @@ -391,7 +393,7 @@ export default class DualityRoll extends D20Roll { options: { appearance: {} } }; - const diceSoNicePresets = await getDiceSoNicePresets(`d${term._faces}`, `d${term._faces}`); + const diceSoNicePresets = await getDiceSoNicePresets(result, `d${term._faces}`, `d${term._faces}`); const type = target.dataset.type; if (diceSoNicePresets[type]) { diceSoNiceRoll.dice[0].options = diceSoNicePresets[type]; @@ -400,8 +402,6 @@ export default class DualityRoll extends D20Roll { await game.dice3d.showForRoll(diceSoNiceRoll, game.user, true); } - await parsedRoll.evaluate(); - const newRoll = game.system.api.dice.DualityRoll.postEvaluate(parsedRoll, { targets: message.system.targets, roll: { diff --git a/module/documents/chatMessage.mjs b/module/documents/chatMessage.mjs index 668ad06b..53921329 100644 --- a/module/documents/chatMessage.mjs +++ b/module/documents/chatMessage.mjs @@ -68,8 +68,11 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage { document = fromUuidSync(uuid); if (!document) return; - e.setAttribute('data-view-perm', document.testUserPermission(game.user, 'OBSERVER')); e.setAttribute('data-use-perm', document.testUserPermission(game.user, 'OWNER')); + + const settings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Metagaming); + if (settings.hideObserverPermissionInChat) + e.setAttribute('data-view-perm', document.testUserPermission(game.user, 'OBSERVER')); }); if (this.isContentVisible) { diff --git a/module/documents/tooltipManager.mjs b/module/documents/tooltipManager.mjs index c4b52bb5..4793f1f7 100644 --- a/module/documents/tooltipManager.mjs +++ b/module/documents/tooltipManager.mjs @@ -3,6 +3,7 @@ import { AdversaryBPPerEncounter, BaseBPPerEncounter } from '../config/encounter export default class DhTooltipManager extends foundry.helpers.interaction.TooltipManager { #wide = false; #bordered = false; + #active = false; async activate(element, options = {}) { const { TextEditor } = foundry.applications.ux; @@ -168,7 +169,100 @@ export default class DhTooltipManager extends foundry.helpers.interaction.Toolti } } - super.activate(element, { ...options, html: html }); + this.baseActivate(element, { ...options, html: html }); + } + + /* Need to pass more options to _setAnchor, so have to copy whole foundry method >_< */ + async baseActivate(element, options) { + let { text, direction, cssClass, locked = false, html, content } = options; + if (content && !html) { + foundry.utils.logCompatibilityWarning( + 'The content option has been deprecated in favor of the html option', + { since: 13, until: 15, once: true } + ); + html = content; + } + if (text && html) throw new Error('Cannot provide both text and html options to TooltipManager#activate.'); + // Deactivate currently active element + this.deactivate(); + // Check if the element still exists in the DOM. + if (!document.body.contains(element)) return; + // Mark the new element as active + this.#active = true; + this.element = element; + element.setAttribute('aria-describedby', 'tooltip'); + html ||= element.dataset.tooltipHtml; + if (html) { + if (typeof html === 'string') this.tooltip.innerHTML = foundry.utils.cleanHTML(html); + else { + this.tooltip.innerHTML = ''; // Clear existing HTML + this.tooltip.appendChild(html); + } + } else { + text ||= element.dataset.tooltipText; + if (text) this.tooltip.textContent = text; + else { + text = element.dataset.tooltip; + // Localized message should be safe + if (game.i18n.has(text)) this.tooltip.innerHTML = game.i18n.localize(text); + else this.tooltip.innerHTML = foundry.utils.cleanHTML(text); + } + } + + // Activate display of the tooltip + this.tooltip.removeAttribute('class'); + this.tooltip.classList.add('active', 'themed', 'theme-dark'); + this.tooltip.showPopover(); + cssClass ??= element.closest('[data-tooltip-class]')?.dataset.tooltipClass; + if (cssClass) this.tooltip.classList.add(...cssClass.split(' ')); + + // Set tooltip position + direction ??= element.closest('[data-tooltip-direction]')?.dataset.tooltipDirection; + if (!direction) direction = this._determineDirection(); + this._setAnchor(direction, options); + + if (locked || element.dataset.hasOwnProperty('locked')) this.lockTooltip(); + } + + _setAnchor(direction, options) { + const directions = this.constructor.TOOLTIP_DIRECTIONS; + const pad = this.constructor.TOOLTIP_MARGIN_PX; + const pos = this.element.getBoundingClientRect(); + + const { innerHeight, innerWidth } = this.tooltip.ownerDocument.defaultView; + const tooltipPadding = 16; + const horizontalOffset = options.noOffset ? tooltipPadding : this.tooltip.offsetWidth / 2 - pos.width / 2; + const verticalOffset = options.noOffset ? tooltipPadding : this.tooltip.offsetHeight / 2 - pos.height / 2; + + const style = {}; + switch (direction) { + case directions.DOWN: + style.textAlign = 'center'; + style.left = pos.left - horizontalOffset; + style.top = pos.bottom + pad; + break; + case directions.LEFT: + style.textAlign = 'left'; + style.right = innerWidth - pos.left + pad; + style.top = pos.top - verticalOffset; + break; + case directions.RIGHT: + style.textAlign = 'right'; + style.left = pos.right + pad; + style.top = pos.top - verticalOffset; + break; + case directions.UP: + style.textAlign = 'center'; + style.left = pos.left - horizontalOffset; + style.bottom = innerHeight - pos.top + pad; + break; + case directions.CENTER: + style.textAlign = 'center'; + style.left = pos.left - horizontalOffset; + style.top = pos.top - verticalOffset; + break; + } + return this._setStyle(style); } _determineItemTooltipDirection(element, prefered = this.constructor.TOOLTIP_DIRECTIONS.LEFT) { @@ -270,6 +364,12 @@ export default class DhTooltipManager extends foundry.helpers.interaction.Toolti return clone; } + /**@inheritdoc */ + dismissLockedTooltips() { + super.dismissLockedTooltips(); + Hooks.callAll(CONFIG.DH.HOOKS.hooksConfig.lockedTooltipDismissed); + } + /** Get HTML for Battlepoints tooltip */ async getBattlepointHTML(combatId) { const combat = game.combats.get(combatId); diff --git a/module/helpers/handlebarsHelper.mjs b/module/helpers/handlebarsHelper.mjs index 2faea830..1c47f8dc 100644 --- a/module/helpers/handlebarsHelper.mjs +++ b/module/helpers/handlebarsHelper.mjs @@ -49,9 +49,7 @@ export default class RegisterHandlebarsHelpers { } static damageSymbols(damageParts) { - const symbols = [...new Set(damageParts.reduce((a, c) => a.concat([...c.type]), []))].map( - p => CONFIG.DH.GENERAL.damageTypes[p].icon - ); + const symbols = [...new Set(damageParts.map(x => x.type))].map(p => CONFIG.DH.GENERAL.damageTypes[p].icon); return new Handlebars.SafeString(Array.from(symbols).map(symbol => ``)); } diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index 7e4d794b..bb05fc39 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -60,7 +60,13 @@ export const getCommandTarget = (options = {}) => { export const setDiceSoNiceForDualityRoll = async (rollResult, advantageState, hopeFaces, fearFaces, advantageFaces) => { if (!game.modules.get('dice-so-nice')?.active) return; - const diceSoNicePresets = await getDiceSoNicePresets(hopeFaces, fearFaces, advantageFaces, advantageFaces); + const diceSoNicePresets = await getDiceSoNicePresets( + rollResult, + hopeFaces, + fearFaces, + advantageFaces, + advantageFaces + ); rollResult.dice[0].options = diceSoNicePresets.hope; rollResult.dice[1].options = diceSoNicePresets.fear; if (rollResult.dice[2] && advantageState) { @@ -378,17 +384,18 @@ export const arraysEqual = (a, b) => export const setsEqual = (a, b) => a.size === b.size && [...a].every(value => b.has(value)); -export function getScrollTextData(resources, resource, key) { - const { reversed, label } = CONFIG.DH.ACTOR.scrollingTextResource[key]; +export function getScrollTextData(actor, resource, key) { const { BOTTOM, TOP } = CONST.TEXT_ANCHOR_POINTS; + + const resources = actor.system.resources; const increased = resources[key].value < resource.value; const value = -1 * (resources[key].value - resource.value); + const { label, isReversed } = resources[key]; const text = `${game.i18n.localize(label)} ${value.signedString()}`; - - const stroke = increased ? (reversed ? 0xffffff : 0x000000) : reversed ? 0x000000 : 0xffffff; - const fill = increased ? (reversed ? 0x0032b1 : 0xffe760) : reversed ? 0xffe760 : 0x0032b1; - const direction = increased ? (reversed ? BOTTOM : TOP) : reversed ? TOP : BOTTOM; + const stroke = increased ? (isReversed ? 0xffffff : 0x000000) : isReversed ? 0x000000 : 0xffffff; + const fill = increased ? (isReversed ? 0x0032b1 : 0xffe760) : isReversed ? 0xffe760 : 0x0032b1; + const direction = increased ? (isReversed ? BOTTOM : TOP) : isReversed ? TOP : BOTTOM; return { text, stroke, fill, direction }; } @@ -722,3 +729,16 @@ export async function RefreshFeatures( return refreshedActors; } + +export function getUnusedDamageTypes(parts) { + const usedKeys = Object.keys(parts); + return Object.keys(CONFIG.DH.GENERAL.healingTypes).reduce((acc, key) => { + if (!usedKeys.includes(key)) + acc.push({ + value: key, + label: game.i18n.localize(CONFIG.DH.GENERAL.healingTypes[key].label) + }); + + return acc; + }, []); +} diff --git a/module/systemRegistration/handlebars.mjs b/module/systemRegistration/handlebars.mjs index ad8c741a..f51e1035 100644 --- a/module/systemRegistration/handlebars.mjs +++ b/module/systemRegistration/handlebars.mjs @@ -17,9 +17,10 @@ export const preloadHandlebarsTemplates = async function () { 'systems/daggerheart/templates/sheets/global/partials/resource-section/dice-value.hbs', 'systems/daggerheart/templates/sheets/global/partials/resource-section/die.hbs', 'systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs', + 'systems/daggerheart/templates/sheets/global/partials/feature-section-item.hbs', + 'systems/daggerheart/templates/sheets/global/partials/item-tags.hbs', 'systems/daggerheart/templates/components/card-preview.hbs', 'systems/daggerheart/templates/levelup/parts/selectable-card-preview.hbs', - 'systems/daggerheart/templates/sheets/global/partials/feature-section-item.hbs', 'systems/daggerheart/templates/ui/combatTracker/combatTrackerSection.hbs', 'systems/daggerheart/templates/actionTypes/damage.hbs', 'systems/daggerheart/templates/actionTypes/resource.hbs', @@ -33,6 +34,7 @@ export const preloadHandlebarsTemplates = async function () { 'systems/daggerheart/templates/actionTypes/beastform.hbs', 'systems/daggerheart/templates/actionTypes/countdown.hbs', 'systems/daggerheart/templates/actionTypes/summon.hbs', + 'systems/daggerheart/templates/actionTypes/transform.hbs', 'systems/daggerheart/templates/settings/components/settings-item-line.hbs', 'systems/daggerheart/templates/ui/tooltip/parts/tooltipChips.hbs', 'systems/daggerheart/templates/ui/tooltip/parts/tooltipTags.hbs', @@ -44,6 +46,7 @@ export const preloadHandlebarsTemplates = async function () { 'systems/daggerheart/templates/ui/chat/parts/target-part.hbs', 'systems/daggerheart/templates/ui/chat/parts/button-part.hbs', 'systems/daggerheart/templates/ui/itemBrowser/itemContainer.hbs', - 'systems/daggerheart/templates/scene/dh-config.hbs' + 'systems/daggerheart/templates/scene/dh-config.hbs', + 'systems/daggerheart/templates/settings/appearance-settings/diceSoNiceTab.hbs' ]); }; diff --git a/module/systemRegistration/settings.mjs b/module/systemRegistration/settings.mjs index c4acf7ed..e7ec37f5 100644 --- a/module/systemRegistration/settings.mjs +++ b/module/systemRegistration/settings.mjs @@ -1,10 +1,18 @@ import { defaultLevelTiers, DhLevelTiers } from '../data/levelTier.mjs'; import DhCountdowns from '../data/countdowns.mjs'; -import { DhAppearance, DhAutomation, DhHomebrew, DhVariantRules } from '../data/settings/_module.mjs'; +import { + DhAppearance, + DhAutomation, + DhGlobalOverrides, + DhHomebrew, + DhMetagaming, + DhVariantRules +} from '../data/settings/_module.mjs'; import { DhAppearanceSettings, DhAutomationSettings, DhHomebrewSettings, + DhMetagamingSettings, DhVariantRuleSettings } from '../applications/settings/_module.mjs'; import { CompendiumBrowserSettings, DhTagTeamRoll } from '../data/_module.mjs'; @@ -38,31 +46,33 @@ const registerMenuSettings = () => { type: DhAutomation }); + game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Metagaming, { + scope: 'world', + config: false, + type: DhMetagaming + }); + game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew, { scope: 'world', config: false, type: DhHomebrew, onChange: value => { - if (value.maxFear) { - if (ui.resources) ui.resources.render({ force: true }); - } - - // Some homebrew settings may change sheets in various ways, so trigger a re-render - resetActors(); + value.handleChange(); } }); + game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.GlobalOverrides, { + scope: 'world', + config: false, + type: DhGlobalOverrides + }); + game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance, { scope: 'client', config: false, type: DhAppearance, onChange: value => { - if (value.displayFear) { - if (ui.resources) { - if (value.displayFear === 'hide') ui.resources.close({ allowed: true }); - else ui.resources.render({ force: true }); - } - } + value.handleChange(); } }); }; @@ -76,6 +86,16 @@ const registerMenus = () => { type: DhAutomationSettings, restricted: true }); + + game.settings.registerMenu(CONFIG.DH.id, CONFIG.DH.SETTINGS.menu.Metagaming.Name, { + name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.metagaming.name'), + label: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.metagaming.label'), + hint: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.metagaming.hint'), + icon: CONFIG.DH.SETTINGS.menu.Metagaming.Icon, + type: DhMetagamingSettings, + restricted: true + }); + game.settings.registerMenu(CONFIG.DH.id, CONFIG.DH.SETTINGS.menu.Homebrew.Name, { name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.homebrew.name'), label: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.homebrew.label'), @@ -144,30 +164,8 @@ const registerNonConfigSettings = () => { }); game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.CompendiumBrowserSettings, { - scope: 'client', + scope: 'world', config: false, type: CompendiumBrowserSettings }); }; - -/** - * Triggers a reset and non-forced re-render on all given actors (if given) - * or all world actors and actors in all scenes to show immediate results for a changed setting. - */ -function resetActors(actors) { - actors ??= [ - game.actors.contents, - game.scenes.contents.flatMap(s => s.tokens.contents).flatMap(t => t.actor ?? []) - ].flat(); - actors = new Set(actors); - for (const actor of actors) { - for (const app of Object.values(actor.apps)) { - for (const element of app.element?.querySelectorAll('prose-mirror.active')) { - element.open = false; // This triggers a save - } - } - - actor.reset(); - actor.render(); - } -} diff --git a/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json b/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json index 70d0072b..0dd182fa 100644 --- a/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json +++ b/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json @@ -91,8 +91,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -118,7 +118,7 @@ }, "base": false } - ], + }, "includeBase": false }, "_id": "TCKVaVweyJzhEArX", @@ -343,7 +343,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -471,8 +471,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -499,7 +499,7 @@ } } }, - { + "armor": { "value": { "custom": { "enabled": true, @@ -524,7 +524,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -598,8 +598,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -626,7 +626,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -652,8 +652,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -680,7 +680,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Adult_Flickerfly_G7jiltRjgvVhZewm.json b/src/packs/adversaries/adversary_Adult_Flickerfly_G7jiltRjgvVhZewm.json index 16fb61d8..c4b4eb2a 100644 --- a/src/packs/adversaries/adversary_Adult_Flickerfly_G7jiltRjgvVhZewm.json +++ b/src/packs/adversaries/adversary_Adult_Flickerfly_G7jiltRjgvVhZewm.json @@ -75,8 +75,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -400,8 +400,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -427,7 +427,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, @@ -508,7 +508,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -581,8 +581,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -608,7 +608,7 @@ } } }, - { + "hope": { "value": { "custom": { "enabled": true, @@ -633,7 +633,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Apprentice_Assassin_vNIbYQ4YSzNf0WPE.json b/src/packs/adversaries/adversary_Apprentice_Assassin_vNIbYQ4YSzNf0WPE.json index 23f1f339..4c63297d 100644 --- a/src/packs/adversaries/adversary_Apprentice_Assassin_vNIbYQ4YSzNf0WPE.json +++ b/src/packs/adversaries/adversary_Apprentice_Assassin_vNIbYQ4YSzNf0WPE.json @@ -72,8 +72,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -100,7 +100,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/daggers/dagger-bone-black.webp", "type": "attack", diff --git a/src/packs/adversaries/adversary_Arch_Necromancer_WPEOIGfclNJxWb87.json b/src/packs/adversaries/adversary_Arch_Necromancer_WPEOIGfclNJxWb87.json index 3b1f3535..dfae0598 100644 --- a/src/packs/adversaries/adversary_Arch_Necromancer_WPEOIGfclNJxWb87.json +++ b/src/packs/adversaries/adversary_Arch_Necromancer_WPEOIGfclNJxWb87.json @@ -85,8 +85,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -112,7 +112,7 @@ }, "base": false } - ] + } }, "img": "icons/magic/unholy/beam-ringed-impact-purple.webp", "type": "attack", @@ -256,7 +256,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -336,8 +336,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -363,7 +363,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -414,8 +414,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -440,7 +440,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -619,7 +619,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -692,8 +692,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -719,7 +719,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Archer_Guard_JRhrrEg5UroURiAD.json b/src/packs/adversaries/adversary_Archer_Guard_JRhrrEg5UroURiAD.json index 5a13b3d9..965c5168 100644 --- a/src/packs/adversaries/adversary_Archer_Guard_JRhrrEg5UroURiAD.json +++ b/src/packs/adversaries/adversary_Archer_Guard_JRhrrEg5UroURiAD.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/bows/longbow-recurve-leather-brown.webp", "type": "attack", @@ -246,8 +246,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -273,7 +273,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Archer_Squadron_0ts6CGd93lLqGZI5.json b/src/packs/adversaries/adversary_Archer_Squadron_0ts6CGd93lLqGZI5.json index 5b15bc09..67e10c53 100644 --- a/src/packs/adversaries/adversary_Archer_Squadron_0ts6CGd93lLqGZI5.json +++ b/src/packs/adversaries/adversary_Archer_Squadron_0ts6CGd93lLqGZI5.json @@ -68,8 +68,8 @@ "description": "

A group of trained archers bearing massive bows.

", "attack": { "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -95,7 +95,7 @@ "resultBased": false, "base": false } - ] + } }, "name": "Longbow", "img": "icons/weapons/bows/longbow-recurve-leather-brown.webp", @@ -270,8 +270,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -295,7 +295,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -368,8 +368,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -393,7 +393,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json b/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json index 324fc25e..4b3a872a 100644 --- a/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json +++ b/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json @@ -81,8 +81,8 @@ }, "range": "close", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -108,7 +108,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false diff --git a/src/packs/adversaries/adversary_Battle_Box_dgH3fW9FTYLaIDvS.json b/src/packs/adversaries/adversary_Battle_Box_dgH3fW9FTYLaIDvS.json index 02553014..74ed8dfd 100644 --- a/src/packs/adversaries/adversary_Battle_Box_dgH3fW9FTYLaIDvS.json +++ b/src/packs/adversaries/adversary_Battle_Box_dgH3fW9FTYLaIDvS.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "range": "melee", "type": "attack", @@ -309,7 +309,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -382,8 +382,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -409,7 +409,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -482,8 +482,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -509,7 +509,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -582,8 +582,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -609,7 +609,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -737,8 +737,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -763,7 +763,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -836,7 +836,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -964,8 +964,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -991,7 +991,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -1071,8 +1071,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -1097,7 +1097,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -1165,8 +1165,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -1192,7 +1192,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json b/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json index 959ef9dd..cfc71120 100644 --- a/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json +++ b/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json @@ -84,8 +84,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -111,7 +111,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/claws/claw-straight-brown.webp", "type": "attack", @@ -284,8 +284,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -311,7 +311,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -441,8 +441,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -468,7 +468,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json b/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json index 0a332575..a315f91a 100644 --- a/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json +++ b/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json @@ -80,8 +80,8 @@ "name": "Longsword", "img": "icons/weapons/swords/sword-guard.webp", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -246,7 +246,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -319,7 +319,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json b/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json index a169bf61..8863641d 100644 --- a/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json +++ b/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json @@ -83,8 +83,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -110,7 +110,7 @@ }, "base": false } - ] + } }, "img": "icons/skills/melee/unarmed-punch-fist-yellow-red.webp", "type": "attack", @@ -280,8 +280,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -307,7 +307,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, @@ -389,8 +389,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -415,7 +415,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Cave_Ogre_8Zkqk1jU09nKL2fy.json b/src/packs/adversaries/adversary_Cave_Ogre_8Zkqk1jU09nKL2fy.json index 5b2d2e41..cb081441 100644 --- a/src/packs/adversaries/adversary_Cave_Ogre_8Zkqk1jU09nKL2fy.json +++ b/src/packs/adversaries/adversary_Cave_Ogre_8Zkqk1jU09nKL2fy.json @@ -79,8 +79,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ], + }, "direct": true }, "name": "Club", @@ -336,8 +336,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false, @@ -365,7 +365,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, @@ -412,8 +412,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -438,7 +438,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -507,8 +507,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -534,7 +534,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, diff --git a/src/packs/adversaries/adversary_Chaos_Skull_jDmHqGvzg5wjgmxE.json b/src/packs/adversaries/adversary_Chaos_Skull_jDmHqGvzg5wjgmxE.json index f548870a..a95db1b7 100644 --- a/src/packs/adversaries/adversary_Chaos_Skull_jDmHqGvzg5wjgmxE.json +++ b/src/packs/adversaries/adversary_Chaos_Skull_jDmHqGvzg5wjgmxE.json @@ -74,8 +74,8 @@ }, "range": "close", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ }, "base": false } - ] + } }, "img": "icons/magic/light/beam-rays-magenta.webp", "type": "attack", @@ -383,8 +383,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -410,7 +410,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -483,8 +483,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": false @@ -508,7 +508,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Conscript_99TqczuQipBmaB8i.json b/src/packs/adversaries/adversary_Conscript_99TqczuQipBmaB8i.json index 35c43a3b..5cbc1f82 100644 --- a/src/packs/adversaries/adversary_Conscript_99TqczuQipBmaB8i.json +++ b/src/packs/adversaries/adversary_Conscript_99TqczuQipBmaB8i.json @@ -67,8 +67,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -95,7 +95,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false diff --git a/src/packs/adversaries/adversary_Construct_uOP5oT9QzXPlnf3p.json b/src/packs/adversaries/adversary_Construct_uOP5oT9QzXPlnf3p.json index 310eefce..067248c9 100644 --- a/src/packs/adversaries/adversary_Construct_uOP5oT9QzXPlnf3p.json +++ b/src/packs/adversaries/adversary_Construct_uOP5oT9QzXPlnf3p.json @@ -72,8 +72,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -99,7 +99,7 @@ }, "base": false } - ] + } }, "name": "Fist Slam", "img": "icons/skills/melee/unarmed-punch-fist-yellow-red.webp", @@ -332,8 +332,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -359,7 +359,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -534,8 +534,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -561,7 +561,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Courtesan_ZxWaWPdzFIUPNC62.json b/src/packs/adversaries/adversary_Courtesan_ZxWaWPdzFIUPNC62.json index 24572103..aba9ea46 100644 --- a/src/packs/adversaries/adversary_Courtesan_ZxWaWPdzFIUPNC62.json +++ b/src/packs/adversaries/adversary_Courtesan_ZxWaWPdzFIUPNC62.json @@ -84,8 +84,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -111,7 +111,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/daggers/dagger-straight-cracked.webp", "type": "attack", @@ -256,8 +256,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -282,7 +282,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json b/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json index 1ffc7ece..8777ee06 100644 --- a/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json +++ b/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/daggers/dagger-twin-green.webp", "type": "attack", @@ -253,8 +253,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -279,7 +279,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Cult_Adept_0NxCSugvKQ4W8OYZ.json b/src/packs/adversaries/adversary_Cult_Adept_0NxCSugvKQ4W8OYZ.json index e428d05d..cbb48681 100644 --- a/src/packs/adversaries/adversary_Cult_Adept_0NxCSugvKQ4W8OYZ.json +++ b/src/packs/adversaries/adversary_Cult_Adept_0NxCSugvKQ4W8OYZ.json @@ -84,8 +84,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -111,7 +111,7 @@ }, "base": false } - ] + } }, "range": "far", "img": "icons/weapons/staves/staff-ornate-purple.webp", @@ -256,8 +256,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -283,7 +283,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -308,7 +308,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -614,8 +614,8 @@ "recovery": "scene" }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -640,7 +640,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Cult_Fang_tyBOpLfigAhI9bU3.json b/src/packs/adversaries/adversary_Cult_Fang_tyBOpLfigAhI9bU3.json index d3b341f0..e65f3202 100644 --- a/src/packs/adversaries/adversary_Cult_Fang_tyBOpLfigAhI9bU3.json +++ b/src/packs/adversaries/adversary_Cult_Fang_tyBOpLfigAhI9bU3.json @@ -74,8 +74,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ }, "base": false } - ] + } }, "range": "melee", "type": "attack", @@ -300,8 +300,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -326,7 +326,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Cult_Initiate_zx99sOGTXicP4SSD.json b/src/packs/adversaries/adversary_Cult_Initiate_zx99sOGTXicP4SSD.json index a0c0713d..4f04a85a 100644 --- a/src/packs/adversaries/adversary_Cult_Initiate_zx99sOGTXicP4SSD.json +++ b/src/packs/adversaries/adversary_Cult_Initiate_zx99sOGTXicP4SSD.json @@ -66,8 +66,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -94,7 +94,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", diff --git a/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json b/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json index f66ce7f0..aed2e08a 100644 --- a/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json +++ b/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/magic/nature/root-vines-grow-brown.webp", "type": "attack", @@ -245,8 +245,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -271,7 +271,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -325,8 +325,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -350,7 +350,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Demon_of_Avarice_pnyjIGxxvurcWmTv.json b/src/packs/adversaries/adversary_Demon_of_Avarice_pnyjIGxxvurcWmTv.json index e4ba41fb..1a3538da 100644 --- a/src/packs/adversaries/adversary_Demon_of_Avarice_pnyjIGxxvurcWmTv.json +++ b/src/packs/adversaries/adversary_Demon_of_Avarice_pnyjIGxxvurcWmTv.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", diff --git a/src/packs/adversaries/adversary_Demon_of_Despair_kE4dfhqmIQpNd44e.json b/src/packs/adversaries/adversary_Demon_of_Despair_kE4dfhqmIQpNd44e.json index 27c6bac2..e2f58709 100644 --- a/src/packs/adversaries/adversary_Demon_of_Despair_kE4dfhqmIQpNd44e.json +++ b/src/packs/adversaries/adversary_Demon_of_Despair_kE4dfhqmIQpNd44e.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "far", @@ -435,8 +435,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -461,7 +461,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -515,8 +515,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -542,7 +542,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Demon_of_Hubris_2VN3BftageoTTIzu.json b/src/packs/adversaries/adversary_Demon_of_Hubris_2VN3BftageoTTIzu.json index 16bc1d1f..9f954437 100644 --- a/src/packs/adversaries/adversary_Demon_of_Hubris_2VN3BftageoTTIzu.json +++ b/src/packs/adversaries/adversary_Demon_of_Hubris_2VN3BftageoTTIzu.json @@ -81,8 +81,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -108,7 +108,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -251,8 +251,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -277,7 +277,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -329,8 +329,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -355,7 +355,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -414,8 +414,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -441,7 +441,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -550,8 +550,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -576,7 +576,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Demon_of_Jealousy_SxSOkM4bcVOFyjbo.json b/src/packs/adversaries/adversary_Demon_of_Jealousy_SxSOkM4bcVOFyjbo.json index 31f9b942..c083b183 100644 --- a/src/packs/adversaries/adversary_Demon_of_Jealousy_SxSOkM4bcVOFyjbo.json +++ b/src/packs/adversaries/adversary_Demon_of_Jealousy_SxSOkM4bcVOFyjbo.json @@ -80,8 +80,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ], + }, "direct": true }, "img": "icons/magic/symbols/rune-sigil-rough-white-teal.webp", @@ -352,7 +352,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Demon_of_Wrath_5lphJAgzoqZI3VoG.json b/src/packs/adversaries/adversary_Demon_of_Wrath_5lphJAgzoqZI3VoG.json index 33ded6b9..201b17fd 100644 --- a/src/packs/adversaries/adversary_Demon_of_Wrath_5lphJAgzoqZI3VoG.json +++ b/src/packs/adversaries/adversary_Demon_of_Wrath_5lphJAgzoqZI3VoG.json @@ -81,8 +81,8 @@ }, "img": "icons/skills/melee/unarmed-punch-fist-yellow-red.webp", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -108,7 +108,7 @@ }, "base": false } - ], + }, "direct": true }, "type": "attack", @@ -398,8 +398,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -425,7 +425,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, diff --git a/src/packs/adversaries/adversary_Demonic_Hound_Pack_NoRZ1PqB8N5wcIw0.json b/src/packs/adversaries/adversary_Demonic_Hound_Pack_NoRZ1PqB8N5wcIw0.json index 7482c734..2043d960 100644 --- a/src/packs/adversaries/adversary_Demonic_Hound_Pack_NoRZ1PqB8N5wcIw0.json +++ b/src/packs/adversaries/adversary_Demonic_Hound_Pack_NoRZ1PqB8N5wcIw0.json @@ -74,8 +74,8 @@ "motivesAndTactics": "Cause fear, consume fl esh, please masters", "attack": { "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ "resultBased": false, "base": false } - ] + } }, "name": "Claws and Fangs", "img": "icons/creatures/abilities/mouth-teeth-rows-red.webp", @@ -269,8 +269,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -295,7 +295,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -349,8 +349,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -376,7 +376,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Dire_Bat_tBWHW00epmMnkawe.json b/src/packs/adversaries/adversary_Dire_Bat_tBWHW00epmMnkawe.json index 16ec7643..23d5550e 100644 --- a/src/packs/adversaries/adversary_Dire_Bat_tBWHW00epmMnkawe.json +++ b/src/packs/adversaries/adversary_Dire_Bat_tBWHW00epmMnkawe.json @@ -78,8 +78,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -105,7 +105,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/claws/claw-hooked-curved.webp", "type": "attack", @@ -312,8 +312,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": false @@ -337,7 +337,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -397,8 +397,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -424,7 +424,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json b/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json index 69301cb2..939a5307 100644 --- a/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json +++ b/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/claws/claw-straight-brown.webp", "type": "attack", @@ -247,8 +247,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -272,7 +272,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -352,8 +352,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -377,7 +377,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, diff --git a/src/packs/adversaries/adversary_Dryad_wR7cFKrHvRzbzhBT.json b/src/packs/adversaries/adversary_Dryad_wR7cFKrHvRzbzhBT.json index ca9ce647..c69ee84e 100644 --- a/src/packs/adversaries/adversary_Dryad_wR7cFKrHvRzbzhBT.json +++ b/src/packs/adversaries/adversary_Dryad_wR7cFKrHvRzbzhBT.json @@ -81,8 +81,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -108,7 +108,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -251,7 +251,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -297,8 +297,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -324,7 +324,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -438,8 +438,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -464,7 +464,7 @@ }, "type": [] }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -489,7 +489,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Electric_Eels_TLzY1nDw0Bu9Ud40.json b/src/packs/adversaries/adversary_Electric_Eels_TLzY1nDw0Bu9Ud40.json index 9386944f..1909a74a 100644 --- a/src/packs/adversaries/adversary_Electric_Eels_TLzY1nDw0Bu9Ud40.json +++ b/src/packs/adversaries/adversary_Electric_Eels_TLzY1nDw0Bu9Ud40.json @@ -68,8 +68,8 @@ "motivesAndTactics": "Avoid larger predators, shock prey, tear apart", "attack": { "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -95,7 +95,7 @@ "resultBased": false, "base": false } - ] + } }, "name": "Shocking Bite", "img": "icons/creatures/abilities/mouth-teeth-sharp.webp", @@ -270,8 +270,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -297,7 +297,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Elemental_Spark_P7h54ZePFPHpYwvB.json b/src/packs/adversaries/adversary_Elemental_Spark_P7h54ZePFPHpYwvB.json index 5c25f63e..2c2633ea 100644 --- a/src/packs/adversaries/adversary_Elemental_Spark_P7h54ZePFPHpYwvB.json +++ b/src/packs/adversaries/adversary_Elemental_Spark_P7h54ZePFPHpYwvB.json @@ -67,8 +67,8 @@ }, "range": "close", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -95,7 +95,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false diff --git a/src/packs/adversaries/adversary_Elite_Soldier_bfhVWMBUh61b9J6n.json b/src/packs/adversaries/adversary_Elite_Soldier_bfhVWMBUh61b9J6n.json index de5db0b2..df3e6d12 100644 --- a/src/packs/adversaries/adversary_Elite_Soldier_bfhVWMBUh61b9J6n.json +++ b/src/packs/adversaries/adversary_Elite_Soldier_bfhVWMBUh61b9J6n.json @@ -98,8 +98,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -125,7 +125,7 @@ }, "base": false } - ], + }, "includeBase": false }, "target": { @@ -276,8 +276,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -303,7 +303,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Failed_Experiment_ChwwVqowFw8hJQwT.json b/src/packs/adversaries/adversary_Failed_Experiment_ChwwVqowFw8hJQwT.json index 408d5102..70e56980 100644 --- a/src/packs/adversaries/adversary_Failed_Experiment_ChwwVqowFw8hJQwT.json +++ b/src/packs/adversaries/adversary_Failed_Experiment_ChwwVqowFw8hJQwT.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/claws/claw-hooked-barbed.webp", "range": "melee", diff --git a/src/packs/adversaries/adversary_Fallen_Shock_Troop_OsLG2BjaEdTZUJU9.json b/src/packs/adversaries/adversary_Fallen_Shock_Troop_OsLG2BjaEdTZUJU9.json index 931e4c0a..8c0d7b95 100644 --- a/src/packs/adversaries/adversary_Fallen_Shock_Troop_OsLG2BjaEdTZUJU9.json +++ b/src/packs/adversaries/adversary_Fallen_Shock_Troop_OsLG2BjaEdTZUJU9.json @@ -67,8 +67,8 @@ "img": "icons/weapons/axes/axe-battle-skull-black.webp", "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -95,7 +95,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -256,8 +256,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -282,7 +282,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Fallen_Sorcerer_PELRry1vqjBzSAlr.json b/src/packs/adversaries/adversary_Fallen_Sorcerer_PELRry1vqjBzSAlr.json index bfad5cf6..06db1453 100644 --- a/src/packs/adversaries/adversary_Fallen_Sorcerer_PELRry1vqjBzSAlr.json +++ b/src/packs/adversaries/adversary_Fallen_Sorcerer_PELRry1vqjBzSAlr.json @@ -80,8 +80,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/staves/staff-animal-skull-bull.webp", "type": "attack", @@ -251,8 +251,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -278,7 +278,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -482,8 +482,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -508,7 +508,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Fallen_Warlord__Realm_Breaker_hxZ0sgoFJubh5aj6.json b/src/packs/adversaries/adversary_Fallen_Warlord__Realm_Breaker_hxZ0sgoFJubh5aj6.json index b2cdc489..9fa49107 100644 --- a/src/packs/adversaries/adversary_Fallen_Warlord__Realm_Breaker_hxZ0sgoFJubh5aj6.json +++ b/src/packs/adversaries/adversary_Fallen_Warlord__Realm_Breaker_hxZ0sgoFJubh5aj6.json @@ -67,8 +67,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -94,7 +94,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", @@ -337,7 +337,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -416,8 +416,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -443,7 +443,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -516,8 +516,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -543,7 +543,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -653,8 +653,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -679,7 +679,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -717,7 +717,35 @@ "system": { "description": "

When the @Lookup[@name] marks their last HP, replace them with the @UUID[Compendium.daggerheart.adversaries.Actor.RXkZTwBRi4dJ3JE5]{Fallen Warlord: Undefeated Champion} and immediately spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "gP426WmWbtrZEWCD": { + "type": "transform", + "_id": "gP426WmWbtrZEWCD", + "systemPath": "actions", + "baseAction": false, + "description": "", + "chatDisplay": true, + "originItem": { + "type": "itemCollection" + }, + "actionType": "action", + "triggers": [], + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null, + "consumeOnSuccess": false + }, + "transform": { + "actorUUID": "Compendium.daggerheart.adversaries.Actor.RXkZTwBRi4dJ3JE5", + "resourceRefresh": { + "hitPoints": true, + "stress": true + } + } + } + }, "originItemType": null, "originId": null, "featureForm": "reaction" diff --git a/src/packs/adversaries/adversary_Fallen_Warlord__Undefeated_Champion_RXkZTwBRi4dJ3JE5.json b/src/packs/adversaries/adversary_Fallen_Warlord__Undefeated_Champion_RXkZTwBRi4dJ3JE5.json index 89d61c1c..5ad77ab0 100644 --- a/src/packs/adversaries/adversary_Fallen_Warlord__Undefeated_Champion_RXkZTwBRi4dJ3JE5.json +++ b/src/packs/adversaries/adversary_Fallen_Warlord__Undefeated_Champion_RXkZTwBRi4dJ3JE5.json @@ -67,8 +67,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -94,7 +94,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", @@ -338,7 +338,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -410,8 +410,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -437,7 +437,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -697,8 +697,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -724,7 +724,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -792,8 +792,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -818,7 +818,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Giant_Beastmaster_8VZIgU12cB3cvlyH.json b/src/packs/adversaries/adversary_Giant_Beastmaster_8VZIgU12cB3cvlyH.json index e576e1e0..c6a482dd 100644 --- a/src/packs/adversaries/adversary_Giant_Beastmaster_8VZIgU12cB3cvlyH.json +++ b/src/packs/adversaries/adversary_Giant_Beastmaster_8VZIgU12cB3cvlyH.json @@ -81,8 +81,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -108,7 +108,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -269,8 +269,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -294,7 +294,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Giant_Brawler_YnObCleGjPT7yqEc.json b/src/packs/adversaries/adversary_Giant_Brawler_YnObCleGjPT7yqEc.json index 4f76b706..8948c8b6 100644 --- a/src/packs/adversaries/adversary_Giant_Brawler_YnObCleGjPT7yqEc.json +++ b/src/packs/adversaries/adversary_Giant_Brawler_YnObCleGjPT7yqEc.json @@ -81,8 +81,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -108,7 +108,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -251,8 +251,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -278,7 +278,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -351,8 +351,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -378,7 +378,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -452,8 +452,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -479,7 +479,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Giant_Eagle_OMQ0v6PE8s1mSU0K.json b/src/packs/adversaries/adversary_Giant_Eagle_OMQ0v6PE8s1mSU0K.json index ea578762..a8a33586 100644 --- a/src/packs/adversaries/adversary_Giant_Eagle_OMQ0v6PE8s1mSU0K.json +++ b/src/packs/adversaries/adversary_Giant_Eagle_OMQ0v6PE8s1mSU0K.json @@ -98,8 +98,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -125,7 +125,7 @@ }, "base": false } - ], + }, "includeBase": false }, "target": { @@ -345,8 +345,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -372,7 +372,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -499,8 +499,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -526,7 +526,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -643,8 +643,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -670,7 +670,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Giant_Mosquitoes_IIWV4ysJPFPnTP7W.json b/src/packs/adversaries/adversary_Giant_Mosquitoes_IIWV4ysJPFPnTP7W.json index fbb30d40..a74cb88d 100644 --- a/src/packs/adversaries/adversary_Giant_Mosquitoes_IIWV4ysJPFPnTP7W.json +++ b/src/packs/adversaries/adversary_Giant_Mosquitoes_IIWV4ysJPFPnTP7W.json @@ -74,8 +74,8 @@ "motivesAndTactics": "Fly away, harass, steal blood", "attack": { "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ "resultBased": false, "base": false } - ] + } }, "name": "Proboscis", "img": "icons/skills/wounds/blood-cells-vessel-red.webp", diff --git a/src/packs/adversaries/adversary_Giant_Rat_4PfLnaCrOcMdb4dK.json b/src/packs/adversaries/adversary_Giant_Rat_4PfLnaCrOcMdb4dK.json index d1df6b57..822ee035 100644 --- a/src/packs/adversaries/adversary_Giant_Rat_4PfLnaCrOcMdb4dK.json +++ b/src/packs/adversaries/adversary_Giant_Rat_4PfLnaCrOcMdb4dK.json @@ -72,8 +72,8 @@ "name": "Claws", "img": "icons/creatures/claws/claw-straight-brown.webp", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -100,7 +100,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -272,7 +272,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Giant_Recruit_5s8wSvpyC5rxY5aD.json b/src/packs/adversaries/adversary_Giant_Recruit_5s8wSvpyC5rxY5aD.json index adcdf015..376ebace 100644 --- a/src/packs/adversaries/adversary_Giant_Recruit_5s8wSvpyC5rxY5aD.json +++ b/src/packs/adversaries/adversary_Giant_Recruit_5s8wSvpyC5rxY5aD.json @@ -62,8 +62,8 @@ "name": "Warhammer", "img": "icons/weapons/hammers/hammer-double-stone-worn.webp", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -90,7 +90,7 @@ }, "base": false } - ] + } }, "range": "veryClose", "roll": { diff --git a/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json b/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json index fda3e656..03a0272d 100644 --- a/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json +++ b/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -253,8 +253,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -280,7 +280,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -354,8 +354,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -381,7 +381,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -508,8 +508,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -535,7 +535,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Glass_Snake_8KWVLWXFhlY2kYx0.json b/src/packs/adversaries/adversary_Glass_Snake_8KWVLWXFhlY2kYx0.json index f02a1c52..5876f55c 100644 --- a/src/packs/adversaries/adversary_Glass_Snake_8KWVLWXFhlY2kYx0.json +++ b/src/packs/adversaries/adversary_Glass_Snake_8KWVLWXFhlY2kYx0.json @@ -75,8 +75,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -240,8 +240,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "armor": { "value": { "custom": { "enabled": true, @@ -266,7 +266,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -326,8 +326,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -351,7 +351,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -459,8 +459,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -486,7 +486,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -532,7 +532,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Gorgon_8mJYMpbLTb8qIOrr.json b/src/packs/adversaries/adversary_Gorgon_8mJYMpbLTb8qIOrr.json index 2753d958..1fcfcce4 100644 --- a/src/packs/adversaries/adversary_Gorgon_8mJYMpbLTb8qIOrr.json +++ b/src/packs/adversaries/adversary_Gorgon_8mJYMpbLTb8qIOrr.json @@ -80,8 +80,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/bows/shortbow-recurve-yellow.webp", "type": "attack", @@ -409,8 +409,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -436,7 +436,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -461,7 +461,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -541,7 +541,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -652,8 +652,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -679,7 +679,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Greater_Earth_Elemental_dsfB3YhoL5SudvS2.json b/src/packs/adversaries/adversary_Greater_Earth_Elemental_dsfB3YhoL5SudvS2.json index fe968ff3..077373b2 100644 --- a/src/packs/adversaries/adversary_Greater_Earth_Elemental_dsfB3YhoL5SudvS2.json +++ b/src/packs/adversaries/adversary_Greater_Earth_Elemental_dsfB3YhoL5SudvS2.json @@ -75,8 +75,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -268,8 +268,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "armor": { "value": { "custom": { "enabled": true, @@ -294,7 +294,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -422,8 +422,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -449,7 +449,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -578,8 +578,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -605,7 +605,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Greater_Water_Elemental_xIICT6tEdnA7dKDV.json b/src/packs/adversaries/adversary_Greater_Water_Elemental_xIICT6tEdnA7dKDV.json index 5d17f025..b44bb9cc 100644 --- a/src/packs/adversaries/adversary_Greater_Water_Elemental_xIICT6tEdnA7dKDV.json +++ b/src/packs/adversaries/adversary_Greater_Water_Elemental_xIICT6tEdnA7dKDV.json @@ -75,8 +75,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -245,8 +245,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -272,7 +272,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -401,7 +401,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json b/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json index 5f3f52c2..a3a76d7a 100644 --- a/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json +++ b/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/slimes/slime-movement-dripping-pseudopods-green.webp", "type": "attack", @@ -277,8 +277,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "armor": { "value": { "custom": { "enabled": true, @@ -303,7 +303,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -356,8 +356,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -383,7 +383,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -408,7 +408,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Hallowed_Archer_kabueAo6BALApWqp.json b/src/packs/adversaries/adversary_Hallowed_Archer_kabueAo6BALApWqp.json index 8cce1b94..eb7eafc1 100644 --- a/src/packs/adversaries/adversary_Hallowed_Archer_kabueAo6BALApWqp.json +++ b/src/packs/adversaries/adversary_Hallowed_Archer_kabueAo6BALApWqp.json @@ -75,8 +75,8 @@ "name": "Sanctified Longbow", "img": "icons/weapons/bows/shortbow-recurve-yellow.webp", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -314,8 +314,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -341,7 +341,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Hallowed_Soldier_VENwg7xEFcYObjmT.json b/src/packs/adversaries/adversary_Hallowed_Soldier_VENwg7xEFcYObjmT.json index 95a2ecd0..6a131c86 100644 --- a/src/packs/adversaries/adversary_Hallowed_Soldier_VENwg7xEFcYObjmT.json +++ b/src/packs/adversaries/adversary_Hallowed_Soldier_VENwg7xEFcYObjmT.json @@ -65,8 +65,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -93,7 +93,7 @@ }, "base": false } - ] + } }, "img": "icons/skills/melee/sword-shield-stylized-white.webp", "type": "attack", diff --git a/src/packs/adversaries/adversary_Harrier_uRtghKE9mHlII4rs.json b/src/packs/adversaries/adversary_Harrier_uRtghKE9mHlII4rs.json index 89d82a0b..84034a7e 100644 --- a/src/packs/adversaries/adversary_Harrier_uRtghKE9mHlII4rs.json +++ b/src/packs/adversaries/adversary_Harrier_uRtghKE9mHlII4rs.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/polearms/spear-hooked-rounded.webp", "type": "attack", @@ -278,8 +278,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -305,7 +305,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Head_Guard_mK3A5FTx6k8iPU3F.json b/src/packs/adversaries/adversary_Head_Guard_mK3A5FTx6k8iPU3F.json index 75afed49..f0c050a9 100644 --- a/src/packs/adversaries/adversary_Head_Guard_mK3A5FTx6k8iPU3F.json +++ b/src/packs/adversaries/adversary_Head_Guard_mK3A5FTx6k8iPU3F.json @@ -85,8 +85,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -112,7 +112,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -258,7 +258,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -398,8 +398,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -425,7 +425,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Head_Vampire_i2UNbRvgyoSs07M6.json b/src/packs/adversaries/adversary_Head_Vampire_i2UNbRvgyoSs07M6.json index d5891359..322e4658 100644 --- a/src/packs/adversaries/adversary_Head_Vampire_i2UNbRvgyoSs07M6.json +++ b/src/packs/adversaries/adversary_Head_Vampire_i2UNbRvgyoSs07M6.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -244,8 +244,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -270,7 +270,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -322,7 +322,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -394,8 +394,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -420,7 +420,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -542,8 +542,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -568,7 +568,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_High_Seraph_r1mbfSSwKWdcFdAU.json b/src/packs/adversaries/adversary_High_Seraph_r1mbfSSwKWdcFdAU.json index 60fe1917..3dc96fd5 100644 --- a/src/packs/adversaries/adversary_High_Seraph_r1mbfSSwKWdcFdAU.json +++ b/src/packs/adversaries/adversary_High_Seraph_r1mbfSSwKWdcFdAU.json @@ -80,8 +80,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "img": "icons/skills/melee/strike-blade-hooked-orange-blue.webp", "type": "attack", @@ -466,8 +466,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -493,7 +493,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Huge_Green_Ooze_6hbqmxDXFOzZJDk4.json b/src/packs/adversaries/adversary_Huge_Green_Ooze_6hbqmxDXFOzZJDk4.json index db00c5e6..1615dec8 100644 --- a/src/packs/adversaries/adversary_Huge_Green_Ooze_6hbqmxDXFOzZJDk4.json +++ b/src/packs/adversaries/adversary_Huge_Green_Ooze_6hbqmxDXFOzZJDk4.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -274,8 +274,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "armor": { "value": { "custom": { "enabled": true, @@ -300,7 +300,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -352,8 +352,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -378,7 +378,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Hydra_MI126iMOOobQ1Obn.json b/src/packs/adversaries/adversary_Hydra_MI126iMOOobQ1Obn.json index a12aaad8..7e71af98 100644 --- a/src/packs/adversaries/adversary_Hydra_MI126iMOOobQ1Obn.json +++ b/src/packs/adversaries/adversary_Hydra_MI126iMOOobQ1Obn.json @@ -75,8 +75,8 @@ }, "range": "close", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -300,8 +300,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -326,7 +326,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -394,8 +394,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -420,7 +420,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Bandit_5Lh1T0zaT8Pkr2U2.json b/src/packs/adversaries/adversary_Jagged_Knife_Bandit_5Lh1T0zaT8Pkr2U2.json index ae359eaf..bfbff494 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Bandit_5Lh1T0zaT8Pkr2U2.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Bandit_5Lh1T0zaT8Pkr2U2.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/daggers/dagger-twin-green.webp", "type": "attack", @@ -272,8 +272,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -299,7 +299,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json b/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json index e56f7af5..c6b2554e 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json @@ -80,8 +80,8 @@ }, "img": "icons/weapons/staves/staff-blue-jewel.webp", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -347,8 +347,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -374,7 +374,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json b/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json index d8115fd9..3ce6a165 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json @@ -85,8 +85,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -112,7 +112,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -277,7 +277,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Lackey_C0OMQqV7pN6t7ouR.json b/src/packs/adversaries/adversary_Jagged_Knife_Lackey_C0OMQqV7pN6t7ouR.json index a52ec1c9..cfcdea8b 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Lackey_C0OMQqV7pN6t7ouR.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Lackey_C0OMQqV7pN6t7ouR.json @@ -64,8 +64,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -92,7 +92,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Lieutenant_aTljstqteGoLpCBq.json b/src/packs/adversaries/adversary_Jagged_Knife_Lieutenant_aTljstqteGoLpCBq.json index c139d76f..8820f30c 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Lieutenant_aTljstqteGoLpCBq.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Lieutenant_aTljstqteGoLpCBq.json @@ -80,8 +80,8 @@ }, "range": "close", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -364,8 +364,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -391,7 +391,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -416,7 +416,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -491,8 +491,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -518,7 +518,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Shadow_XF4tYTq9nPJAy2ox.json b/src/packs/adversaries/adversary_Jagged_Knife_Shadow_XF4tYTq9nPJAy2ox.json index bca035c1..81b95d8b 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Shadow_XF4tYTq9nPJAy2ox.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Shadow_XF4tYTq9nPJAy2ox.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -246,8 +246,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -273,7 +273,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Sniper_1zuyof1XuIfi3aMG.json b/src/packs/adversaries/adversary_Jagged_Knife_Sniper_1zuyof1XuIfi3aMG.json index 6fd02cb5..62253d69 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Sniper_1zuyof1XuIfi3aMG.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Sniper_1zuyof1XuIfi3aMG.json @@ -81,8 +81,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -108,7 +108,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -246,8 +246,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -273,7 +273,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Juvenile_Flickerfly_MYXmTx2FHcIjdfYZ.json b/src/packs/adversaries/adversary_Juvenile_Flickerfly_MYXmTx2FHcIjdfYZ.json index 86d69c37..562b42b8 100644 --- a/src/packs/adversaries/adversary_Juvenile_Flickerfly_MYXmTx2FHcIjdfYZ.json +++ b/src/packs/adversaries/adversary_Juvenile_Flickerfly_MYXmTx2FHcIjdfYZ.json @@ -75,8 +75,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -296,7 +296,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -417,7 +417,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -490,8 +490,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -516,7 +516,7 @@ }, "type": [] }, - { + "hope": { "value": { "custom": { "enabled": true, @@ -541,7 +541,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Knight_of_the_Realm_7ai2opemrclQe3VF.json b/src/packs/adversaries/adversary_Knight_of_the_Realm_7ai2opemrclQe3VF.json index 71cb7a8d..01435922 100644 --- a/src/packs/adversaries/adversary_Knight_of_the_Realm_7ai2opemrclQe3VF.json +++ b/src/packs/adversaries/adversary_Knight_of_the_Realm_7ai2opemrclQe3VF.json @@ -90,8 +90,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -117,7 +117,7 @@ }, "base": false } - ] + } }, "range": "melee", "type": "attack", @@ -392,8 +392,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -417,7 +417,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -442,7 +442,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Kraken_4nqv3ZwJGjnmic8j.json b/src/packs/adversaries/adversary_Kraken_4nqv3ZwJGjnmic8j.json index 6f6f6edc..4494e0e8 100644 --- a/src/packs/adversaries/adversary_Kraken_4nqv3ZwJGjnmic8j.json +++ b/src/packs/adversaries/adversary_Kraken_4nqv3ZwJGjnmic8j.json @@ -80,8 +80,8 @@ }, "range": "close", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/tentacles/tentacles-octopus-black-pink.webp", "type": "attack", @@ -327,7 +327,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -456,8 +456,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -483,7 +483,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -557,8 +557,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -584,7 +584,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Masked_Thief_niBpVU7yeo5ccskE.json b/src/packs/adversaries/adversary_Masked_Thief_niBpVU7yeo5ccskE.json index 3143fbe3..25740e52 100644 --- a/src/packs/adversaries/adversary_Masked_Thief_niBpVU7yeo5ccskE.json +++ b/src/packs/adversaries/adversary_Masked_Thief_niBpVU7yeo5ccskE.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "range": "melee", "type": "attack", @@ -244,8 +244,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -269,7 +269,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -342,7 +342,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Master_Assassin_dNta0cUzr96xcFhf.json b/src/packs/adversaries/adversary_Master_Assassin_dNta0cUzr96xcFhf.json index 3cec6e0b..2131023a 100644 --- a/src/packs/adversaries/adversary_Master_Assassin_dNta0cUzr96xcFhf.json +++ b/src/packs/adversaries/adversary_Master_Assassin_dNta0cUzr96xcFhf.json @@ -86,8 +86,8 @@ }, "range": "close", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -113,7 +113,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -254,8 +254,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false, @@ -283,7 +283,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, @@ -469,8 +469,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -496,7 +496,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Merchant_Al3w2CgjfdT3p9ma.json b/src/packs/adversaries/adversary_Merchant_Al3w2CgjfdT3p9ma.json index 880b1a6e..482ba727 100644 --- a/src/packs/adversaries/adversary_Merchant_Al3w2CgjfdT3p9ma.json +++ b/src/packs/adversaries/adversary_Merchant_Al3w2CgjfdT3p9ma.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/clubs/club-baton-blue.webp", "type": "attack", @@ -272,8 +272,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -298,7 +298,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Merchant_Baron_Vy02IhGhkJLuezu4.json b/src/packs/adversaries/adversary_Merchant_Baron_Vy02IhGhkJLuezu4.json index 15c0aeb9..7ace67ac 100644 --- a/src/packs/adversaries/adversary_Merchant_Baron_Vy02IhGhkJLuezu4.json +++ b/src/packs/adversaries/adversary_Merchant_Baron_Vy02IhGhkJLuezu4.json @@ -85,8 +85,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -112,7 +112,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -249,8 +249,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -275,7 +275,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json b/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json index 57dc2980..21564421 100644 --- a/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json +++ b/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json @@ -74,8 +74,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ }, "base": false } - ] + } }, "range": "close", "type": "attack", @@ -317,8 +317,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -343,7 +343,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -458,8 +458,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -485,7 +485,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -567,8 +567,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -594,7 +594,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Minor_Demon_3tqCjDwJAQ7JKqMb.json b/src/packs/adversaries/adversary_Minor_Demon_3tqCjDwJAQ7JKqMb.json index 0fceeba1..8f5f51f3 100644 --- a/src/packs/adversaries/adversary_Minor_Demon_3tqCjDwJAQ7JKqMb.json +++ b/src/packs/adversaries/adversary_Minor_Demon_3tqCjDwJAQ7JKqMb.json @@ -74,8 +74,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -299,8 +299,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -325,7 +325,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -385,8 +385,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -412,7 +412,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -544,8 +544,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -571,7 +571,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Minor_Fire_Elemental_DscWkNVoHak6P4hh.json b/src/packs/adversaries/adversary_Minor_Fire_Elemental_DscWkNVoHak6P4hh.json index 2980a141..0cc9703c 100644 --- a/src/packs/adversaries/adversary_Minor_Fire_Elemental_DscWkNVoHak6P4hh.json +++ b/src/packs/adversaries/adversary_Minor_Fire_Elemental_DscWkNVoHak6P4hh.json @@ -75,8 +75,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -297,8 +297,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -324,7 +324,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -405,8 +405,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -432,7 +432,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -511,8 +511,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -537,7 +537,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -578,8 +578,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -604,7 +604,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -674,8 +674,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -701,7 +701,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Minor_Treant_G62k4oSkhkoXEs2D.json b/src/packs/adversaries/adversary_Minor_Treant_G62k4oSkhkoXEs2D.json index f05ba5fc..b2217e66 100644 --- a/src/packs/adversaries/adversary_Minor_Treant_G62k4oSkhkoXEs2D.json +++ b/src/packs/adversaries/adversary_Minor_Treant_G62k4oSkhkoXEs2D.json @@ -66,8 +66,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -94,7 +94,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", diff --git a/src/packs/adversaries/adversary_Minotaur_Wrecker_rM9qCIYeWg9I0B4l.json b/src/packs/adversaries/adversary_Minotaur_Wrecker_rM9qCIYeWg9I0B4l.json index 85981374..b4734967 100644 --- a/src/packs/adversaries/adversary_Minotaur_Wrecker_rM9qCIYeWg9I0B4l.json +++ b/src/packs/adversaries/adversary_Minotaur_Wrecker_rM9qCIYeWg9I0B4l.json @@ -74,8 +74,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/axes/axe-double.webp", "type": "attack", @@ -300,8 +300,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -327,7 +327,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -373,8 +373,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -401,7 +401,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -454,8 +454,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -479,7 +479,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, diff --git a/src/packs/adversaries/adversary_Monarch_yx0vK2yfNVZKWUUi.json b/src/packs/adversaries/adversary_Monarch_yx0vK2yfNVZKWUUi.json index 5320a0ed..8d5845a9 100644 --- a/src/packs/adversaries/adversary_Monarch_yx0vK2yfNVZKWUUi.json +++ b/src/packs/adversaries/adversary_Monarch_yx0vK2yfNVZKWUUi.json @@ -85,8 +85,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -112,7 +112,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -381,8 +381,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": false, @@ -408,7 +408,7 @@ }, "type": [] } - ], + }, "includeBase": false, "direct": false }, diff --git a/src/packs/adversaries/adversary_Mortal_Hunter_mVV7a7KQAORoPMgZ.json b/src/packs/adversaries/adversary_Mortal_Hunter_mVV7a7KQAORoPMgZ.json index 01218718..2eaa9619 100644 --- a/src/packs/adversaries/adversary_Mortal_Hunter_mVV7a7KQAORoPMgZ.json +++ b/src/packs/adversaries/adversary_Mortal_Hunter_mVV7a7KQAORoPMgZ.json @@ -81,8 +81,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -108,7 +108,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -244,8 +244,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -270,7 +270,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -361,8 +361,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false, @@ -390,7 +390,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, @@ -518,7 +518,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -591,8 +591,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -618,7 +618,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Oak_Treant_XK78QUfY8c8Go8Uv.json b/src/packs/adversaries/adversary_Oak_Treant_XK78QUfY8c8Go8Uv.json index 1a109aa4..c5feed37 100644 --- a/src/packs/adversaries/adversary_Oak_Treant_XK78QUfY8c8Go8Uv.json +++ b/src/packs/adversaries/adversary_Oak_Treant_XK78QUfY8c8Go8Uv.json @@ -73,8 +73,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "multiplier": "flat", "flatMultiplier": 3, @@ -100,7 +100,7 @@ }, "base": false } - ] + } }, "img": "icons/skills/melee/blood-slash-foam-red.webp", "type": "attack", @@ -273,8 +273,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false, @@ -302,7 +302,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Oracle_of_Doom_befIqd5IYKg6eUz2.json b/src/packs/adversaries/adversary_Oracle_of_Doom_befIqd5IYKg6eUz2.json index 66fa5ba1..343cfdc1 100644 --- a/src/packs/adversaries/adversary_Oracle_of_Doom_befIqd5IYKg6eUz2.json +++ b/src/packs/adversaries/adversary_Oracle_of_Doom_befIqd5IYKg6eUz2.json @@ -80,8 +80,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "img": "icons/magic/symbols/rune-sigil-rough-white-teal.webp", "type": "attack", @@ -244,8 +244,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -270,7 +270,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -322,8 +322,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -348,7 +348,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -407,8 +407,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -434,7 +434,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -514,7 +514,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -620,8 +620,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -647,7 +647,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Outer_Realms_Abomination_A0SeeDzwjvqOsyof.json b/src/packs/adversaries/adversary_Outer_Realms_Abomination_A0SeeDzwjvqOsyof.json index 83edda8a..0f73354e 100644 --- a/src/packs/adversaries/adversary_Outer_Realms_Abomination_A0SeeDzwjvqOsyof.json +++ b/src/packs/adversaries/adversary_Outer_Realms_Abomination_A0SeeDzwjvqOsyof.json @@ -74,8 +74,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/tentacles/tentacle-earth-green.webp", "type": "attack", @@ -263,7 +263,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -384,7 +384,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -509,7 +509,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Outer_Realms_Corrupter_ms6nuOl3NFkhPj1k.json b/src/packs/adversaries/adversary_Outer_Realms_Corrupter_ms6nuOl3NFkhPj1k.json index 83fbf4fa..6c78dced 100644 --- a/src/packs/adversaries/adversary_Outer_Realms_Corrupter_ms6nuOl3NFkhPj1k.json +++ b/src/packs/adversaries/adversary_Outer_Realms_Corrupter_ms6nuOl3NFkhPj1k.json @@ -75,8 +75,8 @@ }, "img": "icons/creatures/tentacles/tentacles-thing-green.webp", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -238,8 +238,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -264,7 +264,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -316,8 +316,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -342,7 +342,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Outer_Realms_Thrall_moJhHgKqTKPS2WYS.json b/src/packs/adversaries/adversary_Outer_Realms_Thrall_moJhHgKqTKPS2WYS.json index 5347bf49..5a7a605a 100644 --- a/src/packs/adversaries/adversary_Outer_Realms_Thrall_moJhHgKqTKPS2WYS.json +++ b/src/packs/adversaries/adversary_Outer_Realms_Thrall_moJhHgKqTKPS2WYS.json @@ -60,8 +60,8 @@ }, "attack": { "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -88,7 +88,7 @@ }, "base": false } - ] + } }, "name": "Claws and Teeth", "roll": { diff --git a/src/packs/adversaries/adversary_Patchwork_Zombie_Hulk_EQTOAOUrkIvS2z88.json b/src/packs/adversaries/adversary_Patchwork_Zombie_Hulk_EQTOAOUrkIvS2z88.json index b63e8cb7..999f89b9 100644 --- a/src/packs/adversaries/adversary_Patchwork_Zombie_Hulk_EQTOAOUrkIvS2z88.json +++ b/src/packs/adversaries/adversary_Patchwork_Zombie_Hulk_EQTOAOUrkIvS2z88.json @@ -85,8 +85,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -112,7 +112,7 @@ }, "base": false } - ] + } }, "img": "icons/commodities/biological/hand-clawed-blue.webp", "type": "attack", @@ -252,8 +252,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -281,7 +281,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -360,8 +360,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -386,7 +386,7 @@ }, "type": [] }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -411,7 +411,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -487,8 +487,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -513,7 +513,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Perfected_Zombie_CP6iRfHdyFWniTHY.json b/src/packs/adversaries/adversary_Perfected_Zombie_CP6iRfHdyFWniTHY.json index 8174e9fd..a6ce78d5 100644 --- a/src/packs/adversaries/adversary_Perfected_Zombie_CP6iRfHdyFWniTHY.json +++ b/src/packs/adversaries/adversary_Perfected_Zombie_CP6iRfHdyFWniTHY.json @@ -75,8 +75,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -238,8 +238,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -264,7 +264,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -348,8 +348,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -375,7 +375,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Petty_Noble_wycLpvebWdUqRhpP.json b/src/packs/adversaries/adversary_Petty_Noble_wycLpvebWdUqRhpP.json index db284f40..bee77686 100644 --- a/src/packs/adversaries/adversary_Petty_Noble_wycLpvebWdUqRhpP.json +++ b/src/packs/adversaries/adversary_Petty_Noble_wycLpvebWdUqRhpP.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", diff --git a/src/packs/adversaries/adversary_Pirate_Captain_OROJbjsqagVh7ECV.json b/src/packs/adversaries/adversary_Pirate_Captain_OROJbjsqagVh7ECV.json index 5b00ec60..428a9607 100644 --- a/src/packs/adversaries/adversary_Pirate_Captain_OROJbjsqagVh7ECV.json +++ b/src/packs/adversaries/adversary_Pirate_Captain_OROJbjsqagVh7ECV.json @@ -85,8 +85,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -112,7 +112,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -251,8 +251,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -277,7 +277,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -401,8 +401,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": false @@ -426,7 +426,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -501,8 +501,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -528,7 +528,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Pirate_Raiders_5YgEajn0wa4i85kC.json b/src/packs/adversaries/adversary_Pirate_Raiders_5YgEajn0wa4i85kC.json index 41f79b49..94137c2f 100644 --- a/src/packs/adversaries/adversary_Pirate_Raiders_5YgEajn0wa4i85kC.json +++ b/src/packs/adversaries/adversary_Pirate_Raiders_5YgEajn0wa4i85kC.json @@ -74,8 +74,8 @@ "description": "

Seafaring scoundrels moving in a ravaging pack.

", "attack": { "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ "resultBased": false, "base": false } - ] + } }, "name": "Cutlass", "img": "icons/weapons/swords/scimitar-worn-blue.webp", @@ -272,8 +272,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -298,7 +298,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Pirate_Tough_mhcVkVFrzIJ18FDm.json b/src/packs/adversaries/adversary_Pirate_Tough_mhcVkVFrzIJ18FDm.json index 69b59211..2817b191 100644 --- a/src/packs/adversaries/adversary_Pirate_Tough_mhcVkVFrzIJ18FDm.json +++ b/src/packs/adversaries/adversary_Pirate_Tough_mhcVkVFrzIJ18FDm.json @@ -67,8 +67,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -94,7 +94,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", @@ -269,8 +269,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -295,7 +295,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -347,8 +347,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -374,7 +374,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json b/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json index cd8a44b6..f74da475 100644 --- a/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json +++ b/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/slimes/slime-movement-dripping-pseudopods-green.webp", "type": "attack", @@ -272,8 +272,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -299,7 +299,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -350,8 +350,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -377,7 +377,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Rotted_Zombie_gP3fWTLzSFnpA8EJ.json b/src/packs/adversaries/adversary_Rotted_Zombie_gP3fWTLzSFnpA8EJ.json index 7672961c..6755d27f 100644 --- a/src/packs/adversaries/adversary_Rotted_Zombie_gP3fWTLzSFnpA8EJ.json +++ b/src/packs/adversaries/adversary_Rotted_Zombie_gP3fWTLzSFnpA8EJ.json @@ -57,8 +57,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -85,7 +85,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/abilities/mouth-teeth-sharp.webp", "type": "attack", diff --git a/src/packs/adversaries/adversary_Royal_Advisor_EtLJiTsilPPZvLUX.json b/src/packs/adversaries/adversary_Royal_Advisor_EtLJiTsilPPZvLUX.json index 8593ec01..e215a444 100644 --- a/src/packs/adversaries/adversary_Royal_Advisor_EtLJiTsilPPZvLUX.json +++ b/src/packs/adversaries/adversary_Royal_Advisor_EtLJiTsilPPZvLUX.json @@ -86,8 +86,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -113,7 +113,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -249,8 +249,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -275,7 +275,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Secret_Keeper_sLAccjvCWfeedbpI.json b/src/packs/adversaries/adversary_Secret_Keeper_sLAccjvCWfeedbpI.json index d17c3f86..93bfef2c 100644 --- a/src/packs/adversaries/adversary_Secret_Keeper_sLAccjvCWfeedbpI.json +++ b/src/packs/adversaries/adversary_Secret_Keeper_sLAccjvCWfeedbpI.json @@ -85,8 +85,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -112,7 +112,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/staves/staff-ornate-purple.webp", "type": "attack", @@ -256,7 +256,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -336,8 +336,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -362,7 +362,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Sellsword_bgreCaQ6ap2DVpCr.json b/src/packs/adversaries/adversary_Sellsword_bgreCaQ6ap2DVpCr.json index 514be8f5..ed6d7775 100644 --- a/src/packs/adversaries/adversary_Sellsword_bgreCaQ6ap2DVpCr.json +++ b/src/packs/adversaries/adversary_Sellsword_bgreCaQ6ap2DVpCr.json @@ -61,8 +61,8 @@ "attack": { "name": "Longsword", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -89,7 +89,7 @@ }, "base": false } - ] + } }, "roll": { "bonus": 3, diff --git a/src/packs/adversaries/adversary_Shambling_Zombie_2nXz4ilAY4xuhKLm.json b/src/packs/adversaries/adversary_Shambling_Zombie_2nXz4ilAY4xuhKLm.json index 7c3925ac..5161f8e2 100644 --- a/src/packs/adversaries/adversary_Shambling_Zombie_2nXz4ilAY4xuhKLm.json +++ b/src/packs/adversaries/adversary_Shambling_Zombie_2nXz4ilAY4xuhKLm.json @@ -74,8 +74,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -266,8 +266,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -292,7 +292,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Shark_YmVAkdNsyuXWTtYp.json b/src/packs/adversaries/adversary_Shark_YmVAkdNsyuXWTtYp.json index e385a6c5..f9bad7ea 100644 --- a/src/packs/adversaries/adversary_Shark_YmVAkdNsyuXWTtYp.json +++ b/src/packs/adversaries/adversary_Shark_YmVAkdNsyuXWTtYp.json @@ -75,8 +75,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -238,8 +238,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -264,7 +264,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -316,8 +316,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -343,7 +343,7 @@ } } }, - { + "armor": { "value": { "custom": { "enabled": true, @@ -368,7 +368,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Siren_BK4jwyXSRx7IOQiO.json b/src/packs/adversaries/adversary_Siren_BK4jwyXSRx7IOQiO.json index 05ca67a9..38f77982 100644 --- a/src/packs/adversaries/adversary_Siren_BK4jwyXSRx7IOQiO.json +++ b/src/packs/adversaries/adversary_Siren_BK4jwyXSRx7IOQiO.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/abilities/mouth-teeth-sharp.webp", "range": "melee", @@ -244,8 +244,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -271,7 +271,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -350,7 +350,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Skeleton_Archer_7X5q7a6ueeHs5oA9.json b/src/packs/adversaries/adversary_Skeleton_Archer_7X5q7a6ueeHs5oA9.json index 9d837ac0..f0dde9f0 100644 --- a/src/packs/adversaries/adversary_Skeleton_Archer_7X5q7a6ueeHs5oA9.json +++ b/src/packs/adversaries/adversary_Skeleton_Archer_7X5q7a6ueeHs5oA9.json @@ -74,8 +74,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/bows/shortbow-leather.webp", "type": "attack", @@ -310,8 +310,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -337,7 +337,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Skeleton_Dredge_6l1a3Fazq8BoKIcc.json b/src/packs/adversaries/adversary_Skeleton_Dredge_6l1a3Fazq8BoKIcc.json index 4013d7fe..e4cbab5e 100644 --- a/src/packs/adversaries/adversary_Skeleton_Dredge_6l1a3Fazq8BoKIcc.json +++ b/src/packs/adversaries/adversary_Skeleton_Dredge_6l1a3Fazq8BoKIcc.json @@ -58,8 +58,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -86,7 +86,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", diff --git a/src/packs/adversaries/adversary_Skeleton_Knight_Q9LaVTyXF9NF12C7.json b/src/packs/adversaries/adversary_Skeleton_Knight_Q9LaVTyXF9NF12C7.json index 3c26dd28..8b2042f3 100644 --- a/src/packs/adversaries/adversary_Skeleton_Knight_Q9LaVTyXF9NF12C7.json +++ b/src/packs/adversaries/adversary_Skeleton_Knight_Q9LaVTyXF9NF12C7.json @@ -74,8 +74,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -240,8 +240,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -266,7 +266,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -326,8 +326,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -353,7 +353,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -378,7 +378,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -452,8 +452,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -479,7 +479,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Skeleton_Warrior_10YIQl0lvCJXZLfX.json b/src/packs/adversaries/adversary_Skeleton_Warrior_10YIQl0lvCJXZLfX.json index 28003d5c..726b06e1 100644 --- a/src/packs/adversaries/adversary_Skeleton_Warrior_10YIQl0lvCJXZLfX.json +++ b/src/packs/adversaries/adversary_Skeleton_Warrior_10YIQl0lvCJXZLfX.json @@ -73,8 +73,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -100,7 +100,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/swords/sword-guard-brass-worn.webp", "type": "attack", @@ -310,7 +310,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Spectral_Archer_5tCkhnBByUIN5UdG.json b/src/packs/adversaries/adversary_Spectral_Archer_5tCkhnBByUIN5UdG.json index e6cc30f7..5b9cbb65 100644 --- a/src/packs/adversaries/adversary_Spectral_Archer_5tCkhnBByUIN5UdG.json +++ b/src/packs/adversaries/adversary_Spectral_Archer_5tCkhnBByUIN5UdG.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "range": "far", "type": "attack", @@ -343,8 +343,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -370,7 +370,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Spectral_Captain_65cSO3EQEh6ZH6Xk.json b/src/packs/adversaries/adversary_Spectral_Captain_65cSO3EQEh6ZH6Xk.json index b70a5d53..0572e018 100644 --- a/src/packs/adversaries/adversary_Spectral_Captain_65cSO3EQEh6ZH6Xk.json +++ b/src/packs/adversaries/adversary_Spectral_Captain_65cSO3EQEh6ZH6Xk.json @@ -76,8 +76,8 @@ "name": "Longbow", "img": "icons/weapons/bows/longbow-recurve-skull-brown.webp", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -103,7 +103,7 @@ }, "base": false } - ] + } }, "roll": { "bonus": 3, @@ -456,8 +456,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -483,7 +483,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Spectral_Guardian_UFVGl1osOsJTneLf.json b/src/packs/adversaries/adversary_Spectral_Guardian_UFVGl1osOsJTneLf.json index 577a7d25..85893254 100644 --- a/src/packs/adversaries/adversary_Spectral_Guardian_UFVGl1osOsJTneLf.json +++ b/src/packs/adversaries/adversary_Spectral_Guardian_UFVGl1osOsJTneLf.json @@ -81,8 +81,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -108,7 +108,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -350,8 +350,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -377,7 +377,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -402,7 +402,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Spellblade_ldbWEL7uZs84vyrR.json b/src/packs/adversaries/adversary_Spellblade_ldbWEL7uZs84vyrR.json index 13d6ed84..90c7d68f 100644 --- a/src/packs/adversaries/adversary_Spellblade_ldbWEL7uZs84vyrR.json +++ b/src/packs/adversaries/adversary_Spellblade_ldbWEL7uZs84vyrR.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -108,7 +108,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -280,8 +280,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -307,7 +307,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -439,8 +439,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -466,7 +466,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Spy_8zlynOhnVA59KpKT.json b/src/packs/adversaries/adversary_Spy_8zlynOhnVA59KpKT.json index 5affdc44..0e160edb 100644 --- a/src/packs/adversaries/adversary_Spy_8zlynOhnVA59KpKT.json +++ b/src/packs/adversaries/adversary_Spy_8zlynOhnVA59KpKT.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/weapons/daggers/dagger-curved-purple.webp", "range": "melee", @@ -329,8 +329,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": false @@ -354,7 +354,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Stag_Knight_KGVwnLq85ywP9xvB.json b/src/packs/adversaries/adversary_Stag_Knight_KGVwnLq85ywP9xvB.json index 603182cc..e7738a46 100644 --- a/src/packs/adversaries/adversary_Stag_Knight_KGVwnLq85ywP9xvB.json +++ b/src/packs/adversaries/adversary_Stag_Knight_KGVwnLq85ywP9xvB.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -244,8 +244,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -271,7 +271,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -330,7 +330,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -410,8 +410,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -435,7 +435,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json b/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json index d04f41fd..c50c426d 100644 --- a/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json +++ b/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "range": "melee", "type": "attack", @@ -276,8 +276,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -301,7 +301,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -435,8 +435,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -462,7 +462,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -573,8 +573,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -600,7 +600,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Swarm_of_Rats_qNgs3AbLyJrY19nt.json b/src/packs/adversaries/adversary_Swarm_of_Rats_qNgs3AbLyJrY19nt.json index 014b3dc6..28d5dabe 100644 --- a/src/packs/adversaries/adversary_Swarm_of_Rats_qNgs3AbLyJrY19nt.json +++ b/src/packs/adversaries/adversary_Swarm_of_Rats_qNgs3AbLyJrY19nt.json @@ -68,8 +68,8 @@ "description": "

A skittering mass of ordinary rodents moving as one like a ravenous wave.

", "attack": { "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -95,7 +95,7 @@ "resultBased": false, "base": false } - ] + } }, "name": "Claws", "img": "icons/creatures/claws/claw-straight-brown.webp", diff --git a/src/packs/adversaries/adversary_Sylvan_Soldier_VtFBt9XBE0WrGGxP.json b/src/packs/adversaries/adversary_Sylvan_Soldier_VtFBt9XBE0WrGGxP.json index 2ec5e924..f3ce03c3 100644 --- a/src/packs/adversaries/adversary_Sylvan_Soldier_VtFBt9XBE0WrGGxP.json +++ b/src/packs/adversaries/adversary_Sylvan_Soldier_VtFBt9XBE0WrGGxP.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -246,8 +246,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -273,7 +273,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -353,8 +353,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -380,7 +380,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Tangle_Bramble_Swarm_PKSXFuaIHUCoH63A.json b/src/packs/adversaries/adversary_Tangle_Bramble_Swarm_PKSXFuaIHUCoH63A.json index 40297eb6..f8f93cf2 100644 --- a/src/packs/adversaries/adversary_Tangle_Bramble_Swarm_PKSXFuaIHUCoH63A.json +++ b/src/packs/adversaries/adversary_Tangle_Bramble_Swarm_PKSXFuaIHUCoH63A.json @@ -99,8 +99,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -126,7 +126,7 @@ "resultBased": false, "base": false } - ], + }, "includeBase": false }, "description": "", @@ -309,8 +309,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false, @@ -338,7 +338,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, diff --git a/src/packs/adversaries/adversary_Tangle_Bramble_XcAGOSmtCFLT1unN.json b/src/packs/adversaries/adversary_Tangle_Bramble_XcAGOSmtCFLT1unN.json index 33afaa3a..c36502de 100644 --- a/src/packs/adversaries/adversary_Tangle_Bramble_XcAGOSmtCFLT1unN.json +++ b/src/packs/adversaries/adversary_Tangle_Bramble_XcAGOSmtCFLT1unN.json @@ -94,8 +94,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -122,7 +122,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json b/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json index 2b3867aa..9470502c 100644 --- a/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json +++ b/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json @@ -57,8 +57,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -84,7 +84,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/slimes/slime-movement-dripping-pseudopods-green.webp", "type": "attack", @@ -234,8 +234,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "armor": { "value": { "custom": { "enabled": true, @@ -260,7 +260,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Tiny_Red_Ooze_1fkLQXVtmILqfJ44.json b/src/packs/adversaries/adversary_Tiny_Red_Ooze_1fkLQXVtmILqfJ44.json index 116fffba..28d6490e 100644 --- a/src/packs/adversaries/adversary_Tiny_Red_Ooze_1fkLQXVtmILqfJ44.json +++ b/src/packs/adversaries/adversary_Tiny_Red_Ooze_1fkLQXVtmILqfJ44.json @@ -58,8 +58,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -85,7 +85,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -236,8 +236,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -263,7 +263,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Treant_Sapling_o63nS0k3wHu6EgKP.json b/src/packs/adversaries/adversary_Treant_Sapling_o63nS0k3wHu6EgKP.json index ad9d8107..c6c11d36 100644 --- a/src/packs/adversaries/adversary_Treant_Sapling_o63nS0k3wHu6EgKP.json +++ b/src/packs/adversaries/adversary_Treant_Sapling_o63nS0k3wHu6EgKP.json @@ -66,8 +66,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -94,7 +94,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", diff --git a/src/packs/adversaries/adversary_Vampire_WWyUp6Mxl1S3KYUG.json b/src/packs/adversaries/adversary_Vampire_WWyUp6Mxl1S3KYUG.json index 4f51cd79..6ba4935a 100644 --- a/src/packs/adversaries/adversary_Vampire_WWyUp6Mxl1S3KYUG.json +++ b/src/packs/adversaries/adversary_Vampire_WWyUp6Mxl1S3KYUG.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -244,8 +244,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -269,7 +269,7 @@ } } }, - { + "hope": { "value": { "custom": { "enabled": true, @@ -294,7 +294,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -319,7 +319,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Vault_Guardian_Gaoler_JqYraOqNmmhHk4Yy.json b/src/packs/adversaries/adversary_Vault_Guardian_Gaoler_JqYraOqNmmhHk4Yy.json index 24db9c55..97c493a8 100644 --- a/src/packs/adversaries/adversary_Vault_Guardian_Gaoler_JqYraOqNmmhHk4Yy.json +++ b/src/packs/adversaries/adversary_Vault_Guardian_Gaoler_JqYraOqNmmhHk4Yy.json @@ -75,8 +75,8 @@ }, "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -270,7 +270,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Vault_Guardian_Sentinel_FVgYb28fhxlVcGwA.json b/src/packs/adversaries/adversary_Vault_Guardian_Sentinel_FVgYb28fhxlVcGwA.json index e4098e93..d4fa0340 100644 --- a/src/packs/adversaries/adversary_Vault_Guardian_Sentinel_FVgYb28fhxlVcGwA.json +++ b/src/packs/adversaries/adversary_Vault_Guardian_Sentinel_FVgYb28fhxlVcGwA.json @@ -75,8 +75,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -373,8 +373,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -400,7 +400,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -474,8 +474,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -501,7 +501,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Vault_Guardian_Turret_c5hGdvY5UnSjlHws.json b/src/packs/adversaries/adversary_Vault_Guardian_Turret_c5hGdvY5UnSjlHws.json index ab683607..d723df80 100644 --- a/src/packs/adversaries/adversary_Vault_Guardian_Turret_c5hGdvY5UnSjlHws.json +++ b/src/packs/adversaries/adversary_Vault_Guardian_Turret_c5hGdvY5UnSjlHws.json @@ -74,8 +74,8 @@ }, "range": "far", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -101,7 +101,7 @@ }, "base": false } - ] + } }, "img": "icons/commodities/tech/metal-joint.webp", "type": "attack", @@ -429,8 +429,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -456,7 +456,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Volcanic_Dragon__Ashen_Tyrant_pMuXGCSOQaxpi5tb.json b/src/packs/adversaries/adversary_Volcanic_Dragon__Ashen_Tyrant_pMuXGCSOQaxpi5tb.json index baf84c14..f6a8bc84 100644 --- a/src/packs/adversaries/adversary_Volcanic_Dragon__Ashen_Tyrant_pMuXGCSOQaxpi5tb.json +++ b/src/packs/adversaries/adversary_Volcanic_Dragon__Ashen_Tyrant_pMuXGCSOQaxpi5tb.json @@ -67,8 +67,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -94,7 +94,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", @@ -451,8 +451,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -477,7 +477,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -529,8 +529,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -556,7 +556,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -581,7 +581,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -710,8 +710,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -737,7 +737,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Volcanic_Dragon__Molten_Scourge_eArAPuB38CNR0ZIM.json b/src/packs/adversaries/adversary_Volcanic_Dragon__Molten_Scourge_eArAPuB38CNR0ZIM.json index c73b0dda..25c8b637 100644 --- a/src/packs/adversaries/adversary_Volcanic_Dragon__Molten_Scourge_eArAPuB38CNR0ZIM.json +++ b/src/packs/adversaries/adversary_Volcanic_Dragon__Molten_Scourge_eArAPuB38CNR0ZIM.json @@ -67,8 +67,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -94,7 +94,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", @@ -359,8 +359,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -386,7 +386,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -459,8 +459,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -486,7 +486,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -566,7 +566,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -612,8 +612,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -639,7 +639,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": false @@ -663,7 +663,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -791,8 +791,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -818,7 +818,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, @@ -857,7 +857,37 @@ "system": { "description": "

When the @Lookup[@name] marks their last HP, replace them with the @UUID[Compendium.daggerheart.adversaries.Actor.pMuXGCSOQaxpi5tb]{Ashen Tyrant} and immediately spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "cFqFjemAfAjB0OB0": { + "type": "transform", + "_id": "cFqFjemAfAjB0OB0", + "systemPath": "actions", + "baseAction": false, + "description": "", + "chatDisplay": true, + "originItem": { + "type": "itemCollection" + }, + "actionType": "action", + "triggers": [], + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "transform": { + "actorUUID": "Compendium.daggerheart.adversaries.Actor.pMuXGCSOQaxpi5tb", + "resourceRefresh": { + "hitPoints": true, + "stress": true + } + }, + "name": "Transform", + "range": "" + } + }, "originItemType": null, "originId": null, "featureForm": "reaction" diff --git a/src/packs/adversaries/adversary_Volcanic_Dragon__Obsidian_Predator_ladm7wykhZczYzrQ.json b/src/packs/adversaries/adversary_Volcanic_Dragon__Obsidian_Predator_ladm7wykhZczYzrQ.json index 2e2adbdd..227efccc 100644 --- a/src/packs/adversaries/adversary_Volcanic_Dragon__Obsidian_Predator_ladm7wykhZczYzrQ.json +++ b/src/packs/adversaries/adversary_Volcanic_Dragon__Obsidian_Predator_ladm7wykhZczYzrQ.json @@ -67,8 +67,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -94,7 +94,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", @@ -465,8 +465,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -490,7 +490,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -607,8 +607,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -634,7 +634,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -659,7 +659,7 @@ }, "type": [] }, - { + "hope": { "value": { "custom": { "enabled": true, @@ -684,7 +684,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -742,7 +742,37 @@ "system": { "description": "

When the @Lookup[@name] marks their last HP, replace them with the @UUID[Compendium.daggerheart.adversaries.Actor.eArAPuB38CNR0ZIM]{Molten Scourge} and immediately spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "OxGkCGgIl4vGFufD": { + "type": "transform", + "_id": "OxGkCGgIl4vGFufD", + "systemPath": "actions", + "baseAction": false, + "description": "", + "chatDisplay": true, + "originItem": { + "type": "itemCollection" + }, + "actionType": "action", + "triggers": [], + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "transform": { + "actorUUID": "Compendium.daggerheart.adversaries.Actor.eArAPuB38CNR0ZIM", + "resourceRefresh": { + "hitPoints": true, + "stress": true + } + }, + "name": "Transform", + "range": "" + } + }, "originItemType": null, "originId": null, "featureForm": "reaction" diff --git a/src/packs/adversaries/adversary_War_Wizard_noDdT0tsN6FXSmC8.json b/src/packs/adversaries/adversary_War_Wizard_noDdT0tsN6FXSmC8.json index f087c63d..55be8e1a 100644 --- a/src/packs/adversaries/adversary_War_Wizard_noDdT0tsN6FXSmC8.json +++ b/src/packs/adversaries/adversary_War_Wizard_noDdT0tsN6FXSmC8.json @@ -86,8 +86,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -113,7 +113,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -367,8 +367,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -394,7 +394,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -474,8 +474,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -501,7 +501,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -574,8 +574,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -601,7 +601,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json b/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json index 55c7cb23..8eaf56f9 100644 --- a/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json +++ b/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json @@ -75,8 +75,8 @@ "img": "icons/weapons/swords/greatsword-guard-gold-worn.webp", "range": "veryClose", "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -102,7 +102,7 @@ }, "base": false } - ] + } }, "type": "attack", "chatDisplay": false @@ -240,8 +240,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -267,7 +267,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -416,8 +416,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -442,7 +442,7 @@ }, "type": [] }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -467,7 +467,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -537,8 +537,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -564,7 +564,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json b/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json index d097f765..9d7f66d0 100644 --- a/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json +++ b/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json @@ -80,8 +80,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ }, "base": false } - ] + } }, "type": "attack", "range": "melee", @@ -253,7 +253,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -440,8 +440,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -467,7 +467,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json b/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json index 751d73b4..09e76fa8 100644 --- a/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json +++ b/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json @@ -79,8 +79,8 @@ "type": "attack" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -106,7 +106,7 @@ }, "base": false } - ] + } }, "img": "icons/creatures/claws/claw-scaled-red.webp", "type": "attack", @@ -302,8 +302,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -328,7 +328,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -412,8 +412,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -439,7 +439,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -563,7 +563,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -691,8 +691,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -717,7 +717,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -831,8 +831,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -858,7 +858,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/adversaries/adversary_Zombie_Legion_YhJrP7rTBiRdX5Fp.json b/src/packs/adversaries/adversary_Zombie_Legion_YhJrP7rTBiRdX5Fp.json index 91bdab81..2c3495ff 100644 --- a/src/packs/adversaries/adversary_Zombie_Legion_YhJrP7rTBiRdX5Fp.json +++ b/src/packs/adversaries/adversary_Zombie_Legion_YhJrP7rTBiRdX5Fp.json @@ -68,8 +68,8 @@ "motivesAndTactics": "Consume brain, shred fl esh, surround", "attack": { "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -95,7 +95,7 @@ "resultBased": false, "base": false } - ] + } }, "name": "Undead Hands", "roll": { diff --git a/src/packs/adversaries/adversary_Zombie_Pack_Nf0v43rtflV56V2T.json b/src/packs/adversaries/adversary_Zombie_Pack_Nf0v43rtflV56V2T.json index 017537ad..f418758a 100644 --- a/src/packs/adversaries/adversary_Zombie_Pack_Nf0v43rtflV56V2T.json +++ b/src/packs/adversaries/adversary_Zombie_Pack_Nf0v43rtflV56V2T.json @@ -68,8 +68,8 @@ "description": "

A group of shambling corpses instinctively moving together.

", "attack": { "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -95,7 +95,7 @@ "resultBased": false, "base": false } - ] + } }, "name": "Bite", "roll": { diff --git a/src/packs/ancestries/feature_Charge_AA2CZlJSWW8GPhrR.json b/src/packs/ancestries/feature_Charge_AA2CZlJSWW8GPhrR.json index f1f7ae35..0af2610a 100644 --- a/src/packs/ancestries/feature_Charge_AA2CZlJSWW8GPhrR.json +++ b/src/packs/ancestries/feature_Charge_AA2CZlJSWW8GPhrR.json @@ -29,8 +29,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -56,7 +56,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json b/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json index 71ac4438..a660daf5 100644 --- a/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json +++ b/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json @@ -22,8 +22,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -47,7 +47,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/ancestries/feature_Fungril_Network_9tmeXm623hl4Qnws.json b/src/packs/ancestries/feature_Fungril_Network_9tmeXm623hl4Qnws.json index 9d970a67..87638f37 100644 --- a/src/packs/ancestries/feature_Fungril_Network_9tmeXm623hl4Qnws.json +++ b/src/packs/ancestries/feature_Fungril_Network_9tmeXm623hl4Qnws.json @@ -22,7 +22,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/ancestries/feature_Kick_gpW19TfJk0WWFh1S.json b/src/packs/ancestries/feature_Kick_gpW19TfJk0WWFh1S.json index 89546ded..b363b6c2 100644 --- a/src/packs/ancestries/feature_Kick_gpW19TfJk0WWFh1S.json +++ b/src/packs/ancestries/feature_Kick_gpW19TfJk0WWFh1S.json @@ -31,8 +31,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false, @@ -58,7 +58,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/ancestries/feature_Long_Tongue_oWbdlh51ajn1Q5kL.json b/src/packs/ancestries/feature_Long_Tongue_oWbdlh51ajn1Q5kL.json index aee64a9a..1f1156d7 100644 --- a/src/packs/ancestries/feature_Long_Tongue_oWbdlh51ajn1Q5kL.json +++ b/src/packs/ancestries/feature_Long_Tongue_oWbdlh51ajn1Q5kL.json @@ -29,8 +29,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -54,7 +54,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/ancestries/feature_Luckbringer_8O6SQQMxKWr430QA.json b/src/packs/ancestries/feature_Luckbringer_8O6SQQMxKWr430QA.json index 3c31d62d..36fd73fb 100644 --- a/src/packs/ancestries/feature_Luckbringer_8O6SQQMxKWr430QA.json +++ b/src/packs/ancestries/feature_Luckbringer_8O6SQQMxKWr430QA.json @@ -22,8 +22,8 @@ "recovery": "session" }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -48,7 +48,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/ancestries/feature_Retracting_Claws_Zj69cAeb3NjIa8Hn.json b/src/packs/ancestries/feature_Retracting_Claws_Zj69cAeb3NjIa8Hn.json index 6338548e..b9b000f4 100644 --- a/src/packs/ancestries/feature_Retracting_Claws_Zj69cAeb3NjIa8Hn.json +++ b/src/packs/ancestries/feature_Retracting_Claws_Zj69cAeb3NjIa8Hn.json @@ -22,7 +22,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/ancestries/feature_Tusks_YhxD1ujZpftPu19w.json b/src/packs/ancestries/feature_Tusks_YhxD1ujZpftPu19w.json index 5bd72773..6038f2c6 100644 --- a/src/packs/ancestries/feature_Tusks_YhxD1ujZpftPu19w.json +++ b/src/packs/ancestries/feature_Tusks_YhxD1ujZpftPu19w.json @@ -31,8 +31,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false, @@ -58,7 +58,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/ancestries/feature_Unshakeable_G5pE8FW94V1W9jJx.json b/src/packs/ancestries/feature_Unshakeable_G5pE8FW94V1W9jJx.json index 195b10e8..bf0a241b 100644 --- a/src/packs/ancestries/feature_Unshakeable_G5pE8FW94V1W9jJx.json +++ b/src/packs/ancestries/feature_Unshakeable_G5pE8FW94V1W9jJx.json @@ -22,7 +22,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json b/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json index acc7df36..43ba16a8 100644 --- a/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json +++ b/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json @@ -27,8 +27,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -52,7 +52,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json b/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json index d99a6ab7..a81eb8af 100644 --- a/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json +++ b/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json @@ -27,7 +27,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json b/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json index 4dc2c0f7..531b30ea 100644 --- a/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json +++ b/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json @@ -27,8 +27,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -54,7 +54,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json b/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json index 230f6470..4f0ea6c3 100644 --- a/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json +++ b/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json @@ -27,8 +27,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -52,7 +52,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json b/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json index 6bfafa79..429b5a1a 100644 --- a/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json +++ b/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json @@ -20,7 +20,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json b/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json index 3b39707d..923e43bd 100644 --- a/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json +++ b/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json @@ -20,7 +20,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json b/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json index 28095ea9..a3494ed0 100644 --- a/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json +++ b/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json @@ -27,8 +27,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -53,7 +53,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json b/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json index 9e3a3d93..7cd48d25 100644 --- a/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json +++ b/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json @@ -20,7 +20,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/classes/feature_Frontline_Tank_YS1g7YdWwOaS629x.json b/src/packs/classes/feature_Frontline_Tank_YS1g7YdWwOaS629x.json index 7b7be61a..81fd08cc 100644 --- a/src/packs/classes/feature_Frontline_Tank_YS1g7YdWwOaS629x.json +++ b/src/packs/classes/feature_Frontline_Tank_YS1g7YdWwOaS629x.json @@ -29,8 +29,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "armor": { "value": { "custom": { "enabled": true, @@ -55,7 +55,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/classes/feature_Life_Support_lSlvSUHbOoX36q2j.json b/src/packs/classes/feature_Life_Support_lSlvSUHbOoX36q2j.json index 9c4fc450..b788f1f4 100644 --- a/src/packs/classes/feature_Life_Support_lSlvSUHbOoX36q2j.json +++ b/src/packs/classes/feature_Life_Support_lSlvSUHbOoX36q2j.json @@ -31,8 +31,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -57,7 +57,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/classes/feature_Minor_Illusion_cshTYdtz9yoXYYB3.json b/src/packs/classes/feature_Minor_Illusion_cshTYdtz9yoXYYB3.json index fe18f68b..5f4d5fe7 100644 --- a/src/packs/classes/feature_Minor_Illusion_cshTYdtz9yoXYYB3.json +++ b/src/packs/classes/feature_Minor_Illusion_cshTYdtz9yoXYYB3.json @@ -23,7 +23,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/classes/feature_Strange_Patterns_6YsfFjmCGuFYVhT4.json b/src/packs/classes/feature_Strange_Patterns_6YsfFjmCGuFYVhT4.json index 953b3a2c..ce1f499f 100644 --- a/src/packs/classes/feature_Strange_Patterns_6YsfFjmCGuFYVhT4.json +++ b/src/packs/classes/feature_Strange_Patterns_6YsfFjmCGuFYVhT4.json @@ -29,8 +29,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -55,7 +55,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_A_Soldier_s_Bond_Y08dLFuPXsgeRrHi.json b/src/packs/domains/domainCard_A_Soldier_s_Bond_Y08dLFuPXsgeRrHi.json index d3da85b6..09255a76 100644 --- a/src/packs/domains/domainCard_A_Soldier_s_Bond_Y08dLFuPXsgeRrHi.json +++ b/src/packs/domains/domainCard_A_Soldier_s_Bond_Y08dLFuPXsgeRrHi.json @@ -25,8 +25,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -51,7 +51,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Arcane_Reflection_JzSvxy9Mu3RJp1jV.json b/src/packs/domains/domainCard_Arcane_Reflection_JzSvxy9Mu3RJp1jV.json index e6d38e3f..e557b8cd 100644 --- a/src/packs/domains/domainCard_Arcane_Reflection_JzSvxy9Mu3RJp1jV.json +++ b/src/packs/domains/domainCard_Arcane_Reflection_JzSvxy9Mu3RJp1jV.json @@ -33,7 +33,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Armorer_cy8GjBPGc9w9RaGO.json b/src/packs/domains/domainCard_Armorer_cy8GjBPGc9w9RaGO.json index aa9910dc..059fb24c 100644 --- a/src/packs/domains/domainCard_Armorer_cy8GjBPGc9w9RaGO.json +++ b/src/packs/domains/domainCard_Armorer_cy8GjBPGc9w9RaGO.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "armor": { "value": { "custom": { "enabled": true, @@ -50,7 +50,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Banish_AIbHfryMA2Rvs1ut.json b/src/packs/domains/domainCard_Banish_AIbHfryMA2Rvs1ut.json index b637a622..e3c23dbf 100644 --- a/src/packs/domains/domainCard_Banish_AIbHfryMA2Rvs1ut.json +++ b/src/packs/domains/domainCard_Banish_AIbHfryMA2Rvs1ut.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Battle_Cry_Ef1JsUG50LIoKx2F.json b/src/packs/domains/domainCard_Battle_Cry_Ef1JsUG50LIoKx2F.json index 432f9992..c9ae6071 100644 --- a/src/packs/domains/domainCard_Battle_Cry_Ef1JsUG50LIoKx2F.json +++ b/src/packs/domains/domainCard_Battle_Cry_Ef1JsUG50LIoKx2F.json @@ -25,8 +25,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -51,7 +51,7 @@ }, "type": [] }, - { + "hope": { "value": { "custom": { "enabled": true, @@ -76,7 +76,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Battle_Hardened_NeEOghgfyDUBTwBG.json b/src/packs/domains/domainCard_Battle_Hardened_NeEOghgfyDUBTwBG.json index dfd0c68d..852cd329 100644 --- a/src/packs/domains/domainCard_Battle_Hardened_NeEOghgfyDUBTwBG.json +++ b/src/packs/domains/domainCard_Battle_Hardened_NeEOghgfyDUBTwBG.json @@ -25,8 +25,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -51,7 +51,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Blink_Out_Qu0iA4s3Xov10Erd.json b/src/packs/domains/domainCard_Blink_Out_Qu0iA4s3Xov10Erd.json index 0b96d99c..617bd27b 100644 --- a/src/packs/domains/domainCard_Blink_Out_Qu0iA4s3Xov10Erd.json +++ b/src/packs/domains/domainCard_Blink_Out_Qu0iA4s3Xov10Erd.json @@ -33,7 +33,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Bolt_Beacon_BNevJyGk7hmN7XOY.json b/src/packs/domains/domainCard_Bolt_Beacon_BNevJyGk7hmN7XOY.json index c1964896..df7d36a4 100644 --- a/src/packs/domains/domainCard_Bolt_Beacon_BNevJyGk7hmN7XOY.json +++ b/src/packs/domains/domainCard_Bolt_Beacon_BNevJyGk7hmN7XOY.json @@ -33,8 +33,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -58,7 +58,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Ava_YtZzYBtR0yLPPA93.json b/src/packs/domains/domainCard_Book_of_Ava_YtZzYBtR0yLPPA93.json index 8c531bcd..7977e56a 100644 --- a/src/packs/domains/domainCard_Book_of_Ava_YtZzYBtR0yLPPA93.json +++ b/src/packs/domains/domainCard_Book_of_Ava_YtZzYBtR0yLPPA93.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -51,7 +51,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -131,7 +131,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -177,8 +177,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -204,7 +204,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Exota_oVs2MSC6Uf5GbgEG.json b/src/packs/domains/domainCard_Book_of_Exota_oVs2MSC6Uf5GbgEG.json index 032a2de2..d228d04b 100644 --- a/src/packs/domains/domainCard_Book_of_Exota_oVs2MSC6Uf5GbgEG.json +++ b/src/packs/domains/domainCard_Book_of_Exota_oVs2MSC6Uf5GbgEG.json @@ -25,7 +25,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -100,8 +100,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -127,7 +127,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json b/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json index 05276707..d84a8e18 100644 --- a/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json +++ b/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json @@ -76,8 +76,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -103,7 +103,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Homet_gFMx08ogQ8hS2Obi.json b/src/packs/domains/domainCard_Book_of_Homet_gFMx08ogQ8hS2Obi.json index a0102739..f6f048d1 100644 --- a/src/packs/domains/domainCard_Book_of_Homet_gFMx08ogQ8hS2Obi.json +++ b/src/packs/domains/domainCard_Book_of_Homet_gFMx08ogQ8hS2Obi.json @@ -25,7 +25,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -72,7 +72,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Illiat_df4iRqQzRntrF6Qw.json b/src/packs/domains/domainCard_Book_of_Illiat_df4iRqQzRntrF6Qw.json index 71ce49f6..b34fa000 100644 --- a/src/packs/domains/domainCard_Book_of_Illiat_df4iRqQzRntrF6Qw.json +++ b/src/packs/domains/domainCard_Book_of_Illiat_df4iRqQzRntrF6Qw.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -82,8 +82,8 @@ "recovery": "shortRest" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -107,7 +107,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json b/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json index 5bef4922..d97c514b 100644 --- a/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json +++ b/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -77,7 +77,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -130,8 +130,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -157,7 +157,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json b/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json index 05d0a219..f32f380a 100644 --- a/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json +++ b/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "resultBased": false, "value": { "custom": { @@ -50,7 +50,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -101,8 +101,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -128,7 +128,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Ronin_SZMNR3uGNinJcN4N.json b/src/packs/domains/domainCard_Book_of_Ronin_SZMNR3uGNinJcN4N.json index c809a8e0..88bb759d 100644 --- a/src/packs/domains/domainCard_Book_of_Ronin_SZMNR3uGNinJcN4N.json +++ b/src/packs/domains/domainCard_Book_of_Ronin_SZMNR3uGNinJcN4N.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -75,7 +75,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Sitil_eq8VNqYMRHhF9xw9.json b/src/packs/domains/domainCard_Book_of_Sitil_eq8VNqYMRHhF9xw9.json index e88ccea9..16b7a63b 100644 --- a/src/packs/domains/domainCard_Book_of_Sitil_eq8VNqYMRHhF9xw9.json +++ b/src/packs/domains/domainCard_Book_of_Sitil_eq8VNqYMRHhF9xw9.json @@ -85,7 +85,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Tyfar_1VXzwRbvbBj5bd5V.json b/src/packs/domains/domainCard_Book_of_Tyfar_1VXzwRbvbBj5bd5V.json index 5e5cb054..37b71b9c 100644 --- a/src/packs/domains/domainCard_Book_of_Tyfar_1VXzwRbvbBj5bd5V.json +++ b/src/packs/domains/domainCard_Book_of_Tyfar_1VXzwRbvbBj5bd5V.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -51,7 +51,7 @@ } } }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -76,7 +76,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -144,7 +144,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -153,9 +153,9 @@ }, "effects": [], "roll": { - "type": null, + "type": "spellcast", "trait": null, - "difficulty": null, + "difficulty": 13, "bonus": null, "advState": "neutral", "diceRolling": { diff --git a/src/packs/domains/domainCard_Book_of_Vagras_aknDDYtN7EObv94t.json b/src/packs/domains/domainCard_Book_of_Vagras_aknDDYtN7EObv94t.json index eadd1550..a5764f48 100644 --- a/src/packs/domains/domainCard_Book_of_Vagras_aknDDYtN7EObv94t.json +++ b/src/packs/domains/domainCard_Book_of_Vagras_aknDDYtN7EObv94t.json @@ -25,7 +25,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -79,7 +79,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -125,7 +125,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Vyola_VOIgm2j2Ijszwc5m.json b/src/packs/domains/domainCard_Book_of_Vyola_VOIgm2j2Ijszwc5m.json index b94cd702..522a8f7c 100644 --- a/src/packs/domains/domainCard_Book_of_Vyola_VOIgm2j2Ijszwc5m.json +++ b/src/packs/domains/domainCard_Book_of_Vyola_VOIgm2j2Ijszwc5m.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json b/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json index 4e08fb0e..17eb4223 100644 --- a/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json +++ b/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json b/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json index 682357cc..c2bf721f 100644 --- a/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json +++ b/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json @@ -33,8 +33,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -60,7 +60,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -107,8 +107,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -134,7 +134,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Champion_s_Edge_rnejRbUQsNGX1GMC.json b/src/packs/domains/domainCard_Champion_s_Edge_rnejRbUQsNGX1GMC.json index be639515..304541e4 100644 --- a/src/packs/domains/domainCard_Champion_s_Edge_rnejRbUQsNGX1GMC.json +++ b/src/packs/domains/domainCard_Champion_s_Edge_rnejRbUQsNGX1GMC.json @@ -33,8 +33,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -59,7 +59,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -109,8 +109,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "armor": { "value": { "custom": { "enabled": true, @@ -135,7 +135,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -185,8 +185,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -213,7 +213,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Chokehold_R5GYUalYXLLFRlNl.json b/src/packs/domains/domainCard_Chokehold_R5GYUalYXLLFRlNl.json index 587e7855..73424902 100644 --- a/src/packs/domains/domainCard_Chokehold_R5GYUalYXLLFRlNl.json +++ b/src/packs/domains/domainCard_Chokehold_R5GYUalYXLLFRlNl.json @@ -65,7 +65,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Cinder_Grasp_5EP2Lgf7ojfrc0Is.json b/src/packs/domains/domainCard_Cinder_Grasp_5EP2Lgf7ojfrc0Is.json index 5ffab1e2..e3df986e 100644 --- a/src/packs/domains/domainCard_Cinder_Grasp_5EP2Lgf7ojfrc0Is.json +++ b/src/packs/domains/domainCard_Cinder_Grasp_5EP2Lgf7ojfrc0Is.json @@ -25,8 +25,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -52,7 +52,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -104,8 +104,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -131,7 +131,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Confusing_Aura_R8NDiJXJWmC48WSr.json b/src/packs/domains/domainCard_Confusing_Aura_R8NDiJXJWmC48WSr.json index 859635f3..a261da89 100644 --- a/src/packs/domains/domainCard_Confusing_Aura_R8NDiJXJWmC48WSr.json +++ b/src/packs/domains/domainCard_Confusing_Aura_R8NDiJXJWmC48WSr.json @@ -25,7 +25,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -80,7 +80,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json b/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json index ededde93..d1d1789d 100644 --- a/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json +++ b/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json @@ -31,7 +31,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -119,8 +119,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -148,7 +148,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Corrosive_Projectile_qJaSNTuDfbPVr8Lb.json b/src/packs/domains/domainCard_Corrosive_Projectile_qJaSNTuDfbPVr8Lb.json index 064bf277..5ff2ce3f 100644 --- a/src/packs/domains/domainCard_Corrosive_Projectile_qJaSNTuDfbPVr8Lb.json +++ b/src/packs/domains/domainCard_Corrosive_Projectile_qJaSNTuDfbPVr8Lb.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -49,7 +49,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Counterspell_6dhqo1kzGxejCjHa.json b/src/packs/domains/domainCard_Counterspell_6dhqo1kzGxejCjHa.json index 7d3a74c9..a8d403d8 100644 --- a/src/packs/domains/domainCard_Counterspell_6dhqo1kzGxejCjHa.json +++ b/src/packs/domains/domainCard_Counterspell_6dhqo1kzGxejCjHa.json @@ -25,7 +25,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Critical_Inspiration_ABp9pUfBS69NomTD.json b/src/packs/domains/domainCard_Critical_Inspiration_ABp9pUfBS69NomTD.json index c8013a14..252878ea 100644 --- a/src/packs/domains/domainCard_Critical_Inspiration_ABp9pUfBS69NomTD.json +++ b/src/packs/domains/domainCard_Critical_Inspiration_ABp9pUfBS69NomTD.json @@ -24,7 +24,7 @@ "recovery": "longRest" }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Dark_Whispers_yL2qrSWmTwXVOySH.json b/src/packs/domains/domainCard_Dark_Whispers_yL2qrSWmTwXVOySH.json index 390a2526..7d8ecf40 100644 --- a/src/packs/domains/domainCard_Dark_Whispers_yL2qrSWmTwXVOySH.json +++ b/src/packs/domains/domainCard_Dark_Whispers_yL2qrSWmTwXVOySH.json @@ -31,7 +31,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json b/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json index 6e7c6b64..214dae17 100644 --- a/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json +++ b/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -75,8 +75,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "resultBased": false, "value": { "custom": { @@ -101,7 +101,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -152,8 +152,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -179,7 +179,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Disintegration_Wave_kja5qvh4rdeDBB96.json b/src/packs/domains/domainCard_Disintegration_Wave_kja5qvh4rdeDBB96.json index 4e3c3083..7d7ed27d 100644 --- a/src/packs/domains/domainCard_Disintegration_Wave_kja5qvh4rdeDBB96.json +++ b/src/packs/domains/domainCard_Disintegration_Wave_kja5qvh4rdeDBB96.json @@ -25,7 +25,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Earthquake_C0qLOwSSvZ6PG3Ws.json b/src/packs/domains/domainCard_Earthquake_C0qLOwSSvZ6PG3Ws.json index 614f7e32..0a35c95f 100644 --- a/src/packs/domains/domainCard_Earthquake_C0qLOwSSvZ6PG3Ws.json +++ b/src/packs/domains/domainCard_Earthquake_C0qLOwSSvZ6PG3Ws.json @@ -34,8 +34,8 @@ "consumeOnSuccess": true }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -61,7 +61,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json b/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json index bd080f0d..c797a148 100644 --- a/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json +++ b/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json @@ -25,7 +25,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -76,8 +76,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -102,7 +102,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Encore_klahWDFwihqqEhXP.json b/src/packs/domains/domainCard_Encore_klahWDFwihqqEhXP.json index 23358d47..fabc00e1 100644 --- a/src/packs/domains/domainCard_Encore_klahWDFwihqqEhXP.json +++ b/src/packs/domains/domainCard_Encore_klahWDFwihqqEhXP.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Enrapture_a8lFiKX1o8T924ze.json b/src/packs/domains/domainCard_Enrapture_a8lFiKX1o8T924ze.json index dc574dec..284682fa 100644 --- a/src/packs/domains/domainCard_Enrapture_a8lFiKX1o8T924ze.json +++ b/src/packs/domains/domainCard_Enrapture_a8lFiKX1o8T924ze.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -82,8 +82,8 @@ "recovery": "shortRest" }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -108,7 +108,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json b/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json index ee36e25d..05496132 100644 --- a/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json +++ b/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json @@ -33,8 +33,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -59,7 +59,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Final_Words_Nbw6Jnh1vRZzwHQI.json b/src/packs/domains/domainCard_Final_Words_Nbw6Jnh1vRZzwHQI.json index 757a705a..65d7dd83 100644 --- a/src/packs/domains/domainCard_Final_Words_Nbw6Jnh1vRZzwHQI.json +++ b/src/packs/domains/domainCard_Final_Words_Nbw6Jnh1vRZzwHQI.json @@ -25,7 +25,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Flight_54GUjNuBEy7xdzMz.json b/src/packs/domains/domainCard_Flight_54GUjNuBEy7xdzMz.json index bd8744f7..4d1355ee 100644 --- a/src/packs/domains/domainCard_Flight_54GUjNuBEy7xdzMz.json +++ b/src/packs/domains/domainCard_Flight_54GUjNuBEy7xdzMz.json @@ -25,7 +25,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Forager_06UapZuaA5S6fAKl.json b/src/packs/domains/domainCard_Forager_06UapZuaA5S6fAKl.json index 292961b8..e8919d6b 100644 --- a/src/packs/domains/domainCard_Forager_06UapZuaA5S6fAKl.json +++ b/src/packs/domains/domainCard_Forager_06UapZuaA5S6fAKl.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -50,7 +50,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -91,8 +91,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -117,7 +117,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -185,8 +185,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -211,7 +211,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Forest_Sprites_JrkUMTzaFmQNBHVm.json b/src/packs/domains/domainCard_Forest_Sprites_JrkUMTzaFmQNBHVm.json index feb095a2..4fa469a6 100644 --- a/src/packs/domains/domainCard_Forest_Sprites_JrkUMTzaFmQNBHVm.json +++ b/src/packs/domains/domainCard_Forest_Sprites_JrkUMTzaFmQNBHVm.json @@ -32,7 +32,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Glancing_Blow_nCNCqSH7UgW4O3To.json b/src/packs/domains/domainCard_Glancing_Blow_nCNCqSH7UgW4O3To.json index 70338c03..a0766c1c 100644 --- a/src/packs/domains/domainCard_Glancing_Blow_nCNCqSH7UgW4O3To.json +++ b/src/packs/domains/domainCard_Glancing_Blow_nCNCqSH7UgW4O3To.json @@ -33,7 +33,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Glyph_of_Nightfall_B5HXqYRJiL3xMNKT.json b/src/packs/domains/domainCard_Glyph_of_Nightfall_B5HXqYRJiL3xMNKT.json index 3c17d4ee..35100187 100644 --- a/src/packs/domains/domainCard_Glyph_of_Nightfall_B5HXqYRJiL3xMNKT.json +++ b/src/packs/domains/domainCard_Glyph_of_Nightfall_B5HXqYRJiL3xMNKT.json @@ -32,7 +32,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Goad_Them_On_HufF5KzuNfEb9RTi.json b/src/packs/domains/domainCard_Goad_Them_On_HufF5KzuNfEb9RTi.json index 190028ed..db28b8b5 100644 --- a/src/packs/domains/domainCard_Goad_Them_On_HufF5KzuNfEb9RTi.json +++ b/src/packs/domains/domainCard_Goad_Them_On_HufF5KzuNfEb9RTi.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "resultBased": false, "value": { "custom": { @@ -50,7 +50,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Gore_and_Glory_3zvjgZ5Od343wHzx.json b/src/packs/domains/domainCard_Gore_and_Glory_3zvjgZ5Od343wHzx.json index 8151beaa..ff648409 100644 --- a/src/packs/domains/domainCard_Gore_and_Glory_3zvjgZ5Od343wHzx.json +++ b/src/packs/domains/domainCard_Gore_and_Glory_3zvjgZ5Od343wHzx.json @@ -25,8 +25,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -51,7 +51,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -93,8 +93,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -119,7 +119,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Grace_Touched_KAuNb51AwhD8KEXk.json b/src/packs/domains/domainCard_Grace_Touched_KAuNb51AwhD8KEXk.json index 346a81f2..2e48f07b 100644 --- a/src/packs/domains/domainCard_Grace_Touched_KAuNb51AwhD8KEXk.json +++ b/src/packs/domains/domainCard_Grace_Touched_KAuNb51AwhD8KEXk.json @@ -53,8 +53,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -79,7 +79,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json b/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json index 56387c50..5663c6b3 100644 --- a/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json +++ b/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json @@ -31,8 +31,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -58,7 +58,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json b/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json index 0f60cc32..d918d49f 100644 --- a/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json +++ b/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json @@ -33,8 +33,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -59,7 +59,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -117,8 +117,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -143,7 +143,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Healing_Hands_WTlhnQMajc1r8i50.json b/src/packs/domains/domainCard_Healing_Hands_WTlhnQMajc1r8i50.json index 1245fc4b..c771562c 100644 --- a/src/packs/domains/domainCard_Healing_Hands_WTlhnQMajc1r8i50.json +++ b/src/packs/domains/domainCard_Healing_Hands_WTlhnQMajc1r8i50.json @@ -25,7 +25,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -85,8 +85,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -111,7 +111,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -161,8 +161,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -187,7 +187,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -237,8 +237,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -263,7 +263,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -313,8 +313,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -339,7 +339,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Healing_Strike_XtSc0jIJLOoMTMYS.json b/src/packs/domains/domainCard_Healing_Strike_XtSc0jIJLOoMTMYS.json index 26fab1a9..22f7f2c9 100644 --- a/src/packs/domains/domainCard_Healing_Strike_XtSc0jIJLOoMTMYS.json +++ b/src/packs/domains/domainCard_Healing_Strike_XtSc0jIJLOoMTMYS.json @@ -33,8 +33,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -59,7 +59,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Hush_gwmYasmfgXZ7tFS6.json b/src/packs/domains/domainCard_Hush_gwmYasmfgXZ7tFS6.json index 23b9588d..28c41c7e 100644 --- a/src/packs/domains/domainCard_Hush_gwmYasmfgXZ7tFS6.json +++ b/src/packs/domains/domainCard_Hush_gwmYasmfgXZ7tFS6.json @@ -32,7 +32,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json b/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json index ffa0226d..15a59635 100644 --- a/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json +++ b/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json @@ -25,8 +25,8 @@ "consumeOnSuccess": true }, "damage": { - "parts": [ - { + "parts": { + "stress": { "resultBased": false, "value": { "custom": { @@ -51,7 +51,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_I_See_It_Coming_Kp6RejHGimnuoBom.json b/src/packs/domains/domainCard_I_See_It_Coming_Kp6RejHGimnuoBom.json index 8d5f6536..5fa005b6 100644 --- a/src/packs/domains/domainCard_I_See_It_Coming_Kp6RejHGimnuoBom.json +++ b/src/packs/domains/domainCard_I_See_It_Coming_Kp6RejHGimnuoBom.json @@ -33,7 +33,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Inspirational_Words_cWu1o82ZF7GvnbXc.json b/src/packs/domains/domainCard_Inspirational_Words_cWu1o82ZF7GvnbXc.json index 0c28d499..b1f15298 100644 --- a/src/packs/domains/domainCard_Inspirational_Words_cWu1o82ZF7GvnbXc.json +++ b/src/packs/domains/domainCard_Inspirational_Words_cWu1o82ZF7GvnbXc.json @@ -41,8 +41,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -67,7 +67,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -117,8 +117,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -143,7 +143,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -193,8 +193,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -219,7 +219,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Invigoration_X8OfkEoI5gLTRf1B.json b/src/packs/domains/domainCard_Invigoration_X8OfkEoI5gLTRf1B.json index 658e12fd..e3c5436c 100644 --- a/src/packs/domains/domainCard_Invigoration_X8OfkEoI5gLTRf1B.json +++ b/src/packs/domains/domainCard_Invigoration_X8OfkEoI5gLTRf1B.json @@ -33,7 +33,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Invisibility_KHkzA4Zrw8EWN1CH.json b/src/packs/domains/domainCard_Invisibility_KHkzA4Zrw8EWN1CH.json index be46b1c3..5f67ff74 100644 --- a/src/packs/domains/domainCard_Invisibility_KHkzA4Zrw8EWN1CH.json +++ b/src/packs/domains/domainCard_Invisibility_KHkzA4Zrw8EWN1CH.json @@ -32,7 +32,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Know_Thy_Enemy_O38MQMhJWdZnXi6b.json b/src/packs/domains/domainCard_Know_Thy_Enemy_O38MQMhJWdZnXi6b.json index 12308e6b..44885c23 100644 --- a/src/packs/domains/domainCard_Know_Thy_Enemy_O38MQMhJWdZnXi6b.json +++ b/src/packs/domains/domainCard_Know_Thy_Enemy_O38MQMhJWdZnXi6b.json @@ -33,7 +33,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Lean_on_Me_BdePs1ZWpZTZvY1Z.json b/src/packs/domains/domainCard_Lean_on_Me_BdePs1ZWpZTZvY1Z.json index 883e2522..ae8c5b82 100644 --- a/src/packs/domains/domainCard_Lean_on_Me_BdePs1ZWpZTZvY1Z.json +++ b/src/packs/domains/domainCard_Lean_on_Me_BdePs1ZWpZTZvY1Z.json @@ -24,8 +24,8 @@ "recovery": "longRest" }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -50,7 +50,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json b/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json index 6e4b4654..02f20956 100644 --- a/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json +++ b/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json @@ -33,7 +33,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json b/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json index d4df379e..7e925700 100644 --- a/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json +++ b/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -82,8 +82,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -108,7 +108,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Mending_Touch_TGjR4vJVNbQRV8zr.json b/src/packs/domains/domainCard_Mending_Touch_TGjR4vJVNbQRV8zr.json index 4cb8c2a2..60367dcc 100644 --- a/src/packs/domains/domainCard_Mending_Touch_TGjR4vJVNbQRV8zr.json +++ b/src/packs/domains/domainCard_Mending_Touch_TGjR4vJVNbQRV8zr.json @@ -33,8 +33,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -59,7 +59,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -109,8 +109,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -135,7 +135,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -194,8 +194,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -220,7 +220,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -279,8 +279,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -305,7 +305,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Midnight_Spirit_FXLsB3QbQvTtqX5B.json b/src/packs/domains/domainCard_Midnight_Spirit_FXLsB3QbQvTtqX5B.json index f97fe53d..f951054e 100644 --- a/src/packs/domains/domainCard_Midnight_Spirit_FXLsB3QbQvTtqX5B.json +++ b/src/packs/domains/domainCard_Midnight_Spirit_FXLsB3QbQvTtqX5B.json @@ -60,8 +60,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -87,7 +87,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Midnight_Touched_uSyGKVxOJcnp28po.json b/src/packs/domains/domainCard_Midnight_Touched_uSyGKVxOJcnp28po.json index 10c42418..b859aafb 100644 --- a/src/packs/domains/domainCard_Midnight_Touched_uSyGKVxOJcnp28po.json +++ b/src/packs/domains/domainCard_Midnight_Touched_uSyGKVxOJcnp28po.json @@ -24,8 +24,8 @@ "recovery": "shortRest" }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -50,7 +50,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Natural_Familiar_Tag303LoRNC5zGgl.json b/src/packs/domains/domainCard_Natural_Familiar_Tag303LoRNC5zGgl.json index 7aa85b0f..c14116d4 100644 --- a/src/packs/domains/domainCard_Natural_Familiar_Tag303LoRNC5zGgl.json +++ b/src/packs/domains/domainCard_Natural_Familiar_Tag303LoRNC5zGgl.json @@ -59,7 +59,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Nature_s_Tongue_atWLorlCOxcrq8WB.json b/src/packs/domains/domainCard_Nature_s_Tongue_atWLorlCOxcrq8WB.json index c722954b..b6c9464a 100644 --- a/src/packs/domains/domainCard_Nature_s_Tongue_atWLorlCOxcrq8WB.json +++ b/src/packs/domains/domainCard_Nature_s_Tongue_atWLorlCOxcrq8WB.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json b/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json index 59a0c924..d40b1c43 100644 --- a/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json +++ b/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json @@ -24,7 +24,7 @@ "recovery": "longRest" }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -84,8 +84,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -109,7 +109,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Onslaught_I7pNsQ9Yx6mRJX4V.json b/src/packs/domains/domainCard_Onslaught_I7pNsQ9Yx6mRJX4V.json index d2d7361d..5122ec4b 100644 --- a/src/packs/domains/domainCard_Onslaught_I7pNsQ9Yx6mRJX4V.json +++ b/src/packs/domains/domainCard_Onslaught_I7pNsQ9Yx6mRJX4V.json @@ -33,7 +33,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Overwhelming_Aura_iEBLySZD9z8CLdz7.json b/src/packs/domains/domainCard_Overwhelming_Aura_iEBLySZD9z8CLdz7.json index 1b0173d7..9aa2f5b4 100644 --- a/src/packs/domains/domainCard_Overwhelming_Aura_iEBLySZD9z8CLdz7.json +++ b/src/packs/domains/domainCard_Overwhelming_Aura_iEBLySZD9z8CLdz7.json @@ -33,7 +33,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Plant_Dominion_9a6xP5pxhVvdugk9.json b/src/packs/domains/domainCard_Plant_Dominion_9a6xP5pxhVvdugk9.json index 64b1e1c2..4b4767fa 100644 --- a/src/packs/domains/domainCard_Plant_Dominion_9a6xP5pxhVvdugk9.json +++ b/src/packs/domains/domainCard_Plant_Dominion_9a6xP5pxhVvdugk9.json @@ -25,7 +25,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Preservation_Blast_1p1cOmbnRd5CoKBp.json b/src/packs/domains/domainCard_Preservation_Blast_1p1cOmbnRd5CoKBp.json index 46dc2bdb..5470c340 100644 --- a/src/packs/domains/domainCard_Preservation_Blast_1p1cOmbnRd5CoKBp.json +++ b/src/packs/domains/domainCard_Preservation_Blast_1p1cOmbnRd5CoKBp.json @@ -25,8 +25,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -52,7 +52,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json b/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json index 839dc2c2..080dd67f 100644 --- a/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json +++ b/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json @@ -31,8 +31,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -56,7 +56,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -102,8 +102,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -127,7 +127,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Reaper_s_Strike_MCgNRlh0s5XUPCfl.json b/src/packs/domains/domainCard_Reaper_s_Strike_MCgNRlh0s5XUPCfl.json index f4feebbb..3bb8accd 100644 --- a/src/packs/domains/domainCard_Reaper_s_Strike_MCgNRlh0s5XUPCfl.json +++ b/src/packs/domains/domainCard_Reaper_s_Strike_MCgNRlh0s5XUPCfl.json @@ -33,7 +33,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json b/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json index 25c991c2..11e15a0b 100644 --- a/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json +++ b/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json @@ -25,8 +25,8 @@ "consumeOnSuccess": true }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -50,7 +50,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Restoration_wUQFsRtww18naYaq.json b/src/packs/domains/domainCard_Restoration_wUQFsRtww18naYaq.json index 8d4d7695..a83044a0 100644 --- a/src/packs/domains/domainCard_Restoration_wUQFsRtww18naYaq.json +++ b/src/packs/domains/domainCard_Restoration_wUQFsRtww18naYaq.json @@ -42,8 +42,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -68,7 +68,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -119,8 +119,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -145,7 +145,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Resurrection_z30ciOwQI7g3tHla.json b/src/packs/domains/domainCard_Resurrection_z30ciOwQI7g3tHla.json index 82b1b4fa..b7faa7ae 100644 --- a/src/packs/domains/domainCard_Resurrection_z30ciOwQI7g3tHla.json +++ b/src/packs/domains/domainCard_Resurrection_z30ciOwQI7g3tHla.json @@ -25,7 +25,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -72,7 +72,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Rift_Walker_vd5STqX29RpYbGxa.json b/src/packs/domains/domainCard_Rift_Walker_vd5STqX29RpYbGxa.json index c112e373..163cd293 100644 --- a/src/packs/domains/domainCard_Rift_Walker_vd5STqX29RpYbGxa.json +++ b/src/packs/domains/domainCard_Rift_Walker_vd5STqX29RpYbGxa.json @@ -25,7 +25,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Rise_Up_oDIZoC4l19Nli0Fj.json b/src/packs/domains/domainCard_Rise_Up_oDIZoC4l19Nli0Fj.json index 38c900b2..5d46562d 100644 --- a/src/packs/domains/domainCard_Rise_Up_oDIZoC4l19Nli0Fj.json +++ b/src/packs/domains/domainCard_Rise_Up_oDIZoC4l19Nli0Fj.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -50,7 +50,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Rune_Ward_GEhBUmv9Bj7oJfHk.json b/src/packs/domains/domainCard_Rune_Ward_GEhBUmv9Bj7oJfHk.json index 54b0edbb..01515230 100644 --- a/src/packs/domains/domainCard_Rune_Ward_GEhBUmv9Bj7oJfHk.json +++ b/src/packs/domains/domainCard_Rune_Ward_GEhBUmv9Bj7oJfHk.json @@ -31,7 +31,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json b/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json index c7aeb02f..3f81c8ac 100644 --- a/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json +++ b/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json @@ -33,8 +33,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -59,7 +59,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Second_Wind_ffPbSEvLuFrFsMxl.json b/src/packs/domains/domainCard_Second_Wind_ffPbSEvLuFrFsMxl.json index 8dc535cc..764a3c87 100644 --- a/src/packs/domains/domainCard_Second_Wind_ffPbSEvLuFrFsMxl.json +++ b/src/packs/domains/domainCard_Second_Wind_ffPbSEvLuFrFsMxl.json @@ -34,8 +34,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -60,7 +60,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -111,8 +111,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -137,7 +137,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Sensory_Projection_gZOMzskSOfeiXn54.json b/src/packs/domains/domainCard_Sensory_Projection_gZOMzskSOfeiXn54.json index 2701b0ce..c0aea3df 100644 --- a/src/packs/domains/domainCard_Sensory_Projection_gZOMzskSOfeiXn54.json +++ b/src/packs/domains/domainCard_Sensory_Projection_gZOMzskSOfeiXn54.json @@ -25,7 +25,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json b/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json index 39139dfa..0fc6ce4b 100644 --- a/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json +++ b/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Shrug_It_Off_JwfhtgmmuRxg4zhI.json b/src/packs/domains/domainCard_Shrug_It_Off_JwfhtgmmuRxg4zhI.json index 7cabf19d..3e757308 100644 --- a/src/packs/domains/domainCard_Shrug_It_Off_JwfhtgmmuRxg4zhI.json +++ b/src/packs/domains/domainCard_Shrug_It_Off_JwfhtgmmuRxg4zhI.json @@ -32,7 +32,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Soothing_Speech_QED2PDYePOSTbLtC.json b/src/packs/domains/domainCard_Soothing_Speech_QED2PDYePOSTbLtC.json index daecba3b..b7ef626d 100644 --- a/src/packs/domains/domainCard_Soothing_Speech_QED2PDYePOSTbLtC.json +++ b/src/packs/domains/domainCard_Soothing_Speech_QED2PDYePOSTbLtC.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -50,7 +50,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -91,8 +91,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -117,7 +117,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Splintering_Strike_TYKfM3H9vBXyWiH4.json b/src/packs/domains/domainCard_Splintering_Strike_TYKfM3H9vBXyWiH4.json index e36c744c..a63fd477 100644 --- a/src/packs/domains/domainCard_Splintering_Strike_TYKfM3H9vBXyWiH4.json +++ b/src/packs/domains/domainCard_Splintering_Strike_TYKfM3H9vBXyWiH4.json @@ -33,7 +33,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json b/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json index f9b86bd0..2f66c1f0 100644 --- a/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json +++ b/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json @@ -33,8 +33,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -60,7 +60,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -112,8 +112,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -139,7 +139,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Swift_Step_H6TqCJBaa1eWEQ1z.json b/src/packs/domains/domainCard_Swift_Step_H6TqCJBaa1eWEQ1z.json index bd153045..76e9e6e9 100644 --- a/src/packs/domains/domainCard_Swift_Step_H6TqCJBaa1eWEQ1z.json +++ b/src/packs/domains/domainCard_Swift_Step_H6TqCJBaa1eWEQ1z.json @@ -25,8 +25,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -51,7 +51,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -93,8 +93,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -119,7 +119,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Telekinesis_FgzBppvLjXr0UbUI.json b/src/packs/domains/domainCard_Telekinesis_FgzBppvLjXr0UbUI.json index f80954e7..0436b1aa 100644 --- a/src/packs/domains/domainCard_Telekinesis_FgzBppvLjXr0UbUI.json +++ b/src/packs/domains/domainCard_Telekinesis_FgzBppvLjXr0UbUI.json @@ -25,7 +25,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -72,8 +72,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -99,7 +99,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Teleport_HnPwVrWblYa9hwSt.json b/src/packs/domains/domainCard_Teleport_HnPwVrWblYa9hwSt.json index b4563eac..ff262d6f 100644 --- a/src/packs/domains/domainCard_Teleport_HnPwVrWblYa9hwSt.json +++ b/src/packs/domains/domainCard_Teleport_HnPwVrWblYa9hwSt.json @@ -24,7 +24,7 @@ "recovery": "longRest" }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Tell_No_Lies_HTv9QEPS466WsstP.json b/src/packs/domains/domainCard_Tell_No_Lies_HTv9QEPS466WsstP.json index f1056dfc..1efb1374 100644 --- a/src/packs/domains/domainCard_Tell_No_Lies_HTv9QEPS466WsstP.json +++ b/src/packs/domains/domainCard_Tell_No_Lies_HTv9QEPS466WsstP.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "resultBased": false, "value": { "custom": { @@ -50,7 +50,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json b/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json index 7d587b02..3599017c 100644 --- a/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json +++ b/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -51,7 +51,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -102,8 +102,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -129,7 +129,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -180,8 +180,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -207,7 +207,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Thought_Delver_B4choj481tqajWb9.json b/src/packs/domains/domainCard_Thought_Delver_B4choj481tqajWb9.json index 0dbc078d..7c8d6235 100644 --- a/src/packs/domains/domainCard_Thought_Delver_B4choj481tqajWb9.json +++ b/src/packs/domains/domainCard_Thought_Delver_B4choj481tqajWb9.json @@ -58,7 +58,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json b/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json index d7d984d1..4696c144 100644 --- a/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json +++ b/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json @@ -41,8 +41,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -68,7 +68,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Troublemaker_JrdZedm1BFKeV7Yb.json b/src/packs/domains/domainCard_Troublemaker_JrdZedm1BFKeV7Yb.json index 9d740283..161c499f 100644 --- a/src/packs/domains/domainCard_Troublemaker_JrdZedm1BFKeV7Yb.json +++ b/src/packs/domains/domainCard_Troublemaker_JrdZedm1BFKeV7Yb.json @@ -25,8 +25,8 @@ "consumeOnSuccess": true }, "damage": { - "parts": [ - { + "parts": { + "stress": { "resultBased": false, "value": { "custom": { @@ -51,7 +51,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Twilight_Toll_SDjjV61TC1NceV1m.json b/src/packs/domains/domainCard_Twilight_Toll_SDjjV61TC1NceV1m.json index a6a987dd..cc7f45c7 100644 --- a/src/packs/domains/domainCard_Twilight_Toll_SDjjV61TC1NceV1m.json +++ b/src/packs/domains/domainCard_Twilight_Toll_SDjjV61TC1NceV1m.json @@ -40,8 +40,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -65,7 +65,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Unbreakable_CUIQmrPjf9VCHmwJ.json b/src/packs/domains/domainCard_Unbreakable_CUIQmrPjf9VCHmwJ.json index e4847ee4..b822b632 100644 --- a/src/packs/domains/domainCard_Unbreakable_CUIQmrPjf9VCHmwJ.json +++ b/src/packs/domains/domainCard_Unbreakable_CUIQmrPjf9VCHmwJ.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Uncanny_Disguise_TV56wSysbU5xAlOa.json b/src/packs/domains/domainCard_Uncanny_Disguise_TV56wSysbU5xAlOa.json index 46d9c472..62953005 100644 --- a/src/packs/domains/domainCard_Uncanny_Disguise_TV56wSysbU5xAlOa.json +++ b/src/packs/domains/domainCard_Uncanny_Disguise_TV56wSysbU5xAlOa.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Unleash_Chaos_o62i0QdbUDIiAhSq.json b/src/packs/domains/domainCard_Unleash_Chaos_o62i0QdbUDIiAhSq.json index 62bd00a0..69049d01 100644 --- a/src/packs/domains/domainCard_Unleash_Chaos_o62i0QdbUDIiAhSq.json +++ b/src/packs/domains/domainCard_Unleash_Chaos_o62i0QdbUDIiAhSq.json @@ -42,8 +42,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -69,7 +69,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Valor_Touched_k1AtYd3lSchIymBr.json b/src/packs/domains/domainCard_Valor_Touched_k1AtYd3lSchIymBr.json index 20fe18ea..84ef1025 100644 --- a/src/packs/domains/domainCard_Valor_Touched_k1AtYd3lSchIymBr.json +++ b/src/packs/domains/domainCard_Valor_Touched_k1AtYd3lSchIymBr.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "armor": { "value": { "custom": { "enabled": true, @@ -50,7 +50,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json b/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json index a6263afe..abac35be 100644 --- a/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json +++ b/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json @@ -24,7 +24,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Vicious_Entangle_qvpvTnkAoRn9vYO4.json b/src/packs/domains/domainCard_Vicious_Entangle_qvpvTnkAoRn9vYO4.json index 85935876..3b7358bc 100644 --- a/src/packs/domains/domainCard_Vicious_Entangle_qvpvTnkAoRn9vYO4.json +++ b/src/packs/domains/domainCard_Vicious_Entangle_qvpvTnkAoRn9vYO4.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -51,7 +51,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Wild_Fortress_9dFvcM1i3bxG3BSA.json b/src/packs/domains/domainCard_Wild_Fortress_9dFvcM1i3bxG3BSA.json index 655f0c2b..d61f914b 100644 --- a/src/packs/domains/domainCard_Wild_Fortress_9dFvcM1i3bxG3BSA.json +++ b/src/packs/domains/domainCard_Wild_Fortress_9dFvcM1i3bxG3BSA.json @@ -32,7 +32,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Words_of_Discord_ZjAdi1FSNCDDHI3X.json b/src/packs/domains/domainCard_Words_of_Discord_ZjAdi1FSNCDDHI3X.json index fb3c6611..d743f5e1 100644 --- a/src/packs/domains/domainCard_Words_of_Discord_ZjAdi1FSNCDDHI3X.json +++ b/src/packs/domains/domainCard_Words_of_Discord_ZjAdi1FSNCDDHI3X.json @@ -24,8 +24,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "resultBased": false, "value": { "custom": { @@ -50,7 +50,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json b/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json index 16753e1e..22042f7d 100644 --- a/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json +++ b/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json @@ -25,7 +25,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json b/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json index 5669173d..19bff136 100644 --- a/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json +++ b/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json @@ -25,7 +25,7 @@ "consumeOnSuccess": true }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json b/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json index 0fa0a09e..75fc932f 100644 --- a/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json +++ b/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json @@ -183,8 +183,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -210,7 +210,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Ambushed_uGEdNYERCTJBEjc5.json b/src/packs/environments/environment_Ambushed_uGEdNYERCTJBEjc5.json index b0ccd435..ea1a158c 100644 --- a/src/packs/environments/environment_Ambushed_uGEdNYERCTJBEjc5.json +++ b/src/packs/environments/environment_Ambushed_uGEdNYERCTJBEjc5.json @@ -166,8 +166,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -192,7 +192,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { 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 a48d9b83..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 @@ -213,7 +213,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -342,8 +342,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -369,7 +369,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -442,8 +442,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -469,7 +469,7 @@ } } } - ], + }, "includeBase": false, "direct": true }, diff --git a/src/packs/environments/environment_Bustling_Marketplace_HZKA7hkej7JJY503.json b/src/packs/environments/environment_Bustling_Marketplace_HZKA7hkej7JJY503.json index af0b3a70..e10fad1a 100644 --- a/src/packs/environments/environment_Bustling_Marketplace_HZKA7hkej7JJY503.json +++ b/src/packs/environments/environment_Bustling_Marketplace_HZKA7hkej7JJY503.json @@ -205,7 +205,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json b/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json index 411a10c7..fdfc9a5d 100644 --- a/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json +++ b/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json @@ -185,8 +185,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "fear": { "value": { "custom": { "enabled": true, @@ -211,7 +211,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -342,8 +342,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -369,7 +369,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Chaos_Realm_2Z1mKc65LxNk2PqR.json b/src/packs/environments/environment_Chaos_Realm_2Z1mKc65LxNk2PqR.json index 361b15bc..e7c2c4e0 100644 --- a/src/packs/environments/environment_Chaos_Realm_2Z1mKc65LxNk2PqR.json +++ b/src/packs/environments/environment_Chaos_Realm_2Z1mKc65LxNk2PqR.json @@ -150,8 +150,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -176,7 +176,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -265,7 +265,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -381,8 +381,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -408,7 +408,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -552,8 +552,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -578,7 +578,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Cliffside_Ascent_LPpfdlNKqiZIl04w.json b/src/packs/environments/environment_Cliffside_Ascent_LPpfdlNKqiZIl04w.json index 548cf7c4..ef367d67 100644 --- a/src/packs/environments/environment_Cliffside_Ascent_LPpfdlNKqiZIl04w.json +++ b/src/packs/environments/environment_Cliffside_Ascent_LPpfdlNKqiZIl04w.json @@ -214,8 +214,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -240,7 +240,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -292,8 +292,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -317,7 +317,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -343,8 +343,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -368,7 +368,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -394,8 +394,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -419,7 +419,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Divine_Usurpation_4DLYez7VbMCFDAuZ.json b/src/packs/environments/environment_Divine_Usurpation_4DLYez7VbMCFDAuZ.json index d8e9cded..637cdd41 100644 --- a/src/packs/environments/environment_Divine_Usurpation_4DLYez7VbMCFDAuZ.json +++ b/src/packs/environments/environment_Divine_Usurpation_4DLYez7VbMCFDAuZ.json @@ -323,8 +323,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -349,7 +349,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -600,8 +600,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": false @@ -625,7 +625,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Hallowed_Temple_dsA6j69AnaJhUyqH.json b/src/packs/environments/environment_Hallowed_Temple_dsA6j69AnaJhUyqH.json index f005fa59..c510a87f 100644 --- a/src/packs/environments/environment_Hallowed_Temple_dsA6j69AnaJhUyqH.json +++ b/src/packs/environments/environment_Hallowed_Temple_dsA6j69AnaJhUyqH.json @@ -150,8 +150,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -176,7 +176,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -268,8 +268,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -294,7 +294,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Imperial_Court_jr1xAoXzVwVblzxI.json b/src/packs/environments/environment_Imperial_Court_jr1xAoXzVwVblzxI.json index 4b49c341..5807d43c 100644 --- a/src/packs/environments/environment_Imperial_Court_jr1xAoXzVwVblzxI.json +++ b/src/packs/environments/environment_Imperial_Court_jr1xAoXzVwVblzxI.json @@ -209,8 +209,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": false @@ -234,7 +234,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -307,7 +307,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { @@ -387,7 +387,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Local_Tavern_cM4X81DOyvxNIi52.json b/src/packs/environments/environment_Local_Tavern_cM4X81DOyvxNIi52.json index 105f230f..da2d2830 100644 --- a/src/packs/environments/environment_Local_Tavern_cM4X81DOyvxNIi52.json +++ b/src/packs/environments/environment_Local_Tavern_cM4X81DOyvxNIi52.json @@ -266,8 +266,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -291,7 +291,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json b/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json index 9ba6a918..eaad99f7 100644 --- a/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json +++ b/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json @@ -183,8 +183,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -208,7 +208,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -315,8 +315,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -341,7 +341,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json b/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json index e96b9177..949e3dc1 100644 --- a/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json +++ b/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json @@ -149,8 +149,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -175,7 +175,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -252,8 +252,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -277,7 +277,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -350,7 +350,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json b/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json index 7be27924..14c724e3 100644 --- a/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json +++ b/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json @@ -218,8 +218,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -245,7 +245,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/environments/environment_Raging_River_t4cdqTfzcqP3H1vJ.json b/src/packs/environments/environment_Raging_River_t4cdqTfzcqP3H1vJ.json index 03dd72e3..6c87c446 100644 --- a/src/packs/environments/environment_Raging_River_t4cdqTfzcqP3H1vJ.json +++ b/src/packs/environments/environment_Raging_River_t4cdqTfzcqP3H1vJ.json @@ -230,8 +230,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -257,7 +257,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/armors/armor_Dunamis_Silkchain_hAY6UgdGT7dj22Pr.json b/src/packs/items/armors/armor_Dunamis_Silkchain_hAY6UgdGT7dj22Pr.json index df692143..588d9cf9 100644 --- a/src/packs/items/armors/armor_Dunamis_Silkchain_hAY6UgdGT7dj22Pr.json +++ b/src/packs/items/armors/armor_Dunamis_Silkchain_hAY6UgdGT7dj22Pr.json @@ -48,7 +48,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/items/armors/armor_Emberwoven_Armor_bcQUh4QG3qFX0Vx6.json b/src/packs/items/armors/armor_Emberwoven_Armor_bcQUh4QG3qFX0Vx6.json index 8ccc27e3..15b07474 100644 --- a/src/packs/items/armors/armor_Emberwoven_Armor_bcQUh4QG3qFX0Vx6.json +++ b/src/packs/items/armors/armor_Emberwoven_Armor_bcQUh4QG3qFX0Vx6.json @@ -20,8 +20,8 @@ "amount": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "applyTo": "stress", "value": { "custom": { @@ -46,7 +46,7 @@ "base": false, "type": [] } - ], + }, "includeBase": false }, "_id": "L8mHf4A8SylyxsMH", diff --git a/src/packs/items/armors/armor_Harrowbone_Armor_dvyQeUVRLc9y6rnt.json b/src/packs/items/armors/armor_Harrowbone_Armor_dvyQeUVRLc9y6rnt.json index 61d1fed7..82b4f791 100644 --- a/src/packs/items/armors/armor_Harrowbone_Armor_dvyQeUVRLc9y6rnt.json +++ b/src/packs/items/armors/armor_Harrowbone_Armor_dvyQeUVRLc9y6rnt.json @@ -39,7 +39,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Dragonbloom_Tea_wM18PWWW2Ami4fBG.json b/src/packs/items/consumables/consumable_Dragonbloom_Tea_wM18PWWW2Ami4fBG.json index f484f3c9..2a4c6ac9 100644 --- a/src/packs/items/consumables/consumable_Dragonbloom_Tea_wM18PWWW2Ami4fBG.json +++ b/src/packs/items/consumables/consumable_Dragonbloom_Tea_wM18PWWW2Ami4fBG.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -55,7 +55,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Dripfang_Poison_eU8VpbWB2NHIL47n.json b/src/packs/items/consumables/consumable_Dripfang_Poison_eU8VpbWB2NHIL47n.json index 70070ab2..c37b8bb4 100644 --- a/src/packs/items/consumables/consumable_Dripfang_Poison_eU8VpbWB2NHIL47n.json +++ b/src/packs/items/consumables/consumable_Dripfang_Poison_eU8VpbWB2NHIL47n.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -57,7 +57,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Feast_of_Xuria_aX6NyxkNzu0LcJpt.json b/src/packs/items/consumables/consumable_Feast_of_Xuria_aX6NyxkNzu0LcJpt.json index f98d86f1..b23f091b 100644 --- a/src/packs/items/consumables/consumable_Feast_of_Xuria_aX6NyxkNzu0LcJpt.json +++ b/src/packs/items/consumables/consumable_Feast_of_Xuria_aX6NyxkNzu0LcJpt.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -56,7 +56,7 @@ }, "type": [] }, - { + "stress": { "value": { "custom": { "enabled": true, @@ -81,7 +81,7 @@ }, "type": [] }, - { + "hope": { "value": { "custom": { "enabled": false @@ -105,7 +105,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Health_Potion_Aruc2NLutWuVIjP1.json b/src/packs/items/consumables/consumable_Health_Potion_Aruc2NLutWuVIjP1.json index 8c620942..bc82daa2 100644 --- a/src/packs/items/consumables/consumable_Health_Potion_Aruc2NLutWuVIjP1.json +++ b/src/packs/items/consumables/consumable_Health_Potion_Aruc2NLutWuVIjP1.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -55,7 +55,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Improved_Arcane_Shard_nQTo6mNoPTEVBtkm.json b/src/packs/items/consumables/consumable_Improved_Arcane_Shard_nQTo6mNoPTEVBtkm.json index 2081f33b..b39db9b5 100644 --- a/src/packs/items/consumables/consumable_Improved_Arcane_Shard_nQTo6mNoPTEVBtkm.json +++ b/src/packs/items/consumables/consumable_Improved_Arcane_Shard_nQTo6mNoPTEVBtkm.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -57,7 +57,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Jar_of_Lost_Voices_yUol6M5b8jsbk9za.json b/src/packs/items/consumables/consumable_Jar_of_Lost_Voices_yUol6M5b8jsbk9za.json index c655f7ca..3e716230 100644 --- a/src/packs/items/consumables/consumable_Jar_of_Lost_Voices_yUol6M5b8jsbk9za.json +++ b/src/packs/items/consumables/consumable_Jar_of_Lost_Voices_yUol6M5b8jsbk9za.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -57,7 +57,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Major_Arcane_Shard_AA7bmiwv00lshPrC.json b/src/packs/items/consumables/consumable_Major_Arcane_Shard_AA7bmiwv00lshPrC.json index b9293362..25cb8fb3 100644 --- a/src/packs/items/consumables/consumable_Major_Arcane_Shard_AA7bmiwv00lshPrC.json +++ b/src/packs/items/consumables/consumable_Major_Arcane_Shard_AA7bmiwv00lshPrC.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -55,7 +55,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Major_Health_Potion_cM7pHe8bBAxSZ2xR.json b/src/packs/items/consumables/consumable_Major_Health_Potion_cM7pHe8bBAxSZ2xR.json index 201233ce..843249de 100644 --- a/src/packs/items/consumables/consumable_Major_Health_Potion_cM7pHe8bBAxSZ2xR.json +++ b/src/packs/items/consumables/consumable_Major_Health_Potion_cM7pHe8bBAxSZ2xR.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -55,7 +55,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Major_Stamina_Potion_I4cQ03xbxnc81EGa.json b/src/packs/items/consumables/consumable_Major_Stamina_Potion_I4cQ03xbxnc81EGa.json index 3f7d2a00..ebe07a1f 100644 --- a/src/packs/items/consumables/consumable_Major_Stamina_Potion_I4cQ03xbxnc81EGa.json +++ b/src/packs/items/consumables/consumable_Major_Stamina_Potion_I4cQ03xbxnc81EGa.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": false @@ -55,7 +55,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Minor_Health_Potion_tPfKtKRRjv8qdSqy.json b/src/packs/items/consumables/consumable_Minor_Health_Potion_tPfKtKRRjv8qdSqy.json index 1e1e31f1..bac0f425 100644 --- a/src/packs/items/consumables/consumable_Minor_Health_Potion_tPfKtKRRjv8qdSqy.json +++ b/src/packs/items/consumables/consumable_Minor_Health_Potion_tPfKtKRRjv8qdSqy.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -55,7 +55,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Minor_Stamina_Potion_b6vGSPFWOlzZZDLO.json b/src/packs/items/consumables/consumable_Minor_Stamina_Potion_b6vGSPFWOlzZZDLO.json index 9895b3ef..79a29e8b 100644 --- a/src/packs/items/consumables/consumable_Minor_Stamina_Potion_b6vGSPFWOlzZZDLO.json +++ b/src/packs/items/consumables/consumable_Minor_Stamina_Potion_b6vGSPFWOlzZZDLO.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": false @@ -55,7 +55,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Sleeping_Sap_XZavUVlHEvE2srEt.json b/src/packs/items/consumables/consumable_Sleeping_Sap_XZavUVlHEvE2srEt.json index 74fbf749..942f449e 100644 --- a/src/packs/items/consumables/consumable_Sleeping_Sap_XZavUVlHEvE2srEt.json +++ b/src/packs/items/consumables/consumable_Sleeping_Sap_XZavUVlHEvE2srEt.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -56,7 +56,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Snap_Powder_cg6VtQ0eVZjDdcK0.json b/src/packs/items/consumables/consumable_Snap_Powder_cg6VtQ0eVZjDdcK0.json index adcf8a31..1ae34797 100644 --- a/src/packs/items/consumables/consumable_Snap_Powder_cg6VtQ0eVZjDdcK0.json +++ b/src/packs/items/consumables/consumable_Snap_Powder_cg6VtQ0eVZjDdcK0.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -56,7 +56,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Stamina_Potion_hf3k1POoVSooJyN2.json b/src/packs/items/consumables/consumable_Stamina_Potion_hf3k1POoVSooJyN2.json index 9cb4716e..3affdb8e 100644 --- a/src/packs/items/consumables/consumable_Stamina_Potion_hf3k1POoVSooJyN2.json +++ b/src/packs/items/consumables/consumable_Stamina_Potion_hf3k1POoVSooJyN2.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": false @@ -55,7 +55,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json b/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json index 1a8800cd..be977305 100644 --- a/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json +++ b/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -57,7 +57,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Sun_Tree_Sap_kwexUzdM9wm1Qums.json b/src/packs/items/consumables/consumable_Sun_Tree_Sap_kwexUzdM9wm1Qums.json index 48a61a28..2669a49b 100644 --- a/src/packs/items/consumables/consumable_Sun_Tree_Sap_kwexUzdM9wm1Qums.json +++ b/src/packs/items/consumables/consumable_Sun_Tree_Sap_kwexUzdM9wm1Qums.json @@ -30,7 +30,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Sweet_Moss_GrDrRqWgv7gvl9vn.json b/src/packs/items/consumables/consumable_Sweet_Moss_GrDrRqWgv7gvl9vn.json index f8b6fbb7..c17d6514 100644 --- a/src/packs/items/consumables/consumable_Sweet_Moss_GrDrRqWgv7gvl9vn.json +++ b/src/packs/items/consumables/consumable_Sweet_Moss_GrDrRqWgv7gvl9vn.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -55,7 +55,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -105,8 +105,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": false @@ -130,7 +130,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Unstable_Arcane_Shard_mUepnLbkvFk0ha4Z.json b/src/packs/items/consumables/consumable_Unstable_Arcane_Shard_mUepnLbkvFk0ha4Z.json index 96b83780..a5890ab0 100644 --- a/src/packs/items/consumables/consumable_Unstable_Arcane_Shard_mUepnLbkvFk0ha4Z.json +++ b/src/packs/items/consumables/consumable_Unstable_Arcane_Shard_mUepnLbkvFk0ha4Z.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -57,7 +57,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/consumables/consumable_Varik_Leaves_hvy5BkG3F6iOIXTx.json b/src/packs/items/consumables/consumable_Varik_Leaves_hvy5BkG3F6iOIXTx.json index 79f4d11e..27e83aa4 100644 --- a/src/packs/items/consumables/consumable_Varik_Leaves_hvy5BkG3F6iOIXTx.json +++ b/src/packs/items/consumables/consumable_Varik_Leaves_hvy5BkG3F6iOIXTx.json @@ -30,8 +30,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -56,7 +56,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/items/loot/loot_Bag_of_Ficklesand_v758j4FwNVAurhYK.json b/src/packs/items/loot/loot_Bag_of_Ficklesand_v758j4FwNVAurhYK.json index c083e7ca..2cb80d86 100644 --- a/src/packs/items/loot/loot_Bag_of_Ficklesand_v758j4FwNVAurhYK.json +++ b/src/packs/items/loot/loot_Bag_of_Ficklesand_v758j4FwNVAurhYK.json @@ -21,7 +21,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/items/loot/loot_Box_of_Many_Goods_bZyT7Qw7iafswlTY.json b/src/packs/items/loot/loot_Box_of_Many_Goods_bZyT7Qw7iafswlTY.json index 1090323f..cb603dc7 100644 --- a/src/packs/items/loot/loot_Box_of_Many_Goods_bZyT7Qw7iafswlTY.json +++ b/src/packs/items/loot/loot_Box_of_Many_Goods_bZyT7Qw7iafswlTY.json @@ -21,7 +21,7 @@ "recovery": "longRest" }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/items/loot/loot_Calming_Pendant_tgFFMxpuRSiRrrEB.json b/src/packs/items/loot/loot_Calming_Pendant_tgFFMxpuRSiRrrEB.json index 3d5b9651..ea5b50eb 100644 --- a/src/packs/items/loot/loot_Calming_Pendant_tgFFMxpuRSiRrrEB.json +++ b/src/packs/items/loot/loot_Calming_Pendant_tgFFMxpuRSiRrrEB.json @@ -21,7 +21,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/items/loot/loot_Skeleton_Key_edkNgwy4xghZreBa.json b/src/packs/items/loot/loot_Skeleton_Key_edkNgwy4xghZreBa.json index 72a8d3e0..b5769661 100644 --- a/src/packs/items/loot/loot_Skeleton_Key_edkNgwy4xghZreBa.json +++ b/src/packs/items/loot/loot_Skeleton_Key_edkNgwy4xghZreBa.json @@ -21,7 +21,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/items/loot/loot_Woven_Net_ARuv48PWUGJGBC4n.json b/src/packs/items/loot/loot_Woven_Net_ARuv48PWUGJGBC4n.json index 99d52ea9..2732b61f 100644 --- a/src/packs/items/loot/loot_Woven_Net_ARuv48PWUGJGBC4n.json +++ b/src/packs/items/loot/loot_Woven_Net_ARuv48PWUGJGBC4n.json @@ -21,7 +21,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/items/weapons/weapon_Aantari_Bow_ijodu5yNBoMxpkHV.json b/src/packs/items/weapons/weapon_Aantari_Bow_ijodu5yNBoMxpkHV.json index 93e6404c..7b51d436 100644 --- a/src/packs/items/weapons/weapon_Aantari_Bow_ijodu5yNBoMxpkHV.json +++ b/src/packs/items/weapons/weapon_Aantari_Bow_ijodu5yNBoMxpkHV.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 11, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Arcane_Frame_Wheelchair_la3sAWgnvadc4NvP.json b/src/packs/items/weapons/weapon_Advanced_Arcane_Frame_Wheelchair_la3sAWgnvadc4NvP.json index 36f1be3a..a727bcd5 100644 --- a/src/packs/items/weapons/weapon_Advanced_Arcane_Frame_Wheelchair_la3sAWgnvadc4NvP.json +++ b/src/packs/items/weapons/weapon_Advanced_Arcane_Frame_Wheelchair_la3sAWgnvadc4NvP.json @@ -48,8 +48,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 6, @@ -75,7 +75,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Arcane_Gauntlets_hXR56fTKwZ6s1obs.json b/src/packs/items/weapons/weapon_Advanced_Arcane_Gauntlets_hXR56fTKwZ6s1obs.json index 183ac117..67400768 100644 --- a/src/packs/items/weapons/weapon_Advanced_Arcane_Gauntlets_hXR56fTKwZ6s1obs.json +++ b/src/packs/items/weapons/weapon_Advanced_Arcane_Gauntlets_hXR56fTKwZ6s1obs.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 9, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Battleaxe_FcbvY1ydbNVMjKvk.json b/src/packs/items/weapons/weapon_Advanced_Battleaxe_FcbvY1ydbNVMjKvk.json index 6d2879d7..e780eeed 100644 --- a/src/packs/items/weapons/weapon_Advanced_Battleaxe_FcbvY1ydbNVMjKvk.json +++ b/src/packs/items/weapons/weapon_Advanced_Battleaxe_FcbvY1ydbNVMjKvk.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 9, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Broadsword_WtQAGz0TUgz8Xg70.json b/src/packs/items/weapons/weapon_Advanced_Broadsword_WtQAGz0TUgz8Xg70.json index 9e4a67b0..4581c52f 100644 --- a/src/packs/items/weapons/weapon_Advanced_Broadsword_WtQAGz0TUgz8Xg70.json +++ b/src/packs/items/weapons/weapon_Advanced_Broadsword_WtQAGz0TUgz8Xg70.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 6, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Crossbow_3HGs0AgVrdIBTaKG.json b/src/packs/items/weapons/weapon_Advanced_Crossbow_3HGs0AgVrdIBTaKG.json index 44e47499..437423f5 100644 --- a/src/packs/items/weapons/weapon_Advanced_Crossbow_3HGs0AgVrdIBTaKG.json +++ b/src/packs/items/weapons/weapon_Advanced_Crossbow_3HGs0AgVrdIBTaKG.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 7, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Cutlass_bw9WO9lxkM9bWZxQ.json b/src/packs/items/weapons/weapon_Advanced_Cutlass_bw9WO9lxkM9bWZxQ.json index a20acb5b..45d9a597 100644 --- a/src/packs/items/weapons/weapon_Advanced_Cutlass_bw9WO9lxkM9bWZxQ.json +++ b/src/packs/items/weapons/weapon_Advanced_Cutlass_bw9WO9lxkM9bWZxQ.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 7, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Dagger_mrioysDjNQEIE8hN.json b/src/packs/items/weapons/weapon_Advanced_Dagger_mrioysDjNQEIE8hN.json index a7004807..03f27c99 100644 --- a/src/packs/items/weapons/weapon_Advanced_Dagger_mrioysDjNQEIE8hN.json +++ b/src/packs/items/weapons/weapon_Advanced_Dagger_mrioysDjNQEIE8hN.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 7, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Dualstaff_X5x3sC7v2f3L9sjL.json b/src/packs/items/weapons/weapon_Advanced_Dualstaff_X5x3sC7v2f3L9sjL.json index 3baed3d4..033b873c 100644 --- a/src/packs/items/weapons/weapon_Advanced_Dualstaff_X5x3sC7v2f3L9sjL.json +++ b/src/packs/items/weapons/weapon_Advanced_Dualstaff_X5x3sC7v2f3L9sjL.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 9, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Glowing_Rings_InQoh8mZPnwarQkX.json b/src/packs/items/weapons/weapon_Advanced_Glowing_Rings_InQoh8mZPnwarQkX.json index 2bdfed49..2ea7b20d 100644 --- a/src/packs/items/weapons/weapon_Advanced_Glowing_Rings_InQoh8mZPnwarQkX.json +++ b/src/packs/items/weapons/weapon_Advanced_Glowing_Rings_InQoh8mZPnwarQkX.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 8, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Grappler_7vvhVl4TDJHtjpFK.json b/src/packs/items/weapons/weapon_Advanced_Grappler_7vvhVl4TDJHtjpFK.json index 01bef9b2..390a0b9a 100644 --- a/src/packs/items/weapons/weapon_Advanced_Grappler_7vvhVl4TDJHtjpFK.json +++ b/src/packs/items/weapons/weapon_Advanced_Grappler_7vvhVl4TDJHtjpFK.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Greatstaff_4UzxqfkwF8gDSdu7.json b/src/packs/items/weapons/weapon_Advanced_Greatstaff_4UzxqfkwF8gDSdu7.json index c66354c2..3cc7b986 100644 --- a/src/packs/items/weapons/weapon_Advanced_Greatstaff_4UzxqfkwF8gDSdu7.json +++ b/src/packs/items/weapons/weapon_Advanced_Greatstaff_4UzxqfkwF8gDSdu7.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 6, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Greatsword_MAC6YWTo4lzSotQc.json b/src/packs/items/weapons/weapon_Advanced_Greatsword_MAC6YWTo4lzSotQc.json index 71226630..9e04bf7a 100644 --- a/src/packs/items/weapons/weapon_Advanced_Greatsword_MAC6YWTo4lzSotQc.json +++ b/src/packs/items/weapons/weapon_Advanced_Greatsword_MAC6YWTo4lzSotQc.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 9, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Halberd_C8gQn7onAc9wsrCs.json b/src/packs/items/weapons/weapon_Advanced_Halberd_C8gQn7onAc9wsrCs.json index 59d7437d..6c11724c 100644 --- a/src/packs/items/weapons/weapon_Advanced_Halberd_C8gQn7onAc9wsrCs.json +++ b/src/packs/items/weapons/weapon_Advanced_Halberd_C8gQn7onAc9wsrCs.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 8, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Hallowed_Axe_BiyXKX2Mo1TQbKgk.json b/src/packs/items/weapons/weapon_Advanced_Hallowed_Axe_BiyXKX2Mo1TQbKgk.json index e6403810..ce89ccc2 100644 --- a/src/packs/items/weapons/weapon_Advanced_Hallowed_Axe_BiyXKX2Mo1TQbKgk.json +++ b/src/packs/items/weapons/weapon_Advanced_Hallowed_Axe_BiyXKX2Mo1TQbKgk.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 7, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Hand_Crossbow_Lsvocst8aGqkBj7g.json b/src/packs/items/weapons/weapon_Advanced_Hand_Crossbow_Lsvocst8aGqkBj7g.json index 521ee38d..88ba7077 100644 --- a/src/packs/items/weapons/weapon_Advanced_Hand_Crossbow_Lsvocst8aGqkBj7g.json +++ b/src/packs/items/weapons/weapon_Advanced_Hand_Crossbow_Lsvocst8aGqkBj7g.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 5, @@ -70,7 +70,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Hand_Runes_PQACczSghZIVTdgZ.json b/src/packs/items/weapons/weapon_Advanced_Hand_Runes_PQACczSghZIVTdgZ.json index 23f33ba1..60ffb789 100644 --- a/src/packs/items/weapons/weapon_Advanced_Hand_Runes_PQACczSghZIVTdgZ.json +++ b/src/packs/items/weapons/weapon_Advanced_Hand_Runes_PQACczSghZIVTdgZ.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 6, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Heavy_Frame_Wheelchair_eT2Qwb0RdrLX2hH1.json b/src/packs/items/weapons/weapon_Advanced_Heavy_Frame_Wheelchair_eT2Qwb0RdrLX2hH1.json index 39afe3e6..7f5bb9c7 100644 --- a/src/packs/items/weapons/weapon_Advanced_Heavy_Frame_Wheelchair_eT2Qwb0RdrLX2hH1.json +++ b/src/packs/items/weapons/weapon_Advanced_Heavy_Frame_Wheelchair_eT2Qwb0RdrLX2hH1.json @@ -48,8 +48,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d12", "bonus": 9, @@ -75,7 +75,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Light_Frame_Wheelchair_BuMfupnCzHbziQ8o.json b/src/packs/items/weapons/weapon_Advanced_Light_Frame_Wheelchair_BuMfupnCzHbziQ8o.json index 4600088d..fca77911 100644 --- a/src/packs/items/weapons/weapon_Advanced_Light_Frame_Wheelchair_BuMfupnCzHbziQ8o.json +++ b/src/packs/items/weapons/weapon_Advanced_Light_Frame_Wheelchair_BuMfupnCzHbziQ8o.json @@ -77,8 +77,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 6, @@ -104,7 +104,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Longbow_M5CywMAyPKGgebsJ.json b/src/packs/items/weapons/weapon_Advanced_Longbow_M5CywMAyPKGgebsJ.json index ad8a5bc9..14327a8c 100644 --- a/src/packs/items/weapons/weapon_Advanced_Longbow_M5CywMAyPKGgebsJ.json +++ b/src/packs/items/weapons/weapon_Advanced_Longbow_M5CywMAyPKGgebsJ.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 9, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Longsword_9xkB3MWXahrsVP4N.json b/src/packs/items/weapons/weapon_Advanced_Longsword_9xkB3MWXahrsVP4N.json index 2cf2c43c..0b51f2ae 100644 --- a/src/packs/items/weapons/weapon_Advanced_Longsword_9xkB3MWXahrsVP4N.json +++ b/src/packs/items/weapons/weapon_Advanced_Longsword_9xkB3MWXahrsVP4N.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 9, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Mace_WreMYiH5uhVDaoVw.json b/src/packs/items/weapons/weapon_Advanced_Mace_WreMYiH5uhVDaoVw.json index db8cde18..e255da65 100644 --- a/src/packs/items/weapons/weapon_Advanced_Mace_WreMYiH5uhVDaoVw.json +++ b/src/packs/items/weapons/weapon_Advanced_Mace_WreMYiH5uhVDaoVw.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 7, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Quarterstaff_zJtm2f9ZFKZRtCRg.json b/src/packs/items/weapons/weapon_Advanced_Quarterstaff_zJtm2f9ZFKZRtCRg.json index d6beafb2..00f0b694 100644 --- a/src/packs/items/weapons/weapon_Advanced_Quarterstaff_zJtm2f9ZFKZRtCRg.json +++ b/src/packs/items/weapons/weapon_Advanced_Quarterstaff_zJtm2f9ZFKZRtCRg.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 9, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Rapier_KxFne76d7cak15dO.json b/src/packs/items/weapons/weapon_Advanced_Rapier_KxFne76d7cak15dO.json index 315d8401..28c508b8 100644 --- a/src/packs/items/weapons/weapon_Advanced_Rapier_KxFne76d7cak15dO.json +++ b/src/packs/items/weapons/weapon_Advanced_Rapier_KxFne76d7cak15dO.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 6, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Returning_Blade_sIGXA4KMeYBUjcEO.json b/src/packs/items/weapons/weapon_Advanced_Returning_Blade_sIGXA4KMeYBUjcEO.json index bbdce2d4..0694a020 100644 --- a/src/packs/items/weapons/weapon_Advanced_Returning_Blade_sIGXA4KMeYBUjcEO.json +++ b/src/packs/items/weapons/weapon_Advanced_Returning_Blade_sIGXA4KMeYBUjcEO.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 6, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Round_Shield_hiEOGF2reabGLUoi.json b/src/packs/items/weapons/weapon_Advanced_Round_Shield_hiEOGF2reabGLUoi.json index c1c4fba5..da5d5bf8 100644 --- a/src/packs/items/weapons/weapon_Advanced_Round_Shield_hiEOGF2reabGLUoi.json +++ b/src/packs/items/weapons/weapon_Advanced_Round_Shield_hiEOGF2reabGLUoi.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d4", "bonus": 4, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Scepter_2Khzuj768yoWN9QK.json b/src/packs/items/weapons/weapon_Advanced_Scepter_2Khzuj768yoWN9QK.json index cf619a89..6dff775a 100644 --- a/src/packs/items/weapons/weapon_Advanced_Scepter_2Khzuj768yoWN9QK.json +++ b/src/packs/items/weapons/weapon_Advanced_Scepter_2Khzuj768yoWN9QK.json @@ -11,8 +11,8 @@ "type": "attack", "damage": { "includeBase": false, - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -38,7 +38,7 @@ } } } - ] + } }, "range": "melee", "roll": { @@ -115,8 +115,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 6, @@ -142,7 +142,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Shortbow_JpSlJvDR0X8VFDns.json b/src/packs/items/weapons/weapon_Advanced_Shortbow_JpSlJvDR0X8VFDns.json index 5693e814..f5efc9a9 100644 --- a/src/packs/items/weapons/weapon_Advanced_Shortbow_JpSlJvDR0X8VFDns.json +++ b/src/packs/items/weapons/weapon_Advanced_Shortbow_JpSlJvDR0X8VFDns.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 9, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Shortstaff_T5exRCqOXhrjSYnI.json b/src/packs/items/weapons/weapon_Advanced_Shortstaff_T5exRCqOXhrjSYnI.json index 71d66d82..0e3b3161 100644 --- a/src/packs/items/weapons/weapon_Advanced_Shortstaff_T5exRCqOXhrjSYnI.json +++ b/src/packs/items/weapons/weapon_Advanced_Shortstaff_T5exRCqOXhrjSYnI.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 7, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json b/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json index 397fa061..dd48db21 100644 --- a/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json +++ b/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 4, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Small_Dagger_0thN0BpN05KT8Avx.json b/src/packs/items/weapons/weapon_Advanced_Small_Dagger_0thN0BpN05KT8Avx.json index 7af59440..a63789f3 100644 --- a/src/packs/items/weapons/weapon_Advanced_Small_Dagger_0thN0BpN05KT8Avx.json +++ b/src/packs/items/weapons/weapon_Advanced_Small_Dagger_0thN0BpN05KT8Avx.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 4, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Spear_pK6dsNABKKp1CIGN.json b/src/packs/items/weapons/weapon_Advanced_Spear_pK6dsNABKKp1CIGN.json index e5f3f8ec..099761b4 100644 --- a/src/packs/items/weapons/weapon_Advanced_Spear_pK6dsNABKKp1CIGN.json +++ b/src/packs/items/weapons/weapon_Advanced_Spear_pK6dsNABKKp1CIGN.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 9, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Tower_Shield_OfOzQbs4hg6QbfTG.json b/src/packs/items/weapons/weapon_Advanced_Tower_Shield_OfOzQbs4hg6QbfTG.json index b2fb16d8..9fe47fc0 100644 --- a/src/packs/items/weapons/weapon_Advanced_Tower_Shield_OfOzQbs4hg6QbfTG.json +++ b/src/packs/items/weapons/weapon_Advanced_Tower_Shield_OfOzQbs4hg6QbfTG.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Wand_jU9jWIardjtdAQcs.json b/src/packs/items/weapons/weapon_Advanced_Wand_jU9jWIardjtdAQcs.json index 4cb4e2b2..8043e360 100644 --- a/src/packs/items/weapons/weapon_Advanced_Wand_jU9jWIardjtdAQcs.json +++ b/src/packs/items/weapons/weapon_Advanced_Wand_jU9jWIardjtdAQcs.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 7, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Warhammer_8Lipw3RRKDgBVP0p.json b/src/packs/items/weapons/weapon_Advanced_Warhammer_8Lipw3RRKDgBVP0p.json index 72983f6b..bb142281 100644 --- a/src/packs/items/weapons/weapon_Advanced_Warhammer_8Lipw3RRKDgBVP0p.json +++ b/src/packs/items/weapons/weapon_Advanced_Warhammer_8Lipw3RRKDgBVP0p.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d12", "bonus": 9, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Advanced_Whip_01izMUSJcAUo79IX.json b/src/packs/items/weapons/weapon_Advanced_Whip_01izMUSJcAUo79IX.json index 6e1753c8..142eb542 100644 --- a/src/packs/items/weapons/weapon_Advanced_Whip_01izMUSJcAUo79IX.json +++ b/src/packs/items/weapons/weapon_Advanced_Whip_01izMUSJcAUo79IX.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Arcane_Frame_Wheelchair_XRChepscgr75Uug7.json b/src/packs/items/weapons/weapon_Arcane_Frame_Wheelchair_XRChepscgr75Uug7.json index 58ef5f4b..6959fb30 100644 --- a/src/packs/items/weapons/weapon_Arcane_Frame_Wheelchair_XRChepscgr75Uug7.json +++ b/src/packs/items/weapons/weapon_Arcane_Frame_Wheelchair_XRChepscgr75Uug7.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": null, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Arcane_Gauntlets_PC5EyEIq7NWBV0n5.json b/src/packs/items/weapons/weapon_Arcane_Gauntlets_PC5EyEIq7NWBV0n5.json index 8d9e3c31..29afcc13 100644 --- a/src/packs/items/weapons/weapon_Arcane_Gauntlets_PC5EyEIq7NWBV0n5.json +++ b/src/packs/items/weapons/weapon_Arcane_Gauntlets_PC5EyEIq7NWBV0n5.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 3, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Axe_of_Fortunis_YcS1rHgfnSlla8Xf.json b/src/packs/items/weapons/weapon_Axe_of_Fortunis_YcS1rHgfnSlla8Xf.json index 6ce0ce68..8e4b00c5 100644 --- a/src/packs/items/weapons/weapon_Axe_of_Fortunis_YcS1rHgfnSlla8Xf.json +++ b/src/packs/items/weapons/weapon_Axe_of_Fortunis_YcS1rHgfnSlla8Xf.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 8, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Battleaxe_fbDYUja3ll9vCtrB.json b/src/packs/items/weapons/weapon_Battleaxe_fbDYUja3ll9vCtrB.json index 9b43f8dc..9ab3321e 100644 --- a/src/packs/items/weapons/weapon_Battleaxe_fbDYUja3ll9vCtrB.json +++ b/src/packs/items/weapons/weapon_Battleaxe_fbDYUja3ll9vCtrB.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 3, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Black_Powder_Revolver_AokqTusPzn0hghkE.json b/src/packs/items/weapons/weapon_Black_Powder_Revolver_AokqTusPzn0hghkE.json index 845fee44..34371c2b 100644 --- a/src/packs/items/weapons/weapon_Black_Powder_Revolver_AokqTusPzn0hghkE.json +++ b/src/packs/items/weapons/weapon_Black_Powder_Revolver_AokqTusPzn0hghkE.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 8, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Bladed_Whip_5faflfNz20cFW1EM.json b/src/packs/items/weapons/weapon_Bladed_Whip_5faflfNz20cFW1EM.json index 5238578f..2b2a5b9c 100644 --- a/src/packs/items/weapons/weapon_Bladed_Whip_5faflfNz20cFW1EM.json +++ b/src/packs/items/weapons/weapon_Bladed_Whip_5faflfNz20cFW1EM.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 3, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Blessed_Anlace_n1oPTk5czTIGTkVj.json b/src/packs/items/weapons/weapon_Blessed_Anlace_n1oPTk5czTIGTkVj.json index 82140411..14448edc 100644 --- a/src/packs/items/weapons/weapon_Blessed_Anlace_n1oPTk5czTIGTkVj.json +++ b/src/packs/items/weapons/weapon_Blessed_Anlace_n1oPTk5czTIGTkVj.json @@ -19,8 +19,8 @@ "amount": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "applyTo": "hitPoints", "value": { "custom": { @@ -45,7 +45,7 @@ "base": false, "type": [] } - ], + }, "includeBase": false }, "_id": "o18UvqLPWLe1A8XJ", @@ -117,8 +117,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 6, @@ -144,7 +144,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Bloodstaff_IoMVDz92WVvfGGdc.json b/src/packs/items/weapons/weapon_Bloodstaff_IoMVDz92WVvfGGdc.json index 2450d69c..ab6bb15d 100644 --- a/src/packs/items/weapons/weapon_Bloodstaff_IoMVDz92WVvfGGdc.json +++ b/src/packs/items/weapons/weapon_Bloodstaff_IoMVDz92WVvfGGdc.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d20", "bonus": 7, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Blunderbuss_SLFrK0WmldPo0shz.json b/src/packs/items/weapons/weapon_Blunderbuss_SLFrK0WmldPo0shz.json index 1fba6130..9b2f455a 100644 --- a/src/packs/items/weapons/weapon_Blunderbuss_SLFrK0WmldPo0shz.json +++ b/src/packs/items/weapons/weapon_Blunderbuss_SLFrK0WmldPo0shz.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 6, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Braveshield_QEvgVoz9xKBSKsGi.json b/src/packs/items/weapons/weapon_Braveshield_QEvgVoz9xKBSKsGi.json index aef812a6..2f5ec85d 100644 --- a/src/packs/items/weapons/weapon_Braveshield_QEvgVoz9xKBSKsGi.json +++ b/src/packs/items/weapons/weapon_Braveshield_QEvgVoz9xKBSKsGi.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d4", "bonus": 6, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Bravesword_QZrWAkprA2tL2MOI.json b/src/packs/items/weapons/weapon_Bravesword_QZrWAkprA2tL2MOI.json index 7c3e65f5..412a7083 100644 --- a/src/packs/items/weapons/weapon_Bravesword_QZrWAkprA2tL2MOI.json +++ b/src/packs/items/weapons/weapon_Bravesword_QZrWAkprA2tL2MOI.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 7, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Broadsword_1cwWNt4sqlgA8gCT.json b/src/packs/items/weapons/weapon_Broadsword_1cwWNt4sqlgA8gCT.json index 0e9a557e..87c6f7e8 100644 --- a/src/packs/items/weapons/weapon_Broadsword_1cwWNt4sqlgA8gCT.json +++ b/src/packs/items/weapons/weapon_Broadsword_1cwWNt4sqlgA8gCT.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "type": [ "physical" ], @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Buckler_EmFTp9wzT6MHSaNz.json b/src/packs/items/weapons/weapon_Buckler_EmFTp9wzT6MHSaNz.json index 4d815a6c..be147888 100644 --- a/src/packs/items/weapons/weapon_Buckler_EmFTp9wzT6MHSaNz.json +++ b/src/packs/items/weapons/weapon_Buckler_EmFTp9wzT6MHSaNz.json @@ -87,8 +87,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d4", "bonus": 4, @@ -114,7 +114,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Casting_Sword_2Fbf2cxLfbdGkU4I.json b/src/packs/items/weapons/weapon_Casting_Sword_2Fbf2cxLfbdGkU4I.json index 9af34d45..c861e735 100644 --- a/src/packs/items/weapons/weapon_Casting_Sword_2Fbf2cxLfbdGkU4I.json +++ b/src/packs/items/weapons/weapon_Casting_Sword_2Fbf2cxLfbdGkU4I.json @@ -11,8 +11,8 @@ "type": "attack", "damage": { "includeBase": false, - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -36,7 +36,7 @@ } } } - ] + } }, "range": "far", "roll": { @@ -113,8 +113,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 4, @@ -140,7 +140,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Crossbow_cw7HG1Z7hp7OOLD0.json b/src/packs/items/weapons/weapon_Crossbow_cw7HG1Z7hp7OOLD0.json index 749ef4aa..62ad7f3d 100644 --- a/src/packs/items/weapons/weapon_Crossbow_cw7HG1Z7hp7OOLD0.json +++ b/src/packs/items/weapons/weapon_Crossbow_cw7HG1Z7hp7OOLD0.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 1, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Curved_Dagger_Fk69R40svV0kanZD.json b/src/packs/items/weapons/weapon_Curved_Dagger_Fk69R40svV0kanZD.json index a98a56b1..1af2c372 100644 --- a/src/packs/items/weapons/weapon_Curved_Dagger_Fk69R40svV0kanZD.json +++ b/src/packs/items/weapons/weapon_Curved_Dagger_Fk69R40svV0kanZD.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 9, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Cutlass_CWrbnethuILXrEpA.json b/src/packs/items/weapons/weapon_Cutlass_CWrbnethuILXrEpA.json index 7343b92c..4750891f 100644 --- a/src/packs/items/weapons/weapon_Cutlass_CWrbnethuILXrEpA.json +++ b/src/packs/items/weapons/weapon_Cutlass_CWrbnethuILXrEpA.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 1, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Dagger_iStO0BbeMTTR0rQi.json b/src/packs/items/weapons/weapon_Dagger_iStO0BbeMTTR0rQi.json index 5ef12e05..4818c79f 100644 --- a/src/packs/items/weapons/weapon_Dagger_iStO0BbeMTTR0rQi.json +++ b/src/packs/items/weapons/weapon_Dagger_iStO0BbeMTTR0rQi.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 1, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Devouring_Dagger_C5wSGglR8e0euQnY.json b/src/packs/items/weapons/weapon_Devouring_Dagger_C5wSGglR8e0euQnY.json index e00d665c..7775501d 100644 --- a/src/packs/items/weapons/weapon_Devouring_Dagger_C5wSGglR8e0euQnY.json +++ b/src/packs/items/weapons/weapon_Devouring_Dagger_C5wSGglR8e0euQnY.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 4, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Double_Flail_xm1yU7k58fMgXxRR.json b/src/packs/items/weapons/weapon_Double_Flail_xm1yU7k58fMgXxRR.json index a118b399..e5b603c6 100644 --- a/src/packs/items/weapons/weapon_Double_Flail_xm1yU7k58fMgXxRR.json +++ b/src/packs/items/weapons/weapon_Double_Flail_xm1yU7k58fMgXxRR.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 8, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Dual_Ended_Sword_nXjuBa215H1sTUK3.json b/src/packs/items/weapons/weapon_Dual_Ended_Sword_nXjuBa215H1sTUK3.json index da15604c..df1c3e54 100644 --- a/src/packs/items/weapons/weapon_Dual_Ended_Sword_nXjuBa215H1sTUK3.json +++ b/src/packs/items/weapons/weapon_Dual_Ended_Sword_nXjuBa215H1sTUK3.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 9, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Dualstaff_j8cdNeIUYxxzFVji.json b/src/packs/items/weapons/weapon_Dualstaff_j8cdNeIUYxxzFVji.json index e7c458c3..a3b44d76 100644 --- a/src/packs/items/weapons/weapon_Dualstaff_j8cdNeIUYxxzFVji.json +++ b/src/packs/items/weapons/weapon_Dualstaff_j8cdNeIUYxxzFVji.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 3, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Ego_Blade_G7rH31KQ5eEZXcv0.json b/src/packs/items/weapons/weapon_Ego_Blade_G7rH31KQ5eEZXcv0.json index 36d3b0ba..17e24aea 100644 --- a/src/packs/items/weapons/weapon_Ego_Blade_G7rH31KQ5eEZXcv0.json +++ b/src/packs/items/weapons/weapon_Ego_Blade_G7rH31KQ5eEZXcv0.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d12", "bonus": 4, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Elder_Bow_JdWcn9W1edhAEInL.json b/src/packs/items/weapons/weapon_Elder_Bow_JdWcn9W1edhAEInL.json index 35659402..73bb5a46 100644 --- a/src/packs/items/weapons/weapon_Elder_Bow_JdWcn9W1edhAEInL.json +++ b/src/packs/items/weapons/weapon_Elder_Bow_JdWcn9W1edhAEInL.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Extended_Polearm_fJHKMxZokVP34MCi.json b/src/packs/items/weapons/weapon_Extended_Polearm_fJHKMxZokVP34MCi.json index 62bcb3e0..35829bd5 100644 --- a/src/packs/items/weapons/weapon_Extended_Polearm_fJHKMxZokVP34MCi.json +++ b/src/packs/items/weapons/weapon_Extended_Polearm_fJHKMxZokVP34MCi.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 10, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Finehair_Bow_ykF3jouxHZ6YR8Bg.json b/src/packs/items/weapons/weapon_Finehair_Bow_ykF3jouxHZ6YR8Bg.json index 6dc27659..d1bd58b5 100644 --- a/src/packs/items/weapons/weapon_Finehair_Bow_ykF3jouxHZ6YR8Bg.json +++ b/src/packs/items/weapons/weapon_Finehair_Bow_ykF3jouxHZ6YR8Bg.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 5, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Firestaff_BtCm2RhWEfs00g38.json b/src/packs/items/weapons/weapon_Firestaff_BtCm2RhWEfs00g38.json index 983f98d1..ba7350f4 100644 --- a/src/packs/items/weapons/weapon_Firestaff_BtCm2RhWEfs00g38.json +++ b/src/packs/items/weapons/weapon_Firestaff_BtCm2RhWEfs00g38.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 7, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Flickerfly_Blade_xLJ5RRpUoTRmAC3G.json b/src/packs/items/weapons/weapon_Flickerfly_Blade_xLJ5RRpUoTRmAC3G.json index 5dd5f04e..acf0cfd6 100644 --- a/src/packs/items/weapons/weapon_Flickerfly_Blade_xLJ5RRpUoTRmAC3G.json +++ b/src/packs/items/weapons/weapon_Flickerfly_Blade_xLJ5RRpUoTRmAC3G.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 5, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Floating_Bladeshards_3vti3xfo0wJND7ew.json b/src/packs/items/weapons/weapon_Floating_Bladeshards_3vti3xfo0wJND7ew.json index 232f26e9..0460e12d 100644 --- a/src/packs/items/weapons/weapon_Floating_Bladeshards_3vti3xfo0wJND7ew.json +++ b/src/packs/items/weapons/weapon_Floating_Bladeshards_3vti3xfo0wJND7ew.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 9, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Fusion_Gloves_uK1RhtYAsDeoPNGx.json b/src/packs/items/weapons/weapon_Fusion_Gloves_uK1RhtYAsDeoPNGx.json index 747bc046..034ad5cf 100644 --- a/src/packs/items/weapons/weapon_Fusion_Gloves_uK1RhtYAsDeoPNGx.json +++ b/src/packs/items/weapons/weapon_Fusion_Gloves_uK1RhtYAsDeoPNGx.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 9, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Ghostblade_6gFvOFTE97QZ74Zr.json b/src/packs/items/weapons/weapon_Ghostblade_6gFvOFTE97QZ74Zr.json index 7784b43d..0e17e0c2 100644 --- a/src/packs/items/weapons/weapon_Ghostblade_6gFvOFTE97QZ74Zr.json +++ b/src/packs/items/weapons/weapon_Ghostblade_6gFvOFTE97QZ74Zr.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 7, @@ -69,7 +69,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Gilded_Bow_ctTgFfMbM3YtmsYU.json b/src/packs/items/weapons/weapon_Gilded_Bow_ctTgFfMbM3YtmsYU.json index 88f5a163..0147cfdb 100644 --- a/src/packs/items/weapons/weapon_Gilded_Bow_ctTgFfMbM3YtmsYU.json +++ b/src/packs/items/weapons/weapon_Gilded_Bow_ctTgFfMbM3YtmsYU.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 7, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Gilded_Falchion_VwcOgqnzjf9LBj2S.json b/src/packs/items/weapons/weapon_Gilded_Falchion_VwcOgqnzjf9LBj2S.json index ee8afebc..fdf5835e 100644 --- a/src/packs/items/weapons/weapon_Gilded_Falchion_VwcOgqnzjf9LBj2S.json +++ b/src/packs/items/weapons/weapon_Gilded_Falchion_VwcOgqnzjf9LBj2S.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 4, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Glowing_Rings_wG9f5NpCwSbaLy8t.json b/src/packs/items/weapons/weapon_Glowing_Rings_wG9f5NpCwSbaLy8t.json index 214d08a9..8996dbc8 100644 --- a/src/packs/items/weapons/weapon_Glowing_Rings_wG9f5NpCwSbaLy8t.json +++ b/src/packs/items/weapons/weapon_Glowing_Rings_wG9f5NpCwSbaLy8t.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 1, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Grappler_iEzPscUc18GuFoB6.json b/src/packs/items/weapons/weapon_Grappler_iEzPscUc18GuFoB6.json index 7f42998b..9a9158c7 100644 --- a/src/packs/items/weapons/weapon_Grappler_iEzPscUc18GuFoB6.json +++ b/src/packs/items/weapons/weapon_Grappler_iEzPscUc18GuFoB6.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": null, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Greatbow_MXBpbqQsZFln4rZk.json b/src/packs/items/weapons/weapon_Greatbow_MXBpbqQsZFln4rZk.json index f56e77c7..87118bb8 100644 --- a/src/packs/items/weapons/weapon_Greatbow_MXBpbqQsZFln4rZk.json +++ b/src/packs/items/weapons/weapon_Greatbow_MXBpbqQsZFln4rZk.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 6, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Greatstaff_Yk8pTEmyLLi4095S.json b/src/packs/items/weapons/weapon_Greatstaff_Yk8pTEmyLLi4095S.json index 66c12e5e..798541d1 100644 --- a/src/packs/items/weapons/weapon_Greatstaff_Yk8pTEmyLLi4095S.json +++ b/src/packs/items/weapons/weapon_Greatstaff_Yk8pTEmyLLi4095S.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": null, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Greatsword_70ysaFJDREwTgvZa.json b/src/packs/items/weapons/weapon_Greatsword_70ysaFJDREwTgvZa.json index f60e438d..f0e450a4 100644 --- a/src/packs/items/weapons/weapon_Greatsword_70ysaFJDREwTgvZa.json +++ b/src/packs/items/weapons/weapon_Greatsword_70ysaFJDREwTgvZa.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 3, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Halberd_qT7FfmauAumOjJoq.json b/src/packs/items/weapons/weapon_Halberd_qT7FfmauAumOjJoq.json index 6259e63e..5a990da3 100644 --- a/src/packs/items/weapons/weapon_Halberd_qT7FfmauAumOjJoq.json +++ b/src/packs/items/weapons/weapon_Halberd_qT7FfmauAumOjJoq.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 2, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Hallowed_Axe_Vayg7CnRTFBrunjM.json b/src/packs/items/weapons/weapon_Hallowed_Axe_Vayg7CnRTFBrunjM.json index 9d8885b9..1fe37eba 100644 --- a/src/packs/items/weapons/weapon_Hallowed_Axe_Vayg7CnRTFBrunjM.json +++ b/src/packs/items/weapons/weapon_Hallowed_Axe_Vayg7CnRTFBrunjM.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 1, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Hammer_of_Exota_0lAkBEUvbM9Osmqb.json b/src/packs/items/weapons/weapon_Hammer_of_Exota_0lAkBEUvbM9Osmqb.json index ba955850..15e00303 100644 --- a/src/packs/items/weapons/weapon_Hammer_of_Exota_0lAkBEUvbM9Osmqb.json +++ b/src/packs/items/weapons/weapon_Hammer_of_Exota_0lAkBEUvbM9Osmqb.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 6, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Hammer_of_Wrath_1R4uzOpWD8bkYRUm.json b/src/packs/items/weapons/weapon_Hammer_of_Wrath_1R4uzOpWD8bkYRUm.json index 122c0769..fdab6f80 100644 --- a/src/packs/items/weapons/weapon_Hammer_of_Wrath_1R4uzOpWD8bkYRUm.json +++ b/src/packs/items/weapons/weapon_Hammer_of_Wrath_1R4uzOpWD8bkYRUm.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 7, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Hand_Cannon_MyGz8nd5sieRQ7zl.json b/src/packs/items/weapons/weapon_Hand_Cannon_MyGz8nd5sieRQ7zl.json index 1396fb1d..4967c6e4 100644 --- a/src/packs/items/weapons/weapon_Hand_Cannon_MyGz8nd5sieRQ7zl.json +++ b/src/packs/items/weapons/weapon_Hand_Cannon_MyGz8nd5sieRQ7zl.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 12, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Hand_Crossbow_zxKt6qXe7uZB6ljm.json b/src/packs/items/weapons/weapon_Hand_Crossbow_zxKt6qXe7uZB6ljm.json index 9f69ffc9..6501f5d4 100644 --- a/src/packs/items/weapons/weapon_Hand_Crossbow_zxKt6qXe7uZB6ljm.json +++ b/src/packs/items/weapons/weapon_Hand_Crossbow_zxKt6qXe7uZB6ljm.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 1, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Hand_Runes_3whiedn0jBMNRdIb.json b/src/packs/items/weapons/weapon_Hand_Runes_3whiedn0jBMNRdIb.json index 32761768..00cb6e9b 100644 --- a/src/packs/items/weapons/weapon_Hand_Runes_3whiedn0jBMNRdIb.json +++ b/src/packs/items/weapons/weapon_Hand_Runes_3whiedn0jBMNRdIb.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": null, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Hand_Sling_RAIaoMi6iO1PKIlK.json b/src/packs/items/weapons/weapon_Hand_Sling_RAIaoMi6iO1PKIlK.json index 82641ca1..5c110b70 100644 --- a/src/packs/items/weapons/weapon_Hand_Sling_RAIaoMi6iO1PKIlK.json +++ b/src/packs/items/weapons/weapon_Hand_Sling_RAIaoMi6iO1PKIlK.json @@ -11,8 +11,8 @@ "type": "attack", "damage": { "includeBase": false, - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -36,7 +36,7 @@ } } } - ] + } }, "range": "close", "roll": { @@ -113,8 +113,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -140,7 +140,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Heavy_Frame_Wheelchair_XjPQjhRCH08VUIbr.json b/src/packs/items/weapons/weapon_Heavy_Frame_Wheelchair_XjPQjhRCH08VUIbr.json index db20063d..e74ff4aa 100644 --- a/src/packs/items/weapons/weapon_Heavy_Frame_Wheelchair_XjPQjhRCH08VUIbr.json +++ b/src/packs/items/weapons/weapon_Heavy_Frame_Wheelchair_XjPQjhRCH08VUIbr.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d12", "bonus": 3, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Ilmari_s_Rifle_TMrUzVC3KvcHmdt8.json b/src/packs/items/weapons/weapon_Ilmari_s_Rifle_TMrUzVC3KvcHmdt8.json index 8234ab3a..cddd762a 100644 --- a/src/packs/items/weapons/weapon_Ilmari_s_Rifle_TMrUzVC3KvcHmdt8.json +++ b/src/packs/items/weapons/weapon_Ilmari_s_Rifle_TMrUzVC3KvcHmdt8.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 6, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Impact_Gauntlet_Zg6IutksQVOqAg8K.json b/src/packs/items/weapons/weapon_Impact_Gauntlet_Zg6IutksQVOqAg8K.json index 8c8cc81d..5e9891f9 100644 --- a/src/packs/items/weapons/weapon_Impact_Gauntlet_Zg6IutksQVOqAg8K.json +++ b/src/packs/items/weapons/weapon_Impact_Gauntlet_Zg6IutksQVOqAg8K.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 11, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Arcane_Frame_Wheelchair_N9P695V5KKlJbAY5.json b/src/packs/items/weapons/weapon_Improved_Arcane_Frame_Wheelchair_N9P695V5KKlJbAY5.json index fad45a2b..33f96030 100644 --- a/src/packs/items/weapons/weapon_Improved_Arcane_Frame_Wheelchair_N9P695V5KKlJbAY5.json +++ b/src/packs/items/weapons/weapon_Improved_Arcane_Frame_Wheelchair_N9P695V5KKlJbAY5.json @@ -48,8 +48,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 3, @@ -75,7 +75,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Arcane_Gauntlets_kENTDpa1hr5LDhIT.json b/src/packs/items/weapons/weapon_Improved_Arcane_Gauntlets_kENTDpa1hr5LDhIT.json index 40b85dde..1880d45b 100644 --- a/src/packs/items/weapons/weapon_Improved_Arcane_Gauntlets_kENTDpa1hr5LDhIT.json +++ b/src/packs/items/weapons/weapon_Improved_Arcane_Gauntlets_kENTDpa1hr5LDhIT.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 6, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Battleaxe_nxGUpuHLmuKdKsDC.json b/src/packs/items/weapons/weapon_Improved_Battleaxe_nxGUpuHLmuKdKsDC.json index 23068751..4652d62d 100644 --- a/src/packs/items/weapons/weapon_Improved_Battleaxe_nxGUpuHLmuKdKsDC.json +++ b/src/packs/items/weapons/weapon_Improved_Battleaxe_nxGUpuHLmuKdKsDC.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 6, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Broadsword_OcKeLJxvmdT81VBc.json b/src/packs/items/weapons/weapon_Improved_Broadsword_OcKeLJxvmdT81VBc.json index a17caadf..6d6f1921 100644 --- a/src/packs/items/weapons/weapon_Improved_Broadsword_OcKeLJxvmdT81VBc.json +++ b/src/packs/items/weapons/weapon_Improved_Broadsword_OcKeLJxvmdT81VBc.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 3, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Crossbow_55NwHIIZHUeKSE3M.json b/src/packs/items/weapons/weapon_Improved_Crossbow_55NwHIIZHUeKSE3M.json index 185f8f11..5bc082ef 100644 --- a/src/packs/items/weapons/weapon_Improved_Crossbow_55NwHIIZHUeKSE3M.json +++ b/src/packs/items/weapons/weapon_Improved_Crossbow_55NwHIIZHUeKSE3M.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Cutlass_ddRjXnp2vbohu7rJ.json b/src/packs/items/weapons/weapon_Improved_Cutlass_ddRjXnp2vbohu7rJ.json index 520e5679..87dfbfae 100644 --- a/src/packs/items/weapons/weapon_Improved_Cutlass_ddRjXnp2vbohu7rJ.json +++ b/src/packs/items/weapons/weapon_Improved_Cutlass_ddRjXnp2vbohu7rJ.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 4, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Dagger_ScjTkb9qrndhlk9S.json b/src/packs/items/weapons/weapon_Improved_Dagger_ScjTkb9qrndhlk9S.json index 1db4504e..194ec879 100644 --- a/src/packs/items/weapons/weapon_Improved_Dagger_ScjTkb9qrndhlk9S.json +++ b/src/packs/items/weapons/weapon_Improved_Dagger_ScjTkb9qrndhlk9S.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 4, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Dualstaff_f7hhHlZ5nL3AhYEM.json b/src/packs/items/weapons/weapon_Improved_Dualstaff_f7hhHlZ5nL3AhYEM.json index 84cc75ba..d614130e 100644 --- a/src/packs/items/weapons/weapon_Improved_Dualstaff_f7hhHlZ5nL3AhYEM.json +++ b/src/packs/items/weapons/weapon_Improved_Dualstaff_f7hhHlZ5nL3AhYEM.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 6, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Glowing_Rings_N5amhkxR1xn3B7r2.json b/src/packs/items/weapons/weapon_Improved_Glowing_Rings_N5amhkxR1xn3B7r2.json index 01439f5b..f8b29720 100644 --- a/src/packs/items/weapons/weapon_Improved_Glowing_Rings_N5amhkxR1xn3B7r2.json +++ b/src/packs/items/weapons/weapon_Improved_Glowing_Rings_N5amhkxR1xn3B7r2.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 5, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Grappler_3T3o9zfe61t22L1H.json b/src/packs/items/weapons/weapon_Improved_Grappler_3T3o9zfe61t22L1H.json index 74ee510a..31dfff22 100644 --- a/src/packs/items/weapons/weapon_Improved_Grappler_3T3o9zfe61t22L1H.json +++ b/src/packs/items/weapons/weapon_Improved_Grappler_3T3o9zfe61t22L1H.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 2, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Greatstaff_LCuTrYXi4lhg6LqW.json b/src/packs/items/weapons/weapon_Improved_Greatstaff_LCuTrYXi4lhg6LqW.json index cf1bdf63..25be3393 100644 --- a/src/packs/items/weapons/weapon_Improved_Greatstaff_LCuTrYXi4lhg6LqW.json +++ b/src/packs/items/weapons/weapon_Improved_Greatstaff_LCuTrYXi4lhg6LqW.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 3, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Greatsword_FPX4ouDrxXiQ5MDf.json b/src/packs/items/weapons/weapon_Improved_Greatsword_FPX4ouDrxXiQ5MDf.json index f71e5ea6..60e5dd53 100644 --- a/src/packs/items/weapons/weapon_Improved_Greatsword_FPX4ouDrxXiQ5MDf.json +++ b/src/packs/items/weapons/weapon_Improved_Greatsword_FPX4ouDrxXiQ5MDf.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 6, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Halberd_F9PETfCQGwczBPif.json b/src/packs/items/weapons/weapon_Improved_Halberd_F9PETfCQGwczBPif.json index 168d8953..fb5a1dcc 100644 --- a/src/packs/items/weapons/weapon_Improved_Halberd_F9PETfCQGwczBPif.json +++ b/src/packs/items/weapons/weapon_Improved_Halberd_F9PETfCQGwczBPif.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 5, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Hallowed_Axe_wFOXMN2uiX4j6Gd9.json b/src/packs/items/weapons/weapon_Improved_Hallowed_Axe_wFOXMN2uiX4j6Gd9.json index a79ad56d..71b28bea 100644 --- a/src/packs/items/weapons/weapon_Improved_Hallowed_Axe_wFOXMN2uiX4j6Gd9.json +++ b/src/packs/items/weapons/weapon_Improved_Hallowed_Axe_wFOXMN2uiX4j6Gd9.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 4, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Hand_Crossbow_XEDRkuw3BhMoVBn9.json b/src/packs/items/weapons/weapon_Improved_Hand_Crossbow_XEDRkuw3BhMoVBn9.json index 74e74f2c..91641856 100644 --- a/src/packs/items/weapons/weapon_Improved_Hand_Crossbow_XEDRkuw3BhMoVBn9.json +++ b/src/packs/items/weapons/weapon_Improved_Hand_Crossbow_XEDRkuw3BhMoVBn9.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 3, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Hand_Runes_jMEukC3VpNDz5AOD.json b/src/packs/items/weapons/weapon_Improved_Hand_Runes_jMEukC3VpNDz5AOD.json index 546e9762..dc7f2005 100644 --- a/src/packs/items/weapons/weapon_Improved_Hand_Runes_jMEukC3VpNDz5AOD.json +++ b/src/packs/items/weapons/weapon_Improved_Hand_Runes_jMEukC3VpNDz5AOD.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 3, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Heavy_Frame_Wheelchair_L5KeCtrs768PmYWW.json b/src/packs/items/weapons/weapon_Improved_Heavy_Frame_Wheelchair_L5KeCtrs768PmYWW.json index 3a386fa8..e65cc221 100644 --- a/src/packs/items/weapons/weapon_Improved_Heavy_Frame_Wheelchair_L5KeCtrs768PmYWW.json +++ b/src/packs/items/weapons/weapon_Improved_Heavy_Frame_Wheelchair_L5KeCtrs768PmYWW.json @@ -48,8 +48,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d12", "bonus": 6, @@ -75,7 +75,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Light_Frame_Wheelchair_ZJsetdHKV77ygtCE.json b/src/packs/items/weapons/weapon_Improved_Light_Frame_Wheelchair_ZJsetdHKV77ygtCE.json index 6fbe3c9d..315ceaf3 100644 --- a/src/packs/items/weapons/weapon_Improved_Light_Frame_Wheelchair_ZJsetdHKV77ygtCE.json +++ b/src/packs/items/weapons/weapon_Improved_Light_Frame_Wheelchair_ZJsetdHKV77ygtCE.json @@ -77,8 +77,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 3, @@ -104,7 +104,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Longbow_NacNonjbzyoVMNhI.json b/src/packs/items/weapons/weapon_Improved_Longbow_NacNonjbzyoVMNhI.json index 787d5a28..c197f726 100644 --- a/src/packs/items/weapons/weapon_Improved_Longbow_NacNonjbzyoVMNhI.json +++ b/src/packs/items/weapons/weapon_Improved_Longbow_NacNonjbzyoVMNhI.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 6, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Longsword_QyBZ5NxM8F9nCL9s.json b/src/packs/items/weapons/weapon_Improved_Longsword_QyBZ5NxM8F9nCL9s.json index 982ca3ac..aaa38270 100644 --- a/src/packs/items/weapons/weapon_Improved_Longsword_QyBZ5NxM8F9nCL9s.json +++ b/src/packs/items/weapons/weapon_Improved_Longsword_QyBZ5NxM8F9nCL9s.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 6, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Mace_zSLx52U4Yltqx8F1.json b/src/packs/items/weapons/weapon_Improved_Mace_zSLx52U4Yltqx8F1.json index c1b626d5..1ce84304 100644 --- a/src/packs/items/weapons/weapon_Improved_Mace_zSLx52U4Yltqx8F1.json +++ b/src/packs/items/weapons/weapon_Improved_Mace_zSLx52U4Yltqx8F1.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 4, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Quarterstaff_BEmAR60PM3ZaiNXa.json b/src/packs/items/weapons/weapon_Improved_Quarterstaff_BEmAR60PM3ZaiNXa.json index 888022ed..9dc81b98 100644 --- a/src/packs/items/weapons/weapon_Improved_Quarterstaff_BEmAR60PM3ZaiNXa.json +++ b/src/packs/items/weapons/weapon_Improved_Quarterstaff_BEmAR60PM3ZaiNXa.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 6, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Rapier_LFPH8nD2f4Blv3AM.json b/src/packs/items/weapons/weapon_Improved_Rapier_LFPH8nD2f4Blv3AM.json index cc6099da..e9db95d1 100644 --- a/src/packs/items/weapons/weapon_Improved_Rapier_LFPH8nD2f4Blv3AM.json +++ b/src/packs/items/weapons/weapon_Improved_Rapier_LFPH8nD2f4Blv3AM.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 3, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Returning_Blade_SKNwkW23eVQjN4Zy.json b/src/packs/items/weapons/weapon_Improved_Returning_Blade_SKNwkW23eVQjN4Zy.json index 31688a23..1dff30a1 100644 --- a/src/packs/items/weapons/weapon_Improved_Returning_Blade_SKNwkW23eVQjN4Zy.json +++ b/src/packs/items/weapons/weapon_Improved_Returning_Blade_SKNwkW23eVQjN4Zy.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 3, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Round_Shield_DlinEBGZfIlvreO3.json b/src/packs/items/weapons/weapon_Improved_Round_Shield_DlinEBGZfIlvreO3.json index 53a8e9b6..091355c2 100644 --- a/src/packs/items/weapons/weapon_Improved_Round_Shield_DlinEBGZfIlvreO3.json +++ b/src/packs/items/weapons/weapon_Improved_Round_Shield_DlinEBGZfIlvreO3.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d4", "bonus": 2, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Scepter_tj26lbNkwy8bORF4.json b/src/packs/items/weapons/weapon_Improved_Scepter_tj26lbNkwy8bORF4.json index dc41692f..ac226b84 100644 --- a/src/packs/items/weapons/weapon_Improved_Scepter_tj26lbNkwy8bORF4.json +++ b/src/packs/items/weapons/weapon_Improved_Scepter_tj26lbNkwy8bORF4.json @@ -11,8 +11,8 @@ "type": "attack", "damage": { "includeBase": false, - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -38,7 +38,7 @@ } } } - ] + } }, "range": "melee", "roll": { @@ -115,8 +115,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 3, @@ -142,7 +142,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Shortbow_6ZWl6ARfvYBaAMwY.json b/src/packs/items/weapons/weapon_Improved_Shortbow_6ZWl6ARfvYBaAMwY.json index 421b8f8e..b0e101fb 100644 --- a/src/packs/items/weapons/weapon_Improved_Shortbow_6ZWl6ARfvYBaAMwY.json +++ b/src/packs/items/weapons/weapon_Improved_Shortbow_6ZWl6ARfvYBaAMwY.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 6, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Shortstaff_Mn8ja5Oi1sXvvPSk.json b/src/packs/items/weapons/weapon_Improved_Shortstaff_Mn8ja5Oi1sXvvPSk.json index 08bf9251..7d90cf94 100644 --- a/src/packs/items/weapons/weapon_Improved_Shortstaff_Mn8ja5Oi1sXvvPSk.json +++ b/src/packs/items/weapons/weapon_Improved_Shortstaff_Mn8ja5Oi1sXvvPSk.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 4, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json b/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json index df2f324c..96ecd37f 100644 --- a/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json +++ b/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 2, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Small_Dagger_nMuF8ZDZ2aXZVTg6.json b/src/packs/items/weapons/weapon_Improved_Small_Dagger_nMuF8ZDZ2aXZVTg6.json index b69332a5..1553d75d 100644 --- a/src/packs/items/weapons/weapon_Improved_Small_Dagger_nMuF8ZDZ2aXZVTg6.json +++ b/src/packs/items/weapons/weapon_Improved_Small_Dagger_nMuF8ZDZ2aXZVTg6.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 2, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Spear_j5Pt1thLfcvopBij.json b/src/packs/items/weapons/weapon_Improved_Spear_j5Pt1thLfcvopBij.json index ae6b0987..790f9e51 100644 --- a/src/packs/items/weapons/weapon_Improved_Spear_j5Pt1thLfcvopBij.json +++ b/src/packs/items/weapons/weapon_Improved_Spear_j5Pt1thLfcvopBij.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 6, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Tower_Shield_bxt3NsbMqTSdI5ab.json b/src/packs/items/weapons/weapon_Improved_Tower_Shield_bxt3NsbMqTSdI5ab.json index 839d4352..6f55fe3d 100644 --- a/src/packs/items/weapons/weapon_Improved_Tower_Shield_bxt3NsbMqTSdI5ab.json +++ b/src/packs/items/weapons/weapon_Improved_Tower_Shield_bxt3NsbMqTSdI5ab.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 2, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Wand_6d9B2b5X2d2U56jt.json b/src/packs/items/weapons/weapon_Improved_Wand_6d9B2b5X2d2U56jt.json index cecb818d..53ee6746 100644 --- a/src/packs/items/weapons/weapon_Improved_Wand_6d9B2b5X2d2U56jt.json +++ b/src/packs/items/weapons/weapon_Improved_Wand_6d9B2b5X2d2U56jt.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Warhammer_pxaN4ZK4eqKrjtWj.json b/src/packs/items/weapons/weapon_Improved_Warhammer_pxaN4ZK4eqKrjtWj.json index 40a5faba..aa24c4ad 100644 --- a/src/packs/items/weapons/weapon_Improved_Warhammer_pxaN4ZK4eqKrjtWj.json +++ b/src/packs/items/weapons/weapon_Improved_Warhammer_pxaN4ZK4eqKrjtWj.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d12", "bonus": 6, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Improved_Whip_ftTp8VlsBQ1r4LFD.json b/src/packs/items/weapons/weapon_Improved_Whip_ftTp8VlsBQ1r4LFD.json index dff7fb25..4dd1dcb1 100644 --- a/src/packs/items/weapons/weapon_Improved_Whip_ftTp8VlsBQ1r4LFD.json +++ b/src/packs/items/weapons/weapon_Improved_Whip_ftTp8VlsBQ1r4LFD.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 2, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Keeper_s_Staff_q382JqMkqLaaFLIr.json b/src/packs/items/weapons/weapon_Keeper_s_Staff_q382JqMkqLaaFLIr.json index 27b8044b..21fe863b 100644 --- a/src/packs/items/weapons/weapon_Keeper_s_Staff_q382JqMkqLaaFLIr.json +++ b/src/packs/items/weapons/weapon_Keeper_s_Staff_q382JqMkqLaaFLIr.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Knuckle_Blades_U8gfyvxoHm024inM.json b/src/packs/items/weapons/weapon_Knuckle_Blades_U8gfyvxoHm024inM.json index 6bc27412..56ff6d62 100644 --- a/src/packs/items/weapons/weapon_Knuckle_Blades_U8gfyvxoHm024inM.json +++ b/src/packs/items/weapons/weapon_Knuckle_Blades_U8gfyvxoHm024inM.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 6, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Knuckle_Claws_SFqganS8Du4aEKjQ.json b/src/packs/items/weapons/weapon_Knuckle_Claws_SFqganS8Du4aEKjQ.json index df995a3f..a7629e7d 100644 --- a/src/packs/items/weapons/weapon_Knuckle_Claws_SFqganS8Du4aEKjQ.json +++ b/src/packs/items/weapons/weapon_Knuckle_Claws_SFqganS8Du4aEKjQ.json @@ -72,8 +72,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 8, @@ -99,7 +99,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Labrys_Axe_ijWppQzSOqVCb3rE.json b/src/packs/items/weapons/weapon_Labrys_Axe_ijWppQzSOqVCb3rE.json index 4958bbe5..0dd7d23a 100644 --- a/src/packs/items/weapons/weapon_Labrys_Axe_ijWppQzSOqVCb3rE.json +++ b/src/packs/items/weapons/weapon_Labrys_Axe_ijWppQzSOqVCb3rE.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 7, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Arcane_Frame_Wheelchair_gA2tiET9VHGhwMoO.json b/src/packs/items/weapons/weapon_Legendary_Arcane_Frame_Wheelchair_gA2tiET9VHGhwMoO.json index d8068f41..f947acac 100644 --- a/src/packs/items/weapons/weapon_Legendary_Arcane_Frame_Wheelchair_gA2tiET9VHGhwMoO.json +++ b/src/packs/items/weapons/weapon_Legendary_Arcane_Frame_Wheelchair_gA2tiET9VHGhwMoO.json @@ -48,8 +48,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 9, @@ -75,7 +75,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Arcane_Gauntlets_umADDPYCaykXDc1v.json b/src/packs/items/weapons/weapon_Legendary_Arcane_Gauntlets_umADDPYCaykXDc1v.json index 94da915c..c7adc0f2 100644 --- a/src/packs/items/weapons/weapon_Legendary_Arcane_Gauntlets_umADDPYCaykXDc1v.json +++ b/src/packs/items/weapons/weapon_Legendary_Arcane_Gauntlets_umADDPYCaykXDc1v.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 12, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Battleaxe_1nztpLzoHGfbKf5x.json b/src/packs/items/weapons/weapon_Legendary_Battleaxe_1nztpLzoHGfbKf5x.json index 06a8a85f..3c22e3f2 100644 --- a/src/packs/items/weapons/weapon_Legendary_Battleaxe_1nztpLzoHGfbKf5x.json +++ b/src/packs/items/weapons/weapon_Legendary_Battleaxe_1nztpLzoHGfbKf5x.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 12, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Broadsword_y3hfTPfZhMognyaJ.json b/src/packs/items/weapons/weapon_Legendary_Broadsword_y3hfTPfZhMognyaJ.json index 786ba8b6..361d0353 100644 --- a/src/packs/items/weapons/weapon_Legendary_Broadsword_y3hfTPfZhMognyaJ.json +++ b/src/packs/items/weapons/weapon_Legendary_Broadsword_y3hfTPfZhMognyaJ.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 9, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Crossbow_1G6xX2QL9O0Rsgz7.json b/src/packs/items/weapons/weapon_Legendary_Crossbow_1G6xX2QL9O0Rsgz7.json index e263bcbe..358cdd56 100644 --- a/src/packs/items/weapons/weapon_Legendary_Crossbow_1G6xX2QL9O0Rsgz7.json +++ b/src/packs/items/weapons/weapon_Legendary_Crossbow_1G6xX2QL9O0Rsgz7.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 10, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Cutlass_Rpyz0jbFJ1SwqfyD.json b/src/packs/items/weapons/weapon_Legendary_Cutlass_Rpyz0jbFJ1SwqfyD.json index 2c284332..9ce1b48a 100644 --- a/src/packs/items/weapons/weapon_Legendary_Cutlass_Rpyz0jbFJ1SwqfyD.json +++ b/src/packs/items/weapons/weapon_Legendary_Cutlass_Rpyz0jbFJ1SwqfyD.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 10, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Dagger_GmTg3Fdne1UPNs8t.json b/src/packs/items/weapons/weapon_Legendary_Dagger_GmTg3Fdne1UPNs8t.json index 0e9e988d..a7bb2fc9 100644 --- a/src/packs/items/weapons/weapon_Legendary_Dagger_GmTg3Fdne1UPNs8t.json +++ b/src/packs/items/weapons/weapon_Legendary_Dagger_GmTg3Fdne1UPNs8t.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 10, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Dualstaff_o3rsLvImcLAx5TvD.json b/src/packs/items/weapons/weapon_Legendary_Dualstaff_o3rsLvImcLAx5TvD.json index 9c618ba5..b06909e4 100644 --- a/src/packs/items/weapons/weapon_Legendary_Dualstaff_o3rsLvImcLAx5TvD.json +++ b/src/packs/items/weapons/weapon_Legendary_Dualstaff_o3rsLvImcLAx5TvD.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 12, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Glowing_Rings_PReWrfuPjoNQuieo.json b/src/packs/items/weapons/weapon_Legendary_Glowing_Rings_PReWrfuPjoNQuieo.json index 1710084f..ca9937ee 100644 --- a/src/packs/items/weapons/weapon_Legendary_Glowing_Rings_PReWrfuPjoNQuieo.json +++ b/src/packs/items/weapons/weapon_Legendary_Glowing_Rings_PReWrfuPjoNQuieo.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 11, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Grappler_IrtUj0UntBMNn49G.json b/src/packs/items/weapons/weapon_Legendary_Grappler_IrtUj0UntBMNn49G.json index 83334710..f20425b2 100644 --- a/src/packs/items/weapons/weapon_Legendary_Grappler_IrtUj0UntBMNn49G.json +++ b/src/packs/items/weapons/weapon_Legendary_Grappler_IrtUj0UntBMNn49G.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 6, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Greatstaff_jDtvEabkHY1GFgfc.json b/src/packs/items/weapons/weapon_Legendary_Greatstaff_jDtvEabkHY1GFgfc.json index a5ea82f9..09fd1f7a 100644 --- a/src/packs/items/weapons/weapon_Legendary_Greatstaff_jDtvEabkHY1GFgfc.json +++ b/src/packs/items/weapons/weapon_Legendary_Greatstaff_jDtvEabkHY1GFgfc.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 9, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Greatsword_zMZ46F9VR7zdTxb9.json b/src/packs/items/weapons/weapon_Legendary_Greatsword_zMZ46F9VR7zdTxb9.json index 840e7ec7..aa9d2ef0 100644 --- a/src/packs/items/weapons/weapon_Legendary_Greatsword_zMZ46F9VR7zdTxb9.json +++ b/src/packs/items/weapons/weapon_Legendary_Greatsword_zMZ46F9VR7zdTxb9.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 12, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Halberd_1AuMNiJz96Ez9fur.json b/src/packs/items/weapons/weapon_Legendary_Halberd_1AuMNiJz96Ez9fur.json index 22e6af1b..af6b2a07 100644 --- a/src/packs/items/weapons/weapon_Legendary_Halberd_1AuMNiJz96Ez9fur.json +++ b/src/packs/items/weapons/weapon_Legendary_Halberd_1AuMNiJz96Ez9fur.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 11, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Hallowed_Axe_0HmhnZnv1I6uX69c.json b/src/packs/items/weapons/weapon_Legendary_Hallowed_Axe_0HmhnZnv1I6uX69c.json index 2bf11f05..70379d45 100644 --- a/src/packs/items/weapons/weapon_Legendary_Hallowed_Axe_0HmhnZnv1I6uX69c.json +++ b/src/packs/items/weapons/weapon_Legendary_Hallowed_Axe_0HmhnZnv1I6uX69c.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 10, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Hand_Crossbow_32nYyMaeDWaakSxz.json b/src/packs/items/weapons/weapon_Legendary_Hand_Crossbow_32nYyMaeDWaakSxz.json index ff43c21b..930310a8 100644 --- a/src/packs/items/weapons/weapon_Legendary_Hand_Crossbow_32nYyMaeDWaakSxz.json +++ b/src/packs/items/weapons/weapon_Legendary_Hand_Crossbow_32nYyMaeDWaakSxz.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 7, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Hand_Runes_DWLkswhluXuMy3bB.json b/src/packs/items/weapons/weapon_Legendary_Hand_Runes_DWLkswhluXuMy3bB.json index 2dcad490..e909f460 100644 --- a/src/packs/items/weapons/weapon_Legendary_Hand_Runes_DWLkswhluXuMy3bB.json +++ b/src/packs/items/weapons/weapon_Legendary_Hand_Runes_DWLkswhluXuMy3bB.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 9, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Heavy_Frame_Wheelchair_S6nB0CNlzdU05o5U.json b/src/packs/items/weapons/weapon_Legendary_Heavy_Frame_Wheelchair_S6nB0CNlzdU05o5U.json index 7e561c26..d8816fc9 100644 --- a/src/packs/items/weapons/weapon_Legendary_Heavy_Frame_Wheelchair_S6nB0CNlzdU05o5U.json +++ b/src/packs/items/weapons/weapon_Legendary_Heavy_Frame_Wheelchair_S6nB0CNlzdU05o5U.json @@ -48,8 +48,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d12", "bonus": 12, @@ -75,7 +75,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Light_Frame_Wheelchair_Xt8tVSn5Fu6ly6LF.json b/src/packs/items/weapons/weapon_Legendary_Light_Frame_Wheelchair_Xt8tVSn5Fu6ly6LF.json index 9f96601c..7afbd979 100644 --- a/src/packs/items/weapons/weapon_Legendary_Light_Frame_Wheelchair_Xt8tVSn5Fu6ly6LF.json +++ b/src/packs/items/weapons/weapon_Legendary_Light_Frame_Wheelchair_Xt8tVSn5Fu6ly6LF.json @@ -77,8 +77,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 9, @@ -104,7 +104,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Longbow_Utt1GpoH1fhaTOtN.json b/src/packs/items/weapons/weapon_Legendary_Longbow_Utt1GpoH1fhaTOtN.json index bb0b8ab3..bd5ab13b 100644 --- a/src/packs/items/weapons/weapon_Legendary_Longbow_Utt1GpoH1fhaTOtN.json +++ b/src/packs/items/weapons/weapon_Legendary_Longbow_Utt1GpoH1fhaTOtN.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 12, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Longsword_14abPqQcROJfDChR.json b/src/packs/items/weapons/weapon_Legendary_Longsword_14abPqQcROJfDChR.json index 9399edd4..e6555b02 100644 --- a/src/packs/items/weapons/weapon_Legendary_Longsword_14abPqQcROJfDChR.json +++ b/src/packs/items/weapons/weapon_Legendary_Longsword_14abPqQcROJfDChR.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 12, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Mace_RsDsy7tIhrhaAQQc.json b/src/packs/items/weapons/weapon_Legendary_Mace_RsDsy7tIhrhaAQQc.json index 95de32f0..7f4a9dab 100644 --- a/src/packs/items/weapons/weapon_Legendary_Mace_RsDsy7tIhrhaAQQc.json +++ b/src/packs/items/weapons/weapon_Legendary_Mace_RsDsy7tIhrhaAQQc.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 10, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Quarterstaff_1ZciqG7vIKLYpKsP.json b/src/packs/items/weapons/weapon_Legendary_Quarterstaff_1ZciqG7vIKLYpKsP.json index cf25daa7..91bc8ac8 100644 --- a/src/packs/items/weapons/weapon_Legendary_Quarterstaff_1ZciqG7vIKLYpKsP.json +++ b/src/packs/items/weapons/weapon_Legendary_Quarterstaff_1ZciqG7vIKLYpKsP.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 12, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Rapier_BakN97v4jTePcXiZ.json b/src/packs/items/weapons/weapon_Legendary_Rapier_BakN97v4jTePcXiZ.json index 59a49063..d5bac6d1 100644 --- a/src/packs/items/weapons/weapon_Legendary_Rapier_BakN97v4jTePcXiZ.json +++ b/src/packs/items/weapons/weapon_Legendary_Rapier_BakN97v4jTePcXiZ.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 9, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Returning_Blade_mcj3CPkcSSDdAcBB.json b/src/packs/items/weapons/weapon_Legendary_Returning_Blade_mcj3CPkcSSDdAcBB.json index 211c88c2..b3f3fc3d 100644 --- a/src/packs/items/weapons/weapon_Legendary_Returning_Blade_mcj3CPkcSSDdAcBB.json +++ b/src/packs/items/weapons/weapon_Legendary_Returning_Blade_mcj3CPkcSSDdAcBB.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 9, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Round_Shield_A28WL9E2lJ3iLZHW.json b/src/packs/items/weapons/weapon_Legendary_Round_Shield_A28WL9E2lJ3iLZHW.json index c7b18355..5eedb6c2 100644 --- a/src/packs/items/weapons/weapon_Legendary_Round_Shield_A28WL9E2lJ3iLZHW.json +++ b/src/packs/items/weapons/weapon_Legendary_Round_Shield_A28WL9E2lJ3iLZHW.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d4", "bonus": 6, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Scepter_IZ4CWNxfuM46JeCN.json b/src/packs/items/weapons/weapon_Legendary_Scepter_IZ4CWNxfuM46JeCN.json index 9630fd69..882ecfdf 100644 --- a/src/packs/items/weapons/weapon_Legendary_Scepter_IZ4CWNxfuM46JeCN.json +++ b/src/packs/items/weapons/weapon_Legendary_Scepter_IZ4CWNxfuM46JeCN.json @@ -11,8 +11,8 @@ "type": "attack", "damage": { "includeBase": false, - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -38,7 +38,7 @@ } } } - ] + } }, "range": "melee", "roll": { @@ -115,8 +115,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 9, @@ -142,7 +142,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Shortbow_j7kp36jaetfn5jb3.json b/src/packs/items/weapons/weapon_Legendary_Shortbow_j7kp36jaetfn5jb3.json index 7fad3f95..b3dbd210 100644 --- a/src/packs/items/weapons/weapon_Legendary_Shortbow_j7kp36jaetfn5jb3.json +++ b/src/packs/items/weapons/weapon_Legendary_Shortbow_j7kp36jaetfn5jb3.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 12, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Shortstaff_D3SbNvNJZAFuzfhg.json b/src/packs/items/weapons/weapon_Legendary_Shortstaff_D3SbNvNJZAFuzfhg.json index 59d53e44..3d29bc25 100644 --- a/src/packs/items/weapons/weapon_Legendary_Shortstaff_D3SbNvNJZAFuzfhg.json +++ b/src/packs/items/weapons/weapon_Legendary_Shortstaff_D3SbNvNJZAFuzfhg.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 10, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json b/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json index d7f9632a..a2203a1d 100644 --- a/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json +++ b/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 6, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Small_Dagger_Px3Rh3kIvAqyISxJ.json b/src/packs/items/weapons/weapon_Legendary_Small_Dagger_Px3Rh3kIvAqyISxJ.json index c6bf5437..cf63bde2 100644 --- a/src/packs/items/weapons/weapon_Legendary_Small_Dagger_Px3Rh3kIvAqyISxJ.json +++ b/src/packs/items/weapons/weapon_Legendary_Small_Dagger_Px3Rh3kIvAqyISxJ.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 6, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Spear_4e5pWxi2qohuGsWh.json b/src/packs/items/weapons/weapon_Legendary_Spear_4e5pWxi2qohuGsWh.json index 114ea79e..e0248f4b 100644 --- a/src/packs/items/weapons/weapon_Legendary_Spear_4e5pWxi2qohuGsWh.json +++ b/src/packs/items/weapons/weapon_Legendary_Spear_4e5pWxi2qohuGsWh.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 12, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Tower_Shield_MaJIROht7A9LxIZx.json b/src/packs/items/weapons/weapon_Legendary_Tower_Shield_MaJIROht7A9LxIZx.json index 47e707d3..49ca454a 100644 --- a/src/packs/items/weapons/weapon_Legendary_Tower_Shield_MaJIROht7A9LxIZx.json +++ b/src/packs/items/weapons/weapon_Legendary_Tower_Shield_MaJIROht7A9LxIZx.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 6, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Wand_wPjg0LufJH9vUfVM.json b/src/packs/items/weapons/weapon_Legendary_Wand_wPjg0LufJH9vUfVM.json index 4bb0acd9..65925525 100644 --- a/src/packs/items/weapons/weapon_Legendary_Wand_wPjg0LufJH9vUfVM.json +++ b/src/packs/items/weapons/weapon_Legendary_Wand_wPjg0LufJH9vUfVM.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 10, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Warhammer_W9ymfEDck2icfvla.json b/src/packs/items/weapons/weapon_Legendary_Warhammer_W9ymfEDck2icfvla.json index 0918f8b1..562122d2 100644 --- a/src/packs/items/weapons/weapon_Legendary_Warhammer_W9ymfEDck2icfvla.json +++ b/src/packs/items/weapons/weapon_Legendary_Warhammer_W9ymfEDck2icfvla.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d12", "bonus": 12, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Legendary_Whip_Wcdbf6yS3LEt7nsg.json b/src/packs/items/weapons/weapon_Legendary_Whip_Wcdbf6yS3LEt7nsg.json index 83ac59c7..baf6d369 100644 --- a/src/packs/items/weapons/weapon_Legendary_Whip_Wcdbf6yS3LEt7nsg.json +++ b/src/packs/items/weapons/weapon_Legendary_Whip_Wcdbf6yS3LEt7nsg.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 6, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Light_Frame_Wheelchair_iaGnlUkShBgdeMo0.json b/src/packs/items/weapons/weapon_Light_Frame_Wheelchair_iaGnlUkShBgdeMo0.json index fdda2b56..7fadde01 100644 --- a/src/packs/items/weapons/weapon_Light_Frame_Wheelchair_iaGnlUkShBgdeMo0.json +++ b/src/packs/items/weapons/weapon_Light_Frame_Wheelchair_iaGnlUkShBgdeMo0.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "type": [ "physical" ], @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Longbow_YfVs6Se903az4Yet.json b/src/packs/items/weapons/weapon_Longbow_YfVs6Se903az4Yet.json index c6e98bc4..43af46ab 100644 --- a/src/packs/items/weapons/weapon_Longbow_YfVs6Se903az4Yet.json +++ b/src/packs/items/weapons/weapon_Longbow_YfVs6Se903az4Yet.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 3, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Longsword_Iv8BZM1R24QMT72M.json b/src/packs/items/weapons/weapon_Longsword_Iv8BZM1R24QMT72M.json index cba1bac8..3961d7c3 100644 --- a/src/packs/items/weapons/weapon_Longsword_Iv8BZM1R24QMT72M.json +++ b/src/packs/items/weapons/weapon_Longsword_Iv8BZM1R24QMT72M.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 3, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Mace_cKQCDyM2UopDL9zF.json b/src/packs/items/weapons/weapon_Mace_cKQCDyM2UopDL9zF.json index 0e6670f4..7a7582cb 100644 --- a/src/packs/items/weapons/weapon_Mace_cKQCDyM2UopDL9zF.json +++ b/src/packs/items/weapons/weapon_Mace_cKQCDyM2UopDL9zF.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 1, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Mage_Orb_XKBmBUEoGLdLcuqQ.json b/src/packs/items/weapons/weapon_Mage_Orb_XKBmBUEoGLdLcuqQ.json index 3b5983f5..dbd218f1 100644 --- a/src/packs/items/weapons/weapon_Mage_Orb_XKBmBUEoGLdLcuqQ.json +++ b/src/packs/items/weapons/weapon_Mage_Orb_XKBmBUEoGLdLcuqQ.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 7, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Magus_Revolver_jGykNGQiKm63tCiE.json b/src/packs/items/weapons/weapon_Magus_Revolver_jGykNGQiKm63tCiE.json index 42a65010..9dbbb1c1 100644 --- a/src/packs/items/weapons/weapon_Magus_Revolver_jGykNGQiKm63tCiE.json +++ b/src/packs/items/weapons/weapon_Magus_Revolver_jGykNGQiKm63tCiE.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 13, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Meridian_Cutlass_Gi26Zk9VqlAAgx3E.json b/src/packs/items/weapons/weapon_Meridian_Cutlass_Gi26Zk9VqlAAgx3E.json index dcc236a0..b83a18be 100644 --- a/src/packs/items/weapons/weapon_Meridian_Cutlass_Gi26Zk9VqlAAgx3E.json +++ b/src/packs/items/weapons/weapon_Meridian_Cutlass_Gi26Zk9VqlAAgx3E.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 5, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Midas_Scythe_BdLfy5i488VZgkjP.json b/src/packs/items/weapons/weapon_Midas_Scythe_BdLfy5i488VZgkjP.json index 799413be..57fe2367 100644 --- a/src/packs/items/weapons/weapon_Midas_Scythe_BdLfy5i488VZgkjP.json +++ b/src/packs/items/weapons/weapon_Midas_Scythe_BdLfy5i488VZgkjP.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 9, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Parrying_Dagger_taAZDkDCpeNgxhnn.json b/src/packs/items/weapons/weapon_Parrying_Dagger_taAZDkDCpeNgxhnn.json index 482d813b..b5844e89 100644 --- a/src/packs/items/weapons/weapon_Parrying_Dagger_taAZDkDCpeNgxhnn.json +++ b/src/packs/items/weapons/weapon_Parrying_Dagger_taAZDkDCpeNgxhnn.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 2, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Powered_Gauntlet_bW3xw5S9DbaLCN3E.json b/src/packs/items/weapons/weapon_Powered_Gauntlet_bW3xw5S9DbaLCN3E.json index 67922f8b..3c4ebd1c 100644 --- a/src/packs/items/weapons/weapon_Powered_Gauntlet_bW3xw5S9DbaLCN3E.json +++ b/src/packs/items/weapons/weapon_Powered_Gauntlet_bW3xw5S9DbaLCN3E.json @@ -85,8 +85,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -112,7 +112,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Primer_Shard_SxcblanBvqaest3A.json b/src/packs/items/weapons/weapon_Primer_Shard_SxcblanBvqaest3A.json index fb42af74..0cf59179 100644 --- a/src/packs/items/weapons/weapon_Primer_Shard_SxcblanBvqaest3A.json +++ b/src/packs/items/weapons/weapon_Primer_Shard_SxcblanBvqaest3A.json @@ -72,8 +72,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d4", "bonus": null, @@ -99,7 +99,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Quarterstaff_mlIj88p1wcQNjEDG.json b/src/packs/items/weapons/weapon_Quarterstaff_mlIj88p1wcQNjEDG.json index 37c56a21..00940b6c 100644 --- a/src/packs/items/weapons/weapon_Quarterstaff_mlIj88p1wcQNjEDG.json +++ b/src/packs/items/weapons/weapon_Quarterstaff_mlIj88p1wcQNjEDG.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 3, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Rapier_zkAgEW6zMkRZalEm.json b/src/packs/items/weapons/weapon_Rapier_zkAgEW6zMkRZalEm.json index b4de1c00..45642f14 100644 --- a/src/packs/items/weapons/weapon_Rapier_zkAgEW6zMkRZalEm.json +++ b/src/packs/items/weapons/weapon_Rapier_zkAgEW6zMkRZalEm.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "type": [ "physical" ], @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Retractable_Saber_i8CqVTzqoRoCewNe.json b/src/packs/items/weapons/weapon_Retractable_Saber_i8CqVTzqoRoCewNe.json index c1b350a3..548de60f 100644 --- a/src/packs/items/weapons/weapon_Retractable_Saber_i8CqVTzqoRoCewNe.json +++ b/src/packs/items/weapons/weapon_Retractable_Saber_i8CqVTzqoRoCewNe.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 7, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Returning_Axe_FtsQGwOg3r8uUCST.json b/src/packs/items/weapons/weapon_Returning_Axe_FtsQGwOg3r8uUCST.json index 76a887ae..9f3cca62 100644 --- a/src/packs/items/weapons/weapon_Returning_Axe_FtsQGwOg3r8uUCST.json +++ b/src/packs/items/weapons/weapon_Returning_Axe_FtsQGwOg3r8uUCST.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Returning_Blade_4fQpVfQ3NVwTHStA.json b/src/packs/items/weapons/weapon_Returning_Blade_4fQpVfQ3NVwTHStA.json index 74be4227..efd81e48 100644 --- a/src/packs/items/weapons/weapon_Returning_Blade_4fQpVfQ3NVwTHStA.json +++ b/src/packs/items/weapons/weapon_Returning_Blade_4fQpVfQ3NVwTHStA.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": null, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Ricochet_Axes_E9QDh5o9eQ1Qx0kH.json b/src/packs/items/weapons/weapon_Ricochet_Axes_E9QDh5o9eQ1Qx0kH.json index 1067bb02..34f3b200 100644 --- a/src/packs/items/weapons/weapon_Ricochet_Axes_E9QDh5o9eQ1Qx0kH.json +++ b/src/packs/items/weapons/weapon_Ricochet_Axes_E9QDh5o9eQ1Qx0kH.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 11, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Round_Shield_mxwWKDujgsRcZWPT.json b/src/packs/items/weapons/weapon_Round_Shield_mxwWKDujgsRcZWPT.json index 47b096af..ccba4b0e 100644 --- a/src/packs/items/weapons/weapon_Round_Shield_mxwWKDujgsRcZWPT.json +++ b/src/packs/items/weapons/weapon_Round_Shield_mxwWKDujgsRcZWPT.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d4", "bonus": null, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Runes_of_Ruination_EG6mZhr3ib56r974.json b/src/packs/items/weapons/weapon_Runes_of_Ruination_EG6mZhr3ib56r974.json index e0676ed2..3a966fe0 100644 --- a/src/packs/items/weapons/weapon_Runes_of_Ruination_EG6mZhr3ib56r974.json +++ b/src/packs/items/weapons/weapon_Runes_of_Ruination_EG6mZhr3ib56r974.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d20", "bonus": 4, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Scepter_GZh345N8fmuS4Jeh.json b/src/packs/items/weapons/weapon_Scepter_GZh345N8fmuS4Jeh.json index 04ce4c4b..f1e85577 100644 --- a/src/packs/items/weapons/weapon_Scepter_GZh345N8fmuS4Jeh.json +++ b/src/packs/items/weapons/weapon_Scepter_GZh345N8fmuS4Jeh.json @@ -11,8 +11,8 @@ "type": "attack", "damage": { "includeBase": false, - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -38,7 +38,7 @@ } } } - ] + } }, "range": "melee", "roll": { @@ -115,8 +115,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": null, @@ -142,7 +142,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Scepter_of_Elias_acPGwIaUhx3R0mTq.json b/src/packs/items/weapons/weapon_Scepter_of_Elias_acPGwIaUhx3R0mTq.json index 8c8e50af..f2c13441 100644 --- a/src/packs/items/weapons/weapon_Scepter_of_Elias_acPGwIaUhx3R0mTq.json +++ b/src/packs/items/weapons/weapon_Scepter_of_Elias_acPGwIaUhx3R0mTq.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 3, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Shortbow_p9tdjQr2AZP19RYm.json b/src/packs/items/weapons/weapon_Shortbow_p9tdjQr2AZP19RYm.json index 82216a2d..56a791ba 100644 --- a/src/packs/items/weapons/weapon_Shortbow_p9tdjQr2AZP19RYm.json +++ b/src/packs/items/weapons/weapon_Shortbow_p9tdjQr2AZP19RYm.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 3, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Shortstaff_vHDHG3STcxTEfYAM.json b/src/packs/items/weapons/weapon_Shortstaff_vHDHG3STcxTEfYAM.json index 0d468da8..3dc3a137 100644 --- a/src/packs/items/weapons/weapon_Shortstaff_vHDHG3STcxTEfYAM.json +++ b/src/packs/items/weapons/weapon_Shortstaff_vHDHG3STcxTEfYAM.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 1, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json b/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json index 84ae1a2a..0ea874f8 100644 --- a/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json +++ b/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": null, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Siphoning_Gauntlets_1N1jggda5DfdzdMj.json b/src/packs/items/weapons/weapon_Siphoning_Gauntlets_1N1jggda5DfdzdMj.json index 0eb65689..205aa4e0 100644 --- a/src/packs/items/weapons/weapon_Siphoning_Gauntlets_1N1jggda5DfdzdMj.json +++ b/src/packs/items/weapons/weapon_Siphoning_Gauntlets_1N1jggda5DfdzdMj.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 9, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Sledge_Axe_OxsEmffWriiQmqJK.json b/src/packs/items/weapons/weapon_Sledge_Axe_OxsEmffWriiQmqJK.json index b5ffe457..d0230362 100644 --- a/src/packs/items/weapons/weapon_Sledge_Axe_OxsEmffWriiQmqJK.json +++ b/src/packs/items/weapons/weapon_Sledge_Axe_OxsEmffWriiQmqJK.json @@ -20,8 +20,8 @@ "amount": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "applyTo": "stress", "value": { "custom": { @@ -46,7 +46,7 @@ "base": false, "type": [] } - ], + }, "includeBase": false }, "_id": "0qVTvNMfapVST3sQ", @@ -104,8 +104,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d12", "bonus": 13, @@ -131,7 +131,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Small_Dagger_wKklDxs5nkzILNp4.json b/src/packs/items/weapons/weapon_Small_Dagger_wKklDxs5nkzILNp4.json index 5b63acd7..058d138e 100644 --- a/src/packs/items/weapons/weapon_Small_Dagger_wKklDxs5nkzILNp4.json +++ b/src/packs/items/weapons/weapon_Small_Dagger_wKklDxs5nkzILNp4.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "type": [ "physical" ], @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Spear_TF85tKJetUjLwh54.json b/src/packs/items/weapons/weapon_Spear_TF85tKJetUjLwh54.json index ea217ad9..a0ebc4ec 100644 --- a/src/packs/items/weapons/weapon_Spear_TF85tKJetUjLwh54.json +++ b/src/packs/items/weapons/weapon_Spear_TF85tKJetUjLwh54.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 3, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Spiked_Bow_O1w8KPYH85ZS8X64.json b/src/packs/items/weapons/weapon_Spiked_Bow_O1w8KPYH85ZS8X64.json index 99faed64..5421fc10 100644 --- a/src/packs/items/weapons/weapon_Spiked_Bow_O1w8KPYH85ZS8X64.json +++ b/src/packs/items/weapons/weapon_Spiked_Bow_O1w8KPYH85ZS8X64.json @@ -11,8 +11,8 @@ "type": "attack", "damage": { "includeBase": false, - "parts": [ - { + "parts": { + "hitPoints": { "resultBased": false, "value": { "custom": { @@ -36,7 +36,7 @@ } } } - ] + } }, "range": "melee", "roll": { @@ -113,8 +113,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 7, @@ -140,7 +140,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json b/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json index edadecf9..2dd08026 100644 --- a/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json +++ b/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 2, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Steelforged_Halberd_6bkbw4Ap644KZGvJ.json b/src/packs/items/weapons/weapon_Steelforged_Halberd_6bkbw4Ap644KZGvJ.json index c4730e94..1fccc471 100644 --- a/src/packs/items/weapons/weapon_Steelforged_Halberd_6bkbw4Ap644KZGvJ.json +++ b/src/packs/items/weapons/weapon_Steelforged_Halberd_6bkbw4Ap644KZGvJ.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 4, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Swinging_Ropeblade_1jOJHHKdtk3s2jaY.json b/src/packs/items/weapons/weapon_Swinging_Ropeblade_1jOJHHKdtk3s2jaY.json index b8fe04b6..cd9490f2 100644 --- a/src/packs/items/weapons/weapon_Swinging_Ropeblade_1jOJHHKdtk3s2jaY.json +++ b/src/packs/items/weapons/weapon_Swinging_Ropeblade_1jOJHHKdtk3s2jaY.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 9, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Sword_of_Light___Flame_TVPCWnSELOVBv6G1.json b/src/packs/items/weapons/weapon_Sword_of_Light___Flame_TVPCWnSELOVBv6G1.json index 7a74cf3d..63112b3e 100644 --- a/src/packs/items/weapons/weapon_Sword_of_Light___Flame_TVPCWnSELOVBv6G1.json +++ b/src/packs/items/weapons/weapon_Sword_of_Light___Flame_TVPCWnSELOVBv6G1.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 11, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Talon_Blades_jlLtgK468rO5IssR.json b/src/packs/items/weapons/weapon_Talon_Blades_jlLtgK468rO5IssR.json index 13542a63..a7c96705 100644 --- a/src/packs/items/weapons/weapon_Talon_Blades_jlLtgK468rO5IssR.json +++ b/src/packs/items/weapons/weapon_Talon_Blades_jlLtgK468rO5IssR.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 7, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Thistlebow_I1nDGpulg29GpWOW.json b/src/packs/items/weapons/weapon_Thistlebow_I1nDGpulg29GpWOW.json index 65fef12a..18f635eb 100644 --- a/src/packs/items/weapons/weapon_Thistlebow_I1nDGpulg29GpWOW.json +++ b/src/packs/items/weapons/weapon_Thistlebow_I1nDGpulg29GpWOW.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 13, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Tower_Shield_C9aWpK1shVMWP4m5.json b/src/packs/items/weapons/weapon_Tower_Shield_C9aWpK1shVMWP4m5.json index d49b7de7..47043c54 100644 --- a/src/packs/items/weapons/weapon_Tower_Shield_C9aWpK1shVMWP4m5.json +++ b/src/packs/items/weapons/weapon_Tower_Shield_C9aWpK1shVMWP4m5.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": null, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Urok_Broadsword_zGm6Wa1fGF6cECY5.json b/src/packs/items/weapons/weapon_Urok_Broadsword_zGm6Wa1fGF6cECY5.json index 708e920f..6727c333 100644 --- a/src/packs/items/weapons/weapon_Urok_Broadsword_zGm6Wa1fGF6cECY5.json +++ b/src/packs/items/weapons/weapon_Urok_Broadsword_zGm6Wa1fGF6cECY5.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 3, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Wand_ItWisJFNGMNWeaCV.json b/src/packs/items/weapons/weapon_Wand_ItWisJFNGMNWeaCV.json index 35fc7866..8084f261 100644 --- a/src/packs/items/weapons/weapon_Wand_ItWisJFNGMNWeaCV.json +++ b/src/packs/items/weapons/weapon_Wand_ItWisJFNGMNWeaCV.json @@ -41,8 +41,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 1, @@ -68,7 +68,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Wand_of_Enthrallment_tP6vmnrmTq2h5sj7.json b/src/packs/items/weapons/weapon_Wand_of_Enthrallment_tP6vmnrmTq2h5sj7.json index f2b2f308..84c7b3f2 100644 --- a/src/packs/items/weapons/weapon_Wand_of_Enthrallment_tP6vmnrmTq2h5sj7.json +++ b/src/packs/items/weapons/weapon_Wand_of_Enthrallment_tP6vmnrmTq2h5sj7.json @@ -85,8 +85,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -112,7 +112,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Wand_of_Essek_ZrRGNjGCgZTTfgDG.json b/src/packs/items/weapons/weapon_Wand_of_Essek_ZrRGNjGCgZTTfgDG.json index 23fb1003..d788d008 100644 --- a/src/packs/items/weapons/weapon_Wand_of_Essek_ZrRGNjGCgZTTfgDG.json +++ b/src/packs/items/weapons/weapon_Wand_of_Essek_ZrRGNjGCgZTTfgDG.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 13, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_War_Scythe_z6yEdFYQJ5IzgTX3.json b/src/packs/items/weapons/weapon_War_Scythe_z6yEdFYQJ5IzgTX3.json index e80ddfad..0c57dd50 100644 --- a/src/packs/items/weapons/weapon_War_Scythe_z6yEdFYQJ5IzgTX3.json +++ b/src/packs/items/weapons/weapon_War_Scythe_z6yEdFYQJ5IzgTX3.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d8", "bonus": 5, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Warhammer_ZXh1GQahBiODfSTC.json b/src/packs/items/weapons/weapon_Warhammer_ZXh1GQahBiODfSTC.json index 50b1a829..a94950c7 100644 --- a/src/packs/items/weapons/weapon_Warhammer_ZXh1GQahBiODfSTC.json +++ b/src/packs/items/weapons/weapon_Warhammer_ZXh1GQahBiODfSTC.json @@ -49,8 +49,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d12", "bonus": 3, @@ -76,7 +76,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Whip_CmtWqw6DwoePnX7W.json b/src/packs/items/weapons/weapon_Whip_CmtWqw6DwoePnX7W.json index 2e548ab6..287d8afe 100644 --- a/src/packs/items/weapons/weapon_Whip_CmtWqw6DwoePnX7W.json +++ b/src/packs/items/weapons/weapon_Whip_CmtWqw6DwoePnX7W.json @@ -78,8 +78,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": null, @@ -105,7 +105,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Widogast_Pendant_8Z5QrThfwkYPXNco.json b/src/packs/items/weapons/weapon_Widogast_Pendant_8Z5QrThfwkYPXNco.json index a03efe6b..44e4dfd6 100644 --- a/src/packs/items/weapons/weapon_Widogast_Pendant_8Z5QrThfwkYPXNco.json +++ b/src/packs/items/weapons/weapon_Widogast_Pendant_8Z5QrThfwkYPXNco.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d10", "bonus": 5, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/items/weapons/weapon_Yutari_Bloodbow_0XpSBYXxtywvBFQi.json b/src/packs/items/weapons/weapon_Yutari_Bloodbow_0XpSBYXxtywvBFQi.json index d07a986e..17e02976 100644 --- a/src/packs/items/weapons/weapon_Yutari_Bloodbow_0XpSBYXxtywvBFQi.json +++ b/src/packs/items/weapons/weapon_Yutari_Bloodbow_0XpSBYXxtywvBFQi.json @@ -71,8 +71,8 @@ "useDefault": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "dice": "d6", "bonus": 4, @@ -98,7 +98,7 @@ }, "base": false } - ], + }, "includeBase": false }, "description": "", diff --git a/src/packs/subclasses/feature_Battle_Ritual_qqb5acyUSl1sCpWW.json b/src/packs/subclasses/feature_Battle_Ritual_qqb5acyUSl1sCpWW.json index 6dee9f9d..2b012aee 100644 --- a/src/packs/subclasses/feature_Battle_Ritual_qqb5acyUSl1sCpWW.json +++ b/src/packs/subclasses/feature_Battle_Ritual_qqb5acyUSl1sCpWW.json @@ -23,8 +23,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -49,7 +49,7 @@ }, "type": [] }, - { + "hope": { "value": { "custom": { "enabled": true, @@ -74,7 +74,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Clarity_of_Nature_etaQ01yGJhBLDUqZ.json b/src/packs/subclasses/feature_Clarity_of_Nature_etaQ01yGJhBLDUqZ.json index 09d6f953..886f0b61 100644 --- a/src/packs/subclasses/feature_Clarity_of_Nature_etaQ01yGJhBLDUqZ.json +++ b/src/packs/subclasses/feature_Clarity_of_Nature_etaQ01yGJhBLDUqZ.json @@ -22,8 +22,8 @@ "recovery": "longRest" }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -48,7 +48,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json b/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json index 95534b9f..d0bd5c22 100644 --- a/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json +++ b/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json @@ -22,7 +22,7 @@ "recovery": null }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Elemental_Aura_2JH9NaOh69yN80Gw.json b/src/packs/subclasses/feature_Elemental_Aura_2JH9NaOh69yN80Gw.json index 7dbae2f6..7a3ebd91 100644 --- a/src/packs/subclasses/feature_Elemental_Aura_2JH9NaOh69yN80Gw.json +++ b/src/packs/subclasses/feature_Elemental_Aura_2JH9NaOh69yN80Gw.json @@ -22,8 +22,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -48,7 +48,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -134,7 +134,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Elemental_Incarnation_f37TTgCc0Q3Ih1A1.json b/src/packs/subclasses/feature_Elemental_Incarnation_f37TTgCc0Q3Ih1A1.json index 30ffb50b..45ffde60 100644 --- a/src/packs/subclasses/feature_Elemental_Incarnation_f37TTgCc0Q3Ih1A1.json +++ b/src/packs/subclasses/feature_Elemental_Incarnation_f37TTgCc0Q3Ih1A1.json @@ -29,8 +29,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -56,7 +56,7 @@ } } } - ], + }, "includeBase": false }, "target": { @@ -148,8 +148,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -174,7 +174,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Gifted_Performer_99U7YWNCxFZHCiT0.json b/src/packs/subclasses/feature_Gifted_Performer_99U7YWNCxFZHCiT0.json index 33d5af92..f65cd041 100644 --- a/src/packs/subclasses/feature_Gifted_Performer_99U7YWNCxFZHCiT0.json +++ b/src/packs/subclasses/feature_Gifted_Performer_99U7YWNCxFZHCiT0.json @@ -21,8 +21,8 @@ "recovery": "longRest" }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -47,7 +47,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -115,8 +115,8 @@ "recovery": "longRest" }, "damage": { - "parts": [ - { + "parts": { + "hope": { "value": { "custom": { "enabled": true, @@ -141,7 +141,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Honed_Expertise_w1BwNKxbQOSizLmZ.json b/src/packs/subclasses/feature_Honed_Expertise_w1BwNKxbQOSizLmZ.json index 1fad2396..48973ad9 100644 --- a/src/packs/subclasses/feature_Honed_Expertise_w1BwNKxbQOSizLmZ.json +++ b/src/packs/subclasses/feature_Honed_Expertise_w1BwNKxbQOSizLmZ.json @@ -23,7 +23,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Natural_Evasion_TnuLBtHQGbqyzn82.json b/src/packs/subclasses/feature_Natural_Evasion_TnuLBtHQGbqyzn82.json index 628fabed..517e1fe1 100644 --- a/src/packs/subclasses/feature_Natural_Evasion_TnuLBtHQGbqyzn82.json +++ b/src/packs/subclasses/feature_Natural_Evasion_TnuLBtHQGbqyzn82.json @@ -31,7 +31,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Regeneration_KRyrbSLVGreIOTZe.json b/src/packs/subclasses/feature_Regeneration_KRyrbSLVGreIOTZe.json index b7c39f2a..ab748169 100644 --- a/src/packs/subclasses/feature_Regeneration_KRyrbSLVGreIOTZe.json +++ b/src/packs/subclasses/feature_Regeneration_KRyrbSLVGreIOTZe.json @@ -29,8 +29,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": false @@ -54,7 +54,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Revenge_oNfA5F9cKwNR7joq.json b/src/packs/subclasses/feature_Revenge_oNfA5F9cKwNR7joq.json index f663201d..b7e2e8b9 100644 --- a/src/packs/subclasses/feature_Revenge_oNfA5F9cKwNR7joq.json +++ b/src/packs/subclasses/feature_Revenge_oNfA5F9cKwNR7joq.json @@ -29,8 +29,8 @@ "recovery": null }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -55,7 +55,7 @@ } } } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json b/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json index f1596519..ab7b4972 100644 --- a/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json +++ b/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json @@ -21,8 +21,8 @@ "recovery": "longRest" }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -47,7 +47,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Sparing_Touch_GfOSgVJW8bS1OjNq.json b/src/packs/subclasses/feature_Sparing_Touch_GfOSgVJW8bS1OjNq.json index deb4af6b..86de0fe8 100644 --- a/src/packs/subclasses/feature_Sparing_Touch_GfOSgVJW8bS1OjNq.json +++ b/src/packs/subclasses/feature_Sparing_Touch_GfOSgVJW8bS1OjNq.json @@ -39,8 +39,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -65,7 +65,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { @@ -116,8 +116,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "stress": { "value": { "custom": { "enabled": true, @@ -142,7 +142,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Thrive_in_Chaos_1nmFmkNXY6OYyyju.json b/src/packs/subclasses/feature_Thrive_in_Chaos_1nmFmkNXY6OYyyju.json index bbdd8707..b65184e9 100644 --- a/src/packs/subclasses/feature_Thrive_in_Chaos_1nmFmkNXY6OYyyju.json +++ b/src/packs/subclasses/feature_Thrive_in_Chaos_1nmFmkNXY6OYyyju.json @@ -31,7 +31,7 @@ "consumeOnSuccess": false }, "damage": { - "parts": [], + "parts": {}, "includeBase": false }, "target": { diff --git a/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json b/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json index e80a770a..0c6ad3e3 100644 --- a/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json +++ b/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json @@ -23,8 +23,8 @@ "consumeOnSuccess": false }, "damage": { - "parts": [ - { + "parts": { + "hitPoints": { "value": { "custom": { "enabled": true, @@ -49,7 +49,7 @@ }, "type": [] } - ], + }, "includeBase": false }, "target": { diff --git a/styles/less/global/elements.less b/styles/less/global/elements.less index e2005530..2783fe26 100755 --- a/styles/less/global/elements.less +++ b/styles/less/global/elements.less @@ -333,6 +333,15 @@ legend { font-weight: bold; color: light-dark(@dark-blue, @golden); + + &.with-icon { + display: flex; + align-items: center; + + i { + padding: 0 4px; + } + } } input[type='text'], @@ -569,60 +578,11 @@ } .application.setting.dh-style { - fieldset { - h2, - h3, - h4 { - margin: 8px 0 4px; - text-align: center; - } - .title-hint { - font-size: var(--font-size-12); - font-variant: small-caps; - text-align: center; - } - - .field-section { - display: flex; - flex-direction: column; - gap: 10px; - - .split-section { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 10px; - } - } - - .label-container { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 10px; - - &.full-width { - grid-template-columns: 1fr 1fr 1fr 1fr; - - select { - grid-column: span 3; - } - } - - label { - align-self: center; - text-align: center; - white-space: nowrap; - } - } - - .button-container { - display: grid; - grid-template-columns: 1fr; - gap: 10px; - text-align: center; - display: flex; - justify-content: center; - width: 100%; - } + h2, + h3, + h4 { + margin: 8px 0 4px; + text-align: center; } footer { diff --git a/styles/less/global/global.less b/styles/less/global/global.less index fb995b8c..b9af67c0 100644 --- a/styles/less/global/global.less +++ b/styles/less/global/global.less @@ -73,6 +73,24 @@ } } } + + .item-tags { + display: flex; + gap: 10px; + + .tag { + align-items: center; + background: light-dark(@dark-15, @beige-15); + border-radius: 3px; + border: 1px solid light-dark(@dark, @beige); + display: flex; + flex-direction: row; + flex-wrap: wrap; + font-size: var(--font-size-12); + justify-content: start; + padding: 3px 5px; + } + } } /* TODO: Remove me when this issue is resolved https://github.com/foundryvtt/foundryvtt/issues/13734 */ diff --git a/styles/less/global/inventory-item.less b/styles/less/global/inventory-item.less index d703d189..4bd4d0bb 100644 --- a/styles/less/global/inventory-item.less +++ b/styles/less/global/inventory-item.less @@ -138,24 +138,6 @@ display: none; } } - - .item-tags { - display: flex; - gap: 10px; - - .tag { - align-items: center; - background: light-dark(@dark-15, @beige-15); - border-radius: 3px; - border: 1px solid light-dark(@dark, @beige); - display: flex; - flex-direction: row; - flex-wrap: wrap; - font-size: var(--font-size-12); - justify-content: start; - padding: 3px 5px; - } - } } .item-resource { diff --git a/styles/less/sheets/actions/actions.less b/styles/less/sheets/actions/actions.less index 9be56c8e..5c21dc60 100644 --- a/styles/less/sheets/actions/actions.less +++ b/styles/less/sheets/actions/actions.less @@ -4,48 +4,78 @@ display: flex; flex-direction: column; gap: 10px; + } - .actor-summon-line { + .transform-container { + width: 100%; + display: flex; + flex-direction: column; + gap: 10px; + + .transform-resources { + display: flex; + flex-direction: column; + + .transform-resource { + display: flex; + align-items: center; + gap: 2px; + + .resource-title { + font-size: var(--font-size-18); + } + } + } + } + + .actor-drop-line { + display: flex; + align-items: center; + gap: 5px; + border-radius: 3px; + + .actor-drop-name { + flex: 2; display: flex; align-items: center; gap: 5px; - border-radius: 3px; - .actor-summon-name { - flex: 2; - display: flex; - align-items: center; - gap: 5px; - - img { - height: 40px; - } - } - - .actor-summon-controls { - flex: 1; - display: flex; - align-items: center; - gap: 5px; - - .controls { - display: flex; - gap: 5px; - } + img { + height: 40px; } } - .summon-dragger { + .actor-drop-controls { + flex: 1; display: flex; align-items: center; - justify-content: center; - box-sizing: border-box; - height: 40px; - margin-top: 10px; - border: 1px dashed light-dark(@dark-blue-50, @beige-50); - border-radius: 3px; - color: light-dark(@dark-blue-50, @beige-50); + gap: 5px; + + &.transform { + justify-content: flex-end; + } + + .controls { + display: flex; + gap: 5px; + } } + + .actor-drop-hint { + flex: none; + } + } + + .drop-dragger { + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + height: 40px; + margin-top: 10px; + border: 1px dashed light-dark(@dark-blue-50, @beige-50); + border-radius: 3px; + color: light-dark(@dark-blue-50, @beige-50); } .trigger-data { diff --git a/styles/less/sheets/actors/character/header.less b/styles/less/sheets/actors/character/header.less index 5e8ef002..31fd4256 100644 --- a/styles/less/sheets/actors/character/header.less +++ b/styles/less/sheets/actors/character/header.less @@ -133,8 +133,19 @@ padding: 0; margin-bottom: 15px; - .hope-section { + .resource-section { + display: flex; + align-items: center; + gap: 4px; margin-right: 20px; + + .resource-manager { + transition: all 0.1s ease; + + &.inverted { + transform: rotate(180deg); + } + } } .downtime-section { diff --git a/styles/less/ui/chat/chat.less b/styles/less/ui/chat/chat.less index 3591fc65..e9ef9147 100644 --- a/styles/less/ui/chat/chat.less +++ b/styles/less/ui/chat/chat.less @@ -450,6 +450,10 @@ .target-data { flex: 1; + + .target-name { + text-align: left; + } } .target-save { diff --git a/styles/less/ui/index.less b/styles/less/ui/index.less index 065e43c5..31ea8955 100644 --- a/styles/less/ui/index.less +++ b/styles/less/ui/index.less @@ -27,6 +27,8 @@ @import './settings/settings.less'; @import './settings/homebrew-settings/domains.less'; @import './settings/homebrew-settings/types.less'; +@import './settings/homebrew-settings/resources.less'; +@import './settings/appearance-settings/diceSoNice.less'; @import './sidebar/tabs.less'; @import './sidebar/daggerheartMenu.less'; diff --git a/styles/less/ui/item-browser/item-browser.less b/styles/less/ui/item-browser/item-browser.less index b395f8c8..f558a0ba 100644 --- a/styles/less/ui/item-browser/item-browser.less +++ b/styles/less/ui/item-browser/item-browser.less @@ -304,7 +304,15 @@ padding: 0 0 0 50px; display: flex; flex-direction: column; - gap: 5px; + + .item-description-outer-container:has(div, p) { + margin-top: 8px; + } + + /* Some items don't include an outer container, so we attempt a catch-all */ + > *:last-child { + padding-bottom: 6px; + } h1 { font-size: var(--font-size-32); @@ -350,6 +358,7 @@ .filter-content, .item-desc { display: grid; + opacity: 0; grid-template-rows: 0fr; transition: all 0.3s ease-in-out; width: 100%; @@ -378,8 +387,8 @@ } .expanded + .extensible { + opacity: 1; grid-template-rows: 1fr; - padding-top: 10px; } .welcome-message { diff --git a/styles/less/ui/settings/appearance-settings/diceSoNice.less b/styles/less/ui/settings/appearance-settings/diceSoNice.less new file mode 100644 index 00000000..079bebc5 --- /dev/null +++ b/styles/less/ui/settings/appearance-settings/diceSoNice.less @@ -0,0 +1,72 @@ +.daggerheart.dh-style.setting.appearance-settings { + .tab.active[data-tab='diceSoNice'] { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; + } + + .diceSoNice-footer { + display: grid; + align-items: center; + grid-template-columns: 1fr 1fr 1fr 1fr; + gap: 8px; + margin-top: 32px; + + label { + text-align: center; + } + + select { + grid-column: span 2; + } + } + + .title-hint { + font-size: var(--font-size-14); + font-variant: small-caps; + text-align: center; + } + + .split-section { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 10px; + + > label { + grid-column: span 2; + text-align: center; + font-size: var(--font-size-18); + font-weight: bold; + } + } + + .field-section { + display: flex; + flex-direction: column; + gap: 10px; + margin-bottom: 4px; + width: 100%; + padding: 0 8px; + } + + .label-container { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 10px; + + &.full-width { + grid-template-columns: 1fr 1fr 1fr 1fr; + + select { + grid-column: span 3; + } + } + + label { + align-self: center; + text-align: center; + white-space: nowrap; + } + } +} diff --git a/styles/less/ui/settings/homebrew-settings/resources.less b/styles/less/ui/settings/homebrew-settings/resources.less new file mode 100644 index 00000000..5333e54d --- /dev/null +++ b/styles/less/ui/settings/homebrew-settings/resources.less @@ -0,0 +1,87 @@ +.daggerheart.dh-style.setting.homebrew-settings .resources.tab { + .resource-types-container { + display: flex; + flex-direction: column; + gap: 16px; + overflow: auto; + max-height: 570px; + + fieldset legend { + display: flex; + align-items: center; + gap: 4px; + } + + .resource-type-container { + width: 100%; + + .resources-container { + display: flex; + flex-direction: column; + gap: 4px; + + .resource-container { + .resource-icons-container { + display: flex; + justify-content: space-between; + gap: 8px; + width: 100%; + + .resource-icon-container { + display: flex; + flex-direction: column; + gap: 4px; + flex: 1; + + .resource-icon-title-container { + display: flex; + align-items: center; + justify-content: center; + gap: 4px; + + &::before, + &::after { + color: @dark-blue; + content: ''; + flex: 1; + height: 2px; + } + + &::before { + background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, @golden 100%); + } + + &::after { + background: linear-gradient(90deg, @golden 0%, rgba(0, 0, 0, 0) 100%); + } + + .resource-icon-title { + font-size: var(--font-size-16); + white-space: nowrap; + display: flex; + align-items: center; + gap: 4px; + color: light-dark(@dark-blue, @golden); + + i { + font-size: 14px; + } + } + } + } + } + } + } + } + } + + .two-columns { + width: 100%; + } + + .form-group.vertical { + > * { + flex: 0 0 100%; + } + } +} diff --git a/styles/less/ux/index.less b/styles/less/ux/index.less index 0bd1b71e..c6c40f78 100644 --- a/styles/less/ux/index.less +++ b/styles/less/ux/index.less @@ -4,3 +4,5 @@ @import './tooltip/domain-cards.less'; @import './autocomplete/autocomplete.less'; + +@import './tooltip/resource-management.less'; diff --git a/styles/less/ux/tooltip/resource-management.less b/styles/less/ux/tooltip/resource-management.less new file mode 100644 index 00000000..ff1f4dd2 --- /dev/null +++ b/styles/less/ux/tooltip/resource-management.less @@ -0,0 +1,56 @@ +.bordered-tooltip.locked-tooltip .daggerheart.resource-management-container, +#tooltip .daggerheart.resource-management-container { + display: flex; + flex-direction: column; + gap: 16px; + + .resource-section { + position: relative; + display: flex; + gap: 10px; + background-color: light-dark(transparent, @dark-blue); + color: light-dark(@dark-blue, @golden); + padding: 5px 10px; + border: 1px solid light-dark(@dark-blue, @golden); + border-radius: 6px; + align-items: center; + width: fit-content; + height: 30px; + + h4 { + font-family: var(--dh-font-body, 'Montserrat'), sans-serif; + font-size: var(--font-size-14); + font-weight: bold; + text-transform: uppercase; + color: light-dark(@dark-blue, @golden); + margin: 0; + } + + .resource-value { + display: flex; + cursor: pointer; + + .hidden { + display: none; + } + + img { + width: 14px; + height: 14px; + + &.empty { + opacity: 0.4; + } + + &.filter { + filter: @golden-filter; + } + + &.non-transparent { + border-radius: 50%; + border: 1px solid @golden; + } + } + } + } +} diff --git a/system.json b/system.json index 14d61851..41e46edb 100644 --- a/system.json +++ b/system.json @@ -5,7 +5,7 @@ "version": "2.0.0", "compatibility": { "minimum": "14.355", - "verified": "14.355", + "verified": "14.356", "maximum": "14" }, "authors": [ diff --git a/templates/actionTypes/damage.hbs b/templates/actionTypes/damage.hbs index 96bb361c..6f159a2d 100644 --- a/templates/actionTypes/damage.hbs +++ b/templates/actionTypes/damage.hbs @@ -1,12 +1,12 @@
- + {{#if (eq @root.source.type 'healing')}} {{localize "DAGGERHEART.GENERAL.healing"}} {{else}} {{localize "DAGGERHEART.GENERAL.damage"}} {{/if}} - {{#unless (eq path 'system.attack.')}}{{/unless}} + {{#unless (eq path 'system.attack.')}}{{/unless}}
{{#if @root.hasBaseDamage}} @@ -16,75 +16,72 @@ {{formField directField value=source.direct name=(concat path "damage.direct") localize=true classes="checkbox"}} {{/unless}}
- {{#each source.parts as |dmg index|}} - {{#if (and @root.hasBaseDamage @root.source.damage.includeBase)}} - {{setVar 'realIndex' (add index -1)}} - {{else}} - {{setVar 'realIndex' index}} - {{/if}} + {{#each source.parts as |dmg key|}}
+ + {{localize (concat "DAGGERHEART.CONFIG.HealingType." key ".name")}} + {{#unless (or dmg.base ../path)}} + + {{/unless}} + + {{#if (and (not @root.isNPC) @root.hasRoll (not dmg.base))}} - {{formField ../fields.resultBased value=dmg.resultBased name=(concat "damage.parts." realIndex ".resultBased") localize=true classes="checkbox"}} + {{formField ../fields.resultBased value=dmg.resultBased name=(concat "damage.parts." key ".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" realIndex=realIndex path=../path}} + {{> formula fields=../fields.value.fields type=../fields.type dmg=dmg source=dmg.value target="value" key=key 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" realIndex=realIndex path=../path}} + {{> formula fields=../fields.valueAlt.fields type=../fields.type dmg=dmg source=dmg.valueAlt target="valueAlt" key=key path=../path}}
{{else}} - - {{localize "DAGGERHEART.GENERAL.formula"}} - {{> formula fields=../fields.value.fields type=../fields.type dmg=dmg source=dmg.value target="value" realIndex=realIndex path=../path}} -
+ {{> formula fields=../fields.value.fields type=../fields.type dmg=dmg source=dmg.value target="value" key=key path=../path}} {{/if}} -
- {{formField ../fields.applyTo value=dmg.applyTo name=(concat ../path "damage.parts." realIndex ".applyTo") localize=true}} - {{#if (and (eq dmg.applyTo 'hitPoints') (ne @root.source.type 'healing'))}} - {{formField ../fields.type value=dmg.type name=(concat ../path "damage.parts." realIndex ".type") localize=true}} - {{/if}} -
+ + {{#if (and (eq dmg.applyTo 'hitPoints') (ne @root.source.type 'healing'))}} + {{formField ../fields.type value=dmg.type name=(concat ../path "damage.parts." key ".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." realIndex ".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." realIndex ".valueAlt.dice") classes="inline-child" localize=true}} - {{formField ../fields.valueAlt.fields.bonus value=dmg.valueAlt.bonus name=(concat ../path "damage.parts." realIndex ".valueAlt.bonus") localize=true classes="inline-child"}} + + {{formField ../fields.valueAlt.fields.flatMultiplier value=dmg.valueAlt.flatMultiplier name=(concat ../path "damage.parts." key ".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." key ".valueAlt.dice") classes="inline-child" localize=true}} + {{formField ../fields.valueAlt.fields.bonus value=dmg.valueAlt.bonus name=(concat ../path "damage.parts." key ".valueAlt.bonus") localize=true classes="inline-child"}}
{{/if}} - + - {{#unless (or dmg.base ../path)}}
{{/unless}} {{/each}} {{#*inline "formula"}} {{#unless dmg.base}} - {{formField fields.custom.fields.enabled value=source.custom.enabled name=(concat path "damage.parts." realIndex "." target ".custom.enabled") classes="checkbox" localize=true}} + {{formField fields.custom.fields.enabled value=source.custom.enabled name=(concat path "damage.parts." key "." target ".custom.enabled") classes="checkbox" localize=true}} {{/unless}} {{#if source.custom.enabled}} - {{formField fields.custom.fields.formula value=source.custom.formula name=(concat path "damage.parts." realIndex "." target ".custom.formula") localize=true}} + {{formField fields.custom.fields.formula value=source.custom.formula name=(concat path "damage.parts." key "." target ".custom.formula") localize=true}} {{else}}
{{#unless @root.isNPC}} - {{formField fields.multiplier value=source.multiplier name=(concat path "damage.parts." realIndex "." target ".multiplier") localize=true}} + {{formField fields.multiplier value=source.multiplier name=(concat path "damage.parts." key "." target ".multiplier") localize=true}} {{/unless}} - {{#if (eq source.multiplier 'flat')}}{{formField fields.flatMultiplier value=source.flatMultiplier name=(concat path "damage.parts." realIndex "." target ".flatMultiplier") localize=true }}{{/if}} - {{formField fields.dice value=source.dice name=(concat path "damage.parts." realIndex "." target ".dice") localize=true}} - {{formField fields.bonus value=source.bonus name=(concat path "damage.parts." realIndex "." target ".bonus") localize=true}} + {{#if (eq source.multiplier 'flat')}}{{formField fields.flatMultiplier value=source.flatMultiplier name=(concat path "damage.parts." key "." target ".flatMultiplier") localize=true }}{{/if}} + {{formField fields.dice value=source.dice name=(concat path "damage.parts." key "." target ".dice") localize=true}} + {{formField fields.bonus value=source.bonus name=(concat path "damage.parts." key "." target ".bonus") localize=true}}
{{/if}} {{#if @root.isNPC}} - + {{/if}} {{/inline}} \ No newline at end of file diff --git a/templates/actionTypes/summon.hbs b/templates/actionTypes/summon.hbs index 429977d9..18fed2e2 100644 --- a/templates/actionTypes/summon.hbs +++ b/templates/actionTypes/summon.hbs @@ -1,19 +1,19 @@ -
+
{{localize "DAGGERHEART.ACTIONS.TYPES.summon.name"}}
    {{#each @root.summons as |summon index|}} -
  • -
    +
  • +

    {{summon.actor.name}}

    -
    +
    @@ -43,7 +43,7 @@
  • {{/each}} -
    +
    {{localize "DAGGERHEART.ACTIONS.Settings.summon.dropSummonsHere"}}
diff --git a/templates/actionTypes/transform.hbs b/templates/actionTypes/transform.hbs new file mode 100644 index 00000000..ae17862a --- /dev/null +++ b/templates/actionTypes/transform.hbs @@ -0,0 +1,62 @@ +
+ + {{localize "DAGGERHEART.ACTIONS.TYPES.transform.name"}} + + +
+ {{#if transform.actor}} +
+ {{#if transform.actor.error}} +
{{transform.actor.error}}
+ {{else}} +
+ +

+ {{transform.actor.name}} +

+
+ {{/if}} + +
+
+ {{#unless transform.actor.error}} + + + + {{/unless}} + + + +
+
+
+ + {{/if}} + + {{#unless transform.actor}} +
+ {{localize "DAGGERHEART.ACTIONS.Settings.transform.dropTransformHere"}} +
+ {{/unless}} + +
+
+ + {{localize "DAGGERHEART.ACTIONS.Settings.transform.clearHitPoints"}} +
+
+ + {{localize "DAGGERHEART.ACTIONS.Settings.transform.clearStress"}} +
+
+
+
\ No newline at end of file diff --git a/templates/settings/appearance-settings/diceSoNice.hbs b/templates/settings/appearance-settings/diceSoNice.hbs index 6c89fd2f..afe7dd5a 100644 --- a/templates/settings/appearance-settings/diceSoNice.hbs +++ b/templates/settings/appearance-settings/diceSoNice.hbs @@ -1,71 +1,37 @@
-
{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.hint"}}
- -
-
{{#each dsnTabs as |dsnTab|}} -
-
-
- - {{formInput fields.system value=values.system localize=true choices=@root.diceSoNiceSystems}} -
-
-
- - {{formInput fields.foreground value=values.foreground localize=true}} -
-
- - {{formInput fields.background value=values.background localize=true}} -
-
- - {{formInput fields.outline value=values.outline localize=true}} -
-
- - {{formInput fields.edge value=values.edge localize=true}} -
-
- - {{formInput fields.colorset value=values.colorset choices=@root.diceSoNiceColorsets localize=true}} -
-
- - {{formInput fields.texture value=values.texture choices=@root.diceSoNiceTextures localize=true}} -
-
- - {{formInput fields.material value=values.material choices=@root.diceSoNiceMaterials localize=true}} -
-
- - {{formInput fields.font value=values.font choices=@root.diceSoNiceFonts localize=true}} -
-
-
- -
-
-
+
+ {{> "systems/daggerheart/templates/settings/appearance-settings/diceSoNiceTab.hbs" dsnTab }} +
{{/each}} -
\ No newline at end of file diff --git a/templates/settings/appearance-settings/diceSoNiceTab.hbs b/templates/settings/appearance-settings/diceSoNiceTab.hbs new file mode 100644 index 00000000..a15b63ec --- /dev/null +++ b/templates/settings/appearance-settings/diceSoNiceTab.hbs @@ -0,0 +1,62 @@ +
+

{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.diceAppearance"}}

+ +
+ + {{formInput fields.system value=values.system localize=true choices=@root.diceSoNiceSystems}} +
+
+
+ + {{formInput fields.foreground value=values.foreground localize=true}} +
+
+ + {{formInput fields.background value=values.background localize=true}} +
+
+ + {{formInput fields.outline value=values.outline localize=true}} +
+
+ + {{formInput fields.edge value=values.edge localize=true}} +
+
+ + {{formInput fields.colorset value=values.colorset choices=@root.diceSoNiceColorsets localize=true}} +
+
+ + {{formInput fields.texture value=values.texture choices=@root.diceSoNiceTextures localize=true}} +
+
+ + {{formInput fields.material value=values.material choices=@root.diceSoNiceMaterials localize=true}} +
+
+ + {{formInput fields.font value=values.font choices=@root.diceSoNiceFonts localize=true}} +
+
+ + {{#if animations}} +

{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.animations"}}

+
+ + {{formInput fields.sfx.fields.higher.fields.class value=values.sfx.higher.class blank="" localize=true}} +
+ {{/if}} + + +
\ No newline at end of file diff --git a/templates/settings/homebrew-settings/resources.hbs b/templates/settings/homebrew-settings/resources.hbs new file mode 100644 index 00000000..7f3dee3e --- /dev/null +++ b/templates/settings/homebrew-settings/resources.hbs @@ -0,0 +1,78 @@ +
+
+ {{#each settingFields.resources as |type key|}} +
+ + {{localize "DAGGERHEART.SETTINGS.Homebrew.resources.typeTitle" type=(localize (concat "TYPES.Actor." key))}} + + + +
+
+ {{#each type.resources as |resource key|}} +
+ {{resource.label}} + + {{formField @root.schemaFields.resources.element.fields.resources.element.fields.label value=resource.label name=(concat "resources." @../key ".resources." key ".label") classes="vertical" localize=true }} + +
+ {{formField @root.schemaFields.resources.element.fields.resources.element.fields.initial value=resource.initial name=(concat "resources." @../key ".resources." key ".initial") classes="vertical" localize=true }} + {{formField @root.schemaFields.resources.element.fields.resources.element.fields.max value=resource.max name=(concat "resources." @../key ".resources." key ".max") classes="vertical" localize=true }} +
+ +
+
+ {{#with @root.schemaFields.resources.element.fields.resources.element.fields.images.fields.full.fields}} +
+
+ {{localize "DAGGERHEART.SETTINGS.Homebrew.resources.filledIcon"}} + +
+
+
+ {{#if ../images.full.isIcon}} + {{formGroup this.value value=../images.full.value name=(concat "resources." @../key ".resources." key ".images.full.value") localize=true }} + {{else}} +
+ +
+ {{/if}} + {{formGroup this.isIcon value=../images.full.isIcon name="" classes="path-field" localize=true }} + {{formGroup this.noColorFilter value=../images.full.noColorFilter name=(concat "resources." @../key ".resources." key ".images.full.noColorFilter") localize=true }} +
+ {{/with}} +
+
+ {{#with @root.schemaFields.resources.element.fields.resources.element.fields.images.fields.empty.fields}} +
+
+ {{localize "DAGGERHEART.SETTINGS.Homebrew.resources.emptyIcon"}} + +
+
+
+ {{#if ../images.empty.isIcon}} + {{formGroup this.value value=../images.empty.value name=(concat "resources." @../key ".resources." key ".images.empty.value") localize=true }} + {{else}} +
+ +
+ {{/if}} + {{formGroup this.isIcon value=resource.images.empty.isIcon name="" classes="path-field" localize=true }} + {{formGroup this.noColorFilter value=resource.images.empty.noColorFilter name=(concat "resources." @../key ".resources." key ".images.empty.noColorFilter") localize=true }} +
+ {{/with}} +
+
+
+ {{/each}} +
+
+
+ {{/each}} +
+
\ No newline at end of file diff --git a/templates/settings/metagaming-settings/footer.hbs b/templates/settings/metagaming-settings/footer.hbs new file mode 100644 index 00000000..54939c17 --- /dev/null +++ b/templates/settings/metagaming-settings/footer.hbs @@ -0,0 +1,10 @@ +
+ + +
\ No newline at end of file diff --git a/templates/settings/metagaming-settings/general.hbs b/templates/settings/metagaming-settings/general.hbs new file mode 100644 index 00000000..7f36715e --- /dev/null +++ b/templates/settings/metagaming-settings/general.hbs @@ -0,0 +1,3 @@ +
+ {{formGroup settingFields.schema.fields.hideObserverPermissionInChat value=settingFields._source.hideObserverPermissionInChat localize=true}} +
\ No newline at end of file diff --git a/templates/settings/metagaming-settings/header.hbs b/templates/settings/metagaming-settings/header.hbs new file mode 100644 index 00000000..e0f72ee8 --- /dev/null +++ b/templates/settings/metagaming-settings/header.hbs @@ -0,0 +1,3 @@ +
+

{{localize 'DAGGERHEART.SETTINGS.Menu.metagaming.name'}}

+
\ No newline at end of file diff --git a/templates/sheets-settings/action-settings/effect.hbs b/templates/sheets-settings/action-settings/effect.hbs index e94f4328..1bdd0304 100644 --- a/templates/sheets-settings/action-settings/effect.hbs +++ b/templates/sheets-settings/action-settings/effect.hbs @@ -11,4 +11,5 @@ {{#if fields.beastform}}{{> 'systems/daggerheart/templates/actionTypes/beastform.hbs' fields=fields.beastform.fields source=source.beastform}}{{/if}} {{#if fields.summon}}{{> 'systems/daggerheart/templates/actionTypes/summon.hbs' fields=fields.summon.element.fields source=source.summon}}{{/if}} {{#if fields.countdown}}{{> 'systems/daggerheart/templates/actionTypes/countdown.hbs' fields=fields.countdown.element.fields source=source.countdown}}{{/if}} + {{#if fields.transform}}{{> 'systems/daggerheart/templates/actionTypes/transform.hbs' fields=fields.transform.fields source=source.transform}}{{/if}} \ No newline at end of file diff --git a/templates/sheets-settings/adversary-settings/details.hbs b/templates/sheets-settings/adversary-settings/details.hbs index 065ebe74..dc2fd386 100644 --- a/templates/sheets-settings/adversary-settings/details.hbs +++ b/templates/sheets-settings/adversary-settings/details.hbs @@ -20,15 +20,11 @@
- {{localize "DAGGERHEART.GENERAL.HitPoints.plural"}} - {{formGroup systemFields.resources.fields.hitPoints.fields.value value=document._source.system.resources.hitPoints.value label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.hitPoints.value.label")}} - {{formGroup systemFields.resources.fields.hitPoints.fields.max value=document._source.system.resources.hitPoints.max label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.hitPoints.max.label")}} -
-
- {{localize "DAGGERHEART.GENERAL.stress"}} - {{formGroup systemFields.resources.fields.stress.fields.value value=document._source.system.resources.stress.value label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.stress.value.label")}} - {{formGroup systemFields.resources.fields.stress.fields.max value=document._source.system.resources.stress.max label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.stress.max.label")}} -
+ {{localize "DAGGERHEART.GENERAL.Resource.plural"}} + {{#each resources as |resource|}} + {{formGroup resource.field value=resource.value name=resource.name}} + {{/each}} +
@@ -36,4 +32,4 @@ {{formGroup systemFields.damageThresholds.fields.major value=document._source.system.damageThresholds.major label=(localize "DAGGERHEART.GENERAL.DamageThresholds.majorThreshold")}} {{formGroup systemFields.damageThresholds.fields.severe value=document._source.system.damageThresholds.severe label=(localize "DAGGERHEART.GENERAL.DamageThresholds.severeThreshold")}}
- \ No newline at end of file + diff --git a/templates/sheets-settings/character-settings/details.hbs b/templates/sheets-settings/character-settings/details.hbs index 3f9247e0..4bda501e 100644 --- a/templates/sheets-settings/character-settings/details.hbs +++ b/templates/sheets-settings/character-settings/details.hbs @@ -22,15 +22,12 @@ {{localize 'DAGGERHEART.GENERAL.basics'}}
- {{formGroup systemFields.resources.fields.hitPoints.fields.value value=document._source.system.resources.hitPoints.value localize=true}} - - {{formGroup systemFields.resources.fields.hitPoints.fields.max value=document._source.system.resources.hitPoints.max localize=true}} - + {{#each resources as |resource|}} + + {{formGroup resource.field value=resource.value name=resource.name}} + + {{/each}} - {{formGroup systemFields.resources.fields.stress.fields.value value=document._source.system.resources.stress.value localize=true}} - {{formGroup systemFields.resources.fields.stress.fields.max value=document._source.system.resources.stress.max localize=true}} - - {{formGroup systemFields.resources.fields.hope.fields.value value=document._source.system.resources.hope.value localize=true}} {{formGroup systemFields.scars value=document._source.system.scars localize=true}} {{formGroup systemFields.proficiency value=document._source.system.proficiency localize=true}} @@ -39,4 +36,4 @@
- \ No newline at end of file + diff --git a/templates/sheets-settings/companion-settings/details.hbs b/templates/sheets-settings/companion-settings/details.hbs index 88878d67..6a602d38 100644 --- a/templates/sheets-settings/companion-settings/details.hbs +++ b/templates/sheets-settings/companion-settings/details.hbs @@ -7,8 +7,9 @@ {{localize 'DAGGERHEART.GENERAL.basics'}}
{{formGroup systemFields.evasion value=document._source.system.evasion localize=true}} - {{formGroup systemFields.resources.fields.stress.fields.value value=document._source.system.resources.stress.value label='DAGGERHEART.ACTORS.Companion.FIELDS.resources.stress.currentStress.label' localize=true}} - {{formGroup systemFields.resources.fields.stress.fields.max value=document._source.system.resources.stress.max label='DAGGERHEART.ACTORS.Companion.FIELDS.resources.stress.maxStress.label' localize=true}} + {{#each resources as |resource|}} + {{formGroup resource.field value=resource.value name=resource.name}} + {{/each}}
@@ -19,4 +20,4 @@
- \ No newline at end of file + diff --git a/templates/sheets/actors/character/features.hbs b/templates/sheets/actors/character/features.hbs index acabd37e..3e942468 100644 --- a/templates/sheets/actors/character/features.hbs +++ b/templates/sheets/actors/character/features.hbs @@ -4,19 +4,21 @@ {{#each document.system.sheetLists as |category|}} {{#if (eq category.type 'feature' )}} {{> 'daggerheart.inventory-items' - title=category.title - type='feature' - collection=category.values - canCreate=true - showActions=true + title=category.title + type='feature' + actorType='character' + collection=category.values + canCreate=true + showActions=true }} {{else if category.values}} {{> 'daggerheart.inventory-items' - title=category.title - type='feature' - collection=category.values - canCreate=false - showActions=true + title=category.title + type='feature' + actorType='character' + collection=category.values + canCreate=false + showActions=true }} {{/if}} diff --git a/templates/sheets/actors/character/header.hbs b/templates/sheets/actors/character/header.hbs index d2c01f3c..06f464fa 100644 --- a/templates/sheets/actors/character/header.hbs +++ b/templates/sheets/actors/character/header.hbs @@ -65,22 +65,25 @@
-
-

{{localize "DAGGERHEART.GENERAL.hope"}}

- {{#times document.system.resources.hope.max}} - - {{#if (gte ../document.system.resources.hope.value (add this 1))}} - - {{else}} - - {{/if}} - - {{/times}} - {{#times document.system.scars}} - - - - {{/times}} +
+
+

{{localize "DAGGERHEART.GENERAL.hope"}}

+ {{#times document.system.resources.hope.max}} + + {{#if (gte ../document.system.resources.hope.value (add this 1))}} + + {{else}} + + {{/if}} + + {{/times}} + {{#times document.system.scars}} + + + + {{/times}} + {{#if hasExtraResources}}{{/if}} +
{{#if document.system.class.value}} diff --git a/templates/sheets/global/partials/item-tags.hbs b/templates/sheets/global/partials/item-tags.hbs new file mode 100644 index 00000000..b30fcbf2 --- /dev/null +++ b/templates/sheets/global/partials/item-tags.hbs @@ -0,0 +1,8 @@ +
+ {{#each _getTags as |tag|}} +
+ {{tag}} +
+ {{/each}} + {{#if @partial-block}}{{> @partial-block}}{{/if}} +
\ No newline at end of file diff --git a/templates/sheets/items/armor/description.hbs b/templates/sheets/items/armor/description.hbs index c234fa10..af2698ef 100644 --- a/templates/sheets/items/armor/description.hbs +++ b/templates/sheets/items/armor/description.hbs @@ -1,19 +1,6 @@
-
-
-

{{localize "DAGGERHEART.ITEMS.Armor.baseThresholds.base"}}

- {{item.system.baseThresholds.major}}/{{item.system.baseThresholds.severe}} -
- -
-

{{localize "DAGGERHEART.ITEMS.Armor.baseScore"}}

- {{item.system.baseScore}} -
-
- {{#if features.length}}
-

{{localize "DAGGERHEART.GENERAL.features"}}

{{#each features as | feature |}}
{{localize feature.label}}: {{{localize feature.description}}}
{{/each}} diff --git a/templates/sheets/items/weapon/description.hbs b/templates/sheets/items/weapon/description.hbs index d8e128e7..af2698ef 100644 --- a/templates/sheets/items/weapon/description.hbs +++ b/templates/sheets/items/weapon/description.hbs @@ -1,36 +1,6 @@
-
-
-

{{localize "DAGGERHEART.GENERAL.Tiers.singular"}}

- {{tier}} -
- -
-

{{localize "DAGGERHEART.GENERAL.Trait.single"}}

- {{trait}} -
- -
-

{{localize "DAGGERHEART.GENERAL.range"}}

- {{range}} -
-
- -
-
-

{{localize "DAGGERHEART.GENERAL.damage"}}

- {{damage}} -
- -
-

{{localize "DAGGERHEART.GENERAL.burden"}}

- {{burden}} -
-
- {{#if features.length}}
-

{{localize "DAGGERHEART.GENERAL.features"}}

{{#each features as | feature |}}
{{localize feature.label}}: {{{localize feature.description}}}
{{/each}} diff --git a/templates/sheets/items/weapon/header.hbs b/templates/sheets/items/weapon/header.hbs index 349a9516..9bbd9511 100644 --- a/templates/sheets/items/weapon/header.hbs +++ b/templates/sheets/items/weapon/header.hbs @@ -14,13 +14,13 @@ - {{localize (concat 'DAGGERHEART.CONFIG.Range.' source.system.attack.range '.name')}} - - {{#if source.system.attack.damage.parts.0.value.custom.enabled}} + {{#if source.system.attack.damage.parts.hitPoints.value.custom.enabled}} {{localize "DAGGERHEART.GENERAL.custom"}} {{else}} - {{source.system.attack.damage.parts.0.value.dice}}{{#if source.system.attack.damage.parts.0.value.bonus}} + {{source.system.attack.damage.parts.0.value.bonus}}{{/if}} + {{source.system.attack.damage.parts.hitPoints.value.dice}}{{#if source.system.attack.damage.parts.hitPoints.value.bonus}} + {{source.system.attack.damage.parts.hitPoints.value.bonus}}{{/if}} {{/if}} ( - {{#each source.system.attack.damage.parts.0.type}} + {{#each source.system.attack.damage.parts.hitPoints.type}} {{localize (concat 'DAGGERHEART.CONFIG.DamageType.' this '.abbreviation')}} {{/each}} ) diff --git a/templates/sheets/items/weapon/settings.hbs b/templates/sheets/items/weapon/settings.hbs index f9499221..e67e8dd7 100644 --- a/templates/sheets/items/weapon/settings.hbs +++ b/templates/sheets/items/weapon/settings.hbs @@ -19,24 +19,24 @@
{{#with systemFields.attack.fields.damage.fields.parts.element.fields as | fields | }} - {{#with (lookup ../document.system.attack.damage.parts 0) as | source | }} + {{#with ../document.system.attack.damage.parts.hitPoints as | source | }} {{localize "DAGGERHEART.GENERAL.damage"}} {{localize "DAGGERHEART.ACTIONS.Config.general.customFormula"}} - {{formInput fields.value.fields.custom.fields.enabled value=source.value.custom.enabled name="system.attack.damage.parts.0.value.custom.enabled"}} + {{formInput fields.value.fields.custom.fields.enabled value=source.value.custom.enabled name="system.attack.damage.parts.hitPoints.value.custom.enabled"}} {{#if source.value.custom.enabled}} {{localize "DAGGERHEART.ACTIONS.Config.general.formula"}} - {{formInput fields.value.fields.custom.fields.formula value=source.value.custom.formula name="system.attack.damage.parts.0.value.custom.formula"}} + {{formInput fields.value.fields.custom.fields.formula value=source.value.custom.formula name="system.attack.damage.parts.hitPoints.value.custom.formula"}} {{else}} {{localize "DAGGERHEART.GENERAL.Dice.single"}} - {{formInput fields.value.fields.dice value=source.value.dice name="system.attack.damage.parts.0.value.dice"}} + {{formInput fields.value.fields.dice value=source.value.dice name="system.attack.damage.parts.hitPoints.value.dice"}} {{localize "DAGGERHEART.GENERAL.bonus"}} - {{formInput fields.value.fields.bonus value=source.value.bonus name="system.attack.damage.parts.0.value.bonus" localize=true}} + {{formInput fields.value.fields.bonus value=source.value.bonus name="system.attack.damage.parts.hitPoints.value.bonus" localize=true}} {{/if}} {{localize "DAGGERHEART.GENERAL.type"}} - {{formInput fields.type value=source.type name="system.attack.damage.parts.0.type" localize=true}} + {{formInput fields.type value=source.type name="system.attack.damage.parts.hitPoints.type" localize=true}} {{localize "DAGGERHEART.CONFIG.DamageType.direct.name"}} {{formInput @root.systemFields.attack.fields.damage.fields.direct value=@root.document.system.attack.damage.direct name="system.attack.damage.direct" localize=true}} - + {{/with}} {{/with}}
diff --git a/templates/ui/chat/parts/target-part.hbs b/templates/ui/chat/parts/target-part.hbs index 477445a3..9a545926 100644 --- a/templates/ui/chat/parts/target-part.hbs +++ b/templates/ui/chat/parts/target-part.hbs @@ -1,6 +1,6 @@
{{pluralize currentTargets.length "DAGGERHEART.GENERAL.Target"}}
- {{#if isGM}} + {{#if (or isGM (not metagamingSettings.hideObserverPermissionInChat))}}
{{#if (or (gt targetShort.hit 0) (gt targetShort.miss 0))}} diff --git a/templates/ui/itemBrowser/itemContainer.hbs b/templates/ui/itemBrowser/itemContainer.hbs index 0040a692..8dd75156 100644 --- a/templates/ui/itemBrowser/itemContainer.hbs +++ b/templates/ui/itemBrowser/itemContainer.hbs @@ -10,7 +10,10 @@
- {{{system.enrichedDescription}}} + + {{{system.enrichedTags}}} + {{{system.enrichedDescription}}} +
{{/each}} \ No newline at end of file diff --git a/templates/ui/tooltip/domainCard.hbs b/templates/ui/tooltip/domainCard.hbs index 9388f1a4..0380a523 100644 --- a/templates/ui/tooltip/domainCard.hbs +++ b/templates/ui/tooltip/domainCard.hbs @@ -5,7 +5,7 @@ - {{#with (lookup config.DOMAIN.domains item.system.domain) as | domain |}} + {{#with (lookup allDomains item.system.domain) as | domain |}} {{/with}} diff --git a/templates/ui/tooltip/resourceManagement.hbs b/templates/ui/tooltip/resourceManagement.hbs new file mode 100644 index 00000000..b9817e6e --- /dev/null +++ b/templates/ui/tooltip/resourceManagement.hbs @@ -0,0 +1,21 @@ +
+ {{#each resources as |resource|}} +
+

{{resource.label}}

+ {{#times resource.max}} + + {{#if resource.fullIcon.isIcon}} + + {{else}} + + {{/if}} + {{#if resource.emptyIcon.isIcon}} + + {{else}} + + {{/if}} + + {{/times}} +
+ {{/each}} +
\ No newline at end of file