diff --git a/daggerheart.mjs b/daggerheart.mjs index 1fa044ed..1bb9485e 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -19,7 +19,6 @@ import { } from './module/systemRegistration/_module.mjs'; import { placeables } from './module/canvas/_module.mjs'; import { registerRollDiceHooks } from './module/dice/dhRoll.mjs'; -import { registerDHActorHooks } from './module/documents/actor.mjs'; import './node_modules/@yaireo/tagify/dist/tagify.css'; Hooks.once('init', () => { @@ -80,8 +79,8 @@ Hooks.once('init', () => { Items.registerSheet(SYSTEM.id, applications.sheets.items.Subclass, { types: ['subclass'], makeDefault: true }); Items.registerSheet(SYSTEM.id, applications.sheets.items.Feature, { types: ['feature'], makeDefault: true }); Items.registerSheet(SYSTEM.id, applications.sheets.items.DomainCard, { types: ['domainCard'], makeDefault: true }); - Items.registerSheet(SYSTEM.id, applications.sheets.items.Miscellaneous, { - types: ['miscellaneous'], + Items.registerSheet(SYSTEM.id, applications.sheets.items.Loot, { + types: ['loot'], makeDefault: true }); Items.registerSheet(SYSTEM.id, applications.sheets.items.Consumable, { types: ['consumable'], makeDefault: true }); @@ -169,7 +168,7 @@ Hooks.on('ready', () => { registerCountdownHooks(); socketRegistration.registerSocketHooks(); registerRollDiceHooks(); - registerDHActorHooks(); + socketRegistration.registerUserQueries(); }); Hooks.once('dicesoniceready', () => {}); @@ -198,13 +197,13 @@ Hooks.on('chatMessage', (_, message) => { const traitValue = rollCommand.trait?.toLowerCase(); const advantage = rollCommand.advantage - ? CONFIG.DH.ACTIONS.advandtageState.advantage.value + ? CONFIG.DH.ACTIONS.advantageState.advantage.value : rollCommand.disadvantage - ? CONFIG.DH.ACTIONS.advandtageState.disadvantage.value + ? CONFIG.DH.ACTIONS.advantageState.disadvantage.value : undefined; const difficulty = rollCommand.difficulty; - const target = getCommandTarget(); + const target = getCommandTarget({ allowNull: true }); const title = traitValue ? game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', { ability: game.i18n.localize(SYSTEM.ACTOR.abilities[traitValue].label) diff --git a/lang/en.json b/lang/en.json index bc3404b0..c6e6d5fd 100755 --- a/lang/en.json +++ b/lang/en.json @@ -8,7 +8,7 @@ "feature": "Feature", "domainCard": "Domain Card", "consumable": "Consumable", - "miscellaneous": "Miscellaneous", + "loot": "Loot", "weapon": "Weapon", "armor": "Armor", "beastform": "Beastform" @@ -28,25 +28,6 @@ }, "DAGGERHEART": { "ACTIONS": { - "Config": { - "beastform": { - "exact": "Beastform Max Tier", - "exactHint": "The Character's Tier is used if empty", - "label": "Beastform" - } - }, - "Settings": { - "attackBonus": "Attack Bonus", - "attackName": "Attack Name", - "includeBase": { "label": "Include Item Damage" }, - "multiplier": "Multiplier", - "resultBased": { - "label": "Formula based on Hope/Fear result." - }, - "applyTo": { - "label": "Targeted Resource" - } - }, "TYPES": { "attack": { "name": "Attack", @@ -76,6 +57,35 @@ "name": "Summon", "tooltip": "Create tokens in the scene." } + }, + "Config": { + "beastform": { + "exact": "Beastform Max Tier", + "exactHint": "The Character's Tier is used if empty", + "label": "Beastform" + }, + "displayInChat": "Display in chat" + }, + "RollField": { + "diceRolling": { + "compare": "Should be", + "dice": "Dice Type", + "flatMultiplier": "Flat Multiplier", + "multiplier": "Dice Number", + "threshold": "Threshold" + } + }, + "Settings": { + "attackBonus": "Attack Bonus", + "attackName": "Attack Name", + "includeBase": { "label": "Include Item Damage" }, + "multiplier": "Multiplier", + "resultBased": { + "label": "Formula based on Hope/Fear result." + }, + "applyTo": { + "label": "Targeted Resource" + } } }, "ACTORS": { @@ -283,6 +293,7 @@ "usedMarks": "Used Marks" }, "DeathMove": { + "selectMove": "Select Move", "takeMove": "Take Death Move", "title": "{actor} - Death Move" }, @@ -442,6 +453,9 @@ "title": "Ownership Selection - {name}", "default": "Default Ownership" }, + "ReactionRoll": { + "title": "Reaction Roll: {trait}" + }, "ResourceDice": { "title": "{name} Resource", "rerollDice": "Reroll Dice" @@ -703,7 +717,7 @@ "abbreviation": "HO" }, "armorStack": { - "name": "Armor Stack", + "name": "Armor Slot", "abbreviation": "AS" }, "fear": { @@ -1019,6 +1033,9 @@ }, "damageRoll": { "name": "Damage Roll" + }, + "healingRoll": { + "name": "Healing Roll" } }, "Duration": { @@ -1107,10 +1124,30 @@ }, "DamageResistance": { "none": "None", - "resistance": "Resistance", - "immunity": "Immunity", - "physicalReduction": "Physical Damage Reduction", - "magicalReduction": "Magical Damage Reduction" + "physicalResistance": { + "label": "Damage Resistance: Physical", + "hint": "Physical Damage is halved if this is set to 1" + }, + "magicalResistance": { + "label": "Damage Resistance: Magical", + "hint": "Magical Damage is halved if this is set to 1" + }, + "physicalImmunity": { + "label": "Damage Immunity: Physical", + "hint": "Immune to Physical Damage if this is set to 1" + }, + "magicalImmunity": { + "label": "Damage Immunity: Magical", + "hint": "Immune to Magical Damage if this is set to 1" + }, + "physicalReduction": { + "label": "Damage Reduction: Physical", + "hint": "Physical Damage is reduced by the amount set here" + }, + "magicalReduction": { + "label": "Damage Reduction: Magical", + "hint": "Magical Damage is reduced by the amount set here" + } }, "DamageThresholds": { "title": "Damage Thresholds", @@ -1243,7 +1280,14 @@ }, "attack": { "damage": { - "value": { "label": "Base Attack: Damage" } + "dice": { + "label": "Base Attack: Damage Dice Index", + "hint": "Index for the damage dice used on the basic attack. 0=d4, 1=d6, 2=d8, 3=d10, 4=d12, 5=d20" + }, + "bonus": { "label": "Base Attack: Damage Bonus" } + }, + "roll": { + "trait": { "label": "Base Attack: Trait" } } } }, @@ -1562,7 +1606,11 @@ "foreground": "Foreground", "background": "Background", "outline": "Outline", - "edge": "Edge" + "edge": "Edge", + "texture": "Texture", + "colorset": "Theme", + "material": "Material", + "system": "Dice Preset" } }, "variantRules": { @@ -1590,6 +1638,10 @@ "hint": "test" } } + }, + "ResetSettings": { + "resetConfirmationTitle": "Reset Settings", + "resetConfirmationText": "Are you sure you want to reset the {settings}?" } }, "UI": { @@ -1627,8 +1679,9 @@ "subclassFeatureTitle": "Subclass Feature" }, "healingRoll": { - "title": "Heal - {healing}", - "heal": "Heal" + "title": "Heal - {damage}", + "heal": "Heal", + "applyHealing": "Apply Healing" }, "reroll": { "confirmTitle": "Reroll Dice", diff --git a/module/applications/dialogs/beastformDialog.mjs b/module/applications/dialogs/beastformDialog.mjs index 3c35b542..35bac11c 100644 --- a/module/applications/dialogs/beastformDialog.mjs +++ b/module/applications/dialogs/beastformDialog.mjs @@ -123,13 +123,15 @@ export default class BeastformDialog extends HandlebarsApplicationMixin(Applicat ); const compendiumBeastforms = await game.packs.get(`daggerheart.beastforms`)?.getDocuments(); - const beastformTiers = [...(compendiumBeastforms ? compendiumBeastforms : []), ...game.items].reduce( + const beastformTiers = [...game.items, ...(compendiumBeastforms ? compendiumBeastforms : [])].reduce( (acc, x) => { const tier = CONFIG.DH.GENERAL.tiers[x.system.tier]; if (x.type !== 'beastform' || tier.id > this.configData.tierLimit) return acc; if (!acc[tier.id]) acc[tier.id] = { label: game.i18n.localize(tier.label), values: {} }; + if (Object.values(acc[tier.id].values).find(existing => existing.value.name === x.name)) return acc; + acc[tier.id].values[x.uuid] = { selected: this.selected?.uuid == x.uuid, value: x, diff --git a/module/applications/dialogs/d20RollDialog.mjs b/module/applications/dialogs/d20RollDialog.mjs index 05ca1505..76871b6a 100644 --- a/module/applications/dialogs/d20RollDialog.mjs +++ b/module/applications/dialogs/d20RollDialog.mjs @@ -91,9 +91,10 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio context.roll = this.roll; context.rollType = this.roll?.constructor.name; context.rallyDie = this.roll.rallyChoices; - context.experiences = Object.keys(this.config.data.experiences).map(id => ({ + const experiences = this.config.data?.experiences || {}; + context.experiences = Object.keys(experiences).map(id => ({ id, - ...this.config.data.experiences[id] + ...experiences[id] })); context.selectedExperiences = this.config.experiences; context.advantage = this.config.roll?.advantage; diff --git a/module/applications/dialogs/damageDialog.mjs b/module/applications/dialogs/damageDialog.mjs index 78452054..cffa6433 100644 --- a/module/applications/dialogs/damageDialog.mjs +++ b/module/applications/dialogs/damageDialog.mjs @@ -38,17 +38,15 @@ export default class DamageDialog extends HandlebarsApplicationMixin(Application }; get title() { - return game.i18n.localize('DAGGERHEART.EFFECTS.ApplyLocations.damageRoll.name'); + return game.i18n.localize(`DAGGERHEART.EFFECTS.ApplyLocations.${this.config.isHealing ? 'healing' : 'damage'}Roll.name`); } async _prepareContext(_options) { const context = await super._prepareContext(_options); context.config = CONFIG.DH; - context.title = this.config.title - ? this.config.title - : game.i18n.localize('DAGGERHEART.EFFECTS.ApplyLocations.damageRoll.name'); - // context.extraFormula = this.config.extraFormula; + context.title = this.config.title ?? this.title; context.formula = this.roll.constructFormula(this.config); + context.isHealing = this.config.isHealing; context.directDamage = this.config.directDamage; context.selectedRollMode = this.config.selectedRollMode; context.rollModes = Object.entries(CONFIG.Dice.rollModes).map(([action, { label, icon }]) => ({ diff --git a/module/applications/dialogs/damageReductionDialog.mjs b/module/applications/dialogs/damageReductionDialog.mjs index 3e3bde44..9049522d 100644 --- a/module/applications/dialogs/damageReductionDialog.mjs +++ b/module/applications/dialogs/damageReductionDialog.mjs @@ -1,6 +1,6 @@ import { damageKeyToNumber, getDamageLabel } from '../../helpers/utils.mjs'; -const { DialogV2, ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; +const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; export default class DamageReductionDialog extends HandlebarsApplicationMixin(ApplicationV2) { constructor(resolve, reject, actor, damage, damageType) { @@ -53,10 +53,6 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap ); } - get title() { - return game.i18n.localize('DAGGERHEART.APPLICATIONS.DamageReduction.title'); - } - static DEFAULT_OPTIONS = { tag: 'form', classes: ['daggerheart', 'views', 'damage-reduction'], diff --git a/module/applications/dialogs/damageSelectionDialog.mjs b/module/applications/dialogs/damageSelectionDialog.mjs index 547ba87c..3d4b312c 100644 --- a/module/applications/dialogs/damageSelectionDialog.mjs +++ b/module/applications/dialogs/damageSelectionDialog.mjs @@ -1,3 +1,5 @@ +// TO DELETE ? + const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; export default class DamageSelectionDialog extends HandlebarsApplicationMixin(ApplicationV2) { diff --git a/module/applications/dialogs/deathMove.mjs b/module/applications/dialogs/deathMove.mjs index c08280f3..81808790 100644 --- a/module/applications/dialogs/deathMove.mjs +++ b/module/applications/dialogs/deathMove.mjs @@ -13,8 +13,9 @@ export default class DhpDeathMove extends HandlebarsApplicationMixin(Application } static DEFAULT_OPTIONS = { - classes: ['daggerheart', 'views', 'death-move'], - position: { width: 800, height: 'auto' }, + classes: ['daggerheart', 'dh-style', 'dialog', 'views', 'death-move'], + position: { width: 'auto', height: 'auto' }, + window: { icon: 'fa-solid fa-skull' }, actions: { selectMove: this.selectMove, takeMove: this.takeMove @@ -32,6 +33,7 @@ export default class DhpDeathMove extends HandlebarsApplicationMixin(Application const context = await super._prepareContext(_options); context.selectedMove = this.selectedMove; context.options = CONFIG.DH.GENERAL.deathMoves; + context.title = game.i18n.localize('DAGGERHEART.APPLICATIONS.DeathMove.takeMove'); return context; } diff --git a/module/applications/hud/tokenHUD.mjs b/module/applications/hud/tokenHUD.mjs index 572b03f9..5c29260b 100644 --- a/module/applications/hud/tokenHUD.mjs +++ b/module/applications/hud/tokenHUD.mjs @@ -66,12 +66,9 @@ export default class DHTokenHUD extends foundry.applications.hud.TokenHUD { if (!status) continue; if (status._id) { if (status._id !== effect.id) continue; - } else { - if (effect.statuses.size !== 1) continue; } status.isActive = true; if (effect.getFlag('core', 'overlay')) status.isOverlay = true; - break; } } diff --git a/module/applications/settings/appearanceSettings.mjs b/module/applications/settings/appearanceSettings.mjs index a03bef9a..533dacff 100644 --- a/module/applications/settings/appearanceSettings.mjs +++ b/module/applications/settings/appearanceSettings.mjs @@ -43,7 +43,7 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App { id: 'hope', label: 'DAGGERHEART.GENERAL.hope' }, { id: 'fear', label: 'DAGGERHEART.GENERAL.fear' }, { id: 'advantage', label: 'DAGGERHEART.GENERAL.Advantage.full' }, - { id: 'disadvantage', label: 'DAGGERHEART.GENERAL.Advantage.full' } + { id: 'disadvantage', label: 'DAGGERHEART.GENERAL.Disadvantage.full' } ], initial: 'hope' } @@ -59,8 +59,20 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App const context = await super._prepareContext(_options); context.settingFields = this.settings; - context.diceSoNiceTextures = game.dice3d?.exports?.TEXTURELIST ?? {}; - context.diceSoNiceColorsets = game.dice3d?.exports?.COLORSETS ?? {}; + context.showDiceSoNice = game.modules.get('dice-so-nice')?.active; + if (game.dice3d) { + context.diceSoNiceTextures = game.dice3d.exports.TEXTURELIST; + context.diceSoNiceColorsets = game.dice3d.exports.COLORSETS; + context.diceSoNiceMaterials = Object.keys(game.dice3d.DiceFactory.material_options).map(key => ({ + key: key, + name: `DICESONICE.Material${key.capitalize()}` + })); + context.diceSoNiceSystems = []; + for (const [key, system] of game.dice3d.DiceFactory.systems.entries()) { + context.diceSoNiceSystems.push({ key, name: system.name }); + } + } + context.diceTab = { key: this.tabGroups.diceSoNice, source: this.settings._source.diceSoNice[this.tabGroups.diceSoNice], diff --git a/module/applications/settings/homebrewSettings.mjs b/module/applications/settings/homebrewSettings.mjs index 2aa2660e..1b73747c 100644 --- a/module/applications/settings/homebrewSettings.mjs +++ b/module/applications/settings/homebrewSettings.mjs @@ -136,10 +136,14 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli ...move, name: game.i18n.localize(move.name), description: game.i18n.localize(move.description), - actions: move.actions.map(action => ({ - ...action, - name: game.i18n.localize(action.name) - })) + actions: move.actions.reduce((acc, key) => { + const action = move.actions[key]; + acc[key] = { + ...action, + name: game.i18n.localize(action.name) + }; + return acc; + }, {}) }; return acc; @@ -165,8 +169,18 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli } static async reset() { + const confirmed = await foundry.applications.api.DialogV2.confirm({ + window: { + title: game.i18n.format('DAGGERHEART.SETTINGS.ResetSettings.resetConfirmationTitle') + }, + content: game.i18n.format('DAGGERHEART.SETTINGS.ResetSettings.resetConfirmationText', { + settings: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.homebrew.name') + }) + }); + if (!confirmed) return; + const resetSettings = new DhHomebrew(); - let localizedSettings = this.localizeObject(resetSettings); + let localizedSettings = this.localizeObject(resetSettings.toObject()); this.settings.updateSource(localizedSettings); this.render(); } diff --git a/module/applications/sheets-configs/action-config.mjs b/module/applications/sheets-configs/action-config.mjs index 070db23f..7d50c0c6 100644 --- a/module/applications/sheets-configs/action-config.mjs +++ b/module/applications/sheets-configs/action-config.mjs @@ -110,6 +110,7 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) { context.costOptions = this.getCostOptions(); context.disableOption = this.disableOption.bind(this); context.isNPC = this.action.actor?.isNPC; + context.baseSaveDifficulty = this.action.actor?.baseSaveDifficulty; context.hasRoll = this.action.hasRoll; const settingsTiers = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LevelTiers).tiers; @@ -117,7 +118,6 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) { { key: 1, label: game.i18n.localize('DAGGERHEART.GENERAL.Tiers.1') }, ...Object.values(settingsTiers).map(x => ({ key: x.tier, label: x.name })) ]; - return context; } diff --git a/module/applications/sheets-configs/activeEffectConfig.mjs b/module/applications/sheets-configs/activeEffectConfig.mjs index 087b5b08..88edf9d6 100644 --- a/module/applications/sheets-configs/activeEffectConfig.mjs +++ b/module/applications/sheets-configs/activeEffectConfig.mjs @@ -99,7 +99,17 @@ export default class DhActiveEffectConfig extends foundry.applications.sheets.Ac async _preparePartContext(partId, context) { const partContext = await super._preparePartContext(partId, context); switch (partId) { - case 'changes': + case 'details': + const useGeneric = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.appearance + ).showGenericStatusEffects; + if (!useGeneric) { + partContext.statuses = Object.values(CONFIG.DH.GENERAL.conditions).map(status => ({ + value: status.id, + label: game.i18n.localize(status.name) + })); + } break; } diff --git a/module/applications/sheets-configs/environment-settings.mjs b/module/applications/sheets-configs/environment-settings.mjs index 7a91b272..7d4b9640 100644 --- a/module/applications/sheets-configs/environment-settings.mjs +++ b/module/applications/sheets-configs/environment-settings.mjs @@ -75,7 +75,7 @@ export default class DHEnvironmentSettings extends DHBaseActorSettings { * @returns */ static async #deleteAdversary(_event, target) { - const doc = getDocFromElement(target); + const doc = await getDocFromElement(target); const { category } = target.dataset; const path = `system.potentialAdversaries.${category}.adversaries`; diff --git a/module/applications/sheets/actors/character.mjs b/module/applications/sheets/actors/character.mjs index 31755bca..6bbef5b0 100644 --- a/module/applications/sheets/actors/character.mjs +++ b/module/applications/sheets/actors/character.mjs @@ -4,7 +4,7 @@ import { abilities } from '../../../config/actorConfig.mjs'; import DhCharacterlevelUp from '../../levelup/characterLevelup.mjs'; import DhCharacterCreation from '../../characterCreation/characterCreation.mjs'; import FilterMenu from '../../ux/filter-menu.mjs'; -import { getDocFromElement, itemAbleRollParse } from '../../../helpers/utils.mjs'; +import { getDocFromElement, getDocFromElementSync } from '../../../helpers/utils.mjs'; /**@typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction */ @@ -55,7 +55,7 @@ export default class CharacterSheet extends DHBaseActorSheet { }, { handler: CharacterSheet.#getItemContextOptions, - selector: '[data-item-uuid][data-type="consumable"], [data-item-uuid][data-type="miscellaneous"]', + selector: '[data-item-uuid][data-type="consumable"], [data-item-uuid][data-type="loot"]', options: { parentClassHooks: false, fixed: true @@ -258,19 +258,27 @@ export default class CharacterSheet extends DHBaseActorSheet { { name: 'toLoadout', icon: 'fa-solid fa-arrow-up', - condition: target => getDocFromElement(target).system.inVault, - callback: target => { - const doc = getDocFromElement(target), - actorLoadout = doc.actor.system.loadoutSlot; - if(actorLoadout.available) return doc.update({ 'system.inVault': false }); - ui.notifications.warn(game.i18n.format('DAGGERHEART.UI.Notifications.loadoutMaxReached', { max: actorLoadout.max })) + condition: target => { + const doc = getDocFromElementSync(target); + return doc && doc.system.inVault; + }, + callback: async target => { + const doc = await getDocFromElement(target); + const actorLoadout = doc.actor.system.loadoutSlot; + if (actorLoadout.available) return doc.update({ 'system.inVault': false }); + ui.notifications.warn( + game.i18n.format('DAGGERHEART.UI.Notifications.loadoutMaxReached', { max: actorLoadout.max }) + ); } }, { name: 'toVault', icon: 'fa-solid fa-arrow-down', - condition: target => !getDocFromElement(target).system.inVault, - callback: target => getDocFromElement(target).update({ 'system.inVault': true }) + condition: target => { + const doc = getDocFromElementSync(target); + return doc && !doc.system.inVault; + }, + callback: async target => (await getDocFromElement(target)).update({ 'system.inVault': true }) } ].map(option => ({ ...option, @@ -292,13 +300,19 @@ export default class CharacterSheet extends DHBaseActorSheet { { name: 'equip', icon: 'fa-solid fa-hands', - condition: target => !getDocFromElement(target).system.equipped, + condition: target => { + const doc = getDocFromElementSync(target); + return doc && !doc.system.equipped; + }, callback: (target, event) => CharacterSheet.#toggleEquipItem.call(this, event, target) }, { name: 'unequip', icon: 'fa-solid fa-hands', - condition: target => getDocFromElement(target).system.equipped, + condition: target => { + const doc = getDocFromElementSync(target); + return doc && doc.system.equipped; + }, callback: (target, event) => CharacterSheet.#toggleEquipItem.call(this, event, target) } ].map(option => ({ @@ -311,7 +325,7 @@ export default class CharacterSheet extends DHBaseActorSheet { } /** - * Get the set of ContextMenu options for Consumable and Miscellaneous. + * Get the set of ContextMenu options for Consumable and Loot. * @returns {import('@client/applications/ux/context-menu.mjs').ContextMenuEntry[]} - The Array of context options passed to the ContextMenu instance * @this {CharacterSheet} * @protected @@ -407,11 +421,11 @@ export default class CharacterSheet extends DHBaseActorSheet { * @param {HTMLElement} html The container to filter items from. * @protected */ - _onSearchFilterInventory(event, query, rgx, html) { + async _onSearchFilterInventory(_event, query, rgx, html) { this.#filteredItems.inventory.search.clear(); for (const li of html.querySelectorAll('.inventory-item')) { - const item = getDocFromElement(li); + const item = await getDocFromElement(li); const matchesSearch = !query || foundry.applications.ux.SearchFilter.testQuery(rgx, item.name); if (matchesSearch) this.#filteredItems.inventory.search.add(item.id); const { menu } = this.#filteredItems.inventory; @@ -427,11 +441,11 @@ export default class CharacterSheet extends DHBaseActorSheet { * @param {HTMLElement} html The container to filter items from. * @protected */ - _onSearchFilterCard(event, query, rgx, html) { + async _onSearchFilterCard(_event, query, rgx, html) { this.#filteredItems.loadout.search.clear(); for (const li of html.querySelectorAll('.items-list .inventory-item, .card-list .card-item')) { - const item = getDocFromElement(li); + const item = await getDocFromElement(li); const matchesSearch = !query || foundry.applications.ux.SearchFilter.testQuery(rgx, item.name); if (matchesSearch) this.#filteredItems.loadout.search.add(item.id); const { menu } = this.#filteredItems.loadout; @@ -478,11 +492,11 @@ export default class CharacterSheet extends DHBaseActorSheet { * @param {HTMLElement} html * @param {import('../ux/filter-menu.mjs').FilterItem[]} filters */ - _onMenuFilterInventory(event, html, filters) { + async _onMenuFilterInventory(_event, html, filters) { this.#filteredItems.inventory.menu.clear(); for (const li of html.querySelectorAll('.inventory-item')) { - const item = getDocFromElement(li); + const item = await getDocFromElement(li); const matchesMenu = filters.length === 0 || filters.some(f => foundry.applications.ux.SearchFilter.evaluateFilter(item, f)); @@ -499,11 +513,11 @@ export default class CharacterSheet extends DHBaseActorSheet { * @param {HTMLElement} html * @param {import('../ux/filter-menu.mjs').FilterItem[]} filters */ - _onMenuFilterLoadout(event, html, filters) { + async _onMenuFilterLoadout(_event, html, filters) { this.#filteredItems.loadout.menu.clear(); for (const li of html.querySelectorAll('.items-list .inventory-item, .card-list .card-item')) { - const item = getDocFromElement(li); + const item = await getDocFromElement(li); const matchesMenu = filters.length === 0 || filters.some(f => foundry.applications.ux.SearchFilter.evaluateFilter(item, f)); @@ -519,7 +533,7 @@ export default class CharacterSheet extends DHBaseActorSheet { /* -------------------------------------------- */ async updateItemResource(event) { - const item = getDocFromElement(event.currentTarget); + const item = await getDocFromElement(event.currentTarget); if (!item) return; const max = event.currentTarget.max ? Number(event.currentTarget.max) : null; @@ -529,7 +543,7 @@ export default class CharacterSheet extends DHBaseActorSheet { } async updateItemQuantity(event) { - const item = getDocFromElement(event.currentTarget); + const item = await getDocFromElement(event.currentTarget); if (!item) return; await item.update({ 'system.quantity': event.currentTarget.value }); @@ -609,7 +623,7 @@ export default class CharacterSheet extends DHBaseActorSheet { * @type {ApplicationClickAction} */ static async #toggleEquipItem(_event, button) { - const item = getDocFromElement(button); + const item = await getDocFromElement(button); if (!item) return; if (item.system.equipped) { await item.update({ 'system.equipped': false }); @@ -664,7 +678,7 @@ export default class CharacterSheet extends DHBaseActorSheet { * @type {ApplicationClickAction} */ static async #toggleVault(_event, button) { - const doc = getDocFromElement(button); + const doc = await getDocFromElement(button); await doc?.update({ 'system.inVault': !doc.system.inVault }); } @@ -673,7 +687,7 @@ export default class CharacterSheet extends DHBaseActorSheet { * @type {ApplicationClickAction} */ static async #toggleResourceDice(event, target) { - const item = getDocFromElement(target); + const item = await getDocFromElement(target); const { dice } = event.target.closest('.item-resource').dataset; const diceState = item.system.resource.diceStates[dice]; @@ -688,7 +702,7 @@ export default class CharacterSheet extends DHBaseActorSheet { * @type {ApplicationClickAction} */ static async #handleResourceDice(_, target) { - const item = getDocFromElement(target); + const item = await getDocFromElement(target); if (!item) return; const rollValues = await game.system.api.applications.dialogs.ResourceDiceDialog.create(item, this.document); @@ -709,7 +723,7 @@ export default class CharacterSheet extends DHBaseActorSheet { } async _onDragStart(event) { - const item = getDocFromElement(event.target); + const item = await getDocFromElement(event.target); const dragData = { type: item.documentName, diff --git a/module/applications/sheets/api/application-mixin.mjs b/module/applications/sheets/api/application-mixin.mjs index 51328c8d..50c93617 100644 --- a/module/applications/sheets/api/application-mixin.mjs +++ b/module/applications/sheets/api/application-mixin.mjs @@ -1,6 +1,5 @@ const { HandlebarsApplicationMixin } = foundry.applications.api; -import { getDocFromElement, tagifyElement } from '../../../helpers/utils.mjs'; -import DHActionConfig from '../../sheets-configs/action-config.mjs'; +import { getDocFromElement, getDocFromElementSync, tagifyElement } from '../../../helpers/utils.mjs'; /** * @typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction @@ -124,7 +123,14 @@ export default function DHApplicationMixin(Base) { /**@inheritdoc */ async _onFirstRender(context, options) { await super._onFirstRender(context, options); - this.relatedDocs.filter(doc => doc).map(doc => (doc.apps[this.id] = this)); + + const docs = []; + for (var docData of this.relatedDocs) { + const doc = await foundry.utils.fromUuid(docData.uuid); + docs.push(doc); + } + + docs.filter(doc => doc).map(doc => (doc.apps[this.id] = this)); if (!!this.options.contextMenus.length) this._createContextMenus(); } @@ -259,14 +265,20 @@ export default function DHApplicationMixin(Base) { { name: 'disableEffect', icon: 'fa-solid fa-lightbulb', - condition: target => !getDocFromElement(target).disabled, - callback: target => getDocFromElement(target).update({ disabled: true }) + condition: target => { + const doc = getDocFromElementSync(target); + return doc && !doc.disabled; + }, + callback: async target => (await getDocFromElement(target)).update({ disabled: true }) }, { name: 'enableEffect', icon: 'fa-regular fa-lightbulb', - condition: target => getDocFromElement(target).disabled, - callback: target => getDocFromElement(target).update({ disabled: false }) + condition: target => { + const doc = getDocFromElementSync(target); + return doc && doc.disabled; + }, + callback: async target => (await getDocFromElement(target)).update({ disabled: false }) } ].map(option => ({ ...option, @@ -299,10 +311,10 @@ export default function DHApplicationMixin(Base) { name: 'CONTROLS.CommonEdit', icon: 'fa-solid fa-pen-to-square', condition: target => { - const doc = getDocFromElement(target); - return !doc.hasOwnProperty('systemPath') || doc.inCollection; + const doc = getDocFromElementSync(target); + return !doc || !doc.hasOwnProperty('systemPath') || doc.inCollection; }, - callback: target => getDocFromElement(target).sheet.render({ force: true }) + callback: async target => (await getDocFromElement(target)).sheet.render({ force: true }) } ]; @@ -311,25 +323,25 @@ export default function DHApplicationMixin(Base) { name: 'DAGGERHEART.APPLICATIONS.ContextMenu.useItem', icon: 'fa-solid fa-burst', condition: target => { - const doc = getDocFromElement(target); - return !(doc.type === 'domainCard' && doc.system.inVault) + const doc = getDocFromElementSync(target); + return doc && !(doc.type === 'domainCard' && doc.system.inVault); }, - callback: (target, event) => getDocFromElement(target).use(event) + callback: async (target, event) => (await getDocFromElement(target)).use(event) }); if (toChat) options.unshift({ name: 'DAGGERHEART.APPLICATIONS.ContextMenu.sendToChat', icon: 'fa-solid fa-message', - callback: target => getDocFromElement(target).toChat(this.document.id) + callback: async target => (await getDocFromElement(target)).toChat(this.document.id) }); if (deletable) options.push({ name: 'CONTROLS.CommonDelete', icon: 'fa-solid fa-trash', - callback: (target, event) => { - const doc = getDocFromElement(target); + callback: async (target, event) => { + const doc = await getDocFromElement(target); if (event.shiftKey) return doc.delete(); else return doc.deleteDialog(); } @@ -371,7 +383,7 @@ export default function DHApplicationMixin(Base) { if (!actionId && !itemUuid) return; const doc = itemUuid - ? getDocFromElement(extensibleElement) + ? await getDocFromElement(extensibleElement) : this.document.system.attack?.id === actionId ? this.document.system.attack : this.document.system.actions?.get(actionId); @@ -429,8 +441,8 @@ export default function DHApplicationMixin(Base) { * Renders an embedded document. * @type {ApplicationClickAction} */ - static #editDoc(_event, target) { - const doc = getDocFromElement(target); + static async #editDoc(_event, target) { + const doc = await getDocFromElement(target); if (doc) return doc.sheet.render({ force: true }); } @@ -439,7 +451,7 @@ export default function DHApplicationMixin(Base) { * @type {ApplicationClickAction} */ static async #deleteDoc(event, target) { - const doc = getDocFromElement(target); + const doc = await getDocFromElement(target); if (doc) { if (event.shiftKey) return doc.delete(); else return await doc.deleteDialog(); @@ -451,7 +463,7 @@ export default function DHApplicationMixin(Base) { * @type {ApplicationClickAction} */ static async #toChat(_event, target) { - let doc = getDocFromElement(target); + let doc = await getDocFromElement(target); return doc.toChat(this.document.id); } @@ -460,7 +472,7 @@ export default function DHApplicationMixin(Base) { * @type {ApplicationClickAction} */ static async #useItem(event, target) { - let doc = getDocFromElement(target); + let doc = await getDocFromElement(target); await doc.use(event); } @@ -469,7 +481,7 @@ export default function DHApplicationMixin(Base) { * @type {ApplicationClickAction} */ static async #toggleEffect(_, target) { - const doc = getDocFromElement(target); + const doc = await getDocFromElement(target); await doc.update({ disabled: !doc.disabled }); } @@ -492,7 +504,7 @@ export default function DHApplicationMixin(Base) { const t = extensible?.classList.toggle('extended'); const descriptionElement = extensible?.querySelector('.invetory-description'); - if (t && !!descriptionElement) this.#prepareInventoryDescription(extensible, descriptionElement); + if (t && !!descriptionElement) await this.#prepareInventoryDescription(extensible, descriptionElement); } } diff --git a/module/applications/sheets/api/base-item.mjs b/module/applications/sheets/api/base-item.mjs index 5fe4d681..ed63956b 100644 --- a/module/applications/sheets/api/base-item.mjs +++ b/module/applications/sheets/api/base-item.mjs @@ -117,7 +117,7 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) { name: 'CONTROLS.CommonDelete', icon: '', callback: async target => { - const feature = getDocFromElement(target); + const feature = await getDocFromElement(target); if (!feature) return; const confirmed = await foundry.applications.api.DialogV2.confirm({ window: { @@ -168,7 +168,7 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) { */ static async #deleteFeature(_, element) { const target = element.closest('[data-item-uuid]'); - const feature = getDocFromElement(target); + const feature = await getDocFromElement(target); if (!feature) return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.featureIsMissing')); await this.document.update({ 'system.features': this.document.system.features @@ -249,12 +249,20 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) { const target = event.target.closest('fieldset.drop-section'); const item = await fromUuid(data.uuid); if (item?.type === 'feature') { - await this.document.update({ - 'system.features': [...this.document.system.features, { type: target.dataset.type, item }].map(x => ({ - ...x, - item: x.item?.uuid - })) - }); + if (target.dataset.type) { + await this.document.update({ + 'system.features': [...this.document.system.features, { type: target.dataset.type, item }].map( + x => ({ + ...x, + item: x.item?.uuid + }) + ) + }); + } else { + await this.document.update({ + 'system.features': [...this.document.system.features, item].map(x => x.uuid) + }); + } } } } diff --git a/module/applications/sheets/items/_module.mjs b/module/applications/sheets/items/_module.mjs index 84332f96..26dabcf6 100644 --- a/module/applications/sheets/items/_module.mjs +++ b/module/applications/sheets/items/_module.mjs @@ -6,6 +6,6 @@ export { default as Community } from './community.mjs'; export { default as Consumable } from './consumable.mjs'; export { default as DomainCard } from './domainCard.mjs'; export { default as Feature } from './feature.mjs'; -export { default as Miscellaneous } from './miscellaneous.mjs'; +export { default as Loot } from './loot.mjs'; export { default as Subclass } from './subclass.mjs'; export { default as Weapon } from './weapon.mjs'; diff --git a/module/applications/sheets/items/beastform.mjs b/module/applications/sheets/items/beastform.mjs index 1d6adcd3..1c4a4880 100644 --- a/module/applications/sheets/items/beastform.mjs +++ b/module/applications/sheets/items/beastform.mjs @@ -81,6 +81,7 @@ export default class BeastformSheet extends DHBaseItemSheet { case 'effects': context.effects.actives = context.effects.actives.map(effect => { const data = effect.toObject(); + data.uuid = effect.uuid; data.id = effect.id; if (effect.type === 'beastform') data.mandatory = true; diff --git a/module/applications/sheets/items/class.mjs b/module/applications/sheets/items/class.mjs index 37db5b8d..c78e1de1 100644 --- a/module/applications/sheets/items/class.mjs +++ b/module/applications/sheets/items/class.mjs @@ -132,14 +132,14 @@ export default class ClassSheet extends DHBaseItemSheet { }); } } else if (target.classList.contains('choice-a-section')) { - if (item.type === 'miscellaneous' || item.type === 'consumable') { + if (item.type === 'loot' || item.type === 'consumable') { const filteredChoiceA = this.document.system.inventory.choiceA; if (filteredChoiceA.length < 2) await this.document.update({ 'system.inventory.choiceA': [...filteredChoiceA.map(x => x.uuid), item.uuid] }); } - } else if (item.type === 'miscellaneous') { + } else if (item.type === 'loot') { if (target.classList.contains('take-section')) { const filteredTake = this.document.system.inventory.take.filter(x => x); if (filteredTake.length < 3) diff --git a/module/applications/sheets/items/miscellaneous.mjs b/module/applications/sheets/items/loot.mjs similarity index 84% rename from module/applications/sheets/items/miscellaneous.mjs rename to module/applications/sheets/items/loot.mjs index 0b4b3139..69eaf7cc 100644 --- a/module/applications/sheets/items/miscellaneous.mjs +++ b/module/applications/sheets/items/loot.mjs @@ -1,15 +1,15 @@ import DHBaseItemSheet from '../api/base-item.mjs'; -export default class MiscellaneousSheet extends DHBaseItemSheet { +export default class LootSheet extends DHBaseItemSheet { /**@inheritdoc */ static DEFAULT_OPTIONS = { - classes: ['miscellaneous'], + classes: ['loot'], position: { width: 550 } }; /**@override */ static PARTS = { - header: { template: 'systems/daggerheart/templates/sheets/items/miscellaneous/header.hbs' }, + header: { template: 'systems/daggerheart/templates/sheets/items/loot/header.hbs' }, tabs: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }, description: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-description.hbs' }, actions: { @@ -17,7 +17,7 @@ export default class MiscellaneousSheet extends DHBaseItemSheet { scrollable: ['.actions'] }, settings: { - template: 'systems/daggerheart/templates/sheets/items/miscellaneous/settings.hbs', + template: 'systems/daggerheart/templates/sheets/items/loot/settings.hbs', scrollable: ['.settings'] }, effects: { diff --git a/module/applications/ui/chatLog.mjs b/module/applications/ui/chatLog.mjs index 2547a47c..5e507a3b 100644 --- a/module/applications/ui/chatLog.mjs +++ b/module/applications/ui/chatLog.mjs @@ -1,3 +1,5 @@ +import { emitAsGM, GMUpdateEvent } from "../../systemRegistration/socket.mjs"; + export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLog { constructor(options) { super(options); @@ -17,9 +19,6 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo html.querySelectorAll('.duality-action-damage').forEach(element => element.addEventListener('click', event => this.onRollDamage(event, data.message)) ); - html.querySelectorAll('.duality-action-healing').forEach(element => - element.addEventListener('click', event => this.onRollHealing(event, data.message)) - ); html.querySelectorAll('.target-save-container').forEach(element => element.addEventListener('click', event => this.onRollSave(event, data.message)) ); @@ -66,8 +65,8 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo super.close(options); } - async getActor(id) { - return await fromUuid(id); + async getActor(uuid) { + return await foundry.utils.fromUuid(uuid); } getAction(actor, itemId, actionId) { @@ -92,17 +91,6 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo } } - async onRollHealing(event, message) { - event.stopPropagation(); - const actor = await this.getActor(message.system.source.actor); - if (!actor || !game.user.isGM) return true; - if (message.system.source.item && message.system.source.action) { - const action = this.getAction(actor, message.system.source.item, message.system.source.action); - if (!action || !action?.rollHealing) return; - await action.rollHealing(event, message); - } - } - async onRollSave(event, message) { event.stopPropagation(); const actor = await this.getActor(message.system.source.actor), @@ -112,17 +100,41 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo if (message.system.source.item && message.system.source.action) { const action = this.getAction(actor, message.system.source.item, message.system.source.action); if (!action || !action?.hasSave) return; - action.rollSave(token, event, message); + action.rollSave(token.actor, event, message).then(result => emitAsGM( + GMUpdateEvent.UpdateSaveMessage, + action.updateSaveMessage.bind(action, result, message, token.id), + { + action: action.uuid, + message: message._id, + token: token.id, + result + } + )); } } - onRollAllSave(event, _message) { + async onRollAllSave(event, message) { event.stopPropagation(); + if(!game.user.isGM) return; const targets = event.target.parentElement.querySelectorAll( '.target-section > [data-token] .target-save-container' ); - targets.forEach(el => { - el.dispatchEvent(new PointerEvent('click', { shiftKey: true })); + const actor = await this.getActor(message.system.source.actor), + action = this.getAction(actor, message.system.source.item, message.system.source.action); + targets.forEach(async el => { + const tokenId = el.closest('[data-token]')?.dataset.token, + token = game.canvas.tokens.get(tokenId); + if(!token.actor) return; + if(game.user === token.actor.owner) + el.dispatchEvent(new PointerEvent('click', { shiftKey: true })); + else { + token.actor.owner.query('reactionRoll', { + actionId: action.uuid, + actorId: token.actor.uuid, + event, + message + }).then(result => action.updateSaveMessage(result, message, token.id)); + } }); } @@ -160,7 +172,7 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo return { isHit, targets: isHit - ? message.system.targets.filter(t => t.hit === true).map(target => game.canvas.tokens.get(target.id)) + ? message.system.targets.filter(t => t.hit === true).map(target => game.canvas.tokens.documentCollection.find(t => t.actor.uuid === target.actorId)) : Array.from(game.user.targets) }; } @@ -222,19 +234,10 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo }); } - target.actor.takeDamage(damages); - } - } - - async onHealing(event, message) { - event.stopPropagation(); - const targets = Array.from(game.user.targets); - - if (targets.length === 0) - return ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noTargetsSelected')); - - for (var target of targets) { - target.actor.takeHealing(message.system.roll); + if(message.system.hasHealing) + target.actor.takeHealing(damages); + else + target.actor.takeDamage(damages); } } diff --git a/module/canvas/placeables/token.mjs b/module/canvas/placeables/token.mjs index 967df0f8..4c2ae4ed 100644 --- a/module/canvas/placeables/token.mjs +++ b/module/canvas/placeables/token.mjs @@ -10,8 +10,28 @@ export default class DhTokenPlaceable extends foundry.canvas.placeables.Token { this.effects.overlay = null; // Categorize effects - const activeEffects = this.actor ? Array.from(this.actor.effects).filter(x => !x.disabled) : []; - const overlayEffect = activeEffects.findLast(e => e.img && e.getFlag('core', 'overlay')); + const statusMap = new Map(foundry.CONFIG.statusEffects.map(status => [status.id, status])); + const activeEffects = (this.actor ? this.actor.effects.filter(x => !x.disabled) : []).reduce((acc, effect) => { + acc.push(effect); + + const currentStatusActiveEffects = acc.filter( + x => x.statuses.size === 1 && x.name === game.i18n.localize(statusMap.get(x.statuses.first()).name) + ); + for (var status of effect.statuses) { + if (!currentStatusActiveEffects.find(x => x.statuses.has(status))) { + const statusData = statusMap.get(status); + acc.push({ + name: game.i18n.localize(statusData.name), + statuses: [status], + img: statusData.icon, + tint: effect.tint + }); + } + } + + return acc; + }, []); + const overlayEffect = activeEffects.findLast(e => e.img && e.getFlag?.('core', 'overlay')); // Draw effects const promises = []; diff --git a/module/config/actionConfig.mjs b/module/config/actionConfig.mjs index f6fa41f6..1f1ebf8b 100644 --- a/module/config/actionConfig.mjs +++ b/module/config/actionConfig.mjs @@ -108,7 +108,7 @@ export const diceCompare = { } }; -export const advandtageState = { +export const advantageState = { disadvantage: { label: 'DAGGERHEART.GENERAL.Disadvantage.full', value: -1 diff --git a/module/config/generalConfig.mjs b/module/config/generalConfig.mjs index a03a0e2a..7e44cad7 100644 --- a/module/config/generalConfig.mjs +++ b/module/config/generalConfig.mjs @@ -141,9 +141,11 @@ export const defaultRestOptions = { actions: { tendToWounds: { type: 'healing', + systemPath: 'restMoves.shortRest.moves.tendToWounds.actions', name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.tendToWounds.name'), img: 'icons/magic/life/cross-worn-green.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.hitPoints.id, value: { @@ -165,9 +167,11 @@ export const defaultRestOptions = { actions: { clearStress: { type: 'healing', + systemPath: 'restMoves.shortRest.moves.clearStress.actions', name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.clearStress.name'), img: 'icons/magic/perception/eye-ringed-green.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.stress.id, value: { @@ -189,9 +193,11 @@ export const defaultRestOptions = { actions: { repairArmor: { type: 'healing', + systemPath: 'restMoves.shortRest.moves.repairArmor.actions', name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.repairArmor.name'), img: 'icons/skills/trades/smithing-anvil-silver-red.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.armorStack.id, value: { @@ -223,9 +229,11 @@ export const defaultRestOptions = { actions: { tendToWounds: { type: 'healing', + systemPath: 'restMoves.longRest.moves.tendToWounds.actions', name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.tendToWounds.name'), img: 'icons/magic/life/cross-worn-green.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.hitPoints.id, value: { @@ -247,9 +255,11 @@ export const defaultRestOptions = { actions: { clearStress: { type: 'healing', + systemPath: 'restMoves.longRest.moves.clearStress.actions', name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.clearStress.name'), img: 'icons/magic/perception/eye-ringed-green.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.stress.id, value: { @@ -271,9 +281,11 @@ export const defaultRestOptions = { actions: { repairArmor: { type: 'healing', + systemPath: 'restMoves.longRest.moves.repairArmor.actions', name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.repairArmor.name'), img: 'icons/skills/trades/smithing-anvil-silver-red.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.armorStack.id, value: { @@ -310,18 +322,21 @@ export const deathMoves = { id: 'avoidDeath', name: 'DAGGERHEART.CONFIG.DeathMoves.avoidDeath.name', img: 'icons/magic/time/hourglass-yellow-green.webp', + icon: 'fa-person-running', description: 'DAGGERHEART.CONFIG.DeathMoves.avoidDeath.description' }, riskItAll: { id: 'riskItAll', name: 'DAGGERHEART.CONFIG.DeathMoves.riskItAll.name', img: 'icons/sundries/gaming/dice-pair-white-green.webp', + icon: 'fa-dice', description: 'DAGGERHEART.CONFIG.DeathMoves.riskItAll.description' }, blazeOfGlory: { id: 'blazeOfGlory', name: 'DAGGERHEART.CONFIG.DeathMoves.blazeOfGlory.name', img: 'icons/magic/life/heart-cross-strong-flame-purple-orange.webp', + icon: 'fa-burst', description: 'DAGGERHEART.CONFIG.DeathMoves.blazeOfGlory.description' } }; @@ -369,42 +384,28 @@ export const diceSetNumbers = { flat: 'Flat' }; -export const getDiceSoNicePresets = () => { +export const getDiceSoNicePresets = async (hopeFaces, fearFaces, advantageFaces = 'd6', disadvantageFaces = 'd6') => { const { diceSoNice } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance); + const getPreset = async (type, faces) => { + const system = game.dice3d.DiceFactory.systems.get(type.system).dice.get(faces); + if (!system.modelLoaded) { + await system.loadModel(game.dice3d.DiceFactory.loaderGLTF); + } + + return { + modelFile: system.modelFile, + appearance: { + ...system.appearance, + ...type + } + }; + }; return { - hope: { - ...diceSoNice.hope, - colorset: 'inspired', - texture: 'bloodmoon', - material: 'metal', - font: 'Arial Black', - system: 'standard' - }, - fear: { - ...diceSoNice.fear, - colorset: 'bloodmoon', - texture: 'bloodmoon', - material: 'metal', - font: 'Arial Black', - system: 'standard' - }, - advantage: { - ...diceSoNice.advantage, - colorset: 'bloodmoon', - texture: 'bloodmoon', - material: 'metal', - font: 'Arial Black', - system: 'standard' - }, - disadvantage: { - ...diceSoNice.disadvantage, - colorset: 'bloodmoon', - texture: 'bloodmoon', - material: 'metal', - font: 'Arial Black', - system: 'standard' - } + hope: await getPreset(diceSoNice.hope, hopeFaces), + fear: await getPreset(diceSoNice.fear, fearFaces), + advantage: await getPreset(diceSoNice.advantage, advantageFaces), + disadvantage: await getPreset(diceSoNice.disadvantage, disadvantageFaces) }; }; @@ -441,7 +442,7 @@ export const abilityCosts = { }, armor: { id: 'armor', - label: 'Armor Stack', + label: 'Armor Slot', group: 'TYPES.Actor.character' }, fear: { diff --git a/module/config/itemConfig.mjs b/module/config/itemConfig.mjs index 9deed7f1..851ddc32 100644 --- a/module/config/itemConfig.mjs +++ b/module/config/itemConfig.mjs @@ -1301,9 +1301,9 @@ export const featureTypes = { id: 'consumable', label: 'TYPES.Item.consumable' }, - miscellaneous: { - id: 'miscellaneous', - label: 'TYPES.Item.miscellaneous' + loot: { + id: 'loot', + label: 'TYPES.Item.loot' }, beastform: { if: 'beastform', diff --git a/module/data/action/baseAction.mjs b/module/data/action/baseAction.mjs index 89d0caeb..8f0e0682 100644 --- a/module/data/action/baseAction.mjs +++ b/module/data/action/baseAction.mjs @@ -27,7 +27,7 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel name: new fields.StringField({ initial: undefined }), description: new fields.HTMLField(), img: new fields.FilePathField({ initial: undefined, categories: ['IMAGE'], base64: false }), - chatDisplay: new fields.BooleanField({ initial: true, label: 'Display in chat' }), + chatDisplay: new fields.BooleanField({ initial: true, label: 'DAGGERHEART.ACTIONS.Config.displayInChat' }), actionType: new fields.StringField({ choices: CONFIG.DH.ITEM.actionTypes, initial: 'action', @@ -164,12 +164,13 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel title: this.item.name, source: { item: this.item._id, - action: this._id + action: this._id, + actor: this.actor.uuid }, dialog: {}, type: this.type, - hasDamage: !!this.damage?.parts?.length, - hasHealing: !!this.healing, + hasDamage: this.damage?.parts?.length && this.type !== 'healing', + hasHealing: this.damage?.parts?.length && this.type === 'healing', hasEffect: !!this.effects?.length, hasSave: this.hasSave, selectedRollMode: game.settings.get('core', 'rollMode'), @@ -191,7 +192,7 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel difficulty: this.roll?.difficulty, formula: this.roll.getFormula(), bonus: this.roll.bonus, - advantage: CONFIG.DH.ACTIONS.advandtageState[this.roll.advState].value + advantage: CONFIG.DH.ACTIONS.advantageState[this.roll.advState].value }; if (this.roll?.type === 'diceSet') roll.lite = true; @@ -256,6 +257,7 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel /* EFFECTS */ async applyEffects(event, data, targets) { targets ??= data.system.targets; + const force = true; /* Where should this come from? */ if (!this.effects?.length || !targets.length) return; let effects = this.effects; targets.forEach(async token => { @@ -297,27 +299,39 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel /* EFFECTS */ /* SAVE */ - async rollSave(target, event, message) { - if (!target?.actor) return; - return target.actor + async rollSave(actor, event, message) { + if (!actor) return; + return actor .diceRoll({ event, title: 'Roll Save', roll: { trait: this.save.trait, - difficulty: this.save.difficulty, + difficulty: this.save.difficulty ?? this.actor?.baseSaveDifficulty, type: 'reaction' }, - data: target.actor.getRollData() - }) - .then(async result => { - if (result) - this.updateChatMessage(message, target.id, { - result: result.roll.total, - success: result.roll.success - }); + data: actor.getRollData() }); } + + updateSaveMessage(result, message, targetId) { + const updateMsg = this.updateChatMessage.bind(this, message, targetId, { + result: result.roll.total, + success: result.roll.success + }); + if (game.modules.get('dice-so-nice')?.active) + game.dice3d.waitFor3DAnimationByMessageID(result.message.id ?? result.message._id).then(() => updateMsg()); + else updateMsg(); + } + + static rollSaveQuery({ actionId, actorId, event, message }) { + return new Promise(async (resolve, reject) => { + const actor = await fromUuid(actorId), + action = await fromUuid(actionId); + if (!actor || !actor?.isOwner) reject(); + action.rollSave(actor, event, message).then(result => resolve(result)); + }); + } /* SAVE */ async updateChatMessage(message, targetId, changes, chain = true) { @@ -331,7 +345,7 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel if (chain) { if (message.system.source.message) this.updateChatMessage(ui.chat.collection.get(message.system.source.message), targetId, changes, false); - const relatedChatMessages = ui.chat.collection.filter(c => c.system.source.message === message._id); + const relatedChatMessages = ui.chat.collection.filter(c => c.system.source?.message === message._id); relatedChatMessages.forEach(c => { this.updateChatMessage(c, targetId, changes, false); }); diff --git a/module/data/action/beastformAction.mjs b/module/data/action/beastformAction.mjs index ad09e2fb..ee5f3c6a 100644 --- a/module/data/action/beastformAction.mjs +++ b/module/data/action/beastformAction.mjs @@ -4,15 +4,13 @@ import DHBaseAction from './baseAction.mjs'; export default class DhBeastformAction extends DHBaseAction { static extraSchemas = [...super.extraSchemas, 'beastform']; - async use(event, ...args) { + async use(_event, ...args) { const beastformConfig = this.prepareBeastformConfig(); const abort = await this.handleActiveTransformations(); if (abort) return; - const item = args[0]; - - const { selected, evolved, hybrid } = await BeastformDialog.configure(beastformConfig, item); + const { selected, evolved, hybrid } = await BeastformDialog.configure(beastformConfig, this.item); if (!selected) return; await this.transform(selected, evolved, hybrid); diff --git a/module/data/action/damageAction.mjs b/module/data/action/damageAction.mjs index cb813114..c8da5737 100644 --- a/module/data/action/damageAction.mjs +++ b/module/data/action/damageAction.mjs @@ -47,11 +47,12 @@ export default class DHDamageAction extends DHBaseAction { formulas = this.formatFormulas(formulas, systemData); const config = { - title: game.i18n.format('DAGGERHEART.UI.Chat.damageRoll.title', { damage: game.i18n.localize(this.name) }), + title: game.i18n.format(`DAGGERHEART.UI.Chat.${ this.type === 'healing' ? 'healing' : 'damage'}Roll.title`, { damage: game.i18n.localize(this.name) }), roll: formulas, targets: systemData.targets?.filter(t => t.hit) ?? data.targets, hasSave: this.hasSave, isCritical: systemData.roll?.isCritical ?? false, + isHealing: this.type === 'healing', source: systemData.source, data: this.getRollData(), event diff --git a/module/data/action/healingAction.mjs b/module/data/action/healingAction.mjs index 48aa4146..dad67dec 100644 --- a/module/data/action/healingAction.mjs +++ b/module/data/action/healingAction.mjs @@ -1,7 +1,14 @@ import DHBaseAction from './baseAction.mjs'; +import DHDamageAction from './damageAction.mjs'; -export default class DHHealingAction extends DHBaseAction { - static extraSchemas = [...super.extraSchemas, 'target', 'effects', 'healing', 'roll']; +export default class DHHealingAction extends DHDamageAction { + static extraSchemas = [...super.extraSchemas, 'roll']; + + static getRollType(parent) { + return 'spellcast'; + } + + /* static extraSchemas = [...super.extraSchemas, 'target', 'effects', 'healing', 'roll']; static getRollType(parent) { return 'spellcast'; @@ -44,5 +51,5 @@ export default class DHHealingAction extends DHBaseAction { get modifiers() { return []; - } + } */ } diff --git a/module/data/actor/adversary.mjs b/module/data/actor/adversary.mjs index ac65df41..08455dd3 100644 --- a/module/data/actor/adversary.mjs +++ b/module/data/actor/adversary.mjs @@ -62,6 +62,7 @@ export default class DhpAdversary extends BaseDataActor { img: 'icons/skills/melee/blood-slash-foam-red.webp', _id: foundry.utils.randomID(), systemPath: 'attack', + chatDisplay: false, type: 'attack', range: 'melee', target: { diff --git a/module/data/actor/base.mjs b/module/data/actor/base.mjs index 19de7b06..f0db33e9 100644 --- a/module/data/actor/base.mjs +++ b/module/data/actor/base.mjs @@ -1,10 +1,25 @@ import DHBaseActorSettings from '../../applications/sheets/api/actor-setting.mjs'; -const resistanceField = reductionLabel => +const resistanceField = (resistanceLabel, immunityLabel, reductionLabel) => new foundry.data.fields.SchemaField({ - resistance: new foundry.data.fields.BooleanField({ initial: false }), - immunity: new foundry.data.fields.BooleanField({ initial: false }), - reduction: new foundry.data.fields.NumberField({ integer: true, initial: 0, label: reductionLabel }) + resistance: new foundry.data.fields.BooleanField({ + initial: false, + label: `${resistanceLabel}.label`, + hint: `${resistanceLabel}.hint`, + isAttributeChoice: true + }), + immunity: new foundry.data.fields.BooleanField({ + initial: false, + label: `${immunityLabel}.label`, + hint: `${immunityLabel}.hint`, + isAttributeChoice: true + }), + reduction: new foundry.data.fields.NumberField({ + integer: true, + initial: 0, + label: `${reductionLabel}.label`, + hint: `${reductionLabel}.hint` + }) }); /** @@ -40,8 +55,16 @@ export default class BaseDataActor extends foundry.abstract.TypeDataModel { if (this.metadata.isNPC) schema.description = new fields.HTMLField({ required: true, nullable: true }); if (this.metadata.hasResistances) schema.resistance = new fields.SchemaField({ - physical: resistanceField('DAGGERHEART.GENERAL.DamageResistance.physicalReduction'), - magical: resistanceField('DAGGERHEART.GENERAL.DamageResistance.magicalReduction') + physical: resistanceField( + 'DAGGERHEART.GENERAL.DamageResistance.physicalResistance', + 'DAGGERHEART.GENERAL.DamageResistance.physicalImmunity', + 'DAGGERHEART.GENERAL.DamageResistance.physicalReduction' + ), + magical: resistanceField( + 'DAGGERHEART.GENERAL.DamageResistance.magicalResistance', + 'DAGGERHEART.GENERAL.DamageResistance.magicalImmunity', + 'DAGGERHEART.GENERAL.DamageResistance.magicalReduction' + ) }); return schema; } diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index 3348ca59..ec6e5c7c 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -45,12 +45,12 @@ export default class DhCharacter extends BaseDataActor { severe: new fields.NumberField({ integer: true, initial: 0, - label: 'DAGGERHEART.GENERAL.DamageThresholds.majorThreshold' + label: 'DAGGERHEART.GENERAL.DamageThresholds.severeThreshold' }), major: new fields.NumberField({ integer: true, initial: 0, - label: 'DAGGERHEART.GENERAL.DamageThresholds.severeThreshold' + label: 'DAGGERHEART.GENERAL.DamageThresholds.majorThreshold' }) }), experiences: new fields.TypedObjectField( @@ -94,6 +94,7 @@ export default class DhCharacter extends BaseDataActor { img: 'icons/skills/melee/unarmed-punch-fist-yellow-red.webp', _id: foundry.utils.randomID(), systemPath: 'attack', + chatDisplay: false, type: 'attack', range: 'melee', target: { @@ -111,7 +112,7 @@ export default class DhCharacter extends BaseDataActor { value: { custom: { enabled: true, - formula: '@system.rules.attack.damage.value' + formula: '@profd4' } } } @@ -203,7 +204,7 @@ export default class DhCharacter extends BaseDataActor { }) }) }), - maxLoadout : new fields.NumberField({ + maxLoadout: new fields.NumberField({ integer: true, initial: 0, label: 'DAGGERHEART.GENERAL.Bonuses.maxLoadout.label' @@ -243,10 +244,28 @@ export default class DhCharacter extends BaseDataActor { }), attack: new fields.SchemaField({ damage: new fields.SchemaField({ - value: new fields.StringField({ + diceIndex: new fields.NumberField({ + integer: true, + min: 0, + max: 5, + initial: 0, + label: 'DAGGERHEART.GENERAL.Rules.attack.damage.dice.label', + hint: 'DAGGERHEART.GENERAL.Rules.attack.damage.dice.hint' + }), + bonus: new fields.NumberField({ required: true, - initial: '@profd4', - label: 'DAGGERHEART.GENERAL.Rules.attack.damage.value.label' + initial: 0, + min: 0, + label: 'DAGGERHEART.GENERAL.Rules.attack.damage.bonus.label' + }) + }), + roll: new fields.SchemaField({ + trait: new fields.StringField({ + required: true, + choices: CONFIG.DH.ACTOR.abilities, + nullable: true, + initial: null, + label: 'DAGGERHEART.GENERAL.Rules.attack.roll.trait.label' }) }) }), @@ -328,13 +347,15 @@ export default class DhCharacter extends BaseDataActor { get loadoutSlot() { const loadoutCount = this.domainCards.loadout?.length ?? 0, - max = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxLoadout + this.bonuses.maxLoadout; + max = + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxLoadout + + this.bonuses.maxLoadout; return { current: loadoutCount, available: Math.max(max - loadoutCount, 0), max - } + }; } get armor() { @@ -450,6 +471,12 @@ export default class DhCharacter extends BaseDataActor { }; } + get basicAttackDamageDice() { + const diceTypes = Object.keys(CONFIG.DH.GENERAL.diceTypes); + const attackDiceIndex = Math.max(Math.min(this.rules.attack.damage.diceIndex, 5), 0); + return diceTypes[attackDiceIndex]; + } + static async unequipBeforeEquip(itemToEquip) { const primary = this.primaryWeapon, secondary = this.secondaryWeapon; @@ -505,7 +532,7 @@ export default class DhCharacter extends BaseDataActor { this.evasion += selection.value; break; case 'proficiency': - this.proficiency = selection.value; + this.proficiency += selection.value; break; case 'experience': Object.keys(this.experiences).forEach(key => { @@ -534,12 +561,17 @@ export default class DhCharacter extends BaseDataActor { prepareDerivedData() { const baseHope = this.resources.hope.value + (this.companion?.system?.resources?.hope ?? 0); this.resources.hope.value = Math.min(baseHope, this.resources.hope.max); + this.attack.roll.trait = this.rules.attack.roll.trait ?? this.attack.roll.trait; + + this.attack.damage.parts[0].value.custom.formula = `@prof${this.basicAttackDamageDice}${this.rules.attack.damage.bonus ? ` + ${this.rules.attack.damage.bonus}` : ''}`; } getRollData() { const data = super.getRollData(); + return { ...data, + basicAttackDamageDice: this.basicAttackDamageDice, tier: this.tier, level: this.levelData.level.current }; diff --git a/module/data/actor/companion.mjs b/module/data/actor/companion.mjs index 8e7a6a88..af17b790 100644 --- a/module/data/actor/companion.mjs +++ b/module/data/actor/companion.mjs @@ -53,6 +53,7 @@ export default class DhCompanion extends BaseDataActor { img: 'icons/creatures/claws/claw-bear-paw-swipe-brown.webp', _id: foundry.utils.randomID(), systemPath: 'attack', + chatDisplay: false, type: 'attack', range: 'melee', target: { diff --git a/module/data/chat-message/damageRoll.mjs b/module/data/chat-message/damageRoll.mjs index 210cc0fe..167e97d9 100644 --- a/module/data/chat-message/damageRoll.mjs +++ b/module/data/chat-message/damageRoll.mjs @@ -21,6 +21,7 @@ export default class DHDamageRoll extends foundry.abstract.TypeDataModel { ), targetSelection: new fields.BooleanField({ initial: true }), hasSave: new fields.BooleanField({ initial: false }), + isHealing: new fields.BooleanField({ initial: false }), onSave: new fields.StringField(), source: new fields.SchemaField({ actor: new fields.StringField(), diff --git a/module/data/fields/action/healingField.mjs b/module/data/fields/action/healingField.mjs index 3734e596..98f4f5ea 100644 --- a/module/data/fields/action/healingField.mjs +++ b/module/data/fields/action/healingField.mjs @@ -2,8 +2,11 @@ import { DHDamageData } from './damageField.mjs'; const fields = foundry.data.fields; -export default class HealingField extends fields.EmbeddedDataField { +export default class HealingField extends fields.SchemaField { constructor(options, context = {}) { - super(DHDamageData, options, context); + const healingFields = { + parts: new fields.ArrayField(new fields.EmbeddedDataField(DHDamageData)) + }; + super(healingFields, options, context); } } diff --git a/module/data/fields/action/rollField.mjs b/module/data/fields/action/rollField.mjs index 0686f71f..511e0660 100644 --- a/module/data/fields/action/rollField.mjs +++ b/module/data/fields/action/rollField.mjs @@ -8,25 +8,38 @@ export class DHActionRollData extends foundry.abstract.DataModel { trait: new fields.StringField({ nullable: true, initial: null, choices: CONFIG.DH.ACTOR.abilities }), difficulty: new fields.NumberField({ nullable: true, initial: null, integer: true, min: 0 }), bonus: new fields.NumberField({ nullable: true, initial: null, integer: true }), - advState: new fields.StringField({ choices: CONFIG.DH.ACTIONS.advandtageState, initial: 'neutral' }), + advState: new fields.StringField({ + choices: CONFIG.DH.ACTIONS.advantageState, + initial: 'neutral' + }), diceRolling: new fields.SchemaField({ multiplier: new fields.StringField({ choices: CONFIG.DH.GENERAL.diceSetNumbers, initial: 'prof', - label: 'Dice Number' + label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.multiplier' + }), + flatMultiplier: new fields.NumberField({ + nullable: true, + initial: 1, + label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.flatMultiplier' }), - flatMultiplier: new fields.NumberField({ nullable: true, initial: 1, label: 'Flat Multiplier' }), dice: new fields.StringField({ choices: CONFIG.DH.GENERAL.diceTypes, - initial: 'd6', - label: 'Dice Type' + initial: CONFIG.DH.GENERAL.diceTypes.d6, + label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.dice' }), compare: new fields.StringField({ choices: CONFIG.DH.ACTIONS.diceCompare, - initial: 'above', - label: 'Should be' + nullable: true, + initial: null, + label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.compare' }), - treshold: new fields.NumberField({ initial: 1, integer: true, min: 1, label: 'Treshold' }) + treshold: new fields.NumberField({ + integer: true, + nullable: true, + initial: null, + label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.threshold' + }) }), useDefault: new fields.BooleanField({ initial: false }) }; @@ -41,7 +54,11 @@ export class DHActionRollData extends foundry.abstract.DataModel { this.diceRolling.multiplier === 'flat' ? this.diceRolling.flatMultiplier : `@${this.diceRolling.multiplier}`; - formula = `${multiplier}${this.diceRolling.dice}cs${CONFIG.DH.ACTIONS.diceCompare[this.diceRolling.compare].operator}${this.diceRolling.treshold}`; + if (this.diceRolling.compare && this.diceRolling.threshold) { + formula = `${multiplier}${this.diceRolling.dice}cs${CONFIG.DH.ACTIONS.diceCompare[this.diceRolling.compare].operator}${this.diceRolling.treshold}`; + } else { + formula = `${multiplier}${this.diceRolling.dice}`; + } break; default: formula = ''; diff --git a/module/data/fields/action/saveField.mjs b/module/data/fields/action/saveField.mjs index c2d84157..e93a82a9 100644 --- a/module/data/fields/action/saveField.mjs +++ b/module/data/fields/action/saveField.mjs @@ -8,7 +8,7 @@ export default class SaveField extends fields.SchemaField { initial: null, choices: CONFIG.DH.ACTOR.abilities }), - difficulty: new fields.NumberField({ nullable: true, initial: 10, integer: true, min: 0 }), + difficulty: new fields.NumberField({ nullable: true, initial: null, integer: true, min: 0 }), damageMod: new fields.StringField({ initial: CONFIG.DH.ACTIONS.damageOnSave.none.id, choices: CONFIG.DH.ACTIONS.damageOnSave diff --git a/module/data/fields/action/targetField.mjs b/module/data/fields/action/targetField.mjs index 61f79196..1024d5d7 100644 --- a/module/data/fields/action/targetField.mjs +++ b/module/data/fields/action/targetField.mjs @@ -6,8 +6,7 @@ export default class TargetField extends fields.SchemaField { type: new fields.StringField({ choices: CONFIG.DH.ACTIONS.targetTypes, initial: CONFIG.DH.ACTIONS.targetTypes.any.id, - nullable: true, - initial: null + nullable: true }), amount: new fields.NumberField({ nullable: true, initial: null, integer: true, min: 0 }) }; @@ -18,11 +17,13 @@ export default class TargetField extends fields.SchemaField { if (!this.target?.type) return []; let targets; if (this.target?.type === CONFIG.DH.ACTIONS.targetTypes.self.id) - targets = TargetField.formatTarget.call(this, this.actor.token ?? this.actor.prototypeToken); - targets = Array.from(game.user.targets); - if (this.target.type !== CONFIG.DH.ACTIONS.targetTypes.any.id) { - targets = targets.filter(t => TargetField.isTargetFriendly.call(this, t)); - if (this.target.amount && targets.length > this.target.amount) targets = []; + targets = [this.actor.token ?? this.actor.prototypeToken]; + else { + targets = Array.from(game.user.targets); + if (this.target.type !== CONFIG.DH.ACTIONS.targetTypes.any.id) { + targets = targets.filter(t => TargetField.isTargetFriendly.call(this, t)); + if (this.target.amount && targets.length > this.target.amount) targets = []; + } } config.targets = targets.map(t => TargetField.formatTarget.call(this, t)); const hasTargets = TargetField.checkTargets.call(this, this.target.amount, config.targets); diff --git a/module/data/fields/actionField.mjs b/module/data/fields/actionField.mjs index 2a515a9e..3135988b 100644 --- a/module/data/fields/actionField.mjs +++ b/module/data/fields/actionField.mjs @@ -175,7 +175,10 @@ export function ActionMixin(Base) { classes: ['daggerheart', 'dh-style'], content: await foundry.applications.handlebars.renderTemplate( 'systems/daggerheart/templates/actionTypes/actionType.hbs', - { types: CONFIG.DH.ACTIONS.actionTypes } + { + types: CONFIG.DH.ACTIONS.actionTypes, + itemName: parent.parent?.name + } ), ok: { label: game.i18n.format('DOCUMENT.Create', { @@ -197,7 +200,7 @@ export function ActionMixin(Base) { } ); const created = await parent.parent.update({ [`system.actions.${action.id}`]: action.toObject() }); - const newAction = parent.actions.get(action.id); + const newAction = created.system.actions.get(action.id); if (!newAction) return null; if (renderSheet) newAction.sheet.render({ force: true }); return newAction; diff --git a/module/data/fields/formulaField.mjs b/module/data/fields/formulaField.mjs index 68c26efc..85922f1f 100644 --- a/module/data/fields/formulaField.mjs +++ b/module/data/fields/formulaField.mjs @@ -35,7 +35,13 @@ export default class FormulaField extends foundry.data.fields.StringField { /** @inheritDoc */ _validateType(value) { - const roll = new Roll(value.replace(/@([a-z.0-9_-]+)/gi, '1')); + /* A bit suss, but seems to work */ + let roll = null; + try { + roll = new Roll(value.replace(/@([a-z.0-9_-]+)/gi, '1')); + } catch (_) { + roll = new Roll(value.replace(/@([a-z.0-9_-]+)/gi, 'd6')); + } roll.evaluateSync({ strict: false }); if (this.options.deterministic && !roll.isDeterministic) throw new Error(`must not contain dice terms: ${value}`); diff --git a/module/data/item/_module.mjs b/module/data/item/_module.mjs index bed18eb5..382c9932 100644 --- a/module/data/item/_module.mjs +++ b/module/data/item/_module.mjs @@ -6,7 +6,7 @@ import DHCommunity from './community.mjs'; import DHConsumable from './consumable.mjs'; import DHDomainCard from './domainCard.mjs'; import DHFeature from './feature.mjs'; -import DHMiscellaneous from './miscellaneous.mjs'; +import DHLoot from './loot.mjs'; import DHSubclass from './subclass.mjs'; import DHWeapon from './weapon.mjs'; import DHBeastform from './beastform.mjs'; @@ -20,7 +20,7 @@ export { DHConsumable, DHDomainCard, DHFeature, - DHMiscellaneous, + DHLoot, DHSubclass, DHWeapon, DHBeastform @@ -35,7 +35,7 @@ export const config = { consumable: DHConsumable, domainCard: DHDomainCard, feature: DHFeature, - miscellaneous: DHMiscellaneous, + loot: DHLoot, subclass: DHSubclass, weapon: DHWeapon, beastform: DHBeastform diff --git a/module/data/item/armor.mjs b/module/data/item/armor.mjs index 2639ae1e..64a6e9c0 100644 --- a/module/data/item/armor.mjs +++ b/module/data/item/armor.mjs @@ -1,5 +1,4 @@ import AttachableItem from './attachableItem.mjs'; -import { ActionsField } from '../fields/actionField.mjs'; import { armorFeatures } from '../../config/itemConfig.mjs'; export default class DHArmor extends AttachableItem { diff --git a/module/data/item/beastform.mjs b/module/data/item/beastform.mjs index 0dca8883..d17fbf82 100644 --- a/module/data/item/beastform.mjs +++ b/module/data/item/beastform.mjs @@ -94,10 +94,13 @@ export default class DHBeastform extends BaseDataItem { return false; } - const features = await this.parent.parent.createEmbeddedDocuments( - 'Item', - this.features.map(x => x.toObject()) - ); + const beastformFeatures = []; + for (let featureData of this.features) { + const feature = await foundry.utils.fromUuid(featureData.uuid); + beastformFeatures.push(feature.toObject()); + } + + const features = await this.parent.parent.createEmbeddedDocuments('Item', beastformFeatures); const extraEffects = await this.parent.parent.createEmbeddedDocuments( 'ActiveEffect', @@ -152,12 +155,14 @@ export default class DHBeastform extends BaseDataItem { _onCreate(_data, _options, userId) { if (userId !== game.user.id) return; - this.parent.createEmbeddedDocuments('ActiveEffect', [ - { - type: 'beastform', - name: game.i18n.localize('DAGGERHEART.ITEMS.Beastform.beastformEffect'), - img: 'icons/creatures/abilities/paw-print-pair-purple.webp' - } - ]); + if (!this.parent.effects.find(x => x.type === 'beastform')) { + this.parent.createEmbeddedDocuments('ActiveEffect', [ + { + type: 'beastform', + name: game.i18n.localize('DAGGERHEART.ITEMS.Beastform.beastformEffect'), + img: 'icons/creatures/abilities/paw-print-pair-purple.webp' + } + ]); + } } } diff --git a/module/data/item/miscellaneous.mjs b/module/data/item/loot.mjs similarity index 68% rename from module/data/item/miscellaneous.mjs rename to module/data/item/loot.mjs index c40ac60b..2a23d338 100644 --- a/module/data/item/miscellaneous.mjs +++ b/module/data/item/loot.mjs @@ -1,12 +1,11 @@ import BaseDataItem from './base.mjs'; -import { ActionField } from '../fields/actionField.mjs'; -export default class DHMiscellaneous extends BaseDataItem { +export default class DHLoot extends BaseDataItem { /** @inheritDoc */ static get metadata() { return foundry.utils.mergeObject(super.metadata, { - label: 'TYPES.Item.miscellaneous', - type: 'miscellaneous', + label: 'TYPES.Item.loot', + type: 'loot', hasDescription: true, isQuantifiable: true, isInventoryItem: true, diff --git a/module/data/item/weapon.mjs b/module/data/item/weapon.mjs index 71d1e08d..96c0eeba 100644 --- a/module/data/item/weapon.mjs +++ b/module/data/item/weapon.mjs @@ -63,6 +63,19 @@ export default class DHWeapon extends AttachableItem { ] } } + }), + rules: new fields.SchemaField({ + attack: new fields.SchemaField({ + roll: new fields.SchemaField({ + trait: new fields.StringField({ + required: true, + choices: CONFIG.DH.ACTOR.abilities, + nullable: true, + initial: null, + label: 'DAGGERHEART.GENERAL.Rules.attack.roll.trait.label' + }) + }) + }) }) }; } @@ -77,6 +90,10 @@ export default class DHWeapon extends AttachableItem { ); } + prepareDerivedData() { + this.attack.roll.trait = this.rules.attack.roll.trait ?? this.attack.roll.trait; + } + async _preUpdate(changes, options, user) { const allowed = await super._preUpdate(changes, options, user); if (allowed === false) return false; diff --git a/module/data/settings/Appearance.mjs b/module/data/settings/Appearance.mjs index ccdf3c0b..c59cd436 100644 --- a/module/data/settings/Appearance.mjs +++ b/module/data/settings/Appearance.mjs @@ -21,25 +21,41 @@ export default class DhAppearance extends foundry.abstract.DataModel { foreground: new fields.ColorField({ required: true, initial: '#ffffff' }), background: new fields.ColorField({ required: true, initial: '#ffe760' }), outline: new fields.ColorField({ required: true, initial: '#000000' }), - edge: new fields.ColorField({ required: true, initial: '#ffffff' }) + edge: new fields.ColorField({ required: true, initial: '#ffffff' }), + texture: new fields.StringField({ initial: 'astralsea' }), + colorset: new fields.StringField({ initial: 'inspired' }), + material: new fields.StringField({ initial: 'metal' }), + system: new fields.StringField({ initial: 'standard' }) }), fear: new fields.SchemaField({ foreground: new fields.ColorField({ required: true, initial: '#000000' }), background: new fields.ColorField({ required: true, initial: '#0032b1' }), outline: new fields.ColorField({ required: true, initial: '#ffffff' }), - edge: new fields.ColorField({ required: true, initial: '#000000' }) + edge: new fields.ColorField({ required: true, initial: '#000000' }), + texture: new fields.StringField({ initial: 'astralsea' }), + colorset: new fields.StringField({ initial: 'inspired' }), + material: new fields.StringField({ initial: 'metal' }), + system: new fields.StringField({ initial: 'standard' }) }), advantage: new fields.SchemaField({ foreground: new fields.ColorField({ required: true, initial: '#ffffff' }), background: new fields.ColorField({ required: true, initial: '#008000' }), outline: new fields.ColorField({ required: true, initial: '#000000' }), - edge: new fields.ColorField({ required: true, initial: '#ffffff' }) + edge: new fields.ColorField({ required: true, initial: '#ffffff' }), + texture: new fields.StringField({ initial: 'astralsea' }), + colorset: new fields.StringField({ initial: 'inspired' }), + material: new fields.StringField({ initial: 'metal' }), + system: new fields.StringField({ initial: 'standard' }) }), disadvantage: new fields.SchemaField({ foreground: new fields.ColorField({ required: true, initial: '#000000' }), background: new fields.ColorField({ required: true, initial: '#b30000' }), outline: new fields.ColorField({ required: true, initial: '#ffffff' }), - edge: new fields.ColorField({ required: true, initial: '#000000' }) + edge: new fields.ColorField({ required: true, initial: '#000000' }), + texture: new fields.StringField({ initial: 'astralsea' }), + colorset: new fields.StringField({ initial: 'inspired' }), + material: new fields.StringField({ initial: 'metal' }), + system: new fields.StringField({ initial: 'standard' }) }) }), showGenericStatusEffects: new fields.BooleanField({ diff --git a/module/dice/d20Roll.mjs b/module/dice/d20Roll.mjs index dcf0143a..ce400110 100644 --- a/module/dice/d20Roll.mjs +++ b/module/dice/d20Roll.mjs @@ -1,5 +1,4 @@ import D20RollDialog from '../applications/dialogs/d20RollDialog.mjs'; -import { getDiceSoNicePresets } from '../config/generalConfig.mjs'; import DHRoll from './dhRoll.mjs'; export default class D20Roll extends DHRoll { diff --git a/module/dice/damageRoll.mjs b/module/dice/damageRoll.mjs index 49aa3551..d74ae410 100644 --- a/module/dice/damageRoll.mjs +++ b/module/dice/damageRoll.mjs @@ -12,11 +12,16 @@ export default class DamageRoll extends DHRoll { static async buildEvaluate(roll, config = {}, message = {}) { if (config.evaluate !== false) { - if (config.dialog.configure === false) roll.constructFormula(config); + // if (config.dialog.configure === false) roll.constructFormula(config); for (const roll of config.roll) await roll.roll.evaluate(); } roll._evaluated = true; - const parts = config.roll.map(r => this.postEvaluate(r)); + const parts = []; + for (let r of config.roll) { + const part = this.postEvaluate(r); + parts.push(part); + } + config.roll = this.unifyDamageRoll(parts); } @@ -78,18 +83,20 @@ export default class DamageRoll extends DHRoll { applyBaseBonus(part) { const modifiers = [], - type = this.options.messageType ?? 'damage', + type = this.options.messageType ?? (this.options.isHealing ? 'healing' : 'damage'), options = part ?? this.options; - + modifiers.push(...this.getBonus(`${type}`, `${type.capitalize()} Bonus`)); - options.damageTypes?.forEach(t => { - modifiers.push(...this.getBonus(`${type}.${t}`, `${t.capitalize()} ${type.capitalize()} Bonus`)); - }); - const weapons = ['primaryWeapon', 'secondaryWeapon']; - weapons.forEach(w => { - if (this.options.source.item && this.options.source.item === this.data[w]?.id) - modifiers.push(...this.getBonus(`${type}.${w}`, 'Weapon Bonus')); - }); + if(!this.options.isHealing) { + options.damageTypes?.forEach(t => { + modifiers.push(...this.getBonus(`${type}.${t}`, `${t.capitalize()} ${type.capitalize()} Bonus`)); + }); + const weapons = ['primaryWeapon', 'secondaryWeapon']; + weapons.forEach(w => { + if (this.options.source.item && this.options.source.item === this.data[w]?.id) + modifiers.push(...this.getBonus(`${type}.${w}`, 'Weapon Bonus')); + }); + } return modifiers; } diff --git a/module/dice/dhRoll.mjs b/module/dice/dhRoll.mjs index 4bc1a5bd..aa1ebb68 100644 --- a/module/dice/dhRoll.mjs +++ b/module/dice/dhRoll.mjs @@ -193,11 +193,12 @@ export const registerRollDiceHooks = () => { if (config.roll.isCritical) updates.push({ key: 'stress', value: -1 }); if (config.roll.result.duality === -1) updates.push({ key: 'fear', value: 1 }); - if (config.rerolledRoll.isCritical || config.rerolledRoll.result.duality === 1) - updates.push({ key: 'hope', value: -1 }); - if (config.rerolledRoll.isCritical) updates.push({ key: 'stress', value: 1 }); - if (config.rerolledRoll.result.duality === -1) updates.push({ key: 'fear', value: -1 }); - + if (config.rerolledRoll) { + if (config.rerolledRoll.isCritical || config.rerolledRoll.result.duality === 1) updates.push({ key: 'hope', value: -1 }); + if (config.rerolledRoll.isCritical) updates.push({ key: 'stress', value: 1 }); + if (config.rerolledRoll.result.duality === -1) updates.push({ key: 'fear', value: -1 }); + } + if (updates.length) { const target = actor.system.partner ?? actor; if (!['dead', 'unconcious'].some(x => actor.statuses.has(x))) { diff --git a/module/dice/dualityRoll.mjs b/module/dice/dualityRoll.mjs index 1c414a63..8ad61996 100644 --- a/module/dice/dualityRoll.mjs +++ b/module/dice/dualityRoll.mjs @@ -166,6 +166,18 @@ export default class DualityRoll extends D20Roll { return modifiers; } + static async buildEvaluate(roll, config = {}, message = {}) { + await super.buildEvaluate(roll, config, message); + + await setDiceSoNiceForDualityRoll( + roll, + config.roll.advantage.type, + config.roll.hope.dice, + config.roll.fear.dice, + config.roll.advantage.dice + ); + } + static postEvaluate(roll, config = {}) { const data = super.postEvaluate(roll, config); @@ -198,8 +210,6 @@ export default class DualityRoll extends D20Roll { if (roll._rallyIndex && roll.data?.parent) roll.data.parent.deleteEmbeddedDocuments('ActiveEffect', [roll._rallyIndex]); - setDiceSoNiceForDualityRoll(roll, data.advantage.type); - return data; } @@ -220,10 +230,10 @@ export default class DualityRoll extends D20Roll { options: { appearance: {} } }; - const diceSoNicePresets = getDiceSoNicePresets(); + const diceSoNicePresets = await getDiceSoNicePresets(`d${term._faces}`, `d${term._faces}`); const type = target.dataset.type; if (diceSoNicePresets[type]) { - diceSoNiceRoll.dice[0].options = { appearance: diceSoNicePresets[type] }; + diceSoNiceRoll.dice[0].options = diceSoNicePresets[type]; } await game.dice3d.showForRoll(diceSoNiceRoll, game.user, true); diff --git a/module/documents/activeEffect.mjs b/module/documents/activeEffect.mjs index 6c4545b1..5d45e2e1 100644 --- a/module/documents/activeEffect.mjs +++ b/module/documents/activeEffect.mjs @@ -41,6 +41,14 @@ export default class DhActiveEffect extends ActiveEffect { }); } + get localizedStatuses() { + const statusMap = new Map(foundry.CONFIG.statusEffects.map(status => [status.id, status.name])); + return this.statuses.map(x => ({ + key: x, + name: game.i18n.localize(statusMap.get(x)) + })); + } + async _preCreate(data, options, user) { const update = {}; if (!data.img) { @@ -55,7 +63,8 @@ export default class DhActiveEffect extends ActiveEffect { } static applyField(model, change, field) { - change.value = this.effectSafeEval(itemAbleRollParse(change.value, model, change.effect.parent)); + const evalValue = this.effectSafeEval(itemAbleRollParse(change.value, model, change.effect.parent)); + change.value = evalValue ?? change.value; super.applyField(model, change, field); } diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 67a5e0b3..ec464ddb 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -1,5 +1,4 @@ import { emitAsGM, GMUpdateEvent } from '../systemRegistration/socket.mjs'; -import DamageReductionDialog from '../applications/dialogs/damageReductionDialog.mjs'; import { LevelOptionType } from '../data/levelTier.mjs'; import DHFeature from '../data/item/feature.mjs'; import { damageKeyToNumber } from '../helpers/utils.mjs'; @@ -385,6 +384,45 @@ export default class DhpActor extends Actor { return CONFIG.Dice.daggerheart[['character', 'companion'].includes(this.type) ? 'DualityRoll' : 'D20Roll']; } + get baseSaveDifficulty() { + return this.system.difficulty ?? 10; + } + + /** @inheritDoc */ + async toggleStatusEffect(statusId, { active, overlay = false } = {}) { + const status = CONFIG.statusEffects.find(e => e.id === statusId); + if (!status) throw new Error(`Invalid status ID "${statusId}" provided to Actor#toggleStatusEffect`); + const existing = []; + + // Find the effect with the static _id of the status effect + if (status._id) { + const effect = this.effects.get(status._id); + if (effect) existing.push(effect.id); + } + + // If no static _id, find all effects that have this status + else { + for (const effect of this.effects) { + if (effect.statuses.has(status.id)) existing.push(effect.id); + } + } + + // Remove the existing effects unless the status effect is forced active + if (existing.length) { + if (active) return true; + await this.deleteEmbeddedDocuments('ActiveEffect', existing); + return false; + } + + // Create a new effect unless the status effect is forced inactive + if (!active && active !== undefined) return; + + const ActiveEffect = getDocumentClass('ActiveEffect'); + const effect = await ActiveEffect.fromStatusEffect(statusId); + if (overlay) effect.updateSource({ 'flags.core.overlay': true }); + return ActiveEffect.implementation.create(effect, { parent: this, keepId: true }); + } + getRollData() { const rollData = super.getRollData(); rollData.system = this.system.getRollData(); @@ -444,10 +482,14 @@ export default class DhpActor extends Actor { this.#canReduceDamage(hpDamage.value, hpDamage.damageTypes) ) { const armorStackResult = await this.owner.query('armorStack', { - actorId: this.uuid, - damage: hpDamage.value, - type: [...hpDamage.damageTypes] - }); + actorId: this.uuid, + damage: hpDamage.value, + type: [...hpDamage.damageTypes] + }, + { + timeout: 30000 + } + ); if (armorStackResult) { const { modifiedDamage, armorSpent, stressSpent } = armorStackResult; updates.find(u => u.key === 'hitPoints').value = modifiedDamage; @@ -467,7 +509,7 @@ export default class DhpActor extends Actor { await this.modifyResource(updates); - if (Hooks.call(`${CONFIG.DH.id}.postTakeDamage`, this, damages) === false) return null; + if (Hooks.call(`${CONFIG.DH.id}.postTakeDamage`, this, updates) === false) return null; } calculateDamage(baseDamage, type) { @@ -494,14 +536,28 @@ export default class DhpActor extends Actor { return reduction === Infinity ? 0 : reduction; } - async takeHealing(resources) { - const updates = Object.entries(resources).map(([key, value]) => ({ - key: key, - value: !(key === 'fear' || this.system?.resources?.[key]?.isReversed === false) - ? value.total * -1 - : value.total - })); + async takeHealing(healings) { + if (Hooks.call(`${CONFIG.DH.id}.preTakeHealing`, this, healings) === false) return null; + + const updates = []; + Object.entries(healings).forEach(([key, healing]) => { + healing.parts.forEach(part => { + const update = updates.find(u => u.key === key); + if (update) update.value += part.total; + else updates.push({ value: part.total, key }); + }); + }); + + updates.forEach( + u => + (u.value = !(u.key === 'fear' || this.system?.resources?.[u.key]?.isReversed === false) + ? u.value * -1 + : u.value) + ); + await this.modifyResource(updates); + + if (Hooks.call(`${CONFIG.DH.id}.postTakeHealing`, this, updates) === false) return null; } async modifyResource(resources) { @@ -543,6 +599,7 @@ export default class DhpActor extends Actor { } } }); + Object.keys(updates).forEach(async key => { const u = updates[key]; if (key === 'items') { @@ -584,7 +641,3 @@ export default class DhpActor extends Actor { }); } } - -export const registerDHActorHooks = () => { - CONFIG.queries.armorStack = DamageReductionDialog.armorStackQuery; -}; diff --git a/module/documents/token.mjs b/module/documents/token.mjs index a8105eb2..b6c47450 100644 --- a/module/documents/token.mjs +++ b/module/documents/token.mjs @@ -52,6 +52,7 @@ export default class DHToken extends TokenDocument { for (const [name, field] of Object.entries(schema.fields)) { const p = _path.concat([name]); if (field instanceof foundry.data.fields.NumberField) attributes.value.push(p); + if (field instanceof foundry.data.fields.BooleanField && field.options.isAttributeChoice) attributes.value.push(p); if (field instanceof foundry.data.fields.StringField) attributes.value.push(p); if (field instanceof foundry.data.fields.ArrayField) attributes.value.push(p); const isSchema = field instanceof foundry.data.fields.SchemaField; diff --git a/module/documents/tooltipManager.mjs b/module/documents/tooltipManager.mjs index f685c8a6..974f5596 100644 --- a/module/documents/tooltipManager.mjs +++ b/module/documents/tooltipManager.mjs @@ -87,6 +87,26 @@ export default class DhTooltipManager extends foundry.helpers.interaction.Toolti this.tooltip.innerHTML = html; } } + + const deathMove = element.dataset.tooltip?.startsWith('#deathMove#'); + if (deathMove) { + const name = element.dataset.deathName; + const img = element.dataset.deathImg; + const description = element.dataset.deathDescription; + + html = await foundry.applications.handlebars.renderTemplate( + `systems/daggerheart/templates/ui/tooltip/death-move.hbs`, + { + move: { name: name, img: img, description: description } + } + ); + + this.tooltip.innerHTML = html; + options.direction = this._determineItemTooltipDirection( + element, + this.constructor.TOOLTIP_DIRECTIONS.RIGHT + ); + } } super.activate(element, { ...options, html: html }); diff --git a/module/enrichers/DualityRollEnricher.mjs b/module/enrichers/DualityRollEnricher.mjs index 70f376e7..24dd0602 100644 --- a/module/enrichers/DualityRollEnricher.mjs +++ b/module/enrichers/DualityRollEnricher.mjs @@ -22,14 +22,14 @@ function getDualityMessage(roll) { : game.i18n.localize('DAGGERHEART.GENERAL.duality'); const advantage = roll.advantage - ? CONFIG.DH.ACTIONS.advandtageState.advantage.value + ? CONFIG.DH.ACTIONS.advantageState.advantage.value : roll.disadvantage - ? CONFIG.DH.ACTIONS.advandtageState.disadvantage.value + ? CONFIG.DH.ACTIONS.advantageState.disadvantage.value : undefined; const advantageLabel = - advantage === CONFIG.DH.ACTIONS.advandtageState.advantage.value + advantage === CONFIG.DH.ACTIONS.advantageState.advantage.value ? 'Advantage' - : advantage === CONFIG.DH.ACTIONS.advandtageState.disadvantage.value + : advantage === CONFIG.DH.ACTIONS.advantageState.disadvantage.value ? 'Disadvantage' : undefined; @@ -58,7 +58,7 @@ function getDualityMessage(roll) { export const renderDualityButton = async event => { const button = event.currentTarget, traitValue = button.dataset.trait?.toLowerCase(), - target = getCommandTarget(), + target = getCommandTarget({ allowNull: true }), difficulty = button.dataset.difficulty, advantage = button.dataset.advantage ? Number(button.dataset.advantage) : undefined; @@ -80,13 +80,11 @@ export const enrichedDualityRoll = async ( { traitValue, target, difficulty, title, label, actionType, advantage }, event ) => { - if (!target) return; - const config = { event: event ?? {}, title: title, roll: { - modifier: traitValue ? target.system.traits[traitValue].value : null, + trait: traitValue && target ? traitValue : null, label: label, difficulty: difficulty, advantage, @@ -96,5 +94,13 @@ export const enrichedDualityRoll = async ( template: 'systems/daggerheart/templates/ui/chat/duality-roll.hbs' } }; - await target.diceRoll(config); + + if (target) { + await target.diceRoll(config); + } else { + // For no target, call DualityRoll directly with basic data + config.data = { experiences: {}, traits: {} }; + config.source = { actor: null }; + await CONFIG.Dice.daggerheart.DualityRoll.build(config); + } }; diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index f9349da9..ac9ac9e7 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -31,35 +31,38 @@ export function rollCommandToJSON(text) { return Object.keys(result).length > 0 ? result : null; } -export const getCommandTarget = () => { +export const getCommandTarget = (options = {}) => { + const { allowNull = false } = options; let target = game.canvas.tokens.controlled.length > 0 ? game.canvas.tokens.controlled[0].actor : null; if (!game.user.isGM) { target = game.user.character; - if (!target) { + if (!target && !allowNull) { ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.noAssignedPlayerCharacter')); return null; } } - if (!target) { + if (!target && !allowNull) { ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.noSelectedToken')); return null; } - if (target.type !== 'character') { - ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.onlyUseableByPC')); + if (target && target.type !== 'character') { + if (!allowNull) { + ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.onlyUseableByPC')); + } return null; } return target; }; -export const setDiceSoNiceForDualityRoll = (rollResult, advantageState) => { - const diceSoNicePresets = getDiceSoNicePresets(); - rollResult.dice[0].options = { appearance: diceSoNicePresets.hope }; - rollResult.dice[1].options = { appearance: diceSoNicePresets.fear }; //diceSoNicePresets.fear; +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); + rollResult.dice[0].options = diceSoNicePresets.hope; + rollResult.dice[1].options = diceSoNicePresets.fear; if (rollResult.dice[2] && advantageState) { - rollResult.dice[2].options = { - appearance: advantageState === 1 ? diceSoNicePresets.advantage : diceSoNicePresets.disadvantage - }; + rollResult.dice[2].options = + advantageState === 1 ? diceSoNicePresets.advantage : diceSoNicePresets.disadvantage; } }; @@ -236,9 +239,25 @@ export const updateActorTokens = async (actor, update) => { * @param {HTMLElement} element - The DOM element to start the search from. * @returns {foundry.abstract.Document|null} The resolved document, or null if not found or invalid. */ -export function getDocFromElement(element) { +export async function getDocFromElement(element) { const target = element.closest('[data-item-uuid]'); - return foundry.utils.fromUuidSync(target.dataset.itemUuid) ?? null; + return (await foundry.utils.fromUuid(target.dataset.itemUuid)) ?? null; +} + +/** + * Retrieves a Foundry document associated with the nearest ancestor element + * that has a `data-item-uuid` attribute. + * @param {HTMLElement} element - The DOM element to start the search from. + * @returns {foundry.abstract.Document|null} The resolved document, or null if not found, invalid + * or in embedded compendium collection. + */ +export function getDocFromElementSync(element) { + const target = element.closest('[data-item-uuid]'); + try { + return foundry.utils.fromUuidSync(target.dataset.itemUuid) ?? null; + } catch (_) { + return null; + } } /** @@ -256,14 +275,14 @@ export function addLinkedItemsDiff(changedItems, currentItems, options) { newItems .difference(prevItems) .map(item => item?.item ?? item) - .filter(x => (typeof x === 'object' ? x.item : x)) + .filter(x => (typeof x === 'object' ? x?.item : x)) ); options.toUnlink = Array.from( prevItems .difference(newItems) .map(item => item?.item?.uuid ?? item?.uuid ?? item) - .filter(x => (typeof x === 'object' ? x.item : x)) + .filter(x => (typeof x === 'object' ? x?.item : x)) ); } } diff --git a/module/systemRegistration/socket.mjs b/module/systemRegistration/socket.mjs index 0037d99d..e97fe5b0 100644 --- a/module/systemRegistration/socket.mjs +++ b/module/systemRegistration/socket.mjs @@ -1,3 +1,5 @@ +import DamageReductionDialog from '../applications/dialogs/damageReductionDialog.mjs'; + export function handleSocketEvent({ action = null, data = {} } = {}) { switch (action) { case socketEvent.GMUpdate: @@ -21,7 +23,8 @@ export const socketEvent = { export const GMUpdateEvent = { UpdateDocument: 'DhGMUpdateDocument', UpdateSetting: 'DhGMUpdateSetting', - UpdateFear: 'DhGMUpdateFear' + UpdateFear: 'DhGMUpdateFear', + UpdateSaveMessage: 'DhGMUpdateSaveMessage' }; export const RefreshType = { @@ -53,8 +56,12 @@ export const registerSocketHooks = () => { ) ) ); - /* Hooks.callAll(socketEvent.DhpFearUpdate); - await game.socket.emit(`system.${CONFIG.DH.id}`, { action: socketEvent.DhpFearUpdate }); */ + break; + case GMUpdateEvent.UpdateSaveMessage: + const action = await fromUuid(data.update.action), + message = game.messages.get(data.update.message); + if(!action || !message) return; + action.updateSaveMessage(data.update.result, message, data.update.token); break; } @@ -69,6 +76,11 @@ export const registerSocketHooks = () => { }); }; +export const registerUserQueries = () => { + CONFIG.queries.armorStack = DamageReductionDialog.armorStackQuery; + CONFIG.queries.reactionRoll = game.system.api.models.actions.actionsTypes.base.rollSaveQuery; +} + export const emitAsGM = async (eventName, callback, update, uuid = null) => { if (!game.user.isGM) { return await game.socket.emit(`system.${CONFIG.DH.id}`, { diff --git a/src/packs/beastforms/beastform_Agile_Scout_6tr99y6wHaJJYy3J.json b/src/packs/beastforms/beastform_Agile_Scout_a9UoCwtrbgKk02mK.json similarity index 52% rename from src/packs/beastforms/beastform_Agile_Scout_6tr99y6wHaJJYy3J.json rename to src/packs/beastforms/beastform_Agile_Scout_a9UoCwtrbgKk02mK.json index 0885d9f3..9ce4cea5 100644 --- a/src/packs/beastforms/beastform_Agile_Scout_6tr99y6wHaJJYy3J.json +++ b/src/packs/beastforms/beastform_Agile_Scout_a9UoCwtrbgKk02mK.json @@ -1,11 +1,11 @@ { "name": "Agile Scout", "type": "beastform", - "img": "icons/creatures/mammals/goat-horned-blue.webp", + "img": "icons/creatures/mammals/rodent-rat-diseaed-gray.webp", "system": { "beastformType": "normal", "tier": 1, - "tokenImg": "icons/creatures/mammals/goat-horned-blue.webp", + "tokenImg": "icons/svg/mystery-man.svg", "tokenRingImg": "icons/svg/mystery-man.svg", "tokenSize": { "height": null, @@ -13,22 +13,23 @@ }, "mainTrait": "agility", "advantageOn": { - "tXlf8FvWrgGqfaJu": { - "value": "deceit" + "mtep5GS5Ruj6ZXk1": { + "value": "Deceive" }, - "lp1gv9iNUCpC2Fli": { - "value": "locate" + "HtQHzK88eiFGP1sW": { + "value": "Locate" }, - "GxDMKUpOeDHzyhAT": { - "value": "sneak" + "pq2OXeTmvgRVWTnM": { + "value": "Sneak" } }, "features": [ - "Compendium.daggerheart.beastforms.Item.sef9mwD2eRLZ64oV", - "Compendium.daggerheart.beastforms.Item.9ryNrYWjNtOT6DXN" + "Compendium.daggerheart.beastforms.Item.xLS5YT1B6yeCiNTg", + "Compendium.daggerheart.beastforms.Item.QFg1hNCEoKVDd9Zo" ], "evolved": { - "mainTraitBonus": 0 + "mainTraitBonus": 0, + "maximumTier": 1 }, "hybrid": { "beastformOptions": 2, @@ -42,7 +43,7 @@ "type": "beastform", "name": "Beastform Transformation", "img": "icons/creatures/abilities/paw-print-pair-purple.webp", - "_id": "m098fyKkAjTFZ6UJ", + "_id": "ehfx2SUKMiM6f5Pd", "system": { "characterTokenData": { "tokenImg": null, @@ -65,6 +66,18 @@ "mode": 2, "value": "2", "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "0", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "agility", + "priority": null } ], "disabled": false, @@ -91,56 +104,16 @@ "coreVersion": "13.346", "systemId": "daggerheart", "systemVersion": "0.0.1", - "lastModifiedBy": null + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753637028054 }, - "_key": "!items.effects!6tr99y6wHaJJYy3J.m098fyKkAjTFZ6UJ" - }, - { - "type": "beastform", - "name": "Beastform Transformation", - "img": "icons/creatures/abilities/paw-print-pair-purple.webp", - "_id": "5mi9ku2R4paP579i", - "system": { - "characterTokenData": { - "tokenImg": null, - "tokenRingImg": "icons/svg/mystery-man.svg", - "tokenSize": {} - }, - "advantageOn": [], - "featureIds": [], - "effectIds": [] - }, - "changes": [], - "disabled": false, - "duration": { - "startTime": null, - "combat": null - }, - "description": "", - "origin": null, - "tint": "#ffffff", - "transfer": true, - "statuses": [], - "sort": 0, - "flags": {}, - "_stats": { - "compendiumSource": null, - "duplicateSource": null, - "exportSource": null, - "coreVersion": "13.346", - "systemId": "daggerheart", - "systemVersion": "0.0.1", - "createdTime": 1752976985351, - "modifiedTime": 1752976985351, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" - }, - "_key": "!items.effects!6tr99y6wHaJJYy3J.5mi9ku2R4paP579i" + "_key": "!items.effects!a9UoCwtrbgKk02mK.ehfx2SUKMiM6f5Pd" } ], - "folder": null, + "folder": "nhnRdZgSSrE9myIX", "ownership": { "default": 0, - "k0gmQFlvrPvlTtbh": 3 + "FecEtPuoQh6MpjQ0": 3 }, "flags": {}, "_stats": { @@ -150,11 +123,11 @@ "coreVersion": "13.346", "systemId": "daggerheart", "systemVersion": "0.0.1", - "createdTime": 1752976985346, - "modifiedTime": 1752976987362, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" + "createdTime": 1753570913893, + "modifiedTime": 1753575463479, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" }, - "_id": "6tr99y6wHaJJYy3J", - "sort": 100000, - "_key": "!items!6tr99y6wHaJJYy3J" + "_id": "a9UoCwtrbgKk02mK", + "sort": 500000, + "_key": "!items!a9UoCwtrbgKk02mK" } diff --git a/src/packs/beastforms/beastform_Aquatic_Predator_ItBVeCl2u5uetgy7.json b/src/packs/beastforms/beastform_Aquatic_Predator_ItBVeCl2u5uetgy7.json new file mode 100644 index 00000000..75c747ab --- /dev/null +++ b/src/packs/beastforms/beastform_Aquatic_Predator_ItBVeCl2u5uetgy7.json @@ -0,0 +1,138 @@ +{ + "name": "Aquatic Predator", + "type": "beastform", + "img": "icons/creatures/fish/fish-marlin-swordfight-blue.webp", + "system": { + "beastformType": "normal", + "tier": 3, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "agility", + "advantageOn": { + "1AcQrnvX9BKAWb0Y": { + "value": "Attack" + }, + "BY5ht3SqyKw0dBr1": { + "value": "Swim" + }, + "4OW2JewIhcKpwzVE": { + "value": "Track" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.kQWWx9P3fCyGSVOI", + "Compendium.daggerheart.beastforms.Item.jYUBi7yLHap5ljpa" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Dolphin, Orca, Shark, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "7OTbmhQNtKhRAl59", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.agility.value", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "4", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "6", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "agility", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636850470 + }, + "_key": "!items.effects!ItBVeCl2u5uetgy7.7OTbmhQNtKhRAl59" + } + ], + "folder": "9uPPuDAUXrVYquTw", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753626985883, + "modifiedTime": 1753626995174, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "ItBVeCl2u5uetgy7", + "sort": 0, + "_key": "!items!ItBVeCl2u5uetgy7" +} diff --git a/src/packs/beastforms/beastform_Aquatic_Scout_qqzdFCxyYupWZK23.json b/src/packs/beastforms/beastform_Aquatic_Scout_qqzdFCxyYupWZK23.json new file mode 100644 index 00000000..4b5c792c --- /dev/null +++ b/src/packs/beastforms/beastform_Aquatic_Scout_qqzdFCxyYupWZK23.json @@ -0,0 +1,132 @@ +{ + "name": "Aquatic Scout", + "type": "beastform", + "img": "icons/creatures/tentacles/tentacles-octopus-black-pink.webp", + "system": { + "beastformType": "normal", + "tier": 1, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "agility", + "advantageOn": { + "OG0TnlIP9lKye1e9": { + "value": "Navigate" + }, + "q3yvEjEGqK6o4AYw": { + "value": "Sneak" + }, + "RWK8rni8s7nYVP7I": { + "value": "Swim" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.kQWWx9P3fCyGSVOI", + "Compendium.daggerheart.beastforms.Item.QFg1hNCEoKVDd9Zo" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Eel, Fish, Octopus, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "TsXyfEOCk0ma5tp9", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.agility.value", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "0", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "agility", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753637058698 + }, + "_key": "!items.effects!qqzdFCxyYupWZK23.TsXyfEOCk0ma5tp9" + } + ], + "folder": "nhnRdZgSSrE9myIX", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753575463467, + "modifiedTime": 1753575469111, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "qqzdFCxyYupWZK23", + "sort": 200000, + "_key": "!items!qqzdFCxyYupWZK23" +} diff --git a/src/packs/beastforms/beastform_Armored_Sentry_8pUHJv3BYdjA4Qdf.json b/src/packs/beastforms/beastform_Armored_Sentry_8pUHJv3BYdjA4Qdf.json new file mode 100644 index 00000000..553fa9e9 --- /dev/null +++ b/src/packs/beastforms/beastform_Armored_Sentry_8pUHJv3BYdjA4Qdf.json @@ -0,0 +1,138 @@ +{ + "name": "Armored Sentry", + "type": "beastform", + "img": "icons/creatures/reptiles/turtle-shell-glowing-green.webp", + "system": { + "beastformType": "normal", + "tier": 2, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "strength", + "advantageOn": { + "mX0DbTDuWAIpAGYq": { + "value": "Armadillo" + }, + "0VGGQOhVOoNpZfdJ": { + "value": "Pangolin" + }, + "6v6bkfKevJrn3YHf": { + "value": "Turtle" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.nDQZdIF2epKlhauX", + "Compendium.daggerheart.beastforms.Item.jp5KpPRBFBOIs46Q" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Armadillo, Pangolin, Turtle, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "hd0uVl6ZZeyPJn9O", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.strength.value", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "strength", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636932760 + }, + "_key": "!items.effects!8pUHJv3BYdjA4Qdf.hd0uVl6ZZeyPJn9O" + } + ], + "folder": "Rd30i5G7Pg0HtEUT", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753580987168, + "modifiedTime": 1753617739186, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "8pUHJv3BYdjA4Qdf", + "sort": 100000, + "_key": "!items!8pUHJv3BYdjA4Qdf" +} diff --git a/src/packs/beastforms/beastform_Epic_Aquatic_Beast_wT4xbF99I55yjKZV.json b/src/packs/beastforms/beastform_Epic_Aquatic_Beast_wT4xbF99I55yjKZV.json new file mode 100644 index 00000000..895a3467 --- /dev/null +++ b/src/packs/beastforms/beastform_Epic_Aquatic_Beast_wT4xbF99I55yjKZV.json @@ -0,0 +1,141 @@ +{ + "name": "Epic Aquatic Beast", + "type": "beastform", + "img": "icons/creatures/fish/squid-kraken-teal.webp", + "system": { + "beastformType": "normal", + "tier": 4, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "agility", + "advantageOn": { + "DzjyAaegBTZSxhT4": { + "value": "Locate" + }, + "rRDzTGkLNCbStmih": { + "value": "Protect" + }, + "0k26pAQLTjfEfviV": { + "value": "Scare" + }, + "zkEFnEqpAf4lqy5W": { + "value": "Track" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.tGDdEH40wyOCsFmH", + "Compendium.daggerheart.beastforms.Item.vEAQ4cfsoPmOv2Gg" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Giant Squid, Whale, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "zYUexUr2e3k4kzhw", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.agility.value", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "10", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "agility", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636776763 + }, + "_key": "!items.effects!wT4xbF99I55yjKZV.zYUexUr2e3k4kzhw" + } + ], + "folder": "UQEr5SAm2Z1Aih1S", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753628697986, + "modifiedTime": 1753628714911, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "wT4xbF99I55yjKZV", + "sort": 0, + "_key": "!items!wT4xbF99I55yjKZV" +} diff --git a/src/packs/beastforms/beastform_Great_Predator_afbMt4Ld6nY3mw0N.json b/src/packs/beastforms/beastform_Great_Predator_afbMt4Ld6nY3mw0N.json new file mode 100644 index 00000000..e794abf2 --- /dev/null +++ b/src/packs/beastforms/beastform_Great_Predator_afbMt4Ld6nY3mw0N.json @@ -0,0 +1,138 @@ +{ + "name": "Great Predator", + "type": "beastform", + "img": "icons/creatures/mammals/wolf-shadow-black.webp", + "system": { + "beastformType": "normal", + "tier": 3, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "strength", + "advantageOn": { + "WvQYbcASMk0IwESy": { + "value": "Attack" + }, + "Hzr7zL547nyrZyZK": { + "value": "Sneak" + }, + "3wDuhdlzs3gOJ9l9": { + "value": "Sprint" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.EVOJTskJYf4rpuga", + "Compendium.daggerheart.beastforms.Item.jYUBi7yLHap5ljpa" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Dire Wolf, Velociraptor, Sabertooth Tiger, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "TFzvHClwIAQUFxyP", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.strength.value", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "4", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "8", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "strength", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636866636 + }, + "_key": "!items.effects!afbMt4Ld6nY3mw0N.TFzvHClwIAQUFxyP" + } + ], + "folder": "9uPPuDAUXrVYquTw", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625648103, + "modifiedTime": 1753626865950, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "afbMt4Ld6nY3mw0N", + "sort": 100000, + "_key": "!items!afbMt4Ld6nY3mw0N" +} diff --git a/src/packs/beastforms/beastform_Great_Winged_Beast_b4BMnTbJ3iPPidSb.json b/src/packs/beastforms/beastform_Great_Winged_Beast_b4BMnTbJ3iPPidSb.json new file mode 100644 index 00000000..15eed972 --- /dev/null +++ b/src/packs/beastforms/beastform_Great_Winged_Beast_b4BMnTbJ3iPPidSb.json @@ -0,0 +1,138 @@ +{ + "name": "Great Winged Beast", + "type": "beastform", + "img": "icons/creatures/birds/corvid-flying-wings-purple.webp", + "system": { + "beastformType": "normal", + "tier": 3, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "finesse", + "advantageOn": { + "9J8GmsoqjBiXJLKE": { + "value": "Deceive" + }, + "MkD8mmiirYPqs0oA": { + "value": "Distract" + }, + "qzud50ZkqNJgYhRH": { + "value": "Locate" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.FNKQlWQcArSorMPK", + "Compendium.daggerheart.beastforms.Item.EVOJTskJYf4rpuga" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Giant Eagle, Falcon, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "qGSm1QpICpxRZxLn", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.finesse.value", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "6", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "finesse", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636883399 + }, + "_key": "!items.effects!b4BMnTbJ3iPPidSb.qGSm1QpICpxRZxLn" + } + ], + "folder": "9uPPuDAUXrVYquTw", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753626865938, + "modifiedTime": 1753626874515, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "b4BMnTbJ3iPPidSb", + "sort": 200000, + "_key": "!items!b4BMnTbJ3iPPidSb" +} diff --git a/src/packs/beastforms/beastform_Household_Friend_iDmOtiHJJ80AIAVT.json b/src/packs/beastforms/beastform_Household_Friend_iDmOtiHJJ80AIAVT.json new file mode 100644 index 00000000..57a1ecdf --- /dev/null +++ b/src/packs/beastforms/beastform_Household_Friend_iDmOtiHJJ80AIAVT.json @@ -0,0 +1,132 @@ +{ + "name": "Household Friend", + "type": "beastform", + "img": "icons/creatures/mammals/rabbit-movement-glowing-green.webp", + "system": { + "beastformType": "normal", + "tier": 1, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "instinct", + "advantageOn": { + "CXfEZDZ96ajdn5aU": { + "value": "Climb" + }, + "IojJaTrMIkT4xFSN": { + "value": "Locate" + }, + "IwwGzrAig49bAy8y": { + "value": "Protect" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.jhWSC5bNZyYUAA5Q", + "Compendium.daggerheart.beastforms.Item.QFg1hNCEoKVDd9Zo" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Cat, Dog, Rabbit, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "CzMAMg2q5gL15JrZ", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.instinct.value", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "1", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "instinct", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753637069907 + }, + "_key": "!items.effects!iDmOtiHJJ80AIAVT.CzMAMg2q5gL15JrZ" + } + ], + "folder": "nhnRdZgSSrE9myIX", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753573035973, + "modifiedTime": 1753575463479, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "iDmOtiHJJ80AIAVT", + "sort": 100000, + "_key": "!items!iDmOtiHJJ80AIAVT" +} diff --git a/src/packs/beastforms/beastform_Household_Friend_uxBugKULjn7O1KQc.json b/src/packs/beastforms/beastform_Household_Friend_uxBugKULjn7O1KQc.json deleted file mode 100644 index 288afead..00000000 --- a/src/packs/beastforms/beastform_Household_Friend_uxBugKULjn7O1KQc.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "name": "Household Friend", - "type": "beastform", - "img": "icons/creatures/mammals/cat-hunched-glowing-red.webp", - "system": { - "beastformType": "normal", - "tier": 1, - "tokenImg": "icons/creatures/mammals/cat-hunched-glowing-red.webp", - "tokenRingImg": "icons/svg/mystery-man.svg", - "tokenSize": { - "height": null, - "width": null - }, - "mainTrait": "instinct", - "advantageOn": { - "u0mzlWihDHITgh1x": { - "value": "climb" - }, - "m53oFXA2SA5jAjWc": { - "value": "locate" - }, - "XLPn5Egg9mIuLyVP": { - "value": "protect" - } - }, - "features": [ - "Compendium.daggerheart.beastforms.Item.0tlnxIxlIw2hl1UE", - "Compendium.daggerheart.beastforms.Item.9ryNrYWjNtOT6DXN" - ], - "evolved": { - "mainTraitBonus": 0 - }, - "hybrid": { - "beastformOptions": 2, - "advantages": 2, - "features": 2 - }, - "examples": "Cat, Dog, Rabbit, etc." - }, - "effects": [ - { - "type": "beastform", - "name": "Beastform Transformation", - "img": "icons/creatures/abilities/paw-print-pair-purple.webp", - "_id": "d25tcdgssnDvekKR", - "system": { - "characterTokenData": { - "tokenImg": null, - "tokenRingImg": "icons/svg/mystery-man.svg", - "tokenSize": {} - }, - "advantageOn": [], - "featureIds": [], - "effectIds": [] - }, - "changes": [ - { - "key": "system.rules.attack.trait", - "mode": 5, - "value": "instinct", - "priority": null - }, - { - "key": "system.rules.attack.range", - "mode": 5, - "value": "melee", - "priority": null - }, - { - "key": "system.rules.attack.damage.value", - "mode": 5, - "value": "1d8", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "combat": null, - "seconds": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "description": "", - "origin": null, - "tint": "#ffffff", - "transfer": true, - "statuses": [], - "sort": 0, - "flags": {}, - "_stats": { - "compendiumSource": null, - "duplicateSource": null, - "exportSource": null, - "coreVersion": "13.346", - "systemId": "daggerheart", - "systemVersion": "0.0.1", - "lastModifiedBy": null - }, - "_key": "!items.effects!uxBugKULjn7O1KQc.d25tcdgssnDvekKR" - }, - { - "type": "beastform", - "name": "Beastform Transformation", - "img": "icons/creatures/abilities/paw-print-pair-purple.webp", - "_id": "idqGh9sm1zBLME1O", - "system": { - "characterTokenData": { - "tokenImg": null, - "tokenRingImg": "icons/svg/mystery-man.svg", - "tokenSize": {} - }, - "advantageOn": [], - "featureIds": [], - "effectIds": [] - }, - "changes": [], - "disabled": false, - "duration": { - "startTime": null, - "combat": null - }, - "description": "", - "origin": null, - "tint": "#ffffff", - "transfer": true, - "statuses": [], - "sort": 0, - "flags": {}, - "_stats": { - "compendiumSource": null, - "duplicateSource": null, - "exportSource": null, - "coreVersion": "13.346", - "systemId": "daggerheart", - "systemVersion": "0.0.1", - "createdTime": 1752976986453, - "modifiedTime": 1752976986453, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" - }, - "_key": "!items.effects!uxBugKULjn7O1KQc.idqGh9sm1zBLME1O" - } - ], - "folder": null, - "ownership": { - "default": 0, - "k0gmQFlvrPvlTtbh": 3 - }, - "flags": {}, - "_stats": { - "compendiumSource": null, - "duplicateSource": null, - "exportSource": null, - "coreVersion": "13.346", - "systemId": "daggerheart", - "systemVersion": "0.0.1", - "createdTime": 1752976986449, - "modifiedTime": 1752976987362, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" - }, - "_id": "uxBugKULjn7O1KQc", - "sort": 300000, - "_key": "!items!uxBugKULjn7O1KQc" -} diff --git a/src/packs/beastforms/beastform_Legendary_Beast_mERwC7aMDoIKfZTf.json b/src/packs/beastforms/beastform_Legendary_Beast_mqP6z4Wg4K3oDAom.json similarity index 53% rename from src/packs/beastforms/beastform_Legendary_Beast_mERwC7aMDoIKfZTf.json rename to src/packs/beastforms/beastform_Legendary_Beast_mqP6z4Wg4K3oDAom.json index 4588bc0a..a73b31d2 100644 --- a/src/packs/beastforms/beastform_Legendary_Beast_mERwC7aMDoIKfZTf.json +++ b/src/packs/beastforms/beastform_Legendary_Beast_mqP6z4Wg4K3oDAom.json @@ -1,11 +1,11 @@ { "name": "Legendary Beast", "type": "beastform", - "img": "icons/creatures/magical/spirit-undead-horned-blue.webp", + "img": "icons/creatures/magical/humanoid-giant-forest-blue.webp", "system": { "beastformType": "evolved", "tier": 3, - "tokenImg": "icons/creatures/magical/spirit-undead-horned-blue.webp", + "tokenImg": "icons/svg/mystery-man.svg", "tokenRingImg": "icons/svg/mystery-man.svg", "tokenSize": { "height": null, @@ -30,7 +30,7 @@ "type": "beastform", "name": "Beastform Transformation", "img": "icons/creatures/abilities/paw-print-pair-purple.webp", - "_id": "cKAoI5JqYOtGBscd", + "_id": "cL4kH57pf2nGIxaK", "system": { "characterTokenData": { "tokenImg": null, @@ -48,12 +48,6 @@ "value": "6", "priority": null }, - { - "key": "system.bonuses.damage.magical.bonus", - "mode": 2, - "value": "6", - "priority": null - }, { "key": "system.evasion", "mode": 2, @@ -71,7 +65,7 @@ "startRound": null, "startTurn": null }, - "description": "
Pick a Tier 1 Beastform option and become a larger, more powerful version of that creature. While you’re in this form, you retain all traits and features from the original form and gain the following bonuses:
- A +6 bonus to damage rolls
- A +1 bonus to the trait used by this form
- A +2 bonus to evasion
Pick a Tier 1 Beastform option and become a larger, more powerful version of that creature. While you’re in this form, you retain all traits and features from the original form and gain the following bonuses:
To transform into this creature, mark an additional Stress. Choose any two Beastform options from Tiers 1–2. Choose a total of four advantages and two features from those options.
", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636904176 + }, + "_key": "!items.effects!rRUtgcUjimlpPhnn.RbZKFWATkfLZm67j" + } + ], + "folder": "9uPPuDAUXrVYquTw", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753627303526, + "modifiedTime": 1753627303526, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "rRUtgcUjimlpPhnn", + "sort": 0, + "_key": "!items!rRUtgcUjimlpPhnn" +} diff --git a/src/packs/beastforms/beastform_Massive_Behemoth_qjwMzPn33aKZACkv.json b/src/packs/beastforms/beastform_Massive_Behemoth_qjwMzPn33aKZACkv.json new file mode 100644 index 00000000..470cfffe --- /dev/null +++ b/src/packs/beastforms/beastform_Massive_Behemoth_qjwMzPn33aKZACkv.json @@ -0,0 +1,142 @@ +{ + "name": "Massive Behemoth", + "type": "beastform", + "img": "icons/creatures/mammals/beast-horned-scaled-glowing-orange.webp", + "system": { + "beastformType": "normal", + "tier": 4, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "strength", + "advantageOn": { + "4dxvlv6F3kjurgJg": { + "value": "Locate" + }, + "WiskYFviMDpdKcR6": { + "value": "Protect" + }, + "AoFiYKVbPxGalK8Y": { + "value": "Scare" + }, + "TMzWo667tWr355c9": { + "value": "Sprint" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.EVOJTskJYf4rpuga", + "Compendium.daggerheart.beastforms.Item.DfBXO8jTchwFG8dZ", + "Compendium.daggerheart.beastforms.Item.ODudjX88Te4vDP57" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Elephant, Mammoth, Rhinoceros, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "RR6ySJU5zaC7ws6A", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.strength.value", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "4", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "12", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "strength", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636791070 + }, + "_key": "!items.effects!qjwMzPn33aKZACkv.RR6ySJU5zaC7ws6A" + } + ], + "folder": "UQEr5SAm2Z1Aih1S", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753627711166, + "modifiedTime": 1753631381561, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "qjwMzPn33aKZACkv", + "sort": 100000, + "_key": "!items!qjwMzPn33aKZACkv" +} diff --git a/src/packs/beastforms/beastform_Mighty_Lizard_94tvcC3D5Kp4lzuN.json b/src/packs/beastforms/beastform_Mighty_Lizard_94tvcC3D5Kp4lzuN.json new file mode 100644 index 00000000..374fc301 --- /dev/null +++ b/src/packs/beastforms/beastform_Mighty_Lizard_94tvcC3D5Kp4lzuN.json @@ -0,0 +1,138 @@ +{ + "name": "Mighty Lizard", + "type": "beastform", + "img": "icons/creatures/reptiles/lizard-iguana-green.webp", + "system": { + "beastformType": "normal", + "tier": 3, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "instinct", + "advantageOn": { + "f5tUBKOfwDQKPrYP": { + "value": "Attack" + }, + "XS1zEu9IJ6ec0mZ0": { + "value": "Sneak" + }, + "K0hUzxErOc7t0myx": { + "value": "Track" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.StabkQ3BzWRZa8Tz", + "Compendium.daggerheart.beastforms.Item.Ky3rZD3sJMXYZOBC" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Alligator, Crocodile, Gila Monster, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "d13EzuP8Co04Jk8K", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.instinct.value", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "7", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "instinct", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636918241 + }, + "_key": "!items.effects!94tvcC3D5Kp4lzuN.d13EzuP8Co04Jk8K" + } + ], + "folder": "9uPPuDAUXrVYquTw", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753626720443, + "modifiedTime": 1753626865950, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "94tvcC3D5Kp4lzuN", + "sort": 300000, + "_key": "!items!94tvcC3D5Kp4lzuN" +} diff --git a/src/packs/beastforms/beastform_Mighty_Strider_LF68kGAcOTZQ81GB.json b/src/packs/beastforms/beastform_Mighty_Strider_zRLjqKx4Rn2TjivL.json similarity index 50% rename from src/packs/beastforms/beastform_Mighty_Strider_LF68kGAcOTZQ81GB.json rename to src/packs/beastforms/beastform_Mighty_Strider_zRLjqKx4Rn2TjivL.json index 04049a81..e44e01e9 100644 --- a/src/packs/beastforms/beastform_Mighty_Strider_LF68kGAcOTZQ81GB.json +++ b/src/packs/beastforms/beastform_Mighty_Strider_zRLjqKx4Rn2TjivL.json @@ -1,11 +1,11 @@ { "name": "Mighty Strider", "type": "beastform", - "img": "icons/creatures/mammals/bull-horned-blue.webp", + "img": "icons/environment/creatures/horse-tan.webp", "system": { "beastformType": "normal", "tier": 2, - "tokenImg": "icons/creatures/mammals/bull-horned-blue.webp", + "tokenImg": "icons/svg/mystery-man.svg", "tokenRingImg": "icons/svg/mystery-man.svg", "tokenSize": { "height": null, @@ -13,19 +13,19 @@ }, "mainTrait": "agility", "advantageOn": { - "Xxr01TwSerOS8qsd": { - "value": "leap" + "Az0LCAgV6NQMddlz": { + "value": "Leap" }, - "cASut9AUij2Uf4zm": { - "value": "navigate" + "6Povd6wfN4USSgbL": { + "value": "Navigate" }, - "XJie4FhCSwUCg9uN": { - "value": "sprint" + "wnHlu70U2vvDKNIo": { + "value": "Sprint" } }, "features": [ - "Compendium.daggerheart.beastforms.Item.YSolAjtv6Sfnai98", - "Compendium.daggerheart.beastforms.Item.P6tWFIZzXWyekw6r" + "Compendium.daggerheart.beastforms.Item.EVOJTskJYf4rpuga", + "Compendium.daggerheart.beastforms.Item.A0lgd6eVEfX6oqSB" ], "evolved": { "mainTraitBonus": 0 @@ -42,7 +42,7 @@ "type": "beastform", "name": "Beastform Transformation", "img": "icons/creatures/abilities/paw-print-pair-purple.webp", - "_id": "1KdhXARm6rg2fg22", + "_id": "IWg2cWUdvucUOLAL", "system": { "characterTokenData": { "tokenImg": null, @@ -55,22 +55,34 @@ }, "changes": [ { - "key": "system.rules.attack.damage.value", - "mode": 5, - "value": "d8 + 1", + "key": "system.traits.agility.value", + "mode": 2, + "value": "1", "priority": null }, { - "key": "system.rules.attack.trait", + "key": "system.evasion", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "1", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", "mode": 5, "value": "agility", "priority": null - }, - { - "key": "system.rules.attack.range", - "mode": 5, - "value": "melee", - "priority": null } ], "disabled": false, @@ -97,56 +109,16 @@ "coreVersion": "13.346", "systemId": "daggerheart", "systemVersion": "0.0.1", - "lastModifiedBy": null + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636945655 }, - "_key": "!items.effects!LF68kGAcOTZQ81GB.1KdhXARm6rg2fg22" - }, - { - "type": "beastform", - "name": "Beastform Transformation", - "img": "icons/creatures/abilities/paw-print-pair-purple.webp", - "_id": "ngEREmS8hzNyshak", - "system": { - "characterTokenData": { - "tokenImg": null, - "tokenRingImg": "icons/svg/mystery-man.svg", - "tokenSize": {} - }, - "advantageOn": [], - "featureIds": [], - "effectIds": [] - }, - "changes": [], - "disabled": false, - "duration": { - "startTime": null, - "combat": null - }, - "description": "", - "origin": null, - "tint": "#ffffff", - "transfer": true, - "statuses": [], - "sort": 0, - "flags": {}, - "_stats": { - "compendiumSource": null, - "duplicateSource": null, - "exportSource": null, - "coreVersion": "13.346", - "systemId": "daggerheart", - "systemVersion": "0.0.1", - "createdTime": 1752976987358, - "modifiedTime": 1752976987358, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" - }, - "_key": "!items.effects!LF68kGAcOTZQ81GB.ngEREmS8hzNyshak" + "_key": "!items.effects!zRLjqKx4Rn2TjivL.IWg2cWUdvucUOLAL" } ], - "folder": null, + "folder": "Rd30i5G7Pg0HtEUT", "ownership": { "default": 0, - "k0gmQFlvrPvlTtbh": 3 + "FecEtPuoQh6MpjQ0": 3 }, "flags": {}, "_stats": { @@ -156,11 +128,11 @@ "coreVersion": "13.346", "systemId": "daggerheart", "systemVersion": "0.0.1", - "createdTime": 1752976987354, - "modifiedTime": 1752976987362, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" + "createdTime": 1753617739175, + "modifiedTime": 1753617745460, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" }, - "_id": "LF68kGAcOTZQ81GB", + "_id": "zRLjqKx4Rn2TjivL", "sort": 200000, - "_key": "!items!LF68kGAcOTZQ81GB" + "_key": "!items!zRLjqKx4Rn2TjivL" } diff --git a/src/packs/beastforms/beastform_Mythic_Aerial_Hunter_jV6EuEacyQlHW4SN.json b/src/packs/beastforms/beastform_Mythic_Aerial_Hunter_jV6EuEacyQlHW4SN.json new file mode 100644 index 00000000..fbd60195 --- /dev/null +++ b/src/packs/beastforms/beastform_Mythic_Aerial_Hunter_jV6EuEacyQlHW4SN.json @@ -0,0 +1,141 @@ +{ + "name": "Mythic Aerial Hunter", + "type": "beastform", + "img": "icons/creatures/reptiles/dragon-winged-blue.webp", + "system": { + "beastformType": "normal", + "tier": 4, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "finesse", + "advantageOn": { + "wqIBmWSIbwwJdB07": { + "value": "Attack" + }, + "wUjIM4ohI1309Qmy": { + "value": "Deceive" + }, + "7YTz0VSytRCmpn3Y": { + "value": "Locate" + }, + "YyyzVE5FOevDKvAP": { + "value": "Navigate" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.EVOJTskJYf4rpuga", + "Compendium.daggerheart.beastforms.Item.QQtQ77tos8ijTHag" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Dragon, Pterodactyl, Roc, Wyvern, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "hnKnaOaswWJdaYmf", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.finesse.value", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "4", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "11", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "finesse", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636808135 + }, + "_key": "!items.effects!jV6EuEacyQlHW4SN.hnKnaOaswWJdaYmf" + } + ], + "folder": "UQEr5SAm2Z1Aih1S", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753628382723, + "modifiedTime": 1753628401450, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "jV6EuEacyQlHW4SN", + "sort": 200000, + "_key": "!items!jV6EuEacyQlHW4SN" +} diff --git a/src/packs/beastforms/beastform_Mythic_Beast_kObobka52JdpWBSu.json b/src/packs/beastforms/beastform_Mythic_Beast_kObobka52JdpWBSu.json new file mode 100644 index 00000000..d7d407a6 --- /dev/null +++ b/src/packs/beastforms/beastform_Mythic_Beast_kObobka52JdpWBSu.json @@ -0,0 +1,114 @@ +{ + "name": "Mythic Beast", + "type": "beastform", + "img": "icons/creatures/eyes/lizard-single-slit-pink.webp", + "system": { + "beastformType": "evolved", + "tier": 4, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "agility", + "advantageOn": {}, + "features": [], + "evolved": { + "mainTraitBonus": 2, + "maximumTier": 2 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "" + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "vhwbPQ2YT64qD1t1", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.bonuses.damage.physical.bonus", + "mode": 2, + "value": "9", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 2, + "value": "1", + "priority": 60 + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "Pick a Tier 1 or Tier 2 Beastform option and become a larger, more powerful version of that creature. While you’re in this form, you retain all traits and features from the original form and gain the the following bonuses:
To transform into this creature, mark 2 additional Stress. Choose any three Beastform options from Tiers 1–3. Choose a total of five advantages and three features from those options.
", + "description": "To transform into this creature, mark 2 additional Stress. Choose any three Beastform options from Tiers 1–3. Choose a total of five advantages and three features from those options.
", "origin": null, "tint": "#ffffff", "transfer": true, @@ -79,56 +97,16 @@ "coreVersion": "13.346", "systemId": "daggerheart", "systemVersion": "0.0.1", - "lastModifiedBy": null + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636821848 }, - "_key": "!items.effects!VI1DyowECDCDdsC1.dvqS0a0ur8xM2swY" - }, - { - "type": "beastform", - "name": "Beastform Transformation", - "img": "icons/creatures/abilities/paw-print-pair-purple.webp", - "_id": "xSMy4BO5PuqASEKW", - "system": { - "characterTokenData": { - "tokenImg": null, - "tokenRingImg": "icons/svg/mystery-man.svg", - "tokenSize": {} - }, - "advantageOn": [], - "featureIds": [], - "effectIds": [] - }, - "changes": [], - "disabled": false, - "duration": { - "startTime": null, - "combat": null - }, - "description": "", - "origin": null, - "tint": "#ffffff", - "transfer": true, - "statuses": [], - "sort": 0, - "flags": {}, - "_stats": { - "compendiumSource": null, - "duplicateSource": null, - "exportSource": null, - "coreVersion": "13.346", - "systemId": "daggerheart", - "systemVersion": "0.0.1", - "createdTime": 1752976990470, - "modifiedTime": 1752976990470, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" - }, - "_key": "!items.effects!VI1DyowECDCDdsC1.xSMy4BO5PuqASEKW" + "_key": "!items.effects!WAbxCf2An8qmxyJ1.HutJQ9HGtr1Eoibp" } ], - "folder": null, + "folder": "UQEr5SAm2Z1Aih1S", "ownership": { "default": 0, - "k0gmQFlvrPvlTtbh": 3 + "FecEtPuoQh6MpjQ0": 3 }, "flags": {}, "_stats": { @@ -138,11 +116,11 @@ "coreVersion": "13.346", "systemId": "daggerheart", "systemVersion": "0.0.1", - "createdTime": 1752976990466, - "modifiedTime": 1752976990466, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" + "createdTime": 1753628965658, + "modifiedTime": 1753628965658, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" }, - "_id": "VI1DyowECDCDdsC1", + "_id": "WAbxCf2An8qmxyJ1", "sort": 0, - "_key": "!items!VI1DyowECDCDdsC1" + "_key": "!items!WAbxCf2An8qmxyJ1" } diff --git a/src/packs/beastforms/beastform_Nimble_Grazer_CItO8yX6amQaqyk7.json b/src/packs/beastforms/beastform_Nimble_Grazer_CItO8yX6amQaqyk7.json new file mode 100644 index 00000000..926b8739 --- /dev/null +++ b/src/packs/beastforms/beastform_Nimble_Grazer_CItO8yX6amQaqyk7.json @@ -0,0 +1,132 @@ +{ + "name": "Nimble Grazer", + "type": "beastform", + "img": "icons/creatures/mammals/deer-antlers-glowing-blue.webp", + "system": { + "beastformType": "normal", + "tier": 1, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "agility", + "advantageOn": { + "pZh7UYwWgdddKX77": { + "value": "Leap" + }, + "MVO36LtrjuSU4cAv": { + "value": "Sneak" + }, + "P9W2JIx0FJgQf6b6": { + "value": "Sprint" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.a7Qvmm14nx9BCysA", + "Compendium.daggerheart.beastforms.Item.QFg1hNCEoKVDd9Zo" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Deer, Gazelle, Goat, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "lIbJFb5XQ98Eaauu", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.agility.value", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "1", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "agility", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753637082422 + }, + "_key": "!items.effects!CItO8yX6amQaqyk7.lIbJFb5XQ98Eaauu" + } + ], + "folder": "nhnRdZgSSrE9myIX", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753574930310, + "modifiedTime": 1753575463479, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "CItO8yX6amQaqyk7", + "sort": 300000, + "_key": "!items!CItO8yX6amQaqyk7" +} diff --git a/src/packs/beastforms/beastform_Pack_Predator_YLisKYYhAGca50WM.json b/src/packs/beastforms/beastform_Pack_Predator_YLisKYYhAGca50WM.json new file mode 100644 index 00000000..38150adb --- /dev/null +++ b/src/packs/beastforms/beastform_Pack_Predator_YLisKYYhAGca50WM.json @@ -0,0 +1,138 @@ +{ + "name": "Pack Predator", + "type": "beastform", + "img": "icons/creatures/mammals/wolf-howl-moon-forest-blue.webp", + "system": { + "beastformType": "normal", + "tier": 1, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "strength", + "advantageOn": { + "WwCjWpa7n6KcP3kY": { + "value": "Attack" + }, + "oNzBOc2bkcb7CrQk": { + "value": "Sprint" + }, + "wtz5CPetdNzXTyBA": { + "value": "Track" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.8u0HkK3WgtU9lWYs", + "Compendium.daggerheart.beastforms.Item.d3q8lfeiEMyTjusT" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Coyote, Hyena, Wolf, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "amuFS9LlEnzZnaIN", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.strength.value", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "strength", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753637098077 + }, + "_key": "!items.effects!YLisKYYhAGca50WM.amuFS9LlEnzZnaIN" + } + ], + "folder": "nhnRdZgSSrE9myIX", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753575274807, + "modifiedTime": 1753575463479, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "YLisKYYhAGca50WM", + "sort": 400000, + "_key": "!items!YLisKYYhAGca50WM" +} diff --git a/src/packs/beastforms/beastform_Pouncing_Predator_33oFSZ1PwFqInHPe.json b/src/packs/beastforms/beastform_Pouncing_Predator_33oFSZ1PwFqInHPe.json new file mode 100644 index 00000000..9073bb23 --- /dev/null +++ b/src/packs/beastforms/beastform_Pouncing_Predator_33oFSZ1PwFqInHPe.json @@ -0,0 +1,138 @@ +{ + "name": "Pouncing Predator", + "type": "beastform", + "img": "icons/creatures/abilities/cougar-roar-rush-orange.webp", + "system": { + "beastformType": "normal", + "tier": 2, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "instinct", + "advantageOn": { + "q5bjThxdJ1JAuX2r": { + "value": "Attack" + }, + "paOxE0DUkqKYVbss": { + "value": "Climb" + }, + "nDnJf1tiImA6ryyy": { + "value": "Sneak" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.GhHsSHOa509cwCvr", + "Compendium.daggerheart.beastforms.Item.0ey4kM9ssj2otHvb" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Cheetah, Lion, Panther, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "GSmW6nJ3kyIoEK2H", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.instinct.value", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "6", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "instinct", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636957124 + }, + "_key": "!items.effects!33oFSZ1PwFqInHPe.GSmW6nJ3kyIoEK2H" + } + ], + "folder": "Rd30i5G7Pg0HtEUT", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753621789186, + "modifiedTime": 1753621803375, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "33oFSZ1PwFqInHPe", + "sort": 0, + "_key": "!items!33oFSZ1PwFqInHPe" +} diff --git a/src/packs/beastforms/beastform_Powerful_Beast_m8BVTuJI1wCvzTcf.json b/src/packs/beastforms/beastform_Powerful_Beast_m8BVTuJI1wCvzTcf.json new file mode 100644 index 00000000..17d55206 --- /dev/null +++ b/src/packs/beastforms/beastform_Powerful_Beast_m8BVTuJI1wCvzTcf.json @@ -0,0 +1,138 @@ +{ + "name": "Powerful Beast", + "type": "beastform", + "img": "icons/creatures/abilities/bear-roar-bite-brown-green.webp", + "system": { + "beastformType": "normal", + "tier": 2, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "strength", + "advantageOn": { + "LhmE20iV5HBExx0A": { + "value": "Navigate" + }, + "EP4KQJfmXWGomsVC": { + "value": "Protect" + }, + "lMMv1eTry3N6rZCx": { + "value": "Scare" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.8upqfcZvi7b5hRLE", + "Compendium.daggerheart.beastforms.Item.ZYbdXaWVj2zdcmaK" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Bear, Bull, Moose, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "AZGTvqzFVHa4wS1a", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.strength.value", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "4", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "strength", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636973034 + }, + "_key": "!items.effects!m8BVTuJI1wCvzTcf.AZGTvqzFVHa4wS1a" + } + ], + "folder": "Rd30i5G7Pg0HtEUT", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753582598510, + "modifiedTime": 1753617739186, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "m8BVTuJI1wCvzTcf", + "sort": 300000, + "_key": "!items!m8BVTuJI1wCvzTcf" +} diff --git a/src/packs/beastforms/beastform_Stalking_Arachnid_A4TVRY0D5r9EiVwA.json b/src/packs/beastforms/beastform_Stalking_Arachnid_A4TVRY0D5r9EiVwA.json new file mode 100644 index 00000000..98a949ff --- /dev/null +++ b/src/packs/beastforms/beastform_Stalking_Arachnid_A4TVRY0D5r9EiVwA.json @@ -0,0 +1,138 @@ +{ + "name": "Stalking Arachnid", + "type": "beastform", + "img": "icons/creatures/invertebrates/spider-mandibles-brown.webp", + "system": { + "beastformType": "normal", + "tier": 1, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "finesse", + "advantageOn": { + "udIR54Etg9sx2XbM": { + "value": "Attack" + }, + "6On5GDzLxq6bao36": { + "value": "Climb" + }, + "IZjCaeEmcRBzGeDn": { + "value": "Sneak" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.2KlTnfzO03vneVS8", + "Compendium.daggerheart.beastforms.Item.D73fS1iM4SZPFimu" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Tarantula, Wolf Spider, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "YkZX2yc2X0QDFPBG", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.finesse.value", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "1", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "1", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "finesse", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753637113589 + }, + "_key": "!items.effects!A4TVRY0D5r9EiVwA.YkZX2yc2X0QDFPBG" + } + ], + "folder": "nhnRdZgSSrE9myIX", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753576016472, + "modifiedTime": 1753576046773, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "A4TVRY0D5r9EiVwA", + "sort": 0, + "_key": "!items!A4TVRY0D5r9EiVwA" +} diff --git a/src/packs/beastforms/beastform_Striking_Serpent_1XrZWGDttBAAUxR1.json b/src/packs/beastforms/beastform_Striking_Serpent_1XrZWGDttBAAUxR1.json new file mode 100644 index 00000000..3f4a5dbb --- /dev/null +++ b/src/packs/beastforms/beastform_Striking_Serpent_1XrZWGDttBAAUxR1.json @@ -0,0 +1,138 @@ +{ + "name": "Striking Serpent", + "type": "beastform", + "img": "icons/creatures/reptiles/serpent-horned-green.webp", + "system": { + "beastformType": "normal", + "tier": 2, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "finesse", + "advantageOn": { + "5bQks8eptInw0g9i": { + "value": "Climb" + }, + "j0mztP3MfVkA8KVL": { + "value": "Deceive" + }, + "yuIbmhAqfJmtzE6x": { + "value": "Sprint" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.uW3853pViM9VAfHb", + "Compendium.daggerheart.beastforms.Item.cTlqpQZPy5TvdDAT" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Cobra, Rattlesnake, Viper, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "qGhLojWa5430zRd1", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.finesse.value", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "4", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "finesse", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753635875178 + }, + "_key": "!items.effects!1XrZWGDttBAAUxR1.qGhLojWa5430zRd1" + } + ], + "folder": "Rd30i5G7Pg0HtEUT", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753621251793, + "modifiedTime": 1753621266619, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "1XrZWGDttBAAUxR1", + "sort": 0, + "_key": "!items!1XrZWGDttBAAUxR1" +} diff --git a/src/packs/beastforms/beastform_Terrible_Lizard_5BABxRe2XVrYTj8N.json b/src/packs/beastforms/beastform_Terrible_Lizard_5BABxRe2XVrYTj8N.json new file mode 100644 index 00000000..0614d763 --- /dev/null +++ b/src/packs/beastforms/beastform_Terrible_Lizard_5BABxRe2XVrYTj8N.json @@ -0,0 +1,141 @@ +{ + "name": "Terrible Lizard", + "type": "beastform", + "img": "icons/creatures/abilities/dragon-breath-purple.webp", + "system": { + "beastformType": "normal", + "tier": 4, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "strength", + "advantageOn": { + "onvcDZ0vtg88AjUn": { + "value": "Attack" + }, + "poo5ToKvpeI1Kvr3": { + "value": "Deceive" + }, + "oPA8ogGHNDvxrJps": { + "value": "Scare" + }, + "BIdGziN8wJX0iaHQ": { + "value": "Track" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.HJbQcKWcFZ9NoFxs", + "Compendium.daggerheart.beastforms.Item.9QkZSeuEKgXtlpHc" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Brachiosaurus, Tyrannosaurus, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "qPtjZIkRVm68TGHN", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.strength.value", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "4", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "10", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "strength", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753636836057 + }, + "_key": "!items.effects!5BABxRe2XVrYTj8N.qPtjZIkRVm68TGHN" + } + ], + "folder": "UQEr5SAm2Z1Aih1S", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753628213224, + "modifiedTime": 1753628382733, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "5BABxRe2XVrYTj8N", + "sort": 300000, + "_key": "!items!5BABxRe2XVrYTj8N" +} diff --git a/src/packs/beastforms/beastform_Winged_Beast_mZ4Wlqtss2FlNNvL.json b/src/packs/beastforms/beastform_Winged_Beast_mZ4Wlqtss2FlNNvL.json new file mode 100644 index 00000000..352b7124 --- /dev/null +++ b/src/packs/beastforms/beastform_Winged_Beast_mZ4Wlqtss2FlNNvL.json @@ -0,0 +1,138 @@ +{ + "name": "Winged Beast", + "type": "beastform", + "img": "icons/creatures/birds/raptor-owl-flying-moon.webp", + "system": { + "beastformType": "normal", + "tier": 2, + "tokenImg": "icons/svg/mystery-man.svg", + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": { + "height": null, + "width": null + }, + "mainTrait": "finesse", + "advantageOn": { + "DgZ77yPVJqNq7rxY": { + "value": "Deceive" + }, + "HCH9ogsxcP0r3fU2": { + "value": "Locate" + }, + "WST3bOmxoIeSHYqX": { + "value": "Scare" + } + }, + "features": [ + "Compendium.daggerheart.beastforms.Item.FNKQlWQcArSorMPK", + "Compendium.daggerheart.beastforms.Item.xVgmXhj2YgeqS1KK" + ], + "evolved": { + "mainTraitBonus": 0 + }, + "hybrid": { + "beastformOptions": 2, + "advantages": 2, + "features": 2 + }, + "examples": "Hawk, Owl, Raven, etc." + }, + "effects": [ + { + "type": "beastform", + "name": "Beastform Transformation", + "img": "icons/creatures/abilities/paw-print-pair-purple.webp", + "_id": "Ln3atrxiqtPA0Wi6", + "system": { + "characterTokenData": { + "tokenImg": null, + "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenSize": {} + }, + "advantageOn": [], + "featureIds": [], + "effectIds": [] + }, + "changes": [ + { + "key": "system.traits.finesse.value", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.evasion", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.rules.attack.damage.diceIndex", + "mode": 5, + "value": "0", + "priority": null + }, + { + "key": "system.rules.attack.damage.bonus", + "mode": 5, + "value": "2", + "priority": null + }, + { + "key": "system.rules.attack.roll.trait", + "mode": 5, + "value": "finesse", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753637037576 + }, + "_key": "!items.effects!mZ4Wlqtss2FlNNvL.Ln3atrxiqtPA0Wi6" + } + ], + "folder": "Rd30i5G7Pg0HtEUT", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753624952844, + "modifiedTime": 1753624972889, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "mZ4Wlqtss2FlNNvL", + "sort": 0, + "_key": "!items!mZ4Wlqtss2FlNNvL" +} diff --git a/src/packs/beastforms/feature_Agile_xLS5YT1B6yeCiNTg.json b/src/packs/beastforms/feature_Agile_xLS5YT1B6yeCiNTg.json new file mode 100644 index 00000000..d36699a4 --- /dev/null +++ b/src/packs/beastforms/feature_Agile_xLS5YT1B6yeCiNTg.json @@ -0,0 +1,65 @@ +{ + "name": "Agile", + "type": "feature", + "img": "icons/skills/movement/arrow-upward-yellow.webp", + "system": { + "description": "Your movement is silent, and you can spend a Hope to move up to Far range without rolling.
", + "resource": null, + "actions": { + "4yQ56hSL5LBkzrV6": { + "type": "effect", + "_id": "4yQ56hSL5LBkzrV6", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Spend Hope", + "img": "icons/skills/movement/arrow-upward-yellow.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753569752255, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "xLS5YT1B6yeCiNTg", + "sort": 2700000, + "_key": "!items!xLS5YT1B6yeCiNTg" +} diff --git a/src/packs/beastforms/feature_Aquatic_kQWWx9P3fCyGSVOI.json b/src/packs/beastforms/feature_Aquatic_kQWWx9P3fCyGSVOI.json new file mode 100644 index 00000000..fc8862c7 --- /dev/null +++ b/src/packs/beastforms/feature_Aquatic_kQWWx9P3fCyGSVOI.json @@ -0,0 +1,34 @@ +{ + "name": "Aquatic", + "type": "feature", + "img": "icons/magic/water/bubbles-air-water-light.webp", + "system": { + "description": "You can breathe and move naturally underwater.
", + "resource": null, + "actions": {}, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753575456927, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "kQWWx9P3fCyGSVOI", + "sort": 2100000, + "_key": "!items!kQWWx9P3fCyGSVOI" +} diff --git a/src/packs/beastforms/feature_Armored_Shell_nDQZdIF2epKlhauX.json b/src/packs/beastforms/feature_Armored_Shell_nDQZdIF2epKlhauX.json new file mode 100644 index 00000000..5ff9b259 --- /dev/null +++ b/src/packs/beastforms/feature_Armored_Shell_nDQZdIF2epKlhauX.json @@ -0,0 +1,155 @@ +{ + "name": "Armored Shell", + "type": "feature", + "img": "icons/creatures/reptiles/turtle-shell-glowing-green.webp", + "system": { + "description": "Your hardened exterior gives you resistance to physical damage. Additionally, mark an Armor Slot to retract into your shell. While in your shell, physical damage is reduced by a number equal to your Armor Score (after applying resistance), but you can’t perform other actions without leaving this form.
", + "resource": null, + "actions": { + "15XSCpCAZ2JLspmN": { + "type": "effect", + "_id": "15XSCpCAZ2JLspmN", + "systemPath": "actions", + "description": "Mark an Armor Slot to retract into your shell. While in your shell, physical damage is reduced by a number equal to your Armor Score (after applying resistance), but you can’t perform other actions without leaving this form.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "armor", + "value": 1, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "OY3lEB3vuDKNLzxv", + "onSave": false + } + ], + "target": { + "type": "self", + "amount": null + }, + "name": "Retract", + "img": "icons/creatures/reptiles/turtle-shell-glowing-green.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Armored Shell", + "type": "base", + "_id": "XFmEC0kDQJNrGbtr", + "img": "icons/creatures/reptiles/turtle-shell-glowing-green.webp", + "system": {}, + "changes": [ + { + "key": "system.resistance.physical.resistance", + "mode": 5, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "Your hardened exterior gives you resistance to physical damage.
", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!nDQZdIF2epKlhauX.XFmEC0kDQJNrGbtr" + }, + { + "name": "Retracted", + "img": "icons/creatures/reptiles/turtle-shell-glowing-green.webp", + "origin": "Item.WqNiQYeaRVGPWpm0", + "transfer": false, + "_id": "OY3lEB3vuDKNLzxv", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.resistance.physical.reduction", + "mode": 2, + "value": "@system.armorScore", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "While in your shell, physical damage is reduced by a number equal to your Armor Score (after applying resistance), but you can’t perform other actions without leaving this form.
", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!nDQZdIF2epKlhauX.OY3lEB3vuDKNLzxv" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753580983699, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "nDQZdIF2epKlhauX", + "sort": 2200000, + "_key": "!items!nDQZdIF2epKlhauX" +} diff --git a/src/packs/beastforms/feature_Bird_s_Eye_View_FNKQlWQcArSorMPK.json b/src/packs/beastforms/feature_Bird_s_Eye_View_FNKQlWQcArSorMPK.json new file mode 100644 index 00000000..83fdfab1 --- /dev/null +++ b/src/packs/beastforms/feature_Bird_s_Eye_View_FNKQlWQcArSorMPK.json @@ -0,0 +1,57 @@ +{ + "name": "Bird's-Eye View", + "type": "feature", + "img": "icons/creatures/eyes/humanoid-single-red-brown.webp", + "system": { + "description": "You can fly at will. Once per rest while you are airborne, you can ask the GM a question about the scene below you without needing to roll. The first time a character makes a roll to act on this information, they gain advantage on the roll.
", + "resource": null, + "actions": { + "JRCE5826Yhh09aaI": { + "type": "effect", + "_id": "JRCE5826Yhh09aaI", + "systemPath": "actions", + "description": "Once per rest while you are airborne, you can ask the GM a question about the scene below you without needing to roll. The first time a character makes a roll to act on this information, they gain advantage on the roll.
", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": 0, + "max": 1, + "recovery": "shortRest" + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Ask Question", + "img": "icons/creatures/eyes/humanoid-single-red-brown.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753624947561, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "FNKQlWQcArSorMPK", + "sort": 1400000, + "_key": "!items!FNKQlWQcArSorMPK" +} diff --git a/src/packs/beastforms/feature_Cannonball_jp5KpPRBFBOIs46Q.json b/src/packs/beastforms/feature_Cannonball_jp5KpPRBFBOIs46Q.json new file mode 100644 index 00000000..7b714c75 --- /dev/null +++ b/src/packs/beastforms/feature_Cannonball_jp5KpPRBFBOIs46Q.json @@ -0,0 +1,87 @@ +{ + "name": "Cannonball", + "type": "feature", + "img": "icons/skills/movement/ball-spinning-blue.webp", + "system": { + "description": "Mark a Stress to allow an ally to throw or launch you at an adversary. To do so, the ally makes an attack roll using Agility or Strength (their choice) against a target within Close range. On a success, the adversary takes d12+2 physical damage using the thrower’s Proficiency. You can spend a Hope to target an additional adversary within Very Close range of the first. The second target takes half the damage dealt to the first target.
", + "resource": null, + "actions": { + "5Vxm8LyBHE1GYbsv": { + "type": "effect", + "_id": "5Vxm8LyBHE1GYbsv", + "systemPath": "actions", + "description": "Mark a Stress to allow an ally to throw or launch you at an adversary. To do so, the ally makes an attack roll using Agility or Strength (their choice) against a target within Close range. On a success, the adversary takes d12+2 physical damage using the thrower’s Proficiency.
", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": "any", + "amount": 1 + }, + "name": "Cannonball", + "img": "icons/skills/movement/ball-spinning-blue.webp", + "range": "close" + }, + "QCQzArBrajYi2D2I": { + "type": "effect", + "_id": "QCQzArBrajYi2D2I", + "systemPath": "actions", + "description": "You can spend a Hope to target an additional adversary within Very Close range of the first. The second target takes half the damage dealt to the first target.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Spend Hope", + "img": "icons/magic/defensive/shield-barrier-deflect-teal.webp", + "range": "veryClose" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753580984811, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "jp5KpPRBFBOIs46Q", + "sort": 1900000, + "_key": "!items!jp5KpPRBFBOIs46Q" +} diff --git a/src/packs/beastforms/feature_Carrier_YSolAjtv6Sfnai98.json b/src/packs/beastforms/feature_Carrier_EVOJTskJYf4rpuga.json similarity index 61% rename from src/packs/beastforms/feature_Carrier_YSolAjtv6Sfnai98.json rename to src/packs/beastforms/feature_Carrier_EVOJTskJYf4rpuga.json index 0ecd47f5..4a0dcae2 100644 --- a/src/packs/beastforms/feature_Carrier_YSolAjtv6Sfnai98.json +++ b/src/packs/beastforms/feature_Carrier_EVOJTskJYf4rpuga.json @@ -1,20 +1,20 @@ { - "type": "feature", "name": "Carrier", - "img": "icons/creatures/abilities/bull-head-horns-glowing.webp", + "type": "feature", + "img": "icons/environment/people/cavalry-heavy.webp", "system": { "description": "You can carry up to two willing allies with you when you move.
", "resource": null, + "actions": {}, "originItemType": null, "subType": null, - "originId": null, - "actions": [] + "originId": null }, "effects": [], "folder": "uU8bIoZvXge0rLaU", "ownership": { "default": 0, - "k0gmQFlvrPvlTtbh": 3 + "FecEtPuoQh6MpjQ0": 3 }, "flags": {}, "_stats": { @@ -24,11 +24,11 @@ "coreVersion": "13.346", "systemId": "daggerheart", "systemVersion": "0.0.1", - "createdTime": 1752976866309, - "modifiedTime": 1752976907469, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" + "createdTime": 1753617736331, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" }, - "_id": "YSolAjtv6Sfnai98", - "sort": 200000, - "_key": "!items!YSolAjtv6Sfnai98" + "_id": "EVOJTskJYf4rpuga", + "sort": 900000, + "_key": "!items!EVOJTskJYf4rpuga" } diff --git a/src/packs/beastforms/feature_Companion_0tlnxIxlIw2hl1UE.json b/src/packs/beastforms/feature_Companion_jhWSC5bNZyYUAA5Q.json similarity index 50% rename from src/packs/beastforms/feature_Companion_0tlnxIxlIw2hl1UE.json rename to src/packs/beastforms/feature_Companion_jhWSC5bNZyYUAA5Q.json index d7f35b73..b54e4a05 100644 --- a/src/packs/beastforms/feature_Companion_0tlnxIxlIw2hl1UE.json +++ b/src/packs/beastforms/feature_Companion_jhWSC5bNZyYUAA5Q.json @@ -1,20 +1,20 @@ { - "type": "feature", "name": "Companion", - "img": "icons/magic/life/heart-hand-gold-green-light.webp", + "type": "feature", + "img": "icons/magic/life/heart-glowing-red.webp", "system": { - "description": "When you Help an Ally, you can roll a d8 as your advantage die.
", + "description": "When you Help an Ally, you can roll a d8 as your advantage die.
", "resource": null, + "actions": {}, "originItemType": null, "subType": null, - "originId": null, - "actions": [] + "originId": null }, "effects": [], "folder": "uU8bIoZvXge0rLaU", "ownership": { "default": 0, - "k0gmQFlvrPvlTtbh": 3 + "FecEtPuoQh6MpjQ0": 3 }, "flags": {}, "_stats": { @@ -24,11 +24,11 @@ "coreVersion": "13.346", "systemId": "daggerheart", "systemVersion": "0.0.1", - "createdTime": 1752976848672, - "modifiedTime": 1752976908157, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" + "createdTime": 1753572888764, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" }, - "_id": "0tlnxIxlIw2hl1UE", - "sort": 0, - "_key": "!items!0tlnxIxlIw2hl1UE" + "_id": "jhWSC5bNZyYUAA5Q", + "sort": 2600000, + "_key": "!items!jhWSC5bNZyYUAA5Q" } diff --git a/src/packs/beastforms/feature_Deadly_Raptor_QQtQ77tos8ijTHag.json b/src/packs/beastforms/feature_Deadly_Raptor_QQtQ77tos8ijTHag.json new file mode 100644 index 00000000..d21facf5 --- /dev/null +++ b/src/packs/beastforms/feature_Deadly_Raptor_QQtQ77tos8ijTHag.json @@ -0,0 +1,34 @@ +{ + "name": "Deadly Raptor", + "type": "feature", + "img": "icons/creatures/claws/claw-talons-glowing-orange.webp", + "system": { + "description": "You can fly at will and move up to Far range as part of your action. When you move in a straight line into Melee range of a target from at least Close range and make an attack against that target in the same action, you can reroll all damage dice that rolled a result lower than your Proficiency.
", + "resource": null, + "actions": {}, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753628380597, + "modifiedTime": 1753628380597, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "QQtQ77tos8ijTHag", + "sort": 0, + "_key": "!items!QQtQ77tos8ijTHag" +} diff --git a/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json b/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json new file mode 100644 index 00000000..4e683d9a --- /dev/null +++ b/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json @@ -0,0 +1,157 @@ +{ + "name": "Demolish", + "type": "feature", + "img": "icons/magic/earth/barrier-stone-brown-green.webp", + "system": { + "description": "Spend a Hope to move up to Far range in a straight line and make an attack against all targets within Melee range of the line. Targets you succeed against take d8+10 physical damage using your Proficiency and are temporarily Vulnerable.
@Template[type:ray|range:f]
", + "resource": null, + "actions": { + "5SXMT39vrZoK7GBM": { + "type": "attack", + "_id": "5SXMT39vrZoK7GBM", + "systemPath": "actions", + "description": "Spend a Hope to move up to Far range in a straight line and make an attack against all targets within Melee range of the line. Targets you succeed against take d8+10 physical damage using your Proficiency and are temporarily Vulnerable.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "resultBased": false, + "value": { + "custom": { + "enabled": false + }, + "multiplier": "prof", + "dice": "d8", + "bonus": 10, + "flatMultiplier": 1 + }, + "applyTo": "hitPoints", + "type": [], + "base": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [ + { + "_id": "FXdFgEgqVl5gIWJS", + "onSave": false + } + ], + "roll": { + "type": "attack", + "trait": "strength", + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Attack", + "img": "icons/magic/earth/barrier-stone-brown-green.webp", + "range": "far" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Demolished", + "img": "icons/skills/wounds/injury-pain-body-orange.webp", + "origin": "Item.PkLs4PFO0HiCNVRH", + "transfer": false, + "_id": "FXdFgEgqVl5gIWJS", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [ + "vulnerable" + ], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!DfBXO8jTchwFG8dZ.FXdFgEgqVl5gIWJS" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753627699848, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "DfBXO8jTchwFG8dZ", + "sort": 100000, + "_key": "!items!DfBXO8jTchwFG8dZ" +} diff --git a/src/packs/beastforms/feature_Devastating_Strikes_HJbQcKWcFZ9NoFxs.json b/src/packs/beastforms/feature_Devastating_Strikes_HJbQcKWcFZ9NoFxs.json new file mode 100644 index 00000000..1c792e95 --- /dev/null +++ b/src/packs/beastforms/feature_Devastating_Strikes_HJbQcKWcFZ9NoFxs.json @@ -0,0 +1,65 @@ +{ + "name": "Devastating Strikes", + "type": "feature", + "img": "icons/skills/melee/blood-slash-foam-red.webp", + "system": { + "description": "When you deal Severe damage to a target within Melee range, you can mark a Stress to force them to mark an additional Hit Point.
", + "resource": null, + "actions": { + "Il2C9zALU6a1gGrg": { + "type": "effect", + "_id": "Il2C9zALU6a1gGrg", + "systemPath": "actions", + "description": "When you deal Severe damage to a target within Melee range, you can mark a Stress to force them to mark an additional Hit Point.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Mark Stress", + "img": "icons/skills/melee/blood-slash-foam-red.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753628206110, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "HJbQcKWcFZ9NoFxs", + "sort": 200000, + "_key": "!items!HJbQcKWcFZ9NoFxs" +} diff --git a/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json b/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json new file mode 100644 index 00000000..1de48d46 --- /dev/null +++ b/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json @@ -0,0 +1,89 @@ +{ + "name": "Elusive Prey", + "type": "feature", + "img": "icons/skills/movement/arrows-up-trio-red.webp", + "system": { + "description": "When an attack roll against you would succeed, you can mark a Stress and roll a d4. Add the result to your Evasion against this attack.
", + "resource": null, + "actions": { + "9lvrqQKTEB3NRwvM": { + "type": "attack", + "_id": "9lvrqQKTEB3NRwvM", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [], + "includeBase": false + }, + "target": { + "type": null, + "amount": null + }, + "effects": [], + "roll": { + "type": "diceSet", + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d4", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Mark Stress", + "img": "icons/skills/movement/arrows-up-trio-red.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753574925665, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "a7Qvmm14nx9BCysA", + "sort": 2300000, + "_key": "!items!a7Qvmm14nx9BCysA" +} diff --git a/src/packs/beastforms/feature_Evolved_MG21w4u5wXSGZ5WB.json b/src/packs/beastforms/feature_Evolved_MG21w4u5wXSGZ5WB.json deleted file mode 100644 index 520283bb..00000000 --- a/src/packs/beastforms/feature_Evolved_MG21w4u5wXSGZ5WB.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "type": "feature", - "name": "Evolved", - "img": "icons/creatures/abilities/dragon-breath-purple.webp", - "system": { - "description": "Pick a Tier 1 Beastform option and become a larger, more powerful version of that creature. While you’re in this form, you retain all traits and features from the original form and gain the following bonuses:
Spend a Hope to move up to Far range without rolling.
", + "resource": null, + "actions": { + "pn5p2ocVvVPzDyAX": { + "type": "effect", + "_id": "pn5p2ocVvVPzDyAX", + "systemPath": "actions", + "description": "Spend a Hope to move up to Far range without rolling.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Move", + "img": "icons/skills/movement/arrow-upward-yellow.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753621784810, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "GhHsSHOa509cwCvr", + "sort": 1000000, + "_key": "!items!GhHsSHOa509cwCvr" +} diff --git a/src/packs/beastforms/feature_Fragile_9ryNrYWjNtOT6DXN.json b/src/packs/beastforms/feature_Fragile_QFg1hNCEoKVDd9Zo.json similarity index 63% rename from src/packs/beastforms/feature_Fragile_9ryNrYWjNtOT6DXN.json rename to src/packs/beastforms/feature_Fragile_QFg1hNCEoKVDd9Zo.json index beae6eb2..e22b70b4 100644 --- a/src/packs/beastforms/feature_Fragile_9ryNrYWjNtOT6DXN.json +++ b/src/packs/beastforms/feature_Fragile_QFg1hNCEoKVDd9Zo.json @@ -1,20 +1,20 @@ { - "type": "feature", "name": "Fragile", - "img": "icons/magic/life/heart-broken-red.webp", + "type": "feature", + "img": "icons/magic/life/heart-pink.webp", "system": { "description": "When you take Major or greater damage, you drop out of Beastform.
", "resource": null, + "actions": {}, "originItemType": null, "subType": null, - "originId": null, - "actions": [] + "originId": null }, "effects": [], "folder": "uU8bIoZvXge0rLaU", "ownership": { "default": 0, - "k0gmQFlvrPvlTtbh": 3 + "FecEtPuoQh6MpjQ0": 3 }, "flags": {}, "_stats": { @@ -24,11 +24,11 @@ "coreVersion": "13.346", "systemId": "daggerheart", "systemVersion": "0.0.1", - "createdTime": 1752976855944, - "modifiedTime": 1752976909267, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" + "createdTime": 1753569754067, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" }, - "_id": "9ryNrYWjNtOT6DXN", - "sort": 150000, - "_key": "!items!9ryNrYWjNtOT6DXN" + "_id": "QFg1hNCEoKVDd9Zo", + "sort": 2500000, + "_key": "!items!QFg1hNCEoKVDd9Zo" } diff --git a/src/packs/beastforms/feature_Hobbling_Strike_8u0HkK3WgtU9lWYs.json b/src/packs/beastforms/feature_Hobbling_Strike_8u0HkK3WgtU9lWYs.json new file mode 100644 index 00000000..a46fd322 --- /dev/null +++ b/src/packs/beastforms/feature_Hobbling_Strike_8u0HkK3WgtU9lWYs.json @@ -0,0 +1,110 @@ +{ + "name": "Hobbling Strike", + "type": "feature", + "img": "icons/skills/wounds/bone-broken-knee-beam.webp", + "system": { + "description": "When you succeed on an attack against a target within Melee range, you can mark a Stress to make the target temporarily Vulnerable.
", + "resource": null, + "actions": { + "p8DESOMGA6dLwEMz": { + "type": "effect", + "_id": "p8DESOMGA6dLwEMz", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "2kKkV9zhfvqA2vlt", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Mark Stress", + "img": "icons/skills/wounds/bone-broken-knee-beam.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Hobbling Strike", + "img": "icons/skills/wounds/bone-broken-knee-beam.webp", + "origin": "Compendium.daggerheart.beastforms.Item.8u0HkK3WgtU9lWYs", + "transfer": false, + "_id": "2kKkV9zhfvqA2vlt", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [ + "vulnerable" + ], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753578616579, + "modifiedTime": 1753578640444, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_key": "!items.effects!8u0HkK3WgtU9lWYs.2kKkV9zhfvqA2vlt" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753575250590, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "8u0HkK3WgtU9lWYs", + "sort": 2400000, + "_key": "!items!8u0HkK3WgtU9lWYs" +} diff --git a/src/packs/beastforms/feature_Hollow_Bones_xVgmXhj2YgeqS1KK.json b/src/packs/beastforms/feature_Hollow_Bones_xVgmXhj2YgeqS1KK.json new file mode 100644 index 00000000..d358b416 --- /dev/null +++ b/src/packs/beastforms/feature_Hollow_Bones_xVgmXhj2YgeqS1KK.json @@ -0,0 +1,83 @@ +{ + "name": "Hollow Bones", + "type": "feature", + "img": "icons/skills/wounds/anatomy-bone-joint.webp", + "system": { + "description": "You gain a −2 penalty to your damage thresholds.
", + "resource": null, + "actions": {}, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Hollow Bones", + "type": "base", + "_id": "RM8wHu5GIF6zfF7V", + "img": "icons/skills/wounds/anatomy-bone-joint.webp", + "system": {}, + "changes": [ + { + "key": "system.damageThresholds.major", + "mode": 2, + "value": "-2", + "priority": null + }, + { + "key": "system.damageThresholds.severe", + "mode": 2, + "value": "-2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "You gain a −2 penalty to your damage thresholds.
", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!xVgmXhj2YgeqS1KK.RM8wHu5GIF6zfF7V" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753624948910, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "xVgmXhj2YgeqS1KK", + "sort": 1500000, + "_key": "!items!xVgmXhj2YgeqS1KK" +} diff --git a/src/packs/beastforms/feature_Agile_sef9mwD2eRLZ64oV.json b/src/packs/beastforms/feature_Massive_Stride_9QkZSeuEKgXtlpHc.json similarity index 52% rename from src/packs/beastforms/feature_Agile_sef9mwD2eRLZ64oV.json rename to src/packs/beastforms/feature_Massive_Stride_9QkZSeuEKgXtlpHc.json index 70fd6e11..17812c9d 100644 --- a/src/packs/beastforms/feature_Agile_sef9mwD2eRLZ64oV.json +++ b/src/packs/beastforms/feature_Massive_Stride_9QkZSeuEKgXtlpHc.json @@ -1,20 +1,20 @@ { + "name": "Massive Stride", "type": "feature", - "name": "Agile", "img": "icons/skills/movement/arrow-upward-blue.webp", "system": { - "description": "Your movement is silent, and you can spend a Hope to move up to Far range without rolling.
", + "description": "You can move up to Far range without rolling. You ignore rough terrain (at the GM’s discretion) due to your size.
", "resource": null, + "actions": {}, "originItemType": null, "subType": null, - "originId": null, - "actions": [] + "originId": null }, "effects": [], "folder": "uU8bIoZvXge0rLaU", "ownership": { "default": 0, - "k0gmQFlvrPvlTtbh": 3 + "FecEtPuoQh6MpjQ0": 3 }, "flags": {}, "_stats": { @@ -24,11 +24,11 @@ "coreVersion": "13.346", "systemId": "daggerheart", "systemVersion": "0.0.1", - "createdTime": 1752976877948, - "modifiedTime": 1752976906072, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" + "createdTime": 1753628207886, + "modifiedTime": 1753628207886, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" }, - "_id": "sef9mwD2eRLZ64oV", - "sort": 100000, - "_key": "!items!sef9mwD2eRLZ64oV" + "_id": "9QkZSeuEKgXtlpHc", + "sort": 0, + "_key": "!items!9QkZSeuEKgXtlpHc" } diff --git a/src/packs/beastforms/feature_Ocean_Master_tGDdEH40wyOCsFmH.json b/src/packs/beastforms/feature_Ocean_Master_tGDdEH40wyOCsFmH.json new file mode 100644 index 00000000..37716764 --- /dev/null +++ b/src/packs/beastforms/feature_Ocean_Master_tGDdEH40wyOCsFmH.json @@ -0,0 +1,100 @@ +{ + "name": "Ocean Master", + "type": "feature", + "img": "icons/creatures/fish/fish-bioluminous-blue.webp", + "system": { + "description": "You can breathe and move naturally underwater. When you succeed on an attack against a target within Melee range, you can temporarily Restrain them.
", + "resource": null, + "actions": { + "ge2koBRj4snhIzDA": { + "type": "effect", + "_id": "ge2koBRj4snhIzDA", + "systemPath": "actions", + "description": "When you succeed on an attack against a target within Melee range, you can temporarily Restrain them.
", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "6GBczj8REkDmgX2Q", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Restrain", + "img": "icons/creatures/fish/fish-bioluminous-blue.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Ocean Master", + "img": "icons/creatures/fish/fish-bioluminous-blue.webp", + "origin": "Item.5UbOIcuLE5Z3ViAm", + "transfer": false, + "_id": "6GBczj8REkDmgX2Q", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [ + "restrained" + ], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!tGDdEH40wyOCsFmH.6GBczj8REkDmgX2Q" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753628691739, + "modifiedTime": 1753628691739, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "tGDdEH40wyOCsFmH", + "sort": 0, + "_key": "!items!tGDdEH40wyOCsFmH" +} diff --git a/src/packs/beastforms/feature_Pack_Hunting_d3q8lfeiEMyTjusT.json b/src/packs/beastforms/feature_Pack_Hunting_d3q8lfeiEMyTjusT.json new file mode 100644 index 00000000..d6e58fcb --- /dev/null +++ b/src/packs/beastforms/feature_Pack_Hunting_d3q8lfeiEMyTjusT.json @@ -0,0 +1,34 @@ +{ + "name": "Pack Hunting", + "type": "feature", + "img": "icons/creatures/abilities/wolf-howl-moon-purple.webp", + "system": { + "description": "When you succeed on an attack against the same target as an ally who acts immediately before you, add a d8 to your damage roll.
", + "resource": null, + "actions": {}, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753575268237, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "d3q8lfeiEMyTjusT", + "sort": 1800000, + "_key": "!items!d3q8lfeiEMyTjusT" +} diff --git a/src/packs/beastforms/feature_Physical_Defense_StabkQ3BzWRZa8Tz.json b/src/packs/beastforms/feature_Physical_Defense_StabkQ3BzWRZa8Tz.json new file mode 100644 index 00000000..effdc34f --- /dev/null +++ b/src/packs/beastforms/feature_Physical_Defense_StabkQ3BzWRZa8Tz.json @@ -0,0 +1,83 @@ +{ + "name": "Physical Defense", + "type": "feature", + "img": "icons/commodities/leather/scales-green.webp", + "system": { + "description": "You gain a +3 bonus to your damage thresholds.
", + "resource": null, + "actions": {}, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Physical Defense", + "type": "base", + "_id": "hs9vWE92QQQx15ET", + "img": "icons/commodities/leather/scales-green.webp", + "system": {}, + "changes": [ + { + "key": "system.damageThresholds.major", + "mode": 2, + "value": "3", + "priority": null + }, + { + "key": "system.damageThresholds.severe", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "You gain a +3 bonus to your damage thresholds.
", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!StabkQ3BzWRZa8Tz.hs9vWE92QQQx15ET" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753626716369, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "StabkQ3BzWRZa8Tz", + "sort": 500000, + "_key": "!items!StabkQ3BzWRZa8Tz" +} diff --git a/src/packs/beastforms/feature_Rampage_8upqfcZvi7b5hRLE.json b/src/packs/beastforms/feature_Rampage_8upqfcZvi7b5hRLE.json new file mode 100644 index 00000000..0164d236 --- /dev/null +++ b/src/packs/beastforms/feature_Rampage_8upqfcZvi7b5hRLE.json @@ -0,0 +1,70 @@ +{ + "name": "Rampage", + "type": "feature", + "img": "icons/creatures/claws/claw-bear-paw-swipe-red.webp", + "system": { + "description": "When you roll a 1 on a damage die, you can roll a d10 and add the result to the damage roll. Additionally, before you make an attack roll, you can mark a Stress to gain a +1 bonus to your Proficiency for that attack.
", + "resource": null, + "actions": { + "N7IoOHpqcvcJNsJQ": { + "type": "effect", + "_id": "N7IoOHpqcvcJNsJQ", + "systemPath": "actions", + "description": "Before you make an attack roll, you can mark a Stress to gain a +1 bonus to your Proficiency for that attack.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "5TX0hHFKZHvBeWne", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Gain Proficiency", + "img": "icons/creatures/abilities/bear-roar-bite-brown.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753582591417, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "8upqfcZvi7b5hRLE", + "sort": 2000000, + "_key": "!items!8upqfcZvi7b5hRLE" +} diff --git a/src/packs/beastforms/feature_Snapping_Strike_Ky3rZD3sJMXYZOBC.json b/src/packs/beastforms/feature_Snapping_Strike_Ky3rZD3sJMXYZOBC.json new file mode 100644 index 00000000..c22dad6e --- /dev/null +++ b/src/packs/beastforms/feature_Snapping_Strike_Ky3rZD3sJMXYZOBC.json @@ -0,0 +1,109 @@ +{ + "name": "Snapping Strike", + "type": "feature", + "img": "icons/creatures/abilities/mouth-teeth-rows-red.webp", + "system": { + "description": "When you succeed on an attack against a target within Melee range, you can spend a Hope to clamp that opponent in your jaws, making them temporarily Restrained and Vulnerable.
", + "resource": null, + "actions": { + "ib94yYJ1HA0dm0VC": { + "type": "effect", + "_id": "ib94yYJ1HA0dm0VC", + "systemPath": "actions", + "description": "When you succeed on an attack against a target within Melee range, you can spend a Hope to clamp that opponent in your jaws, making them temporarily Restrained and Vulnerable.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "y3EsJuInxE7juNXT", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Spend Hope", + "img": "icons/creatures/abilities/mouth-teeth-rows-red.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Snapping Strike", + "img": "icons/creatures/abilities/mouth-teeth-rows-red.webp", + "origin": "Item.tTr76uJeCU2AJqMT", + "transfer": false, + "_id": "y3EsJuInxE7juNXT", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [ + "vulnerable", + "restrained" + ], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!Ky3rZD3sJMXYZOBC.y3EsJuInxE7juNXT" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753626717512, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "Ky3rZD3sJMXYZOBC", + "sort": 300000, + "_key": "!items!Ky3rZD3sJMXYZOBC" +} diff --git a/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json b/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json new file mode 100644 index 00000000..13ffe145 --- /dev/null +++ b/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json @@ -0,0 +1,158 @@ +{ + "name": "Takedown", + "type": "feature", + "img": "icons/creatures/abilities/paw-print-orange.webp", + "system": { + "description": "Mark a Stress to move into Melee range of a target and make an attack roll against them. On a success, you gain a +2 bonus to your Proficiency for this attack and the target must mark a Stress.
", + "resource": null, + "actions": { + "DKorr1QzvtBz7d9y": { + "type": "attack", + "_id": "DKorr1QzvtBz7d9y", + "systemPath": "actions", + "description": "Mark a Stress to move into Melee range of a target and make an attack roll against them. On a success, you gain a +2 bonus to your Proficiency for this attack and the target must mark a Stress.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "resultBased": false, + "value": { + "custom": { + "enabled": true, + "formula": "(@prof+2)@basicAttackDamageDice" + }, + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [], + "base": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": "attack", + "trait": "instinct", + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Attack", + "img": "icons/creatures/abilities/paw-print-orange.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Takedown", + "img": "icons/creatures/abilities/paw-print-orange.webp", + "origin": "Item.okjlLUwEdNOKeUk3", + "transfer": false, + "_id": "hE6ciIusvKEtUQ8U", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.proficiency", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!0ey4kM9ssj2otHvb.hE6ciIusvKEtUQ8U" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753621786000, + "modifiedTime": 1753643111609, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "0ey4kM9ssj2otHvb", + "sort": 600000, + "_key": "!items!0ey4kM9ssj2otHvb" +} diff --git a/src/packs/beastforms/feature_Thick_Hide_ZYbdXaWVj2zdcmaK.json b/src/packs/beastforms/feature_Thick_Hide_ZYbdXaWVj2zdcmaK.json new file mode 100644 index 00000000..62e74afd --- /dev/null +++ b/src/packs/beastforms/feature_Thick_Hide_ZYbdXaWVj2zdcmaK.json @@ -0,0 +1,83 @@ +{ + "name": "Thick Hide", + "type": "feature", + "img": "icons/commodities/leather/fur-brown-gold.webp", + "system": { + "description": "You gain a +2 bonus to your damage thresholds.
", + "resource": null, + "actions": {}, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Thick Hide", + "type": "base", + "_id": "ZoUJy8EOm9mVXuAw", + "img": "icons/commodities/leather/fur-brown-gold.webp", + "system": {}, + "changes": [ + { + "key": "system.damageThresholds.major", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.damageThresholds.severe", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "You gain a +2 bonus to your damage thresholds.
", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!ZYbdXaWVj2zdcmaK.ZoUJy8EOm9mVXuAw" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753582593100, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "ZYbdXaWVj2zdcmaK", + "sort": 1100000, + "_key": "!items!ZYbdXaWVj2zdcmaK" +} diff --git a/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json b/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json new file mode 100644 index 00000000..15dec8f3 --- /dev/null +++ b/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json @@ -0,0 +1,157 @@ +{ + "name": "Trample", + "type": "feature", + "img": "icons/environment/people/charge.webp", + "system": { + "description": "Mark a Stress to move up to Close range in a straight line and make an attack against all targets within Melee range of the line. Targets you succeed against take d8+1 physical damage using your Proficiency and are temporarily Vulnerable.
@Template[type:ray|range:close]
", + "resource": null, + "actions": { + "YCOTIv9IVEKpumbJ": { + "type": "attack", + "_id": "YCOTIv9IVEKpumbJ", + "systemPath": "actions", + "description": "Mark a Stress to move up to Close range in a straight line and make an attack against all targets within Melee range of the line. Targets you succeed against take d8+1 physical damage using your Proficiency and are temporarily Vulnerable.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "resultBased": false, + "value": { + "custom": { + "enabled": false + }, + "multiplier": "prof", + "dice": "d8", + "bonus": 1, + "flatMultiplier": 1 + }, + "applyTo": "hitPoints", + "type": [], + "base": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": null, + "amount": null + }, + "effects": [ + { + "_id": "LkekG4IngVW9rFjI", + "onSave": false + } + ], + "roll": { + "type": "attack", + "trait": "agility", + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Attack", + "img": "icons/environment/people/charge.webp", + "range": "close" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Trampled", + "img": "icons/skills/wounds/injury-pain-body-orange.webp", + "origin": "Item.7GMu72UEQ1LIIJAN", + "transfer": false, + "_id": "LkekG4IngVW9rFjI", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [ + "vulnerable" + ], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!A0lgd6eVEfX6oqSB.LkekG4IngVW9rFjI" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753617737349, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "A0lgd6eVEfX6oqSB", + "sort": 800000, + "_key": "!items!A0lgd6eVEfX6oqSB" +} diff --git a/src/packs/beastforms/feature_Trample_P6tWFIZzXWyekw6r.json b/src/packs/beastforms/feature_Trample_P6tWFIZzXWyekw6r.json deleted file mode 100644 index 9e1ca0c5..00000000 --- a/src/packs/beastforms/feature_Trample_P6tWFIZzXWyekw6r.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "type": "feature", - "name": "Trample", - "img": "icons/creatures/mammals/ox-bull-horned-glowing-orange.webp", - "system": { - "description": "Mark a Stress to move up to Close range in a straight line and make an attack against all targets within Melee range of the line. Targets you succeed against take [[/r d8+1]] physical damage using your Proficiency and are temporarily Vulnerable.
", - "resource": null, - "originItemType": null, - "subType": null, - "originId": null, - "actions": [] - }, - "effects": [], - "folder": "uU8bIoZvXge0rLaU", - "ownership": { - "default": 0, - "k0gmQFlvrPvlTtbh": 3 - }, - "flags": {}, - "_stats": { - "compendiumSource": null, - "duplicateSource": null, - "exportSource": null, - "coreVersion": "13.346", - "systemId": "daggerheart", - "systemVersion": "0.0.1", - "createdTime": 1752976867812, - "modifiedTime": 1752976976609, - "lastModifiedBy": "k0gmQFlvrPvlTtbh" - }, - "_id": "P6tWFIZzXWyekw6r", - "sort": -100000, - "_key": "!items!P6tWFIZzXWyekw6r" -} diff --git a/src/packs/beastforms/feature_Undaunted_ODudjX88Te4vDP57.json b/src/packs/beastforms/feature_Undaunted_ODudjX88Te4vDP57.json new file mode 100644 index 00000000..5137104d --- /dev/null +++ b/src/packs/beastforms/feature_Undaunted_ODudjX88Te4vDP57.json @@ -0,0 +1,83 @@ +{ + "name": "Undaunted", + "type": "feature", + "img": "icons/magic/life/heart-cross-strong-purple-orange.webp", + "system": { + "description": "You gain a +2 bonus to all your damage thresholds.
", + "resource": null, + "actions": {}, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Undaunted", + "type": "base", + "_id": "wVoUVQJ2Ik7CiUuV", + "img": "icons/magic/life/heart-cross-strong-purple-orange.webp", + "system": {}, + "changes": [ + { + "key": "system.damageThresholds.major", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.damageThresholds.severe", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "You gain a +2 bonus to all your damage thresholds.
", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!ODudjX88Te4vDP57.wVoUVQJ2Ik7CiUuV" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753627700926, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "ODudjX88Te4vDP57", + "sort": 400000, + "_key": "!items!ODudjX88Te4vDP57" +} diff --git a/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json b/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json new file mode 100644 index 00000000..98fe5e15 --- /dev/null +++ b/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json @@ -0,0 +1,81 @@ +{ + "name": "Unyielding", + "type": "feature", + "img": "icons/magic/defensive/shield-barrier-blue.webp", + "system": { + "description": "When you would mark an Armor Slot, roll a d6. On a result of 5 or higher, reduce the severity by one threshold without marking an Armor Slot.
", + "resource": null, + "actions": { + "hiGZCQpdTVqE5W4B": { + "type": "attack", + "_id": "hiGZCQpdTVqE5W4B", + "systemPath": "actions", + "description": "When you would mark an Armor Slot, roll a d6. On a result of 5 or higher, reduce the severity by one threshold without marking an Armor Slot.
", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [], + "includeBase": false + }, + "target": { + "type": null, + "amount": null + }, + "effects": [], + "roll": { + "type": "diceSet", + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": "aboveEqual", + "treshold": 5 + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Roll d6", + "img": "icons/magic/defensive/shield-barrier-blue.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753628692761, + "modifiedTime": 1753628692761, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "vEAQ4cfsoPmOv2Gg", + "sort": 0, + "_key": "!items!vEAQ4cfsoPmOv2Gg" +} diff --git a/src/packs/beastforms/feature_Venomous_Bite_2KlTnfzO03vneVS8.json b/src/packs/beastforms/feature_Venomous_Bite_2KlTnfzO03vneVS8.json new file mode 100644 index 00000000..bea17311 --- /dev/null +++ b/src/packs/beastforms/feature_Venomous_Bite_2KlTnfzO03vneVS8.json @@ -0,0 +1,99 @@ +{ + "name": "Venomous Bite", + "type": "feature", + "img": "icons/creatures/abilities/fang-tooth-poison-green.webp", + "system": { + "description": "When you succeed on an attack against a target within Melee range, the target becomes temporarily Poisoned. A Poisoned creature takes 1d10 direct physical damage each time they act.
", + "resource": null, + "actions": { + "eow90DYK6cUWOk7g": { + "type": "effect", + "_id": "eow90DYK6cUWOk7g", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "TTyAKKoUCoYXSMs4", + "onSave": false + } + ], + "target": { + "type": "any", + "amount": null + }, + "name": "Poison", + "img": "icons/creatures/abilities/fang-tooth-poison-green.webp", + "range": "melee" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Poisoned", + "img": "icons/creatures/abilities/fang-tooth-poison-green.webp", + "origin": "Item.O4IphLKL9ICiNwQR", + "transfer": false, + "_id": "TTyAKKoUCoYXSMs4", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "A Poisoned creature takes 1d10 direct physical damage each time they act.
", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753576115749 + }, + "_key": "!items.effects!2KlTnfzO03vneVS8.TTyAKKoUCoYXSMs4" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753576004121, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "2KlTnfzO03vneVS8", + "sort": 1600000, + "_key": "!items!2KlTnfzO03vneVS8" +} diff --git a/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json b/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json new file mode 100644 index 00000000..11e60f58 --- /dev/null +++ b/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json @@ -0,0 +1,122 @@ +{ + "name": "Venomous Strike", + "type": "feature", + "img": "icons/creatures/abilities/fang-tooth-poison-green.webp", + "system": { + "description": "Make an attack against any number of targets within Very Close range. On a success, a target is temporarily Poisoned. A Poisoned creature takes 1d10 physical direct damage each time they act.
", + "resource": null, + "actions": { + "igRoXxgaTT9tBQS7": { + "type": "attack", + "_id": "igRoXxgaTT9tBQS7", + "systemPath": "actions", + "description": "Make an attack against any number of targets within Very Close range. On a success, a target is temporarily Poisoned. A Poisoned creature takes 1d10 physical direct damage each time they act.
", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [ + { + "_id": "1iQPj96LqUNkRaxE", + "onSave": false + } + ], + "roll": { + "type": "attack", + "trait": "finesse", + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Attack", + "img": "icons/creatures/abilities/fang-tooth-poison-green.webp", + "range": "veryClose" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Poisoned", + "img": "icons/creatures/abilities/fang-tooth-poison-green.webp", + "origin": "Item.bgcxeOs3RRGinrNW", + "transfer": false, + "_id": "1iQPj96LqUNkRaxE", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "A Poisoned creature takes 1d10 physical direct damage each time they act.
", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!uW3853pViM9VAfHb.1iQPj96LqUNkRaxE" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753621248553, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "uW3853pViM9VAfHb", + "sort": 1300000, + "_key": "!items!uW3853pViM9VAfHb" +} diff --git a/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json b/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json new file mode 100644 index 00000000..9c862f3e --- /dev/null +++ b/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json @@ -0,0 +1,138 @@ +{ + "name": "Vicious Maul", + "type": "feature", + "img": "icons/creatures/abilities/mouth-teeth-long-red.webp", + "system": { + "description": "When you succeed on an attack against a target, you can spend a Hope to make them temporarily Vulnerable and gain a +1 bonus to your Proficiency for this attack.
", + "resource": null, + "actions": { + "Cc53vyYz5ggKdIbx": { + "type": "damage", + "_id": "Cc53vyYz5ggKdIbx", + "systemPath": "actions", + "description": "When you succeed on an attack against a target within Melee range, you can spend a Hope to clamp that opponent in your jaws, making them temporarily Restrained and Vulnerable.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "(@prof+1)@basicAttackDamageDice + @system.rules.attack.damage.bonus" + }, + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": 1 + }, + "effects": [ + { + "_id": "MIAh9XNwDXGDktCm", + "onSave": false + } + ], + "name": "Spend Hope", + "img": "icons/creatures/abilities/mouth-teeth-long-red.webp", + "range": "melee" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Mauled", + "img": "icons/creatures/abilities/mouth-teeth-long-red.webp", + "origin": "Item.Dm6ej7DznOIQKcR9", + "transfer": false, + "_id": "MIAh9XNwDXGDktCm", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [ + "vulnerable" + ], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": null + }, + "_key": "!items.effects!jYUBi7yLHap5ljpa.MIAh9XNwDXGDktCm" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625637943, + "modifiedTime": 1753643084893, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "jYUBi7yLHap5ljpa", + "sort": 700000, + "_key": "!items!jYUBi7yLHap5ljpa" +} diff --git a/src/packs/beastforms/feature_Warning_Hiss_cTlqpQZPy5TvdDAT.json b/src/packs/beastforms/feature_Warning_Hiss_cTlqpQZPy5TvdDAT.json new file mode 100644 index 00000000..5380f968 --- /dev/null +++ b/src/packs/beastforms/feature_Warning_Hiss_cTlqpQZPy5TvdDAT.json @@ -0,0 +1,65 @@ +{ + "name": "Warning Hiss", + "type": "feature", + "img": "icons/creatures/reptiles/snake-fangs-bite-green-yellow.webp", + "system": { + "description": "Mark a Stress to force any number of targets within Melee range to move back to Very Close range.
", + "resource": null, + "actions": { + "D9YmUP1aeiCzNxcC": { + "type": "effect", + "_id": "D9YmUP1aeiCzNxcC", + "systemPath": "actions", + "description": "Mark a Stress to force any number of targets within Melee range to move back to Very Close range.
", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Mark Stress", + "img": "icons/creatures/reptiles/snake-fangs-bite-green-yellow.webp", + "range": "" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753621249622, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "cTlqpQZPy5TvdDAT", + "sort": 1200000, + "_key": "!items!cTlqpQZPy5TvdDAT" +} diff --git a/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json b/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json new file mode 100644 index 00000000..4f6e6717 --- /dev/null +++ b/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json @@ -0,0 +1,125 @@ +{ + "name": "Webslinger", + "type": "feature", + "img": "icons/creatures/webs/webthin-blue.webp", + "system": { + "description": "You can create a strong web material useful for both adventuring and battle. The web is resilient enough to support one creature. You can temporarily Restrain a target within Close range by succeeding on a Finesse Roll against them.
", + "resource": null, + "actions": { + "vRU6xutkp3VYxZ0i": { + "type": "attack", + "_id": "vRU6xutkp3VYxZ0i", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [], + "includeBase": false + }, + "target": { + "type": "any", + "amount": 1 + }, + "effects": [ + { + "_id": "cBJueH89gNvvDKfQ", + "onSave": false + } + ], + "roll": { + "type": "trait", + "trait": "finesse", + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Restrain", + "img": "icons/creatures/webs/webthin-blue.webp", + "range": "close" + } + }, + "originItemType": null, + "subType": null, + "originId": null + }, + "effects": [ + { + "name": "Webslinger", + "img": "icons/creatures/webs/webthin-blue.webp", + "origin": "Item.6SkEDPsHvLHQmNts", + "transfer": false, + "_id": "cBJueH89gNvvDKfQ", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [ + "restrained" + ], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "lastModifiedBy": "FecEtPuoQh6MpjQ0", + "modifiedTime": 1753576128082 + }, + "_key": "!items.effects!D73fS1iM4SZPFimu.cBJueH89gNvvDKfQ" + } + ], + "folder": "uU8bIoZvXge0rLaU", + "ownership": { + "default": 0, + "FecEtPuoQh6MpjQ0": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753576005315, + "modifiedTime": 1753628206133, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_id": "D73fS1iM4SZPFimu", + "sort": 1700000, + "_key": "!items!D73fS1iM4SZPFimu" +} diff --git a/src/packs/beastforms/folders_Tier_1_nhnRdZgSSrE9myIX.json b/src/packs/beastforms/folders_Tier_1_nhnRdZgSSrE9myIX.json new file mode 100644 index 00000000..00e75d82 --- /dev/null +++ b/src/packs/beastforms/folders_Tier_1_nhnRdZgSSrE9myIX.json @@ -0,0 +1,23 @@ +{ + "type": "Item", + "folder": null, + "name": "Tier 1", + "color": null, + "sorting": "a", + "_id": "nhnRdZgSSrE9myIX", + "description": "", + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753570919425, + "modifiedTime": 1753570919425, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_key": "!folders!nhnRdZgSSrE9myIX" +} diff --git a/src/packs/beastforms/folders_Tier_2_Rd30i5G7Pg0HtEUT.json b/src/packs/beastforms/folders_Tier_2_Rd30i5G7Pg0HtEUT.json new file mode 100644 index 00000000..d8758630 --- /dev/null +++ b/src/packs/beastforms/folders_Tier_2_Rd30i5G7Pg0HtEUT.json @@ -0,0 +1,23 @@ +{ + "type": "Item", + "folder": null, + "name": "Tier 2", + "color": null, + "sorting": "a", + "_id": "Rd30i5G7Pg0HtEUT", + "description": "", + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753570924620, + "modifiedTime": 1753570924620, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_key": "!folders!Rd30i5G7Pg0HtEUT" +} diff --git a/src/packs/beastforms/folders_Tier_3_9uPPuDAUXrVYquTw.json b/src/packs/beastforms/folders_Tier_3_9uPPuDAUXrVYquTw.json new file mode 100644 index 00000000..7781983a --- /dev/null +++ b/src/packs/beastforms/folders_Tier_3_9uPPuDAUXrVYquTw.json @@ -0,0 +1,23 @@ +{ + "type": "Item", + "folder": null, + "name": "Tier 3", + "color": null, + "sorting": "a", + "_id": "9uPPuDAUXrVYquTw", + "description": "", + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753570927631, + "modifiedTime": 1753570927631, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_key": "!folders!9uPPuDAUXrVYquTw" +} diff --git a/src/packs/beastforms/folders_Tier_4_UQEr5SAm2Z1Aih1S.json b/src/packs/beastforms/folders_Tier_4_UQEr5SAm2Z1Aih1S.json new file mode 100644 index 00000000..8ff6c2e9 --- /dev/null +++ b/src/packs/beastforms/folders_Tier_4_UQEr5SAm2Z1Aih1S.json @@ -0,0 +1,23 @@ +{ + "type": "Item", + "folder": null, + "name": "Tier 4", + "color": null, + "sorting": "a", + "_id": "UQEr5SAm2Z1Aih1S", + "description": "", + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.346", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753570930292, + "modifiedTime": 1753570930292, + "lastModifiedBy": "FecEtPuoQh6MpjQ0" + }, + "_key": "!folders!UQEr5SAm2Z1Aih1S" +} diff --git a/src/packs/items/consumables/consumable_Acidpaste_cfVFmS8vT9dbq9s1.json b/src/packs/items/consumables/consumable_Acidpaste_cfVFmS8vT9dbq9s1.json new file mode 100644 index 00000000..b24eac54 --- /dev/null +++ b/src/packs/items/consumables/consumable_Acidpaste_cfVFmS8vT9dbq9s1.json @@ -0,0 +1,55 @@ +{ + "name": "Acidpaste", + "type": "consumable", + "_id": "cfVFmS8vT9dbq9s1", + "img": "icons/commodities/materials/bowl-powder-teal.webp", + "system": { + "description": "This paste eats away walls and other surfaces in bright flashes.
", + "quantity": 1, + "actions": { + "FQ2Ty0pP3z6JrBr6": { + "type": "effect", + "_id": "FQ2Ty0pP3z6JrBr6", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/commodities/materials/bowl-powder-teal.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753590344700, + "modifiedTime": 1753590379629, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!cfVFmS8vT9dbq9s1" +} diff --git a/src/packs/items/consumables/consumable_Armor_Stitcher_VlbsCjvvLNfTzNXb.json b/src/packs/items/consumables/consumable_Armor_Stitcher_VlbsCjvvLNfTzNXb.json new file mode 100644 index 00000000..d30b9b39 --- /dev/null +++ b/src/packs/items/consumables/consumable_Armor_Stitcher_VlbsCjvvLNfTzNXb.json @@ -0,0 +1,32 @@ +{ + "name": "Armor Stitcher", + "type": "consumable", + "_id": "VlbsCjvvLNfTzNXb", + "img": "icons/skills/trades/textiles-stitching-leather-brown.webp", + "system": { + "description": "You can use this stitcher to spend any number of Hope and clear that many Armor Slots.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753588973384, + "modifiedTime": 1753623129674, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!VlbsCjvvLNfTzNXb" +} diff --git a/src/packs/items/consumables/consumable_Attune_Potion_JGD3M9hBHtVAA8XP.json b/src/packs/items/consumables/consumable_Attune_Potion_JGD3M9hBHtVAA8XP.json new file mode 100644 index 00000000..6ec2165a --- /dev/null +++ b/src/packs/items/consumables/consumable_Attune_Potion_JGD3M9hBHtVAA8XP.json @@ -0,0 +1,105 @@ +{ + "name": "Attune Potion", + "type": "consumable", + "_id": "JGD3M9hBHtVAA8XP", + "img": "icons/consumables/potions/bottle-conical-corked-purple.webp", + "system": { + "description": "You gain a +1 bonus to your next Instinct Roll.
", + "quantity": 1, + "actions": { + "aiyNOQZbVpTDagXy": { + "type": "effect", + "_id": "aiyNOQZbVpTDagXy", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "I5vgALTNDVApxy9d", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/bottle-conical-corked-purple.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Attune Potion", + "img": "icons/consumables/potions/bottle-conical-corked-purple.webp", + "origin": "Compendium.daggerheart.consumables.Item.JGD3M9hBHtVAA8XP", + "transfer": false, + "_id": "I5vgALTNDVApxy9d", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.instinct.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587072840, + "modifiedTime": 1753587081602, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!JGD3M9hBHtVAA8XP.I5vgALTNDVApxy9d" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587033468, + "modifiedTime": 1753587890614, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!JGD3M9hBHtVAA8XP" +} diff --git a/src/packs/items/consumables/consumable_Blinding_Orb_eAXHdzA5qNPldOpn.json b/src/packs/items/consumables/consumable_Blinding_Orb_eAXHdzA5qNPldOpn.json new file mode 100644 index 00000000..ec74d7a2 --- /dev/null +++ b/src/packs/items/consumables/consumable_Blinding_Orb_eAXHdzA5qNPldOpn.json @@ -0,0 +1,100 @@ +{ + "name": "Blinding Orb", + "type": "consumable", + "_id": "eAXHdzA5qNPldOpn", + "img": "icons/magic/light/explosion-star-large-blue-yellow.webp", + "system": { + "description": "You can activate this orb to create a flash of bright light. All targets within Close range become Vulnerable until they mark HP.
", + "quantity": 1, + "actions": { + "vk4dE0C8bjNdTwAF": { + "type": "effect", + "_id": "vk4dE0C8bjNdTwAF", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "nryJhrF26hyFQUxH", + "onSave": false + } + ], + "target": { + "type": "any", + "amount": null + }, + "name": "Activate", + "img": "icons/magic/light/explosion-star-large-blue-yellow.webp", + "range": "close" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Blinding Orb", + "img": "icons/magic/light/explosion-star-large-blue-yellow.webp", + "origin": "Compendium.daggerheart.consumables.Item.eAXHdzA5qNPldOpn", + "transfer": false, + "_id": "nryJhrF26hyFQUxH", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [ + "vulnerable" + ], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592689854, + "modifiedTime": 1753592707034, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!eAXHdzA5qNPldOpn.nryJhrF26hyFQUxH" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592512731, + "modifiedTime": 1753592689875, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!eAXHdzA5qNPldOpn" +} diff --git a/src/packs/items/consumables/consumable_Blood_of_the_Yorgi_pDGzmczoTlKGmKgd.json b/src/packs/items/consumables/consumable_Blood_of_the_Yorgi_pDGzmczoTlKGmKgd.json new file mode 100644 index 00000000..3a89973d --- /dev/null +++ b/src/packs/items/consumables/consumable_Blood_of_the_Yorgi_pDGzmczoTlKGmKgd.json @@ -0,0 +1,55 @@ +{ + "name": "Blood of the Yorgi", + "type": "consumable", + "_id": "pDGzmczoTlKGmKgd", + "img": "icons/consumables/potions/potion-tube-corked-bat-gold-red.webp", + "system": { + "description": "You can drink this blood to disappear from where you are and immediately reappear at a point you can see within Very Far range.
", + "quantity": 1, + "actions": { + "6QGfkGkFqqzuVOOY": { + "type": "effect", + "_id": "6QGfkGkFqqzuVOOY", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/potion-tube-corked-bat-gold-red.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589954973, + "modifiedTime": 1753589985716, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!pDGzmczoTlKGmKgd" +} diff --git a/src/packs/items/consumables/consumable_Bolster_Potion_FOPQNqXbiVO0ilYL.json b/src/packs/items/consumables/consumable_Bolster_Potion_FOPQNqXbiVO0ilYL.json new file mode 100644 index 00000000..2609a130 --- /dev/null +++ b/src/packs/items/consumables/consumable_Bolster_Potion_FOPQNqXbiVO0ilYL.json @@ -0,0 +1,105 @@ +{ + "name": "Bolster Potion", + "type": "consumable", + "_id": "FOPQNqXbiVO0ilYL", + "img": "icons/consumables/potions/potion-vial-tube-yellow.webp", + "system": { + "description": "You gain a +1 bonus to your next Strength Roll.
", + "quantity": 1, + "actions": { + "YqbQKTgblItoZOm8": { + "type": "effect", + "_id": "YqbQKTgblItoZOm8", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "HVCJp9Tkhr1i4Oc1", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/potion-vial-tube-yellow.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Bolster Potion", + "img": "icons/consumables/potions/potion-vial-tube-yellow.webp", + "origin": "Compendium.daggerheart.consumables.Item.FOPQNqXbiVO0ilYL", + "transfer": false, + "_id": "HVCJp9Tkhr1i4Oc1", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.strength.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753586918808, + "modifiedTime": 1753586928363, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!FOPQNqXbiVO0ilYL.HVCJp9Tkhr1i4Oc1" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753586850134, + "modifiedTime": 1753587920117, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!FOPQNqXbiVO0ilYL" +} diff --git a/src/packs/items/consumables/consumable_Bonding_Honey_PfQvqopXgvroBklL.json b/src/packs/items/consumables/consumable_Bonding_Honey_PfQvqopXgvroBklL.json new file mode 100644 index 00000000..e57b63cb --- /dev/null +++ b/src/packs/items/consumables/consumable_Bonding_Honey_PfQvqopXgvroBklL.json @@ -0,0 +1,55 @@ +{ + "name": "Bonding Honey", + "type": "consumable", + "_id": "PfQvqopXgvroBklL", + "img": "icons/consumables/food/soup-broth-bowl-wooden-yellow.webp", + "system": { + "description": "This honey can be used to glue two objects together permanently.
", + "quantity": 1, + "actions": { + "SWrgUGHIWCXpED1b": { + "type": "effect", + "_id": "SWrgUGHIWCXpED1b", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/consumables/food/soup-broth-bowl-wooden-yellow.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592033119, + "modifiedTime": 1753592067178, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!PfQvqopXgvroBklL" +} diff --git a/src/packs/items/consumables/consumable_Bridge_Seed_RrIasiMCt6mqVTps.json b/src/packs/items/consumables/consumable_Bridge_Seed_RrIasiMCt6mqVTps.json new file mode 100644 index 00000000..9390ce16 --- /dev/null +++ b/src/packs/items/consumables/consumable_Bridge_Seed_RrIasiMCt6mqVTps.json @@ -0,0 +1,55 @@ +{ + "name": "Bridge Seed", + "type": "consumable", + "_id": "RrIasiMCt6mqVTps", + "img": "icons/consumables/plants/leaf-old-dried-curled-green.webp", + "system": { + "description": "Thick vines grow from your location to a point of your choice within Far range, allowing you to climb up or across them. The vines dissipate on your next short rest.
", + "quantity": 1, + "actions": { + "dk7fhkfA4m5lqNWB": { + "type": "effect", + "_id": "dk7fhkfA4m5lqNWB", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Plant", + "img": "icons/consumables/plants/leaf-old-dried-curled-green.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753591685990, + "modifiedTime": 1753591826807, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!RrIasiMCt6mqVTps" +} diff --git a/src/packs/items/consumables/consumable_Channelstone_IKMVQ6VwtapwoUim.json b/src/packs/items/consumables/consumable_Channelstone_IKMVQ6VwtapwoUim.json new file mode 100644 index 00000000..21952554 --- /dev/null +++ b/src/packs/items/consumables/consumable_Channelstone_IKMVQ6VwtapwoUim.json @@ -0,0 +1,55 @@ +{ + "name": "Channelstone", + "type": "consumable", + "_id": "IKMVQ6VwtapwoUim", + "img": "icons/commodities/stone/engraved-symbol-water-grey.webp", + "system": { + "description": "You can use this stone to take a spell or grimoire from your vault, use it once, and return it to your vault.
", + "quantity": 1, + "actions": { + "X4KtBG5Uve09hRoj": { + "type": "effect", + "_id": "X4KtBG5Uve09hRoj", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/commodities/stone/engraved-symbol-water-grey.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753590192533, + "modifiedTime": 1753590231535, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!IKMVQ6VwtapwoUim" +} diff --git a/src/packs/items/consumables/consumable_Charm_Potion_CVBbFfOY75YwyQsp.json b/src/packs/items/consumables/consumable_Charm_Potion_CVBbFfOY75YwyQsp.json new file mode 100644 index 00000000..94cfbcb9 --- /dev/null +++ b/src/packs/items/consumables/consumable_Charm_Potion_CVBbFfOY75YwyQsp.json @@ -0,0 +1,105 @@ +{ + "name": "Charm Potion", + "type": "consumable", + "_id": "CVBbFfOY75YwyQsp", + "img": "icons/consumables/potions/potion-tube-corked-blue.webp", + "system": { + "description": "You gain a +1 bonus to your next Presence Roll.
", + "quantity": 1, + "actions": { + "2trd3JYIb527LIrn": { + "type": "effect", + "_id": "2trd3JYIb527LIrn", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "COrKb7gBin4Ro6r6", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/potion-tube-corked-blue.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Charm Potion", + "img": "icons/consumables/potions/potion-tube-corked-blue.webp", + "origin": "Compendium.daggerheart.consumables.Item.CVBbFfOY75YwyQsp", + "transfer": false, + "_id": "COrKb7gBin4Ro6r6", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.presence.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587164842, + "modifiedTime": 1753587173489, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!CVBbFfOY75YwyQsp.COrKb7gBin4Ro6r6" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587097370, + "modifiedTime": 1753587932738, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!CVBbFfOY75YwyQsp" +} diff --git a/src/packs/items/consumables/consumable_Circle_of_the_Void_elsyP6VhHw1JjGSl.json b/src/packs/items/consumables/consumable_Circle_of_the_Void_elsyP6VhHw1JjGSl.json new file mode 100644 index 00000000..207e3c4d --- /dev/null +++ b/src/packs/items/consumables/consumable_Circle_of_the_Void_elsyP6VhHw1JjGSl.json @@ -0,0 +1,63 @@ +{ + "name": "Circle of the Void", + "type": "consumable", + "_id": "elsyP6VhHw1JjGSl", + "img": "icons/magic/unholy/orb-glowing-purple.webp", + "system": { + "description": "Mark a Stress to create a void that extends up to Far range. No magic can be cast inside the void, and creatures within the void are immune to magic damage.
", + "quantity": 1, + "actions": { + "ovR11FWCpXaFMPVx": { + "type": "effect", + "_id": "ovR11FWCpXaFMPVx", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/magic/unholy/orb-glowing-purple.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753590692159, + "modifiedTime": 1753590776732, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!elsyP6VhHw1JjGSl" +} diff --git a/src/packs/items/consumables/consumable_Control_Potion_eeBhZSGLjuNZuJuI.json b/src/packs/items/consumables/consumable_Control_Potion_eeBhZSGLjuNZuJuI.json new file mode 100644 index 00000000..274efd2b --- /dev/null +++ b/src/packs/items/consumables/consumable_Control_Potion_eeBhZSGLjuNZuJuI.json @@ -0,0 +1,105 @@ +{ + "name": "Control Potion", + "type": "consumable", + "_id": "eeBhZSGLjuNZuJuI", + "img": "icons/consumables/potions/flask-corked-blue.webp", + "system": { + "description": "You gain a +1 bonus to your next Finesse Roll.
", + "quantity": 1, + "actions": { + "l5dx5uYsH0btLDJq": { + "type": "effect", + "_id": "l5dx5uYsH0btLDJq", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "1VAQYZ1YYc9ew9UR", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/flask-corked-blue.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Control Potion", + "img": "icons/consumables/potions/flask-corked-blue.webp", + "origin": "Compendium.daggerheart.consumables.Item.eeBhZSGLjuNZuJuI", + "transfer": false, + "_id": "1VAQYZ1YYc9ew9UR", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.finesse.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587008395, + "modifiedTime": 1753587017580, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!eeBhZSGLjuNZuJuI.1VAQYZ1YYc9ew9UR" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753586944889, + "modifiedTime": 1753587943049, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!eeBhZSGLjuNZuJuI" +} diff --git a/src/packs/items/consumables/consumable_Death_Tea_xDnJeF1grkmKck8Q.json b/src/packs/items/consumables/consumable_Death_Tea_xDnJeF1grkmKck8Q.json new file mode 100644 index 00000000..eafe74d0 --- /dev/null +++ b/src/packs/items/consumables/consumable_Death_Tea_xDnJeF1grkmKck8Q.json @@ -0,0 +1,55 @@ +{ + "name": "Death Tea", + "type": "consumable", + "_id": "xDnJeF1grkmKck8Q", + "img": "icons/consumables/drinks/wine-amphora-clay-gray.webp", + "system": { + "description": "After you drink this tea, you instantly kill your target when you critically succeed on an attack. If you don’t critically succeed on an attack before your next long rest, you die.
", + "quantity": 1, + "actions": { + "U7da5R4pgVkEQJVj": { + "type": "effect", + "_id": "U7da5R4pgVkEQJVj", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/drinks/wine-amphora-clay-gray.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592717630, + "modifiedTime": 1753592777582, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!xDnJeF1grkmKck8Q" +} diff --git a/src/packs/items/consumables/consumable_Dragonbloom_Tea_wM18PWWW2Ami4fBG.json b/src/packs/items/consumables/consumable_Dragonbloom_Tea_wM18PWWW2Ami4fBG.json new file mode 100644 index 00000000..da89cf7a --- /dev/null +++ b/src/packs/items/consumables/consumable_Dragonbloom_Tea_wM18PWWW2Ami4fBG.json @@ -0,0 +1,104 @@ +{ + "name": "Dragonbloom Tea", + "type": "consumable", + "_id": "wM18PWWW2Ami4fBG", + "img": "icons/consumables/drinks/tea-jug-gourd-brown.webp", + "system": { + "description": "You can drink this tea to unleash a fiery breath attack. Make an Instinct Roll against all adversaries in front of you within Close range. Targets you succeed against take d20 physical damage using your Proficiency.
", + "quantity": 1, + "actions": { + "rcHEz3ImUDwo6lPC": { + "type": "attack", + "_id": "rcHEz3ImUDwo6lPC", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "resultBased": false, + "value": { + "custom": { + "enabled": false + }, + "multiplier": "prof", + "dice": "d20", + "bonus": null, + "flatMultiplier": 1 + }, + "applyTo": "hitPoints", + "type": [], + "base": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "hostile", + "amount": null + }, + "effects": [], + "roll": { + "type": "trait", + "trait": "instinct", + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": "above", + "treshold": 1 + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Drink", + "img": "icons/consumables/drinks/tea-jug-gourd-brown.webp", + "range": "close" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753591525829, + "modifiedTime": 1753591674720, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!wM18PWWW2Ami4fBG" +} diff --git a/src/packs/items/consumables/consumable_Dripfang_Poison_eU8VpbWB2NHIL47n.json b/src/packs/items/consumables/consumable_Dripfang_Poison_eU8VpbWB2NHIL47n.json new file mode 100644 index 00000000..d11569cc --- /dev/null +++ b/src/packs/items/consumables/consumable_Dripfang_Poison_eU8VpbWB2NHIL47n.json @@ -0,0 +1,86 @@ +{ + "name": "Dripfang Poison", + "type": "consumable", + "_id": "eU8VpbWB2NHIL47n", + "img": "icons/consumables/potions/potion-jug-corked-skull-poison-brown-green.webp", + "system": { + "description": "A creature who consumes this poison takes 8d10 direct magic damage.
", + "quantity": 1, + "actions": { + "F8CUhhCuZMnXVCrw": { + "type": "damage", + "_id": "F8CUhhCuZMnXVCrw", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": false + }, + "multiplier": "flat", + "flatMultiplier": 8, + "dice": "d10", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [ + "magical" + ], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": null, + "amount": null + }, + "effects": [], + "name": "Consume", + "img": "icons/consumables/potions/potion-jug-corked-skull-poison-brown-green.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753590938047, + "modifiedTime": 1753591027903, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!eU8VpbWB2NHIL47n" +} diff --git a/src/packs/items/consumables/consumable_Enlighten_Potion_aWHSO2AqDufi7nL4.json b/src/packs/items/consumables/consumable_Enlighten_Potion_aWHSO2AqDufi7nL4.json new file mode 100644 index 00000000..9b4c1c0f --- /dev/null +++ b/src/packs/items/consumables/consumable_Enlighten_Potion_aWHSO2AqDufi7nL4.json @@ -0,0 +1,105 @@ +{ + "name": "Enlighten Potion", + "type": "consumable", + "_id": "aWHSO2AqDufi7nL4", + "img": "icons/consumables/potions/vial-cork-empty.webp", + "system": { + "description": "You gain a +1 bonus to your next Knowledge Roll.
", + "quantity": 1, + "actions": { + "F3K719gxEwQH697e": { + "type": "effect", + "_id": "F3K719gxEwQH697e", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "QNzVrDW73jF1d5wE", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/vial-cork-empty.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Enlighten Potion", + "img": "icons/consumables/potions/vial-cork-empty.webp", + "origin": "Compendium.daggerheart.consumables.Item.aWHSO2AqDufi7nL4", + "transfer": false, + "_id": "QNzVrDW73jF1d5wE", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.knowledge.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753588649848, + "modifiedTime": 1753588661474, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!aWHSO2AqDufi7nL4.QNzVrDW73jF1d5wE" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587185754, + "modifiedTime": 1753588649868, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!aWHSO2AqDufi7nL4" +} diff --git a/src/packs/items/consumables/consumable_Feast_of_Xuria_aX6NyxkNzu0LcJpt.json b/src/packs/items/consumables/consumable_Feast_of_Xuria_aX6NyxkNzu0LcJpt.json new file mode 100644 index 00000000..abea2847 --- /dev/null +++ b/src/packs/items/consumables/consumable_Feast_of_Xuria_aX6NyxkNzu0LcJpt.json @@ -0,0 +1,32 @@ +{ + "name": "Feast of Xuria", + "type": "consumable", + "_id": "aX6NyxkNzu0LcJpt", + "img": "icons/consumables/food/bowl-stew-tofu-potato-red.webp", + "system": { + "description": "You can eat this meal to clear all HP and Stress and gain 1d4 Hope.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753591925502, + "modifiedTime": 1753623203098, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!aX6NyxkNzu0LcJpt" +} diff --git a/src/packs/items/consumables/consumable_Featherbone_DpxEMpwfasEBpORU.json b/src/packs/items/consumables/consumable_Featherbone_DpxEMpwfasEBpORU.json new file mode 100644 index 00000000..acf378ed --- /dev/null +++ b/src/packs/items/consumables/consumable_Featherbone_DpxEMpwfasEBpORU.json @@ -0,0 +1,55 @@ +{ + "name": "Featherbone", + "type": "consumable", + "_id": "DpxEMpwfasEBpORU", + "img": "icons/commodities/bones/bones-stack-worn-brown.webp", + "system": { + "description": "You can use this bone to control your falling speed for a number of minutes equal to your level.
", + "quantity": 1, + "actions": { + "MC0EA6TDZpEHMz11": { + "type": "effect", + "_id": "MC0EA6TDZpEHMz11", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/commodities/bones/bones-stack-worn-brown.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753590624634, + "modifiedTime": 1753590684567, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!DpxEMpwfasEBpORU" +} diff --git a/src/packs/items/consumables/consumable_Gill_Salve_Nvbb9mze6o5D0AEg.json b/src/packs/items/consumables/consumable_Gill_Salve_Nvbb9mze6o5D0AEg.json new file mode 100644 index 00000000..f0c9ca45 --- /dev/null +++ b/src/packs/items/consumables/consumable_Gill_Salve_Nvbb9mze6o5D0AEg.json @@ -0,0 +1,55 @@ +{ + "name": "Gill Salve", + "type": "consumable", + "_id": "Nvbb9mze6o5D0AEg", + "img": "icons/commodities/materials/bowl-powder-blue.webp", + "system": { + "description": "You can apply this salve to your neck to breathe underwater for a number of minutes equal to your level.
", + "quantity": 1, + "actions": { + "57IIcyhEs2ByoENx": { + "type": "effect", + "_id": "57IIcyhEs2ByoENx", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Apply", + "img": "icons/commodities/materials/bowl-powder-blue.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589241094, + "modifiedTime": 1753589295204, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!Nvbb9mze6o5D0AEg" +} diff --git a/src/packs/items/consumables/consumable_Grindletooth_Venom_8WkhvSzeOmLdnoLJ.json b/src/packs/items/consumables/consumable_Grindletooth_Venom_8WkhvSzeOmLdnoLJ.json new file mode 100644 index 00000000..86e4dd75 --- /dev/null +++ b/src/packs/items/consumables/consumable_Grindletooth_Venom_8WkhvSzeOmLdnoLJ.json @@ -0,0 +1,86 @@ +{ + "name": "Grindletooth Venom", + "type": "consumable", + "_id": "8WkhvSzeOmLdnoLJ", + "img": "icons/consumables/potions/bottle-conical-corked-labeled-skull-poison-green.webp", + "system": { + "description": "You can apply this venom to a weapon that deals physical damage to add a d6 to your next damage roll with that weapon.
", + "quantity": 1, + "actions": { + "PxLGZBoJCS0L4QZl": { + "type": "damage", + "_id": "PxLGZBoJCS0L4QZl", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": false + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [ + "physical" + ], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": null, + "amount": null + }, + "effects": [], + "name": "Apply Venom", + "img": "icons/consumables/potions/bottle-conical-corked-labeled-skull-poison-green.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587386639, + "modifiedTime": 1753587966903, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!8WkhvSzeOmLdnoLJ" +} diff --git a/src/packs/items/consumables/consumable_Growing_Potion_fl2f3ees8RFMze9t.json b/src/packs/items/consumables/consumable_Growing_Potion_fl2f3ees8RFMze9t.json new file mode 100644 index 00000000..faea5ef7 --- /dev/null +++ b/src/packs/items/consumables/consumable_Growing_Potion_fl2f3ees8RFMze9t.json @@ -0,0 +1,111 @@ +{ + "name": "Growing Potion", + "type": "consumable", + "_id": "fl2f3ees8RFMze9t", + "img": "icons/consumables/potions/potion-bottle-corked-labeled-green.webp", + "system": { + "description": "You can drink this potion to double your size until you choose to drop this form or your next rest. While in this form, you have a +2 bonus to Strength and a +1 bonus to your Proficiency.
", + "quantity": 1, + "actions": { + "A8wHvMnKnewQ2J3m": { + "type": "effect", + "_id": "A8wHvMnKnewQ2J3m", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "YEGd74Lssj7rCmpF", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/potion-bottle-corked-labeled-green.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Growing Potion", + "img": "icons/consumables/potions/potion-bottle-corked-labeled-green.webp", + "origin": "Compendium.daggerheart.consumables.Item.fl2f3ees8RFMze9t", + "transfer": false, + "_id": "YEGd74Lssj7rCmpF", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.strength.value", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.proficiency", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592211848, + "modifiedTime": 1753592229488, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!fl2f3ees8RFMze9t.YEGd74Lssj7rCmpF" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592174440, + "modifiedTime": 1753592211868, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!fl2f3ees8RFMze9t" +} diff --git a/src/packs/items/consumables/consumable_Health_Potion_Aruc2NLutWuVIjP1.json b/src/packs/items/consumables/consumable_Health_Potion_Aruc2NLutWuVIjP1.json new file mode 100644 index 00000000..2599f827 --- /dev/null +++ b/src/packs/items/consumables/consumable_Health_Potion_Aruc2NLutWuVIjP1.json @@ -0,0 +1,32 @@ +{ + "name": "Health Potion", + "type": "consumable", + "_id": "Aruc2NLutWuVIjP1", + "img": "icons/consumables/potions/bottle-corked-red.webp", + "system": { + "description": "Clear 1d4+1 HP.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753588839527, + "modifiedTime": 1753623230976, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!Aruc2NLutWuVIjP1" +} diff --git a/src/packs/items/consumables/consumable_Homet_s_Secret_Potion_VSwa1LpQ9PjZKsWF.json b/src/packs/items/consumables/consumable_Homet_s_Secret_Potion_VSwa1LpQ9PjZKsWF.json new file mode 100644 index 00000000..276d8595 --- /dev/null +++ b/src/packs/items/consumables/consumable_Homet_s_Secret_Potion_VSwa1LpQ9PjZKsWF.json @@ -0,0 +1,55 @@ +{ + "name": "Homet’s Secret Potion", + "type": "consumable", + "_id": "VSwa1LpQ9PjZKsWF", + "img": "icons/consumables/potions/conical-ornate-purple.webp", + "system": { + "description": "After drinking this potion, the next successful attack you make critically succeeds.
", + "quantity": 1, + "actions": { + "NCcqIcPhEsUnFh7S": { + "type": "effect", + "_id": "NCcqIcPhEsUnFh7S", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/conical-ornate-purple.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589998065, + "modifiedTime": 1753590051364, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!VSwa1LpQ9PjZKsWF" +} diff --git a/src/packs/items/consumables/consumable_Hopehold_Flare_EhaQCPJ8oiqpRIwB.json b/src/packs/items/consumables/consumable_Hopehold_Flare_EhaQCPJ8oiqpRIwB.json new file mode 100644 index 00000000..a5bf0035 --- /dev/null +++ b/src/packs/items/consumables/consumable_Hopehold_Flare_EhaQCPJ8oiqpRIwB.json @@ -0,0 +1,55 @@ +{ + "name": "Hopehold Flare", + "type": "consumable", + "_id": "EhaQCPJ8oiqpRIwB", + "img": "icons/commodities/tech/smoke-bomb-purple.webp", + "system": { + "description": "When you use this flare, allies within Close range roll a d6 when they spend a Hope. On a result of 6, they gain the effect of that Hope without spending it. The flare lasts until the end of the scene.
", + "quantity": 1, + "actions": { + "hTF2K4uWcrUypLbs": { + "type": "effect", + "_id": "hTF2K4uWcrUypLbs", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/commodities/tech/smoke-bomb-purple.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753590388618, + "modifiedTime": 1753590501578, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!EhaQCPJ8oiqpRIwB" +} diff --git a/src/packs/items/consumables/consumable_Improved_Arcane_Shard_nQTo6mNoPTEVBtkm.json b/src/packs/items/consumables/consumable_Improved_Arcane_Shard_nQTo6mNoPTEVBtkm.json new file mode 100644 index 00000000..da505b43 --- /dev/null +++ b/src/packs/items/consumables/consumable_Improved_Arcane_Shard_nQTo6mNoPTEVBtkm.json @@ -0,0 +1,106 @@ +{ + "name": "Improved Arcane Shard", + "type": "consumable", + "_id": "nQTo6mNoPTEVBtkm", + "img": "icons/commodities/gems/gem-faceted-teardrop-blue.webp", + "system": { + "description": "You can make a Finesse Roll to throw this shard at a group of adversaries within Far range. Targets you succeed against take 2d20 magic damage.
", + "quantity": 1, + "actions": { + "g3sQoxS6sL3mut3u": { + "type": "attack", + "_id": "g3sQoxS6sL3mut3u", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "resultBased": false, + "value": { + "custom": { + "enabled": false + }, + "multiplier": "flat", + "flatMultiplier": 2, + "dice": "d20", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [ + "magical" + ], + "base": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "hostile", + "amount": null + }, + "effects": [], + "roll": { + "type": "trait", + "trait": "finesse", + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": "above", + "treshold": 1 + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Throw", + "img": "icons/commodities/gems/gem-faceted-teardrop-blue.webp", + "range": "far" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589403341, + "modifiedTime": 1753589489112, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!nQTo6mNoPTEVBtkm" +} diff --git a/src/packs/items/consumables/consumable_Improved_Grindletooth_Venom_BqBWXXe9T07AMV4u.json b/src/packs/items/consumables/consumable_Improved_Grindletooth_Venom_BqBWXXe9T07AMV4u.json new file mode 100644 index 00000000..102359d3 --- /dev/null +++ b/src/packs/items/consumables/consumable_Improved_Grindletooth_Venom_BqBWXXe9T07AMV4u.json @@ -0,0 +1,86 @@ +{ + "name": "Improved Grindletooth Venom", + "type": "consumable", + "_id": "BqBWXXe9T07AMV4u", + "img": "icons/consumables/potions/potion-jar-corked-labeled-poison-skull-green.webp", + "system": { + "description": "You can apply this venom to a weapon that deals physical damage to add a d8 to your next damage roll with that weapon.
", + "quantity": 1, + "actions": { + "qCr94sRkuODpywiZ": { + "type": "damage", + "_id": "qCr94sRkuODpywiZ", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": false + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d8", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [ + "physical" + ], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": null, + "amount": null + }, + "effects": [], + "name": "Apply Venom", + "img": "icons/consumables/potions/potion-jar-corked-labeled-poison-skull-green.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753588170670, + "modifiedTime": 1753588234520, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!BqBWXXe9T07AMV4u" +} 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 new file mode 100644 index 00000000..f4b9c4f1 --- /dev/null +++ b/src/packs/items/consumables/consumable_Jar_of_Lost_Voices_yUol6M5b8jsbk9za.json @@ -0,0 +1,86 @@ +{ + "name": "Jar of Lost Voices", + "type": "consumable", + "_id": "yUol6M5b8jsbk9za", + "img": "icons/containers/kitchenware/jug-wrapped-red.webp", + "system": { + "description": "You can open this jar to release a deafening echo of voices for a number of minutes equal to your Instinct. Creatures within Far range unprepared for the sound take 6d8 magic damage.
", + "quantity": 1, + "actions": { + "QEk4TaJeN9FX8cZN": { + "type": "damage", + "_id": "QEk4TaJeN9FX8cZN", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": false + }, + "multiplier": "flat", + "flatMultiplier": 6, + "dice": "d8", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [ + "magical" + ], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": null, + "amount": null + }, + "effects": [], + "name": "Open", + "img": "icons/containers/kitchenware/jug-wrapped-red.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753591372075, + "modifiedTime": 1753591514408, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!yUol6M5b8jsbk9za" +} diff --git a/src/packs/items/consumables/consumable_Jumping_Root_c2putn9apuurJhWX.json b/src/packs/items/consumables/consumable_Jumping_Root_c2putn9apuurJhWX.json new file mode 100644 index 00000000..c28e09e3 --- /dev/null +++ b/src/packs/items/consumables/consumable_Jumping_Root_c2putn9apuurJhWX.json @@ -0,0 +1,55 @@ +{ + "name": "Jumping Root", + "type": "consumable", + "_id": "c2putn9apuurJhWX", + "img": "icons/consumables/plants/dried-bundle-wrapped-stems-sticks-brown.webp", + "system": { + "description": "Eat this root to leap up to Far range once without needing to roll.
", + "quantity": 1, + "actions": { + "TT4jzve7o2ykPcQO": { + "type": "effect", + "_id": "TT4jzve7o2ykPcQO", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Eat", + "img": "icons/consumables/plants/dried-bundle-wrapped-stems-sticks-brown.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753588566489, + "modifiedTime": 1753588625439, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!c2putn9apuurJhWX" +} diff --git a/src/packs/items/consumables/consumable_Knowledge_Stone_nL9IALzm9BNi5oSt.json b/src/packs/items/consumables/consumable_Knowledge_Stone_nL9IALzm9BNi5oSt.json new file mode 100644 index 00000000..26d16445 --- /dev/null +++ b/src/packs/items/consumables/consumable_Knowledge_Stone_nL9IALzm9BNi5oSt.json @@ -0,0 +1,55 @@ +{ + "name": "Knowledge Stone", + "type": "consumable", + "_id": "nL9IALzm9BNi5oSt", + "img": "icons/commodities/treasure/token-engraved-blue-glowing.webp", + "system": { + "description": "If you die while holding this stone, an ally can take a card from your loadout to place in their loadout or vault. After they take this knowledge, the stone crumbles.
", + "quantity": 1, + "actions": { + "We38aIuxBrv8zhfr": { + "type": "effect", + "_id": "We38aIuxBrv8zhfr", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/commodities/treasure/token-engraved-blue-glowing.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592240392, + "modifiedTime": 1753592383492, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!nL9IALzm9BNi5oSt" +} diff --git a/src/packs/items/consumables/consumable_Major_Arcane_Shard_AA7bmiwv00lshPrC.json b/src/packs/items/consumables/consumable_Major_Arcane_Shard_AA7bmiwv00lshPrC.json new file mode 100644 index 00000000..959547c9 --- /dev/null +++ b/src/packs/items/consumables/consumable_Major_Arcane_Shard_AA7bmiwv00lshPrC.json @@ -0,0 +1,104 @@ +{ + "name": "Major Arcane Shard", + "type": "consumable", + "_id": "AA7bmiwv00lshPrC", + "img": "icons/commodities/gems/gem-rough-round-blue.webp", + "system": { + "description": "You can make a Finesse Roll to throw this shard at a group of adversaries within Far range. Targets you succeed against take 4d20 magic damage.
", + "quantity": 1, + "actions": { + "8JHqtEYD0uOGwHdd": { + "type": "attack", + "_id": "8JHqtEYD0uOGwHdd", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "resultBased": false, + "value": { + "custom": { + "enabled": false + }, + "multiplier": "flat", + "flatMultiplier": 4, + "dice": "d20", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [], + "base": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "hostile", + "amount": null + }, + "effects": [], + "roll": { + "type": "trait", + "trait": "finesse", + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": "above", + "treshold": 1 + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Throw", + "img": "icons/commodities/gems/gem-rough-round-blue.webp", + "range": "far" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753590515261, + "modifiedTime": 1753590588765, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!AA7bmiwv00lshPrC" +} diff --git a/src/packs/items/consumables/consumable_Major_Attune_Potion_CCPFm5iXXwvyYYwR.json b/src/packs/items/consumables/consumable_Major_Attune_Potion_CCPFm5iXXwvyYYwR.json new file mode 100644 index 00000000..4442e555 --- /dev/null +++ b/src/packs/items/consumables/consumable_Major_Attune_Potion_CCPFm5iXXwvyYYwR.json @@ -0,0 +1,105 @@ +{ + "name": "Major Attune Potion", + "type": "consumable", + "_id": "CCPFm5iXXwvyYYwR", + "img": "icons/consumables/potions/bottle-round-corked-pink.webp", + "system": { + "description": "You gain a +1 bonus to your Instinct until your next rest.
", + "quantity": 1, + "actions": { + "zerWKpcBvtiaUfaw": { + "type": "effect", + "_id": "zerWKpcBvtiaUfaw", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "v2EXGXbJaewaMxFC", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/bottle-round-corked-pink.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Major Attune Potion", + "img": "icons/consumables/potions/bottle-round-corked-pink.webp", + "origin": "Compendium.daggerheart.consumables.Item.CCPFm5iXXwvyYYwR", + "transfer": false, + "_id": "v2EXGXbJaewaMxFC", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.instinct.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589791269, + "modifiedTime": 1753589801620, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!CCPFm5iXXwvyYYwR.v2EXGXbJaewaMxFC" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589747286, + "modifiedTime": 1753589806499, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!CCPFm5iXXwvyYYwR" +} diff --git a/src/packs/items/consumables/consumable_Major_Bolster_Potion_mnyQDRtngWWQeRXF.json b/src/packs/items/consumables/consumable_Major_Bolster_Potion_mnyQDRtngWWQeRXF.json new file mode 100644 index 00000000..b1328d06 --- /dev/null +++ b/src/packs/items/consumables/consumable_Major_Bolster_Potion_mnyQDRtngWWQeRXF.json @@ -0,0 +1,105 @@ +{ + "name": "Major Bolster Potion", + "type": "consumable", + "_id": "mnyQDRtngWWQeRXF", + "img": "icons/consumables/potions/potion-jar-corked-orange.webp", + "system": { + "description": "You gain a +1 bonus to your Strength until your next rest.
", + "quantity": 1, + "actions": { + "Z7ehTbRegQvq74tl": { + "type": "effect", + "_id": "Z7ehTbRegQvq74tl", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "3PfXBJy0ZjLBDAIn", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/potion-jar-corked-orange.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Major Bolster Potion", + "img": "icons/consumables/potions/potion-jar-corked-orange.webp", + "origin": "Compendium.daggerheart.consumables.Item.mnyQDRtngWWQeRXF", + "transfer": false, + "_id": "3PfXBJy0ZjLBDAIn", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.strength.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589654978, + "modifiedTime": 1753589663303, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!mnyQDRtngWWQeRXF.3PfXBJy0ZjLBDAIn" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589623872, + "modifiedTime": 1753589654996, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!mnyQDRtngWWQeRXF" +} diff --git a/src/packs/items/consumables/consumable_Major_Charm_Potion_IJLAUlQymbSjzsri.json b/src/packs/items/consumables/consumable_Major_Charm_Potion_IJLAUlQymbSjzsri.json new file mode 100644 index 00000000..b45a434f --- /dev/null +++ b/src/packs/items/consumables/consumable_Major_Charm_Potion_IJLAUlQymbSjzsri.json @@ -0,0 +1,105 @@ +{ + "name": "Major Charm Potion", + "type": "consumable", + "_id": "IJLAUlQymbSjzsri", + "img": "icons/consumables/potions/potion-bottle-corked-blue.webp", + "system": { + "description": "You gain a +1 bonus to your Presence until your next rest.
", + "quantity": 1, + "actions": { + "Bz6oZUN317mLvQSk": { + "type": "effect", + "_id": "Bz6oZUN317mLvQSk", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "3iXv9QiuLGOfDCi2", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/potion-bottle-corked-blue.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Major Charm Potion", + "img": "icons/consumables/potions/potion-bottle-corked-blue.webp", + "origin": "Compendium.daggerheart.consumables.Item.IJLAUlQymbSjzsri", + "transfer": false, + "_id": "3iXv9QiuLGOfDCi2", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.presence.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589854495, + "modifiedTime": 1753589862607, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!IJLAUlQymbSjzsri.3iXv9QiuLGOfDCi2" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589816684, + "modifiedTime": 1753589854510, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!IJLAUlQymbSjzsri" +} diff --git a/src/packs/items/consumables/consumable_Major_Control_Potion_80s1FLmTLtohZ5GH.json b/src/packs/items/consumables/consumable_Major_Control_Potion_80s1FLmTLtohZ5GH.json new file mode 100644 index 00000000..5e16f5ad --- /dev/null +++ b/src/packs/items/consumables/consumable_Major_Control_Potion_80s1FLmTLtohZ5GH.json @@ -0,0 +1,105 @@ +{ + "name": "Major Control Potion", + "type": "consumable", + "_id": "80s1FLmTLtohZ5GH", + "img": "icons/consumables/potions/bottle-round-corked-blue.webp", + "system": { + "description": "You gain a +1 bonus to your Finesse until your next rest.
", + "quantity": 1, + "actions": { + "fk272mE2zHIHq8qR": { + "type": "effect", + "_id": "fk272mE2zHIHq8qR", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "YOgojNdjARXUUrky", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/bottle-round-corked-blue.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Major Control Potion", + "img": "icons/consumables/potions/bottle-round-corked-blue.webp", + "origin": "Compendium.daggerheart.consumables.Item.80s1FLmTLtohZ5GH", + "transfer": false, + "_id": "YOgojNdjARXUUrky", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.finesse.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589723372, + "modifiedTime": 1753589738716, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!80s1FLmTLtohZ5GH.YOgojNdjARXUUrky" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589675185, + "modifiedTime": 1753589723393, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!80s1FLmTLtohZ5GH" +} diff --git a/src/packs/items/consumables/consumable_Major_Enlighten_Potion_SDdv1G2veMLKrxcJ.json b/src/packs/items/consumables/consumable_Major_Enlighten_Potion_SDdv1G2veMLKrxcJ.json new file mode 100644 index 00000000..ba6c1f17 --- /dev/null +++ b/src/packs/items/consumables/consumable_Major_Enlighten_Potion_SDdv1G2veMLKrxcJ.json @@ -0,0 +1,105 @@ +{ + "name": "Major Enlighten Potion", + "type": "consumable", + "_id": "SDdv1G2veMLKrxcJ", + "img": "icons/consumables/potions/bottle-corked-empty.webp", + "system": { + "description": "You gain a +1 bonus to your Knowledge until your next rest.
", + "quantity": 1, + "actions": { + "cZL1A3hNXHbjfwi3": { + "type": "effect", + "_id": "cZL1A3hNXHbjfwi3", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "Ul5brgnx88npVGNj", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/bottle-corked-empty.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Major Enlighten Potion", + "img": "icons/consumables/potions/bottle-corked-empty.webp", + "origin": "Compendium.daggerheart.consumables.Item.SDdv1G2veMLKrxcJ", + "transfer": false, + "_id": "Ul5brgnx88npVGNj", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.knowledge.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589930774, + "modifiedTime": 1753589937684, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!SDdv1G2veMLKrxcJ.Ul5brgnx88npVGNj" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589874661, + "modifiedTime": 1753589930795, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!SDdv1G2veMLKrxcJ" +} diff --git a/src/packs/items/consumables/consumable_Major_Health_Potion_cM7pHe8bBAxSZ2xR.json b/src/packs/items/consumables/consumable_Major_Health_Potion_cM7pHe8bBAxSZ2xR.json new file mode 100644 index 00000000..90c758f4 --- /dev/null +++ b/src/packs/items/consumables/consumable_Major_Health_Potion_cM7pHe8bBAxSZ2xR.json @@ -0,0 +1,32 @@ +{ + "name": "Major Health Potion", + "type": "consumable", + "_id": "cM7pHe8bBAxSZ2xR", + "img": "icons/consumables/potions/bottle-round-label-cork-red.webp", + "system": { + "description": "Clear 1d4+2 HP.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753591046168, + "modifiedTime": 1753623266522, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!cM7pHe8bBAxSZ2xR" +} diff --git a/src/packs/items/consumables/consumable_Major_Stamina_Potion_I4cQ03xbxnc81EGa.json b/src/packs/items/consumables/consumable_Major_Stamina_Potion_I4cQ03xbxnc81EGa.json new file mode 100644 index 00000000..43bfa7ed --- /dev/null +++ b/src/packs/items/consumables/consumable_Major_Stamina_Potion_I4cQ03xbxnc81EGa.json @@ -0,0 +1,32 @@ +{ + "name": "Major Stamina Potion", + "type": "consumable", + "_id": "I4cQ03xbxnc81EGa", + "img": "icons/consumables/potions/bottle-round-label-cork-green.webp", + "system": { + "description": "Clear 1d4+2 Stress.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753591113317, + "modifiedTime": 1753623276997, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!I4cQ03xbxnc81EGa" +} diff --git a/src/packs/items/consumables/consumable_Major_Stride_Potion_yK6eEDUrsPbZA8G0.json b/src/packs/items/consumables/consumable_Major_Stride_Potion_yK6eEDUrsPbZA8G0.json new file mode 100644 index 00000000..0c969d9f --- /dev/null +++ b/src/packs/items/consumables/consumable_Major_Stride_Potion_yK6eEDUrsPbZA8G0.json @@ -0,0 +1,105 @@ +{ + "name": "Major Stride Potion", + "type": "consumable", + "_id": "yK6eEDUrsPbZA8G0", + "img": "icons/consumables/potions/potion-jar-capped-teal.webp", + "system": { + "description": "You gain a +1 bonus to your Agility until your next rest.
", + "quantity": 1, + "actions": { + "UIVnvI726LJnlK86": { + "type": "effect", + "_id": "UIVnvI726LJnlK86", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "L9dAw8pws1o02XkE", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/potion-jar-capped-teal.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Major Stride Potion", + "img": "icons/consumables/potions/potion-jar-capped-teal.webp", + "origin": "Compendium.daggerheart.consumables.Item.yK6eEDUrsPbZA8G0", + "transfer": false, + "_id": "L9dAw8pws1o02XkE", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.agility.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589592477, + "modifiedTime": 1753589609592, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!yK6eEDUrsPbZA8G0.L9dAw8pws1o02XkE" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589545730, + "modifiedTime": 1753589592499, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!yK6eEDUrsPbZA8G0" +} diff --git a/src/packs/items/consumables/consumable_Minor_Health_Potion_tPfKtKRRjv8qdSqy.json b/src/packs/items/consumables/consumable_Minor_Health_Potion_tPfKtKRRjv8qdSqy.json new file mode 100644 index 00000000..5b50792f --- /dev/null +++ b/src/packs/items/consumables/consumable_Minor_Health_Potion_tPfKtKRRjv8qdSqy.json @@ -0,0 +1,32 @@ +{ + "name": "Minor Health Potion", + "type": "consumable", + "_id": "tPfKtKRRjv8qdSqy", + "img": "icons/consumables/potions/potion-tube-corked-red.webp", + "system": { + "description": "Clear 1d4 HP.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587253431, + "modifiedTime": 1753623289863, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!tPfKtKRRjv8qdSqy" +} diff --git a/src/packs/items/consumables/consumable_Minor_Stamina_Potion_b6vGSPFWOlzZZDLO.json b/src/packs/items/consumables/consumable_Minor_Stamina_Potion_b6vGSPFWOlzZZDLO.json new file mode 100644 index 00000000..f5a18ef8 --- /dev/null +++ b/src/packs/items/consumables/consumable_Minor_Stamina_Potion_b6vGSPFWOlzZZDLO.json @@ -0,0 +1,32 @@ +{ + "name": "Minor Stamina Potion", + "type": "consumable", + "_id": "b6vGSPFWOlzZZDLO", + "img": "icons/consumables/potions/potion-tube-corked-green.webp", + "system": { + "description": "Clear 1d4 Stress.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587324465, + "modifiedTime": 1753623297325, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!b6vGSPFWOlzZZDLO" +} diff --git a/src/packs/items/consumables/consumable_Mirror_of_Marigold_UFQVwgYOUZ88UxcH.json b/src/packs/items/consumables/consumable_Mirror_of_Marigold_UFQVwgYOUZ88UxcH.json new file mode 100644 index 00000000..4e5bd33f --- /dev/null +++ b/src/packs/items/consumables/consumable_Mirror_of_Marigold_UFQVwgYOUZ88UxcH.json @@ -0,0 +1,63 @@ +{ + "name": "Mirror of Marigold", + "type": "consumable", + "_id": "UFQVwgYOUZ88UxcH", + "img": "icons/commodities/treasure/token-silver-blue.webp", + "system": { + "description": "When you take damage, you can spend a Hope to negate that damage, after which the mirror shatters.
", + "quantity": 1, + "actions": { + "EPN43cQmNC97cCw9": { + "type": "effect", + "_id": "EPN43cQmNC97cCw9", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/commodities/treasure/token-silver-blue.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592792213, + "modifiedTime": 1753592919887, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!UFQVwgYOUZ88UxcH" +} diff --git a/src/packs/items/consumables/consumable_Morphing_Clay_f1NHVSIHJJCIOaBl.json b/src/packs/items/consumables/consumable_Morphing_Clay_f1NHVSIHJJCIOaBl.json new file mode 100644 index 00000000..ca8fc106 --- /dev/null +++ b/src/packs/items/consumables/consumable_Morphing_Clay_f1NHVSIHJJCIOaBl.json @@ -0,0 +1,63 @@ +{ + "name": "Morphing Clay", + "type": "consumable", + "_id": "f1NHVSIHJJCIOaBl", + "img": "icons/commodities/stone/ore-chunk-brown.webp", + "system": { + "description": "You can spend a Hope to use this clay, altering your face enough to make you unrecognizable until your next rest.
", + "quantity": 1, + "actions": { + "S4wEG1RzfLNtvcg7": { + "type": "effect", + "_id": "S4wEG1RzfLNtvcg7", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/commodities/stone/ore-chunk-brown.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753588254032, + "modifiedTime": 1753588327474, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!f1NHVSIHJJCIOaBl" +} diff --git a/src/packs/items/consumables/consumable_Mythic_Dust_Zsh2AvZr8EkGtLyw.json b/src/packs/items/consumables/consumable_Mythic_Dust_Zsh2AvZr8EkGtLyw.json new file mode 100644 index 00000000..445ea187 --- /dev/null +++ b/src/packs/items/consumables/consumable_Mythic_Dust_Zsh2AvZr8EkGtLyw.json @@ -0,0 +1,86 @@ +{ + "name": "Mythic Dust", + "type": "consumable", + "_id": "Zsh2AvZr8EkGtLyw", + "img": "icons/commodities/materials/bowl-powder-grey.webp", + "system": { + "description": "You can apply this dust to a weapon that deals magic damage to add a d12 to your next damage roll with that weapon.
", + "quantity": 1, + "actions": { + "yAE40wCrWg0qC3z0": { + "type": "damage", + "_id": "yAE40wCrWg0qC3z0", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": false + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d12", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [ + "magical" + ], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": null, + "amount": null + }, + "effects": [], + "name": "Apply", + "img": "icons/commodities/materials/bowl-powder-grey.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753590241722, + "modifiedTime": 1753590307682, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!Zsh2AvZr8EkGtLyw" +} diff --git a/src/packs/items/consumables/consumable_Ogre_Musk_qr1bosjFcUfuwq4B.json b/src/packs/items/consumables/consumable_Ogre_Musk_qr1bosjFcUfuwq4B.json new file mode 100644 index 00000000..ba809758 --- /dev/null +++ b/src/packs/items/consumables/consumable_Ogre_Musk_qr1bosjFcUfuwq4B.json @@ -0,0 +1,55 @@ +{ + "name": "Ogre Musk", + "type": "consumable", + "_id": "qr1bosjFcUfuwq4B", + "img": "icons/commodities/materials/slime-thick-green.webp", + "system": { + "description": "You can use this musk to prevent anyone from tracking you by mundane or magical means until your next rest.
", + "quantity": 1, + "actions": { + "t0vgSnAuIcj7IevQ": { + "type": "effect", + "_id": "t0vgSnAuIcj7IevQ", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/commodities/materials/slime-thick-green.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753591168468, + "modifiedTime": 1753591274462, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!qr1bosjFcUfuwq4B" +} diff --git a/src/packs/items/consumables/consumable_Potion_of_Stability_dvL8oaxpEF6jKvYN.json b/src/packs/items/consumables/consumable_Potion_of_Stability_dvL8oaxpEF6jKvYN.json new file mode 100644 index 00000000..16496808 --- /dev/null +++ b/src/packs/items/consumables/consumable_Potion_of_Stability_dvL8oaxpEF6jKvYN.json @@ -0,0 +1,111 @@ +{ + "name": "Potion of Stability", + "type": "consumable", + "_id": "dvL8oaxpEF6jKvYN", + "img": "icons/consumables/potions/bottle-conical-corked-labeled-shell-cyan.webp", + "system": { + "description": "You can drink this potion to choose one additional downtime move.
", + "quantity": 1, + "actions": { + "ifj42z5FhfMVyyd1": { + "type": "effect", + "_id": "ifj42z5FhfMVyyd1", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "PjjGC4TpzjSz9z8s", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/bottle-conical-corked-labeled-shell-cyan.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Potion of Stability", + "img": "icons/consumables/potions/bottle-conical-corked-labeled-shell-cyan.webp", + "origin": "Compendium.daggerheart.consumables.Item.dvL8oaxpEF6jKvYN", + "transfer": false, + "_id": "PjjGC4TpzjSz9z8s", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.bonuses.rest.shortRest.shortMoves", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.bonuses.rest.longRest.longMoves", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753616591279, + "modifiedTime": 1753616612536, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!dvL8oaxpEF6jKvYN.PjjGC4TpzjSz9z8s" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753588038000, + "modifiedTime": 1753616591291, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!dvL8oaxpEF6jKvYN" +} diff --git a/src/packs/items/consumables/consumable_Redthorn_Saliva_s2Exl2XFuoOhtIov.json b/src/packs/items/consumables/consumable_Redthorn_Saliva_s2Exl2XFuoOhtIov.json new file mode 100644 index 00000000..8d2b2fa5 --- /dev/null +++ b/src/packs/items/consumables/consumable_Redthorn_Saliva_s2Exl2XFuoOhtIov.json @@ -0,0 +1,86 @@ +{ + "name": "Redthorn Saliva", + "type": "consumable", + "_id": "s2Exl2XFuoOhtIov", + "img": "icons/commodities/materials/slime-thick-blue.webp", + "system": { + "description": "You can apply this saliva to a weapon that deals physical damage to add a d12 to your next damage roll with that weapon.
", + "quantity": 1, + "actions": { + "RJ9WXmH6mwQKpS8O": { + "type": "damage", + "_id": "RJ9WXmH6mwQKpS8O", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": false + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d12", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [ + "physical" + ], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": null, + "amount": null + }, + "effects": [], + "name": "Apply", + "img": "icons/commodities/materials/slime-thick-blue.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753590061810, + "modifiedTime": 1753590334574, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!s2Exl2XFuoOhtIov" +} diff --git a/src/packs/items/consumables/consumable_Replication_Parchment_yJkwz4AP6yhGo8Vj.json b/src/packs/items/consumables/consumable_Replication_Parchment_yJkwz4AP6yhGo8Vj.json new file mode 100644 index 00000000..822aef35 --- /dev/null +++ b/src/packs/items/consumables/consumable_Replication_Parchment_yJkwz4AP6yhGo8Vj.json @@ -0,0 +1,55 @@ +{ + "name": "Replication Parchment", + "type": "consumable", + "_id": "yJkwz4AP6yhGo8Vj", + "img": "icons/sundries/scrolls/scroll-worn-beige.webp", + "system": { + "description": "By touching this piece of parchment to another, you can perfectly copy the second parchment’s contents. Once used, this parchment becomes mundane paper.
", + "quantity": 1, + "actions": { + "j5gIVHXvcGu7PEZZ": { + "type": "effect", + "_id": "j5gIVHXvcGu7PEZZ", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/sundries/scrolls/scroll-worn-beige.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753589306667, + "modifiedTime": 1753589388523, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!yJkwz4AP6yhGo8Vj" +} diff --git a/src/packs/items/consumables/consumable_Shrinking_Potion_HGixKenQwhyRAYNk.json b/src/packs/items/consumables/consumable_Shrinking_Potion_HGixKenQwhyRAYNk.json new file mode 100644 index 00000000..8dc3db65 --- /dev/null +++ b/src/packs/items/consumables/consumable_Shrinking_Potion_HGixKenQwhyRAYNk.json @@ -0,0 +1,111 @@ +{ + "name": "Shrinking Potion", + "type": "consumable", + "_id": "HGixKenQwhyRAYNk", + "img": "icons/consumables/potions/flask-decorated-label-pink.webp", + "system": { + "description": "You can drink this potion to halve your size until you choose to drop this form or your next rest. While in this form, you have a +2 bonus to Agility and a −1 penalty to your Proficiency.
", + "quantity": 1, + "actions": { + "F9vKFVwtJfR4Q8Kh": { + "type": "effect", + "_id": "F9vKFVwtJfR4Q8Kh", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "yaRLd7eHWYm2MHRM", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/flask-decorated-label-pink.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Shrinking Potion", + "img": "icons/consumables/potions/flask-decorated-label-pink.webp", + "origin": "Compendium.daggerheart.consumables.Item.HGixKenQwhyRAYNk", + "transfer": false, + "_id": "yaRLd7eHWYm2MHRM", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.agility.value", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.proficiency", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592138957, + "modifiedTime": 1753592163296, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!HGixKenQwhyRAYNk.yaRLd7eHWYm2MHRM" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592077792, + "modifiedTime": 1753592138977, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!HGixKenQwhyRAYNk" +} diff --git a/src/packs/items/consumables/consumable_Sleeping_Sap_XZavUVlHEvE2srEt.json b/src/packs/items/consumables/consumable_Sleeping_Sap_XZavUVlHEvE2srEt.json new file mode 100644 index 00000000..8814e290 --- /dev/null +++ b/src/packs/items/consumables/consumable_Sleeping_Sap_XZavUVlHEvE2srEt.json @@ -0,0 +1,32 @@ +{ + "name": "Sleeping Sap", + "type": "consumable", + "_id": "XZavUVlHEvE2srEt", + "img": "icons/consumables/potions/bottle-bulb-corked-labeled-blue.webp", + "system": { + "description": "You can drink this potion to fall asleep for a full night’s rest. You clear all Stress upon waking.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753591837472, + "modifiedTime": 1753623358593, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!XZavUVlHEvE2srEt" +} diff --git a/src/packs/items/consumables/consumable_Snap_Powder_cg6VtQ0eVZjDdcK0.json b/src/packs/items/consumables/consumable_Snap_Powder_cg6VtQ0eVZjDdcK0.json new file mode 100644 index 00000000..ddada48f --- /dev/null +++ b/src/packs/items/consumables/consumable_Snap_Powder_cg6VtQ0eVZjDdcK0.json @@ -0,0 +1,32 @@ +{ + "name": "Snap Powder", + "type": "consumable", + "_id": "cg6VtQ0eVZjDdcK0", + "img": "icons/commodities/materials/bowl-powder-gold.webp", + "system": { + "description": "Mark a Stress and clear a HP.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753588752841, + "modifiedTime": 1753623348062, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!cg6VtQ0eVZjDdcK0" +} diff --git a/src/packs/items/consumables/consumable_Stamina_Potion_hf3k1POoVSooJyN2.json b/src/packs/items/consumables/consumable_Stamina_Potion_hf3k1POoVSooJyN2.json new file mode 100644 index 00000000..a8eb8b4a --- /dev/null +++ b/src/packs/items/consumables/consumable_Stamina_Potion_hf3k1POoVSooJyN2.json @@ -0,0 +1,32 @@ +{ + "name": "Stamina Potion", + "type": "consumable", + "_id": "hf3k1POoVSooJyN2", + "img": "icons/consumables/potions/bottle-corked-green.webp", + "system": { + "description": "Clear 1d4+1 Stress.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753588904835, + "modifiedTime": 1753623366482, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!hf3k1POoVSooJyN2" +} diff --git a/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json b/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json new file mode 100644 index 00000000..a649e28b --- /dev/null +++ b/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json @@ -0,0 +1,86 @@ +{ + "name": "Stardrop", + "type": "consumable", + "_id": "y4c1jrlHrf0wBWOq", + "img": "icons/magic/light/projectiles-star-purple.webp", + "system": { + "description": "You can use this stardrop to summon a hailstorm of comets that deals 8d20 physical damage to all targets within Very Far range.
", + "quantity": 1, + "actions": { + "pt5U6hlyx4T7MUOa": { + "type": "damage", + "_id": "pt5U6hlyx4T7MUOa", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": false + }, + "multiplier": "flat", + "flatMultiplier": 8, + "dice": "d20", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [ + "physical" + ], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "name": "Use", + "img": "icons/magic/light/projectiles-star-purple.webp", + "range": "veryFar" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592933782, + "modifiedTime": 1753593062814, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!y4c1jrlHrf0wBWOq" +} diff --git a/src/packs/items/consumables/consumable_Stride_Potion_lNtcrkgFGOJNaroE.json b/src/packs/items/consumables/consumable_Stride_Potion_lNtcrkgFGOJNaroE.json new file mode 100644 index 00000000..2f2bdf11 --- /dev/null +++ b/src/packs/items/consumables/consumable_Stride_Potion_lNtcrkgFGOJNaroE.json @@ -0,0 +1,105 @@ +{ + "name": "Stride Potion", + "type": "consumable", + "_id": "lNtcrkgFGOJNaroE", + "img": "icons/consumables/potions/potion-flask-corked-cyan.webp", + "system": { + "description": "You gain a +1 bonus to your next Agility Roll.
", + "quantity": 1, + "actions": { + "GwQgdB3E1HogFKvD": { + "type": "effect", + "_id": "GwQgdB3E1HogFKvD", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [ + { + "_id": "xQ0xPDxskzZH4jeK", + "onSave": false + } + ], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/potion-flask-corked-cyan.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [ + { + "name": "Stride Potion", + "img": "icons/consumables/potions/potion-flask-corked-cyan.webp", + "origin": "Compendium.daggerheart.consumables.Item.lNtcrkgFGOJNaroE", + "transfer": false, + "_id": "xQ0xPDxskzZH4jeK", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.traits.agility.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753586060323, + "modifiedTime": 1753586326926, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!lNtcrkgFGOJNaroE.xQ0xPDxskzZH4jeK" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753585993187, + "modifiedTime": 1753587999711, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!lNtcrkgFGOJNaroE" +} diff --git a/src/packs/items/consumables/consumable_Sun_Tree_Sap_kwexUzdM9wm1Qums.json b/src/packs/items/consumables/consumable_Sun_Tree_Sap_kwexUzdM9wm1Qums.json new file mode 100644 index 00000000..a1f1fbf7 --- /dev/null +++ b/src/packs/items/consumables/consumable_Sun_Tree_Sap_kwexUzdM9wm1Qums.json @@ -0,0 +1,55 @@ +{ + "name": "Sun Tree Sap", + "type": "consumable", + "_id": "kwexUzdM9wm1Qums", + "img": "icons/consumables/drinks/wine-amphora-clay-pink.webp", + "system": { + "description": "Consume this sap to roll a [[/r d6]]. On a result of 5–6, clear 2 HP. On a result of 2–4, clear 3 Stress. On a result of 1, see through the veil of death and return changed, gaining one scar.
", + "quantity": 1, + "actions": { + "bxM1ig880ykRgmTl": { + "type": "effect", + "_id": "bxM1ig880ykRgmTl", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/drinks/wine-amphora-clay-pink.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753590791260, + "modifiedTime": 1753590920951, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!kwexUzdM9wm1Qums" +} diff --git a/src/packs/items/consumables/consumable_Sweet_Moss_GrDrRqWgv7gvl9vn.json b/src/packs/items/consumables/consumable_Sweet_Moss_GrDrRqWgv7gvl9vn.json new file mode 100644 index 00000000..5db74f3b --- /dev/null +++ b/src/packs/items/consumables/consumable_Sweet_Moss_GrDrRqWgv7gvl9vn.json @@ -0,0 +1,32 @@ +{ + "name": "Sweet Moss", + "type": "consumable", + "_id": "GrDrRqWgv7gvl9vn", + "img": "icons/consumables/plants/succulent-bundle-green.webp", + "system": { + "description": "You can consume this moss during a rest to clear 1d10 HP or 1d10 Stress.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753592391195, + "modifiedTime": 1753623392811, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!GrDrRqWgv7gvl9vn" +} diff --git a/src/packs/items/consumables/consumable_Unstable_Arcane_Shard_mUepnLbkvFk0ha4Z.json b/src/packs/items/consumables/consumable_Unstable_Arcane_Shard_mUepnLbkvFk0ha4Z.json new file mode 100644 index 00000000..d8941f72 --- /dev/null +++ b/src/packs/items/consumables/consumable_Unstable_Arcane_Shard_mUepnLbkvFk0ha4Z.json @@ -0,0 +1,106 @@ +{ + "name": "Unstable Arcane Shard", + "type": "consumable", + "_id": "mUepnLbkvFk0ha4Z", + "img": "icons/commodities/gems/gem-faceted-cushion-teal-black.webp", + "system": { + "description": "You can make a Finesse Roll to throw this shard at a group of adversaries within Far range. Targets you succeed against take 1d20 magic damage.
", + "quantity": 1, + "actions": { + "D7BTCUV5DOXmqC0l": { + "type": "attack", + "_id": "D7BTCUV5DOXmqC0l", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "resultBased": false, + "value": { + "custom": { + "enabled": false + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d20", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [ + "magical" + ], + "base": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "hostile", + "amount": null + }, + "effects": [], + "roll": { + "type": "attack", + "trait": "finesse", + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": "above", + "treshold": 1 + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": 10, + "damageMod": "none" + }, + "name": "Throw", + "img": "icons/commodities/gems/gem-faceted-cushion-teal-black.webp", + "range": "far" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587732694, + "modifiedTime": 1753587875310, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!mUepnLbkvFk0ha4Z" +} diff --git a/src/packs/items/consumables/consumable_Varik_Leaves_hvy5BkG3F6iOIXTx.json b/src/packs/items/consumables/consumable_Varik_Leaves_hvy5BkG3F6iOIXTx.json new file mode 100644 index 00000000..2c6cff6d --- /dev/null +++ b/src/packs/items/consumables/consumable_Varik_Leaves_hvy5BkG3F6iOIXTx.json @@ -0,0 +1,32 @@ +{ + "name": "Varik Leaves", + "type": "consumable", + "_id": "hvy5BkG3F6iOIXTx", + "img": "icons/consumables/plants/leaf-serrated-pink.webp", + "system": { + "description": "You can eat these paired leaves to immediately gain 2 Hope.
", + "quantity": 1, + "actions": {}, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587484164, + "modifiedTime": 1753623431444, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!hvy5BkG3F6iOIXTx" +} diff --git a/src/packs/items/consumables/consumable_Vial_of_Darksmoke_Nwv5ydGf0MWnzq1n.json b/src/packs/items/consumables/consumable_Vial_of_Darksmoke_Nwv5ydGf0MWnzq1n.json new file mode 100644 index 00000000..8d4d1ae8 --- /dev/null +++ b/src/packs/items/consumables/consumable_Vial_of_Darksmoke_Nwv5ydGf0MWnzq1n.json @@ -0,0 +1,55 @@ +{ + "name": "Vial of Darksmoke", + "type": "consumable", + "_id": "Nwv5ydGf0MWnzq1n", + "img": "icons/consumables/potions/bottle-bulb-empty-glass.webp", + "system": { + "description": "When an adversary attacks you, use this vial and roll a number of d6s equal to your Agility. Add the highest result to your Evasion against the attack.
", + "quantity": 1, + "actions": { + "4nFnAoyH5dENizsx": { + "type": "effect", + "_id": "4nFnAoyH5dENizsx", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/consumables/potions/bottle-bulb-empty-glass.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753588345314, + "modifiedTime": 1753616649293, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!Nwv5ydGf0MWnzq1n" +} diff --git a/src/packs/items/consumables/consumable_Vial_of_Moondrip_VqEX5YwK5oL3r1t6.json b/src/packs/items/consumables/consumable_Vial_of_Moondrip_VqEX5YwK5oL3r1t6.json new file mode 100644 index 00000000..22b09db6 --- /dev/null +++ b/src/packs/items/consumables/consumable_Vial_of_Moondrip_VqEX5YwK5oL3r1t6.json @@ -0,0 +1,55 @@ +{ + "name": "Vial of Moondrip", + "type": "consumable", + "_id": "VqEX5YwK5oL3r1t6", + "img": "icons/consumables/potions/bottle-ornate-bat-teal.webp", + "system": { + "description": "When you drink the contents of this vial, you can see in total darkness until your next rest.
", + "quantity": 1, + "actions": { + "6Ny75zR1b8I8Ycsb": { + "type": "effect", + "_id": "6Ny75zR1b8I8Ycsb", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Drink", + "img": "icons/consumables/potions/bottle-ornate-bat-teal.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753587590537, + "modifiedTime": 1753588714959, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!VqEX5YwK5oL3r1t6" +} diff --git a/src/packs/items/consumables/consumable_Wingsprout_n10vozlmosVR6lo4.json b/src/packs/items/consumables/consumable_Wingsprout_n10vozlmosVR6lo4.json new file mode 100644 index 00000000..71ccfa52 --- /dev/null +++ b/src/packs/items/consumables/consumable_Wingsprout_n10vozlmosVR6lo4.json @@ -0,0 +1,55 @@ +{ + "name": "Wingsprout", + "type": "consumable", + "_id": "n10vozlmosVR6lo4", + "img": "icons/consumables/plants/leaf-broad-blue.webp", + "system": { + "description": "You gain magic wings that allow you to fly for a number of minutes equal to your level.
", + "quantity": 1, + "actions": { + "HopgGHn12CHiDNuk": { + "type": "effect", + "_id": "HopgGHn12CHiDNuk", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": null, + "amount": null + }, + "name": "Use", + "img": "icons/consumables/plants/leaf-broad-blue.webp", + "range": "" + } + }, + "consumeOnUse": true + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753591283853, + "modifiedTime": 1753591361344, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!n10vozlmosVR6lo4" +} diff --git a/src/packs/items/loot/loot_Airblade_Charm_cTYvyaSKBxosM9Y9.json b/src/packs/items/loot/loot_Airblade_Charm_cTYvyaSKBxosM9Y9.json new file mode 100644 index 00000000..fbfe3800 --- /dev/null +++ b/src/packs/items/loot/loot_Airblade_Charm_cTYvyaSKBxosM9Y9.json @@ -0,0 +1,54 @@ +{ + "name": "Airblade Charm", + "type": "loot", + "_id": "cTYvyaSKBxosM9Y9", + "img": "icons/equipment/neck/amulet-carved-stone-spiral-blue.webp", + "system": { + "description": "You can attach this charm to a weapon with a Melee range. Three times per rest, you can activate the charm and attack a target within Close range.
", + "quantity": 1, + "actions": { + "nlAfmdgfHTmsOdPb": { + "type": "effect", + "_id": "nlAfmdgfHTmsOdPb", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": 3, + "recovery": "shortRest" + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Activate", + "img": "icons/equipment/neck/amulet-carved-stone-spiral-blue.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753638435202, + "modifiedTime": 1753638500393, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!cTYvyaSKBxosM9Y9" +} diff --git a/src/packs/items/loot/loot_Alistair_s_Torch_MeEg57T6MKpw3sme.json b/src/packs/items/loot/loot_Alistair_s_Torch_MeEg57T6MKpw3sme.json new file mode 100644 index 00000000..8e77f2bb --- /dev/null +++ b/src/packs/items/loot/loot_Alistair_s_Torch_MeEg57T6MKpw3sme.json @@ -0,0 +1,31 @@ +{ + "name": "Alistair’s Torch", + "type": "loot", + "_id": "MeEg57T6MKpw3sme", + "img": "icons/sundries/lights/torch-brown-lit.webp", + "system": { + "description": "You can light this magic torch at will. The flame’s light fills a much larger space than it should, enough to illuminate a cave bright as day.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625181140, + "modifiedTime": 1753625205417, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!MeEg57T6MKpw3sme" +} diff --git a/src/packs/items/loot/loot_Arcane_Cloak_4STt98biZwjFoKOe.json b/src/packs/items/loot/loot_Arcane_Cloak_4STt98biZwjFoKOe.json new file mode 100644 index 00000000..c8b3c168 --- /dev/null +++ b/src/packs/items/loot/loot_Arcane_Cloak_4STt98biZwjFoKOe.json @@ -0,0 +1,31 @@ +{ + "name": "Arcane Cloak", + "type": "loot", + "_id": "4STt98biZwjFoKOe", + "img": "icons/equipment/back/cloak-layered-green-brown.webp", + "system": { + "description": "A creature with a Spellcast trait wearing this cloak can adjust its color, texture, and size at will.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625371758, + "modifiedTime": 1753625392529, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!4STt98biZwjFoKOe" +} diff --git a/src/packs/items/loot/loot_Arcane_Prism_Mn1eo2Mdtu1kzyxB.json b/src/packs/items/loot/loot_Arcane_Prism_Mn1eo2Mdtu1kzyxB.json new file mode 100644 index 00000000..b73f9fcd --- /dev/null +++ b/src/packs/items/loot/loot_Arcane_Prism_Mn1eo2Mdtu1kzyxB.json @@ -0,0 +1,104 @@ +{ + "name": "Arcane Prism", + "type": "loot", + "_id": "Mn1eo2Mdtu1kzyxB", + "img": "icons/commodities/gems/gem-faceted-trillion-blue.webp", + "system": { + "description": "", + "quantity": 1, + "actions": { + "QgBDJh0laEvOB94w": { + "type": "effect", + "_id": "QgBDJh0laEvOB94w", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": 1, + "recovery": "longRest" + }, + "effects": [ + { + "_id": "Ee3Z0PnyERiNFgjU", + "onSave": false + } + ], + "target": { + "type": "friendly", + "amount": null + }, + "name": "Activate", + "img": "icons/commodities/gems/gem-faceted-trillion-blue.webp", + "range": "close" + } + } + }, + "effects": [ + { + "name": "Arcane Prism", + "img": "icons/commodities/gems/gem-faceted-trillion-blue.webp", + "origin": "Compendium.daggerheart.loot.Item.Mn1eo2Mdtu1kzyxB", + "transfer": false, + "_id": "Ee3Z0PnyERiNFgjU", + "type": "base", + "system": {}, + "changes": [ + { + "key": "system.bonuses.roll.spellcast.bonus", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753626610878, + "modifiedTime": 1753626628337, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!Mn1eo2Mdtu1kzyxB.Ee3Z0PnyERiNFgjU" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753626536923, + "modifiedTime": 1753626610902, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!Mn1eo2Mdtu1kzyxB" +} diff --git a/src/packs/items/loot/loot_Attune_Relic_vK6bKyQTT3m8WvMh.json b/src/packs/items/loot/loot_Attune_Relic_vK6bKyQTT3m8WvMh.json new file mode 100644 index 00000000..6075ed0f --- /dev/null +++ b/src/packs/items/loot/loot_Attune_Relic_vK6bKyQTT3m8WvMh.json @@ -0,0 +1,76 @@ +{ + "name": "Attune Relic", + "type": "loot", + "_id": "vK6bKyQTT3m8WvMh", + "img": "icons/commodities/treasure/token-runed-spiral-grey.webp", + "system": { + "description": "You gain a +1 bonus to your Instinct. You can only carry one relic.
", + "quantity": 1, + "actions": {} + }, + "effects": [ + { + "name": "Attune Relic", + "type": "base", + "_id": "KmoJVnCQJUGyrZIk", + "img": "icons/magic/life/heart-cross-blue.webp", + "system": {}, + "changes": [ + { + "key": "system.traits.instinct.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639655271, + "modifiedTime": 1753639665432, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!vK6bKyQTT3m8WvMh.KmoJVnCQJUGyrZIk" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639587267, + "modifiedTime": 1753639733198, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!vK6bKyQTT3m8WvMh" +} diff --git a/src/packs/items/loot/loot_Bag_of_Ficklesand_v758j4FwNVAurhYK.json b/src/packs/items/loot/loot_Bag_of_Ficklesand_v758j4FwNVAurhYK.json new file mode 100644 index 00000000..954fc9e0 --- /dev/null +++ b/src/packs/items/loot/loot_Bag_of_Ficklesand_v758j4FwNVAurhYK.json @@ -0,0 +1,31 @@ +{ + "name": "Bag of Ficklesand", + "type": "loot", + "_id": "v758j4FwNVAurhYK", + "img": "icons/containers/bags/pouch-cloth-tan.webp", + "system": { + "description": "You can convince this small bag of sand to be much heavier or lighter with a successful [[/dr trait=\"presence\" difficulty=\"10\"]]. Additionally, on a successful [[/dr trait=\"finesse\" difficulty=\"10\"]], you can blow a bit of sand into a target’s face to make them temporarily Vulnerable.
Once per session, you can spend 5 Hope to lead a Tag Team Roll with three PCs instead of two.
", + "quantity": 1, + "actions": { + "SuaYNEUO9U9TIZWb": { + "type": "effect", + "_id": "SuaYNEUO9U9TIZWb", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "hope", + "value": 5, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": 1, + "recovery": "session" + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Use", + "img": "icons/equipment/waist/belt-buckle-ornate-steel.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640971116, + "modifiedTime": 1753641065768, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!gFzkUGCjkRJtyoe9" +} diff --git a/src/packs/items/loot/loot_Bloodstone_oMd78vhL2x2NO8Mg.json b/src/packs/items/loot/loot_Bloodstone_oMd78vhL2x2NO8Mg.json new file mode 100644 index 00000000..f5a19dff --- /dev/null +++ b/src/packs/items/loot/loot_Bloodstone_oMd78vhL2x2NO8Mg.json @@ -0,0 +1,31 @@ +{ + "name": "Bloodstone", + "type": "loot", + "_id": "oMd78vhL2x2NO8Mg", + "img": "icons/commodities/treasure/token-engraved-eye-red.webp", + "system": { + "description": "You can attach this stone to a weapon that doesn’t already have a feature. The weapon gains the following feature.
Brutal: When you roll the maximum value on a damage die, roll an additional damage die.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637532005, + "modifiedTime": 1753637570344, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!oMd78vhL2x2NO8Mg" +} diff --git a/src/packs/items/loot/loot_Bolster_Relic_m3EpxlDgxn2tCDDR.json b/src/packs/items/loot/loot_Bolster_Relic_m3EpxlDgxn2tCDDR.json new file mode 100644 index 00000000..2d38e186 --- /dev/null +++ b/src/packs/items/loot/loot_Bolster_Relic_m3EpxlDgxn2tCDDR.json @@ -0,0 +1,76 @@ +{ + "name": "Bolster Relic", + "type": "loot", + "_id": "m3EpxlDgxn2tCDDR", + "img": "icons/commodities/treasure/token-runed-radr-brown.webp", + "system": { + "description": "You gain a +1 bonus to your Strength. You can only carry one relic.
", + "quantity": 1, + "actions": {} + }, + "effects": [ + { + "name": "Bolster Relic", + "type": "base", + "_id": "ByYXvJNr5YbXqn8I", + "img": "icons/magic/life/heart-cross-blue.webp", + "system": {}, + "changes": [ + { + "key": "system.traits.strength.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639476499, + "modifiedTime": 1753639561079, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!m3EpxlDgxn2tCDDR.ByYXvJNr5YbXqn8I" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639461783, + "modifiedTime": 1753639473676, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!m3EpxlDgxn2tCDDR" +} 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 new file mode 100644 index 00000000..2856ffc7 --- /dev/null +++ b/src/packs/items/loot/loot_Box_of_Many_Goods_bZyT7Qw7iafswlTY.json @@ -0,0 +1,54 @@ +{ + "name": "Box of Many Goods", + "type": "loot", + "_id": "bZyT7Qw7iafswlTY", + "img": "icons/containers/boxes/crate-heavy-yellow.webp", + "system": { + "description": "Once per long rest, you can open this small box and roll a [[/r d12]]. On a result of 1–6, it’s empty. On a result of 7–10, it contains one random common consumable. On a result of 11–12, it contains two random common consumables.
", + "quantity": 1, + "actions": { + "5vW3p31WvGN6v8qc": { + "type": "effect", + "_id": "5vW3p31WvGN6v8qc", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": 1, + "recovery": "longRest" + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Open", + "img": "icons/containers/boxes/crate-heavy-yellow.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753638361357, + "modifiedTime": 1753638425801, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!bZyT7Qw7iafswlTY" +} diff --git a/src/packs/items/loot/loot_Calming_Pendant_tgFFMxpuRSiRrrEB.json b/src/packs/items/loot/loot_Calming_Pendant_tgFFMxpuRSiRrrEB.json new file mode 100644 index 00000000..44103e9a --- /dev/null +++ b/src/packs/items/loot/loot_Calming_Pendant_tgFFMxpuRSiRrrEB.json @@ -0,0 +1,31 @@ +{ + "name": "Calming Pendant", + "type": "loot", + "_id": "tgFFMxpuRSiRrrEB", + "img": "icons/equipment/neck/amulet-round-blue.webp", + "system": { + "description": "When you would mark your last Stress, roll a [[/r d6]]. On a result of 5 or higher, don’t mark it.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637842111, + "modifiedTime": 1753637884439, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!tgFFMxpuRSiRrrEB" +} diff --git a/src/packs/items/loot/loot_Charging_Quiver_gsUDP90d4SRtLEUn.json b/src/packs/items/loot/loot_Charging_Quiver_gsUDP90d4SRtLEUn.json new file mode 100644 index 00000000..8e41852a --- /dev/null +++ b/src/packs/items/loot/loot_Charging_Quiver_gsUDP90d4SRtLEUn.json @@ -0,0 +1,84 @@ +{ + "name": "Charging Quiver", + "type": "loot", + "_id": "gsUDP90d4SRtLEUn", + "img": "icons/containers/ammunition/arrows-quiver-grey-gold.webp", + "system": { + "description": "When you succeed on an attack with an arrow stored in this quiver, gain a bonus to the damage roll equal to your current tier.
", + "quantity": 1, + "actions": { + "VI11nILEneaigrRE": { + "type": "damage", + "_id": "VI11nILEneaigrRE", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "@tier" + }, + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "name": "Use Arrow", + "img": "icons/containers/ammunition/arrows-quiver-grey-gold.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625025089, + "modifiedTime": 1753625150698, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!gsUDP90d4SRtLEUn" +} diff --git a/src/packs/items/loot/loot_Charm_Relic_9P9jqGSlxVCbTdLe.json b/src/packs/items/loot/loot_Charm_Relic_9P9jqGSlxVCbTdLe.json new file mode 100644 index 00000000..301ac3d0 --- /dev/null +++ b/src/packs/items/loot/loot_Charm_Relic_9P9jqGSlxVCbTdLe.json @@ -0,0 +1,76 @@ +{ + "name": "Charm Relic", + "type": "loot", + "_id": "9P9jqGSlxVCbTdLe", + "img": "icons/commodities/treasure/token-runed-wyn-grey.webp", + "system": { + "description": "You gain a +1 bonus to your Presence. You can only carry one relic.
", + "quantity": 1, + "actions": {} + }, + "effects": [ + { + "name": "Charm Relic", + "type": "base", + "_id": "2yr8Ps6wvaG3b1qy", + "img": "icons/magic/life/heart-cross-blue.webp", + "system": {}, + "changes": [ + { + "key": "system.traits.presence.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639698545, + "modifiedTime": 1753639708693, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!9P9jqGSlxVCbTdLe.2yr8Ps6wvaG3b1qy" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639686831, + "modifiedTime": 1753639719586, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!9P9jqGSlxVCbTdLe" +} diff --git a/src/packs/items/loot/loot_Clay_Companion_lGIk9vBNz0jvskXD.json b/src/packs/items/loot/loot_Clay_Companion_lGIk9vBNz0jvskXD.json new file mode 100644 index 00000000..d60c928c --- /dev/null +++ b/src/packs/items/loot/loot_Clay_Companion_lGIk9vBNz0jvskXD.json @@ -0,0 +1,31 @@ +{ + "name": "Clay Companion", + "type": "loot", + "_id": "lGIk9vBNz0jvskXD", + "img": "icons/commodities/gems/pearl-brown.webp", + "system": { + "description": "When you sculpt this ball of clay into a clay animal companion, it behaves as that animal. For example, a clay spider can spin clay webs, while a clay bird can fly. The clay companion retains memory and identity across different shapes, but they can adopt new mannerisms with each form.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640057300, + "modifiedTime": 1753640276057, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!lGIk9vBNz0jvskXD" +} diff --git a/src/packs/items/loot/loot_Companion_Case_V25uXkAQvK3hUta4.json b/src/packs/items/loot/loot_Companion_Case_V25uXkAQvK3hUta4.json new file mode 100644 index 00000000..65854d4c --- /dev/null +++ b/src/packs/items/loot/loot_Companion_Case_V25uXkAQvK3hUta4.json @@ -0,0 +1,31 @@ +{ + "name": "Companion Case", + "type": "loot", + "_id": "V25uXkAQvK3hUta4", + "img": "icons/containers/chest/chest-reinforced-steel-red.webp", + "system": { + "description": "This case can fit a small animal companion. While the companion is inside, the animal and case are immune to all damage and harmful effects.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625898190, + "modifiedTime": 1753625935379, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!V25uXkAQvK3hUta4" +} diff --git a/src/packs/items/loot/loot_Control_Relic_QPGBDItjrRhXU6iJ.json b/src/packs/items/loot/loot_Control_Relic_QPGBDItjrRhXU6iJ.json new file mode 100644 index 00000000..7ec2343a --- /dev/null +++ b/src/packs/items/loot/loot_Control_Relic_QPGBDItjrRhXU6iJ.json @@ -0,0 +1,76 @@ +{ + "name": "Control Relic", + "type": "loot", + "_id": "QPGBDItjrRhXU6iJ", + "img": "icons/commodities/treasure/token-runed-sigel-brown.webp", + "system": { + "description": "You gain a +1 bonus to your Finesse. You can only carry one relic.
", + "quantity": 1, + "actions": {} + }, + "effects": [ + { + "name": "Control Relic", + "type": "base", + "_id": "OwjK2TqOizTiRGxD", + "img": "icons/magic/life/heart-cross-blue.webp", + "system": {}, + "changes": [ + { + "key": "system.traits.finesse.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639502481, + "modifiedTime": 1753639535252, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!QPGBDItjrRhXU6iJ.OwjK2TqOizTiRGxD" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639492071, + "modifiedTime": 1753639541446, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!QPGBDItjrRhXU6iJ" +} diff --git a/src/packs/items/loot/loot_Corrector_Sprite_G0RktbmtnuAlKCRH.json b/src/packs/items/loot/loot_Corrector_Sprite_G0RktbmtnuAlKCRH.json new file mode 100644 index 00000000..4a1a0848 --- /dev/null +++ b/src/packs/items/loot/loot_Corrector_Sprite_G0RktbmtnuAlKCRH.json @@ -0,0 +1,54 @@ +{ + "name": "Corrector Sprite", + "type": "loot", + "_id": "G0RktbmtnuAlKCRH", + "img": "icons/magic/light/orbs-smoke-pink.webp", + "system": { + "description": "This tiny sprite sits in the curve of your ear canal and whispers helpful advice during combat. Once per short rest, you can gain advantage on an attack roll.
", + "quantity": 1, + "actions": { + "saCkJzt1fb9GnEre": { + "type": "effect", + "_id": "saCkJzt1fb9GnEre", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": 1, + "recovery": "shortRest" + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Listen", + "img": "icons/magic/light/orbs-smoke-pink.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637155361, + "modifiedTime": 1753637366036, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!G0RktbmtnuAlKCRH" +} diff --git a/src/packs/items/loot/loot_Dual_Flask_HCvcAu3sdHCspGMP.json b/src/packs/items/loot/loot_Dual_Flask_HCvcAu3sdHCspGMP.json new file mode 100644 index 00000000..f99220c9 --- /dev/null +++ b/src/packs/items/loot/loot_Dual_Flask_HCvcAu3sdHCspGMP.json @@ -0,0 +1,31 @@ +{ + "name": "Dual Flask", + "type": "loot", + "_id": "HCvcAu3sdHCspGMP", + "img": "icons/consumables/potions/round-decorated-snake-green.webp", + "system": { + "description": "This flask can hold two different liquids. You can swap between them by flipping a small switch on the flask’s side.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637893309, + "modifiedTime": 1753637932763, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!HCvcAu3sdHCspGMP" +} diff --git a/src/packs/items/loot/loot_Elusive_Amulet_PkmTZXRMZL022O75.json b/src/packs/items/loot/loot_Elusive_Amulet_PkmTZXRMZL022O75.json new file mode 100644 index 00000000..02c2aa0f --- /dev/null +++ b/src/packs/items/loot/loot_Elusive_Amulet_PkmTZXRMZL022O75.json @@ -0,0 +1,99 @@ +{ + "name": "Elusive Amulet", + "type": "loot", + "_id": "PkmTZXRMZL022O75", + "img": "icons/equipment/neck/pendant-rough-silver-purple.webp", + "system": { + "description": "Once per long rest, you can activate this amulet to become Hidden until you move. While Hidden in this way, you remain unseen even if an adversary moves to where they would normally see you.
", + "quantity": 1, + "actions": { + "vitnEzfU3gCzsRem": { + "type": "effect", + "_id": "vitnEzfU3gCzsRem", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": 1, + "recovery": "longRest" + }, + "effects": [ + { + "_id": "YBkYjxU0Vn5JEsMK", + "onSave": false + } + ], + "target": { + "type": "any", + "amount": null + }, + "name": "Activate", + "img": "icons/equipment/neck/pendant-rough-silver-purple.webp", + "range": "" + } + } + }, + "effects": [ + { + "name": "Elusive Amulet", + "img": "icons/equipment/neck/pendant-rough-silver-purple.webp", + "origin": "Compendium.daggerheart.loot.Item.PkmTZXRMZL022O75", + "transfer": true, + "_id": "YBkYjxU0Vn5JEsMK", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [ + "hidden" + ], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639111583, + "modifiedTime": 1753639213582, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!PkmTZXRMZL022O75.YBkYjxU0Vn5JEsMK" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753638931971, + "modifiedTime": 1753639111606, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!PkmTZXRMZL022O75" +} diff --git a/src/packs/items/loot/loot_Empty_Chest_p2yy61uKsyIsl8cU.json b/src/packs/items/loot/loot_Empty_Chest_p2yy61uKsyIsl8cU.json new file mode 100644 index 00000000..bb6ca519 --- /dev/null +++ b/src/packs/items/loot/loot_Empty_Chest_p2yy61uKsyIsl8cU.json @@ -0,0 +1,31 @@ +{ + "name": "Empty Chest", + "type": "loot", + "_id": "p2yy61uKsyIsl8cU", + "img": "icons/containers/chest/chest-simple-box-gold-brown.webp", + "system": { + "description": "This magical chest appears empty. When you speak a specific trigger word or action and open the chest, you can see the items stored within it.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625859659, + "modifiedTime": 1753625887033, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!p2yy61uKsyIsl8cU" +} diff --git a/src/packs/items/loot/loot_Enlighten_Relic_vSGx1f9SYUiA29L3.json b/src/packs/items/loot/loot_Enlighten_Relic_vSGx1f9SYUiA29L3.json new file mode 100644 index 00000000..aa5e9b4d --- /dev/null +++ b/src/packs/items/loot/loot_Enlighten_Relic_vSGx1f9SYUiA29L3.json @@ -0,0 +1,76 @@ +{ + "name": "Enlighten Relic", + "type": "loot", + "_id": "vSGx1f9SYUiA29L3", + "img": "icons/commodities/treasure/token-runed-os-grey.webp", + "system": { + "description": "You gain a +1 bonus to your Knowledge. You can only carry one relic.
", + "quantity": 1, + "actions": {} + }, + "effects": [ + { + "name": "Enlighten Relic", + "type": "base", + "_id": "aWOGlmqC9l86GlFV", + "img": "icons/magic/life/heart-cross-blue.webp", + "system": {}, + "changes": [ + { + "key": "system.traits.knowledge.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639757883, + "modifiedTime": 1753639770922, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!vSGx1f9SYUiA29L3.aWOGlmqC9l86GlFV" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639753586, + "modifiedTime": 1753639789835, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!vSGx1f9SYUiA29L3" +} diff --git a/src/packs/items/loot/loot_Fire_Jar_X6RMkIt89wf7qX2E.json b/src/packs/items/loot/loot_Fire_Jar_X6RMkIt89wf7qX2E.json new file mode 100644 index 00000000..bcdda979 --- /dev/null +++ b/src/packs/items/loot/loot_Fire_Jar_X6RMkIt89wf7qX2E.json @@ -0,0 +1,54 @@ +{ + "name": "Fire Jar", + "type": "loot", + "_id": "X6RMkIt89wf7qX2E", + "img": "icons/containers/kitchenware/jug-wrapped-red.webp", + "system": { + "description": "You can pour out the strange liquid contents of this jar to instantly produce fire. The contents regenerate when you take a long rest.
", + "quantity": 1, + "actions": { + "nzXMuxD8DpT1dMXF": { + "type": "effect", + "_id": "nzXMuxD8DpT1dMXF", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": 1, + "max": 1, + "recovery": "longRest" + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Pour", + "img": "icons/containers/kitchenware/jug-wrapped-red.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625575791, + "modifiedTime": 1753625617382, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!X6RMkIt89wf7qX2E" +} diff --git a/src/packs/items/loot/loot_Flickerfly_Pendant_9VKYSBQxN9XFWlAm.json b/src/packs/items/loot/loot_Flickerfly_Pendant_9VKYSBQxN9XFWlAm.json new file mode 100644 index 00000000..bb7f8495 --- /dev/null +++ b/src/packs/items/loot/loot_Flickerfly_Pendant_9VKYSBQxN9XFWlAm.json @@ -0,0 +1,31 @@ +{ + "name": "Flickerfly Pendant", + "type": "loot", + "_id": "9VKYSBQxN9XFWlAm", + "img": "icons/equipment/neck/choker-rough-green.webp", + "system": { + "description": "While you carry this pendant, your weapons with a Melee range that deal physical damage have a gossamer sheen and can attack targets within Very Close range.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639935227, + "modifiedTime": 1753639964153, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!9VKYSBQxN9XFWlAm" +} diff --git a/src/packs/items/loot/loot_Gecko_Gloves_CGzjBpHJRG8KSt5Y.json b/src/packs/items/loot/loot_Gecko_Gloves_CGzjBpHJRG8KSt5Y.json new file mode 100644 index 00000000..3dbdae76 --- /dev/null +++ b/src/packs/items/loot/loot_Gecko_Gloves_CGzjBpHJRG8KSt5Y.json @@ -0,0 +1,31 @@ +{ + "name": "Gecko Gloves", + "type": "loot", + "_id": "CGzjBpHJRG8KSt5Y", + "img": "icons/equipment/hand/glove-ring-leather-green.webp", + "system": { + "description": "You can climb up vertical surfaces and across ceilings.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637390470, + "modifiedTime": 1753637455936, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!CGzjBpHJRG8KSt5Y" +} diff --git a/src/packs/items/loot/loot_Gem_of_Alacrity_zecFwBUSWtB3HW8X.json b/src/packs/items/loot/loot_Gem_of_Alacrity_zecFwBUSWtB3HW8X.json new file mode 100644 index 00000000..86b17e74 --- /dev/null +++ b/src/packs/items/loot/loot_Gem_of_Alacrity_zecFwBUSWtB3HW8X.json @@ -0,0 +1,31 @@ +{ + "name": "Gem of Alacrity", + "type": "loot", + "_id": "zecFwBUSWtB3HW8X", + "img": "icons/commodities/gems/gem-rough-ball-purple.webp", + "system": { + "description": "You can attach this gem to a weapon, allowing you to use your Agility when making an attack with that weapon.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640285473, + "modifiedTime": 1753640317903, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!zecFwBUSWtB3HW8X" +} diff --git a/src/packs/items/loot/loot_Gem_of_Audacity_hMu9It3ThCLCXuCA.json b/src/packs/items/loot/loot_Gem_of_Audacity_hMu9It3ThCLCXuCA.json new file mode 100644 index 00000000..07d44a2c --- /dev/null +++ b/src/packs/items/loot/loot_Gem_of_Audacity_hMu9It3ThCLCXuCA.json @@ -0,0 +1,31 @@ +{ + "name": "Gem of Audacity", + "type": "loot", + "_id": "hMu9It3ThCLCXuCA", + "img": "icons/commodities/gems/gem-rough-cushion-pink-yellow.webp", + "system": { + "description": "You can attach this gem to a weapon, allowing you to use your Presence when making an attack with that weapon.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640590771, + "modifiedTime": 1753640602606, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!hMu9It3ThCLCXuCA" +} diff --git a/src/packs/items/loot/loot_Gem_of_Insight_TbgeT9ZxKHqFqJSN.json b/src/packs/items/loot/loot_Gem_of_Insight_TbgeT9ZxKHqFqJSN.json new file mode 100644 index 00000000..03743b23 --- /dev/null +++ b/src/packs/items/loot/loot_Gem_of_Insight_TbgeT9ZxKHqFqJSN.json @@ -0,0 +1,31 @@ +{ + "name": "Gem of Insight", + "type": "loot", + "_id": "TbgeT9ZxKHqFqJSN", + "img": "icons/commodities/gems/gem-rough-cushion-blue.webp", + "system": { + "description": "You can attach this gem to a weapon, allowing you to use your Instinct when making an attack with that weapon.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640563344, + "modifiedTime": 1753640580953, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!TbgeT9ZxKHqFqJSN" +} diff --git a/src/packs/items/loot/loot_Gem_of_Might_rtSInNPc4B3ChBUZ.json b/src/packs/items/loot/loot_Gem_of_Might_rtSInNPc4B3ChBUZ.json new file mode 100644 index 00000000..8395388f --- /dev/null +++ b/src/packs/items/loot/loot_Gem_of_Might_rtSInNPc4B3ChBUZ.json @@ -0,0 +1,31 @@ +{ + "name": "Gem of Might", + "type": "loot", + "_id": "rtSInNPc4B3ChBUZ", + "img": "icons/commodities/gems/gem-rough-brilliant-green.webp", + "system": { + "description": "You can attach this gem to a weapon, allowing you to use your Strength when making an attack with that weapon.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640512721, + "modifiedTime": 1753640527143, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!rtSInNPc4B3ChBUZ" +} diff --git a/src/packs/items/loot/loot_Gem_of_Precision_CrvJ7vb4s40YgEcy.json b/src/packs/items/loot/loot_Gem_of_Precision_CrvJ7vb4s40YgEcy.json new file mode 100644 index 00000000..6dc57398 --- /dev/null +++ b/src/packs/items/loot/loot_Gem_of_Precision_CrvJ7vb4s40YgEcy.json @@ -0,0 +1,31 @@ +{ + "name": "Gem of Precision", + "type": "loot", + "_id": "CrvJ7vb4s40YgEcy", + "img": "icons/commodities/gems/gem-rough-cushion-green.webp", + "system": { + "description": "You can attach this gem to a weapon, allowing you to use your Finesse when making an attack with that weapon.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640535939, + "modifiedTime": 1753640553552, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!CrvJ7vb4s40YgEcy" +} diff --git a/src/packs/items/loot/loot_Gem_of_Sagacity_ua351S7CsH22X1x2.json b/src/packs/items/loot/loot_Gem_of_Sagacity_ua351S7CsH22X1x2.json new file mode 100644 index 00000000..4128007b --- /dev/null +++ b/src/packs/items/loot/loot_Gem_of_Sagacity_ua351S7CsH22X1x2.json @@ -0,0 +1,31 @@ +{ + "name": "Gem of Sagacity", + "type": "loot", + "_id": "ua351S7CsH22X1x2", + "img": "icons/commodities/gems/gem-rough-cushion-purple.webp", + "system": { + "description": "You can attach this gem to a weapon, allowing you to use your Knowledge when making an attack with that weapon.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640610217, + "modifiedTime": 1753640623916, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!ua351S7CsH22X1x2" +} diff --git a/src/packs/items/loot/loot_Glamour_Stone_Pj17cvdJ1XG1jv6I.json b/src/packs/items/loot/loot_Glamour_Stone_Pj17cvdJ1XG1jv6I.json new file mode 100644 index 00000000..dacc4376 --- /dev/null +++ b/src/packs/items/loot/loot_Glamour_Stone_Pj17cvdJ1XG1jv6I.json @@ -0,0 +1,62 @@ +{ + "name": "Glamour Stone", + "type": "loot", + "_id": "Pj17cvdJ1XG1jv6I", + "img": "icons/commodities/treasure/token-engraved-purple-glowing.webp", + "system": { + "description": "Activate this pebble-sized stone to memorize the appearance of someone you can see. Spend a Hope to magically recreate this guise on yourself as an illusion.
", + "quantity": 1, + "actions": { + "ATQgH12mufTOQLKs": { + "type": "effect", + "_id": "ATQgH12mufTOQLKs", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Create Illusion", + "img": "icons/commodities/treasure/token-engraved-purple-glowing.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625773657, + "modifiedTime": 1753625847459, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!Pj17cvdJ1XG1jv6I" +} diff --git a/src/packs/items/loot/loot_Glider_CiXwelozmBDcPY48.json b/src/packs/items/loot/loot_Glider_CiXwelozmBDcPY48.json new file mode 100644 index 00000000..05211e72 --- /dev/null +++ b/src/packs/items/loot/loot_Glider_CiXwelozmBDcPY48.json @@ -0,0 +1,31 @@ +{ + "name": "Glider", + "type": "loot", + "_id": "CiXwelozmBDcPY48", + "img": "icons/commodities/leather/leather-patch-red.webp", + "system": { + "description": "While falling, you can mark a Stress to deploy this small parachute and glide safely to the ground.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637642501, + "modifiedTime": 1753637766985, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!CiXwelozmBDcPY48" +} diff --git a/src/packs/items/loot/loot_Greatstone_y7zABzR0Q2fRskTw.json b/src/packs/items/loot/loot_Greatstone_y7zABzR0Q2fRskTw.json new file mode 100644 index 00000000..e19ac9a6 --- /dev/null +++ b/src/packs/items/loot/loot_Greatstone_y7zABzR0Q2fRskTw.json @@ -0,0 +1,31 @@ +{ + "name": "Greatstone", + "type": "loot", + "_id": "y7zABzR0Q2fRskTw", + "img": "icons/commodities/treasure/token-etched-h-brown.webp", + "system": { + "description": "You can attach this stone to a weapon that doesn’t already have a feature. The weapon gains the following feature.
Powerful: On a successful attack, roll an additional damage die and discard the lowest result.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637596921, + "modifiedTime": 1753637633941, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!y7zABzR0Q2fRskTw" +} diff --git a/src/packs/items/loot/loot_Homing_Compasses_yrAGYlDyoe4OYl7d.json b/src/packs/items/loot/loot_Homing_Compasses_yrAGYlDyoe4OYl7d.json new file mode 100644 index 00000000..be6e9ad5 --- /dev/null +++ b/src/packs/items/loot/loot_Homing_Compasses_yrAGYlDyoe4OYl7d.json @@ -0,0 +1,31 @@ +{ + "name": "Homing Compasses", + "type": "loot", + "_id": "yrAGYlDyoe4OYl7d", + "img": "icons/tools/navigation/compass-worn-copper.webp", + "system": { + "description": "These two compasses point toward each other no matter how far apart they are.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637089789, + "modifiedTime": 1753637129113, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!yrAGYlDyoe4OYl7d" +} diff --git a/src/packs/items/loot/loot_Honing_Relic_SAAnEAeXDnhBbLjB.json b/src/packs/items/loot/loot_Honing_Relic_SAAnEAeXDnhBbLjB.json new file mode 100644 index 00000000..4fb5b0de --- /dev/null +++ b/src/packs/items/loot/loot_Honing_Relic_SAAnEAeXDnhBbLjB.json @@ -0,0 +1,31 @@ +{ + "name": "Honing Relic", + "type": "loot", + "_id": "SAAnEAeXDnhBbLjB", + "img": "icons/commodities/treasure/token-runed-nyd-yellow.webp", + "system": { + "description": "You gain a +1 bonus to an Experience of your choice. You can only carry one relic.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639799902, + "modifiedTime": 1753639815534, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!SAAnEAeXDnhBbLjB" +} diff --git a/src/packs/items/loot/loot_Hopekeeper_Locket_9DcFR75tsnBYIp6Z.json b/src/packs/items/loot/loot_Hopekeeper_Locket_9DcFR75tsnBYIp6Z.json new file mode 100644 index 00000000..6899908f --- /dev/null +++ b/src/packs/items/loot/loot_Hopekeeper_Locket_9DcFR75tsnBYIp6Z.json @@ -0,0 +1,124 @@ +{ + "name": "Hopekeeper Locket", + "type": "loot", + "_id": "9DcFR75tsnBYIp6Z", + "img": "icons/equipment/neck/amulet-round-engraved-spiral-gold.webp", + "system": { + "description": "During a long rest, if you have 6 Hope, you can spend a Hope to imbue this locket with your bountiful resolve.
When you have 0 Hope, you can use the locket to immediately gain a Hope. The locket must be re-imbued before it can be used this way again.
", + "quantity": 1, + "actions": { + "iwDm6P1ABr7vojGr": { + "type": "effect", + "_id": "iwDm6P1ABr7vojGr", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Imbue", + "img": "icons/equipment/neck/amulet-round-engraved-spiral-gold.webp", + "range": "" + }, + "xof31iSNIfxhbZH9": { + "type": "healing", + "_id": "xof31iSNIfxhbZH9", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "healing": { + "applyTo": "hope", + "resultBased": false, + "value": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": true, + "formula": "1" + } + }, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + }, + "base": false, + "type": [] + }, + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": "above", + "treshold": 1 + }, + "useDefault": false + }, + "name": "Use", + "img": "icons/equipment/neck/amulet-round-engraved-spiral-gold.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639224510, + "modifiedTime": 1753639329411, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!9DcFR75tsnBYIp6Z" +} diff --git a/src/packs/items/loot/loot_Infinite_Bag_Iedjw1LVWEozVh0J.json b/src/packs/items/loot/loot_Infinite_Bag_Iedjw1LVWEozVh0J.json new file mode 100644 index 00000000..83044c0f --- /dev/null +++ b/src/packs/items/loot/loot_Infinite_Bag_Iedjw1LVWEozVh0J.json @@ -0,0 +1,31 @@ +{ + "name": "Infinite Bag", + "type": "loot", + "_id": "Iedjw1LVWEozVh0J", + "img": "icons/containers/bags/pack-engraved-leather-blue.webp", + "system": { + "description": "When you store items in this bag, they are kept in a pocket dimension that never runs out of space. You can retrieve an item at any time.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639339762, + "modifiedTime": 1753639361505, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!Iedjw1LVWEozVh0J" +} diff --git a/src/packs/items/loot/loot_Lakestrider_Boots_NgvmrJYKpA2PrRSo.json b/src/packs/items/loot/loot_Lakestrider_Boots_NgvmrJYKpA2PrRSo.json new file mode 100644 index 00000000..b64c2faf --- /dev/null +++ b/src/packs/items/loot/loot_Lakestrider_Boots_NgvmrJYKpA2PrRSo.json @@ -0,0 +1,31 @@ +{ + "name": "Lakestrider Boots", + "type": "loot", + "_id": "NgvmrJYKpA2PrRSo", + "img": "icons/equipment/feet/shoes-collared-leather-blue.webp", + "system": { + "description": "You can walk on the surface of water as if it were soft ground.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639975496, + "modifiedTime": 1753639999823, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!NgvmrJYKpA2PrRSo" +} diff --git a/src/packs/items/loot/loot_Lorekeeper_JsPYzrqpITqGj23I.json b/src/packs/items/loot/loot_Lorekeeper_JsPYzrqpITqGj23I.json new file mode 100644 index 00000000..8a1fd26e --- /dev/null +++ b/src/packs/items/loot/loot_Lorekeeper_JsPYzrqpITqGj23I.json @@ -0,0 +1,31 @@ +{ + "name": "Lorekeeper", + "type": "loot", + "_id": "JsPYzrqpITqGj23I", + "img": "icons/sundries/books/book-backed-wood-tan.webp", + "system": { + "description": "You can store the name and details of up to three hostile creatures inside this book. You gain a +1 bonus to action rolls against those creatures.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637467427, + "modifiedTime": 1753637489198, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!JsPYzrqpITqGj23I" +} diff --git a/src/packs/items/loot/loot_Manacles_GkmATIuemyFtQX1D.json b/src/packs/items/loot/loot_Manacles_GkmATIuemyFtQX1D.json new file mode 100644 index 00000000..cbeb9f38 --- /dev/null +++ b/src/packs/items/loot/loot_Manacles_GkmATIuemyFtQX1D.json @@ -0,0 +1,31 @@ +{ + "name": "Manacles", + "type": "loot", + "_id": "GkmATIuemyFtQX1D", + "img": "icons/sundries/survival/cuffs-shackles-steel.webp", + "system": { + "description": "This pair of locking cuffs comes with a key.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625337217, + "modifiedTime": 1753625362038, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!GkmATIuemyFtQX1D" +} diff --git a/src/packs/items/loot/loot_Minor_Health_Potion_Recipe_PQxvxAVBbkt0TleC.json b/src/packs/items/loot/loot_Minor_Health_Potion_Recipe_PQxvxAVBbkt0TleC.json new file mode 100644 index 00000000..2d8c286b --- /dev/null +++ b/src/packs/items/loot/loot_Minor_Health_Potion_Recipe_PQxvxAVBbkt0TleC.json @@ -0,0 +1,31 @@ +{ + "name": "Minor Health Potion Recipe", + "type": "loot", + "_id": "PQxvxAVBbkt0TleC", + "img": "icons/sundries/scrolls/scroll-bound-red.webp", + "system": { + "description": "As a downtime move, you can use a vial of blood to craft a Minor Health Potion.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637045921, + "modifiedTime": 1753637071130, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!PQxvxAVBbkt0TleC" +} diff --git a/src/packs/items/loot/loot_Minor_Stamina_Potion_Recipe_1TLpFsp3PLDsqoTw.json b/src/packs/items/loot/loot_Minor_Stamina_Potion_Recipe_1TLpFsp3PLDsqoTw.json new file mode 100644 index 00000000..d963d82d --- /dev/null +++ b/src/packs/items/loot/loot_Minor_Stamina_Potion_Recipe_1TLpFsp3PLDsqoTw.json @@ -0,0 +1,31 @@ +{ + "name": "Minor Stamina Potion Recipe", + "type": "loot", + "_id": "1TLpFsp3PLDsqoTw", + "img": "icons/sundries/scrolls/scroll-bound-green.webp", + "system": { + "description": "As a downtime move, you can use the bone of a creature to craft a Minor Stamina Potion.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753626639554, + "modifiedTime": 1753626666369, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!1TLpFsp3PLDsqoTw" +} diff --git a/src/packs/items/loot/loot_Mythic_Dust_Recipe_5YZls8XH3MB7twNa.json b/src/packs/items/loot/loot_Mythic_Dust_Recipe_5YZls8XH3MB7twNa.json new file mode 100644 index 00000000..2325a405 --- /dev/null +++ b/src/packs/items/loot/loot_Mythic_Dust_Recipe_5YZls8XH3MB7twNa.json @@ -0,0 +1,31 @@ +{ + "name": "Mythic Dust Recipe", + "type": "loot", + "_id": "5YZls8XH3MB7twNa", + "img": "icons/sundries/scrolls/scroll-bound-green.webp", + "system": { + "description": "As a downtime move, you can use a handful of fine gold dust to craft Mythic Dust.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640163566, + "modifiedTime": 1753640190943, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!5YZls8XH3MB7twNa" +} diff --git a/src/packs/items/loot/loot_Paragon_s_Chain_F4hoRfvVdZq5bhhI.json b/src/packs/items/loot/loot_Paragon_s_Chain_F4hoRfvVdZq5bhhI.json new file mode 100644 index 00000000..f62b7895 --- /dev/null +++ b/src/packs/items/loot/loot_Paragon_s_Chain_F4hoRfvVdZq5bhhI.json @@ -0,0 +1,62 @@ +{ + "name": "Paragon’s Chain", + "type": "loot", + "_id": "F4hoRfvVdZq5bhhI", + "img": "icons/equipment/neck/choker-chain-thin-gold.webp", + "system": { + "description": "As a downtime move, you can meditate on an ideal or principle you hold dear and focus your will into this chain.
Once per long rest, you can spend a Hope to roll a d20 as your Hope Die for rolls that directly align with that principle.
", + "quantity": 1, + "actions": { + "esnUuqMcvyOvI6PV": { + "type": "effect", + "_id": "esnUuqMcvyOvI6PV", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": 1, + "recovery": "longRest" + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Use", + "img": "icons/equipment/neck/choker-chain-thin-gold.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753638721391, + "modifiedTime": 1753638917868, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!F4hoRfvVdZq5bhhI" +} diff --git a/src/packs/items/loot/loot_Phoenix_Feather_QNtzJSVENww63THa.json b/src/packs/items/loot/loot_Phoenix_Feather_QNtzJSVENww63THa.json new file mode 100644 index 00000000..a51d206b --- /dev/null +++ b/src/packs/items/loot/loot_Phoenix_Feather_QNtzJSVENww63THa.json @@ -0,0 +1,31 @@ +{ + "name": "Phoenix Feather", + "type": "loot", + "_id": "QNtzJSVENww63THa", + "img": "icons/commodities/materials/feather-red.webp", + "system": { + "description": "If you have at least one Phoenix Feather on you when you fall unconscious, you gain a +1 bonus to the roll you make to determine whether you gain a scar.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753638285123, + "modifiedTime": 1753638336982, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!QNtzJSVENww63THa" +} diff --git a/src/packs/items/loot/loot_Piercing_Arrows_I63LTFD6GXHgyGpR.json b/src/packs/items/loot/loot_Piercing_Arrows_I63LTFD6GXHgyGpR.json new file mode 100644 index 00000000..152a15f3 --- /dev/null +++ b/src/packs/items/loot/loot_Piercing_Arrows_I63LTFD6GXHgyGpR.json @@ -0,0 +1,84 @@ +{ + "name": "Piercing Arrows", + "type": "loot", + "_id": "I63LTFD6GXHgyGpR", + "img": "icons/weapons/ammunition/arrow-broadhead-glowing-orange.webp", + "system": { + "description": "Three times per rest when you succeed on an attack with one of these arrows, you can add your Proficiency to the damage roll.
", + "quantity": 1, + "actions": { + "0TomBo6UygDFhawG": { + "type": "damage", + "_id": "0TomBo6UygDFhawG", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": 3, + "recovery": "shortRest" + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "@prof" + }, + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "hitPoints", + "type": [], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "name": "Use Arrow", + "img": "icons/weapons/ammunition/arrow-broadhead-glowing-orange.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625947079, + "modifiedTime": 1753626142491, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!I63LTFD6GXHgyGpR" +} diff --git a/src/packs/items/loot/loot_Piper_Whistle_v4PIoCCEjeE3acys.json b/src/packs/items/loot/loot_Piper_Whistle_v4PIoCCEjeE3acys.json new file mode 100644 index 00000000..b0e2954c --- /dev/null +++ b/src/packs/items/loot/loot_Piper_Whistle_v4PIoCCEjeE3acys.json @@ -0,0 +1,31 @@ +{ + "name": "Piper Whistle", + "type": "loot", + "_id": "v4PIoCCEjeE3acys", + "img": "icons/tools/instruments/pipe-flue-tan.webp", + "system": { + "description": "This handcrafted whistle has a distinctive sound. When you blow this whistle, its piercing tone can be heard within a 1-mile radius.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753624968366, + "modifiedTime": 1753625011843, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!v4PIoCCEjeE3acys" +} diff --git a/src/packs/items/loot/loot_Portal_Seed_eRd5Gk7J7hPCqp11.json b/src/packs/items/loot/loot_Portal_Seed_eRd5Gk7J7hPCqp11.json new file mode 100644 index 00000000..4eb1e0d7 --- /dev/null +++ b/src/packs/items/loot/loot_Portal_Seed_eRd5Gk7J7hPCqp11.json @@ -0,0 +1,31 @@ +{ + "name": "Portal Seed", + "type": "loot", + "_id": "eRd5Gk7J7hPCqp11", + "img": "icons/commodities/treasure/egg-ornate-green-gold.webp", + "system": { + "description": "You can plant this seed in the ground to grow a portal in that spot. The portal is ready to use in 24 hours. You can use this portal to travel to any other location where you planted a portal seed. A portal can be destroyed by dealing any amount of magic damage to it.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753638512020, + "modifiedTime": 1753638586392, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!eRd5Gk7J7hPCqp11" +} diff --git a/src/packs/items/loot/loot_Premium_Bedroll_QGYPNBIufpBguwjC.json b/src/packs/items/loot/loot_Premium_Bedroll_QGYPNBIufpBguwjC.json new file mode 100644 index 00000000..9d90b78b --- /dev/null +++ b/src/packs/items/loot/loot_Premium_Bedroll_QGYPNBIufpBguwjC.json @@ -0,0 +1,93 @@ +{ + "name": "Premium Bedroll", + "type": "loot", + "_id": "QGYPNBIufpBguwjC", + "img": "icons/sundries/survival/bedroll-blue-red.webp", + "system": { + "description": "During downtime, you automatically clear a Stress.
", + "quantity": 1, + "actions": { + "Xe0zhVbSzZLgX1nC": { + "type": "healing", + "_id": "Xe0zhVbSzZLgX1nC", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "healing": { + "applyTo": "hitPoints", + "resultBased": false, + "value": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + }, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false + } + }, + "base": false, + "type": [] + }, + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": "above", + "treshold": 1 + }, + "useDefault": false + }, + "name": "Take a nap", + "img": "icons/sundries/survival/bedroll-blue-red.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753624827945, + "modifiedTime": 1753624908866, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!QGYPNBIufpBguwjC" +} diff --git a/src/packs/items/loot/loot_Ring_of_Resistance_aUqRifqR5JXXa1dN.json b/src/packs/items/loot/loot_Ring_of_Resistance_aUqRifqR5JXXa1dN.json new file mode 100644 index 00000000..f241cf1f --- /dev/null +++ b/src/packs/items/loot/loot_Ring_of_Resistance_aUqRifqR5JXXa1dN.json @@ -0,0 +1,54 @@ +{ + "name": "Ring of Resistance", + "type": "loot", + "_id": "aUqRifqR5JXXa1dN", + "img": "icons/equipment/finger/ring-shield-silver.webp", + "system": { + "description": "Once per long rest, you can activate this ring after a successful attack against you to halve the damage.
", + "quantity": 1, + "actions": { + "4swwe8SZeh2KyPtl": { + "type": "effect", + "_id": "4swwe8SZeh2KyPtl", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": 1, + "recovery": "longRest" + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Activate", + "img": "icons/equipment/finger/ring-shield-silver.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753638222884, + "modifiedTime": 1753638266245, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!aUqRifqR5JXXa1dN" +} diff --git a/src/packs/items/loot/loot_Ring_of_Silence_K1ysGnTpNyxPu5Au.json b/src/packs/items/loot/loot_Ring_of_Silence_K1ysGnTpNyxPu5Au.json new file mode 100644 index 00000000..42129a61 --- /dev/null +++ b/src/packs/items/loot/loot_Ring_of_Silence_K1ysGnTpNyxPu5Au.json @@ -0,0 +1,62 @@ +{ + "name": "Ring of Silence", + "type": "loot", + "_id": "K1ysGnTpNyxPu5Au", + "img": "icons/equipment/finger/ring-ball-purple.webp", + "system": { + "description": "Spend a Hope to activate this ring. Your footsteps are silent until your next rest.
", + "quantity": 1, + "actions": { + "Y4mvuJ4tncrKhyjY": { + "type": "effect", + "_id": "Y4mvuJ4tncrKhyjY", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "keyIsID": false, + "key": "hope", + "value": 1, + "scalable": false, + "step": null + } + ], + "uses": { + "value": null, + "max": 1, + "recovery": "shortRest" + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Activate", + "img": "icons/equipment/finger/ring-ball-purple.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637775628, + "modifiedTime": 1753637832657, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!K1ysGnTpNyxPu5Au" +} diff --git a/src/packs/items/loot/loot_Ring_of_Unbreakable_Resolve_kn71qCQY0DnjmQBJ.json b/src/packs/items/loot/loot_Ring_of_Unbreakable_Resolve_kn71qCQY0DnjmQBJ.json new file mode 100644 index 00000000..94f8bdec --- /dev/null +++ b/src/packs/items/loot/loot_Ring_of_Unbreakable_Resolve_kn71qCQY0DnjmQBJ.json @@ -0,0 +1,62 @@ +{ + "name": "Ring of Unbreakable Resolve", + "type": "loot", + "_id": "kn71qCQY0DnjmQBJ", + "img": "icons/equipment/finger/ring-faceted-gold-teal.webp", + "system": { + "description": "Once per session, when the GM spends a Fear, you can spend 4 Hope to cancel the effects of that spent Fear.
", + "quantity": 1, + "actions": { + "R92d0DSVEwmqNJhM": { + "type": "effect", + "_id": "R92d0DSVEwmqNJhM", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "hope", + "value": 4, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": 1, + "recovery": "session" + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Use", + "img": "icons/equipment/finger/ring-faceted-gold-teal.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640632212, + "modifiedTime": 1753640958684, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!kn71qCQY0DnjmQBJ" +} diff --git a/src/packs/items/loot/loot_Shard_of_Memory_2ULPgNyqCrxea0v0.json b/src/packs/items/loot/loot_Shard_of_Memory_2ULPgNyqCrxea0v0.json new file mode 100644 index 00000000..0291485e --- /dev/null +++ b/src/packs/items/loot/loot_Shard_of_Memory_2ULPgNyqCrxea0v0.json @@ -0,0 +1,62 @@ +{ + "name": "Shard of Memory", + "type": "loot", + "_id": "2ULPgNyqCrxea0v0", + "img": "icons/commodities/gems/gem-rough-navette-purple-pink.webp", + "system": { + "description": "Once per long rest, you can spend 2 Hope to recall a domain card from your vault instead of paying its Recall
Cost.
", + "quantity": 1, + "actions": { + "YNRybKQC51muVHYH": { + "type": "effect", + "_id": "YNRybKQC51muVHYH", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "hope", + "value": 2, + "keyIsID": false, + "step": null + } + ], + "uses": { + "value": null, + "max": 1, + "recovery": "longRest" + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Use", + "img": "icons/commodities/gems/gem-rough-navette-purple-pink.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753640199098, + "modifiedTime": 1753640251763, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!2ULPgNyqCrxea0v0" +} diff --git a/src/packs/items/loot/loot_Skeleton_Key_edkNgwy4xghZreBa.json b/src/packs/items/loot/loot_Skeleton_Key_edkNgwy4xghZreBa.json new file mode 100644 index 00000000..4b480459 --- /dev/null +++ b/src/packs/items/loot/loot_Skeleton_Key_edkNgwy4xghZreBa.json @@ -0,0 +1,78 @@ +{ + "name": "Skeleton Key", + "type": "loot", + "_id": "edkNgwy4xghZreBa", + "img": "icons/sundries/misc/key-ornate-iron-black.webp", + "system": { + "description": "When you use this key to open a locked door, you gain advantage on the Finesse Roll.
", + "quantity": 1, + "actions": { + "lV6W9M1CX6N8jSpt": { + "type": "attack", + "_id": "lV6W9M1CX6N8jSpt", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": "trait", + "trait": "finesse", + "difficulty": null, + "bonus": null, + "advState": "advantage", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": "above", + "treshold": 1 + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": null, + "damageMod": "none" + }, + "name": "Use Key", + "img": "icons/sundries/misc/key-ornate-iron-black.webp", + "range": "" + } + } + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753626370278, + "modifiedTime": 1753626508104, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!edkNgwy4xghZreBa" +} diff --git a/src/packs/items/loot/loot_Speaking_Orbs_LZrG6CFiSjpLA2F1.json b/src/packs/items/loot/loot_Speaking_Orbs_LZrG6CFiSjpLA2F1.json new file mode 100644 index 00000000..1239b6ab --- /dev/null +++ b/src/packs/items/loot/loot_Speaking_Orbs_LZrG6CFiSjpLA2F1.json @@ -0,0 +1,31 @@ +{ + "name": "Speaking Orbs", + "type": "loot", + "_id": "LZrG6CFiSjpLA2F1", + "img": "icons/commodities/materials/glass-orb-blue-gold.webp", + "system": { + "description": "This pair of orbs allows any creatures holding them to communicate with each other across any distance.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625222662, + "modifiedTime": 1753625327080, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!LZrG6CFiSjpLA2F1" +} diff --git a/src/packs/items/loot/loot_Stride_Relic_FfJISMzYATaPQPLc.json b/src/packs/items/loot/loot_Stride_Relic_FfJISMzYATaPQPLc.json new file mode 100644 index 00000000..f4257e16 --- /dev/null +++ b/src/packs/items/loot/loot_Stride_Relic_FfJISMzYATaPQPLc.json @@ -0,0 +1,76 @@ +{ + "name": "Stride Relic", + "type": "loot", + "_id": "FfJISMzYATaPQPLc", + "img": "icons/commodities/treasure/token-runed-ing-brown.webp", + "system": { + "description": "You gain a +1 bonus to your Agility. You can only carry one relic.
", + "quantity": 1, + "actions": {} + }, + "effects": [ + { + "name": "Stride Relic", + "type": "base", + "_id": "7lHIbMyCDonSxSZf", + "img": "icons/magic/life/heart-cross-blue.webp", + "system": {}, + "changes": [ + { + "key": "system.traits.agility.value", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639435741, + "modifiedTime": 1753639579370, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!FfJISMzYATaPQPLc.7lHIbMyCDonSxSZf" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753639376996, + "modifiedTime": 1753639432017, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!FfJISMzYATaPQPLc" +} diff --git a/src/packs/items/loot/loot_Suspended_Rod_nnj12RiFanq7s5zv.json b/src/packs/items/loot/loot_Suspended_Rod_nnj12RiFanq7s5zv.json new file mode 100644 index 00000000..83ca772a --- /dev/null +++ b/src/packs/items/loot/loot_Suspended_Rod_nnj12RiFanq7s5zv.json @@ -0,0 +1,31 @@ +{ + "name": "Suspended Rod", + "type": "loot", + "_id": "nnj12RiFanq7s5zv", + "img": "icons/commodities/tech/pipe-metal.webp", + "system": { + "description": "This flat rod is inscribed with runes. When you activate the rod, it is immediately suspended in place. Until the rod is deactivated, it can’t move, doesn’t abide by the rules of gravity, and remains in place.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625627433, + "modifiedTime": 1753625765676, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!nnj12RiFanq7s5zv" +} diff --git a/src/packs/items/loot/loot_Valorstone_7yywua9TmQ4WP5WH.json b/src/packs/items/loot/loot_Valorstone_7yywua9TmQ4WP5WH.json new file mode 100644 index 00000000..6970a396 --- /dev/null +++ b/src/packs/items/loot/loot_Valorstone_7yywua9TmQ4WP5WH.json @@ -0,0 +1,31 @@ +{ + "name": "Valorstone", + "type": "loot", + "_id": "7yywua9TmQ4WP5WH", + "img": "icons/commodities/treasure/token-engraved-spiral-grey-white.webp", + "system": { + "description": "You can attach this stone to armor that doesn’t already have a feature. The armor gains the following feature.
Resilient: Before you mark your last Armor Slot, roll a d6. On a result of 6, reduce the severity by one threshold without marking an Armor Slot.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753626167593, + "modifiedTime": 1753626237350, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!7yywua9TmQ4WP5WH" +} diff --git a/src/packs/items/loot/loot_Vial_of_Darksmoke_Recipe_MhCo8i0cRXzdnXbA.json b/src/packs/items/loot/loot_Vial_of_Darksmoke_Recipe_MhCo8i0cRXzdnXbA.json new file mode 100644 index 00000000..d9ad7e17 --- /dev/null +++ b/src/packs/items/loot/loot_Vial_of_Darksmoke_Recipe_MhCo8i0cRXzdnXbA.json @@ -0,0 +1,31 @@ +{ + "name": "Vial of Darksmoke Recipe", + "type": "loot", + "_id": "MhCo8i0cRXzdnXbA", + "img": "icons/sundries/scrolls/scroll-bound-black-brown.webp", + "system": { + "description": "As a downtime move, you can mark a Stress to craft a Vial of Darksmoke.
", + "quantity": 1, + "actions": {} + }, + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753637508452, + "modifiedTime": 1753637524868, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!MhCo8i0cRXzdnXbA" +} diff --git a/src/packs/items/loot/loot_Woven_Net_ARuv48PWUGJGBC4n.json b/src/packs/items/loot/loot_Woven_Net_ARuv48PWUGJGBC4n.json new file mode 100644 index 00000000..3013f603 --- /dev/null +++ b/src/packs/items/loot/loot_Woven_Net_ARuv48PWUGJGBC4n.json @@ -0,0 +1,155 @@ +{ + "name": "Woven Net", + "type": "loot", + "_id": "ARuv48PWUGJGBC4n", + "img": "icons/tools/fishing/net-tan.webp", + "system": { + "description": "You can make a Finesse Roll using this net to trap a small creature. A trapped target can break free with a successful Attack Roll (16).
", + "quantity": 1, + "actions": { + "yv0l43uUDB2gWFd1": { + "type": "attack", + "_id": "yv0l43uUDB2gWFd1", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": null, + "recovery": null + }, + "damage": { + "parts": [], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [ + { + "_id": "nY2UFMPZdoSUr6Ps", + "onSave": false + } + ], + "roll": { + "type": "trait", + "trait": "finesse", + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": "above", + "treshold": 1 + }, + "useDefault": false + }, + "save": { + "trait": null, + "difficulty": null, + "damageMod": "none" + }, + "name": "Throw", + "img": "icons/tools/fishing/net-tan.webp", + "range": "" + } + } + }, + "effects": [ + { + "name": "Woven Net", + "img": "icons/tools/fishing/net-tan.webp", + "origin": "Compendium.daggerheart.loot.Item.ARuv48PWUGJGBC4n", + "transfer": false, + "_id": "KjAianGutrQuJNs3", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625489813, + "modifiedTime": 1753625489813, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!ARuv48PWUGJGBC4n.KjAianGutrQuJNs3" + }, + { + "name": "Woven Net", + "img": "icons/tools/fishing/net-tan.webp", + "origin": "Compendium.daggerheart.loot.Item.ARuv48PWUGJGBC4n", + "transfer": false, + "_id": "nY2UFMPZdoSUr6Ps", + "type": "base", + "system": {}, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "", + "tint": "#ffffff", + "statuses": [ + "restrained" + ], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625550909, + "modifiedTime": 1753625559732, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items.effects!ARuv48PWUGJGBC4n.nY2UFMPZdoSUr6Ps" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "OFxauskoxcvVTVNA": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.344", + "systemId": "daggerheart", + "systemVersion": "0.0.1", + "createdTime": 1753625403538, + "modifiedTime": 1753625550934, + "lastModifiedBy": "OFxauskoxcvVTVNA" + }, + "_key": "!items!ARuv48PWUGJGBC4n" +} diff --git a/styles/less/dialog/actions/action-list.less b/styles/less/dialog/actions/action-list.less index 4011d124..6a899ca7 100644 --- a/styles/less/dialog/actions/action-list.less +++ b/styles/less/dialog/actions/action-list.less @@ -1,4 +1,5 @@ @import '../../utils/fonts.less'; +@import '../../utils/colors.less'; .application.daggerheart.dh-style { .actions-list, @@ -36,7 +37,8 @@ .action-item { &:hover { - background-color: rgba(255, 255, 255, 0.05); + background-color: light-dark(@soft-shadow, @soft-white-shadow); + cursor: pointer; } padding: 5px; border-radius: 5px; @@ -47,7 +49,6 @@ align-items: center; gap: 10px; font-family: @font-body; - cursor: pointer; flex: 1; i { text-align: center; diff --git a/styles/less/dialog/death-move/death-move-container.less b/styles/less/dialog/death-move/death-move-container.less new file mode 100644 index 00000000..d5982131 --- /dev/null +++ b/styles/less/dialog/death-move/death-move-container.less @@ -0,0 +1,57 @@ +@import '../../utils/spacing.less'; +@import '../../utils/colors.less'; +@import '../../utils/fonts.less'; + +.daggerheart.dh-style.dialog.death-move { + .death-move-container { + display: flex; + flex-direction: column; + gap: 5px; + + .moves-list { + .move-item { + display: flex; + align-items: center; + gap: 5px; + + &:hover { + background-color: light-dark(@soft-shadow, @soft-white-shadow); + cursor: pointer; + } + padding: 5px; + border-radius: 5px; + transition: background-color 0.3s ease-in-out; + + .label { + display: flex; + align-items: center; + gap: 10px; + font-family: @font-body; + cursor: pointer; + flex: 1; + i { + text-align: center; + width: 30px; + } + } + + input[type='radio'] { + margin-left: auto; + } + } + } + } + + footer { + margin-top: 8px; + display: flex; + gap: 8px; + + button { + flex: 1; + height: 40px; + font-family: @font-body; + font-weight: 600; + } + } +} diff --git a/styles/less/dialog/downtime/downtime-container.less b/styles/less/dialog/downtime/downtime-container.less index 0f803d9b..6a520d4b 100644 --- a/styles/less/dialog/downtime/downtime-container.less +++ b/styles/less/dialog/downtime/downtime-container.less @@ -1,5 +1,6 @@ @import '../../utils/spacing.less'; @import '../../utils/colors.less'; +@import '../../utils/fonts.less'; .theme-light .daggerheart.dh-style.views.downtime { .downtime-container .activity-container .activity-selected-marker { @@ -69,7 +70,9 @@ button { flex: 1; - font-family: 'Montserrat', sans-serif; + height: 40px; + font-family: @font-body; + font-weight: 600; } } } diff --git a/styles/less/dialog/index.less b/styles/less/dialog/index.less index 66fd981d..496d09e9 100644 --- a/styles/less/dialog/index.less +++ b/styles/less/dialog/index.less @@ -12,6 +12,8 @@ @import './downtime/downtime-container.less'; +@import './death-move/death-move-container.less'; + @import './beastform/sheet.less'; @import './character-creation/creation-action-footer.less'; diff --git a/styles/less/global/elements.less b/styles/less/global/elements.less index 69c2c6d0..6a0589e6 100755 --- a/styles/less/global/elements.less +++ b/styles/less/global/elements.less @@ -443,6 +443,10 @@ } .field-section { + display: flex; + flex-direction: column; + gap: 10px; + .split-section { display: grid; grid-template-columns: 1fr 1fr; @@ -455,9 +459,18 @@ 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/global/inventory-item.less b/styles/less/global/inventory-item.less index fddb0dfa..b8fe0bb4 100644 --- a/styles/less/global/inventory-item.less +++ b/styles/less/global/inventory-item.less @@ -110,6 +110,10 @@ align-items: center; justify-content: end; gap: 8px; + + .unequipped { + opacity: .5; + } } } diff --git a/styles/less/global/item-header.less b/styles/less/global/item-header.less index f517ad5d..3b3e7ee9 100755 --- a/styles/less/global/item-header.less +++ b/styles/less/global/item-header.less @@ -19,7 +19,7 @@ flex-direction: column; align-items: center; gap: 5px; - margin-top: 36px; + margin-top: var(--header-height); text-align: center; width: 80%; diff --git a/styles/less/global/sheet.less b/styles/less/global/sheet.less index 1a00239a..172f0113 100755 --- a/styles/less/global/sheet.less +++ b/styles/less/global/sheet.less @@ -15,6 +15,9 @@ // Window header styles .window-header { + position: absolute; + width: 100%; + height: var(--header-height); background: transparent; border-bottom: none; justify-content: end; @@ -41,11 +44,9 @@ .window-content { padding: 0; position: relative; - top: -36px; min-height: -webkit-fill-available; transition: opacity 0.3s ease; padding-bottom: 20px; - margin-bottom: -36px; .tab { padding: 0 10px; diff --git a/styles/less/sheets/actors/adversary/header.less b/styles/less/sheets/actors/adversary/header.less index a8646a0a..e9306af6 100644 --- a/styles/less/sheets/actors/adversary/header.less +++ b/styles/less/sheets/actors/adversary/header.less @@ -4,7 +4,7 @@ .application.sheet.daggerheart.actor.dh-style.adversary { .adversary-header-sheet { padding: 0 15px; - padding-top: 36px; + padding-top: var(--header-height); width: 100%; .name-row { diff --git a/styles/less/sheets/actors/character/header.less b/styles/less/sheets/actors/character/header.less index b80da83d..f9511207 100644 --- a/styles/less/sheets/actors/character/header.less +++ b/styles/less/sheets/actors/character/header.less @@ -16,7 +16,7 @@ .application.sheet.daggerheart.actor.dh-style.character { .character-header-sheet { padding: 0 15px; - padding-top: 36px; + padding-top: var(--header-height); width: 100%; .name-row { diff --git a/styles/less/sheets/actors/character/sheet.less b/styles/less/sheets/actors/character/sheet.less index f09ee541..60fc6835 100644 --- a/styles/less/sheets/actors/character/sheet.less +++ b/styles/less/sheets/actors/character/sheet.less @@ -11,7 +11,6 @@ width: 100%; padding-bottom: 0; overflow-x: auto; - margin-bottom: 0; .character-sidebar-sheet { grid-row: 1 / span 2; diff --git a/styles/less/utils/colors.less b/styles/less/utils/colors.less index 622480a7..033a42cb 100755 --- a/styles/less/utils/colors.less +++ b/styles/less/utils/colors.less @@ -38,6 +38,8 @@ @beige-15: #efe6d815; @beige-50: #efe6d850; +@soft-white-shadow: rgba(255, 255, 255, 0.05); + @light-black: rgba(0, 0, 0, 0.3); @soft-shadow: rgba(0, 0, 0, 0.05); diff --git a/system.json b/system.json index eaef71c1..0efa1820 100644 --- a/system.json +++ b/system.json @@ -119,10 +119,10 @@ "flags": {} }, { - "name": "miscellaneous", - "label": "Miscellaneous", + "name": "loot", + "label": "Loot", "system": "daggerheart", - "path": "packs/items/miscellaneous.db", + "path": "packs/items/loot.db", "type": "Item", "private": false, "flags": {} @@ -132,7 +132,7 @@ "label": "Adversaries", "system": "daggerheart", "path": "packs/adversaries.db", - "type": "Item", + "type": "Actor", "private": false, "flags": {} }, @@ -141,7 +141,7 @@ "label": "Environments", "system": "daggerheart", "path": "packs/environments.db", - "type": "Item", + "type": "Actor", "private": false, "flags": {} }, @@ -172,7 +172,7 @@ "name": "Items", "sorting": "m", "color": "#000000", - "packs": ["armors", "weapons", "consumables", "miscellaneous"] + "packs": ["armors", "weapons", "consumables", "loot"] } ] } @@ -222,7 +222,7 @@ "domainCard": { "htmlFields": ["description"] }, - "miscellaneous": { + "loot": { "htmlFields": ["description"] }, "consumable": { diff --git a/templates/actionTypes/damage.hbs b/templates/actionTypes/damage.hbs index 9ae25e0e..2cf71abd 100644 --- a/templates/actionTypes/damage.hbs +++ b/templates/actionTypes/damage.hbs @@ -1,7 +1,11 @@