diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 80c01bce..b9099005 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -44,12 +44,14 @@ We encourage contributors to leave comments or open Discussions when proposing s ## 🧾 Issue & PR Best Practices **For Issues:** + - Use clear, descriptive titles - Provide a concise explanation of the problem or idea - Include reproduction steps or example scenarios if it's a bug - Add screenshots or logs if helpful **For Pull Requests:** + - Use a clear title summarizing the change - Provide a brief description of what your code does and why - Link to any related Issues @@ -71,6 +73,6 @@ Discussions are currently happening on GitHub β€” in Issues, PRs, and [GitHub Di ## πŸ€— Thank You! -Whether you're fixing a typo or designing entire mechanics β€” every contribution matters. Thank you for helping bring *Daggerheart* to life in FoundryVTT through **Foundryborne**! +Whether you're fixing a typo or designing entire mechanics β€” every contribution matters. Thank you for helping bring _Daggerheart_ to life in FoundryVTT through **Foundryborne**! πŸΈπŸ› οΈ diff --git a/assets/icons/arrow-dunk.png b/assets/icons/arrow-dunk.png new file mode 100644 index 00000000..1958713e Binary files /dev/null and b/assets/icons/arrow-dunk.png differ diff --git a/assets/icons/dice/duality/DualityBW.png b/assets/icons/dice/duality/DualityBW.png new file mode 100644 index 00000000..5f94e99f Binary files /dev/null and b/assets/icons/dice/duality/DualityBW.png differ diff --git a/assets/icons/dice/duality/DualityBW.svg b/assets/icons/dice/duality/DualityBW.svg new file mode 100644 index 00000000..9e716fd6 --- /dev/null +++ b/assets/icons/dice/duality/DualityBW.svg @@ -0,0 +1,59 @@ + + + + + + + diff --git a/assets/icons/documents/actors/dark-squad.svg b/assets/icons/documents/actors/dark-squad.svg new file mode 100644 index 00000000..f21b4c5b --- /dev/null +++ b/assets/icons/documents/actors/dark-squad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/daggerheart.mjs b/daggerheart.mjs index 96a6783b..651736a4 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -1,5 +1,6 @@ import { SYSTEM } from './module/config/system.mjs'; import * as applications from './module/applications/_module.mjs'; +import * as data from './module/data/_module.mjs'; import * as models from './module/data/_module.mjs'; import * as documents from './module/documents/_module.mjs'; import * as dice from './module/dice/_module.mjs'; @@ -7,10 +8,8 @@ import * as fields from './module/data/fields/_module.mjs'; import RegisterHandlebarsHelpers from './module/helpers/handlebarsHelper.mjs'; import { enricherConfig, enricherRenderSetup } from './module/enrichers/_module.mjs'; import { getCommandTarget, rollCommandToJSON } from './module/helpers/utils.mjs'; -import { NarrativeCountdowns } from './module/applications/ui/countdowns.mjs'; import { BaseRoll, DHRoll, DualityRoll, D20Roll, DamageRoll } from './module/dice/_module.mjs'; import { enrichedDualityRoll } from './module/enrichers/DualityRollEnricher.mjs'; -import { registerCountdownHooks } from './module/data/countdowns.mjs'; import { handlebarsRegistration, runMigrations, @@ -26,6 +25,7 @@ Hooks.once('init', () => { CONFIG.DH = SYSTEM; game.system.api = { applications, + data, models, documents, dice, @@ -34,15 +34,6 @@ Hooks.once('init', () => { CONFIG.TextEditor.enrichers.push(...enricherConfig); - CONFIG.statusEffects = [ - ...CONFIG.statusEffects.filter(x => !['dead', 'unconscious'].includes(x.id)), - ...Object.values(SYSTEM.GENERAL.conditions).map(x => ({ - ...x, - name: game.i18n.localize(x.name), - systemEffect: true - })) - ]; - CONFIG.Dice.daggerheart = { DHRoll: DHRoll, DualityRoll: DualityRoll, @@ -94,6 +85,10 @@ Hooks.once('init', () => { types: ['environment'], makeDefault: true }); + Actors.registerSheet(SYSTEM.id, applications.sheets.actors.Party, { + types: ['party'], + makeDefault: true + }); CONFIG.ActiveEffect.documentClass = documents.DhActiveEffect; CONFIG.ActiveEffect.dataModels = models.activeEffects.config; @@ -133,9 +128,12 @@ Hooks.once('init', () => { CONFIG.ui.combat = applications.ui.DhCombatTracker; CONFIG.ui.chat = applications.ui.DhChatLog; CONFIG.ui.hotbar = applications.ui.DhHotbar; + CONFIG.ui.sidebar = applications.sidebar.DhSidebar; + CONFIG.ui.daggerheartMenu = applications.sidebar.DaggerheartMenu; CONFIG.Token.rulerClass = placeables.DhTokenRuler; CONFIG.ui.resources = applications.ui.DhFearTracker; + CONFIG.ui.countdowns = applications.ui.DhCountdowns; CONFIG.ux.ContextMenu = applications.ux.DHContextMenu; CONFIG.ux.TooltipManager = documents.DhTooltipManager; @@ -146,18 +144,39 @@ Hooks.once('init', () => { // Make Compendium Dialog resizable foundry.applications.sidebar.apps.Compendium.DEFAULT_OPTIONS.window.resizable = true; + DocumentSheetConfig.registerSheet(foundry.documents.Scene, SYSTEM.id, applications.scene.DhSceneConfigSettings, { + makeDefault: true, + label: 'Daggerheart' + }); + settingsRegistration.registerDHSettings(); RegisterHandlebarsHelpers.registerHelpers(); return handlebarsRegistration(); }); +Hooks.on('setup', () => { + CONFIG.statusEffects = [ + ...CONFIG.statusEffects.filter(x => !['dead', 'unconscious'].includes(x.id)), + ...Object.values(SYSTEM.GENERAL.conditions()).map(x => ({ + ...x, + name: game.i18n.localize(x.name), + systemEffect: true + })) + ]; +}); + Hooks.on('ready', async () => { ui.resources = new CONFIG.ui.resources(); if (game.settings.get(SYSTEM.id, SYSTEM.SETTINGS.gameSettings.appearance).displayFear !== 'hide') ui.resources.render({ force: true }); - registerCountdownHooks(); + ui.countdowns = new CONFIG.ui.countdowns(); + ui.countdowns.render({ force: true }); + + if (!(ui.compendiumBrowser instanceof applications.ui.ItemBrowser)) + ui.compendiumBrowser = new applications.ui.ItemBrowser(); + socketRegistration.registerSocketHooks(); registerRollDiceHooks(); socketRegistration.registerUserQueries(); @@ -230,29 +249,6 @@ Hooks.on('chatMessage', (_, message) => { } }); -Hooks.on('renderJournalDirectory', async (tab, html, _, options) => { - if (tab.id === 'journal') { - if (options.parts && !options.parts.includes('footer')) return; - - const buttons = tab.element.querySelector('.directory-footer.action-buttons'); - const title = game.i18n.format('DAGGERHEART.APPLICATIONS.Countdown.title', { - type: game.i18n.localize('DAGGERHEART.APPLICATIONS.Countdown.types.narrative') - }); - buttons.insertAdjacentHTML( - 'afterbegin', - ` - ` - ); - - buttons.querySelector('#narrative-countdown-button').onclick = async () => { - new NarrativeCountdowns().open(); - }; - } -}); - Hooks.on('moveToken', async (movedToken, data) => { const effectsAutomation = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).effects; if (!effectsAutomation.rangeDependent) return; @@ -300,3 +296,6 @@ Hooks.on('moveToken', async (movedToken, data) => { await effect.value.update({ disabled: effect.disabled }); } }); + +Hooks.on('renderCompendiumDirectory', (app, html) => applications.ui.ItemBrowser.injectSidebarButton(html)); +Hooks.on('renderDocumentDirectory', (app, html) => applications.ui.ItemBrowser.injectSidebarButton(html)); diff --git a/lang/en.json b/lang/en.json index 7efca151..b63a3aac 100755 --- a/lang/en.json +++ b/lang/en.json @@ -20,12 +20,21 @@ "character": "Character", "companion": "Companion", "adversary": "Adversary", - "environment": "Environment" + "environment": "Environment", + "party": "Party" } }, "CONTROLS": { "inFront": "In Front" }, + "SCENE": { + "TABS": { + "SHEET": { + "dh": "Daggerheart" + } + } + }, + "DAGGERHEART": { "ACTIONS": { "TYPES": { @@ -64,6 +73,14 @@ "exactHint": "The Character's Tier is used if empty", "label": "Beastform" }, + "damage": { + "multiplier": "Multiplier", + "flatMultiplier": "Flat Multiplier" + }, + "general": { + "customFormula": "Custom Formula", + "formula": "Formula" + }, "displayInChat": "Display in chat" }, "RollField": { @@ -80,6 +97,7 @@ "attackName": "Attack Name", "includeBase": { "label": "Include Item Damage" }, "multiplier": "Multiplier", + "saveHint": "Set a default Trait to enable Reaction Roll. It can be changed later in Reaction Roll Dialog.", "resultBased": { "label": "Formula based on Hope/Fear result." }, @@ -153,7 +171,9 @@ "hint": "Add single words or short text as reminders and hints of what a character has advantage on." }, "age": "Age", + "backgroundQuestions": "Backgrounds", "companionFeatures": "Companion Features", + "connections": "Connections", "contextMenu": { "consume": "Consume Item", "equip": "Equip", @@ -194,6 +214,7 @@ "confirmTitle": "Companion Levelup", "confirmText": "Would you like to level up your companion {name} by {levelChange} levels at this time? (You can do it manually later)" }, + "viewLevelups": "View Levelups", "InvalidOldCharacterImportTitle": "Old Character Import", "InvalidOldCharacterImportText": "Character data exported prior to system version 1.1 will not generate a complete character. Do you wish to continue?" }, @@ -238,6 +259,9 @@ } }, "APPLICATIONS": { + "Attribution": { + "title": "Attribution" + }, "CharacterCreation": { "tabs": { "ancestry": "Ancestry", @@ -246,7 +270,8 @@ "experience": "Experience", "traits": "Traits", "domainCards": "Domain Cards", - "equipment": "Equipment" + "equipment": "Equipment", + "story": "Story" }, "ancestryNamePlaceholder": "Your ancestry's name", "buttonTitle": "Character Setup", @@ -267,6 +292,7 @@ "selectSubclass": "Select Subclass", "startingItems": "Starting Items", "story": "Story", + "storyExplanation": "Select which background and connection prompts you want to copy into your character's background.", "suggestedArmor": "Suggested Armor", "suggestedPrimaryWeapon": "Suggested Primary Weapon", "suggestedSecondaryWeapon": "Suggested Secondary Weapon", @@ -290,7 +316,8 @@ "toLoadout": "Send to Loadout", "toVault": "Send to Vault", "unequip": "Unequip", - "useItem": "Use Item" + "useItem": "Use Item", + "cancelBeastform": "Cancel Beastform" }, "Countdown": { "addCountdown": "Add Countdown", @@ -305,7 +332,8 @@ "label": { "label": "Label", "hint": "Used for custom" }, "value": { "label": "Value" } } - } + }, + "type": { "label": "Countdown Type" } } } }, @@ -320,6 +348,25 @@ "encounter": "Encounter" } }, + "CountdownEdit": { + "title": "Countdown Edit", + "viewTitle": "Countdowns", + "editTitle": "Edit Countdowns", + "newCountdown": "New Countdown", + "removeCountdownTitle": "Remove Countdown", + "removeCountdownText": "Are you sure you want to remove the countdown: {name}?", + "current": "Current", + "max": "Max", + "currentCountdownValue": "Current: {value}", + "currentCountdownMax": "Max: {value}", + "category": "Category", + "type": "Type", + "defaultOwnershipTooltip": "The default player ownership of countdowns", + "hideNewCountdowns": "Hide New Countdowns" + }, + "DaggerheartMenu": { + "title": "GM Tools" + }, "DeleteConfirmation": { "title": "Delete {type} - {name}", "text": "Are you sure you want to delete {name}?" @@ -391,9 +438,15 @@ }, "HUD": { "tokenHUD": { - "genericEffects": "Foundry Effects" + "genericEffects": "Foundry Effects", + "depositPartyTokens": "Deposit Party Tokens", + "retrievePartyTokens": "Retrieve Party Tokens" } }, + "ImageSelect": { + "title": "Select Image", + "selectImage": "Select Image" + }, "Levelup": { "actions": { "creatureComfort": { @@ -475,24 +528,28 @@ }, "takeLevelUp": "Finish Level Up", "tier2": { + "name": "Tier 2", "label": "Levels 2-4", "infoLabel": "At Level 2, gain an additional Experience at +2 and gain a +1 bonus to your Proficiency.", "pretext": "Choose two options from the list below", "posttext": "Take an additional domain card of your level or lower from a domain you have access to." }, "tier3": { + "name": "Tier 3", "label": "Levels 5-7", "infoLabel": "At Level 5, take an additional Experience and clear all marks on Character Traits.", "pretext": "When you level up, record it on your character sheet, then choose two from the list below or any unmarked from the previous tier.", "posttext": "Take an additional domain card of your level or lower from a domain you have access to." }, "tier4": { + "name": "Tier 4", "label": "Levels 8-10", "infoLabel": "At Level 8, take an additional Experience and clear all marks on Character Traits.", "pretext": "When you level up, record it on your character sheet, then choose two from the list below or any unmarked from the previous tier.", "posttext": "Take an additional domain card of your level or lower from a domain you have access to." }, - "title": "{actor} Level Up" + "title": "{actor} Level Up", + "viewModeTitle": "{actor} Level Up (View Mode)" }, "MulticlassChoice": { "title": "Multiclassing - {actor}", @@ -514,6 +571,19 @@ "ResourceDice": { "title": "{name} Resource", "rerollDice": "Reroll Dice" + }, + "TagTeamSelect": { + "title": "Tag Team Roll", + "leaderTitle": "Initiating Character", + "membersTitle": "Participants", + "partyTeam": "Party Team", + "hopeCost": "Hope Cost", + "initiatingCharacter": "Initiating Character", + "linkMessageHint": "Make a roll from your character sheet to link it to the Tag Team Roll", + "damageNotRolled": "Damage not rolled in chat message yet", + "insufficientHope": "The initiating character doesn't have enough hope", + "createTagTeam": "Create TagTeam Roll", + "chatMessageRollTitle": "Roll" } }, "CLASS": { @@ -857,6 +927,11 @@ "magical": { "name": "Magical", "abbreviation": "Mag" + }, + "direct": { + "name": "Direct Damage", + "short": "Direct", + "abbreviation": "Dir" } }, "DeathMoves": { @@ -906,23 +981,28 @@ "HealingType": { "hitPoints": { "name": "Hit Points", - "abbreviation": "HP" + "abbreviation": "HP", + "inChatRoll": "Damage" }, "stress": { "name": "Stress", - "abbreviation": "STR" + "abbreviation": "STR", + "inChatRoll": "Stress" }, "hope": { "name": "Hope", - "abbreviation": "HO" + "abbreviation": "HO", + "inChatRoll": "Hope" }, "armor": { "name": "Armor Slot", - "abbreviation": "AS" + "abbreviation": "AS", + "inChatRoll": "Armor Slot" }, "fear": { "name": "Fear", - "abbreviation": "FR" + "abbreviation": "FR", + "inChatRoll": "Fear" } }, "ItemResourceProgression": { @@ -989,6 +1069,12 @@ "selectType": "Select Action Type", "selectAction": "Action Selection" }, + "TargetTypes": { + "any": "Any", + "friendly": "Friendly", + "hostile": "Hostile", + "self": "Self" + }, "TemplateTypes": { "circle": "Circle", "cone": "Cone", @@ -1838,6 +1924,10 @@ } } }, + "SpotlightRequests": { + "singular": "Spotlight Request", + "plural": "Spotlight Requests" + }, "Tabs": { "details": "Details", "attack": "Attack", @@ -1862,6 +1952,7 @@ "story": "Story", "biography": "Biography", "general": "General", + "resources": "Resources", "foundation": "Foundation", "specialization": "Specialization", "mastery": "Mastery", @@ -1877,7 +1968,15 @@ "tier4": "tier 4", "domains": "Domains", "downtime": "Downtime", - "rules": "Rules" + "roll": "Roll", + "rules": "Rules", + "partyMembers": "Party Members", + "projects": "Projects", + "types": "Types", + "itemFeatures": "Item Features", + "questions": "Questions", + "configuration": "Configuration", + "base": "Base" }, "Tiers": { "singular": "Tier", @@ -1894,10 +1993,12 @@ "amount": "Amount", "any": "Any", "armor": "Armor", + "armorFeatures": "Armor Features", "armors": "Armors", "armorScore": "Armor Score", "activeEffects": "Active Effects", "armorSlots": "Armor Slots", + "artistAttribution": "Artwork By: {artist}", "attack": "Attack", "basics": "Basics", "bonus": "Bonus", @@ -1905,6 +2006,7 @@ "continue": "Continue", "criticalSuccess": "Critical Success", "criticalShort": "Critical", + "custom": "Custom", "d20Roll": "D20 Roll", "damage": "Damage", "damageRoll": "Damage Roll", @@ -1927,6 +2029,7 @@ "fear": "Fear", "features": "Features", "formula": "Formula", + "gm": "GM", "healing": "Healing", "healingRoll": "Healing Roll", "hit": { @@ -1945,6 +2048,7 @@ "inactiveEffects": "Inactive Effects", "inventory": "Inventory", "itemResource": "Item Resource", + "itemQuantity": "Item Quantity", "items": "Items", "label": "Label", "level": "Level", @@ -1963,11 +2067,16 @@ "none": "None", "noTarget": "No current target", "partner": "Partner", + "player": { + "single": "Player", + "plurial": "Players" + }, "proficiency": "Proficiency", "quantity": "Quantity", "range": "Range", "reactionRoll": "Reaction Roll", "recovery": "Recovery", + "refresh": "Refresh", "reroll": "Reroll", "rerollThing": "Reroll {thing}", "resource": "Resource", @@ -1978,6 +2087,8 @@ "save": "Save", "scalable": "Scalable", "situationalBonus": "Situational Bonus", + "spent": "Spent", + "step": "Step", "stress": "Stress", "subclasses": "Subclasses", "success": "Success", @@ -1988,6 +2099,7 @@ }, "title": "Title", "total": "Total", + "traitModifier": "Trait Modifier", "true": "True", "type": "Type", "unarmed": "Unarmed", @@ -1997,11 +2109,17 @@ "used": "Used", "uses": "Uses", "value": "Value", + "weaponFeatures": "Weapon Features", "weapons": "Weapons", "withThing": "With {thing}" }, "ITEMS": { "FIELDS": { + "attribution": { + "source": { "label": "Source" }, + "page": { "label": "Page" }, + "artist": { "label": "Artist" } + }, "resource": { "amount": { "label": "Amount" }, "dieFaces": { "label": "Die Faces" }, @@ -2076,7 +2194,8 @@ } }, "Consumable": { - "consumeOnUse": "Consume On Use" + "consumeOnUse": "Consume On Use", + "destroyOnEmpty": "Destroy On Empty" }, "DomainCard": { "type": "Type", @@ -2097,14 +2216,44 @@ "SETTINGS": { "Appearance": { "FIELDS": { - "displayFear": { "label": "Fear Display" }, - "dualityColorScheme": { "label": "Chat Style" }, - "showGenericStatusEffects": { "label": "Show Foundry Status Effects" }, + "displayFear": { + "label": "Display Fear" + }, + "showGenericStatusEffects": { + "label": "Show Foundry Status Effects" + }, + "hideAttribution": { + "label": "Hide Attribution" + }, "expandedTitle": "Auto-expand Descriptions", - "extendCharacterDescriptions": { "label": "Characters" }, - "extendAdversaryDescriptions": { "label": "Adversaries" }, - "extendEnvironmentDescriptions": { "label": "Environments" }, - "extendItemDescriptions": { "label": "Items" } + "extendCharacterDescriptions": { + "label": "Characters" + }, + "extendAdversaryDescriptions": { + "label": "Adversaries" + }, + "extendEnvironmentDescriptions": { + "label": "Environments" + }, + "extendItemDescriptions": { + "label": "Items" + }, + "expandRollMessage": { + "title": "Auto-expand Message Sections", + "desc": { + "label": "Description" + }, + "roll": { + "label": "Formula" + }, + "damage": { + "label": "Damage/Healing" + }, + "target": { + "label": "Target" + } + }, + "useResourcePips": { "label": "Pip Display For Resources" } }, "fearDisplay": { "token": "Tokens", @@ -2159,15 +2308,45 @@ "playerCanEditSheet": { "label": "Players Can Manually Edit Character Settings", "hint": "Players are allowed to access the manual Character Settings and change their statistics beyond the rules." + }, + "roll": { + "roll": { + "label": "Roll", + "hint": "Auto behavior for rolls like Attack, Spellcast, etc." + }, + "damage": { + "label": "Damage/Healing Roll", + "hint": "Auto behavior for Damage & Healing rolls after the Attack/Spellcast." + }, + "save": { + "label": "Reaction Roll", + "hint": "Auto behavior if a Reaction Roll is needed. Targets must be selected before the action is made" + }, + "damageApply": { + "label": "Apply Damage/Healing", + "hint": "Automatically apply damages & healings. Targets must be selected before the action is made and Reaction Roll Automation must be different than Never. Bypass users permissions." + }, + "effect": { + "label": "Apply Effects", + "hint": "Automatically apply effects. Targets must be selected before the action is made and Reaction Roll Automation must be different than Never. Bypass users permissions." + } + }, + "summaryMessages": { + "label": "Summary Messages" } }, "defeated": { "title": "Defeated Handling" + }, + "roll": { + "title": "Actions" } }, "Homebrew": { "newDowntimeMove": "Downtime Move", + "newFeature": "New ItemFeature", "downtimeMoves": "Downtime Moves", + "itemFeatures": "Item Features", "nrChoices": "# Moves Per Rest", "resetMovesTitle": "Reset {type} Downtime Moves", "resetMovesText": "Are you sure you want to reset?", @@ -2200,6 +2379,10 @@ "deleteDomain": "Delete Domain", "deleteDomainText": "Are you sure you want to delete the {name} domain? It will be immediately removed from all Actors in this world where it's currently used. Compendiums are not cleared.", "duplicateDomain": "There is already a domain with this identification." + }, + "adversaryType": { + "title": "Custom Adversary Types", + "newType": "Adversary Type" } }, "Menu": { @@ -2220,10 +2403,8 @@ "hint": "System ruler setup for displaying ranges in Daggerheart" }, "appearance": { - "title": "Appearance Settings", "label": "Appearance Settings", "hint": "Modify the look of various parts of the system", - "name": "Appearance Settings", "duality": "Duality Rolls", "diceSoNice": { "title": "Dice So Nice", @@ -2263,6 +2444,15 @@ "ResetSettings": { "resetConfirmationTitle": "Reset Settings", "resetConfirmationText": "Are you sure you want to reset the {settings}?" + }, + "Scene": { + "FIELDS": { + "rangeMeasurement": { + "setting": { "label": "Setting" } + } + }, + "disabledText": "Daggerheart Measurements are disabled in System Settings - Variant Rules", + "rangeMeasurement": "Range Measurement" } }, "UI": { @@ -2270,6 +2460,7 @@ "action": { "title": "Action" }, + "appliedTo": "Applied To", "applyEffect": { "title": "Apply Effects - {name}" }, @@ -2279,6 +2470,11 @@ "rollHealing": "Roll Healing", "applyEffect": "Apply Effects" }, + "clearResource": "Clear {quantity} {resource}", + "damageSummary": { + "title": "Damage Applied", + "healingTitle": "Healing Applied" + }, "damageRoll": { "title": "Damage - {damage}", "dealDamageToTargets": "Damage Hit Targets", @@ -2300,18 +2496,91 @@ "dualityRoll": { "abilityCheckTitle": "{ability} Check" }, + "effectSummary": { + "title": "Effects Applied" + }, "featureTitle": "Class Feature", + "groupRoll": { + "title": "Group Roll", + "leader": "Leader", + "partyTeam": "Party Team", + "team": "Team", + "selectLeader": "Select a Leader", + "selectMember": "Select a Member", + "rerollTitle": "Reroll Group Roll", + "rerollContent": "Are you sure you want to reroll your {trait} check?", + "rerollTooltip": "Reroll" + }, "healingRoll": { "title": "Heal - {damage}", "heal": "Heal", "applyHealing": "Apply Healing" }, + "markResource": "Mark {quantity} {resource}", + "refreshMessage": { + "title": "Feature Refresh", + "header": "Refreshed" + }, "reroll": { "confirmTitle": "Reroll Dice", "confirmText": "Are you sure you want to reroll?" }, "resourceRoll": { "playerMessage": "{user} rerolled their {name}" + }, + "tagTeam": { + "title": "Tag Team", + "membersTitle": "Members" + } + }, + "ChatLog": { + "rerollDamage": "Reroll Damage", + "assignTagRoll": "Assign as Tag Roll" + }, + "Countdowns": { + "title": "Countdowns", + "toggleIconMode": "Toggle Icon Only", + "noPlayerAccess": "This countdown isn't visible to any players" + }, + "ItemBrowser": { + "title": "Daggerheart Compendium Browser", + "hint": "Select a Folder in sidebar to start browsing through the compendium", + "searchPlaceholder": "Search...", + "columnName": "Name", + "tooltipFilters": "Filters", + "tooltipErase": "Erase", + "difficultyMin": "Difficulty (Min)", + "difficultyMax": "Difficulty (Max)", + "hitPointsMin": "Hit Points (Min)", + "hitPointsMax": "Hit Points (Max)", + "stressMin": "Stress (Min)", + "stressMax": "Stress (Max)", + "armorScoreMin": "Armor Score (Min)", + "armorScoreMax": "Armor Score (Max)", + "levelMin": "Level (Min)", + "levelMax": "Level (Max)", + "recallCostMin": "Recall Cost (Min)", + "recallCostMax": "Recall Cost (Max)", + "evasionMin": "Evasion (Min)", + "evasionMax": "Evasion (Max)", + "subtype": "Subtype", + "folders": { + "characters": "Characters", + "adversaries": "Adversaries", + "ancestries": "Ancestries", + "equipment": "Equipment", + "classes": "Classes", + "subclasses": "Subclasses", + "domainCards": "Domain Cards", + "communities": "Communities", + "environments": "Environments", + "beastforms": "Beastforms", + "features": "Features", + "items": "Items", + "weapons": "Weapons", + "armors": "Armors", + "consumables": "Consumables", + "loots": "Loots" } }, "Notifications": { @@ -2319,6 +2588,7 @@ "beastformInapplicable": "A beastform can only be applied to a Character.", "beastformAlreadyApplied": "The character already has a beastform applied!", "noTargetsSelected": "No targets are selected.", + "noTargetsSelectedOrPerm": "No targets are selected or with the update permission.", "attackTargetDoesNotExist": "The target token no longer exists", "insufficentAdvancements": "You don't have enough advancements left.", "noAssignedPlayerCharacter": "You have no assigned character.", @@ -2346,6 +2616,8 @@ "wrongDomain": "The card isn't from one of your class domains.", "cardTooHighLevel": "The card is too high level!", "duplicateCard": "You cannot select the same card more than once.", + "duplicateCharacter": "This actor is already registered in the party members list.", + "onlyCharactersInPartySheet": "You can drag only characters to a party sheet.", "notPrimary": "The weapon is not a primary weapon!", "notSecondary": "The weapon is not a secondary weapon!", "itemTooHighTier": "The item must be from Tier1", @@ -2373,11 +2645,23 @@ "beastformEquipWeapon": "You cannot use weapons while in a Beastform.", "loadoutMaxReached": "You've reached maximum loadout. Move atleast one domain card to the vault, or increase the limit in homebrew settings if desired.", "domainMaxReached": "You've reached the maximum domains for the class. Increase the limit in homebrew settings if desired.", - "insufficientResources": "You have insufficient resources", + "insufficientResources": "You don't have enough resources to use that action.", + "actionNoUsesRemaining": "That action doesn't have remaining uses.", "multiclassAlreadyPresent": "You already have a class and multiclass", "subclassesAlreadyPresent": "You already have a class and multiclass subclass", "noDiceSystem": "Your selected dice {system} does not have a {faces} dice", - "subclassAlreadyLinked": "{name} is already a subclass in the class {class}. Remove it from there if you want it to be a subclass to this class." + "gmMenuRefresh": "You refreshed all actions and resources {types}", + "subclassAlreadyLinked": "{name} is already a subclass in the class {class}. Remove it from there if you want it to be a subclass to this class.", + "gmRequired": "This action requires an online GM", + "gmOnly": "This can only be accessed by the GM", + "noActorOwnership": "You do not have permissions for this character" + }, + "Sidebar": { + "daggerheartMenu": { + "title": "Daggerheart Menu", + "startSession": "Start Session", + "startScene": "Start Scene" + } }, "Tooltip": { "disableEffect": "Disable Effect", @@ -2404,7 +2688,9 @@ "rulesOff": "Rules Off", "remainingUses": "Uses refresh on {type}", "rightClickExtand": "Right-Click to extand", - "companionPartnerLevelBlock": "The companion needs an assigned partner to level up." + "companionPartnerLevelBlock": "The companion needs an assigned partner to level up.", + "configureAttribution": "Configure Attribution", + "deleteItem": "Delete Item" } } } diff --git a/module/applications/_module.mjs b/module/applications/_module.mjs index d4ceb229..b2d3001a 100644 --- a/module/applications/_module.mjs +++ b/module/applications/_module.mjs @@ -2,8 +2,10 @@ export * as characterCreation from './characterCreation/_module.mjs'; export * as dialogs from './dialogs/_module.mjs'; export * as hud from './hud/_module.mjs'; export * as levelup from './levelup/_module.mjs'; +export * as scene from './scene/_module.mjs'; export * as settings from './settings/_module.mjs'; export * as sheets from './sheets/_module.mjs'; export * as sheetConfigs from './sheets-configs/_module.mjs'; +export * as sidebar from './sidebar/_module.mjs'; export * as ui from './ui/_module.mjs'; export * as ux from './ux/_module.mjs'; diff --git a/module/applications/characterCreation/characterCreation.mjs b/module/applications/characterCreation/characterCreation.mjs index ccb6f7c0..aa764c56 100644 --- a/module/applications/characterCreation/characterCreation.mjs +++ b/module/applications/characterCreation/characterCreation.mjs @@ -1,6 +1,5 @@ import { abilities } from '../../config/actorConfig.mjs'; import { burden } from '../../config/generalConfig.mjs'; -import { ItemBrowser } from '../ui/itemBrowser.mjs'; import { createEmbeddedItemsWithEffects, createEmbeddedItemWithEffects } from '../../helpers/utils.mjs'; const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; @@ -46,8 +45,6 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl }; this._dragDrop = this._createDragDropHandlers(); - - this.itemBrowser = null; } get title() { @@ -86,9 +83,9 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl static PARTS = { tabs: { template: 'systems/daggerheart/templates/characterCreation/tabs.hbs' }, + class: { template: 'systems/daggerheart/templates/characterCreation/tabs/class.hbs' }, ancestry: { template: 'systems/daggerheart/templates/characterCreation/tabs/ancestry.hbs' }, community: { template: 'systems/daggerheart/templates/characterCreation/tabs/community.hbs' }, - class: { template: 'systems/daggerheart/templates/characterCreation/tabs/class.hbs' }, traits: { template: 'systems/daggerheart/templates/characterCreation/tabs/traits.hbs' }, experience: { template: 'systems/daggerheart/templates/characterCreation/tabs/experience.hbs' }, domainCards: { template: 'systems/daggerheart/templates/characterCreation/tabs/domainCards.hbs' }, @@ -98,6 +95,13 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl }; static TABS = { + class: { + active: false, + cssClass: '', + group: 'setup', + id: 'class', + label: 'DAGGERHEART.APPLICATIONS.CharacterCreation.tabs.class' + }, ancestry: { active: true, cssClass: '', @@ -112,13 +116,6 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl id: 'community', label: 'DAGGERHEART.APPLICATIONS.CharacterCreation.tabs.community' }, - class: { - active: false, - cssClass: '', - group: 'setup', - id: 'class', - label: 'DAGGERHEART.APPLICATIONS.CharacterCreation.tabs.class' - }, traits: { active: false, cssClass: '', @@ -159,10 +156,10 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl v.cssClass = v.active ? 'active' : ''; switch (v.id) { - case 'community': + case 'ancestry': v.disabled = this.setup.visibility < 2; break; - case 'class': + case 'community': v.disabled = this.setup.visibility < 3; break; case 'traits': @@ -195,7 +192,7 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl } async _prepareContext(_options) { - this.tabGroups.setup = this.tabGroups.setup ?? 'ancestry'; + this.tabGroups.setup = this.tabGroups.setup ?? 'class'; const context = await super._prepareContext(_options); context.tabs = this._getTabs(this.constructor.TABS); @@ -269,13 +266,13 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl context.isLastTab = this.tabGroups.setup === 'equipment'; switch (this.tabGroups.setup) { case null: - case 'ancestry': + case 'class': context.nextDisabled = this.setup.visibility === 1; break; - case 'community': + case 'ancestry': context.nextDisabled = this.setup.visibility === 2; break; - case 'class': + case 'community': context.nextDisabled = this.setup.visibility === 3; break; case 'traits': @@ -366,11 +363,11 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl case 4: return this.getNrSelectedTrait() === 6 ? 5 : 4; case 3: - return this.setup.class.uuid && this.setup.subclass.uuid ? 4 : 3; + return this.setup.community.uuid ? 4 : 3; case 2: - return this.setup.community.uuid ? 3 : 2; + return this.setup.primaryAncestry.uuid ? 3 : 2; case 1: - return this.setup.primaryAncestry.uuid ? 2 : 1; + return this.setup.class.uuid && this.setup.subclass.uuid ? 2 : 1; } } @@ -425,8 +422,7 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl equipment = ['armor', 'weapon']; const presets = { - compendium: 'daggerheart', - folder: equipment.includes(type) ? 'equipments' : type, + folder: equipment.includes(type) ? `equipments.folders.${type}s` : type, render: { noFolder: true } @@ -442,14 +438,14 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl presets.filter = { 'system.linkedClass.uuid': { key: 'system.linkedClass.uuid', value: this.setup.class?.uuid } }; - + if (equipment.includes(type)) presets.filter = { 'system.tier': { key: 'system.tier', value: 1 }, 'type': { key: 'type', value: type } }; - return (this.itemBrowser = await new ItemBrowser({ presets }).render({ force: true })); + ui.compendiumBrowser.open(presets); } static async viewItem(_, target) { @@ -477,10 +473,10 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl static setupGoNext() { switch (this.setup.visibility) { case 2: - this.tabGroups.setup = 'community'; + this.tabGroups.setup = 'ancestry'; break; case 3: - this.tabGroups.setup = 'class'; + this.tabGroups.setup = 'community'; break; case 4: this.tabGroups.setup = 'traits'; @@ -567,7 +563,7 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl { overwrite: true } ); - if (this.itemBrowser) this.itemBrowser.close(); + if (ui.compendiumBrowser) ui.compendiumBrowser.close(); this.close(); } diff --git a/module/applications/dialogs/_module.mjs b/module/applications/dialogs/_module.mjs index 8908ae2b..43faa68a 100644 --- a/module/applications/dialogs/_module.mjs +++ b/module/applications/dialogs/_module.mjs @@ -1,11 +1,15 @@ +export { default as AttributionDialog } from './attributionDialog.mjs'; export { default as BeastformDialog } from './beastformDialog.mjs'; export { default as d20RollDialog } from './d20RollDialog.mjs'; export { default as DamageDialog } from './damageDialog.mjs'; export { default as DamageReductionDialog } from './damageReductionDialog.mjs'; export { default as DeathMove } from './deathMove.mjs'; export { default as Downtime } from './downtime.mjs'; +export { default as ImageSelectDialog } from './imageSelectDialog.mjs'; export { default as MulticlassChoiceDialog } from './multiclassChoiceDialog.mjs'; export { default as OwnershipSelection } from './ownershipSelection.mjs'; export { default as RerollDamageDialog } from './rerollDamageDialog.mjs'; export { default as ResourceDiceDialog } from './resourceDiceDialog.mjs'; export { default as ActionSelectionDialog } from './actionSelectionDialog.mjs'; +export { default as GroupRollDialog } from './group-roll-dialog.mjs'; +export { default as TagTeamDialog } from './tagTeamDialog.mjs'; diff --git a/module/applications/dialogs/attributionDialog.mjs b/module/applications/dialogs/attributionDialog.mjs new file mode 100644 index 00000000..99ff261a --- /dev/null +++ b/module/applications/dialogs/attributionDialog.mjs @@ -0,0 +1,93 @@ +import autocomplete from 'autocompleter'; + +const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; + +export default class AttributionDialog extends HandlebarsApplicationMixin(ApplicationV2) { + constructor(item) { + super({}); + + this.item = item; + this.sources = Object.keys(CONFIG.DH.GENERAL.attributionSources).flatMap(groupKey => { + const group = CONFIG.DH.GENERAL.attributionSources[groupKey]; + return group.values.map(x => ({ group: group.label, ...x })); + }); + } + + get title() { + return game.i18n.localize('DAGGERHEART.APPLICATIONS.Attribution.title'); + } + + static DEFAULT_OPTIONS = { + tag: 'form', + classes: ['daggerheart', 'dh-style', 'dialog', 'views', 'attribution'], + position: { width: 'auto', height: 'auto' }, + window: { icon: 'fa-solid fa-signature' }, + form: { handler: this.updateData, submitOnChange: false, closeOnSubmit: true } + }; + + static PARTS = { + main: { template: 'systems/daggerheart/templates/dialogs/attribution.hbs' } + }; + + _attachPartListeners(partId, htmlElement, options) { + super._attachPartListeners(partId, htmlElement, options); + const sources = this.sources; + + htmlElement.querySelectorAll('.attribution-input').forEach(element => { + autocomplete({ + input: element, + fetch: function (text, update) { + if (!text) { + update(sources); + } else { + text = text.toLowerCase(); + var suggestions = sources.filter(n => n.label.toLowerCase().includes(text)); + update(suggestions); + } + }, + render: function (item, search) { + const label = game.i18n.localize(item.label); + const matchIndex = label.toLowerCase().indexOf(search); + + const beforeText = label.slice(0, matchIndex); + const matchText = label.slice(matchIndex, matchIndex + search.length); + const after = label.slice(matchIndex + search.length, label.length); + + const element = document.createElement('li'); + element.innerHTML = `${beforeText}${matchText ? `${matchText}` : ''}${after}`; + if (item.hint) { + element.dataset.tooltip = game.i18n.localize(item.hint); + } + + return element; + }, + renderGroup: function (label) { + const itemElement = document.createElement('div'); + itemElement.textContent = game.i18n.localize(label); + return itemElement; + }, + onSelect: function (item) { + element.value = item.label; + }, + click: e => e.fetch(), + customize: function (_input, _inputRect, container) { + container.style.zIndex = foundry.applications.api.ApplicationV2._maxZ; + }, + minLength: 0 + }); + }); + } + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + context.item = this.item; + context.data = this.item.system.attribution; + + return context; + } + + static async updateData(_event, _element, formData) { + await this.item.update({ 'system.attribution': formData.object }); + this.item.sheet.refreshFrame(); + } +} diff --git a/module/applications/dialogs/beastformDialog.mjs b/module/applications/dialogs/beastformDialog.mjs index 35bac11c..3dd88d6c 100644 --- a/module/applications/dialogs/beastformDialog.mjs +++ b/module/applications/dialogs/beastformDialog.mjs @@ -276,7 +276,22 @@ export default class BeastformDialog extends HandlebarsApplicationMixin(Applicat const featureItem = item; app.addEventListener( 'close', - () => resolve({ selected: app.selected, evolved: app.evolved, hybrid: app.hybrid, item: featureItem }), + async () => { + const selected = app.selected.toObject(); + const data = await game.system.api.data.items.DHBeastform.getWildcardImage( + app.configData.data.parent, + app.selected + ); + if (data) { + if (!data.selectedImage) selected = null; + else { + if (data.usesDynamicToken) selected.system.tokenRingImg = data.selectedImage; + else selected.system.tokenImg = data.selectedImage; + } + } + + resolve({ selected: selected, evolved: app.evolved, hybrid: app.hybrid, item: featureItem }); + }, { once: true } ); app.render({ force: true }); diff --git a/module/applications/dialogs/d20RollDialog.mjs b/module/applications/dialogs/d20RollDialog.mjs index 0f1cd946..2534a2b8 100644 --- a/module/applications/dialogs/d20RollDialog.mjs +++ b/module/applications/dialogs/d20RollDialog.mjs @@ -1,3 +1,5 @@ +import { abilities } from '../../config/actorConfig.mjs'; + const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; export default class D20RollDialog extends HandlebarsApplicationMixin(ApplicationV2) { @@ -7,20 +9,20 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio this.roll = roll; this.config = config; this.config.experiences = []; - this.reactionOverride = config.roll?.type === 'reaction'; + this.reactionOverride = config.actionType === 'reaction'; if (config.source?.action) { this.item = config.data.parent.items.get(config.source.item) ?? config.data.parent; this.action = config.data.attack?._id == config.source.action ? config.data.attack - : this.item.system.actions.get(config.source.action); + : this.item.system.actionsList?.find(a => a.id === config.source.action); } } static DEFAULT_OPTIONS = { tag: 'form', - id: 'roll-selection', + // id: 'roll-selection', classes: ['daggerheart', 'dialog', 'dh-style', 'views', 'roll-selection'], position: { width: 'auto' @@ -32,6 +34,7 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio updateIsAdvantage: this.updateIsAdvantage, selectExperience: this.selectExperience, toggleReaction: this.toggleReaction, + toggleTagTeamRoll: this.toggleTagTeamRoll, submitRoll: this.submitRoll }, form: { @@ -42,7 +45,7 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio }; get title() { - return this.config.title; + return `${this.config.title}${this.actor ? `: ${this.actor.name}` : ''}`; } get actor() { @@ -66,7 +69,7 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio context.rollConfig = this.config; context.hasRoll = !!this.config.roll; context.canRoll = true; - context.selectedRollMode = this.config.selectedRollMode; + context.selectedRollMode = this.config.selectedRollMode ?? game.settings.get('core', 'rollMode'); context.rollModes = Object.entries(CONFIG.Dice.rollModes).map(([action, { label, icon }]) => ({ action, label, @@ -81,7 +84,7 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio ); context.costs = updatedCosts.map(x => ({ ...x, - label: x.keyIsID + label: x.itemId ? this.action.parent.parent.name : game.i18n.localize(CONFIG.DH.GENERAL.abilityCosts[x.key].label) })); @@ -113,15 +116,31 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio context.isLite = this.config.roll?.lite; context.extraFormula = this.config.extraFormula; context.formula = this.roll.constructFormula(this.config); + if (this.actor.system.traits) context.abilities = this.getTraitModifiers(); - context.showReaction = !context.rollConfig.type && context.rollType === 'DualityRoll'; + context.showReaction = !this.config.roll?.type && context.rollType === 'DualityRoll'; context.reactionOverride = this.reactionOverride; } + + const tagTeamSetting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll); + if (tagTeamSetting.members[this.actor.id] && !this.config.skips?.createMessage) { + context.activeTagTeamRoll = true; + context.tagTeamSelected = this.config.tagTeamSelected; + } + return context; } + getTraitModifiers() { + return Object.values(abilities).map(a => ({ + id: a.id, + label: `${game.i18n.localize(a.label)} (${this.actor.system.traits[a.id]?.value.signedString() ?? 0})` + })); + } + static updateRollConfiguration(event, _, formData) { const { ...rest } = foundry.utils.expandObject(formData.object); + this.config.selectedRollMode = rest.selectedRollMode; if (this.config.costs) { @@ -133,6 +152,12 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio this.roll[key] = value; }); } + if (rest.hasOwnProperty('trait')) { + this.config.roll.trait = rest.trait; + this.config.title = game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', { + ability: game.i18n.localize(abilities[this.config.roll.trait]?.label) + }); + } this.config.extraFormula = rest.extraFormula; this.render(); } @@ -151,35 +176,38 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio this.config.experiences.indexOf(button.dataset.key) > -1 ? this.config.experiences.filter(x => x !== button.dataset.key) : [...this.config.experiences, button.dataset.key]; - if (this.config?.data?.parent?.type === 'character' || this.config?.data?.parent?.type === 'companion') { - this.config.costs = - this.config.costs.indexOf(this.config.costs.find(c => c.extKey === button.dataset.key)) > -1 - ? this.config.costs.filter(x => x.extKey !== button.dataset.key) - : [ - ...this.config.costs, - { - extKey: button.dataset.key, - key: 'hope', - value: 1, - name: this.config.data?.experiences?.[button.dataset.key]?.name - } - ]; - } + this.config.costs = + this.config.costs.indexOf(this.config.costs.find(c => c.extKey === button.dataset.key)) > -1 + ? this.config.costs.filter(x => x.extKey !== button.dataset.key) + : [ + ...this.config.costs, + { + extKey: button.dataset.key, + key: this.config?.data?.parent?.isNPC ? 'fear' : 'hope', + value: 1, + name: this.config.data?.experiences?.[button.dataset.key]?.name + } + ]; this.render(); } static toggleReaction() { if (this.config.roll) { this.reactionOverride = !this.reactionOverride; - this.config.roll.type = this.reactionOverride + this.config.actionType = this.reactionOverride ? CONFIG.DH.ITEM.actionTypes.reaction.id - : this.config.roll.type === CONFIG.DH.ITEM.actionTypes.reaction.id + : this.config.actionType === CONFIG.DH.ITEM.actionTypes.reaction.id ? null - : this.config.roll.type; + : this.config.actionType; this.render(); } } + static toggleTagTeamRoll() { + this.config.tagTeamSelected = !this.config.tagTeamSelected; + this.render(); + } + static async submitRoll() { await this.close({ submitted: true }); } diff --git a/module/applications/dialogs/group-roll-dialog.mjs b/module/applications/dialogs/group-roll-dialog.mjs new file mode 100644 index 00000000..2cb79563 --- /dev/null +++ b/module/applications/dialogs/group-roll-dialog.mjs @@ -0,0 +1,196 @@ +import autocomplete from 'autocompleter'; +import { abilities } from '../../config/actorConfig.mjs'; + +const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; + +export default class GroupRollDialog extends HandlebarsApplicationMixin(ApplicationV2) { + constructor(actors) { + super(); + this.actors = actors; + this.actorLeader = {}; + this.actorsMembers = []; + } + + get title() { + return 'Group Roll'; + } + + static DEFAULT_OPTIONS = { + tag: 'form', + classes: ['daggerheart', 'views', 'dh-style', 'dialog', 'group-roll'], + position: { width: 'auto', height: 'auto' }, + window: { + title: 'DAGGERHEART.UI.Chat.groupRoll.title' + }, + actions: { + roll: GroupRollDialog.#roll, + removeLeader: GroupRollDialog.#removeLeader, + removeMember: GroupRollDialog.#removeMember + }, + form: { handler: this.updateData, submitOnChange: true, closeOnSubmit: false } + }; + + static PARTS = { + application: { + id: 'group-roll', + template: 'systems/daggerheart/templates/dialogs/group-roll/group-roll.hbs' + } + }; + + _attachPartListeners(partId, htmlElement, options) { + super._attachPartListeners(partId, htmlElement, options); + const leaderChoices = this.actors.filter(x => this.actorsMembers.every(member => member.actor?.id !== x.id)); + const memberChoices = this.actors.filter( + x => this.actorLeader?.actor?.id !== x.id && this.actorsMembers.every(member => member.actor?.id !== x.id) + ); + + htmlElement.querySelectorAll('.leader-change-input').forEach(element => { + autocomplete({ + input: element, + fetch: function (text, update) { + if (!text) { + update(leaderChoices); + } else { + text = text.toLowerCase(); + var suggestions = leaderChoices.filter(n => n.name.toLowerCase().includes(text)); + update(suggestions); + } + }, + render: function (actor, search) { + const actorName = game.i18n.localize(actor.name); + const matchIndex = actorName.toLowerCase().indexOf(search); + + const beforeText = actorName.slice(0, matchIndex); + const matchText = actorName.slice(matchIndex, matchIndex + search.length); + const after = actorName.slice(matchIndex + search.length, actorName.length); + const img = document.createElement('img'); + img.src = actor.img; + + const element = document.createElement('li'); + element.appendChild(img); + + const label = document.createElement('span'); + label.innerHTML = `${beforeText}${matchText ? `${matchText}` : ''}${after}`; + element.appendChild(label); + + return element; + }, + renderGroup: function (label) { + const itemElement = document.createElement('div'); + itemElement.textContent = game.i18n.localize(label); + return itemElement; + }, + onSelect: actor => { + element.value = actor.uuid; + this.actorLeader = { actor: actor, trait: 'agility', difficulty: 0 }; + this.render(); + }, + click: e => e.fetch(), + customize: function (_input, _inputRect, container) { + container.style.zIndex = foundry.applications.api.ApplicationV2._maxZ; + }, + minLength: 0 + }); + }); + + htmlElement.querySelectorAll('.team-push-input').forEach(element => { + autocomplete({ + input: element, + fetch: function (text, update) { + if (!text) { + update(memberChoices); + } else { + text = text.toLowerCase(); + var suggestions = memberChoices.filter(n => n.name.toLowerCase().includes(text)); + update(suggestions); + } + }, + render: function (actor, search) { + const actorName = game.i18n.localize(actor.name); + const matchIndex = actorName.toLowerCase().indexOf(search); + + const beforeText = actorName.slice(0, matchIndex); + const matchText = actorName.slice(matchIndex, matchIndex + search.length); + const after = actorName.slice(matchIndex + search.length, actorName.length); + const img = document.createElement('img'); + img.src = actor.img; + + const element = document.createElement('li'); + element.appendChild(img); + + const label = document.createElement('span'); + label.innerHTML = `${beforeText}${matchText ? `${matchText}` : ''}${after}`; + element.appendChild(label); + + return element; + }, + renderGroup: function (label) { + const itemElement = document.createElement('div'); + itemElement.textContent = game.i18n.localize(label); + return itemElement; + }, + onSelect: actor => { + element.value = actor.uuid; + this.actorsMembers.push({ actor: actor, trait: 'agility', difficulty: 0 }); + this.render({ force: true }); + }, + click: e => e.fetch(), + customize: function (_input, _inputRect, container) { + container.style.zIndex = foundry.applications.api.ApplicationV2._maxZ; + }, + minLength: 0 + }); + }); + } + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + context.leader = this.actorLeader; + context.members = this.actorsMembers; + context.traitList = abilities; + + context.allSelected = this.actorsMembers.length + (this.actorLeader?.actor ? 1 : 0) === this.actors.length; + context.rollDisabled = context.members.length === 0 || !this.actorLeader?.actor; + + return context; + } + + static updateData(event, _, formData) { + const { actorLeader, actorsMembers } = foundry.utils.expandObject(formData.object); + this.actorLeader = foundry.utils.mergeObject(this.actorLeader, actorLeader); + this.actorsMembers = foundry.utils.mergeObject(this.actorsMembers, actorsMembers); + this.render(true); + } + + static async #removeLeader(_, button) { + this.actorLeader = null; + this.render(); + } + + static async #removeMember(_, button) { + this.actorsMembers = this.actorsMembers.filter(m => m.actor.uuid !== button.dataset.memberUuid); + this.render(); + } + + static async #roll() { + const cls = getDocumentClass('ChatMessage'); + const systemData = { + leader: this.actorLeader, + members: this.actorsMembers + }; + const msg = { + type: 'groupRoll', + user: game.user.id, + speaker: cls.getSpeaker(), + title: game.i18n.localize('DAGGERHEART.UI.Chat.groupRoll.title'), + system: systemData, + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/ui/chat/groupRoll.hbs', + { system: systemData } + ) + }; + + cls.create(msg); + this.close(); + } +} diff --git a/module/applications/dialogs/imageSelectDialog.mjs b/module/applications/dialogs/imageSelectDialog.mjs new file mode 100644 index 00000000..b54a45e0 --- /dev/null +++ b/module/applications/dialogs/imageSelectDialog.mjs @@ -0,0 +1,67 @@ +const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; + +export default class ImageSelectDialog extends HandlebarsApplicationMixin(ApplicationV2) { + constructor(titleName, images) { + super(); + + this.titleName = titleName; + this.images = images; + } + + static DEFAULT_OPTIONS = { + tag: 'form', + classes: ['daggerheart', 'dialog', 'dh-style', 'image-select'], + position: { + width: 600, + height: 'auto' + }, + window: { + icon: 'fa-solid fa-paw' + }, + actions: { + selectImage: ImageSelectDialog.#selectImage, + finishSelection: ImageSelectDialog.#finishSelection + } + }; + + get title() { + return this.titleName; + } + + /** @override */ + static PARTS = { + main: { template: 'systems/daggerheart/templates/dialogs/image-select/main.hbs' }, + footer: { template: 'systems/daggerheart/templates/dialogs/image-select/footer.hbs' } + }; + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + context.images = this.images; + context.selectedImage = this.selectedImage; + + return context; + } + + static #selectImage(_event, button) { + this.selectedImage = button.dataset.image ?? button.querySelector('img').dataset.image; + this.render(); + } + + static #finishSelection() { + this.close({ submitted: true }); + } + + async close(options = {}) { + if (!options.submitted) this.selectedImage = null; + + await super.close(); + } + + static async configure(title, images) { + return new Promise(resolve => { + const app = new this(title, images); + app.addEventListener('close', () => resolve(app.selectedImage), { once: true }); + app.render({ force: true }); + }); + } +} diff --git a/module/applications/dialogs/ownershipSelection.mjs b/module/applications/dialogs/ownershipSelection.mjs index e4a7e628..049f4d99 100644 --- a/module/applications/dialogs/ownershipSelection.mjs +++ b/module/applications/dialogs/ownershipSelection.mjs @@ -1,18 +1,20 @@ const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; export default class OwnershipSelection extends HandlebarsApplicationMixin(ApplicationV2) { - constructor(resolve, reject, name, ownership) { + constructor(name, ownership, defaultOwnership) { super({}); - this.resolve = resolve; - this.reject = reject; this.name = name; - this.ownership = ownership; + this.ownership = foundry.utils.deepClone(ownership); + this.defaultOwnership = defaultOwnership; } static DEFAULT_OPTIONS = { tag: 'form', - classes: ['daggerheart', 'views', 'ownership-selection'], + classes: ['daggerheart', 'views', 'dialog', 'dh-style', 'ownership-selection'], + window: { + icon: 'fa-solid fa-users' + }, position: { width: 600, height: 'auto' @@ -30,43 +32,48 @@ export default class OwnershipSelection extends HandlebarsApplicationMixin(Appli return game.i18n.format('DAGGERHEART.APPLICATIONS.OwnershipSelection.title', { name: this.name }); } + getOwnershipData(id) { + return this.ownership[id] ?? CONST.DOCUMENT_OWNERSHIP_LEVELS.INHERIT; + } + async _prepareContext(_options) { const context = await super._prepareContext(_options); - context.ownershipOptions = Object.keys(CONST.DOCUMENT_OWNERSHIP_LEVELS).map(level => ({ - value: CONST.DOCUMENT_OWNERSHIP_LEVELS[level], - label: game.i18n.localize(`OWNERSHIP.${level}`) - })); - context.ownership = { - default: this.ownership.default, - players: Object.keys(this.ownership.players).reduce((acc, x) => { - const user = game.users.get(x); - if (!user.isGM) { - acc[x] = { - img: user.character?.img ?? 'icons/svg/cowled.svg', - name: user.name, - ownership: this.ownership.players[x].value - }; - } + context.ownershipDefaultOptions = CONFIG.DH.GENERAL.basicOwnershiplevels; + context.ownershipOptions = CONFIG.DH.GENERAL.simpleOwnershiplevels; + context.defaultOwnership = this.defaultOwnership; + context.ownership = game.users.reduce((acc, user) => { + if (!user.isGM) { + acc[user.id] = { + ...user, + img: user.character?.img ?? 'icons/svg/cowled.svg', + ownership: this.getOwnershipData(user.id) + }; + } - return acc; - }, {}) - }; + return acc; + }, {}); return context; } static async updateData(event, _, formData) { - const { ownership } = foundry.utils.expandObject(formData.object); - - this.resolve(ownership); - this.close(true); + const data = foundry.utils.expandObject(formData.object); + this.close(data); } - async close(fromSave) { - if (!fromSave) { - this.reject(); + async close(data) { + if (data) { + this.saveData = data; } await super.close(); } + + static async configure(name, ownership, defaultOwnership) { + return new Promise(resolve => { + const app = new this(name, ownership, defaultOwnership); + app.addEventListener('close', () => resolve(app.saveData), { once: true }); + app.render({ force: true }); + }); + } } diff --git a/module/applications/dialogs/rerollDamageDialog.mjs b/module/applications/dialogs/rerollDamageDialog.mjs index 0c2ea0e1..e1b75eb7 100644 --- a/module/applications/dialogs/rerollDamageDialog.mjs +++ b/module/applications/dialogs/rerollDamageDialog.mjs @@ -1,3 +1,5 @@ +import { RefreshType, socketEvent } from '../../systemRegistration/socket.mjs'; + const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; export default class RerollDamageDialog extends HandlebarsApplicationMixin(ApplicationV2) { @@ -122,6 +124,15 @@ export default class RerollDamageDialog extends HandlebarsApplicationMixin(Appli }, {}) }; await this.message.update(update); + + Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll }); + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.Refresh, + data: { + refreshType: RefreshType.TagTeamRoll + } + }); + await this.close(); } diff --git a/module/applications/dialogs/tagTeamDialog.mjs b/module/applications/dialogs/tagTeamDialog.mjs new file mode 100644 index 00000000..e7290f1c --- /dev/null +++ b/module/applications/dialogs/tagTeamDialog.mjs @@ -0,0 +1,315 @@ +import { GMUpdateEvent, RefreshType, socketEvent } from '../../systemRegistration/socket.mjs'; + +const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; + +export default class TagTeamDialog extends HandlebarsApplicationMixin(ApplicationV2) { + constructor(party) { + super(); + + this.data = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll); + this.party = party; + + this.setupHooks = Hooks.on(socketEvent.Refresh, ({ refreshType }) => { + if (refreshType === RefreshType.TagTeamRoll) { + this.data = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll); + this.render(); + } + }); + } + + get title() { + return game.i18n.localize('DAGGERHEART.APPLICATIONS.TagTeamSelect.title'); + } + + static DEFAULT_OPTIONS = { + tag: 'form', + classes: ['daggerheart', 'views', 'dh-style', 'dialog', 'tag-team-dialog'], + position: { width: 550, height: 'auto' }, + actions: { + removeMember: TagTeamDialog.#removeMember, + unlinkMessage: TagTeamDialog.#unlinkMessage, + selectMessage: TagTeamDialog.#selectMessage, + createTagTeam: TagTeamDialog.#createTagTeam + }, + form: { handler: this.updateData, submitOnChange: true, closeOnSubmit: false } + }; + + static PARTS = { + application: { + id: 'tag-team-dialog', + template: 'systems/daggerheart/templates/dialogs/tagTeamDialog.hbs' + } + }; + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + context.hopeCost = this.hopeCost; + context.data = this.data; + + context.memberOptions = this.party.filter(c => !this.data.members[c.id]); + context.selectedCharacterOptions = this.party.filter(c => this.data.members[c.id]); + + context.members = Object.keys(this.data.members).map(id => { + const roll = this.data.members[id].messageId ? game.messages.get(this.data.members[id].messageId) : null; + + context.usesDamage = + context.usesDamage === undefined + ? roll?.system.hasDamage + : context.usesDamage && roll?.system.hasDamage; + return { + character: this.party.find(x => x.id === id), + selected: this.data.members[id].selected, + roll: roll, + damageValues: roll + ? Object.keys(roll.system.damage).map(key => ({ + key: key, + name: game.i18n.localize(CONFIG.DH.GENERAL.healingTypes[key].label), + total: roll.system.damage[key].total + })) + : null + }; + }); + + const initiatorChar = this.party.find(x => x.id === this.data.initiator.id); + context.initiator = { + character: initiatorChar, + cost: this.data.initiator.cost + }; + + context.selectedData = Object.values(context.members).reduce( + (acc, member) => { + if (!member.roll) return acc; + if (member.selected) { + acc.result = `${member.roll.system.roll.total} ${member.roll.system.roll.result.label}`; + } + + if (context.usesDamage) { + if (!acc.damageValues) acc.damageValues = {}; + for (let damage of member.damageValues) { + if (acc.damageValues[damage.key]) { + acc.damageValues[damage.key].total += damage.total; + } else { + acc.damageValues[damage.key] = foundry.utils.deepClone(damage); + } + } + } + + return acc; + }, + { result: null, damageValues: null } + ); + context.showResult = Object.values(context.members).reduce((enabled, member) => { + if (!member.roll) return enabled; + if (context.usesDamage) { + enabled = enabled === null ? member.damageValues.length > 0 : enabled && member.damageValues.length > 0; + } else { + enabled = enabled === null ? Boolean(member.roll) : enabled && Boolean(member.roll); + } + + return enabled; + }, null); + + context.createDisabled = + !context.selectedData.result || + !this.data.initiator.id || + Object.keys(this.data.members).length === 0 || + Object.values(context.members).some(x => + context.usesDamage ? !x.damageValues || x.damageValues.length === 0 : !x.roll + ); + + return context; + } + + async updateSource(update) { + await this.data.updateSource(update); + + if (game.user.isGM) { + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, this.data.toObject()); + Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll }); + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.Refresh, + data: { + refreshType: RefreshType.TagTeamRoll + } + }); + } else { + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.GMUpdate, + data: { + action: GMUpdateEvent.UpdateSetting, + uuid: CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, + update: this.data.toObject(), + refresh: { refreshType: RefreshType.TagTeamRoll } + } + }); + } + } + + static async updateData(_event, _element, formData) { + const { selectedAddMember, initiator } = foundry.utils.expandObject(formData.object); + const update = { initiator: initiator }; + if (selectedAddMember) { + const member = await foundry.utils.fromUuid(selectedAddMember); + update[`members.${member.id}`] = { messageId: null }; + } + + await this.updateSource(update); + this.render(); + } + + static async #removeMember(_, button) { + const update = { [`members.-=${button.dataset.characterId}`]: null }; + if (this.data.initiator.id === button.dataset.characterId) { + update.iniator = { id: null }; + } + + await this.updateSource(update); + } + + static async #unlinkMessage(_, button) { + await this.updateSource({ [`members.${button.id}.messageId`]: null }); + } + + static async #selectMessage(_, button) { + const member = this.data.members[button.id]; + const currentSelected = Object.keys(this.data.members).find(key => this.data.members[key].selected); + const curretSelectedUpdate = + currentSelected && currentSelected !== button.id ? { [`${currentSelected}`]: { selected: false } } : {}; + await this.updateSource({ + members: { + [`${button.id}`]: { selected: !member.selected }, + ...curretSelectedUpdate + } + }); + } + + static async #createTagTeam() { + const mainRollId = Object.keys(this.data.members).find(key => this.data.members[key].selected); + const mainRoll = game.messages.get(this.data.members[mainRollId].messageId); + + if (this.data.initiator.cost) { + const initiator = this.party.find(x => x.id === this.data.initiator.id); + if (initiator.system.resources.hope.value < this.data.initiator.cost) { + return ui.notifications.warn( + game.i18n.localize('DAGGERHEART.APPLICATIONS.TagTeamSelect.insufficientHope') + ); + } + } + + const secondaryRolls = Object.keys(this.data.members) + .filter(key => key !== mainRollId) + .map(key => game.messages.get(this.data.members[key].messageId)); + + const systemData = foundry.utils.deepClone(mainRoll).system.toObject(); + for (let roll of secondaryRolls) { + if (roll.system.hasDamage) { + for (let key in roll.system.damage) { + var damage = roll.system.damage[key]; + if (systemData.damage[key]) { + systemData.damage[key].total += damage.total; + systemData.damage[key].parts = [...systemData.damage[key].parts, ...damage.parts]; + } else { + systemData.damage[key] = damage; + } + } + } + } + systemData.title = game.i18n.localize('DAGGERHEART.APPLICATIONS.TagTeamSelect.chatMessageRollTitle'); + + const cls = getDocumentClass('ChatMessage'), + msgData = { + type: 'dualityRoll', + user: game.user.id, + title: game.i18n.localize('DAGGERHEART.APPLICATIONS.TagTeamSelect.title'), + speaker: cls.getSpeaker({ actor: this.party.find(x => x.id === mainRollId) }), + system: systemData, + rolls: mainRoll.rolls, + sound: null, + flags: { core: { RollTable: true } } + }; + + await cls.create(msgData); + + const fearUpdate = { key: 'fear', value: null, total: null, enabled: true }; + for (let memberId of Object.keys(this.data.members)) { + const resourceUpdates = []; + if (systemData.roll.isCritical || systemData.roll.result.duality === 1) { + const value = + memberId !== this.data.initiator.id + ? 1 + : this.data.initiator.cost + ? 1 - this.data.initiator.cost + : 1; + resourceUpdates.push({ key: 'hope', value: value, total: -value, enabled: true }); + } + if (systemData.roll.isCritical) resourceUpdates.push({ key: 'stress', value: -1, total: 1, enabled: true }); + if (systemData.roll.result.duality === -1) { + fearUpdate.value = fearUpdate.value === null ? 1 : fearUpdate.value + 1; + fearUpdate.total = fearUpdate.total === null ? -1 : fearUpdate.total - 1; + } + + this.party.find(x => x.id === memberId).modifyResource(resourceUpdates); + } + + if (fearUpdate.value) { + this.party.find(x => x.id === mainRollId).modifyResource([fearUpdate]); + } + + /* Improve by fetching default from schema */ + const update = { members: [], initiator: { id: null, cost: 3 } }; + if (game.user.isGM) { + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, update); + Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll }); + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.Refresh, + data: { + refreshType: RefreshType.TagTeamRoll + } + }); + } else { + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.GMUpdate, + data: { + action: GMUpdateEvent.UpdateSetting, + uuid: CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, + update: update, + refresh: { refreshType: RefreshType.TagTeamRoll } + } + }); + } + } + + static async assignRoll(char, message) { + const settings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll); + const character = settings.members[char.id]; + if (!character) return; + + await settings.updateSource({ [`members.${char.id}.messageId`]: message.id }); + + if (game.user.isGM) { + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, settings); + Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll }); + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.Refresh, + data: { + refreshType: RefreshType.TagTeamRoll + } + }); + } else { + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.GMUpdate, + data: { + action: GMUpdateEvent.UpdateSetting, + uuid: CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, + update: settings, + refresh: { refreshType: RefreshType.TagTeamRoll } + } + }); + } + } + + async close(options = {}) { + Hooks.off(socketEvent.Refresh, this.setupHooks); + await super.close(options); + } +} diff --git a/module/applications/hud/tokenHUD.mjs b/module/applications/hud/tokenHUD.mjs index 5c29260b..030eca59 100644 --- a/module/applications/hud/tokenHUD.mjs +++ b/module/applications/hud/tokenHUD.mjs @@ -1,6 +1,12 @@ +import { shuffleArray } from '../../helpers/utils.mjs'; + export default class DHTokenHUD extends foundry.applications.hud.TokenHUD { static DEFAULT_OPTIONS = { - classes: ['daggerheart'] + classes: ['daggerheart'], + actions: { + combat: DHTokenHUD.#onToggleCombat, + togglePartyTokens: DHTokenHUD.#togglePartyTokens + } }; /** @override */ @@ -11,8 +17,20 @@ export default class DHTokenHUD extends foundry.applications.hud.TokenHUD { } }; + static #nonCombatTypes = ['environment', 'companion']; + async _prepareContext(options) { const context = await super._prepareContext(options); + + context.partyOnCanvas = + this.actor.type === 'party' && + this.actor.system.partyMembers.some(member => member.getActiveTokens().length > 0); + context.icons.toggleParty = 'systems/daggerheart/assets/icons/arrow-dunk.png'; + context.actorType = this.actor.type; + context.usesEffects = this.actor.type !== 'party'; + context.canToggleCombat = DHTokenHUD.#nonCombatTypes.includes(this.actor.type) + ? false + : context.canToggleCombat; context.systemStatusEffects = Object.keys(context.statusEffects).reduce((acc, key) => { const effect = context.statusEffects[key]; if (effect.systemEffect) acc[key] = effect; @@ -36,6 +54,119 @@ export default class DHTokenHUD extends foundry.applications.hud.TokenHUD { return context; } + static async #onToggleCombat() { + const tokens = canvas.tokens.controlled + .filter(t => !t.actor || !DHTokenHUD.#nonCombatTypes.includes(t.actor.type)) + .map(t => t.document); + if (!this.object.controlled) tokens.push(this.document); + + try { + if (this.document.inCombat) await TokenDocument.implementation.deleteCombatants(tokens); + else await TokenDocument.implementation.createCombatants(tokens); + } catch (err) { + ui.notifications.warn(err.message); + } + } + + static async #togglePartyTokens(_, button) { + const icon = button.querySelector('img'); + icon.classList.toggle('flipped'); + button.dataset.tooltip = game.i18n.localize( + icon.classList.contains('flipped') + ? 'DAGGERHEART.APPLICATIONS.HUD.tokenHUD.retrievePartyTokens' + : 'DAGGERHEART.APPLICATIONS.HUD.tokenHUD.depositPartyTokens' + ); + + const animationDuration = 500; + const activeTokens = this.actor.system.partyMembers.flatMap(member => member.getActiveTokens()); + const { x: actorX, y: actorY } = this.document; + if (activeTokens.length > 0) { + for (let token of activeTokens) { + await token.document.update( + { x: actorX, y: actorY, alpha: 0 }, + { animation: { duration: animationDuration } } + ); + setTimeout(() => token.document.delete(), animationDuration); + } + } else { + const activeScene = game.scenes.find(x => x.active); + const partyTokenData = []; + for (let member of this.actor.system.partyMembers) { + const data = await member.getTokenDocument(); + partyTokenData.push(data.toObject()); + } + const newTokens = await activeScene.createEmbeddedDocuments( + 'Token', + partyTokenData.map(tokenData => ({ + ...tokenData, + alpha: 0, + x: actorX, + y: actorY + })) + ); + + const { sizeX, sizeY } = activeScene.grid; + const nrRandomPositions = Math.ceil(newTokens.length / 8) * 8; + /* This is an overcomplicated mess, but I'm stupid */ + const positions = shuffleArray( + [...Array(nrRandomPositions).keys()].map((_, index) => { + const nonZeroIndex = index + 1; + const indexFloor = Math.floor(index / 8); + const distanceCoefficient = indexFloor + 1; + const side = 3 + indexFloor * 2; + const sideMiddle = Math.ceil(side / 2); + const inbetween = 1 + indexFloor * 2; + const inbetweenMiddle = Math.ceil(inbetween / 2); + + if (index < side) { + const distance = + nonZeroIndex === sideMiddle + ? 0 + : nonZeroIndex < sideMiddle + ? -nonZeroIndex + : nonZeroIndex - sideMiddle; + return { x: actorX - sizeX * distance, y: actorY - sizeY * distanceCoefficient }; + } else if (index < side + inbetween) { + const inbetweenIndex = nonZeroIndex - side; + const distance = + inbetweenIndex === inbetweenMiddle + ? 0 + : inbetweenIndex < inbetweenMiddle + ? -inbetweenIndex + : inbetweenIndex - inbetweenMiddle; + return { x: actorX + sizeX * distanceCoefficient, y: actorY + sizeY * distance }; + } else if (index < 2 * side + inbetween) { + const sideIndex = nonZeroIndex - side - inbetween; + const distance = + sideIndex === sideMiddle + ? 0 + : sideIndex < sideMiddle + ? sideIndex + : -(sideIndex - sideMiddle); + return { x: actorX + sizeX * distance, y: actorY + sizeY * distanceCoefficient }; + } else { + const inbetweenIndex = nonZeroIndex - 2 * side - inbetween; + const distance = + inbetweenIndex === inbetweenMiddle + ? 0 + : inbetweenIndex < inbetweenMiddle + ? inbetweenIndex + : -(inbetweenIndex - inbetweenMiddle); + return { x: actorX - sizeX * distanceCoefficient, y: actorY + sizeY * distance }; + } + }) + ); + + for (let token of newTokens) { + const position = positions.pop(); + token.update( + { x: position.x, y: position.y, alpha: 1 }, + { animation: { duration: animationDuration } } + ); + } + } + } + _getStatusEffectChoices() { // Include all HUD-enabled status effects const choices = {}; diff --git a/module/applications/levelup/_module.mjs b/module/applications/levelup/_module.mjs index dd4135b4..24944feb 100644 --- a/module/applications/levelup/_module.mjs +++ b/module/applications/levelup/_module.mjs @@ -1,3 +1,4 @@ export { default as CharacterLevelup } from './characterLevelup.mjs'; export { default as CompanionLevelup } from './companionLevelup.mjs'; export { default as Levelup } from './levelup.mjs'; +export { default as LevelupViewMode } from './levelupViewMode.mjs'; diff --git a/module/applications/levelup/levelup.mjs b/module/applications/levelup/levelup.mjs index 0b3f8970..c3cc6e81 100644 --- a/module/applications/levelup/levelup.mjs +++ b/module/applications/levelup/levelup.mjs @@ -1,6 +1,5 @@ import { abilities, subclassFeatureLabels } from '../../config/actorConfig.mjs'; import { getDeleteKeys, tagifyElement } from '../../helpers/utils.mjs'; -import { ItemBrowser } from '../ui/itemBrowser.mjs'; const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; @@ -12,8 +11,6 @@ export default class DhlevelUp extends HandlebarsApplicationMixin(ApplicationV2) this._dragDrop = this._createDragDropHandlers(); this.tabGroups.primary = 'advancements'; - - this.itemBrowser = null; } get title() { @@ -540,7 +537,6 @@ export default class DhlevelUp extends HandlebarsApplicationMixin(ApplicationV2) const type = target.dataset.compendium ?? target.dataset.type; const presets = { - compendium: 'daggerheart', folder: type, render: { noFolder: true @@ -559,7 +555,7 @@ export default class DhlevelUp extends HandlebarsApplicationMixin(ApplicationV2) }; } - return (this.itemBrowser = await new ItemBrowser({ presets }).render({ force: true })); + ui.compendiumBrowser.open(presets); } static async selectPreview(_, button) { @@ -662,7 +658,8 @@ export default class DhlevelUp extends HandlebarsApplicationMixin(ApplicationV2) }, {}); await this.actor.levelUp(levelupData); - if (this.itemBrowser) this.itemBrowser.close(); + + if (ui.compendiumBrowser) ui.compendiumBrowser.close(); this.close(); } } diff --git a/module/applications/levelup/levelupViewMode.mjs b/module/applications/levelup/levelupViewMode.mjs new file mode 100644 index 00000000..b3d7c30f --- /dev/null +++ b/module/applications/levelup/levelupViewMode.mjs @@ -0,0 +1,95 @@ +import { chunkify } from '../../helpers/utils.mjs'; + +const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; + +export default class DhlevelUpViewMode extends HandlebarsApplicationMixin(ApplicationV2) { + constructor(actor) { + super({}); + + this.actor = actor; + } + + get title() { + return game.i18n.format('DAGGERHEART.APPLICATIONS.Levelup.viewModeTitle', { actor: this.actor.name }); + } + + static DEFAULT_OPTIONS = { + classes: ['daggerheart', 'dialog', 'dh-style', 'levelup'], + position: { width: 1000, height: 'auto' }, + window: { + resizable: true, + icon: 'fa-solid fa-arrow-turn-up' + } + }; + + static PARTS = { + main: { template: 'systems/daggerheart/templates/levelup/tabs/viewMode.hbs' } + }; + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + + const { tiers } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LevelTiers); + const tierKeys = Object.keys(tiers); + const selections = Object.keys(this.actor.system.levelData.levelups).reduce( + (acc, key) => { + const level = this.actor.system.levelData.levelups[key]; + Object.keys(level.selections).forEach(optionKey => { + const choice = level.selections[optionKey]; + if (!acc[choice.tier][choice.optionKey]) acc[choice.tier][choice.optionKey] = {}; + acc[choice.tier][choice.optionKey][choice.checkboxNr] = choice; + }); + + return acc; + }, + tierKeys.reduce((acc, key) => { + acc[key] = {}; + return acc; + }, {}) + ); + + context.tiers = tierKeys.map((tierKey, tierIndex) => { + const tier = tiers[tierKey]; + + return { + name: tier.name, + active: true, + groups: Object.keys(tier.options).map(optionKey => { + const option = tier.options[optionKey]; + + const checkboxes = [...Array(option.checkboxSelections).keys()].flatMap(index => { + const checkboxNr = index + 1; + const checkboxData = selections[tierKey]?.[optionKey]?.[checkboxNr]; + const checkbox = { ...option, checkboxNr, tier: tierKey, disabled: true }; + + if (checkboxData) { + checkbox.level = checkboxData.level; + checkbox.selected = true; + } + + return checkbox; + }); + + let label = game.i18n.localize(option.label); + return { + label: label, + checkboxGroups: chunkify(checkboxes, option.minCost, chunkedBoxes => { + const anySelected = chunkedBoxes.some(x => x.selected); + const anyDisabled = chunkedBoxes.some(x => x.disabled); + return { + multi: option.minCost > 1, + checkboxes: chunkedBoxes.map(x => ({ + ...x, + selected: anySelected, + disabled: anyDisabled + })) + }; + }) + }; + }) + }; + }); + + return context; + } +} diff --git a/module/applications/scene/_module.mjs b/module/applications/scene/_module.mjs new file mode 100644 index 00000000..7cefd268 --- /dev/null +++ b/module/applications/scene/_module.mjs @@ -0,0 +1 @@ +export { default as DhSceneConfigSettings } from './sceneConfigSettings.mjs'; diff --git a/module/applications/scene/sceneConfigSettings.mjs b/module/applications/scene/sceneConfigSettings.mjs new file mode 100644 index 00000000..be8f7b71 --- /dev/null +++ b/module/applications/scene/sceneConfigSettings.mjs @@ -0,0 +1,63 @@ +export default class DhSceneConfigSettings extends foundry.applications.sheets.SceneConfig { + // static DEFAULT_OPTIONS = { + // ...super.DEFAULT_OPTIONS, + // form: { + // handler: this.updateData, + // closeOnSubmit: true + // } + // }; + + static buildParts() { + const { footer, tabs, ...parts } = super.PARTS; + const tmpParts = { + // tabs, + tabs: { template: 'systems/daggerheart/templates/scene/tabs.hbs' }, + ...parts, + dh: { template: 'systems/daggerheart/templates/scene/dh-config.hbs' }, + footer + }; + return tmpParts; + } + + static PARTS = DhSceneConfigSettings.buildParts(); + + static buildTabs() { + super.TABS.sheet.tabs.push({ id: 'dh', src: 'systems/daggerheart/assets/logos/FoundryBorneLogoWhite.svg' }); + return super.TABS; + } + + static TABS = DhSceneConfigSettings.buildTabs(); + + _attachPartListeners(partId, htmlElement, options) { + super._attachPartListeners(partId, htmlElement, options); + switch (partId) { + case 'dh': + htmlElement.querySelector('#rangeMeasurementSetting')?.addEventListener('change', async event => { + const flagData = foundry.utils.mergeObject(this.document.flags.daggerheart, { + rangeMeasurement: { setting: event.target.value } + }); + this.document.flags.daggerheart = flagData; + this.render(); + }); + break; + } + } + + /** @inheritDoc */ + async _preparePartContext(partId, context, options) { + context = await super._preparePartContext(partId, context, options); + switch (partId) { + case 'dh': + context.data = new game.system.api.data.scenes.DHScene(canvas.scene.flags.daggerheart); + context.variantRules = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules); + break; + } + + return context; + } + + // static async updateData(event, _, formData) { + // const data = foundry.utils.expandObject(formData.object); + // this.close(data); + // } +} diff --git a/module/applications/settings/appearanceSettings.mjs b/module/applications/settings/appearanceSettings.mjs index f0310477..5950f961 100644 --- a/module/applications/settings/appearanceSettings.mjs +++ b/module/applications/settings/appearanceSettings.mjs @@ -3,43 +3,48 @@ import { getDiceSoNicePreset } from '../../config/generalConfig.mjs'; const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; +/** + * @import {ApplicationClickAction} from "@client/applications/_types.mjs" + */ + export default class DHAppearanceSettings extends HandlebarsApplicationMixin(ApplicationV2) { - constructor() { - super({}); - - this.settings = new DhAppearance( - game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance).toObject() - ); - } - - get title() { - return game.i18n.localize('DAGGERHEART.SETTINGS.Menu.title'); - } - + /**@inheritdoc */ static DEFAULT_OPTIONS = { tag: 'form', id: 'daggerheart-appearance-settings', classes: ['daggerheart', 'dialog', 'dh-style', 'setting'], position: { width: '600', height: 'auto' }, window: { + title: 'DAGGERHEART.SETTINGS.Menu.title', icon: 'fa-solid fa-gears' }, actions: { - reset: this.reset, - save: this.save, - preview: this.preview + reset: DHAppearanceSettings.#onReset, + preview: DHAppearanceSettings.#onPreview }, - form: { handler: this.updateData, submitOnChange: true } + form: { + closeOnSubmit: true, + handler: DHAppearanceSettings.#onSubmit + } }; static PARTS = { - main: { - template: 'systems/daggerheart/templates/settings/appearance-settings.hbs' - } + header: { template: 'systems/daggerheart/templates/settings/appearance-settings/header.hbs' }, + tabs: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }, + main: { template: 'systems/daggerheart/templates/settings/appearance-settings/main.hbs' }, + diceSoNice: { template: 'systems/daggerheart/templates/settings/appearance-settings/diceSoNice.hbs' }, + footer: { template: 'templates/generic/form-footer.hbs' } }; /** @inheritdoc */ static TABS = { + general: { + tabs: [ + { id: 'main', label: 'DAGGERHEART.GENERAL.Tabs.general' }, + { id: 'diceSoNice', label: 'DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.title' } + ], + initial: 'main' + }, diceSoNice: { tabs: [ { id: 'hope', label: 'DAGGERHEART.GENERAL.hope' }, @@ -51,79 +56,149 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App } }; - changeTab(tab, group, options) { - super.changeTab(tab, group, options); + /**@type {DhAppearance}*/ + setting; - this.render(); + static #localized = false; + + /** @inheritDoc */ + async _preFirstRender(_context, _options) { + await super._preFirstRender(_context, _options); + if (!DHAppearanceSettings.#localized) { + foundry.helpers.Localization.localizeDataModel(this.setting.constructor); + DHAppearanceSettings.#localized = true; + } } - async _prepareContext(_options) { - const context = await super._prepareContext(_options); - context.settingFields = this.settings; - - 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 }); - } + /** @inheritdoc */ + _configureRenderParts(options) { + const parts = super._configureRenderParts(options); + if (!game.modules.get('dice-so-nice')?.active) { + delete parts.diceSoNice; + delete parts.tabs; } + return parts; + } - context.diceTab = { - key: this.tabGroups.diceSoNice, - source: this.settings._source.diceSoNice[this.tabGroups.diceSoNice], - fields: this.settings.schema.fields.diceSoNice.fields[this.tabGroups.diceSoNice].fields - }; + /**@inheritdoc */ + async _prepareContext(options) { + const context = await super._prepareContext(options); + if (options.isFirstRender) + this.setting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance); + + context.setting = this.setting; + context.fields = this.setting.schema.fields; + + context.tabs = this._prepareTabs('general'); + context.dsnTabs = this._prepareTabs('diceSoNice'); return context; } - static async updateData(event, element, formData) { - const updatedSettings = foundry.utils.expandObject(formData.object); - - await this.settings.updateSource(updatedSettings); - this.render(); + /**@inheritdoc */ + async _preparePartContext(partId, context, options) { + const partContext = await super._preparePartContext(partId, context, options); + if (partId in context.tabs) partContext.tab = partContext.tabs[partId]; + switch (partId) { + case 'diceSoNice': + await this.prepareDiceSoNiceContext(partContext); + break; + case 'footer': + partContext.buttons = [ + { type: 'button', action: 'reset', icon: 'fa-solid fa-arrow-rotate-left', label: 'Reset' }, + { type: 'submit', icon: 'fa-solid fa-floppy-disk', label: 'Save Changes' } + ]; + break; + } + return partContext; } - static async preview() { - const source = this.settings._source.diceSoNice[this.tabGroups.diceSoNice]; - let faces = 'd12'; - switch (this.tabGroups.diceSoNice) { - case 'advantage': - case 'disadvantage': - faces = 'd6'; - } - const preset = await getDiceSoNicePreset(source, faces); - const diceSoNiceRoll = await new Roll(`1${faces}`).evaluate(); + /** + * Prepare render context for the DSN part. + * @param {ApplicationRenderContext} context + * @returns {Promise} + * @protected + */ + async prepareDiceSoNiceContext(context) { + context.diceSoNiceTextures = Object.entries(game.dice3d.exports.TEXTURELIST).reduce( + (acc, [k, v]) => ({ + ...acc, + [k]: v.name + }), + {} + ); + context.diceSoNiceColorsets = Object.values(game.dice3d.exports.COLORSETS).reduce( + (acc, v) => ({ + ...acc, + [v.id]: v.description + }), + {} + ); + context.diceSoNiceMaterials = Object.keys(game.dice3d.DiceFactory.material_options).reduce( + (acc, key) => ({ + ...acc, + [key]: `DICESONICE.Material${key.capitalize()}` + }), + {} + ); + context.diceSoNiceSystems = Object.fromEntries( + [...game.dice3d.DiceFactory.systems].map(([k, v]) => [k, v.name]) + ); + + foundry.utils.mergeObject( + context.dsnTabs, + ['hope', 'fear', 'advantage', 'disadvantage'].reduce( + (acc, key) => ({ + ...acc, + [key]: { + values: this.setting.diceSoNice[key], + fields: this.setting.schema.getField(`diceSoNice.${key}`).fields + } + }), + {} + ) + ); + } + + /** + * Submit the configuration form. + * @this {DHAppearanceSettings} + * @param {SubmitEvent} event + * @param {HTMLFormElement} form + * @param {foundry.applications.ux.FormDataExtended} formData + * @returns {Promise} + */ + static async #onSubmit(event, form, formData) { + const data = this.setting.schema.clean(foundry.utils.expandObject(formData.object)); + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance, data); + } + + /* -------------------------------------------- */ + + /** + * Submit the configuration form. + * @this {DHAppearanceSettings} + * @type {ApplicationClickAction} + */ + static async #onPreview(_, target) { + const formData = new foundry.applications.ux.FormDataExtended(target.closest('form')); + const { diceSoNice } = foundry.utils.expandObject(formData.object); + const { key } = target.dataset; + const faces = ['advantage', 'disadvantage'].includes(key) ? 'd6' : 'd12'; + const preset = await getDiceSoNicePreset(diceSoNice[key], faces); + const diceSoNiceRoll = await new foundry.dice.Roll(`1${faces}`).evaluate(); diceSoNiceRoll.dice[0].options.appearance = preset.appearance; diceSoNiceRoll.dice[0].options.modelFile = preset.modelFile; - await game.dice3d.showForRoll(diceSoNiceRoll, game.user, false); } - static async reset() { - this.settings = new DhAppearance(); - this.render(); - } - - static async save() { - await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance, this.settings.toObject()); - - this.close(); - } - - _getTabs(tabs) { - for (const v of Object.values(tabs)) { - v.active = this.tabGroups[v.group] ? this.tabGroups[v.group] === v.id : v.active; - v.cssClass = v.active ? 'active' : ''; - } - - return tabs; + /** + * Reset the form back to default values. + * @this {DHAppearanceSettings} + * @type {ApplicationClickAction} + */ + static async #onReset() { + this.setting = new this.setting.constructor(); + this.render({ force: false }); } } diff --git a/module/applications/settings/automationSettings.mjs b/module/applications/settings/automationSettings.mjs index 0157e016..4407897d 100644 --- a/module/applications/settings/automationSettings.mjs +++ b/module/applications/settings/automationSettings.mjs @@ -35,13 +35,14 @@ export default class DhAutomationSettings extends HandlebarsApplicationMixin(App header: { template: 'systems/daggerheart/templates/settings/automation-settings/header.hbs' }, general: { template: 'systems/daggerheart/templates/settings/automation-settings/general.hbs' }, rules: { template: 'systems/daggerheart/templates/settings/automation-settings/rules.hbs' }, + roll: { template: 'systems/daggerheart/templates/settings/automation-settings/roll.hbs' }, footer: { template: 'systems/daggerheart/templates/settings/automation-settings/footer.hbs' } }; /** @inheritdoc */ static TABS = { main: { - tabs: [{ id: 'general' }, { id: 'rules' }], + tabs: [{ id: 'general' }, { id: 'rules' }, { id: 'roll' }], initial: 'general', labelPrefix: 'DAGGERHEART.GENERAL.Tabs' } diff --git a/module/applications/settings/homebrewSettings.mjs b/module/applications/settings/homebrewSettings.mjs index 3fa42afd..e880f7ee 100644 --- a/module/applications/settings/homebrewSettings.mjs +++ b/module/applications/settings/homebrewSettings.mjs @@ -1,5 +1,6 @@ import { DhHomebrew } from '../../data/settings/_module.mjs'; import { slugify } from '../../helpers/utils.mjs'; + const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; export default class DhHomebrewSettings extends HandlebarsApplicationMixin(ApplicationV2) { @@ -10,11 +11,14 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).toObject() ); - this.selected = { - domain: null - }; + this.selected = this.#getDefaultAdversaryType(); } + #getDefaultAdversaryType = () => ({ + domain: null, + adversaryType: null + }); + get title() { return game.i18n.localize('DAGGERHEART.SETTINGS.Menu.title'); } @@ -35,6 +39,9 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli addDomain: this.addDomain, toggleSelectedDomain: this.toggleSelectedDomain, deleteDomain: this.deleteDomain, + addAdversaryType: this.addAdversaryType, + deleteAdversaryType: this.deleteAdversaryType, + selectAdversaryType: this.selectAdversaryType, save: this.save, reset: this.reset }, @@ -45,6 +52,8 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli tabs: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }, settings: { template: 'systems/daggerheart/templates/settings/homebrew-settings/settings.hbs' }, domains: { template: 'systems/daggerheart/templates/settings/homebrew-settings/domains.hbs' }, + types: { template: 'systems/daggerheart/templates/settings/homebrew-settings/types.hbs' }, + itemTypes: { template: 'systems/daggerheart/templates/settings/homebrew-settings/itemFeatures.hbs' }, downtime: { template: 'systems/daggerheart/templates/settings/homebrew-settings/downtime.hbs' }, footer: { template: 'systems/daggerheart/templates/settings/homebrew-settings/footer.hbs' } }; @@ -52,12 +61,19 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli /** @inheritdoc */ static TABS = { main: { - tabs: [{ id: 'settings' }, { id: 'domains' }, { id: 'downtime' }], + tabs: [{ id: 'settings' }, { id: 'domains' }, { id: 'types' }, { id: 'itemFeatures' }, { id: 'downtime' }], initial: 'settings', labelPrefix: 'DAGGERHEART.GENERAL.Tabs' } }; + changeTab(tab, group, options) { + super.changeTab(tab, group, options); + this.selected = this.#getDefaultAdversaryType(); + + this.render(); + } + async _prepareContext(_options) { const context = await super._prepareContext(_options); context.settingFields = this.settings; @@ -79,6 +95,11 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli context.configDomains = CONFIG.DH.DOMAIN.domains; context.homebrewDomains = this.settings.domains; break; + case 'types': + context.selectedAdversaryType = this.selected.adversaryType + ? { id: this.selected.adversaryType, ...this.settings.adversaryTypes[this.selected.adversaryType] } + : null; + break; } return context; @@ -95,33 +116,53 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli } static async addItem(_, target) { - await this.settings.updateSource({ - [`restMoves.${target.dataset.type}.moves.${foundry.utils.randomID()}`]: { - name: game.i18n.localize('DAGGERHEART.SETTINGS.Homebrew.newDowntimeMove'), - img: 'icons/magic/life/cross-worn-green.webp', - description: '', - actions: [] - } - }); + const { type } = target.dataset; + if (['shortRest', 'longRest'].includes(type)) { + await this.settings.updateSource({ + [`restMoves.${type}.moves.${foundry.utils.randomID()}`]: { + name: game.i18n.localize('DAGGERHEART.SETTINGS.Homebrew.newDowntimeMove'), + img: 'icons/magic/life/cross-worn-green.webp', + description: '', + actions: [] + } + }); + } else if (['armorFeatures', 'weaponFeatures'].includes(type)) { + await this.settings.updateSource({ + [`itemFeatures.${type}.${foundry.utils.randomID()}`]: { + name: game.i18n.localize('DAGGERHEART.SETTINGS.Homebrew.newFeature'), + img: 'icons/magic/life/cross-worn-green.webp', + description: '', + actions: [], + effects: [] + } + }); + } + this.render(); } static async editItem(_, target) { - const move = this.settings.restMoves[target.dataset.type].moves[target.dataset.id]; - const path = `restMoves.${target.dataset.type}.moves.${target.dataset.id}`; - const editedMove = await game.system.api.applications.sheetConfigs.DowntimeConfig.configure( - move, - path, - this.settings - ); - if (!editedMove) return; + const { type, id } = target.dataset; + const isDowntime = ['shortRest', 'longRest'].includes(type); + const path = isDowntime ? `restMoves.${type}.moves.${id}` : `itemFeatures.${type}.${id}`; + const featureBase = isDowntime ? this.settings.restMoves[type].moves[id] : this.settings.itemFeatures[type][id]; - await this.updateAction.bind(this)(editedMove, target.dataset.type, target.dataset.id); + const editedBase = await game.system.api.applications.sheetConfigs.SettingFeatureConfig.configure( + featureBase, + path, + this.settings, + { hasIcon: isDowntime, hasEffects: !isDowntime } + ); + if (!editedBase) return; + + await this.updateAction.bind(this)(editedBase, target.dataset.type, target.dataset.id); } async updateAction(data, type, id) { + const isDowntime = ['shortRest', 'longRest'].includes(type); + const path = isDowntime ? `restMoves.${type}.moves` : `itemFeatures.${type}`; await this.settings.updateSource({ - [`restMoves.${type}.moves.${id}`]: { + [`${path}.${id}`]: { actions: data.actions, name: data.name, icon: data.icon, @@ -129,12 +170,16 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli description: data.description } }); + this.render(); } static async removeItem(_, target) { + const { type, id } = target.dataset; + const isDowntime = ['shortRest', 'longRest'].includes(type); + const path = isDowntime ? `restMoves.${type}.moves` : `itemFeatures.${type}`; await this.settings.updateSource({ - [`restMoves.${target.dataset.type}.moves.-=${target.dataset.id}`]: null + [`${path}.-=${id}`]: null }); this.render(); } @@ -301,6 +346,32 @@ export default class DhHomebrewSettings extends HandlebarsApplicationMixin(Appli this.render(); } + static async addAdversaryType(_, target) { + const newId = foundry.utils.randomID(); + await this.settings.updateSource({ + [`adversaryTypes.${newId}`]: { + id: newId, + label: game.i18n.localize('DAGGERHEART.SETTINGS.Homebrew.adversaryType.newType') + } + }); + + this.selected.adversaryType = newId; + this.render(); + } + + static async deleteAdversaryType(_, target) { + const { key } = target.dataset; + await this.settings.updateSource({ [`adversaryTypes.-=${key}`]: null }); + + this.selected.adversaryType = this.selected.adversaryType === key ? null : this.selected.adversaryType; + this.render(); + } + + static async selectAdversaryType(_, target) { + this.selected.adversaryType = this.selected.adversaryType === target.dataset.type ? null : target.dataset.type; + this.render(); + } + static async save() { await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew, this.settings.toObject()); this.close(); diff --git a/module/applications/sheets-configs/_module.mjs b/module/applications/sheets-configs/_module.mjs index ed062163..a8a625d0 100644 --- a/module/applications/sheets-configs/_module.mjs +++ b/module/applications/sheets-configs/_module.mjs @@ -2,7 +2,8 @@ export { default as ActionConfig } from './action-config.mjs'; export { default as CharacterSettings } from './character-settings.mjs'; export { default as AdversarySettings } from './adversary-settings.mjs'; export { default as CompanionSettings } from './companion-settings.mjs'; -export { default as DowntimeConfig } from './downtimeConfig.mjs'; +export { default as SettingActiveEffectConfig } from './setting-active-effect-config.mjs'; +export { default as SettingFeatureConfig } from './setting-feature-config.mjs'; export { default as EnvironmentSettings } from './environment-settings.mjs'; export { default as ActiveEffectConfig } from './activeEffectConfig.mjs'; export { default as DhTokenConfig } from './token-config.mjs'; diff --git a/module/applications/sheets-configs/action-config.mjs b/module/applications/sheets-configs/action-config.mjs index ea3c6f31..43753f3b 100644 --- a/module/applications/sheets-configs/action-config.mjs +++ b/module/applications/sheets-configs/action-config.mjs @@ -66,7 +66,7 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) { group: 'primary', id: 'base', icon: null, - label: 'Base' + label: 'DAGGERHEART.GENERAL.Tabs.base' }, config: { active: false, @@ -74,7 +74,7 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) { group: 'primary', id: 'config', icon: null, - label: 'Configuration' + label: 'DAGGERHEART.GENERAL.Tabs.configuration' }, effect: { active: false, @@ -82,7 +82,7 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) { group: 'primary', id: 'effect', icon: null, - label: 'Effect' + label: 'DAGGERHEART.GENERAL.Tabs.effects' } }; @@ -132,12 +132,19 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) { const options = foundry.utils.deepClone(CONFIG.DH.GENERAL.abilityCosts); const resource = this.action.parent.resource; if (resource) { - options[this.action.parent.parent.id] = { + options.resource = { label: 'DAGGERHEART.GENERAL.itemResource', group: 'Global' }; } + if (this.action.parent.metadata?.isQuantifiable) { + options.quantity = { + label: 'DAGGERHEART.GENERAL.itemQuantity', + group: 'Global' + }; + } + return options; } @@ -164,13 +171,14 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) { _prepareSubmitData(_event, formData) { const submitData = foundry.utils.expandObject(formData.object); + + const itemAbilityCostKeys = Object.keys(CONFIG.DH.GENERAL.itemAbilityCosts); for (const keyPath of this.constructor.CLEAN_ARRAYS) { const data = foundry.utils.getProperty(submitData, keyPath); const dataValues = data ? Object.values(data) : []; if (keyPath === 'cost') { for (var value of dataValues) { - const item = this.action.parent.parent.id === value.key; - value.keyIsID = Boolean(item); + value.itemId = itemAbilityCostKeys.includes(value.key) ? this.action.parent.parent.id : null; } } diff --git a/module/applications/sheets-configs/activeEffectConfig.mjs b/module/applications/sheets-configs/activeEffectConfig.mjs index 25f7d2b5..6a466c55 100644 --- a/module/applications/sheets-configs/activeEffectConfig.mjs +++ b/module/applications/sheets-configs/activeEffectConfig.mjs @@ -96,6 +96,13 @@ export default class DhActiveEffectConfig extends foundry.applications.sheets.Ac }); } + async _prepareContext(options) { + const context = await super._prepareContext(options); + context.systemFields = context.document.system.schema.fields; + + return context; + } + async _preparePartContext(partId, context) { const partContext = await super._preparePartContext(partId, context); switch (partId) { diff --git a/module/applications/sheets-configs/setting-active-effect-config.mjs b/module/applications/sheets-configs/setting-active-effect-config.mjs new file mode 100644 index 00000000..9b57b47a --- /dev/null +++ b/module/applications/sheets-configs/setting-active-effect-config.mjs @@ -0,0 +1,227 @@ +import autocomplete from 'autocompleter'; + +const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; + +export default class SettingActiveEffectConfig extends HandlebarsApplicationMixin(ApplicationV2) { + constructor(effect) { + super({}); + + this.effect = foundry.utils.deepClone(effect); + const ignoredActorKeys = ['config', 'DhEnvironment']; + this.changeChoices = Object.keys(game.system.api.models.actors).reduce((acc, key) => { + if (!ignoredActorKeys.includes(key)) { + const model = game.system.api.models.actors[key]; + const attributes = CONFIG.Token.documentClass.getTrackedAttributes(model); + const group = game.i18n.localize(model.metadata.label); + const choices = CONFIG.Token.documentClass + .getTrackedAttributeChoices(attributes, model) + .map(x => ({ ...x, group: group })); + acc.push(...choices); + } + return acc; + }, []); + } + + static DEFAULT_OPTIONS = { + classes: ['daggerheart', 'sheet', 'dh-style', 'active-effect-config'], + tag: 'form', + position: { + width: 560 + }, + form: { + submitOnChange: false, + closeOnSubmit: false, + handler: SettingActiveEffectConfig.#onSubmit + }, + actions: { + editImage: SettingActiveEffectConfig.#editImage, + addChange: SettingActiveEffectConfig.#addChange, + deleteChange: SettingActiveEffectConfig.#deleteChange + } + }; + + static PARTS = { + header: { template: 'systems/daggerheart/templates/sheets/activeEffect/header.hbs' }, + tabs: { template: 'templates/generic/tab-navigation.hbs' }, + details: { template: 'systems/daggerheart/templates/sheets/activeEffect/details.hbs', scrollable: [''] }, + settings: { template: 'systems/daggerheart/templates/sheets/activeEffect/settings.hbs' }, + changes: { + template: 'systems/daggerheart/templates/sheets/activeEffect/changes.hbs', + scrollable: ['ol[data-changes]'] + }, + footer: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-form-footer.hbs' } + }; + + static TABS = { + sheet: { + tabs: [ + { id: 'details', icon: 'fa-solid fa-book' }, + { id: 'settings', icon: 'fa-solid fa-bars', label: 'DAGGERHEART.GENERAL.Tabs.settings' }, + { id: 'changes', icon: 'fa-solid fa-gears' } + ], + initial: 'details', + labelPrefix: 'EFFECT.TABS' + } + }; + + /**@inheritdoc */ + async _onFirstRender(context, options) { + await super._onFirstRender(context, options); + } + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + context.source = this.effect; + context.fields = game.system.api.documents.DhActiveEffect.schema.fields; + context.systemFields = game.system.api.data.activeEffects.BaseEffect._schema.fields; + + return context; + } + + _attachPartListeners(partId, htmlElement, options) { + super._attachPartListeners(partId, htmlElement, options); + const changeChoices = this.changeChoices; + + htmlElement.querySelectorAll('.effect-change-input').forEach(element => { + autocomplete({ + input: element, + fetch: function (text, update) { + if (!text) { + update(changeChoices); + } else { + text = text.toLowerCase(); + var suggestions = changeChoices.filter(n => n.label.toLowerCase().includes(text)); + update(suggestions); + } + }, + render: function (item, search) { + const label = game.i18n.localize(item.label); + const matchIndex = label.toLowerCase().indexOf(search); + + const beforeText = label.slice(0, matchIndex); + const matchText = label.slice(matchIndex, matchIndex + search.length); + const after = label.slice(matchIndex + search.length, label.length); + + const element = document.createElement('li'); + element.innerHTML = `${beforeText}${matchText ? `${matchText}` : ''}${after}`; + if (item.hint) { + element.dataset.tooltip = game.i18n.localize(item.hint); + } + + return element; + }, + renderGroup: function (label) { + const itemElement = document.createElement('div'); + itemElement.textContent = game.i18n.localize(label); + return itemElement; + }, + onSelect: function (item) { + element.value = `system.${item.value}`; + }, + click: e => e.fetch(), + customize: function (_input, _inputRect, container) { + container.style.zIndex = foundry.applications.api.ApplicationV2._maxZ; + }, + minLength: 0 + }); + }); + } + + async _preparePartContext(partId, context) { + if (partId in context.tabs) context.tab = context.tabs[partId]; + switch (partId) { + case 'details': + context.isActorEffect = false; + context.isItemEffect = true; + const useGeneric = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.appearance + ).showGenericStatusEffects; + if (!useGeneric) { + context.statuses = Object.values(CONFIG.DH.GENERAL.conditions).map(status => ({ + value: status.id, + label: game.i18n.localize(status.name) + })); + } + break; + case 'changes': + context.modes = Object.entries(CONST.ACTIVE_EFFECT_MODES).reduce((modes, [key, value]) => { + modes[value] = game.i18n.localize(`EFFECT.MODE_${key}`); + return modes; + }, {}); + + context.priorities = ActiveEffectConfig.DEFAULT_PRIORITIES; + break; + } + + return context; + } + + static async #onSubmit(event, form, formData) { + this.data = foundry.utils.expandObject(formData.object); + this.close(); + } + + /** + * Edit a Document image. + * @this {DocumentSheetV2} + * @type {ApplicationClickAction} + */ + static async #editImage(_event, target) { + if (target.nodeName !== 'IMG') { + throw new Error('The editImage action is available only for IMG elements.'); + } + + const attr = target.dataset.edit; + const current = foundry.utils.getProperty(this.effect, attr); + const fp = new FilePicker.implementation({ + current, + type: 'image', + callback: path => (target.src = path), + position: { + top: this.position.top + 40, + left: this.position.left + 10 + } + }); + + await fp.browse(); + } + + /** + * Add a new change to the effect's changes array. + * @this {ActiveEffectConfig} + * @type {ApplicationClickAction} + */ + static async #addChange() { + const submitData = foundry.utils.expandObject(new FormDataExtended(this.form).object); + const changes = Object.values(submitData.changes ?? {}); + changes.push({}); + + this.effect.changes = changes; + this.render(); + } + + /** + * Delete a change from the effect's changes array. + * @this {ActiveEffectConfig} + * @type {ApplicationClickAction} + */ + static async #deleteChange(event) { + const submitData = foundry.utils.expandObject(new FormDataExtended(this.form).object); + const changes = Object.values(submitData.changes); + const row = event.target.closest('li'); + const index = Number(row.dataset.index) || 0; + changes.splice(index, 1); + + this.effect.changes = changes; + this.render(); + } + + static async configure(effect, options = {}) { + return new Promise(resolve => { + const app = new this(effect, options); + app.addEventListener('close', () => resolve(app.data), { once: true }); + app.render({ force: true }); + }); + } +} diff --git a/module/applications/sheets-configs/downtimeConfig.mjs b/module/applications/sheets-configs/setting-feature-config.mjs similarity index 66% rename from module/applications/sheets-configs/downtimeConfig.mjs rename to module/applications/sheets-configs/setting-feature-config.mjs index 80aab900..e775f93d 100644 --- a/module/applications/sheets-configs/downtimeConfig.mjs +++ b/module/applications/sheets-configs/setting-feature-config.mjs @@ -3,8 +3,8 @@ import DHActionConfig from './action-config.mjs'; const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; -export default class DowntimeConfig extends HandlebarsApplicationMixin(ApplicationV2) { - constructor(move, movePath, settings, options) { +export default class SettingFeatureConfig extends HandlebarsApplicationMixin(ApplicationV2) { + constructor(move, movePath, settings, optionalParts, options) { super(options); this.move = move; @@ -12,6 +12,10 @@ export default class DowntimeConfig extends HandlebarsApplicationMixin(Applicati this.movePath = movePath; this.actionsPath = `${movePath}.actions`; this.settings = settings; + + const { hasIcon, hasEffects } = optionalParts; + this.hasIcon = hasIcon; + this.hasEffects = hasEffects; } get title() { @@ -30,6 +34,7 @@ export default class DowntimeConfig extends HandlebarsApplicationMixin(Applicati addItem: this.addItem, editItem: this.editItem, removeItem: this.removeItem, + addEffect: this.addEffect, resetMoves: this.resetMoves, saveForm: this.saveForm }, @@ -41,13 +46,14 @@ export default class DowntimeConfig extends HandlebarsApplicationMixin(Applicati tabs: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }, main: { template: 'systems/daggerheart/templates/settings/downtime-config/main.hbs' }, actions: { template: 'systems/daggerheart/templates/settings/downtime-config/actions.hbs' }, + effects: { template: 'systems/daggerheart/templates/settings/downtime-config/effects.hbs' }, footer: { template: 'systems/daggerheart/templates/settings/downtime-config/footer.hbs' } }; /** @inheritdoc */ static TABS = { primary: { - tabs: [{ id: 'main' }, { id: 'actions' }], + tabs: [{ id: 'main' }, { id: 'actions' }, { id: 'effects' }], initial: 'main', labelPrefix: 'DAGGERHEART.GENERAL.Tabs' } @@ -55,6 +61,9 @@ export default class DowntimeConfig extends HandlebarsApplicationMixin(Applicati async _prepareContext(_options) { const context = await super._prepareContext(_options); + context.tabs = this._filterTabs(context.tabs); + context.hasIcon = this.hasIcon; + context.hasEffects = this.hasEffects; context.move = this.move; context.move.enrichedDescription = await foundry.applications.ux.TextEditor.enrichHTML( context.move.description @@ -130,13 +139,30 @@ export default class DowntimeConfig extends HandlebarsApplicationMixin(Applicati } static async editItem(_, target) { - const actionId = target.dataset.id; - const action = this.move.actions.get(actionId); - await new DHActionConfig(action, async updatedMove => { - await this.settings.updateSource({ [`${this.actionsPath}.${actionId}`]: updatedMove }); + const { type, id } = target.dataset; + if (type === 'effect') { + const effectIndex = this.move.effects.findIndex(x => x.id === id); + const effect = this.move.effects[effectIndex]; + const updatedEffect = + await game.system.api.applications.sheetConfigs.SettingActiveEffectConfig.configure(effect); + if (!updatedEffect) return; + + await this.settings.updateSource({ + [`${this.movePath}.effects`]: this.move.effects.reduce((acc, effect, index) => { + acc.push(index === effectIndex ? { ...updatedEffect, id: effect.id } : effect); + return acc; + }, []) + }); this.move = foundry.utils.getProperty(this.settings, this.movePath); this.render(); - }).render(true); + } else { + const action = this.move.actions.get(id); + await new DHActionConfig(action, async updatedMove => { + await this.settings.updateSource({ [`${this.actionsPath}.${id}`]: updatedMove }); + this.move = foundry.utils.getProperty(this.settings, this.movePath); + this.render(); + }).render(true); + } } static async removeItem(_, target) { @@ -145,16 +171,38 @@ export default class DowntimeConfig extends HandlebarsApplicationMixin(Applicati this.render(); } + static async addEffect(_, target) { + const currentEffects = foundry.utils.getProperty(this.settings, `${this.movePath}.effects`); + await this.settings.updateSource({ + [`${this.movePath}.effects`]: [ + ...currentEffects, + game.system.api.data.activeEffects.BaseEffect.getDefaultObject() + ] + }); + + this.move = foundry.utils.getProperty(this.settings, this.movePath); + this.render(); + } + static resetMoves() {} + _filterTabs(tabs) { + return this.hasEffects + ? tabs + : Object.keys(tabs).reduce((acc, key) => { + if (key !== 'effects') acc[key] = tabs[key]; + return acc; + }, {}); + } + /** @override */ _onClose(options = {}) { if (!options.submitted) this.move = null; } - static async configure(move, movePath, settings, options = {}) { + static async configure(move, movePath, settings, optionalParts, options = {}) { return new Promise(resolve => { - const app = new this(move, movePath, settings, options); + const app = new this(move, movePath, settings, optionalParts, options); app.addEventListener('close', () => resolve(app.move), { once: true }); app.render({ force: true }); }); diff --git a/module/applications/sheets/actors/_module.mjs b/module/applications/sheets/actors/_module.mjs index 9998733c..c4ea2d94 100644 --- a/module/applications/sheets/actors/_module.mjs +++ b/module/applications/sheets/actors/_module.mjs @@ -2,3 +2,4 @@ export { default as Adversary } from './adversary.mjs'; export { default as Character } from './character.mjs'; export { default as Companion } from './companion.mjs'; export { default as Environment } from './environment.mjs'; +export { default as Party } from './party.mjs'; diff --git a/module/applications/sheets/actors/adversary.mjs b/module/applications/sheets/actors/adversary.mjs index b0fc5fb4..95d77787 100644 --- a/module/applications/sheets/actors/adversary.mjs +++ b/module/applications/sheets/actors/adversary.mjs @@ -4,24 +4,51 @@ import DHBaseActorSheet from '../api/base-actor.mjs'; /**@typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction */ export default class AdversarySheet extends DHBaseActorSheet { + /** @inheritDoc */ static DEFAULT_OPTIONS = { classes: ['adversary'], position: { width: 660, height: 766 }, window: { resizable: true }, actions: { - reactionRoll: AdversarySheet.#reactionRoll + toggleHitPoints: AdversarySheet.#toggleHitPoints, + toggleStress: AdversarySheet.#toggleStress, + reactionRoll: AdversarySheet.#reactionRoll, + toggleResourceDice: AdversarySheet.#toggleResourceDice, + handleResourceDice: AdversarySheet.#handleResourceDice }, window: { - resizable: true + resizable: true, + controls: [ + { + icon: 'fa-solid fa-signature', + label: 'DAGGERHEART.UI.Tooltip.configureAttribution', + action: 'editAttribution' + } + ] } }; static PARTS = { - sidebar: { template: 'systems/daggerheart/templates/sheets/actors/adversary/sidebar.hbs' }, + limited: { + template: 'systems/daggerheart/templates/sheets/actors/adversary/limited.hbs', + scrollable: ['.limited-container'] + }, + sidebar: { + template: 'systems/daggerheart/templates/sheets/actors/adversary/sidebar.hbs', + scrollable: ['.shortcut-items-section'] + }, header: { template: 'systems/daggerheart/templates/sheets/actors/adversary/header.hbs' }, - features: { template: 'systems/daggerheart/templates/sheets/actors/adversary/features.hbs' }, - notes: { template: 'systems/daggerheart/templates/sheets/actors/adversary/notes.hbs' }, - effects: { template: 'systems/daggerheart/templates/sheets/actors/adversary/effects.hbs' } + features: { + template: 'systems/daggerheart/templates/sheets/actors/adversary/features.hbs', + scrollable: ['.feature-section'] + }, + notes: { + template: 'systems/daggerheart/templates/sheets/actors/adversary/notes.hbs' + }, + effects: { + template: 'systems/daggerheart/templates/sheets/actors/adversary/effects.hbs', + scrollable: ['.effects-sections'] + } }; /** @inheritdoc */ @@ -33,10 +60,33 @@ export default class AdversarySheet extends DHBaseActorSheet { } }; + /** @inheritdoc */ + _initializeApplicationOptions(options) { + const applicationOptions = super._initializeApplicationOptions(options); + + if (applicationOptions.document.testUserPermission(game.user, 'LIMITED', { exact: true })) { + applicationOptions.position.width = 360; + applicationOptions.position.height = 'auto'; + } + + return applicationOptions; + } + /**@inheritdoc */ async _prepareContext(options) { const context = await super._prepareContext(options); context.systemFields.attack.fields = this.document.system.attack.schema.fields; + + context.resources = Object.keys(this.document.system.resources).reduce((acc, key) => { + acc[key] = this.document.system.resources[key]; + return acc; + }, {}); + const maxResource = Math.max(context.resources.hitPoints.max, context.resources.stress.max); + context.resources.hitPoints.emptyPips = + context.resources.hitPoints.max < maxResource ? maxResource - context.resources.hitPoints.max : 0; + context.resources.stress.emptyPips = + context.resources.stress.max < maxResource ? maxResource - context.resources.stress.max : 0; + return context; } @@ -45,7 +95,11 @@ export default class AdversarySheet extends DHBaseActorSheet { context = await super._preparePartContext(partId, context, options); switch (partId) { case 'header': + case 'limited': await this._prepareHeaderContext(context, options); + + const adversaryTypes = CONFIG.DH.ACTOR.allAdversaryTypes(); + context.adversaryType = game.i18n.localize(adversaryTypes[this.document.system.type].label); break; case 'notes': await this._prepareNotesContext(context, options); @@ -113,6 +167,27 @@ export default class AdversarySheet extends DHBaseActorSheet { /* Application Clicks Actions */ /* -------------------------------------------- */ + /** + * Toggles hitpoint resource value. + * @type {ApplicationClickAction} + */ + static async #toggleHitPoints(_, button) { + const hitPointsValue = Number.parseInt(button.dataset.value); + const newValue = + this.document.system.resources.hitPoints.value >= hitPointsValue ? hitPointsValue - 1 : hitPointsValue; + await this.document.update({ 'system.resources.hitPoints.value': newValue }); + } + + /** + * Toggles stress resource value. + * @type {ApplicationClickAction} + */ + static async #toggleStress(_, button) { + const StressValue = Number.parseInt(button.dataset.value); + const newValue = this.document.system.resources.stress.value >= StressValue ? StressValue - 1 : StressValue; + await this.document.update({ 'system.resources.stress.value': newValue }); + } + /** * Performs a reaction roll for an Adversary. * @type {ApplicationClickAction} @@ -123,9 +198,9 @@ export default class AdversarySheet extends DHBaseActorSheet { title: `Reaction Roll: ${this.actor.name}`, headerTitle: 'Adversary Reaction Roll', roll: { - type: 'reaction' + type: 'trait' }, - type: 'trait', + actionType: 'reaction', hasRoll: true, data: this.actor.getRollData() }; @@ -133,6 +208,40 @@ export default class AdversarySheet extends DHBaseActorSheet { this.actor.diceRoll(config); } + /** + * Toggle the used state of a resource dice. + * @type {ApplicationClickAction} + */ + static async #toggleResourceDice(event, target) { + const item = await getDocFromElement(target); + + const { dice } = event.target.closest('.item-resource').dataset; + const diceState = item.system.resource.diceStates[dice]; + + await item.update({ + [`system.resource.diceStates.${dice}.used`]: diceState ? !diceState.used : true + }); + } + + /** + * Handle the roll values of resource dice. + * @type {ApplicationClickAction} + */ + static async #handleResourceDice(_, target) { + const item = await getDocFromElement(target); + if (!item) return; + + const rollValues = await game.system.api.applications.dialogs.ResourceDiceDialog.create(item, this.document); + if (!rollValues) return; + + await item.update({ + 'system.resource.diceStates': rollValues.reduce((acc, state, index) => { + acc[index] = { value: state.value, used: state.used }; + return acc; + }, {}) + }); + } + /* -------------------------------------------- */ /* Application Listener Actions */ /* -------------------------------------------- */ diff --git a/module/applications/sheets/actors/character.mjs b/module/applications/sheets/actors/character.mjs index c860e9e9..79fa9893 100644 --- a/module/applications/sheets/actors/character.mjs +++ b/module/applications/sheets/actors/character.mjs @@ -1,11 +1,10 @@ import DHBaseActorSheet from '../api/base-actor.mjs'; import DhpDeathMove from '../../dialogs/deathMove.mjs'; import { abilities } from '../../../config/actorConfig.mjs'; -import DhCharacterlevelUp from '../../levelup/characterLevelup.mjs'; +import { CharacterLevelup, LevelupViewMode } from '../../levelup/_module.mjs'; import DhCharacterCreation from '../../characterCreation/characterCreation.mjs'; import FilterMenu from '../../ux/filter-menu.mjs'; import { getDocFromElement, getDocFromElementSync } from '../../../helpers/utils.mjs'; -import { ItemBrowser } from '../../ui/itemBrowser.mjs'; /**@typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction */ @@ -15,22 +14,34 @@ export default class CharacterSheet extends DHBaseActorSheet { static DEFAULT_OPTIONS = { classes: ['character'], position: { width: 850, height: 800 }, + /* Foundry adds disabled to all buttons and inputs if editPermission is missing. This is not desired. */ + editPermission: CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER, actions: { toggleVault: CharacterSheet.#toggleVault, rollAttribute: CharacterSheet.#rollAttribute, + toggleHitPoints: CharacterSheet.#toggleHitPoints, + toggleStress: CharacterSheet.#toggleStress, + toggleArmor: CharacterSheet.#toggleArmor, toggleHope: CharacterSheet.#toggleHope, toggleLoadoutView: CharacterSheet.#toggleLoadoutView, openPack: CharacterSheet.#openPack, makeDeathMove: CharacterSheet.#makeDeathMove, levelManagement: CharacterSheet.#levelManagement, + viewLevelups: CharacterSheet.#viewLevelups, toggleEquipItem: CharacterSheet.#toggleEquipItem, toggleResourceDice: CharacterSheet.#toggleResourceDice, handleResourceDice: CharacterSheet.#handleResourceDice, - useDowntime: this.useDowntime, - tempBrowser: CharacterSheet.#tempBrowser + useDowntime: this.useDowntime }, window: { - resizable: true + resizable: true, + controls: [ + { + icon: 'fa-solid fa-angles-up', + label: 'DAGGERHEART.ACTORS.Character.viewLevelups', + action: 'viewLevelups' + } + ] }, dragDrop: [ { @@ -68,8 +79,14 @@ export default class CharacterSheet extends DHBaseActorSheet { /**@override */ static PARTS = { + limited: { + id: 'limited', + scrollable: ['.limited-container'], + template: 'systems/daggerheart/templates/sheets/actors/character/limited.hbs' + }, sidebar: { id: 'sidebar', + scrollable: ['.shortcut-items-section'], template: 'systems/daggerheart/templates/sheets/actors/character/sidebar.hbs' }, header: { @@ -78,22 +95,27 @@ export default class CharacterSheet extends DHBaseActorSheet { }, features: { id: 'features', + scrollable: ['.features-sections'], template: 'systems/daggerheart/templates/sheets/actors/character/features.hbs' }, loadout: { id: 'loadout', + scrollable: ['.items-section'], template: 'systems/daggerheart/templates/sheets/actors/character/loadout.hbs' }, inventory: { id: 'inventory', + scrollable: ['.items-section'], template: 'systems/daggerheart/templates/sheets/actors/character/inventory.hbs' }, biography: { id: 'biography', + scrollable: ['.items-section'], template: 'systems/daggerheart/templates/sheets/actors/character/biography.hbs' }, effects: { id: 'effects', + scrollable: ['.effects-sections'], template: 'systems/daggerheart/templates/sheets/actors/character/effects.hbs' } }; @@ -118,6 +140,7 @@ export default class CharacterSheet extends DHBaseActorSheet { }); htmlElement.querySelectorAll('.inventory-item-quantity').forEach(element => { element.addEventListener('change', this.updateItemQuantity.bind(this)); + element.addEventListener('click', e => e.stopPropagation()); }); // Add listener for armor marks input @@ -126,16 +149,37 @@ export default class CharacterSheet extends DHBaseActorSheet { }); } + /** @inheritdoc */ + _initializeApplicationOptions(options) { + const applicationOptions = super._initializeApplicationOptions(options); + + if (applicationOptions.document.testUserPermission(game.user, 'LIMITED', { exact: true })) { + applicationOptions.position.width = 360; + applicationOptions.position.height = 'auto'; + } + + return applicationOptions; + } + /** @inheritDoc */ async _onRender(context, options) { await super._onRender(context, options); - this.element - .querySelector('.level-value') - ?.addEventListener('change', event => this.document.updateLevel(Number(event.currentTarget.value))); + if (!this.document.testUserPermission(game.user, 'LIMITED', { exact: true })) { + this.element + .querySelector('.level-value') + ?.addEventListener('change', event => this.document.updateLevel(Number(event.currentTarget.value))); - this._createFilterMenus(); - this._createSearchFilter(); + const observer = this.document.testUserPermission(game.user, CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER, { + exact: true + }); + if (observer) { + this.element.querySelector('.window-content').classList.add('viewMode'); + } + + this._createFilterMenus(); + this._createSearchFilter(); + } } /* -------------------------------------------- */ @@ -155,6 +199,16 @@ export default class CharacterSheet extends DHBaseActorSheet { return acc; }, {}); + context.resources = Object.keys(this.document.system.resources).reduce((acc, key) => { + acc[key] = this.document.system.resources[key]; + return acc; + }, {}); + const maxResource = Math.max(context.resources.hitPoints.max, context.resources.stress.max); + context.resources.hitPoints.emptyPips = + context.resources.hitPoints.max < maxResource ? maxResource - context.resources.hitPoints.max : 0; + context.resources.stress.emptyPips = + context.resources.stress.max < maxResource ? maxResource - context.resources.stress.max : 0; + context.inventory = { currency: { title: game.i18n.localize('DAGGERHEART.CONFIG.Gold.title'), @@ -210,7 +264,7 @@ export default class CharacterSheet extends DHBaseActorSheet { * @protected */ async _prepareLoadoutContext(context, _options) { - context.cardView = !game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsList); + context.cardView = game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsCard); } /** @@ -586,7 +640,14 @@ export default class CharacterSheet extends DHBaseActorSheet { if (!value || !subclass) return ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.missingClassOrSubclass')); - new DhCharacterlevelUp(this.document).render({ force: true }); + new CharacterLevelup(this.document).render({ force: true }); + } + + /** + * Opens the charater level management window in viewMode. + */ + static #viewLevelups() { + new LevelupViewMode(this.document).render({ force: true }); } /** @@ -605,7 +666,6 @@ export default class CharacterSheet extends DHBaseActorSheet { const { key } = button.dataset; const presets = { - compendium: 'daggerheart', folder: key, filter: key === 'subclasses' @@ -621,7 +681,7 @@ export default class CharacterSheet extends DHBaseActorSheet { } }; - return new ItemBrowser({ presets }).render({ force: true }); + ui.compendiumBrowser.open(presets); } /** @@ -649,31 +709,7 @@ export default class CharacterSheet extends DHBaseActorSheet { }) }); - this.consumeResource(result?.costs); - } - - // Remove when Action Refactor part #2 done - async consumeResource(costs) { - if (!costs?.length) return; - const usefulResources = { - ...foundry.utils.deepClone(this.actor.system.resources), - fear: { - value: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear), - max: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxFear, - reversed: false - } - }; - const resources = game.system.api.fields.ActionFields.CostField.getRealCosts(costs).map(c => { - const resource = usefulResources[c.key]; - return { - key: c.key, - value: (c.total ?? c.value) * (resource.isReversed ? 1 : -1), - target: resource.target, - keyIsID: resource.keyIsID - }; - }); - - await this.actor.modifyResource(resources); + if (result) game.system.api.fields.ActionFields.CostField.execute.call(this, result); } //TODO: redo toggleEquipItem method @@ -718,11 +754,42 @@ export default class CharacterSheet extends DHBaseActorSheet { * @type {ApplicationClickAction} */ static async #toggleLoadoutView(_, button) { - const newAbilityView = button.dataset.value !== 'true'; - await game.user.setFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsList, newAbilityView); + const newAbilityView = button.dataset.value === 'true'; + await game.user.setFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsCard, newAbilityView); this.render(); } + /** + * Toggles hitpoint resource value. + * @type {ApplicationClickAction} + */ + static async #toggleHitPoints(_, button) { + const hitPointsValue = Number.parseInt(button.dataset.value); + const newValue = + this.document.system.resources.hitPoints.value >= hitPointsValue ? hitPointsValue - 1 : hitPointsValue; + await this.document.update({ 'system.resources.hitPoints.value': newValue }); + } + + /** + * Toggles stress resource value. + * @type {ApplicationClickAction} + */ + static async #toggleStress(_, button) { + const StressValue = Number.parseInt(button.dataset.value); + const newValue = this.document.system.resources.stress.value >= StressValue ? StressValue - 1 : StressValue; + await this.document.update({ 'system.resources.stress.value': newValue }); + } + + /** + * Toggles ArmorScore resource value. + * @type {ApplicationClickAction} + */ + static async #toggleArmor(_, button, element) { + const ArmorValue = Number.parseInt(button.dataset.value); + const newValue = this.document.system.armor.system.marks.value >= ArmorValue ? ArmorValue - 1 : ArmorValue; + await this.document.system.armor.update({ 'system.marks.value': newValue }); + } + /** * Toggles a hope resource value. * @type {ApplicationClickAction} @@ -762,13 +829,6 @@ export default class CharacterSheet extends DHBaseActorSheet { }); } - /** - * Temp - */ - static async #tempBrowser(_, target) { - new ItemBrowser().render({ force: true }); - } - /** * Handle the roll values of resource dice. * @type {ApplicationClickAction} @@ -828,6 +888,23 @@ export default class CharacterSheet extends DHBaseActorSheet { itemData.system.inVault = true; } + if (item.type === 'beastform') { + if (this.document.effects.find(x => x.type === 'beastform')) { + return ui.notifications.warn( + game.i18n.localize('DAGGERHEART.UI.Notifications.beastformAlreadyApplied') + ); + } + + const data = await game.system.api.data.items.DHBeastform.getWildcardImage(this.document, itemData); + if (data) { + if (!data.selectedImage) return; + else { + if (data.usesDynamicToken) itemData.system.tokenRingImg = data.selectedImage; + else itemData.system.tokenImg = data.selectedImage; + } + } + } + if (this.document.uuid === item.parent?.uuid) return this._onSortItem(event, itemData); const createdItem = await this._onDropItemCreate(itemData); diff --git a/module/applications/sheets/actors/companion.mjs b/module/applications/sheets/actors/companion.mjs index 1105131d..9b85f622 100644 --- a/module/applications/sheets/actors/companion.mjs +++ b/module/applications/sheets/actors/companion.mjs @@ -8,14 +8,23 @@ export default class DhCompanionSheet extends DHBaseActorSheet { classes: ['actor', 'companion'], position: { width: 340 }, actions: { + toggleStress: DhCompanionSheet.#toggleStress, + actionRoll: DhCompanionSheet.#actionRoll, levelManagement: DhCompanionSheet.#levelManagement } }; static PARTS = { + limited: { + template: 'systems/daggerheart/templates/sheets/actors/companion/limited.hbs', + scrollable: ['.limited-container'] + }, header: { template: 'systems/daggerheart/templates/sheets/actors/companion/header.hbs' }, details: { template: 'systems/daggerheart/templates/sheets/actors/companion/details.hbs' }, - effects: { template: 'systems/daggerheart/templates/sheets/actors/companion/effects.hbs' } + effects: { + template: 'systems/daggerheart/templates/sheets/actors/companion/effects.hbs', + scrollable: ['.effects-sections'] + } }; /* -------------------------------------------- */ @@ -42,6 +51,61 @@ export default class DhCompanionSheet extends DHBaseActorSheet { /* Application Clicks Actions */ /* -------------------------------------------- */ + /** + * Toggles stress resource value. + * @type {ApplicationClickAction} + */ + static async #toggleStress(_, button) { + const StressValue = Number.parseInt(button.dataset.value); + const newValue = this.document.system.resources.stress.value >= StressValue ? StressValue - 1 : StressValue; + await this.document.update({ 'system.resources.stress.value': newValue }); + } + + /** + * + */ + static async #actionRoll(event) { + const partner = this.actor.system.partner; + const config = { + event, + title: `${game.i18n.localize('DAGGERHEART.GENERAL.Roll.action')}: ${this.actor.name}`, + headerTitle: `Companion ${game.i18n.localize('DAGGERHEART.GENERAL.Roll.action')}`, + roll: { + trait: partner.system.spellcastModifierTrait?.key + }, + hasRoll: true, + data: partner.getRollData() + }; + + const result = await partner.diceRoll(config); + this.consumeResource(result?.costs); + } + + // Remove when Action Refactor part #2 done + async consumeResource(costs) { + if (!costs?.length) return; + + const partner = this.actor.system.partner; + const usefulResources = { + ...foundry.utils.deepClone(partner.system.resources), + fear: { + value: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear), + max: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxFear, + reversed: false + } + }; + const resources = game.system.api.fields.ActionFields.CostField.getRealCosts(costs).map(c => { + const resource = usefulResources[c.key]; + return { + key: c.key, + value: (c.total ?? c.value) * (resource.isReversed ? 1 : -1), + target: resource.target + }; + }); + + await partner.modifyResource(resources); + } + /** * Opens the companions level management window. * @type {ApplicationClickAction} diff --git a/module/applications/sheets/actors/environment.mjs b/module/applications/sheets/actors/environment.mjs index aa2759a2..e5630ad6 100644 --- a/module/applications/sheets/actors/environment.mjs +++ b/module/applications/sheets/actors/environment.mjs @@ -1,3 +1,4 @@ +import { getDocFromElement } from '../../../helpers/utils.mjs'; import DHBaseActorSheet from '../api/base-actor.mjs'; /**@typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction */ @@ -8,21 +9,39 @@ export default class DhpEnvironment extends DHBaseActorSheet { classes: ['environment'], position: { width: 500, - height: 725 + height: 740 }, window: { - resizable: true + resizable: true, + controls: [ + { + icon: 'fa-solid fa-signature', + label: 'DAGGERHEART.UI.Tooltip.configureAttribution', + action: 'editAttribution' + } + ] + }, + actions: { + toggleResourceDice: DhpEnvironment.#toggleResourceDice, + handleResourceDice: DhpEnvironment.#handleResourceDice }, - actions: {}, dragDrop: [{ dragSelector: '.action-section .inventory-item', dropSelector: null }] }; /**@override */ static PARTS = { + limited: { + template: 'systems/daggerheart/templates/sheets/actors/environment/limited.hbs', + scrollable: ['.limited-container'] + }, header: { template: 'systems/daggerheart/templates/sheets/actors/environment/header.hbs' }, - features: { template: 'systems/daggerheart/templates/sheets/actors/environment/features.hbs' }, + features: { + template: 'systems/daggerheart/templates/sheets/actors/environment/features.hbs', + scrollable: ['feature-section'] + }, potentialAdversaries: { - template: 'systems/daggerheart/templates/sheets/actors/environment/potentialAdversaries.hbs' + template: 'systems/daggerheart/templates/sheets/actors/environment/potentialAdversaries.hbs', + scrollable: ['items-sections'] }, notes: { template: 'systems/daggerheart/templates/sheets/actors/environment/notes.hbs' } }; @@ -36,12 +55,25 @@ export default class DhpEnvironment extends DHBaseActorSheet { } }; + /** @inheritdoc */ + _initializeApplicationOptions(options) { + const applicationOptions = super._initializeApplicationOptions(options); + + if (applicationOptions.document.testUserPermission(game.user, 'LIMITED', { exact: true })) { + applicationOptions.position.width = 360; + applicationOptions.position.height = 'auto'; + } + + return applicationOptions; + } + /**@inheritdoc */ async _preparePartContext(partId, context, options) { context = await super._preparePartContext(partId, context, options); switch (partId) { case 'header': await this._prepareHeaderContext(context, options); + break; case 'notes': await this._prepareNotesContext(context, options); @@ -106,4 +138,42 @@ export default class DhpEnvironment extends DHBaseActorSheet { event.dataTransfer.setDragImage(item, 60, 0); } } + + /* -------------------------------------------- */ + /* Application Clicks Actions */ + /* -------------------------------------------- */ + + /** + * Toggle the used state of a resource dice. + * @type {ApplicationClickAction} + */ + static async #toggleResourceDice(event, target) { + const item = await getDocFromElement(target); + + const { dice } = event.target.closest('.item-resource').dataset; + const diceState = item.system.resource.diceStates[dice]; + + await item.update({ + [`system.resource.diceStates.${dice}.used`]: diceState ? !diceState.used : true + }); + } + + /** + * Handle the roll values of resource dice. + * @type {ApplicationClickAction} + */ + static async #handleResourceDice(_, target) { + const item = await getDocFromElement(target); + if (!item) return; + + const rollValues = await game.system.api.applications.dialogs.ResourceDiceDialog.create(item, this.document); + if (!rollValues) return; + + await item.update({ + 'system.resource.diceStates': rollValues.reduce((acc, state, index) => { + acc[index] = { value: state.value, used: state.used }; + return acc; + }, {}) + }); + } } diff --git a/module/applications/sheets/actors/party.mjs b/module/applications/sheets/actors/party.mjs new file mode 100644 index 00000000..a622dcec --- /dev/null +++ b/module/applications/sheets/actors/party.mjs @@ -0,0 +1,512 @@ +import DHBaseActorSheet from '../api/base-actor.mjs'; +import { getDocFromElement } from '../../../helpers/utils.mjs'; +import { ItemBrowser } from '../../ui/itemBrowser.mjs'; +import FilterMenu from '../../ux/filter-menu.mjs'; +import DaggerheartMenu from '../../sidebar/tabs/daggerheartMenu.mjs'; +import { socketEvent } from '../../../systemRegistration/socket.mjs'; +import GroupRollDialog from '../../dialogs/group-roll-dialog.mjs'; +import DhpActor from '../../../documents/actor.mjs'; +import DHItem from '../../../documents/item.mjs'; + +export default class Party extends DHBaseActorSheet { + constructor(options) { + super(options); + + this.refreshSelections = DaggerheartMenu.defaultRefreshSelections(); + } + + /**@inheritdoc */ + static DEFAULT_OPTIONS = { + classes: ['party'], + position: { + width: 550 + }, + window: { + resizable: true + }, + actions: { + deletePartyMember: Party.#deletePartyMember, + deleteItem: Party.#deleteItem, + toggleHope: Party.#toggleHope, + toggleHitPoints: Party.#toggleHitPoints, + toggleStress: Party.#toggleStress, + toggleArmorSlot: Party.#toggleArmorSlot, + tempBrowser: Party.#tempBrowser, + refeshActions: Party.#refeshActions, + triggerRest: Party.#triggerRest, + tagTeamRoll: Party.#tagTeamRoll, + groupRoll: Party.#groupRoll, + selectRefreshable: DaggerheartMenu.selectRefreshable, + refreshActors: DaggerheartMenu.refreshActors + }, + dragDrop: [{ dragSelector: '.actors-section .inventory-item', dropSelector: null }] + }; + + /**@override */ + static PARTS = { + header: { template: 'systems/daggerheart/templates/sheets/actors/party/header.hbs' }, + tabs: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }, + partyMembers: { template: 'systems/daggerheart/templates/sheets/actors/party/party-members.hbs' }, + resources: { + template: 'systems/daggerheart/templates/sheets/actors/party/resources.hbs', + scrollable: [''] + }, + /* NOT YET IMPLEMENTED */ + // projects: { + // template: 'systems/daggerheart/templates/sheets/actors/party/projects.hbs', + // scrollable: [''] + // }, + inventory: { + template: 'systems/daggerheart/templates/sheets/actors/party/inventory.hbs', + scrollable: ['.tab.inventory .items-section'] + }, + notes: { template: 'systems/daggerheart/templates/sheets/actors/party/notes.hbs' } + }; + + /** @inheritdoc */ + static TABS = { + primary: { + tabs: [ + { id: 'partyMembers' }, + { id: 'resources' }, + /* NOT YET IMPLEMENTED */ + // { id: 'projects' }, + { id: 'inventory' }, + { id: 'notes' } + ], + initial: 'partyMembers', + labelPrefix: 'DAGGERHEART.GENERAL.Tabs' + } + }; + + async _onRender(context, options) { + await super._onRender(context, options); + this._createFilterMenus(); + this._createSearchFilter(); + } + + /* -------------------------------------------- */ + /* Prepare Context */ + /* -------------------------------------------- */ + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + + context.inventory = { + currency: { + title: game.i18n.localize('DAGGERHEART.CONFIG.Gold.title'), + coins: game.i18n.localize('DAGGERHEART.CONFIG.Gold.coins'), + handfuls: game.i18n.localize('DAGGERHEART.CONFIG.Gold.handfuls'), + bags: game.i18n.localize('DAGGERHEART.CONFIG.Gold.bags'), + chests: game.i18n.localize('DAGGERHEART.CONFIG.Gold.chests') + } + }; + + const homebrewCurrency = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).currency; + if (homebrewCurrency.enabled) { + context.inventory.currency = homebrewCurrency; + } + + if (context.inventory.length === 0) { + context.inventory = Array(1).fill(Array(5).fill([])); + } + + return context; + } + + async _preparePartContext(partId, context, options) { + context = await super._preparePartContext(partId, context, options); + switch (partId) { + case 'header': + await this._prepareHeaderContext(context, options); + break; + case 'notes': + await this._prepareNotesContext(context, options); + break; + } + return context; + } + + /** + * Prepare render context for the Header part. + * @param {ApplicationRenderContext} context + * @param {ApplicationRenderOptions} options + * @returns {Promise} + * @protected + */ + async _prepareHeaderContext(context, _options) { + const { system } = this.document; + const { TextEditor } = foundry.applications.ux; + + context.description = await TextEditor.implementation.enrichHTML(system.description, { + secrets: this.document.isOwner, + relativeTo: this.document + }); + } + + /** + * Prepare render context for the Biography part. + * @param {ApplicationRenderContext} context + * @param {ApplicationRenderOptions} options + * @returns {Promise} + * @protected + */ + async _prepareNotesContext(context, _options) { + const { system } = this.document; + const { TextEditor } = foundry.applications.ux; + + const paths = { + notes: 'notes' + }; + + for (const [key, path] of Object.entries(paths)) { + const value = foundry.utils.getProperty(system, path); + context[key] = { + field: system.schema.getField(path), + value, + enriched: await TextEditor.implementation.enrichHTML(value, { + secrets: this.document.isOwner, + relativeTo: this.document + }) + }; + } + } + + /** + * Toggles a hope resource value. + * @type {ApplicationClickAction} + */ + static async #toggleHope(_, target) { + const hopeValue = Number.parseInt(target.dataset.value); + const actor = await foundry.utils.fromUuid(target.dataset.actorId); + const newValue = actor.system.resources.hope.value >= hopeValue ? hopeValue - 1 : hopeValue; + await actor.update({ 'system.resources.hope.value': newValue }); + this.render(); + } + + /** + * Toggles a hp resource value. + * @type {ApplicationClickAction} + */ + static async #toggleHitPoints(_, target) { + const hitPointsValue = Number.parseInt(target.dataset.value); + const actor = await foundry.utils.fromUuid(target.dataset.actorId); + const newValue = actor.system.resources.hitPoints.value >= hitPointsValue ? hitPointsValue - 1 : hitPointsValue; + await actor.update({ 'system.resources.hitPoints.value': newValue }); + this.render(); + } + + /** + * Toggles a stress resource value. + * @type {ApplicationClickAction} + */ + static async #toggleStress(_, target) { + const stressValue = Number.parseInt(target.dataset.value); + const actor = await foundry.utils.fromUuid(target.dataset.actorId); + const newValue = actor.system.resources.stress.value >= stressValue ? stressValue - 1 : stressValue; + await actor.update({ 'system.resources.stress.value': newValue }); + this.render(); + } + + /** + * Toggles a armor slot resource value. + * @type {ApplicationClickAction} + */ + static async #toggleArmorSlot(_, target, element) { + const armorItem = await foundry.utils.fromUuid(target.dataset.itemUuid); + const armorValue = Number.parseInt(target.dataset.value); + const newValue = armorItem.system.marks.value >= armorValue ? armorValue - 1 : armorValue; + await armorItem.update({ 'system.marks.value': newValue }); + this.render(); + } + + /** + * Opens Compedium Browser + */ + static async #tempBrowser(_, target) { + new ItemBrowser().render({ force: true }); + } + + static async #refeshActions() { + const confirmed = await foundry.applications.api.DialogV2.confirm({ + window: { + title: 'New Section', + icon: 'fa-solid fa-campground' + }, + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/sidebar/daggerheart-menu/main.hbs', + { + refreshables: DaggerheartMenu.defaultRefreshSelections() + } + ), + classes: ['daggerheart', 'dialog', 'dh-style', 'tab', 'sidebar-tab', 'daggerheartMenu-sidebar'] + }); + + if (!confirmed) return; + } + + static async #triggerRest(_, button) { + const confirmed = await foundry.applications.api.DialogV2.confirm({ + window: { + title: game.i18n.localize(`DAGGERHEART.APPLICATIONS.Downtime.${button.dataset.type}.title`), + icon: button.dataset.type === 'shortRest' ? 'fa-solid fa-utensils' : 'fa-solid fa-bed' + }, + content: 'This will trigger a dialog to players make their downtime moves, are you sure?', + classes: ['daggerheart', 'dialog', 'dh-style'] + }); + + if (!confirmed) return; + + this.document.system.partyMembers.forEach(actor => { + game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.DowntimeTrigger, + data: { + actorId: actor.uuid, + downtimeType: button.dataset.type + } + }); + }); + } + + static async downtimeMoveQuery({ actorId, downtimeType }) { + const actor = await foundry.utils.fromUuid(actorId); + if (!actor || !actor?.isOwner) reject(); + new game.system.api.applications.dialogs.Downtime(actor, downtimeType === 'shortRest').render({ + force: true + }); + } + + static async #tagTeamRoll() { + new game.system.api.applications.dialogs.TagTeamDialog(this.document.system.partyMembers).render({ + force: true + }); + } + + static async #groupRoll(params) { + new GroupRollDialog(this.document.system.partyMembers).render({ force: true }); + } + + /** + * 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 + */ + static #getItemContextOptions() { + return this._getContextMenuCommonOptions.call(this, { usable: true, toChat: true }); + } + /* -------------------------------------------- */ + /* Filter Tracking */ + /* -------------------------------------------- */ + + /** + * The currently active search filter. + * @type {foundry.applications.ux.SearchFilter} + */ + #search = {}; + + /** + * The currently active search filter. + * @type {FilterMenu} + */ + #menu = {}; + + /** + * Tracks which item IDs are currently displayed, organized by filter type and section. + * @type {{ + * inventory: { + * search: Set, + * menu: Set + * }, + * loadout: { + * search: Set, + * menu: Set + * }, + * }} + */ + #filteredItems = { + inventory: { + search: new Set(), + menu: new Set() + }, + loadout: { + search: new Set(), + menu: new Set() + } + }; + + /* -------------------------------------------- */ + /* Search Inputs */ + /* -------------------------------------------- */ + + /** + * Create and initialize search filter instances for the inventory and loadout sections. + * + * Sets up two {@link foundry.applications.ux.SearchFilter} instances: + * - One for the inventory, which filters items in the inventory grid. + * - One for the loadout, which filters items in the loadout/card grid. + * @private + */ + _createSearchFilter() { + //Filters could be a application option if needed + const filters = [ + { + key: 'inventory', + input: 'input[type="search"].search-inventory', + content: '[data-application-part="inventory"] .items-section', + callback: this._onSearchFilterInventory.bind(this) + } + ]; + + for (const { key, input, content, callback } of filters) { + const filter = new foundry.applications.ux.SearchFilter({ + inputSelector: input, + contentSelector: content, + callback + }); + filter.bind(this.element); + this.#search[key] = filter; + } + } + + /** + * Handle invetory items search and filtering. + * @param {KeyboardEvent} event The keyboard input event. + * @param {string} query The input search string. + * @param {RegExp} rgx The regular expression query that should be matched against. + * @param {HTMLElement} html The container to filter items from. + * @protected + */ + async _onSearchFilterInventory(_event, query, rgx, html) { + this.#filteredItems.inventory.search.clear(); + + for (const li of html.querySelectorAll('.inventory-item')) { + 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; + li.hidden = !(menu.has(item.id) && matchesSearch); + } + } + + /* -------------------------------------------- */ + /* Filter Menus */ + /* -------------------------------------------- */ + + _createFilterMenus() { + //Menus could be a application option if needed + const menus = [ + { + key: 'inventory', + container: '[data-application-part="inventory"]', + content: '.items-section', + callback: this._onMenuFilterInventory.bind(this), + target: '.filter-button', + filters: FilterMenu.invetoryFilters + } + ]; + + menus.forEach(m => { + const container = this.element.querySelector(m.container); + this.#menu[m.key] = new FilterMenu(container, m.target, m.filters, m.callback, { + contentSelector: m.content + }); + }); + } + + /** + * Callback when filters change + * @param {PointerEvent} event + * @param {HTMLElement} html + * @param {import('../ux/filter-menu.mjs').FilterItem[]} filters + */ + async _onMenuFilterInventory(_event, html, filters) { + this.#filteredItems.inventory.menu.clear(); + + for (const li of html.querySelectorAll('.inventory-item')) { + const item = await getDocFromElement(li); + + const matchesMenu = + filters.length === 0 || filters.some(f => foundry.applications.ux.SearchFilter.evaluateFilter(item, f)); + if (matchesMenu) this.#filteredItems.inventory.menu.add(item.id); + + const { search } = this.#filteredItems.inventory; + li.hidden = !(search.has(item.id) && matchesMenu); + } + } + + /* -------------------------------------------- */ + + async _onDragStart(event) { + const item = event.currentTarget.closest('.inventory-item'); + + if (item) { + const adversaryData = { type: 'Actor', uuid: item.dataset.itemUuid }; + event.dataTransfer.setData('text/plain', JSON.stringify(adversaryData)); + event.dataTransfer.setDragImage(item, 60, 0); + } + } + + async _onDrop(event) { + // Prevent event bubbling to avoid duplicate handling + event.preventDefault(); + event.stopPropagation(); + + const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event); + const item = await foundry.utils.fromUuid(data.uuid); + + if (item instanceof DhpActor) { + const currentMembers = this.document.system.partyMembers.map(x => x.uuid); + if (currentMembers.includes(data.uuid)) { + return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.duplicateCharacter')); + } + + await this.document.update({ 'system.partyMembers': [...currentMembers, item.uuid] }); + } else if (item instanceof DHItem) { + this.document.createEmbeddedDocuments('Item', [item.toObject()]); + } else { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.onlyCharactersInPartySheet')); + } + } + + static async #deletePartyMember(event, target) { + const doc = await getDocFromElement(target.closest('.inventory-item')); + + if (!event.shiftKey) { + const confirmed = await foundry.applications.api.DialogV2.confirm({ + window: { + title: game.i18n.format('DAGGERHEART.APPLICATIONS.DeleteConfirmation.title', { + type: game.i18n.localize('TYPES.Actor.adversary'), + name: doc.name + }) + }, + content: game.i18n.format('DAGGERHEART.APPLICATIONS.DeleteConfirmation.text', { name: doc.name }) + }); + + if (!confirmed) return; + } + + const currentMembers = this.document.system.partyMembers.map(x => x.uuid); + const newMemberdList = currentMembers.filter(uuid => uuid !== doc.uuid); + await this.document.update({ 'system.partyMembers': newMemberdList }); + } + + static async #deleteItem(event, target) { + const doc = await getDocFromElement(target.closest('.inventory-item')); + if (!event.shiftKey) { + const confirmed = await foundry.applications.api.DialogV2.confirm({ + window: { + title: game.i18n.format('DAGGERHEART.APPLICATIONS.DeleteConfirmation.title', { + type: game.i18n.localize('TYPES.Actor.party'), + name: doc.name + }) + }, + content: game.i18n.format('DAGGERHEART.APPLICATIONS.DeleteConfirmation.text', { name: doc.name }) + }); + + if (!confirmed) return; + } + + this.document.deleteEmbeddedDocuments('Item', [doc.id]); + } +} diff --git a/module/applications/sheets/api/actor-setting.mjs b/module/applications/sheets/api/actor-setting.mjs index 79aa1c37..d8cfb40f 100644 --- a/module/applications/sheets/api/actor-setting.mjs +++ b/module/applications/sheets/api/actor-setting.mjs @@ -44,9 +44,8 @@ export default class DHBaseActorSettings extends DHApplicationMixin(DocumentShee const context = await super._prepareContext(options); context.isNPC = this.actor.isNPC; - if (context.systemFields.attack) { + if (context.systemFields.attack) context.systemFields.attack.fields = this.actor.system.attack.schema.fields; - } return context; } diff --git a/module/applications/sheets/api/application-mixin.mjs b/module/applications/sheets/api/application-mixin.mjs index bdcee27a..dd845d34 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, getDocFromElementSync, tagifyElement } from '../../../helpers/utils.mjs'; -import { ItemBrowser } from '../../ui/itemBrowser.mjs'; const typeSettingsMap = { character: 'extendCharacterDescriptions', @@ -85,6 +84,8 @@ export default function DHApplicationMixin(Base) { this._dragDrop = this._createDragDropHandlers(); } + #nonHeaderAttribution = ['environment', 'ancestry', 'community', 'domainCard']; + /** * The default options for the sheet. * @type {DHSheetV2Configuration} @@ -98,10 +99,12 @@ export default function DHApplicationMixin(Base) { deleteDoc: DHSheetV2.#deleteDoc, toChat: DHSheetV2.#toChat, useItem: DHSheetV2.#useItem, + viewItem: DHSheetV2.#viewItem, toggleEffect: DHSheetV2.#toggleEffect, toggleExtended: DHSheetV2.#toggleExtended, addNewItem: DHSheetV2.#addNewItem, - browseItem: DHSheetV2.#browseItem + browseItem: DHSheetV2.#browseItem, + editAttribution: DHSheetV2.#editAttribution }, contextMenus: [ { @@ -125,6 +128,43 @@ export default function DHApplicationMixin(Base) { tagifyConfigs: [] }; + /**@inheritdoc */ + async _renderFrame(options) { + const frame = await super._renderFrame(options); + + const hideAttribution = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.appearance + ).hideAttribution; + const headerAttribution = !this.#nonHeaderAttribution.includes(this.document.type); + if (!hideAttribution && this.document.system.metadata.hasAttribution && headerAttribution) { + const { source, page } = this.document.system.attribution; + const attribution = [source, page ? `pg ${page}.` : null].filter(x => x).join('. '); + const element = ``; + this.window.controls.insertAdjacentHTML('beforebegin', element); + } + + return frame; + } + + /** + * Refresh the custom parts of the application frame + */ + refreshFrame() { + const hideAttribution = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.appearance + ).hideAttribution; + const headerAttribution = !this.#nonHeaderAttribution.includes(this.document.type); + if (!hideAttribution && this.document.system.metadata.hasAttribution && headerAttribution) { + const { source, page } = this.document.system.attribution; + const attribution = [source, page ? `pg ${page}.` : null].filter(x => x).join('. '); + + const label = this.window.header.querySelector('.attribution-header-label'); + label.innerHTML = attribution; + } + } + /** * Related documents that should cause a rerender of this application when updated. */ @@ -164,11 +204,19 @@ export default function DHApplicationMixin(Base) { this.relatedDocs.filter(doc => doc).map(doc => delete doc.apps[this.id]); } + /** @inheritdoc */ + async _renderHTML(context, options) { + const rendered = await super._renderHTML(context, options); + for (const result of Object.values(rendered)) { + await this.#prepareInventoryDescription(result); + } + return rendered; + } + /**@inheritdoc */ async _onRender(context, options) { await super._onRender(context, options); this._createTagifyElements(this.options.tagifyConfigs); - await this.#prepareInventoryDescription(context); } /* -------------------------------------------- */ @@ -176,8 +224,8 @@ export default function DHApplicationMixin(Base) { /* -------------------------------------------- */ /**@inheritdoc */ - _syncPartState(partId, newElement, priorElement, state) { - super._syncPartState(partId, newElement, priorElement, state); + _preSyncPartState(partId, newElement, priorElement, state) { + super._preSyncPartState(partId, newElement, priorElement, state); for (const el of priorElement.querySelectorAll('.extensible.extended')) { const { actionId, itemUuid } = el.parentElement.dataset; const selector = `${actionId ? `[data-action-id="${actionId}"]` : `[data-item-uuid="${itemUuid}"]`} .extensible`; @@ -372,6 +420,19 @@ export default function DHApplicationMixin(Base) { ]; if (usable) { + options.unshift({ + name: 'DAGGERHEART.APPLICATIONS.ContextMenu.cancelBeastform', + icon: 'fa-solid fa-ban', + condition: target => { + const doc = getDocFromElementSync(target); + return doc && doc.system?.actions?.some(a => a.type === 'beastform'); + }, + callback: async target => + game.system.api.fields.ActionFields.BeastformField.handleActiveTransformations.call( + await getDocFromElement(target) + ) + }); + options.unshift({ name: 'DAGGERHEART.GENERAL.damage', icon: 'fa-solid fa-explosion', @@ -382,7 +443,9 @@ export default function DHApplicationMixin(Base) { callback: async (target, event) => { const doc = await getDocFromElement(target), action = doc?.system?.attack ?? doc; - return action && action.use(event, { byPassRoll: true }); + const config = action.prepareConfig(event); + config.hasRoll = false; + return action && action.workflow.get('damage').execute(config, null, true); } }); @@ -401,7 +464,7 @@ export default function DHApplicationMixin(Base) { options.push({ name: 'DAGGERHEART.APPLICATIONS.ContextMenu.sendToChat', icon: 'fa-solid fa-message', - callback: async target => (await getDocFromElement(target)).toChat(this.document.id) + callback: async target => (await getDocFromElement(target)).toChat(this.document.uuid) }); if (deletable) @@ -442,11 +505,12 @@ export default function DHApplicationMixin(Base) { /** * Prepares and enriches an inventory item or action description for display. + * @param {HTMLElement} element the element to enrich the inventory items of * @returns {Promise} */ - async #prepareInventoryDescription(context) { + async #prepareInventoryDescription(element) { // Get all inventory item elements with a data-item-uuid attribute - const inventoryItems = this.element.querySelectorAll('.inventory-item[data-item-uuid]'); + const inventoryItems = element.querySelectorAll('.inventory-item[data-item-uuid]'); for (const el of inventoryItems) { // Get the doc uuid from the element const { itemUuid } = el?.dataset || {}; @@ -537,28 +601,27 @@ export default function DHApplicationMixin(Base) { static async #browseItem(event, target) { const type = target.dataset.compendium ?? target.dataset.type; - const presets = {}; + const presets = { + render: { + noFolder: true + } + }; switch (type) { case 'loot': + presets.folder = 'equipments.folders.loots'; + break; case 'consumable': + presets.folder = 'equipments.folders.consumables'; + break; case 'armor': + presets.folder = 'equipments.folders.armors'; + break; case 'weapon': - presets.compendium = 'daggerheart'; - presets.folder = 'equipments'; - presets.render = { - noFolder: true - }; - presets.filter = { - type: { key: 'type', value: type, forced: true } - }; + presets.folder = 'equipments.folders.weapons'; break; case 'domainCard': - presets.compendium = 'daggerheart'; presets.folder = 'domains'; - presets.render = { - noFolder: true - }; presets.filter = { 'level.max': { key: 'level.max', value: this.document.system.levelData.level.current }, 'system.domain': { key: 'system.domain', value: this.document.system.domains } @@ -568,7 +631,15 @@ export default function DHApplicationMixin(Base) { return; } - return new ItemBrowser({ presets }).render({ force: true }); + ui.compendiumBrowser.open(presets); + } + + /** + * Open the attribution dialog + * @type {ApplicationClickAction} + */ + static async #editAttribution() { + new game.system.api.applications.dialogs.AttributionDialog(this.document).render({ force: true }); } /** @@ -640,7 +711,7 @@ export default function DHApplicationMixin(Base) { * @type {ApplicationClickAction} */ static async #toChat(_event, target) { - let doc = await getDocFromElement(target); + const doc = await getDocFromElement(target); return doc.toChat(doc.uuid); } @@ -649,10 +720,19 @@ export default function DHApplicationMixin(Base) { * @type {ApplicationClickAction} */ static async #useItem(event, target) { - let doc = await getDocFromElement(target); + const doc = await getDocFromElement(target); await doc.use(event); } + /** + * View an item by opening its sheet + * @type {ApplicationClickAction} + */ + static async #viewItem(_, target) { + const doc = await getDocFromElement(target); + await doc.sheet.render({ force: true }); + } + /** * Toggle a ActiveEffect * @type {ApplicationClickAction} diff --git a/module/applications/sheets/api/base-actor.mjs b/module/applications/sheets/api/base-actor.mjs index 2535142f..e1226416 100644 --- a/module/applications/sheets/api/base-actor.mjs +++ b/module/applications/sheets/api/base-actor.mjs @@ -47,6 +47,12 @@ export default class DHBaseActorSheet extends DHApplicationMixin(ActorSheetV2) { return (this.#settingSheet ??= SheetClass ? new SheetClass({ document: this.document }) : null); } + get isVisible() { + const viewPermission = this.document.testUserPermission(game.user, this.options.viewPermission); + const limitedOnly = this.document.testUserPermission(game.user, this.options.viewPermission, { exact: true }); + return limitedOnly ? this.document.system.metadata.hasLimitedView : viewPermission; + } + /* -------------------------------------------- */ /* Prepare Context */ /* -------------------------------------------- */ @@ -55,6 +61,13 @@ export default class DHBaseActorSheet extends DHApplicationMixin(ActorSheetV2) { async _prepareContext(_options) { const context = await super._prepareContext(_options); context.isNPC = this.document.isNPC; + context.useResourcePips = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.appearance + ).useResourcePips; + context.showAttribution = !game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance) + .hideAttribution; + return context; } @@ -69,6 +82,31 @@ export default class DHBaseActorSheet extends DHApplicationMixin(ActorSheetV2) { return context; } + _configureRenderParts(options) { + const parts = super._configureRenderParts(options); + if (!this.document.system.metadata.hasLimitedView) return parts; + + if (this.document.testUserPermission(game.user, 'LIMITED', { exact: true })) return { limited: parts.limited }; + + return Object.keys(parts).reduce((acc, key) => { + if (key !== 'limited') acc[key] = parts[key]; + + return acc; + }, {}); + } + + /** @inheritDoc */ + async _onRender(context, options) { + await super._onRender(context, options); + + if ( + this.document.system.metadata.hasLimitedView && + this.document.testUserPermission(game.user, 'LIMITED', { exact: true }) + ) { + this.element.classList = `${this.element.classList} limited`; + } + } + /**@inheritdoc */ _attachPartListeners(partId, htmlElement, options) { super._attachPartListeners(partId, htmlElement, options); diff --git a/module/applications/sheets/api/base-item.mjs b/module/applications/sheets/api/base-item.mjs index e722b72e..21ccbbf1 100644 --- a/module/applications/sheets/api/base-item.mjs +++ b/module/applications/sheets/api/base-item.mjs @@ -13,7 +13,16 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) { static DEFAULT_OPTIONS = { classes: ['item'], position: { width: 600 }, - window: { resizable: true }, + window: { + resizable: true, + controls: [ + { + icon: 'fa-solid fa-signature', + label: 'DAGGERHEART.UI.Tooltip.configureAttribution', + action: 'editAttribution' + } + ] + }, form: { submitOnChange: true }, @@ -55,6 +64,15 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) { /* Prepare Context */ /* -------------------------------------------- */ + /**@inheritdoc */ + async _prepareContext(options) { + const context = await super._prepareContext(options); + context.showAttribution = !game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance) + .hideAttribution; + + return context; + } + /**@inheritdoc */ async _preparePartContext(partId, context, options) { await super._preparePartContext(partId, context, options); diff --git a/module/applications/sheets/items/armor.mjs b/module/applications/sheets/items/armor.mjs index bdc482c3..2550b415 100644 --- a/module/applications/sheets/items/armor.mjs +++ b/module/applications/sheets/items/armor.mjs @@ -8,7 +8,7 @@ export default class ArmorSheet extends ItemAttachmentSheet(DHBaseItemSheet) { tagifyConfigs: [ { selector: '.features-input', - options: () => CONFIG.DH.ITEM.armorFeatures, + options: () => CONFIG.DH.ITEM.orderedArmorFeatures(), callback: ArmorSheet.#onFeatureSelect } ] diff --git a/module/applications/sheets/items/class.mjs b/module/applications/sheets/items/class.mjs index 033c63e6..b88e6ca3 100644 --- a/module/applications/sheets/items/class.mjs +++ b/module/applications/sheets/items/class.mjs @@ -46,6 +46,10 @@ export default class ClassSheet extends DHBaseItemSheet { template: 'systems/daggerheart/templates/sheets/items/class/settings.hbs', scrollable: ['.settings'] }, + questions: { + template: 'systems/daggerheart/templates/sheets/items/class/questions.hbs', + scrollable: ['.questions'] + }, effects: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-effects.hbs', scrollable: ['.effects'] @@ -55,7 +59,13 @@ export default class ClassSheet extends DHBaseItemSheet { /** @inheritdoc */ static TABS = { primary: { - tabs: [{ id: 'description' }, { id: 'features' }, { id: 'settings' }, { id: 'effects' }], + tabs: [ + { id: 'description' }, + { id: 'features' }, + { id: 'settings' }, + { id: 'questions' }, + { id: 'effects' } + ], initial: 'description', labelPrefix: 'DAGGERHEART.GENERAL.Tabs' } diff --git a/module/applications/sheets/items/weapon.mjs b/module/applications/sheets/items/weapon.mjs index 2533287b..f5c7dddf 100644 --- a/module/applications/sheets/items/weapon.mjs +++ b/module/applications/sheets/items/weapon.mjs @@ -8,7 +8,7 @@ export default class WeaponSheet extends ItemAttachmentSheet(DHBaseItemSheet) { tagifyConfigs: [ { selector: '.features-input', - options: () => CONFIG.DH.ITEM.weaponFeatures, + options: () => CONFIG.DH.ITEM.orderedWeaponFeatures(), callback: WeaponSheet.#onFeatureSelect } ] diff --git a/module/applications/sidebar/_module.mjs b/module/applications/sidebar/_module.mjs new file mode 100644 index 00000000..f19f697c --- /dev/null +++ b/module/applications/sidebar/_module.mjs @@ -0,0 +1,2 @@ +export { default as DaggerheartMenu } from './tabs/daggerheartMenu.mjs'; +export { default as DhSidebar } from './sidebar.mjs'; diff --git a/module/applications/sidebar/sidebar.mjs b/module/applications/sidebar/sidebar.mjs new file mode 100644 index 00000000..ab6b0cdb --- /dev/null +++ b/module/applications/sidebar/sidebar.mjs @@ -0,0 +1,73 @@ +export default class DhSidebar extends foundry.applications.sidebar.Sidebar { + /** @override */ + static TABS = { + chat: { + documentName: 'ChatMessage' + }, + combat: { + documentName: 'Combat' + }, + scenes: { + documentName: 'Scene', + gmOnly: true + }, + actors: { + documentName: 'Actor' + }, + items: { + documentName: 'Item' + }, + journal: { + documentName: 'JournalEntry', + tooltip: 'SIDEBAR.TabJournal' + }, + tables: { + documentName: 'RollTable' + }, + cards: { + documentName: 'Cards' + }, + macros: { + documentName: 'Macro' + }, + playlists: { + documentName: 'Playlist' + }, + compendium: { + tooltip: 'SIDEBAR.TabCompendium', + icon: 'fa-solid fa-book-atlas' + }, + daggerheartMenu: { + tooltip: 'DAGGERHEART.UI.Sidebar.daggerheartMenu.title', + img: 'systems/daggerheart/assets/logos/FoundryBorneLogoWhite.svg', + gmOnly: true + }, + settings: { + tooltip: 'SIDEBAR.TabSettings', + icon: 'fa-solid fa-gears' + } + }; + + /** @override */ + static PARTS = { + tabs: { + id: 'tabs', + template: 'systems/daggerheart/templates/sidebar/tabs.hbs' + } + }; + + /** @override */ + async _prepareTabContext(context, options) { + context.tabs = Object.entries(this.constructor.TABS).reduce((obj, [k, v]) => { + let { documentName, gmOnly, tooltip, icon, img } = v; + if (gmOnly && !game.user.isGM) return obj; + if (documentName) { + tooltip ??= getDocumentClass(documentName).metadata.labelPlural; + icon ??= CONFIG[documentName]?.sidebarIcon; + } + obj[k] = { tooltip, icon, img }; + obj[k].active = this.tabGroups.primary === k; + return obj; + }, {}); + } +} diff --git a/module/applications/sidebar/tabs/daggerheartMenu.mjs b/module/applications/sidebar/tabs/daggerheartMenu.mjs new file mode 100644 index 00000000..0f98f5a0 --- /dev/null +++ b/module/applications/sidebar/tabs/daggerheartMenu.mjs @@ -0,0 +1,160 @@ +const { HandlebarsApplicationMixin } = foundry.applications.api; +const { AbstractSidebarTab } = foundry.applications.sidebar; +/** + * The daggerheart menu tab. + * @extends {AbstractSidebarTab} + * @mixes HandlebarsApplication + */ +export default class DaggerheartMenu extends HandlebarsApplicationMixin(AbstractSidebarTab) { + constructor(options) { + super(options); + + this.refreshSelections = DaggerheartMenu.defaultRefreshSelections(); + } + + static defaultRefreshSelections() { + return { + session: { selected: false, label: game.i18n.localize('DAGGERHEART.GENERAL.RefreshType.session') }, + scene: { selected: false, label: game.i18n.localize('DAGGERHEART.GENERAL.RefreshType.scene') }, + longRest: { selected: false, label: game.i18n.localize('DAGGERHEART.GENERAL.RefreshType.longrest') }, + shortRest: { selected: false, label: game.i18n.localize('DAGGERHEART.GENERAL.RefreshType.shortrest') } + }; + } + + /** @override */ + static DEFAULT_OPTIONS = { + classes: ['dh-style'], + window: { + title: 'SIDEBAR.TabSettings' + }, + actions: { + selectRefreshable: DaggerheartMenu.#selectRefreshable, + refreshActors: DaggerheartMenu.#refreshActors + } + }; + + /** @override */ + static tabName = 'daggerheartMenu'; + + /** @override */ + static PARTS = { + main: { template: 'systems/daggerheart/templates/sidebar/daggerheart-menu/main.hbs' } + }; + + /* -------------------------------------------- */ + + /** @inheritDoc */ + async _prepareContext(options) { + const context = await super._prepareContext(options); + context.refreshables = this.refreshSelections; + context.disableRefresh = Object.values(this.refreshSelections).every(x => !x.selected); + + return context; + } + + async getRefreshables(types) { + const refreshedActors = {}; + for (let actor of game.actors) { + if (['character', 'adversary'].includes(actor.type) && actor.prototypeToken.actorLink) { + const updates = {}; + for (let item of actor.items) { + if (item.system.metadata.hasResource && types.includes(item.system.resource?.recovery)) { + if (!refreshedActors[actor.id]) + refreshedActors[actor.id] = { name: actor.name, img: actor.img, refreshed: new Set() }; + refreshedActors[actor.id].refreshed.add( + game.i18n.localize(CONFIG.DH.GENERAL.refreshTypes[item.system.resource.recovery].label) + ); + + if (!updates[item.id]?.system) updates[item.id] = { system: {} }; + + const increasing = + item.system.resource.progression === CONFIG.DH.ITEM.itemResourceProgression.increasing.id; + updates[item.id].system = { + ...updates[item.id].system, + 'resource.value': increasing + ? 0 + : Roll.replaceFormulaData(item.system.resource.max, actor.getRollData()) + }; + } + if (item.system.metadata.hasActions) { + const refreshTypes = new Set(); + const actions = item.system.actions.filter(action => { + if (types.includes(action.uses.recovery)) { + refreshTypes.add(action.uses.recovery); + return true; + } + + return false; + }); + if (actions.length === 0) continue; + + if (!refreshedActors[actor.id]) + refreshedActors[actor.id] = { name: actor.name, img: actor.img, refreshed: new Set() }; + refreshedActors[actor.id].refreshed.add( + ...refreshTypes.map(type => game.i18n.localize(CONFIG.DH.GENERAL.refreshTypes[type].label)) + ); + + if (!updates[item.id]?.system) updates[item.id] = { system: {} }; + + updates[item.id].system = { + ...updates[item.id].system, + ...actions.reduce( + (acc, action) => { + acc.actions[action.id] = { 'uses.value': 0 }; + return acc; + }, + { actions: updates[item.id].system.actions ?? {} } + ) + }; + } + } + + for (let key in updates) { + const update = updates[key]; + await actor.items.get(key).update(update); + } + } + } + + return refreshedActors; + } + + /* -------------------------------------------- */ + /* Application Clicks Actions */ + /* -------------------------------------------- */ + + static async #selectRefreshable(_event, button) { + const { type } = button.dataset; + this.refreshSelections[type].selected = !this.refreshSelections[type].selected; + this.render(); + } + + static async #refreshActors() { + const refreshKeys = Object.keys(this.refreshSelections).filter(key => this.refreshSelections[key].selected); + await this.getRefreshables(refreshKeys); + const types = refreshKeys.map(x => this.refreshSelections[x].label).join(', '); + ui.notifications.info( + game.i18n.format('DAGGERHEART.UI.Notifications.gmMenuRefresh', { + types: `[${types}]` + }) + ); + this.refreshSelections = DaggerheartMenu.defaultRefreshSelections(); + + const cls = getDocumentClass('ChatMessage'); + const msg = { + user: game.user.id, + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/ui/chat/refreshMessage.hbs', + { + types: types + } + ), + title: game.i18n.localize('DAGGERHEART.UI.Chat.refreshMessage.title'), + speaker: cls.getSpeaker() + }; + + cls.create(msg); + + this.render(); + } +} diff --git a/module/applications/ui/_module.mjs b/module/applications/ui/_module.mjs index 6a17a61e..35a58566 100644 --- a/module/applications/ui/_module.mjs +++ b/module/applications/ui/_module.mjs @@ -1,5 +1,7 @@ +export { default as CountdownEdit } from './countdownEdit.mjs'; +export { default as DhCountdowns } from './countdowns.mjs'; export { default as DhChatLog } from './chatLog.mjs'; export { default as DhCombatTracker } from './combatTracker.mjs'; -export * as DhCountdowns from './countdowns.mjs'; export { default as DhFearTracker } from './fearTracker.mjs'; export { default as DhHotbar } from './hotbar.mjs'; +export { ItemBrowser } from './itemBrowser.mjs'; diff --git a/module/applications/ui/chatLog.mjs b/module/applications/ui/chatLog.mjs index a80974ed..6b05fe74 100644 --- a/module/applications/ui/chatLog.mjs +++ b/module/applications/ui/chatLog.mjs @@ -1,4 +1,5 @@ -import { emitAsGM, GMUpdateEvent } from '../../systemRegistration/socket.mjs'; +import { abilities } from '../../config/actorConfig.mjs'; +import { emitAsGM, GMUpdateEvent, RefreshType, socketEvent } from '../../systemRegistration/socket.mjs'; export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLog { constructor(options) { @@ -37,7 +38,7 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo // } // }, { - name: 'Reroll Damage', + name: game.i18n.localize('DAGGERHEART.UI.ChatLog.rerollDamage'), icon: '', condition: li => { const message = game.messages.get(li.dataset.messageId); @@ -55,21 +56,9 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo } addChatListeners = async (app, html, data) => { - html.querySelectorAll('.duality-action-damage').forEach(element => - element.addEventListener('click', event => this.onRollDamage(event, data.message)) - ); - html.querySelectorAll('.target-save').forEach(element => - element.addEventListener('click', event => this.onRollSave(event, data.message)) - ); - html.querySelectorAll('.roll-all-save-button').forEach(element => - element.addEventListener('click', event => this.onRollAllSave(event, data.message)) - ); html.querySelectorAll('.simple-roll-button').forEach(element => element.addEventListener('click', event => this.onRollSimple(event, data.message)) ); - html.querySelectorAll('.healing-button').forEach(element => - element.addEventListener('click', event => this.onHealing(event, data.message)) - ); html.querySelectorAll('.ability-use-button').forEach(element => element.addEventListener('click', event => this.abilityUseButton(event, data.message)) ); @@ -79,6 +68,18 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo html.querySelectorAll('.reroll-button').forEach(element => element.addEventListener('click', event => this.rerollEvent(event, data.message)) ); + html.querySelectorAll('.group-roll-button').forEach(element => + element.addEventListener('click', event => this.groupRollButton(event, data.message)) + ); + html.querySelectorAll('.group-roll-reroll').forEach(element => + element.addEventListener('click', event => this.groupRollReroll(event, data.message)) + ); + html.querySelectorAll('.group-roll-success').forEach(element => + element.addEventListener('click', event => this.groupRollSuccessEvent(event, data.message)) + ); + html.querySelectorAll('.group-roll-header-expand-section').forEach(element => + element.addEventListener('click', this.groupRollExpandSection) + ); }; setupHooks() { @@ -90,80 +91,6 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo super.close(options); } - async getActor(uuid) { - return await foundry.utils.fromUuid(uuid); - } - - getAction(actor, itemId, actionId) { - const item = actor.items.get(itemId), - action = - actor.system.attack?._id === actionId - ? actor.system.attack - : item.system.attack?._id === actionId - ? item.system.attack - : item?.system?.actions?.get(actionId); - return action; - } - - async onRollDamage(event, message) { - event.stopPropagation(); - const actor = await this.getActor(message.system.source.actor); - if(!actor.isOwner) 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?.rollDamage) return; - await action.rollDamage(event, message); - } - } - - async onRollSave(event, message) { - event.stopPropagation(); - const actor = await this.getActor(message.system.source.actor), - tokenId = event.target.closest('[data-token]')?.dataset.token, - token = game.canvas.tokens.get(tokenId); - if (!token?.actor || !token.isOwner) 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?.hasSave) return; - 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 - } - ) - ); - } - } - - async onRollAllSave(event, message) { - event.stopPropagation(); - if (!game.user.isGM) return; - const targets = event.target.parentElement.querySelectorAll('[data-token] .target-save'); - 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)); - } - }); - } - async onRollSimple(event, message) { const buttonType = event.target.dataset.type ?? 'damage', total = message.rolls.reduce((a, c) => a + Roll.fromJSON(c).total, 0), @@ -197,8 +124,11 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo item.system.attack?.id === event.currentTarget.id ? item.system.attack : item.system.actions.get(event.currentTarget.id); - if (event.currentTarget.dataset.directDamage) action.use(event, { byPassRoll: true }); - else action.use(event); + if (event.currentTarget.dataset.directDamage) { + const config = action.prepareConfig(event); + config.hasRoll = false; + action.workflow.get('damage').execute(config, null, true); + } else action.use(event); } async actionUseButton(event, message) { @@ -249,6 +179,169 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo 'system.roll': newRoll, 'rolls': [parsedRoll] }); + + Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll }); + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.Refresh, + data: { + refreshType: RefreshType.TagTeamRoll + } + }); } } + + async groupRollButton(event, message) { + const path = event.currentTarget.dataset.path; + const { actor: actorData, trait } = foundry.utils.getProperty(message.system, path); + const actor = game.actors.get(actorData._id); + + if (!actor.testUserPermission(game.user, 'OWNER')) { + return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.noActorOwnership')); + } + + const traitLabel = game.i18n.localize(abilities[trait].label); + const config = { + event: event, + title: `${game.i18n.localize('DAGGERHEART.GENERAL.dualityRoll')}: ${actor.name}`, + headerTitle: game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', { + ability: traitLabel + }), + roll: { + trait: trait, + advantage: 0, + modifiers: [{ label: traitLabel, value: actor.system.traits[trait].value }] + }, + hasRoll: true, + skips: { + createMessage: true, + resources: true + } + }; + const result = await actor.diceRoll({ + ...config, + headerTitle: `${game.i18n.localize('DAGGERHEART.GENERAL.dualityRoll')}: ${actor.name}`, + title: game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', { + ability: traitLabel + }) + }); + + const newMessageData = foundry.utils.deepClone(message.system); + foundry.utils.setProperty(newMessageData, `${path}.result`, result.roll); + const renderData = { system: new game.system.api.models.chatMessages.config.groupRoll(newMessageData) }; + + const updatedContent = await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/ui/chat/groupRoll.hbs', + { ...renderData, user: game.user } + ); + const mess = game.messages.get(message._id); + + await emitAsGM( + GMUpdateEvent.UpdateDocument, + mess.update.bind(mess), + { + ...renderData, + content: updatedContent + }, + mess.uuid + ); + } + + async groupRollReroll(event, message) { + const path = event.currentTarget.dataset.path; + const { actor: actorData, trait } = foundry.utils.getProperty(message.system, path); + const actor = game.actors.get(actorData._id); + + if (!actor.testUserPermission(game.user, 'OWNER')) { + return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.noActorOwnership')); + } + + const traitLabel = game.i18n.localize(abilities[trait].label); + + const config = { + event: event, + title: `${game.i18n.localize('DAGGERHEART.GENERAL.dualityRoll')}: ${actor.name}`, + headerTitle: game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', { + ability: traitLabel + }), + roll: { + trait: trait, + advantage: 0, + modifiers: [{ label: traitLabel, value: actor.system.traits[trait].value }] + }, + hasRoll: true, + skips: { + createMessage: true + } + }; + const result = await actor.diceRoll({ + ...config, + headerTitle: `${game.i18n.localize('DAGGERHEART.GENERAL.dualityRoll')}: ${actor.name}`, + title: game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', { + ability: traitLabel + }) + }); + + const newMessageData = foundry.utils.deepClone(message.system); + foundry.utils.setProperty(newMessageData, `${path}.result`, { ...result.roll, rerolled: true }); + const renderData = { system: new game.system.api.models.chatMessages.config.groupRoll(newMessageData) }; + + const updatedContent = await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/ui/chat/groupRoll.hbs', + { ...renderData, user: game.user } + ); + const mess = game.messages.get(message._id); + await emitAsGM( + GMUpdateEvent.UpdateDocument, + mess.update.bind(mess), + { + ...renderData, + content: updatedContent + }, + mess.uuid + ); + } + + async groupRollSuccessEvent(event, message) { + if (!game.user.isGM) { + return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.gmOnly')); + } + + const { path, success } = event.currentTarget.dataset; + const { actor: actorData } = foundry.utils.getProperty(message.system, path); + const actor = game.actors.get(actorData._id); + + if (!actor.testUserPermission(game.user, 'OWNER')) { + return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.noActorOwnership')); + } + + const newMessageData = foundry.utils.deepClone(message.system); + foundry.utils.setProperty(newMessageData, `${path}.manualSuccess`, Boolean(success)); + const renderData = { system: new game.system.api.models.chatMessages.config.groupRoll(newMessageData) }; + + const updatedContent = await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/ui/chat/groupRoll.hbs', + { ...renderData, user: game.user } + ); + const mess = game.messages.get(message._id); + await emitAsGM( + GMUpdateEvent.UpdateDocument, + mess.update.bind(mess), + { + ...renderData, + content: updatedContent + }, + mess.uuid + ); + } + + async groupRollExpandSection(event) { + event.target + .closest('.group-roll-header-expand-section') + .querySelectorAll('i') + .forEach(element => { + element.classList.toggle('fa-angle-up'); + element.classList.toggle('fa-angle-down'); + }); + event.target.closest('.group-roll-section').querySelector('.group-roll-content').classList.toggle('closed'); + } } diff --git a/module/applications/ui/combatTracker.mjs b/module/applications/ui/combatTracker.mjs index 85c77cd3..b70f8c71 100644 --- a/module/applications/ui/combatTracker.mjs +++ b/module/applications/ui/combatTracker.mjs @@ -1,5 +1,3 @@ -import { EncounterCountdowns } from '../ui/countdowns.mjs'; - export default class DhCombatTracker extends foundry.applications.sidebar.tabs.CombatTracker { static DEFAULT_OPTIONS = { actions: { @@ -36,10 +34,21 @@ export default class DhCombatTracker extends foundry.applications.sidebar.tabs.C const adversaries = context.turns?.filter(x => x.isNPC) ?? []; const characters = context.turns?.filter(x => !x.isNPC) ?? []; + const spotlightRequests = characters + ?.filter(x => !x.isNPC) + .filter(x => x.system.spotlight.requestOrderIndex > 0) + .sort((a, b) => { + const valueA = a.system.spotlight.requestOrderIndex; + const valueB = b.system.spotlight.requestOrderIndex; + + return valueA - valueB; + }); + Object.assign(context, { actionTokens: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).actionTokens, adversaries, - characters + characters: characters?.filter(x => !x.isNPC).filter(x => x.system.spotlight.requestOrderIndex == 0), + spotlightRequests }); } @@ -114,7 +123,8 @@ export default class DhCombatTracker extends foundry.applications.sidebar.tabs.C async setCombatantSpotlight(combatantId) { const update = { system: { - 'spotlight.requesting': false + 'spotlight.requesting': false, + 'spotlight.requestOrderIndex': 0 } }; const combatant = this.viewed.combatants.get(combatantId); @@ -142,11 +152,15 @@ export default class DhCombatTracker extends foundry.applications.sidebar.tabs.C } static async requestSpotlight(_, target) { + const characters = this.viewed.turns?.filter(x => !x.isNPC) ?? []; + const orderValues = characters.map(character => character.system.spotlight.requestOrderIndex); + const maxRequestIndex = Math.max(...orderValues); const { combatantId } = target.closest('[data-combatant-id]')?.dataset ?? {}; const combatant = this.viewed.combatants.get(combatantId); await combatant.update({ 'system.spotlight': { - requesting: !combatant.system.spotlight.requesting + requesting: !combatant.system.spotlight.requesting, + requestOrderIndex: !combatant.system.spotlight.requesting ? maxRequestIndex + 1 : 0 } }); @@ -168,8 +182,4 @@ export default class DhCombatTracker extends foundry.applications.sidebar.tabs.C await combatant.update({ 'system.actionTokens': newIndex }); this.render(); } - - static openCountdowns() { - new EncounterCountdowns().open(); - } } diff --git a/module/applications/ui/countdownEdit.mjs b/module/applications/ui/countdownEdit.mjs new file mode 100644 index 00000000..2098fb10 --- /dev/null +++ b/module/applications/ui/countdownEdit.mjs @@ -0,0 +1,199 @@ +import { DhCountdown } from '../../data/countdowns.mjs'; +import { emitAsGM, GMUpdateEvent, RefreshType, socketEvent } from '../../systemRegistration/socket.mjs'; + +const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; + +export default class CountdownEdit extends HandlebarsApplicationMixin(ApplicationV2) { + constructor() { + super(); + + this.data = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); + this.editingCountdowns = new Set(); + this.currentEditCountdown = null; + this.hideNewCountdowns = false; + } + + static DEFAULT_OPTIONS = { + classes: ['daggerheart', 'dialog', 'dh-style', 'countdown-edit'], + tag: 'form', + position: { width: 600 }, + window: { + title: 'DAGGERHEART.APPLICATIONS.CountdownEdit.title', + icon: 'fa-solid fa-clock-rotate-left' + }, + actions: { + addCountdown: CountdownEdit.#addCountdown, + toggleCountdownEdit: CountdownEdit.#toggleCountdownEdit, + editCountdownImage: CountdownEdit.#editCountdownImage, + editCountdownOwnership: CountdownEdit.#editCountdownOwnership, + removeCountdown: CountdownEdit.#removeCountdown + }, + form: { handler: this.updateData, submitOnChange: true } + }; + + static PARTS = { + countdowns: { + template: 'systems/daggerheart/templates/ui/countdown-edit.hbs', + scrollable: ['.expanded-view', '.edit-content'] + } + }; + + async _prepareContext(_options) { + const context = await super._prepareContext(_options); + context.isGM = game.user.isGM; + context.ownershipDefaultOptions = CONFIG.DH.GENERAL.basicOwnershiplevels; + context.defaultOwnership = this.data.defaultOwnership; + context.countdownBaseTypes = CONFIG.DH.GENERAL.countdownBaseTypes; + context.countdownTypes = CONFIG.DH.GENERAL.countdownTypes; + context.hideNewCountdowns = this.hideNewCountdowns; + context.countdowns = Object.keys(this.data.countdowns).reduce((acc, key) => { + const countdown = this.data.countdowns[key]; + acc[key] = { + ...countdown, + typeName: game.i18n.localize(CONFIG.DH.GENERAL.countdownBaseTypes[countdown.type].name), + progress: { + ...countdown.progress, + typeName: game.i18n.localize(CONFIG.DH.GENERAL.countdownTypes[countdown.progress.type].label) + }, + editing: this.editingCountdowns.has(key) + }; + + return acc; + }, {}); + + return context; + } + + /** @override */ + async _postRender(_context, _options) { + if (this.currentEditCountdown) { + setTimeout(() => { + const input = this.element.querySelector( + `.countdown-edit-container[data-id="${this.currentEditCountdown}"] input` + ); + if (input) { + input.select(); + this.currentEditCountdown = null; + } + }, 100); + } + } + + canPerformEdit() { + if (game.user.isGM) return true; + + if (!game.users.activeGM) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.gmRequired')); + return false; + } + + return true; + } + + async updateSetting(update) { + const noGM = !game.users.find(x => x.isGM && x.active); + if (noGM) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.gmRequired')); + return; + } + + await this.data.updateSource(update); + await emitAsGM(GMUpdateEvent.UpdateCountdowns, this.gmSetSetting.bind(this.data), this.data, null, { + refreshType: RefreshType.Countdown + }); + + this.render(); + } + + static async updateData(_event, _, formData) { + const { hideNewCountdowns, ...settingsData } = foundry.utils.expandObject(formData.object); + + // Sync current and max if max is changing and they were equal before + for (const [id, countdown] of Object.entries(settingsData.countdowns ?? {})) { + const existing = this.data.countdowns[id]; + const wasEqual = existing && existing.progress.current === existing.progress.max; + if (wasEqual && countdown.progress.max !== existing.progress.max) { + countdown.progress.current = countdown.progress.max; + } else { + countdown.progress.current = Math.min(countdown.progress.current, countdown.progress.max); + } + } + + this.hideNewCountdowns = hideNewCountdowns; + this.updateSetting(settingsData); + } + + async gmSetSetting(data) { + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, data), + game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.Refresh, + data: { refreshType: RefreshType.Countdown } + }); + Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.Countdown }); + } + + static #addCountdown() { + const id = foundry.utils.randomID(); + this.editingCountdowns.add(id); + this.currentEditCountdown = id; + this.updateSetting({ + [`countdowns.${id}`]: DhCountdown.defaultCountdown(null, this.hideNewCountdowns) + }); + } + + static #editCountdownImage(_, target) { + const countdown = this.data.countdowns[target.id]; + const fp = new foundry.applications.apps.FilePicker.implementation({ + current: countdown.img, + type: 'image', + callback: async path => this.updateSetting({ [`countdowns.${target.id}.img`]: path }), + top: this.position.top + 40, + left: this.position.left + 10 + }); + return fp.browse(); + } + + static #toggleCountdownEdit(_, button) { + const { countdownId } = button.dataset; + + const isEditing = this.editingCountdowns.has(countdownId); + if (isEditing) this.editingCountdowns.delete(countdownId); + else { + this.editingCountdowns.add(countdownId); + this.currentEditCountdown = countdownId; + } + + this.render(); + } + + static async #editCountdownOwnership(_, button) { + const countdown = this.data.countdowns[button.dataset.countdownId]; + const data = await game.system.api.applications.dialogs.OwnershipSelection.configure( + countdown.name, + countdown.ownership, + this.data.defaultOwnership + ); + if (!data) return; + + this.updateSetting({ [`countdowns.${button.dataset.countdownId}`]: data }); + } + + static async #removeCountdown(event, button) { + const { countdownId } = button.dataset; + + if (!event.shiftKey) { + const confirmed = await foundry.applications.api.DialogV2.confirm({ + window: { + title: game.i18n.localize('DAGGERHEART.APPLICATIONS.CountdownEdit.removeCountdownTitle') + }, + content: game.i18n.format('DAGGERHEART.APPLICATIONS.CountdownEdit.removeCountdownText', { + name: this.data.countdowns[countdownId].name + }) + }); + if (!confirmed) return; + } + + if (this.editingCountdowns.has(countdownId)) this.editingCountdowns.delete(countdownId); + this.updateSetting({ [`countdowns.-=${countdownId}`]: null }); + } +} diff --git a/module/applications/ui/countdowns.mjs b/module/applications/ui/countdowns.mjs index 5e3ad1ab..3d0b32ae 100644 --- a/module/applications/ui/countdowns.mjs +++ b/module/applications/ui/countdowns.mjs @@ -1,355 +1,229 @@ -import { GMUpdateEvent, RefreshType, socketEvent } from '../../systemRegistration/socket.mjs'; -import constructHTMLButton from '../../helpers/utils.mjs'; -import OwnershipSelection from '../dialogs/ownershipSelection.mjs'; +import { emitAsGM, GMUpdateEvent, RefreshType, socketEvent } from '../../systemRegistration/socket.mjs'; const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; -class Countdowns extends HandlebarsApplicationMixin(ApplicationV2) { - constructor(basePath) { - super({}); +/** + * A UI element which displays the countdowns in this world. + * + * @extends ApplicationV2 + * @mixes HandlebarsApplication + */ - this.basePath = basePath; - } - - get title() { - return game.i18n.format('DAGGERHEART.APPLICATIONS.Countdown.title', { - type: game.i18n.localize(`DAGGERHEART.APPLICATIONS.Countdown.types.${this.basePath}`) - }); +export default class DhCountdowns extends HandlebarsApplicationMixin(ApplicationV2) { + constructor(options = {}) { + super(options); + + this.sidebarCollapsed = true; + this.setupHooks(); } + /** @inheritDoc */ static DEFAULT_OPTIONS = { - classes: ['daggerheart', 'dh-style', 'countdown'], - tag: 'form', - position: { width: 740, height: 700 }, + id: 'countdowns', + tag: 'div', + classes: ['daggerheart', 'dh-style', 'countdowns', 'faded-ui'], window: { + icon: 'fa-solid fa-clock-rotate-left', frame: true, - title: 'Countdowns', - resizable: true, + title: 'DAGGERHEART.UI.Countdowns.title', + positioned: false, + resizable: false, minimizable: false }, actions: { - addCountdown: this.addCountdown, - removeCountdown: this.removeCountdown, - editImage: this.onEditImage, - openOwnership: this.openOwnership, - openCountdownOwnership: this.openCountdownOwnership, - toggleSimpleView: this.toggleSimpleView + toggleViewMode: DhCountdowns.#toggleViewMode, + editCountdowns: DhCountdowns.#editCountdowns, + decreaseCountdown: (_, target) => this.editCountdown(false, target), + increaseCountdown: (_, target) => this.editCountdown(true, target) }, - form: { handler: this.updateData, submitOnChange: true } - }; - - static PARTS = { - countdowns: { - template: 'systems/daggerheart/templates/ui/countdowns.hbs', - scrollable: ['.expanded-view'] + position: { + width: 400, + height: 222, + top: 50 } }; - _attachPartListeners(partId, htmlElement, options) { - super._attachPartListeners(partId, htmlElement, options); + /** @override */ + static PARTS = { + resources: { + root: true, + template: 'systems/daggerheart/templates/ui/countdowns.hbs' + } + }; - htmlElement.querySelectorAll('.mini-countdown-container').forEach(element => { - element.addEventListener('click', event => this.updateCountdownValue.bind(this)(event, false)); - element.addEventListener('contextmenu', event => this.updateCountdownValue.bind(this)(event, true)); - }); - } - - async _preFirstRender(context, options) { - options.position = - game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS[`${this.basePath}Countdown`].position) ?? - Countdowns.DEFAULT_OPTIONS.position; - - const viewSetting = - game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS[`${this.basePath}Countdown`].simple) ?? !game.user.isGM; - this.simpleView = - game.user.isGM || !this.testUserPermission(CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER) ? viewSetting : true; - context.simple = this.simpleView; - } - - _onPosition(position) { - game.user.setFlag(CONFIG.DH.id, CONFIG.DH.FLAGS[`${this.basePath}Countdown`].position, position); + get element() { + return document.body.querySelector('.daggerheart.dh-style.countdowns'); } + /**@inheritdoc */ async _renderFrame(options) { const frame = await super._renderFrame(options); - if (this.testUserPermission(CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER)) { - const button = constructHTMLButton({ - label: '', - classes: ['header-control', 'icon', 'fa-solid', 'fa-wrench'], - dataset: { action: 'toggleSimpleView', tooltip: 'DAGGERHEART.APPLICATIONS.Countdown.toggleSimple' } - }); - this.window.controls.after(button); + const iconOnly = + game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.userFlags.countdownMode) === + CONFIG.DH.GENERAL.countdownAppMode.iconOnly; + if (iconOnly) frame.classList.add('icon-only'); + else frame.classList.remove('icon-only'); + + const header = frame.querySelector('.window-header'); + header.querySelector('button[data-action="close"]').remove(); + + if (game.user.isGM) { + const editTooltip = game.i18n.localize('DAGGERHEART.APPLICATIONS.CountdownEdit.editTitle'); + const editButton = ``; + header.insertAdjacentHTML('beforeEnd', editButton); } + const minimizeTooltip = game.i18n.localize('DAGGERHEART.UI.Countdowns.toggleIconMode'); + const minimizeButton = ``; + header.insertAdjacentHTML('beforeEnd', minimizeButton); + return frame; } - testUserPermission(level, exact, altSettings) { - if (game.user.isGM) return true; - - const settings = - altSettings ?? game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns)[this.basePath]; - const defaultAllowed = exact ? settings.ownership.default === level : settings.ownership.default >= level; - const userAllowed = exact - ? settings.playerOwnership[game.user.id]?.value === level - : settings.playerOwnership[game.user.id]?.value >= level; - return defaultAllowed || userAllowed; - } - - async _prepareContext(_options) { - const context = await super._prepareContext(_options); - const countdownData = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns)[ - this.basePath - ]; - + /** @override */ + async _prepareContext(options) { + const context = await super._prepareContext(options); context.isGM = game.user.isGM; - context.base = this.basePath; + context.sidebarCollapsed = this.sidebarCollapsed; + context.iconOnly = + game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.userFlags.countdownMode) === + CONFIG.DH.GENERAL.countdownAppMode.iconOnly; - context.canCreate = this.testUserPermission(CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER, true); - context.source = { - ...countdownData, - countdowns: Object.keys(countdownData.countdowns).reduce((acc, key) => { - const countdown = countdownData.countdowns[key]; + const setting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); + context.countdowns = Object.keys(setting.countdowns).reduce((acc, key) => { + const countdown = setting.countdowns[key]; + const ownership = DhCountdowns.#getPlayerOwnership(game.user, setting, countdown); + if (ownership === CONST.DOCUMENT_OWNERSHIP_LEVELS.NONE) return acc; - if (this.testUserPermission(CONST.DOCUMENT_OWNERSHIP_LEVELS.LIMITED, false, countdown)) { - acc[key] = { - ...countdown, - canEdit: this.testUserPermission(CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER, true, countdown) - }; + const playersWithAccess = game.users.reduce((acc, user) => { + const ownership = DhCountdowns.#getPlayerOwnership(user, setting, countdown); + if (!user.isGM && ownership && ownership !== CONST.DOCUMENT_OWNERSHIP_LEVELS.NONE) { + acc.push(user); } - return acc; - }, {}) - }; - context.systemFields = countdownData.schema.fields; - context.countdownFields = context.systemFields.countdowns.element.fields; - context.simple = this.simpleView; + }, []); + const nonGmPlayers = game.users.filter(x => !x.isGM); + acc[key] = { + ...countdown, + editable: game.user.isGM || ownership === CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER, + playerAccess: playersWithAccess.length !== nonGmPlayers.length ? playersWithAccess : [], + noPlayerAccess: nonGmPlayers.length && playersWithAccess.length === 0 + }; + return acc; + }, {}); return context; } - static async updateData(event, _, formData) { - const data = foundry.utils.expandObject(formData.object); - const newSetting = foundry.utils.mergeObject( - game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns).toObject(), - data - ); + static #getPlayerOwnership(user, setting, countdown) { + const playerOwnership = countdown.ownership[user.id]; + return playerOwnership === undefined || playerOwnership === CONST.DOCUMENT_OWNERSHIP_LEVELS.INHERIT + ? setting.defaultOwnership + : playerOwnership; + } - if (game.user.isGM) { - await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, newSetting); - this.render(); - } else { - await game.socket.emit(`system.${CONFIG.DH.id}`, { - action: socketEvent.GMUpdate, - data: { - action: GMUpdateEvent.UpdateSetting, - uuid: CONFIG.DH.SETTINGS.gameSettings.Countdowns, - update: newSetting - } - }); + toggleCollapsedPosition = async (_, collapsed) => { + this.sidebarCollapsed = collapsed; + if (!collapsed) this.element.classList.add('expanded'); + else this.element.classList.remove('expanded'); + }; + + cooldownRefresh = ({ refreshType }) => { + if (refreshType === RefreshType.Countdown) this.render(); + }; + + static canPerformEdit() { + if (game.user.isGM) return true; + + const noGM = !game.users.find(x => x.isGM && x.active); + if (noGM) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.gmRequired')); + return false; } + + return true; } - async updateSetting(update) { - if (game.user.isGM) { - await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, update); - await game.socket.emit(`system.${CONFIG.DH.id}`, { - action: socketEvent.Refresh, - data: { - refreshType: RefreshType.Countdown, - application: `${this.basePath}-countdowns` - } - }); + static async #toggleViewMode() { + const currentMode = game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.userFlags.countdownMode); + const appMode = CONFIG.DH.GENERAL.countdownAppMode; + const newMode = currentMode === appMode.textIcon ? appMode.iconOnly : appMode.textIcon; + await game.user.setFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.userFlags.countdownMode, newMode); - this.render(); - } else { - await game.socket.emit(`system.${CONFIG.DH.id}`, { - action: socketEvent.GMUpdate, - data: { - action: GMUpdateEvent.UpdateSetting, - uuid: CONFIG.DH.SETTINGS.gameSettings.Countdowns, - update: update, - refresh: { refreshType: RefreshType.Countdown, application: `${this.basePath}-countdowns` } - } - }); - } - } - - static onEditImage(_, target) { - const setting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns)[this.basePath]; - const current = setting.countdowns[target.dataset.countdown].img; - const fp = new foundry.applications.apps.FilePicker.implementation({ - current, - type: 'image', - callback: async path => this.updateImage.bind(this)(path, target.dataset.countdown), - top: this.position.top + 40, - left: this.position.left + 10 - }); - return fp.browse(); - } - - async updateImage(path, countdown) { - const setting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); - await setting.updateSource({ - [`${this.basePath}.countdowns.${countdown}.img`]: path - }); - - await this.updateSetting(setting); - } - - static openOwnership(_, target) { - new Promise((resolve, reject) => { - const setting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns)[this.basePath]; - const ownership = { default: setting.ownership.default, players: setting.playerOwnership }; - new OwnershipSelection(resolve, reject, this.title, ownership).render(true); - }).then(async ownership => { - const setting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); - await setting.updateSource({ - [`${this.basePath}.ownership`]: ownership - }); - - await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, setting.toObject()); - this.render(); - }); - } - - static openCountdownOwnership(_, target) { - const countdownId = target.dataset.countdown; - new Promise((resolve, reject) => { - const countdown = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns)[this.basePath] - .countdowns[countdownId]; - const ownership = { default: countdown.ownership.default, players: countdown.playerOwnership }; - new OwnershipSelection(resolve, reject, countdown.name, ownership).render(true); - }).then(async ownership => { - const setting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); - await setting.updateSource({ - [`${this.basePath}.countdowns.${countdownId}.ownership`]: ownership - }); - - await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, setting); - this.render(); - }); - } - - static async toggleSimpleView() { - this.simpleView = !this.simpleView; - await game.user.setFlag(CONFIG.DH.id, CONFIG.DH.FLAGS[`${this.basePath}Countdown`].simple, this.simpleView); + if (newMode === appMode.iconOnly) this.element.classList.add('icon-only'); + else this.element.classList.remove('icon-only'); this.render(); } - async updateCountdownValue(event, increase) { - const countdownSetting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); - const countdown = countdownSetting[this.basePath].countdowns[event.currentTarget.dataset.countdown]; - - if (!this.testUserPermission(CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER)) { - return; - } - - const currentValue = countdown.progress.current; - - if (increase && currentValue === countdown.progress.max) return; - if (!increase && currentValue === 0) return; - - await countdownSetting.updateSource({ - [`${this.basePath}.countdowns.${event.currentTarget.dataset.countdown}.progress.current`]: increase - ? currentValue + 1 - : currentValue - 1 - }); - - await this.updateSetting(countdownSetting.toObject()); + static async #editCountdowns() { + new game.system.api.applications.ui.CountdownEdit().render(true); } - static async addCountdown() { + static async editCountdown(increase, target) { + if (!DhCountdowns.canPerformEdit()) return; + + const settings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); + const countdown = settings.countdowns[target.id]; + const newCurrent = increase + ? Math.min(countdown.progress.current + 1, countdown.progress.max) + : Math.max(countdown.progress.current - 1, 0); + await settings.updateSource({ [`countdowns.${target.id}.progress.current`]: newCurrent }); + await emitAsGM(GMUpdateEvent.UpdateCountdowns, DhCountdowns.gmSetSetting.bind(settings), settings, null, { + refreshType: RefreshType.Countdown + }); + } + + static async gmSetSetting(data) { + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, data), + game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.Refresh, + data: { refreshType: RefreshType.Countdown } + }); + Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.Countdown }); + } + + setupHooks() { + Hooks.on('collapseSidebar', this.toggleCollapsedPosition.bind()); + Hooks.on(socketEvent.Refresh, this.cooldownRefresh.bind()); + } + + close(options) { + Hooks.off('collapseSidebar', this.toggleCollapsedPosition); + Hooks.off(socketEvent.Refresh, this.cooldownRefresh); + super.close(options); + } + + static async updateCountdowns(progressType) { const countdownSetting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); - await countdownSetting.updateSource({ - [`${this.basePath}.countdowns.${foundry.utils.randomID()}`]: { - name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Countdown.newCountdown'), - ownership: game.user.isGM - ? {} - : { - players: { - [game.user.id]: { type: CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER } - } - } + const updatedCountdowns = Object.keys(countdownSetting.countdowns).reduce((acc, key) => { + const countdown = countdownSetting.countdowns[key]; + if (countdown.progress.type === progressType && countdown.progress.current > 0) { + acc.push(key); } - }); - await this.updateSetting(countdownSetting.toObject()); - } + return acc; + }, []); - static async removeCountdown(_, target) { - const countdownSetting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); - const countdownName = countdownSetting[this.basePath].countdowns[target.dataset.countdown].name; - - const confirmed = await foundry.applications.api.DialogV2.confirm({ - window: { - title: game.i18n.localize('DAGGERHEART.APPLICATIONS.Countdown.removeCountdownTitle') - }, - content: game.i18n.format('DAGGERHEART.APPLICATIONS.Countdown.removeCountdownText', { name: countdownName }) - }); - if (!confirmed) return; - - await countdownSetting.updateSource({ [`${this.basePath}.countdowns.-=${target.dataset.countdown}`]: null }); - - await this.updateSetting(countdownSetting.toObject()); - } - - async open() { - await this.render(true); - if ( - Object.keys( - game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns)[this.basePath].countdowns - ).length > 0 - ) { - this.minimize(); - } - } -} - -export class NarrativeCountdowns extends Countdowns { - constructor() { - super('narrative'); - } - - static DEFAULT_OPTIONS = { - id: 'narrative-countdowns' - }; -} - -export class EncounterCountdowns extends Countdowns { - constructor() { - super('encounter'); - } - - static DEFAULT_OPTIONS = { - id: 'encounter-countdowns' - }; -} - -export async function updateCountdowns(progressType) { - const countdownSetting = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); - const update = Object.keys(countdownSetting).reduce((update, typeKey) => { - return foundry.utils.mergeObject( - update, - Object.keys(countdownSetting[typeKey].countdowns).reduce((acc, countdownKey) => { - const countdown = countdownSetting[typeKey].countdowns[countdownKey]; - if (countdown.progress.current > 0 && countdown.progress.type.value === progressType) { - acc[`${typeKey}.countdowns.${countdownKey}.progress.current`] = countdown.progress.current - 1; + const countdownData = countdownSetting.toObject(); + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, { + ...countdownData, + countdowns: Object.keys(countdownData.countdowns).reduce((acc, key) => { + const countdown = foundry.utils.deepClone(countdownData.countdowns[key]); + if (updatedCountdowns.includes(key)) { + countdown.progress.current -= 1; } + acc[key] = countdown; return acc; }, {}) - ); - }, {}); + }); - await countdownSetting.updateSource(update); - await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, countdownSetting); - - const data = { refreshType: RefreshType.Countdown }; - await game.socket.emit(`system.${CONFIG.DH.id}`, { - action: socketEvent.Refresh, - data - }); - Hooks.callAll(socketEvent.Refresh, data); + const data = { refreshType: RefreshType.Countdown }; + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.Refresh, + data + }); + Hooks.callAll(socketEvent.Refresh, data); + } } diff --git a/module/applications/ui/fearTracker.mjs b/module/applications/ui/fearTracker.mjs index ace2bbb2..e9c816db 100644 --- a/module/applications/ui/fearTracker.mjs +++ b/module/applications/ui/fearTracker.mjs @@ -1,4 +1,4 @@ -import { emitAsGM, GMUpdateEvent, socketEvent } from "../../systemRegistration/socket.mjs"; +import { emitAsGM, GMUpdateEvent } from '../../systemRegistration/socket.mjs'; const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; @@ -78,7 +78,7 @@ export default class FearTracker extends HandlebarsApplicationMixin(ApplicationV /** @override */ async _preRender(context, options) { - if (this.currentFear > this.maxFear) + if (this.currentFear > this.maxFear && game.user.isGM) await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear, this.maxFear); } @@ -106,19 +106,10 @@ export default class FearTracker extends HandlebarsApplicationMixin(ApplicationV } async updateFear(value) { - return emitAsGM(GMUpdateEvent.UpdateFear, game.settings.set.bind(game.settings, CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear), value); - /* if(!game.user.isGM) - await game.socket.emit(`system.${CONFIG.DH.id}`, { - action: socketEvent.GMUpdate, - data: { - action: GMUpdateEvent.UpdateFear, - update: value - } - }); - else - game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear, value); */ - /* if (!game.user.isGM) return; - value = Math.max(0, Math.min(this.maxFear, value)); - await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear, value); */ + return emitAsGM( + GMUpdateEvent.UpdateFear, + game.settings.set.bind(game.settings, CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear), + value + ); } } diff --git a/module/applications/ui/itemBrowser.mjs b/module/applications/ui/itemBrowser.mjs index 9b9bef91..33995aa9 100644 --- a/module/applications/ui/itemBrowser.mjs +++ b/module/applications/ui/itemBrowser.mjs @@ -15,16 +15,14 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { this.fieldFilter = []; this.selectedMenu = { path: [], data: null }; this.config = CONFIG.DH.ITEMBROWSER.compendiumConfig; - this.presets = options.presets; - - if (this.presets?.compendium && this.presets?.folder) - ItemBrowser.selectFolder.call(this, null, null, this.presets.compendium, this.presets.folder); + this.presets = {}; + this.compendiumBrowserTypeKey = 'compendiumBrowserDefault'; } /** @inheritDoc */ static DEFAULT_OPTIONS = { id: 'itemBrowser', - classes: ['daggerheart', 'dh-style', 'dialog', 'compendium-browser'], + classes: ['daggerheart', 'dh-style', 'dialog', 'compendium-browser', 'loader'], tag: 'div', window: { frame: true, @@ -84,17 +82,29 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { } }; - /** @inheritDoc */ - async _preFirstRender(context, options) { - if (context.presets?.render?.noFolder || context.presets?.render?.lite) options.position.width = 600; - - await super._preFirstRender(context, options); - } - /** @inheritDoc */ async _preRender(context, options) { - if (context.presets?.render?.noFolder || context.presets?.render?.lite) - options.parts.splice(options.parts.indexOf('sidebar'), 1); + this.presets = options.presets ?? {}; + const noFolder = this.presets?.render?.noFolder; + if (noFolder === true) { + this.compendiumBrowserTypeKey = 'compendiumBrowserNoFolder'; + } + const lite = this.presets?.render?.lite; + if (lite === true) { + this.compendiumBrowserTypeKey = 'compendiumBrowserLite'; + } + const userPresetPosition = game.user.getFlag( + CONFIG.DH.id, + CONFIG.DH.FLAGS[`${this.compendiumBrowserTypeKey}`].position + ); + + options.position = userPresetPosition ?? ItemBrowser.DEFAULT_OPTIONS.position; + + if (!userPresetPosition) { + const width = noFolder === true || lite === true ? 600 : 850; + if (this.rendered) this.setPosition({ width }); + else options.position.width = width; + } await super._preRender(context, options); } @@ -103,32 +113,35 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { async _onRender(context, options) { await super._onRender(context, options); - this._createSearchFilter(); - this._createFilterInputs(); - this._createDragProcess(); - - if (context.presets?.render?.lite) this.element.classList.add('lite'); - - if (context.presets?.render?.noFolder) this.element.classList.add('no-folder'); - - if (context.presets?.render?.noFilter) this.element.classList.add('no-filter'); - - if (this.presets?.filter) { - Object.entries(this.presets.filter).forEach( - ([k, v]) => (this.fieldFilter.find(c => c.name === k).value = v.value) + this.element + .querySelectorAll('[data-action="selectFolder"]') + .forEach(element => + element.classList.toggle('is-selected', element.dataset.folderId === this.selectedMenu.path.join('.')) ); - await this._onInputFilterBrowser(); - } + + this._createSearchFilter(); + + this.element.classList.toggle('lite', this.presets?.render?.lite === true); + this.element.classList.toggle('no-folder', this.presets?.render?.noFolder === true); + this.element.classList.toggle('no-filter', this.presets?.render?.noFilter === true); + this.element.querySelectorAll('.folder-list > [data-action="selectFolder"]').forEach(element => { + element.hidden = + this.presets.render?.folders?.length && !this.presets.render.folders.includes(element.dataset.folderId); + }); + } + + _onPosition(position) { + game.user.setFlag(CONFIG.DH.id, CONFIG.DH.FLAGS[`${this.compendiumBrowserTypeKey}`].position, position); } _attachPartListeners(partId, htmlElement, options) { super._attachPartListeners(partId, htmlElement, options); - htmlElement - .querySelectorAll('[data-action="selectFolder"]') - .forEach(element => element.addEventListener("contextmenu", (event) => { + htmlElement.querySelectorAll('[data-action="selectFolder"]').forEach(element => + element.addEventListener('contextmenu', event => { event.target.classList.toggle('expanded'); - })) + }) + ); } /* -------------------------------------------- */ @@ -139,22 +152,26 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { async _prepareContext(options) { const context = await super._prepareContext(options); context.compendiums = this.getCompendiumFolders(foundry.utils.deepClone(this.config)); - // context.pathTitle = this.pathTile; context.menu = this.selectedMenu; context.formatLabel = this.formatLabel; context.formatChoices = this.formatChoices; - context.fieldFilter = this.fieldFilter = this._createFieldFilter(); context.items = this.items; context.presets = this.presets; return context; } + open(presets = {}) { + this.presets = presets; + ItemBrowser.selectFolder.call(this); + } + getCompendiumFolders(config, parent = null, depth = 0) { let folders = []; Object.values(config).forEach(c => { + // if(this.presets.render?.folders?.length && !this.presets.render.folders.includes(c.id)) return; const folder = { id: c.id, - label: c.label, + label: game.i18n.localize(c.label), selected: (!parent || parent.selected) && this.selectedMenu.path[depth] === c.id }; folder.folders = c.folders @@ -162,47 +179,108 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { : []; folders.push(folder); }); + folders.sort((a, b) => a.label.localeCompare(b.label)); return folders; } - static async selectFolder(_, target, compend, folder) { - const config = foundry.utils.deepClone(this.config), - compendium = compend ?? target.closest('[data-compendium-id]').dataset.compendiumId, - folderId = folder ?? target.dataset.folderId, - folderPath = `${compendium}.folders.${folderId}`, - folderData = foundry.utils.getProperty(config, folderPath); + static async selectFolder(_, target) { + const folderId = target?.dataset?.folderId ?? this.presets.folder, + folderData = foundry.utils.getProperty(this.config, folderId) ?? {}; + + const columns = ItemBrowser.getFolderConfig(folderData).map(col => ({ + ...col, + label: game.i18n.localize(col.label) + })); this.selectedMenu = { - path: folderPath.split('.'), + path: folderId?.split('.') ?? [], data: { ...folderData, - columns: ItemBrowser.getFolderConfig(folderData) + columns: columns } }; - let items = []; - for (const key of folderData.keys) { - const comp = game.packs.get(`${compendium}.${key}`); - if (!comp) return; - items = items.concat(await comp.getDocuments({ type__in: folderData.type })); - } + await this.render({ force: true, presets: this.presets }); - this.items = ItemBrowser.sortBy(items, 'name'); - - if(target) { - target.closest('.compendium-sidebar').querySelectorAll('[data-action="selectFolder"]').forEach(element => element.classList.remove("is-selected")) - target.classList.add('is-selected'); - } - - this.render({ force: true }); + if (this.selectedMenu?.data?.type?.length) this.loadItems(); } _replaceHTML(result, content, options) { - if(!options.isFirstRender) delete result.sidebar; + if (!options.isFirstRender) delete result.sidebar; super._replaceHTML(result, content, options); } + loadItems() { + let loadTimeout = this.toggleLoader(true); + + const promises = []; + + game.packs.forEach(pack => { + promises.push( + new Promise(async resolve => { + const items = await pack.getDocuments({ type__in: this.selectedMenu?.data?.type }); + resolve(items); + }) + ); + }); + + Promise.all(promises).then(async result => { + this.items = ItemBrowser.sortBy( + result.flatMap(r => r), + 'name' + ); + this.fieldFilter = this._createFieldFilter(); + + if (this.presets?.filter) { + Object.entries(this.presets.filter).forEach(([k, v]) => { + const filter = this.fieldFilter.find(c => c.name === k); + if (filter) filter.value = v.value; + }); + // await this._onInputFilterBrowser(); + } + + const filterList = await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/ui/itemBrowser/filterContainer.hbs', + { + fieldFilter: this.fieldFilter, + presets: this.presets, + formatChoices: this.formatChoices + } + ); + + this.element.querySelector('.filter-content .wrapper').innerHTML = filterList; + const filterContainer = this.element.querySelector('.filter-header > [data-action="expandContent"]'); + if (this.fieldFilter.length === 0) filterContainer.setAttribute('disabled', ''); + else filterContainer.removeAttribute('disabled'); + + const itemList = await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/ui/itemBrowser/itemContainer.hbs', + { + items: this.items, + menu: this.selectedMenu, + formatLabel: this.formatLabel + } + ); + + this.element.querySelector('.item-list').innerHTML = itemList; + + this._createFilterInputs(); + await this._onInputFilterBrowser(); + this._createDragProcess(); + + clearTimeout(loadTimeout); + this.toggleLoader(false); + }); + } + + toggleLoader(state) { + const container = this.element.querySelector('.item-list'); + return setTimeout(() => { + container.classList.toggle('loader', state); + }, 100); + } + static expandContent(_, target) { const parent = target.parentElement; parent.classList.toggle('expanded'); @@ -237,6 +315,12 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { else if (typeof f.choices === 'function') { f.choices = f.choices(this.items); } + + // Clear field label so template uses our custom label parameter + if (f.field && f.label) { + f.field.label = undefined; + } + f.name ??= f.key; f.value = this.presets?.filter?.[f.name]?.value ?? null; }); @@ -314,6 +398,7 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { for (const li of html.querySelectorAll('.item-container')) { const itemUUID = li.dataset.itemUuid, item = this.items.find(i => i.uuid === itemUUID); + if (!item) continue; const matchesSearch = !query || foundry.applications.ux.SearchFilter.testQuery(rgx, item.name); if (matchesSearch) this.#filteredItems.browser.search.add(item.id); const { input } = this.#filteredItems.browser; @@ -336,7 +421,7 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { item = this.items.find(i => i.uuid === itemUUID); if (!item) continue; - + const matchesMenu = this.fieldFilter.length === 0 || this.fieldFilter.every( @@ -405,11 +490,13 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { const newOrder = [...itemList].reverse().sort((a, b) => { const aProp = a.querySelector(`[data-item-key="${key}"]`), - bProp = b.querySelector(`[data-item-key="${key}"]`); + bProp = b.querySelector(`[data-item-key="${key}"]`), + aValue = isNaN(aProp.innerText) ? aProp.innerText : Number(aProp.innerText), + bValue = isNaN(bProp.innerText) ? bProp.innerText : Number(bProp.innerText); if (type === 'DESC') { - return aProp.innerText < bProp.innerText ? 1 : -1; + return aValue < bValue ? 1 : -1; } else { - return aProp.innerText > bProp.innerText ? 1 : -1; + return aValue > bValue ? 1 : -1; } }); @@ -438,4 +525,41 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { _canDragStart() { return true; } + + static injectSidebarButton(html) { + if (!game.user.isGM) return; + const sectionId = html.dataset.tab, + menus = { + actors: { + folder: 'adversaries', + render: { + folders: ['adversaries', 'characters', 'environments'] + } + }, + items: { + folder: 'equipments', + render: { + noFolder: true + } + }, + compendium: {} + }; + + if (Object.keys(menus).includes(sectionId)) { + const headerActions = html.querySelector('.header-actions'); + + const button = document.createElement('button'); + button.type = 'button'; + button.classList.add('open-compendium-browser'); + button.innerHTML = ` + + ${game.i18n.localize('DAGGERHEART.UI.Tooltip.compendiumBrowser')} + `; + button.addEventListener('click', event => { + ui.compendiumBrowser.open(menus[sectionId]); + }); + + headerActions.append(button); + } + } } diff --git a/module/canvas/placeables/measuredTemplate.mjs b/module/canvas/placeables/measuredTemplate.mjs index c9950650..fa91fa9f 100644 --- a/module/canvas/placeables/measuredTemplate.mjs +++ b/module/canvas/placeables/measuredTemplate.mjs @@ -10,29 +10,48 @@ export default class DhMeasuredTemplate extends foundry.canvas.placeables.Measur const splitRulerText = this.ruler.text.split(' '); if (splitRulerText.length > 0) { const rulerValue = Number(splitRulerText[0]); - const vagueLabel = this.constructor.getDistanceLabel(rulerValue, rangeMeasurementSettings); - this.ruler.text = vagueLabel; + const result = DhMeasuredTemplate.getRangeLabels(rulerValue, rangeMeasurementSettings); + this.ruler.text = result.distance + (result.units ? ' ' + result.units : ''); } } } - static getDistanceLabel(distance, settings) { - if (distance <= settings.melee) { - return game.i18n.localize('DAGGERHEART.CONFIG.Range.melee.name'); - } - if (distance <= settings.veryClose) { - return game.i18n.localize('DAGGERHEART.CONFIG.Range.veryClose.name'); - } - if (distance <= settings.close) { - return game.i18n.localize('DAGGERHEART.CONFIG.Range.close.name'); - } - if (distance <= settings.far) { - return game.i18n.localize('DAGGERHEART.CONFIG.Range.far.name'); - } - if (distance > settings.far) { - return game.i18n.localize('DAGGERHEART.CONFIG.Range.veryFar.name'); + static getRangeLabels(distanceValue, settings) { + let result = { distance: distanceValue, units: '' }; + const sceneRangeMeasurement = canvas.scene.flags.daggerheart?.rangeMeasurement; + + const { disable, custom } = CONFIG.DH.GENERAL.sceneRangeMeasurementSetting; + if (sceneRangeMeasurement.setting === disable.id) { + result.distance = distanceValue; + result.units = canvas.scene?.grid?.units; + return result; } - return ''; + const melee = sceneRangeMeasurement.setting === custom.id ? sceneRangeMeasurement.melee : settings.melee; + const veryClose = + sceneRangeMeasurement.setting === custom.id ? sceneRangeMeasurement.veryClose : settings.veryClose; + const close = sceneRangeMeasurement.setting === custom.id ? sceneRangeMeasurement.close : settings.close; + const far = sceneRangeMeasurement.setting === custom.id ? sceneRangeMeasurement.far : settings.far; + if (distanceValue <= melee) { + result.distance = game.i18n.localize('DAGGERHEART.CONFIG.Range.melee.name'); + return result; + } + if (distanceValue <= veryClose) { + result.distance = game.i18n.localize('DAGGERHEART.CONFIG.Range.veryClose.name'); + return result; + } + if (distanceValue <= close) { + result.distance = game.i18n.localize('DAGGERHEART.CONFIG.Range.close.name'); + return result; + } + if (distanceValue <= far) { + result.distance = game.i18n.localize('DAGGERHEART.CONFIG.Range.far.name'); + return result; + } + if (distanceValue > far) { + result.distance = game.i18n.localize('DAGGERHEART.CONFIG.Range.veryFar.name'); + } + + return result; } } diff --git a/module/canvas/placeables/ruler.mjs b/module/canvas/placeables/ruler.mjs index 6585a1cd..6e2f220d 100644 --- a/module/canvas/placeables/ruler.mjs +++ b/module/canvas/placeables/ruler.mjs @@ -8,9 +8,9 @@ export default class DhpRuler extends foundry.canvas.interaction.Ruler { const range = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement; if (range.enabled) { - const distance = DhMeasuredTemplate.getDistanceLabel(waypoint.measurement.distance.toNearest(0.01), range); - context.cost = { total: distance, units: null }; - context.distance = { total: distance, units: null }; + const result = DhMeasuredTemplate.getRangeLabels(waypoint.measurement.distance.toNearest(0.01), range); + context.cost = { total: result.distance, units: result.units }; + context.distance = { total: result.distance, units: result.units }; } return context; diff --git a/module/canvas/placeables/tokenRuler.mjs b/module/canvas/placeables/tokenRuler.mjs index ff8fc0d5..056953f8 100644 --- a/module/canvas/placeables/tokenRuler.mjs +++ b/module/canvas/placeables/tokenRuler.mjs @@ -8,9 +8,9 @@ export default class DhpTokenRuler extends foundry.canvas.placeables.tokens.Toke const range = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement; if (range.enabled) { - const distance = DhMeasuredTemplate.getDistanceLabel(waypoint.measurement.distance.toNearest(0.01), range); - context.cost = { total: distance, units: null }; - context.distance = { total: distance, units: null }; + const result = DhMeasuredTemplate.getRangeLabels(waypoint.measurement.distance.toNearest(0.01), range); + context.cost = { total: result.distance, units: result.units }; + context.distance = { total: result.distance, units: result.units }; } return context; diff --git a/module/config/actorConfig.mjs b/module/config/actorConfig.mjs index 6453cd78..55f03789 100644 --- a/module/config/actorConfig.mjs +++ b/module/config/actorConfig.mjs @@ -157,6 +157,11 @@ export const adversaryTypes = { } }; +export const allAdversaryTypes = () => ({ + ...adversaryTypes, + ...game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).adversaryTypes +}); + export const environmentTypes = { exploration: { label: 'DAGGERHEART.CONFIG.EnvironmentType.exploration.label', diff --git a/module/config/flagsConfig.mjs b/module/config/flagsConfig.mjs index 91712288..12ab3ee1 100644 --- a/module/config/flagsConfig.mjs +++ b/module/config/flagsConfig.mjs @@ -1,4 +1,4 @@ -export const displayDomainCardsAsList = 'displayDomainCardsAsList'; +export const displayDomainCardsAsCard = 'displayDomainCardsAsCard'; export const narrativeCountdown = { simple: 'countdown-narrative-simple', position: 'countdown-narrative-position' @@ -8,8 +8,21 @@ export const encounterCountdown = { position: 'countdown-encounter-position' }; +export const compendiumBrowserDefault = { + position: 'compendium-browser-default-position' +}; + +export const compendiumBrowserNoFolder = { + position: 'compendium-browser-no-folder-position' +}; + +export const compendiumBrowserLite = { + position: 'compendium-browser-lite-position' +}; + export const itemAttachmentSource = 'attachmentSource'; export const userFlags = { - welcomeMessage: 'welcome-message' + welcomeMessage: 'welcome-message', + countdownMode: 'countdown-mode' }; diff --git a/module/config/generalConfig.mjs b/module/config/generalConfig.mjs index 34ca6009..6ecc76e6 100644 --- a/module/config/generalConfig.mjs +++ b/module/config/generalConfig.mjs @@ -90,22 +90,22 @@ export const rangeInclusion = { export const otherTargetTypes = { friendly: { id: 'friendly', - label: 'Friendly' + label: 'DAGGERHEART.CONFIG.TargetTypes.friendly' }, hostile: { id: 'hostile', - label: 'Hostile' + label: 'DAGGERHEART.CONFIG.TargetTypes.hostile' }, any: { id: 'any', - label: 'Any' + label: 'DAGGERHEART.CONFIG.TargetTypes.any' } }; export const targetTypes = { self: { id: 'self', - label: 'Self' + label: 'DAGGERHEART.CONFIG.TargetTypes.self' }, ...otherTargetTypes }; @@ -164,28 +164,36 @@ export const healingTypes = { } }; -export const defeatedConditions = { +export const defeatedConditions = () => { + const defeated = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).defeated; + return Object.keys(defeatedConditionChoices).reduce((acc, key) => { + const choice = defeatedConditionChoices[key]; + acc[key] = { + ...choice, + img: defeated[`${choice.id}Icon`], + description: `DAGGERHEART.CONFIG.Condition.${choice.id}.description` + }; + + return acc; + }, {}); +}; + +export const defeatedConditionChoices = { defeated: { id: 'defeated', - name: 'DAGGERHEART.CONFIG.Condition.defeated.name', - img: 'icons/magic/control/fear-fright-mask-orange.webp', - description: 'DAGGERHEART.CONFIG.Condition.defeated.description' + name: 'DAGGERHEART.CONFIG.Condition.defeated.name' }, unconscious: { id: 'unconscious', - name: 'DAGGERHEART.CONFIG.Condition.unconscious.name', - img: 'icons/magic/control/sleep-bubble-purple.webp', - description: 'DAGGERHEART.CONFIG.Condition.unconscious.description' + name: 'DAGGERHEART.CONFIG.Condition.unconscious.name' }, dead: { id: 'dead', - name: 'DAGGERHEART.CONFIG.Condition.dead.name', - img: 'icons/magic/death/grave-tombstone-glow-teal.webp', - description: 'DAGGERHEART.CONFIG.Condition.dead.description' + name: 'DAGGERHEART.CONFIG.Condition.dead.name' } }; -export const conditions = { +export const conditions = () => ({ vulnerable: { id: 'vulnerable', name: 'DAGGERHEART.CONFIG.Condition.vulnerable.name', @@ -204,8 +212,8 @@ export const conditions = { img: 'icons/magic/control/debuff-chains-shackle-movement-red.webp', description: 'DAGGERHEART.CONFIG.Condition.restrained.description' }, - ...defeatedConditions -}; + ...defeatedConditions() +}); export const defaultRestOptions = { shortRest: () => ({ @@ -561,6 +569,19 @@ export const refreshTypes = { } }; +export const itemAbilityCosts = { + resource: { + id: 'resource', + label: 'DAGGERHEART.GENERAL.resource', + group: 'Global' + }, + quantity: { + id: 'quantity', + label: 'DAGGERHEART.GENERAL.quantity', + group: 'Global' + } +}; + export const abilityCosts = { hitPoints: { id: 'hitPoints', @@ -574,19 +595,20 @@ export const abilityCosts = { }, hope: { id: 'hope', - label: 'Hope', + label: 'DAGGERHEART.CONFIG.HealingType.hope.name', group: 'TYPES.Actor.character' }, armor: { id: 'armor', - label: 'Armor Slot', + label: 'DAGGERHEART.CONFIG.HealingType.armor.name', group: 'TYPES.Actor.character' }, fear: { id: 'fear', - label: 'Fear', + label: 'DAGGERHEART.CONFIG.HealingType.fear.name', group: 'TYPES.Actor.adversary' - } + }, + resource: itemAbilityCosts.resource }; export const countdownTypes = { @@ -624,8 +646,57 @@ export const rollTypes = { } }; +export const attributionSources = { + daggerheart: { + label: 'Daggerheart', + values: [{ label: 'Daggerheart SRD' }] + } +}; + export const fearDisplay = { token: { value: 'token', label: 'DAGGERHEART.SETTINGS.Appearance.fearDisplay.token' }, bar: { value: 'bar', label: 'DAGGERHEART.SETTINGS.Appearance.fearDisplay.bar' }, hide: { value: 'hide', label: 'DAGGERHEART.SETTINGS.Appearance.fearDisplay.hide' } }; + +export const basicOwnershiplevels = { + 0: { value: 0, label: 'OWNERSHIP.NONE' }, + 2: { value: 2, label: 'OWNERSHIP.OBSERVER' }, + 3: { value: 3, label: 'OWNERSHIP.OWNER' } +}; + +export const simpleOwnershiplevels = { + [-1]: { value: -1, label: 'OWNERSHIP.INHERIT' }, + ...basicOwnershiplevels +}; + +export const countdownBaseTypes = { + narrative: { + id: 'narrative', + name: 'DAGGERHEART.APPLICATIONS.Countdown.types.narrative' + }, + encounter: { + id: 'encounter', + name: 'DAGGERHEART.APPLICATIONS.Countdown.types.encounter' + } +}; + +export const countdownAppMode = { + textIcon: 'text-icon', + iconOnly: 'icon-only' +}; + +export const sceneRangeMeasurementSetting = { + disable: { + id: 'disable', + label: 'Disable Daggerheart Range Measurement' + }, + default: { + id: 'default', + label: 'Default' + }, + custom: { + id: 'custom', + label: 'Custom' + } +}; diff --git a/module/config/itemBrowserConfig.mjs b/module/config/itemBrowserConfig.mjs index e40c989b..2c3e1dfb 100644 --- a/module/config/itemBrowserConfig.mjs +++ b/module/config/itemBrowserConfig.mjs @@ -3,63 +3,63 @@ export const typeConfig = { columns: [ { key: 'system.tier', - label: 'Tier' + label: 'DAGGERHEART.GENERAL.Tiers.singular' }, { key: 'system.type', - label: 'Type' + label: 'DAGGERHEART.GENERAL.type' } ], filters: [ { key: 'system.tier', - label: 'Tier', + label: 'DAGGERHEART.GENERAL.Tiers.singular', field: 'system.api.models.actors.DhAdversary.schema.fields.tier' }, { key: 'system.type', - label: 'Type', + label: 'DAGGERHEART.GENERAL.type', field: 'system.api.models.actors.DhAdversary.schema.fields.type' }, { key: 'system.difficulty', name: 'difficulty.min', - label: 'Difficulty (Min)', + label: 'DAGGERHEART.UI.ItemBrowser.difficultyMin', field: 'system.api.models.actors.DhAdversary.schema.fields.difficulty', operator: 'gte' }, { key: 'system.difficulty', name: 'difficulty.max', - label: 'Difficulty (Max)', + label: 'DAGGERHEART.UI.ItemBrowser.difficultyMax', field: 'system.api.models.actors.DhAdversary.schema.fields.difficulty', operator: 'lte' }, { key: 'system.resources.hitPoints.max', name: 'hp.min', - label: 'Hit Points (Min)', + label: 'DAGGERHEART.UI.ItemBrowser.hitPointsMin', field: 'system.api.models.actors.DhAdversary.schema.fields.resources.fields.hitPoints.fields.max', operator: 'gte' }, { key: 'system.resources.hitPoints.max', name: 'hp.max', - label: 'Hit Points (Max)', + label: 'DAGGERHEART.UI.ItemBrowser.hitPointsMax', field: 'system.api.models.actors.DhAdversary.schema.fields.resources.fields.hitPoints.fields.max', operator: 'lte' }, { key: 'system.resources.stress.max', name: 'stress.min', - label: 'Stress (Min)', + label: 'DAGGERHEART.UI.ItemBrowser.stressMin', field: 'system.api.models.actors.DhAdversary.schema.fields.resources.fields.stress.fields.max', operator: 'gte' }, { key: 'system.resources.stress.max', name: 'stress.max', - label: 'Stress (Max)', + label: 'DAGGERHEART.UI.ItemBrowser.stressMax', field: 'system.api.models.actors.DhAdversary.schema.fields.resources.fields.stress.fields.max', operator: 'lte' } @@ -69,22 +69,22 @@ export const typeConfig = { columns: [ { key: 'type', - label: 'Type' + label: 'DAGGERHEART.GENERAL.type' }, { key: 'system.secondary', - label: 'Subtype', + label: 'DAGGERHEART.UI.ItemBrowser.subtype', format: isSecondary => (isSecondary ? 'secondary' : isSecondary === false ? 'primary' : '-') }, { key: 'system.tier', - label: 'Tier' + label: 'DAGGERHEART.GENERAL.Tiers.singular' } ], filters: [ { key: 'type', - label: 'Type', + label: 'DAGGERHEART.GENERAL.type', choices: () => CONFIG.Item.documentClass.TYPES.filter(t => ['armor', 'weapon', 'consumable', 'loot'].includes(t) @@ -92,15 +92,15 @@ export const typeConfig = { }, { key: 'system.secondary', - label: 'Subtype', + label: 'DAGGERHEART.UI.ItemBrowser.subtype', choices: [ - { value: false, label: 'Primary Weapon' }, - { value: true, label: 'Secondary Weapon' } + { value: false, label: 'DAGGERHEART.ITEMS.Weapon.primaryWeapon' }, + { value: true, label: 'DAGGERHEART.ITEMS.Weapon.secondaryWeapon' } ] }, { key: 'system.tier', - label: 'Tier', + label: 'DAGGERHEART.GENERAL.Tiers.singular', choices: [ { value: '1', label: '1' }, { value: '2', label: '2' }, @@ -110,36 +110,36 @@ export const typeConfig = { }, { key: 'system.burden', - label: 'Burden', + label: 'DAGGERHEART.GENERAL.burden', field: 'system.api.models.items.DHWeapon.schema.fields.burden' }, { key: 'system.attack.roll.trait', - label: 'Trait', + label: 'DAGGERHEART.GENERAL.Trait.single', field: 'system.api.models.actions.actionsTypes.attack.schema.fields.roll.fields.trait' }, { key: 'system.attack.range', - label: 'Range', + label: 'DAGGERHEART.GENERAL.range', field: 'system.api.models.actions.actionsTypes.attack.schema.fields.range' }, { key: 'system.baseScore', name: 'armor.min', - label: 'Armor Score (Min)', + label: 'DAGGERHEART.UI.ItemBrowser.armorScoreMin', field: 'system.api.models.items.DHArmor.schema.fields.baseScore', operator: 'gte' }, { key: 'system.baseScore', name: 'armor.max', - label: 'Armor Score (Max)', + label: 'DAGGERHEART.UI.ItemBrowser.armorScoreMax', field: 'system.api.models.items.DHArmor.schema.fields.baseScore', operator: 'lte' }, { key: 'system.itemFeatures', - label: 'Features', + label: 'DAGGERHEART.GENERAL.features', choices: () => [ ...Object.entries(CONFIG.DH.ITEM.weaponFeatures), @@ -149,6 +149,102 @@ export const typeConfig = { } ] }, + weapons: { + columns: [ + { + key: 'system.secondary', + label: 'DAGGERHEART.UI.ItemBrowser.subtype', + format: isSecondary => (isSecondary ? 'secondary' : isSecondary === false ? 'primary' : '-') + }, + { + key: 'system.tier', + label: 'DAGGERHEART.GENERAL.Tiers.singular' + } + ], + filters: [ + { + key: 'system.secondary', + label: 'DAGGERHEART.UI.ItemBrowser.subtype', + choices: [ + { value: false, label: 'DAGGERHEART.ITEMS.Weapon.primaryWeapon' }, + { value: true, label: 'DAGGERHEART.ITEMS.Weapon.secondaryWeapon' } + ] + }, + { + key: 'system.tier', + label: 'DAGGERHEART.GENERAL.Tiers.singular', + choices: [ + { value: '1', label: '1' }, + { value: '2', label: '2' }, + { value: '3', label: '3' }, + { value: '4', label: '4' } + ] + }, + { + key: 'system.burden', + label: 'DAGGERHEART.GENERAL.burden', + field: 'system.api.models.items.DHWeapon.schema.fields.burden' + }, + { + key: 'system.attack.roll.trait', + label: 'DAGGERHEART.GENERAL.Trait.single', + field: 'system.api.models.actions.actionsTypes.attack.schema.fields.roll.fields.trait' + }, + { + key: 'system.attack.range', + label: 'DAGGERHEART.GENERAL.range', + field: 'system.api.models.actions.actionsTypes.attack.schema.fields.range' + }, + { + key: 'system.itemFeatures', + label: 'DAGGERHEART.GENERAL.features', + choices: () => + Object.entries(CONFIG.DH.ITEM.weaponFeatures).map(([k, v]) => ({ value: k, label: v.label })), + operator: 'contains3' + } + ] + }, + armors: { + columns: [ + { + key: 'system.tier', + label: 'DAGGERHEART.GENERAL.Tiers.singular' + } + ], + filters: [ + { + key: 'system.tier', + label: 'DAGGERHEART.GENERAL.Tiers.singular', + choices: [ + { value: '1', label: '1' }, + { value: '2', label: '2' }, + { value: '3', label: '3' }, + { value: '4', label: '4' } + ] + }, + { + key: 'system.baseScore', + name: 'armor.min', + label: 'DAGGERHEART.UI.ItemBrowser.armorScoreMin', + field: 'system.api.models.items.DHArmor.schema.fields.baseScore', + operator: 'gte' + }, + { + key: 'system.baseScore', + name: 'armor.max', + label: 'DAGGERHEART.UI.ItemBrowser.armorScoreMax', + field: 'system.api.models.items.DHArmor.schema.fields.baseScore', + operator: 'lte' + }, + { + key: 'system.itemFeatures', + label: 'DAGGERHEART.GENERAL.features', + choices: () => + Object.entries(CONFIG.DH.ITEM.armorFeatures).map(([k, v]) => ({ value: k, label: v.label })), + operator: 'contains3' + } + ] + }, features: { columns: [], filters: [] @@ -157,54 +253,54 @@ export const typeConfig = { columns: [ { key: 'system.type', - label: 'Type' + label: 'DAGGERHEART.GENERAL.type' }, { key: 'system.domain', - label: 'Domain' + label: 'DAGGERHEART.GENERAL.Domain.single' }, { key: 'system.level', - label: 'Level' + label: 'DAGGERHEART.GENERAL.level' } ], filters: [ { key: 'system.type', - label: 'Type', + label: 'DAGGERHEART.GENERAL.type', field: 'system.api.models.items.DHDomainCard.schema.fields.type' }, { key: 'system.domain', - label: 'Domain', + label: 'DAGGERHEART.GENERAL.Domain.single', field: 'system.api.models.items.DHDomainCard.schema.fields.domain', operator: 'contains2' }, { key: 'system.level', name: 'level.min', - label: 'Level (Min)', + label: 'DAGGERHEART.UI.ItemBrowser.levelMin', field: 'system.api.models.items.DHDomainCard.schema.fields.level', operator: 'gte' }, { key: 'system.level', name: 'level.max', - label: 'Level (Max)', + label: 'DAGGERHEART.UI.ItemBrowser.levelMax', field: 'system.api.models.items.DHDomainCard.schema.fields.level', operator: 'lte' }, { key: 'system.recallCost', name: 'recall.min', - label: 'Recall Cost (Min)', + label: 'DAGGERHEART.UI.ItemBrowser.recallCostMin', field: 'system.api.models.items.DHDomainCard.schema.fields.recallCost', operator: 'gte' }, { key: 'system.recallCost', name: 'recall.max', - label: 'Recall Cost (Max)', + label: 'DAGGERHEART.UI.ItemBrowser.recallCostMax', field: 'system.api.models.items.DHDomainCard.schema.fields.recallCost', operator: 'lte' } @@ -214,50 +310,50 @@ export const typeConfig = { columns: [ { key: 'system.evasion', - label: 'Evasion' + label: 'DAGGERHEART.GENERAL.evasion' }, { key: 'system.hitPoints', - label: 'Hit Points' + label: 'DAGGERHEART.GENERAL.HitPoints.plural' }, { key: 'system.domains', - label: 'Domains' + label: 'DAGGERHEART.GENERAL.Domain.plural' } ], filters: [ { key: 'system.evasion', name: 'evasion.min', - label: 'Evasion (Min)', + label: 'DAGGERHEART.UI.ItemBrowser.evasionMin', field: 'system.api.models.items.DHClass.schema.fields.evasion', operator: 'gte' }, { key: 'system.evasion', name: 'evasion.max', - label: 'Evasion (Max)', + label: 'DAGGERHEART.UI.ItemBrowser.evasionMax', field: 'system.api.models.items.DHClass.schema.fields.evasion', operator: 'lte' }, { key: 'system.hitPoints', name: 'hp.min', - label: 'Hit Points (Min)', + label: 'DAGGERHEART.UI.ItemBrowser.hitPointsMin', field: 'system.api.models.items.DHClass.schema.fields.hitPoints', operator: 'gte' }, { key: 'system.hitPoints', name: 'hp.max', - label: 'Hit Points (Max)', + label: 'DAGGERHEART.UI.ItemBrowser.hitPointsMax', field: 'system.api.models.items.DHClass.schema.fields.hitPoints', operator: 'lte' }, { key: 'system.domains', - label: 'Domains', - choices: () => Object.values(CONFIG.DH.DOMAIN.domains).map(d => ({ value: d.id, label: d.label })), + label: 'DAGGERHEART.GENERAL.Domain.plural', + choices: () => Object.values(CONFIG.DH.DOMAIN.allDomains()).map(d => ({ value: d.id, label: d.label })), operator: 'contains2' } ] @@ -271,17 +367,20 @@ export const typeConfig = { }, { key: 'system.spellcastingTrait', - label: 'Spellcasting Trait' + label: 'DAGGERHEART.ITEMS.Subclass.spellcastingTrait' } ], filters: [ { key: 'system.linkedClass.uuid', label: 'Class', - choices: (items) => { - const list = items.map(item => ({ value: item.system.linkedClass.uuid, label: item.system.linkedClass.name })); - return list.reduce((a,c) => { - if(!(a.find(i => i.value === c.value))) a.push(c); + choices: items => { + const list = items.map(item => ({ + value: item.system.linkedClass.uuid, + label: item.system.linkedClass.name + })); + return list.reduce((a, c) => { + if (!a.find(i => i.value === c.value)) a.push(c); return a; }, []); } @@ -292,22 +391,22 @@ export const typeConfig = { columns: [ { key: 'system.tier', - label: 'Tier' + label: 'DAGGERHEART.GENERAL.Tiers.singular' }, { key: 'system.mainTrait', - label: 'Main Trait' + label: 'DAGGERHEART.GENERAL.Trait.single' } ], filters: [ { key: 'system.tier', - label: 'Tier', + label: 'DAGGERHEART.GENERAL.Tiers.singular', field: 'system.api.models.items.DHBeastform.schema.fields.tier' }, { key: 'system.mainTrait', - label: 'Main Trait', + label: 'DAGGERHEART.GENERAL.Trait.single', field: 'system.api.models.items.DHBeastform.schema.fields.mainTrait' } ] @@ -315,109 +414,144 @@ export const typeConfig = { }; export const compendiumConfig = { - daggerheart: { - id: 'daggerheart', - label: 'DAGGERHEART', - folders: { - adversaries: { - id: 'adversaries', - keys: ['adversaries'], - label: 'Adversaries', - type: ['adversary'], - listType: 'adversaries' - }, - ancestries: { - id: 'ancestries', + characters: { + id: 'characters', + keys: ['characters'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.characters', + type: ['character'] + // listType: 'characters' + }, + adversaries: { + id: 'adversaries', + keys: ['adversaries'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.adversaries', + type: ['adversary'], + listType: 'adversaries' + }, + ancestries: { + id: 'ancestries', + keys: ['ancestries'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.ancestries', + type: ['ancestry'] + /* folders: { + features: { + id: 'features', keys: ['ancestries'], - label: 'Ancestries', - type: ['ancestry'], - folders: { - features: { - id: 'features', - keys: ['ancestries'], - label: 'Features', - type: ['feature'] - } - } + label: 'DAGGERHEART.UI.ItemBrowser.folders.features', + type: ['feature'] + } + } */ + }, + equipments: { + id: 'equipments', + keys: ['armors', 'weapons', 'consumables', 'loot'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.equipment', + type: ['armor', 'weapon', 'consumable', 'loot'], + listType: 'items', + folders: { + weapons: { + id: 'weapons', + keys: ['weapons'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.weapons', + type: ['weapon'], + listType: 'weapons' }, - equipments: { - id: 'equipments', - keys: ['armors', 'weapons', 'consumables', 'loot'], - label: 'Equipment', - type: ['armor', 'weapon', 'consumable', 'loot'], - listType: 'items' + armors: { + id: 'armors', + keys: ['armors'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.armors', + type: ['armor'], + listType: 'armors' }, - classes: { - id: 'classes', - keys: ['classes'], - label: 'Classes', - type: ['class'], - folders: { - features: { - id: 'features', - keys: ['classes'], - label: 'Features', - type: ['feature'] - }, - items: { - id: 'items', - keys: ['classes'], - label: 'Items', - type: ['armor', 'weapon', 'consumable', 'loot'], - listType: 'items' - } - }, - listType: 'classes' + consumables: { + id: 'consumables', + keys: ['consumables'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.consumables', + type: ['consumable'] }, - subclasses: { - id: 'subclasses', - keys: ['subclasses'], - label: 'Subclasses', - type: ['subclass'], - listType: 'subclasses' - }, - domains: { - id: 'domains', - keys: ['domains'], - label: 'Domain Cards', - type: ['domainCard'], - listType: 'cards' - }, - communities: { - id: 'communities', - keys: ['communities'], - label: 'Communities', - type: ['community'], - folders: { - features: { - id: 'features', - keys: ['communities'], - label: 'Features', - type: ['feature'] - } - } - }, - environments: { - id: 'environments', - keys: ['environments'], - label: 'Environments', - type: ['environment'] - }, - beastforms: { - id: 'beastforms', - keys: ['beastforms'], - label: 'Beastforms', - type: ['beastform'], - listType: 'beastforms', - folders: { - features: { - id: 'features', - keys: ['beastforms'], - label: 'Features', - type: ['feature'] - } - } + loots: { + id: 'loots', + keys: ['loots'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.loots', + type: ['loot'] } } + }, + classes: { + id: 'classes', + keys: ['classes'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.classes', + type: ['class'], + /* folders: { + features: { + id: 'features', + keys: ['classes'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.features', + type: ['feature'] + }, + items: { + id: 'items', + keys: ['classes'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.items', + type: ['armor', 'weapon', 'consumable', 'loot'], + listType: 'items' + } + }, */ + listType: 'classes' + }, + subclasses: { + id: 'subclasses', + keys: ['subclasses'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.subclasses', + type: ['subclass'], + listType: 'subclasses' + }, + domains: { + id: 'domains', + keys: ['domains'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.domainCards', + type: ['domainCard'], + listType: 'cards' + }, + communities: { + id: 'communities', + keys: ['communities'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.communities', + type: ['community'] + /* folders: { + features: { + id: 'features', + keys: ['communities'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.features', + type: ['feature'] + } + } */ + }, + environments: { + id: 'environments', + keys: ['environments'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.environments', + type: ['environment'] + }, + beastforms: { + id: 'beastforms', + keys: ['beastforms'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.beastforms', + type: ['beastform'], + listType: 'beastforms' + /* folders: { + features: { + id: 'features', + keys: ['beastforms'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.features', + type: ['feature'] + } + } */ + }, + features: { + id: 'features', + keys: ['features'], + label: 'DAGGERHEART.UI.ItemBrowser.folders.features', + type: ['feature'] } }; diff --git a/module/config/itemConfig.mjs b/module/config/itemConfig.mjs index cee4bc52..d815181b 100644 --- a/module/config/itemConfig.mjs +++ b/module/config/itemConfig.mjs @@ -452,6 +452,34 @@ export const armorFeatures = { } }; +export const allArmorFeatures = () => { + const homebrewFeatures = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).itemFeatures + .armorFeatures; + return { + ...armorFeatures, + ...Object.keys(homebrewFeatures).reduce((acc, key) => { + const feature = homebrewFeatures[key]; + acc[key] = { ...feature, label: feature.name }; + return acc; + }, {}) + }; +}; + +export const orderedArmorFeatures = () => { + const homebrewFeatures = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).itemFeatures + .armorFeatures; + const allFeatures = { ...armorFeatures, ...homebrewFeatures }; + const all = Object.keys(allFeatures).map(key => { + const feature = allFeatures[key]; + return { + ...feature, + id: key, + label: feature.label ?? feature.name + }; + }); + return Object.values(all).sort((a, b) => game.i18n.localize(a.label).localeCompare(game.i18n.localize(b.label))); +}; + export const weaponFeatures = { barrier: { label: 'DAGGERHEART.CONFIG.WeaponFeature.barrier.name', @@ -865,6 +893,9 @@ export const weaponFeatures = { name: 'DAGGERHEART.CONFIG.WeaponFeature.greedy.name', description: 'DAGGERHEART.CONFIG.WeaponFeature.greedy.description', img: 'icons/commodities/currency/coins-crown-stack-gold.webp', + target: { + type: 'self' + }, // Should cost handful of gold, effects: [ { @@ -1380,6 +1411,34 @@ export const weaponFeatures = { } }; +export const allWeaponFeatures = () => { + const homebrewFeatures = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).itemFeatures + .weaponFeatures; + return { + ...weaponFeatures, + ...Object.keys(homebrewFeatures).reduce((acc, key) => { + const feature = homebrewFeatures[key]; + acc[key] = { ...feature, label: feature.name }; + return acc; + }, {}) + }; +}; + +export const orderedWeaponFeatures = () => { + const homebrewFeatures = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).itemFeatures + .weaponFeatures; + const allFeatures = { ...weaponFeatures, ...homebrewFeatures }; + const all = Object.keys(allFeatures).map(key => { + const feature = allFeatures[key]; + return { + ...feature, + id: key, + label: feature.label ?? feature.name + }; + }); + return Object.values(all).sort((a, b) => game.i18n.localize(a.label).localeCompare(game.i18n.localize(b.label))); +}; + export const featureTypes = { ancestry: { id: 'ancestry', diff --git a/module/config/settingsConfig.mjs b/module/config/settingsConfig.mjs index 76234a97..aea9bc48 100644 --- a/module/config/settingsConfig.mjs +++ b/module/config/settingsConfig.mjs @@ -27,5 +27,25 @@ export const gameSettings = { }, LevelTiers: 'LevelTiers', Countdowns: 'Countdowns', - LastMigrationVersion: 'LastMigrationVersion' + LastMigrationVersion: 'LastMigrationVersion', + TagTeamRoll: 'TagTeamRoll' +}; + +export const actionAutomationChoices = { + never: { + id: 'never', + label: 'Never' + }, + showDialog: { + id: 'showDialog', + label: 'Show Dialog only' + }, + // npcOnly: { + // id: "npcOnly", + // label: "Always for non-characters" + // }, + always: { + id: 'always', + label: 'Always' + } }; diff --git a/module/data/_module.mjs b/module/data/_module.mjs index cac02a4a..2749bfce 100644 --- a/module/data/_module.mjs +++ b/module/data/_module.mjs @@ -1,5 +1,6 @@ export { default as DhCombat } from './combat.mjs'; export { default as DhCombatant } from './combatant.mjs'; +export { default as DhTagTeamRoll } from './tagTeamRoll.mjs'; export * as actions from './action/_module.mjs'; export * as activeEffects from './activeEffect/_module.mjs'; @@ -7,3 +8,4 @@ export * as actors from './actor/_module.mjs'; export * as chatMessages from './chat-message/_modules.mjs'; export * as fields from './fields/_module.mjs'; export * as items from './item/_module.mjs'; +export * as scenes from './scene/_module.mjs'; diff --git a/module/data/action/baseAction.mjs b/module/data/action/baseAction.mjs index 2f5935da..8cadd4f8 100644 --- a/module/data/action/baseAction.mjs +++ b/module/data/action/baseAction.mjs @@ -1,14 +1,9 @@ import DhpActor from '../../documents/actor.mjs'; import D20RollDialog from '../../applications/dialogs/d20RollDialog.mjs'; import { ActionMixin } from '../fields/actionField.mjs'; -import { abilities } from '../../config/actorConfig.mjs'; const fields = foundry.data.fields; -/* - !!! I'm currently refactoring the whole Action thing, it's a WIP !!! -*/ - /* ToDo - Target Check / Target Picker @@ -20,6 +15,7 @@ const fields = foundry.data.fields; export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel) { static extraSchemas = ['cost', 'uses', 'range']; + /** @inheritDoc */ static defineSchema() { const schemaFields = { _id: new fields.DocumentIdField({ initial: () => foundry.utils.randomID() }), @@ -32,36 +28,82 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel actionType: new fields.StringField({ choices: CONFIG.DH.ITEM.actionTypes, initial: 'action', - nullable: true + nullable: false, + required: true }) }; this.extraSchemas.forEach(s => { - let clsField; - if ((clsField = this.getActionField(s))) schemaFields[s] = new clsField(); + let clsField = this.getActionField(s); + if (clsField) schemaFields[s] = new clsField(); }); return schemaFields; } + /** + * Create a Map containing each Action step based on fields define in schema. Ordered by Fields order property. + * + * Each step can be called individually as long as needed config is provided. + * Ex: .workflow.get("damage").execute(config) + * @returns {Map} + */ + defineWorkflow() { + const workflow = new Map(); + this.constructor.extraSchemas.forEach(s => { + let clsField = this.constructor.getActionField(s); + if (clsField?.execute) { + workflow.set(s, { order: clsField.order, execute: clsField.execute.bind(this) }); + if (s === 'damage') + workflow.set('applyDamage', { order: 75, execute: clsField.applyDamage.bind(this) }); + } + }); + return new Map([...workflow.entries()].sort(([aKey, aValue], [bKey, bValue]) => aValue.order - bValue.order)); + } + + /** + * Getter returning the workflow property or creating it the first time the property is called + */ + get workflow() { + if (this.hasOwnProperty('_workflow')) return this._workflow; + const workflow = Object.freeze(this.defineWorkflow()); + Object.defineProperty(this, '_workflow', { value: workflow, writable: false }); + return workflow; + } + + /** + * Get the Field class from ActionFields global config + * @param {string} name Field short name, equal to Action property + * @returns Action Field + */ static getActionField(name) { const field = game.system.api.fields.ActionFields[`${name.capitalize()}Field`]; return fields.DataField.isPrototypeOf(field) && field; } + /** @inheritDoc */ prepareData() { this.name = this.name || game.i18n.localize(CONFIG.DH.ACTIONS.actionTypes[this.type].name); this.img = this.img ?? this.parent?.parent?.img; } + /** + * Get Action ID + */ get id() { return this._id; } + /** + * Return Item the action is attached too. + */ get item() { return this.parent.parent; } + /** + * Return the first Actor parent found. + */ get actor() { return this.item instanceof DhpActor ? this.item @@ -74,6 +116,11 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel return 'trait'; } + /** + * Prepare base data based on Action Type & Parent Type + * @param {object} parent + * @returns {object} + */ static getSourceConfig(parent) { const updateSource = {}; if (parent?.parent?.type === 'weapon' && this === game.system.api.models.actions.actionsTypes.attack) { @@ -96,6 +143,11 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel return updateSource; } + /** + * Obtain a data object used to evaluate any dice rolls associated with this particular Action + * @param {object} [data ={}] Optional data object from previous configuration/rolls + * @returns {object} + */ getRollData(data = {}) { if (!this.actor) return null; const actorData = this.actor.getRollData(false); @@ -111,19 +163,30 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel return actorData; } - async use(event, options = {}) { + /** + * Execute each part of the Action workflow in order, calling a specific event before and after each part. + * @param {object} config Config object usually created from prepareConfig method + */ + async executeWorkflow(config) { + for (const [key, part] of this.workflow) { + if (Hooks.call(`${CONFIG.DH.id}.pre${key.capitalize()}Action`, this, config) === false) return; + if ((await part.execute(config)) === false) return; + if (Hooks.call(`${CONFIG.DH.id}.post${key.capitalize()}Action`, this, config) === false) return; + } + } + + /** + * Main method to use the Action + * @param {Event} event Event from the button used to trigger the Action + * @returns {object} + */ + async use(event) { if (!this.actor) throw new Error("An Action can't be used outside of an Actor context."); if (this.chatDisplay) await this.toChat(); - let { byPassRoll } = options, - config = this.prepareConfig(event, byPassRoll); - for (let i = 0; i < this.constructor.extraSchemas.length; i++) { - let clsField = this.constructor.getActionField(this.constructor.extraSchemas[i]); - if (clsField?.prepareConfig) { - const keep = clsField.prepareConfig.call(this, config); - if (config.isFastForward && !keep) return; - } - } + + let config = this.prepareConfig(event); + if (!config) return; if (Hooks.call(`${CONFIG.DH.id}.preUseAction`, this, config) === false) return; @@ -133,273 +196,116 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel if (!config) return; } - if (config.hasRoll) { - const rollConfig = this.prepareRoll(config); - config.roll = rollConfig; - config = await this.actor.diceRoll(config); - if (!config) return; - } - - if (this.doFollowUp(config)) { - if (this.rollDamage && this.damage.parts.length) await this.rollDamage(event, config); - else if (this.trigger) await this.trigger(event, config); - else if (this.hasSave || this.hasEffect) { - const roll = new CONFIG.Dice.daggerheart.DHRoll(''); - roll._evaluated = true; - await CONFIG.Dice.daggerheart.DHRoll.toMessage(roll, config); - } - } - - // Consume resources - await this.consume(config); + // Execute the Action Worflow in order based of schema fields + await this.executeWorkflow(config); if (Hooks.call(`${CONFIG.DH.id}.postUseAction`, this, config) === false) return; return config; } - /* */ - prepareConfig(event, byPass = false) { - const hasRoll = this.getUseHasRoll(byPass); - return { + /** + * Create the basic config common to every action type + * @param {Event} event Event from the button used to trigger the Action + * @returns {object} + */ + prepareBaseConfig(event) { + const config = { event, - title: `${this.item.name}: ${game.i18n.localize(this.name)}`, + title: `${this.item instanceof CONFIG.Actor.documentClass ? '' : `${this.item.name}: `}${game.i18n.localize(this.name)}`, source: { item: this.item._id, action: this._id, actor: this.actor.uuid }, - dialog: { - configure: hasRoll - }, - type: this.roll?.type ?? this.type, - hasRoll: hasRoll, - hasDamage: this.damage?.parts?.length && this.type !== 'healing', - hasHealing: this.damage?.parts?.length && this.type === 'healing', - hasEffect: !!this.effects?.length, + dialog: {}, + actionType: this.actionType, + hasRoll: this.hasRoll, + hasDamage: this.hasDamage, + hasHealing: this.hasHealing, + hasEffect: this.hasEffect, hasSave: this.hasSave, + isDirect: !!this.damage?.direct, selectedRollMode: game.settings.get('core', 'rollMode'), - isFastForward: event.shiftKey, data: this.getRollData(), - evaluate: hasRoll + evaluate: this.hasRoll }; + DHBaseAction.applyKeybindings(config); + return config; } + /** + * Create the config for that action used for its workflow + * @param {Event} event Event from the button used to trigger the Action + * @returns {object} + */ + prepareConfig(event) { + const config = this.prepareBaseConfig(event); + for (const clsField of Object.values(this.schema.fields)) { + if (clsField?.prepareConfig) if (clsField.prepareConfig.call(this, config) === false) return false; + } + return config; + } + + /** + * Method used to know if a configuration dialog must be shown or not when there is no roll. + * @param {*} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + * @returns {boolean} + */ requireConfigurationDialog(config) { return !config.event.shiftKey && !config.hasRoll && (config.costs?.length || config.uses); } - prepareRoll() { - const roll = { - baseModifiers: this.roll.getModifier(), - label: 'Attack', - type: this.actionType, - difficulty: this.roll?.difficulty, - formula: this.roll.getFormula(), - advantage: CONFIG.DH.ACTIONS.advantageState[this.roll.advState].value - }; - if (this.roll?.type === 'diceSet' || !this.hasRoll) roll.lite = true; - - return roll; - } - - doFollowUp(config) { - return !config.hasRoll; - } - + /** + * Consume Action configured resources & uses. + * That method is only used when we want those resources to be consumed outside of the use method workflow. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + * @param {boolean} successCost + */ async consume(config, successCost = false) { - const actor = this.actor.system.partner ?? this.actor, - usefulResources = { - ...foundry.utils.deepClone(actor.system.resources), - fear: { - value: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear), - max: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxFear, - reversed: false - } - }; + await this.workflow.get('cost')?.execute(config, successCost); + await this.workflow.get('uses')?.execute(config, successCost); - for (var cost of config.costs) { - if (cost.keyIsID) { - usefulResources[cost.key] = { - value: cost.value, - target: this.parent.parent, - keyIsID: true - }; - } - } - - const resources = game.system.api.fields.ActionFields.CostField.getRealCosts(config.costs) - .filter( - c => - (!successCost && (!c.consumeOnSuccess || config.roll?.success)) || - (successCost && c.consumeOnSuccess) - ) - .reduce((a, c) => { - const resource = usefulResources[c.key]; - if (resource) { - a.push({ - key: c.key, - value: (c.total ?? c.value) * (resource.isReversed ? 1 : -1), - target: resource.target, - keyIsID: resource.keyIsID - }); - return a; - } - }, []); - - await actor.modifyResource(resources); - if ( - config.uses?.enabled && - ((!successCost && (!config.uses?.consumeOnSuccess || config.roll?.success)) || - (successCost && config.uses?.consumeOnSuccess)) - ) - this.update({ 'uses.value': this.uses.value + 1 }); - - if (config.roll?.success || successCost) { + if (config.roll && !config.roll.success && successCost) { setTimeout(() => { (config.message ?? config.parent).update({ 'system.successConsumed': true }); }, 50); } } - /* */ - /* ROLL */ - getUseHasRoll(byPass = false) { - return this.hasRoll && !byPass; + /** + * Set if a configuration dialog must be shown or not if a special keyboard key is pressed. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + */ + static applyKeybindings(config) { + config.dialog.configure ??= !(config.event.shiftKey || config.event.altKey || config.event.ctrlKey); } + /** + * Getters to know which parts the action is composed of. A field can exist but configured to not be used. + * @returns {boolean} If that part is in the action. + */ + get hasRoll() { return !!this.roll?.type; } - get modifiers() { - if (!this.actor) return []; - const modifiers = []; - /** Placeholder for specific bonuses **/ - return modifiers; + get hasDamage() { + return this.damage?.parts?.length && this.type !== 'healing'; + } + + get hasHealing() { + return this.damage?.parts?.length && this.type === 'healing'; } - /* ROLL */ - /* SAVE */ get hasSave() { return !!this.save?.trait; } - /* SAVE */ - /* EFFECTS */ get hasEffect() { return this.effects?.length > 0; } - 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 => { - if (!token.hit && !force) return; - if (this.hasSave && token.saved.success === true) { - effects = this.effects.filter(e => e.onSave === true); - } - if (!effects.length) return; - effects.forEach(async e => { - const actor = canvas.tokens.get(token.id)?.actor, - effect = this.item.effects.get(e._id); - if (!actor || !effect) return; - await this.applyEffect(effect, actor); - }); - }); - } - - async applyEffect(effect, actor) { - const existingEffect = actor.effects.find(e => e.origin === effect.uuid); - if (existingEffect) { - return effect.update( - foundry.utils.mergeObject({ - ...effect.constructor.getInitialDuration(), - disabled: false - }) - ); - } - - // Otherwise, create a new effect on the target - const effectData = foundry.utils.mergeObject({ - ...effect.toObject(), - disabled: false, - transfer: false, - origin: effect.uuid - }); - await ActiveEffect.implementation.create(effectData, { parent: actor }); - } - /* EFFECTS */ - - /* SAVE */ - async rollSave(actor, event, message) { - if (!actor) return; - const title = actor.isNPC - ? game.i18n.localize('DAGGERHEART.GENERAL.reactionRoll') - : game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', { - ability: game.i18n.localize(abilities[this.save.trait]?.label) - }); - return actor.diceRoll({ - event, - title, - roll: { - trait: this.save.trait, - difficulty: this.save.difficulty ?? this.actor?.baseSaveDifficulty, - type: 'reaction' - }, - type: 'trait', - hasRoll: true, - data: actor.getRollData() - }); - } - - updateSaveMessage(result, message, targetId) { - if (!result) return; - 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) { - setTimeout(async () => { - const chatMessage = ui.chat.collection.get(message._id); - - await chatMessage.update({ - flags: { - [game.system.id]: { - reactionRolls: { - [targetId]: changes - } - } - } - }); - }, 100); - 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); - relatedChatMessages.forEach(c => { - this.updateChatMessage(c, targetId, changes, false); - }); - } - } - /** * Generates a list of localized tags for this action. * @returns {string[]} An array of localized tag strings. diff --git a/module/data/action/beastformAction.mjs b/module/data/action/beastformAction.mjs index 8c2dd31e..657cfde2 100644 --- a/module/data/action/beastformAction.mjs +++ b/module/data/action/beastformAction.mjs @@ -1,10 +1,9 @@ -import BeastformDialog from '../../applications/dialogs/beastformDialog.mjs'; import DHBaseAction from './baseAction.mjs'; export default class DhBeastformAction extends DHBaseAction { static extraSchemas = [...super.extraSchemas, 'beastform']; - async use(event, options) { + /* async use(event, options) { const beastformConfig = this.prepareBeastformConfig(); const abort = await this.handleActiveTransformations(); @@ -82,5 +81,5 @@ export default class DhBeastformAction extends DHBaseAction { beastformEffects.map(x => x.id) ); return existingEffects; - } + } */ } diff --git a/module/data/action/damageAction.mjs b/module/data/action/damageAction.mjs index 7deeb006..b4b3e17c 100644 --- a/module/data/action/damageAction.mjs +++ b/module/data/action/damageAction.mjs @@ -1,65 +1,5 @@ -import { setsEqual } from '../../helpers/utils.mjs'; import DHBaseAction from './baseAction.mjs'; export default class DHDamageAction extends DHBaseAction { static extraSchemas = [...super.extraSchemas, 'damage', 'target', 'effects']; - - getFormulaValue(part, data) { - let formulaValue = part.value; - - if (data.hasRoll && part.resultBased && data.roll.result.duality === -1) return part.valueAlt; - - const isAdversary = this.actor.type === 'adversary'; - if (isAdversary && this.actor.system.type === CONFIG.DH.ACTOR.adversaryTypes.horde.id) { - const hasHordeDamage = this.actor.effects.find(x => x.type === 'horde'); - if (hasHordeDamage && !hasHordeDamage.disabled) return part.valueAlt; - } - - return formulaValue; - } - - formatFormulas(formulas, systemData) { - const formattedFormulas = []; - formulas.forEach(formula => { - if (isNaN(formula.formula)) - formula.formula = Roll.replaceFormulaData(formula.formula, this.getRollData(systemData)); - const same = formattedFormulas.find( - f => setsEqual(f.damageTypes, formula.damageTypes) && f.applyTo === formula.applyTo - ); - if (same) same.formula += ` + ${formula.formula}`; - else formattedFormulas.push(formula); - }); - return formattedFormulas; - } - - async rollDamage(event, data) { - const systemData = data.system ?? data; - - let formulas = this.damage.parts.map(p => ({ - formula: this.getFormulaValue(p, systemData).getFormula(this.actor), - damageTypes: p.applyTo === 'hitPoints' && !p.type.size ? new Set(['physical']) : p.type, - applyTo: p.applyTo - })); - - if (!formulas.length) return; - - formulas = this.formatFormulas(formulas, systemData); - - delete systemData.evaluate; - const config = { - ...systemData, - roll: formulas, - dialog: {}, - data: this.getRollData() - }; - if (this.hasSave) config.onSave = this.save.damageMod; - if (data.system) { - config.source.message = data._id; - config.directDamage = false; - } else { - config.directDamage = true; - } - - return CONFIG.Dice.daggerheart.DamageRoll.build(config); - } } diff --git a/module/data/action/macroAction.mjs b/module/data/action/macroAction.mjs index 58b8eba5..b8338cd8 100644 --- a/module/data/action/macroAction.mjs +++ b/module/data/action/macroAction.mjs @@ -2,15 +2,4 @@ import DHBaseAction from './baseAction.mjs'; export default class DHMacroAction extends DHBaseAction { static extraSchemas = [...super.extraSchemas, 'macro']; - - async trigger(event, ...args) { - const fixUUID = !this.macro.includes('Macro.') ? `Macro.${this.macro}` : this.macro, - macro = await fromUuid(fixUUID); - try { - if (!macro) throw new Error(`No macro found for the UUID: ${this.macro}.`); - macro.execute(); - } catch (error) { - ui.notifications.error(error); - } - } } diff --git a/module/data/activeEffect/baseEffect.mjs b/module/data/activeEffect/baseEffect.mjs index 0ac87de0..770e3462 100644 --- a/module/data/activeEffect/baseEffect.mjs +++ b/module/data/activeEffect/baseEffect.mjs @@ -30,4 +30,24 @@ export default class BaseEffect extends foundry.abstract.TypeDataModel { }) }; } + + static getDefaultObject() { + return { + name: 'New Effect', + id: foundry.utils.randomID(), + disabled: false, + img: 'icons/magic/life/heart-cross-blue.webp', + description: '', + statuses: [], + changes: [], + system: { + rangeDependence: { + enabled: false, + type: CONFIG.DH.GENERAL.rangeInclusion.withinRange.id, + target: CONFIG.DH.GENERAL.otherTargetTypes.hostile.id, + range: CONFIG.DH.GENERAL.range.melee.id + } + } + }; + } } diff --git a/module/data/actor/_module.mjs b/module/data/actor/_module.mjs index c19036eb..99577620 100644 --- a/module/data/actor/_module.mjs +++ b/module/data/actor/_module.mjs @@ -2,12 +2,14 @@ import DhCharacter from './character.mjs'; import DhCompanion from './companion.mjs'; import DhAdversary from './adversary.mjs'; import DhEnvironment from './environment.mjs'; +import DhParty from './party.mjs'; -export { DhCharacter, DhCompanion, DhAdversary, DhEnvironment }; +export { DhCharacter, DhCompanion, DhAdversary, DhEnvironment, DhParty }; export const config = { character: DhCharacter, companion: DhCompanion, adversary: DhAdversary, - environment: DhEnvironment + environment: DhEnvironment, + party: DhParty }; diff --git a/module/data/actor/adversary.mjs b/module/data/actor/adversary.mjs index a4dfddf5..0e74e0c8 100644 --- a/module/data/actor/adversary.mjs +++ b/module/data/actor/adversary.mjs @@ -10,7 +10,8 @@ export default class DhpAdversary extends BaseDataActor { return foundry.utils.mergeObject(super.metadata, { label: 'TYPES.Actor.adversary', type: 'adversary', - settingSheet: DHAdversarySettings + settingSheet: DHAdversarySettings, + hasAttribution: true }); } @@ -26,7 +27,7 @@ export default class DhpAdversary extends BaseDataActor { }), type: new fields.StringField({ required: true, - choices: CONFIG.DH.ACTOR.adversaryTypes, + choices: CONFIG.DH.ACTOR.allAdversaryTypes, initial: CONFIG.DH.ACTOR.adversaryTypes.standard.id }), motivesAndTactics: new fields.StringField(), @@ -169,4 +170,13 @@ export default class DhpAdversary extends BaseDataActor { } } } + + _getTags() { + const tags = [ + game.i18n.localize(`DAGGERHEART.GENERAL.Tiers.${this.tier}`), + `${game.i18n.localize(`DAGGERHEART.CONFIG.AdversaryType.${this.type}.label`)}`, + `${game.i18n.localize('DAGGERHEART.GENERAL.difficulty')}: ${this.difficulty}` + ]; + return tags; + } } diff --git a/module/data/actor/base.mjs b/module/data/actor/base.mjs index 0e9dd2d8..772a5af3 100644 --- a/module/data/actor/base.mjs +++ b/module/data/actor/base.mjs @@ -1,5 +1,5 @@ import DHBaseActorSettings from '../../applications/sheets/api/actor-setting.mjs'; -import { createScrollText, getScrollTextData } from '../../helpers/utils.mjs'; +import { getScrollTextData } from '../../helpers/utils.mjs'; const resistanceField = (resistanceLabel, immunityLabel, reductionLabel) => new foundry.data.fields.SchemaField({ @@ -39,7 +39,9 @@ export default class BaseDataActor extends foundry.abstract.TypeDataModel { type: 'base', isNPC: true, settingSheet: null, - hasResistances: true + hasResistances: true, + hasAttribution: false, + hasLimitedView: true }; } @@ -53,6 +55,13 @@ export default class BaseDataActor extends foundry.abstract.TypeDataModel { const fields = foundry.data.fields; const schema = {}; + if (this.metadata.hasAttribution) { + schema.attribution = new fields.SchemaField({ + source: new fields.StringField(), + page: new fields.NumberField(), + artist: new fields.StringField() + }); + } if (this.metadata.isNPC) schema.description = new fields.HTMLField({ required: true, nullable: true }); if (this.metadata.hasResistances) schema.resistance = new fields.SchemaField({ @@ -78,6 +87,13 @@ export default class BaseDataActor extends foundry.abstract.TypeDataModel { */ static DEFAULT_ICON = null; + get attributionLabel() { + if (!this.attribution) return; + + const { source, page } = this.attribution; + return [source, page ? `pg ${page}.` : null].filter(x => x).join('. '); + } + /* -------------------------------------------- */ /** @@ -138,6 +154,6 @@ export default class BaseDataActor extends foundry.abstract.TypeDataModel { _onUpdate(changes, options, userId) { super._onUpdate(changes, options, userId); - createScrollText(this.parent, options.scrollingTextData); + if (options.scrollingTextData) this.parent.queueScrollText(options.scrollingTextData); } } diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index ddcc5bf5..1cf082f7 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -673,4 +673,8 @@ export default class DhCharacter extends BaseDataActor { this.companion.updateLevel(1); } } + + _getTags() { + return [this.class.value?.name, this.class.subclass?.name, this.community?.name, this.ancestry?.name].filter((t) => !!t); + } } diff --git a/module/data/actor/environment.mjs b/module/data/actor/environment.mjs index adb7dabc..ce1df7cd 100644 --- a/module/data/actor/environment.mjs +++ b/module/data/actor/environment.mjs @@ -12,7 +12,8 @@ export default class DhEnvironment extends BaseDataActor { label: 'TYPES.Actor.environment', type: 'environment', settingSheet: DHEnvironmentSettings, - hasResistances: false + hasResistances: false, + hasAttribution: true }); } diff --git a/module/data/actor/party.mjs b/module/data/actor/party.mjs new file mode 100644 index 00000000..93fb3cde --- /dev/null +++ b/module/data/actor/party.mjs @@ -0,0 +1,48 @@ +import BaseDataActor from './base.mjs'; +import ForeignDocumentUUIDArrayField from '../fields/foreignDocumentUUIDArrayField.mjs'; + +export default class DhParty extends BaseDataActor { + /**@inheritdoc */ + static defineSchema() { + const fields = foundry.data.fields; + return { + ...super.defineSchema(), + partyMembers: new ForeignDocumentUUIDArrayField({ type: 'Actor' }), + notes: new fields.HTMLField(), + gold: new fields.SchemaField({ + coins: new fields.NumberField({ initial: 0, integer: true }), + handfuls: new fields.NumberField({ initial: 1, integer: true }), + bags: new fields.NumberField({ initial: 0, integer: true }), + chests: new fields.NumberField({ initial: 0, integer: true }) + }) + }; + } + + /* -------------------------------------------- */ + + /**@inheritdoc */ + static DEFAULT_ICON = 'systems/daggerheart/assets/icons/documents/actors/dark-squad.svg'; + + /* -------------------------------------------- */ + + prepareBaseData() { + super.prepareBaseData(); + this.partyMembers = this.partyMembers.filter(p => !!p); + + // Register this party to all members + if (game.actors.get(this.parent.id) === this.parent) { + for (const member of this.partyMembers) { + member.parties?.add(this.parent); + } + } + } + + _onDelete(options, userId) { + super._onDelete(options, userId); + + // Clear this party from all members that aren't deleted + for (const member of this.partyMembers) { + member.parties?.delete(this.parent); + } + } +} diff --git a/module/data/chat-message/_modules.mjs b/module/data/chat-message/_modules.mjs index a4e2c1fd..ec095aac 100644 --- a/module/data/chat-message/_modules.mjs +++ b/module/data/chat-message/_modules.mjs @@ -1,9 +1,13 @@ -import DHAbilityUse from "./abilityUse.mjs"; -import DHActorRoll from "./adversaryRoll.mjs"; +import DHAbilityUse from './abilityUse.mjs'; +import DHActorRoll from './actorRoll.mjs'; +import DHGroupRoll from './groupRoll.mjs'; +import DHSystemMessage from './systemMessage.mjs'; export const config = { - abilityUse: DHAbilityUse, - adversaryRoll: DHActorRoll, - damageRoll: DHActorRoll, - dualityRoll: DHActorRoll + abilityUse: DHAbilityUse, + adversaryRoll: DHActorRoll, + damageRoll: DHActorRoll, + dualityRoll: DHActorRoll, + groupRoll: DHGroupRoll, + systemMessage: DHSystemMessage }; diff --git a/module/data/chat-message/adversaryRoll.mjs b/module/data/chat-message/actorRoll.mjs similarity index 90% rename from module/data/chat-message/adversaryRoll.mjs rename to module/data/chat-message/actorRoll.mjs index de203a6e..a2cb03f9 100644 --- a/module/data/chat-message/adversaryRoll.mjs +++ b/module/data/chat-message/actorRoll.mjs @@ -29,6 +29,7 @@ export default class DHActorRoll extends foundry.abstract.TypeDataModel { hasEffect: new fields.BooleanField({ initial: false }), hasSave: new fields.BooleanField({ initial: false }), hasTarget: new fields.BooleanField({ initial: false }), + isDirect: new fields.BooleanField({ initial: false }), isCritical: new fields.BooleanField({ initial: false }), onSave: new fields.StringField(), source: new fields.SchemaField({ @@ -54,9 +55,12 @@ export default class DHActorRoll extends foundry.abstract.TypeDataModel { } get action() { - const actionItem = this.actionItem; - if (!actionItem || !this.source.action) return null; - return actionItem.system.actionsList?.find(a => a.id === this.source.action); + const actionActor = this.actionActor, + actionItem = this.actionItem; + if (!this.source.action) return null; + if (actionItem) return actionItem.system.actionsList?.find(a => a.id === this.source.action); + else if (actionActor?.system.attack?._id === this.source.action) return actionActor.system.attack; + return null; } get targetMode() { @@ -94,7 +98,7 @@ export default class DHActorRoll extends foundry.abstract.TypeDataModel { } registerTargetHook() { - if (!this.parent.isAuthor) return; + if (!this.parent.isAuthor || !this.hasTarget) return; if (this.targetMode && this.parent.targetHook !== null) { Hooks.off('targetToken', this.parent.targetHook); return (this.parent.targetHook = null); @@ -126,7 +130,7 @@ export default class DHActorRoll extends foundry.abstract.TypeDataModel { } this.canViewSecret = this.parent.speakerActor?.testUserPermission(game.user, 'OBSERVER'); - this.canButtonApply = game.user.isGM; //temp + this.canButtonApply = game.user.isGM; //temp this.isGM = game.user.isGM; //temp } diff --git a/module/data/chat-message/groupRoll.mjs b/module/data/chat-message/groupRoll.mjs new file mode 100644 index 00000000..a5308323 --- /dev/null +++ b/module/data/chat-message/groupRoll.mjs @@ -0,0 +1,39 @@ +import { abilities } from '../../config/actorConfig.mjs'; + +export default class DHGroupRoll extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields; + + return { + leader: new fields.EmbeddedDataField(GroupRollMemberField), + members: new fields.ArrayField(new fields.EmbeddedDataField(GroupRollMemberField)) + }; + } + + get totalModifier() { + return this.members.reduce((acc, m) => { + if (m.manualSuccess === null) return acc; + + return acc + (m.manualSuccess ? 1 : -1); + }, 0); + } +} + +class GroupRollMemberField extends foundry.abstract.DataModel { + static defineSchema() { + const fields = foundry.data.fields; + + return { + actor: new fields.ObjectField(), + trait: new fields.StringField({ choices: abilities }), + difficulty: new fields.StringField(), + result: new fields.ObjectField({ nullable: true, initial: null }), + manualSuccess: new fields.BooleanField({ nullable: true, initial: null }) + }; + } + + /* Can be expanded if we handle automation of success/failure */ + get success() { + return manualSuccess; + } +} diff --git a/module/data/chat-message/systemMessage.mjs b/module/data/chat-message/systemMessage.mjs new file mode 100644 index 00000000..cd2a06a1 --- /dev/null +++ b/module/data/chat-message/systemMessage.mjs @@ -0,0 +1,9 @@ +export default class DHSystemMessage extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields; + + return { + useTitle: new fields.BooleanField({ initial: true }) + }; + } +} diff --git a/module/data/combatant.mjs b/module/data/combatant.mjs index bb54c798..6deade9f 100644 --- a/module/data/combatant.mjs +++ b/module/data/combatant.mjs @@ -3,7 +3,8 @@ export default class DhCombatant extends foundry.abstract.TypeDataModel { const fields = foundry.data.fields; return { spotlight: new fields.SchemaField({ - requesting: new fields.BooleanField({ required: true, initial: false }) + requesting: new fields.BooleanField({ required: true, initial: false }), + requestOrderIndex: new fields.NumberField({ required: true, integer: true, initial: 0 }) }), actionTokens: new fields.NumberField({ required: true, integer: true, initial: 3 }) }; diff --git a/module/data/countdowns.mjs b/module/data/countdowns.mjs index 62036c38..6db4cbeb 100644 --- a/module/data/countdowns.mjs +++ b/module/data/countdowns.mjs @@ -1,25 +1,28 @@ -import { RefreshType, socketEvent } from '../systemRegistration/socket.mjs'; - export default class DhCountdowns extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; return { + /* Outdated and unused. Needed for migration. Remove in next minor version. (1.3) */ narrative: new fields.EmbeddedDataField(DhCountdownData), - encounter: new fields.EmbeddedDataField(DhCountdownData) + encounter: new fields.EmbeddedDataField(DhCountdownData), + /**/ + countdowns: new fields.TypedObjectField(new fields.EmbeddedDataField(DhCountdown)), + defaultOwnership: new fields.NumberField({ + required: true, + choices: CONFIG.DH.GENERAL.basicOwnershiplevels, + initial: CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER + }) }; } - - static CountdownCategories = { narrative: 'narrative', combat: 'combat' }; } +/* Outdated and unused. Needed for migration. Remove in next minor version. (1.3) */ class DhCountdownData extends foundry.abstract.DataModel { - static LOCALIZATION_PREFIXES = ['DAGGERHEART.APPLICATIONS.Countdown']; // Nots ure why this won't work. Setting labels manually for now - static defineSchema() { const fields = foundry.data.fields; return { - countdowns: new fields.TypedObjectField(new fields.EmbeddedDataField(DhCountdown)), + countdowns: new fields.TypedObjectField(new fields.EmbeddedDataField(DhOldCountdown)), ownership: new fields.SchemaField({ default: new fields.NumberField({ required: true, @@ -56,7 +59,8 @@ class DhCountdownData extends foundry.abstract.DataModel { } } -class DhCountdown extends foundry.abstract.DataModel { +/* Outdated and unused. Needed for migration. Remove in next minor version. (1.3) */ +class DhOldCountdown extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; return { @@ -129,17 +133,88 @@ class DhCountdown extends foundry.abstract.DataModel { } } -export const registerCountdownHooks = () => { - Hooks.on(socketEvent.Refresh, ({ refreshType, application }) => { - if (refreshType === RefreshType.Countdown) { - if (application) { - foundry.applications.instances.get(application)?.render(); - } else { - foundry.applications.instances.get('narrative-countdowns')?.render(); - foundry.applications.instances.get('encounter-countdowns')?.render(); - } +export class DhCountdown extends foundry.abstract.DataModel { + static defineSchema() { + const fields = foundry.data.fields; + return { + type: new fields.StringField({ + required: true, + choices: CONFIG.DH.GENERAL.countdownBaseTypes, + label: 'DAGGERHEART.GENERAL.type' + }), + name: new fields.StringField({ + required: true, + label: 'DAGGERHEART.APPLICATIONS.Countdown.FIELDS.countdowns.element.name.label' + }), + img: new fields.FilePathField({ + categories: ['IMAGE'], + base64: false, + initial: 'icons/magic/time/hourglass-yellow-green.webp' + }), + ownership: new fields.TypedObjectField( + new fields.NumberField({ + required: true, + choices: CONFIG.DH.GENERAL.simpleOwnershiplevels, + initial: CONST.DOCUMENT_OWNERSHIP_LEVELS.INHERIT + }) + ), + progress: new fields.SchemaField({ + current: new fields.NumberField({ + required: true, + integer: true, + initial: 1, + label: 'DAGGERHEART.APPLICATIONS.Countdown.FIELDS.countdowns.element.progress.current.label' + }), + max: new fields.NumberField({ + required: true, + integer: true, + initial: 1, + label: 'DAGGERHEART.APPLICATIONS.Countdown.FIELDS.countdowns.element.progress.max.label' + }), + type: new fields.StringField({ + required: true, + choices: CONFIG.DH.GENERAL.countdownTypes, + initial: CONFIG.DH.GENERAL.countdownTypes.custom.id, + label: 'DAGGERHEART.APPLICATIONS.Countdown.FIELDS.countdowns.element.type.label' + }) + }) + }; + } - return false; - } - }); -}; + static defaultCountdown(type, playerHidden) { + const ownership = playerHidden + ? game.users.reduce((acc, user) => { + if (!user.isGM) { + acc[user.id] = CONST.DOCUMENT_OWNERSHIP_LEVELS.NONE; + } + return acc; + }, {}) + : undefined; + + return { + type: type ?? CONFIG.DH.GENERAL.countdownBaseTypes.narrative.id, + name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Countdown.newCountdown'), + img: 'icons/magic/time/hourglass-yellow-green.webp', + ownership: ownership, + progress: { + current: 1, + max: 1 + } + }; + } + + get playerOwnership() { + return Array.from(game.users).reduce((acc, user) => { + acc[user.id] = { + value: user.isGM + ? CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER + : this.ownership.players[user.id] && this.ownership.players[user.id].type !== -1 + ? this.ownership.players[user.id].type + : this.ownership.default, + isGM: user.isGM + }; + + return acc; + }, {}); + } +} diff --git a/module/data/fields/action/_module.mjs b/module/data/fields/action/_module.mjs index e6caa963..7a33e147 100644 --- a/module/data/fields/action/_module.mjs +++ b/module/data/fields/action/_module.mjs @@ -6,6 +6,5 @@ export { default as EffectsField } from './effectsField.mjs'; export { default as SaveField } from './saveField.mjs'; export { default as BeastformField } from './beastformField.mjs'; export { default as DamageField } from './damageField.mjs'; -export { default as HealingField } from './healingField.mjs'; export { default as RollField } from './rollField.mjs'; export { default as MacroField } from './macroField.mjs'; diff --git a/module/data/fields/action/beastformField.mjs b/module/data/fields/action/beastformField.mjs index 832bd9f6..cefbcc21 100644 --- a/module/data/fields/action/beastformField.mjs +++ b/module/data/fields/action/beastformField.mjs @@ -1,6 +1,13 @@ +import BeastformDialog from '../../../applications/dialogs/beastformDialog.mjs'; + const fields = foundry.data.fields; export default class BeastformField extends fields.SchemaField { + /** + * Action Workflow order + */ + static order = 90; + constructor(options = {}, context = {}) { const beastformFields = { tierAccess: new fields.SchemaField({ @@ -27,4 +34,96 @@ export default class BeastformField extends fields.SchemaField { }; super(beastformFields, options, context); } + + /** + * Beastform Transformation Action Workflow part. + * Must be called within Action context or similar. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + */ + static async execute(config) { + // Should not be useful anymore here + await BeastformField.handleActiveTransformations.call(this); + + const { selected, evolved, hybrid } = await BeastformDialog.configure(config, this.item); + if (!selected) return false; + + return await BeastformField.transform.call(this, selected, evolved, hybrid); + } + + /** + * Update Action Workflow config object. + * Must be called within Action context. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + */ + prepareConfig(config) { + if (this.actor.effects.find(x => x.type === 'beastform')) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.beastformAlreadyApplied')); + return false; + } + + const settingsTiers = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LevelTiers).tiers; + const actorLevel = this.actor.system.levelData.level.current; + const actorTier = + Object.values(settingsTiers).find( + tier => actorLevel >= tier.levels.start && actorLevel <= tier.levels.end + ) ?? 1; + + config.tierLimit = this.beastform.tierAccess.exact ?? actorTier; + } + + /** + * TODO by Harry + * @param {*} selectedForm + * @param {*} evolvedData + * @param {*} hybridData + * @returns + */ + static async transform(selectedForm, evolvedData, hybridData) { + const formData = evolvedData?.form ? evolvedData.form.toObject() : selectedForm; + const beastformEffect = formData.effects.find(x => x.type === 'beastform'); + if (!beastformEffect) { + ui.notifications.error('DAGGERHEART.UI.Notifications.beastformMissingEffect'); + return false; + } + + if (evolvedData?.form) { + const evolvedForm = selectedForm.effects.find(x => x.type === 'beastform'); + if (!evolvedForm) { + ui.notifications.error('DAGGERHEART.UI.Notifications.beastformMissingEffect'); + return false; + } + + beastformEffect.changes = [...beastformEffect.changes, ...evolvedForm.changes]; + formData.system.features = [...formData.system.features, ...selectedForm.system.features.map(x => x.uuid)]; + } + + if (selectedForm.system.beastformType === CONFIG.DH.ITEM.beastformTypes.hybrid.id) { + formData.system.advantageOn = Object.values(hybridData.advantages).reduce((advantages, formCategory) => { + Object.keys(formCategory).forEach(advantageKey => { + advantages[advantageKey] = formCategory[advantageKey]; + }); + return advantages; + }, {}); + formData.system.features = [ + ...formData.system.features, + ...Object.values(hybridData.features).flatMap(x => Object.keys(x)) + ]; + } + + this.actor.createEmbeddedDocuments('Item', [formData]); + } + + /** + * Remove existing beastform effect and return true if there was one + * @returns {boolean} + */ + static async handleActiveTransformations() { + const beastformEffects = this.actor.effects.filter(x => x.type === 'beastform'); + const existingEffects = beastformEffects.length > 0; + await this.actor.deleteEmbeddedDocuments( + 'ActiveEffect', + beastformEffects.map(x => x.id) + ); + return existingEffects; + } } diff --git a/module/data/fields/action/costField.mjs b/module/data/fields/action/costField.mjs index f4d942b1..656edee3 100644 --- a/module/data/fields/action/costField.mjs +++ b/module/data/fields/action/costField.mjs @@ -1,6 +1,12 @@ const fields = foundry.data.fields; export default class CostField extends fields.ArrayField { + /** + * Action Workflow order + */ + static order = 150; + + /** @inheritDoc */ constructor(options = {}, context = {}) { const element = new fields.SchemaField({ key: new fields.StringField({ @@ -8,7 +14,7 @@ export default class CostField extends fields.ArrayField { required: true, initial: 'hope' }), - keyIsID: new fields.BooleanField(), + itemId: new fields.StringField({ nullable: true, initial: null }), value: new fields.NumberField({ nullable: true, initial: 1, min: 0 }), scalable: new fields.BooleanField({ initial: false }), step: new fields.NumberField({ nullable: true, initial: null }), @@ -20,18 +26,88 @@ export default class CostField extends fields.ArrayField { super(element, options, context); } - static prepareConfig(config) { + /** + * Cost Consumption Action Workflow part. + * Consume configured action resources. + * Must be called within Action context or similar. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + * @param {boolean} [successCost=false] Consume only resources configured as "On Success only" if not already consumed. + */ + static async execute(config, successCost = false) { + const actor = this.actor.system.partner ?? this.actor, + usefulResources = { + ...foundry.utils.deepClone(actor.system.resources), + fear: { + value: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear), + max: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxFear, + reversed: false + } + }; + + if (this.parent?.parent) { + for (var cost of config.costs) { + if (cost.itemId) { + usefulResources[cost.key] = { + value: cost.value, + target: this.parent.parent, + itemId: cost.itemId + }; + } + } + } + + const resources = CostField.getRealCosts(config.costs) + .filter( + c => + (!successCost && (!c.consumeOnSuccess || config.roll?.success)) || + (successCost && c.consumeOnSuccess) + ) + .reduce((a, c) => { + const resource = usefulResources[c.key]; + if (resource) { + a.push({ + key: c.key, + value: (c.total ?? c.value) * (resource.isReversed ? 1 : -1), + target: resource.target, + itemId: resource.itemId + }); + return a; + } + }, []); + + await actor.modifyResource(resources); + } + + /** + * Update Action Workflow config object. + * Must be called within Action context or similar. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + * @returns {boolean} Return false if fast-forwarded and no more uses. + */ + prepareConfig(config) { const costs = this.cost?.length ? foundry.utils.deepClone(this.cost) : []; config.costs = CostField.calcCosts.call(this, costs); const hasCost = CostField.hasCost.call(this, config.costs); - if (config.isFastForward && !hasCost) - return ui.notifications.warn("You don't have the resources to use that action."); - return hasCost; + if (config.dialog.configure === false && !hasCost) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.insufficientResources')); + return hasCost; + } } + /** + * + * Must be called within Action context. + * @param {*} costs + * @returns + */ static calcCosts(costs) { const resources = CostField.getResources.call(this, costs); - return costs.map(c => { + let filteredCosts = costs; + if (this.parent?.metadata.isQuantifiable && this.parent.consumeOnUse === false) { + filteredCosts = filteredCosts.filter(c => c.key !== 'quantity'); + } + + return filteredCosts.map(c => { c.scale = c.scale ?? 0; c.step = c.step ?? 1; c.total = c.value + c.scale * c.step; @@ -40,13 +116,19 @@ export default class CostField extends fields.ArrayField { c.key === 'fear' ? game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear) : resources[c.key].isReversed - ? resources[c.key].max + ? resources[c.key].max - resources[c.key].value : resources[c.key].value; if (c.scalable) c.maxStep = Math.floor((c.max - c.value) / c.step); return c; }); } + /** + * Check if the current Actor currently has all needed resources. + * Must be called within Action context. + * @param {*} costs + * @returns {boolean} + */ static hasCost(costs) { const realCosts = CostField.getRealCosts.call(this, costs), hasFearCost = realCosts.findIndex(c => c.key === 'fear'); @@ -73,17 +155,20 @@ export default class CostField extends fields.ArrayField { ); } + /** + * Get all Actor resources + parent Item potential one. + * Must be called within Action context. + * @param {*} costs + * @returns + */ static getResources(costs) { const actorResources = foundry.utils.deepClone(this.actor.system.resources); if (this.actor.system.partner) actorResources.hope = foundry.utils.deepClone(this.actor.system.partner.system.resources.hope); const itemResources = {}; for (let itemResource of costs) { - if (itemResource.keyIsID) { - itemResources[itemResource.key] = { - value: this.parent.resource.value ?? 0, - max: CostField.formatMax.call(this, this.parent?.resource?.max) - }; + if (itemResource.itemId) { + itemResources[itemResource.key] = CostField.getItemIdCostResource.bind(this)(itemResource); } } @@ -93,8 +178,48 @@ export default class CostField extends fields.ArrayField { }; } + static getItemIdCostResource(itemResource) { + switch (itemResource.key) { + case CONFIG.DH.GENERAL.itemAbilityCosts.resource.id: + return { + value: this.parent.resource.value ?? 0, + max: CostField.formatMax.call(this, this.parent?.resource?.max) + }; + case CONFIG.DH.GENERAL.itemAbilityCosts.quantity.id: + return { + value: this.parent.quantity ?? 0, + max: this.parent.quantity ?? 0 + }; + default: + return { value: 0, max: 0 }; + } + } + + static getItemIdCostUpdate(r) { + switch (r.key) { + case CONFIG.DH.GENERAL.itemAbilityCosts.resource.id: + return { + path: 'system.resource.value', + value: r.target.system.resource.value + r.value + }; + case CONFIG.DH.GENERAL.itemAbilityCosts.quantity.id: + return { + path: 'system.quantity', + value: r.target.system.quantity + r.value + }; + default: + return { path: '', value: undefined }; + } + } + + /** + * + * @param {*} costs + * @returns + */ static getRealCosts(costs) { - const realCosts = costs?.length ? costs.filter(c => c.enabled) : []; + const cloneCosts = foundry.utils.deepClone(costs), + realCosts = cloneCosts?.length ? cloneCosts.filter(c => c.enabled) : []; let mergedCosts = []; realCosts.forEach(c => { const getCost = Object.values(mergedCosts).find(gc => gc.key === c.key); @@ -104,6 +229,12 @@ export default class CostField extends fields.ArrayField { return mergedCosts; } + /** + * Format scalable max cost, inject Action datas if it's a formula. + * Must be called within Action context. + * @param {number|string} max Configured maximum for that resource. + * @returns {number} The max cost value. + */ static formatMax(max) { max ??= 0; if (isNaN(max)) { diff --git a/module/data/fields/action/damageField.mjs b/module/data/fields/action/damageField.mjs index 810b6e76..c5fd19b9 100644 --- a/module/data/fields/action/damageField.mjs +++ b/module/data/fields/action/damageField.mjs @@ -1,18 +1,210 @@ import FormulaField from '../formulaField.mjs'; +import { setsEqual } from '../../../helpers/utils.mjs'; const fields = foundry.data.fields; export default class DamageField extends fields.SchemaField { + /** + * Action Workflow order + */ + static order = 20; + + /** @inheritDoc */ constructor(options, context = {}) { const damageFields = { parts: new fields.ArrayField(new fields.EmbeddedDataField(DHDamageData)), includeBase: new fields.BooleanField({ initial: false, label: 'DAGGERHEART.ACTIONS.Settings.includeBase.label' - }) + }), + direct: new fields.BooleanField({ initial: false, label: 'DAGGERHEART.CONFIG.DamageType.direct.name' }) }; super(damageFields, options, context); } + + /** + * Roll Damage/Healing Action Workflow part. + * Must be called within Action context or similar. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + * @param {string} [messageId=null] ChatMessage Id where the clicked button belong. + * @param {boolean} [force=false] If the method should be executed outside of Action workflow, for ChatMessage button for example. + */ + static async execute(config, messageId = null, force = false) { + if (!this.hasDamage && !this.hasHealing) return; + if ( + this.hasRoll && + DamageField.getAutomation() === CONFIG.DH.SETTINGS.actionAutomationChoices.never.id && + !force + ) + return; + + let formulas = this.damage.parts.map(p => ({ + formula: DamageField.getFormulaValue.call(this, p, config).getFormula(this.actor), + damageTypes: p.applyTo === 'hitPoints' && !p.type.size ? new Set(['physical']) : p.type, + applyTo: p.applyTo + })); + + if (!formulas.length) return false; + + formulas = DamageField.formatFormulas.call(this, formulas, config); + + const damageConfig = { + ...config, + roll: formulas, + dialog: {}, + data: this.getRollData() + }; + delete damageConfig.evaluate; + + if (DamageField.getAutomation() === CONFIG.DH.SETTINGS.actionAutomationChoices.always.id) + damageConfig.dialog.configure = false; + if (config.hasSave) config.onSave = damageConfig.onSave = this.save.damageMod; + + damageConfig.source.message = config.message?._id ?? messageId; + damageConfig.directDamage = !!damageConfig.source?.message; + + // if(damageConfig.source?.message && game.modules.get('dice-so-nice')?.active) + // await game.dice3d.waitFor3DAnimationByMessageID(damageConfig.source.message); + + const damageResult = await CONFIG.Dice.daggerheart.DamageRoll.build(damageConfig); + if (!damageResult) return false; + config.damage = damageResult.damage; + config.message ??= damageConfig.message; + } + + /** + * Apply Damage/Healing Action Worflow part. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + * @param {*[]} targets Arrays of targets to bypass pre-selected ones. + * @param {boolean} force If the method should be executed outside of Action workflow, for ChatMessage button for example. + */ + static async applyDamage(config, targets = null, force = false) { + targets ??= config.targets.filter(target => target.hit); + if (!config.damage || !targets?.length || (!DamageField.getApplyAutomation() && !force)) return; + + const targetDamage = []; + const damagePromises = []; + for (let target of targets) { + const actor = foundry.utils.fromUuidSync(target.actorId); + if (!actor) continue; + if (!config.hasHealing && config.onSave && target.saved?.success === true) { + const mod = CONFIG.DH.ACTIONS.damageOnSave[config.onSave]?.mod ?? 1; + Object.entries(config.damage).forEach(([k, v]) => { + v.total = 0; + v.parts.forEach(part => { + part.total = Math.ceil(part.total * mod); + v.total += part.total; + }); + }); + } + + const token = game.scenes.find(x => x.active).tokens.find(x => x.id === target.id); + if (config.hasHealing) + damagePromises.push( + actor.takeHealing(config.damage).then(updates => targetDamage.push({ token, updates })) + ); + else + damagePromises.push( + actor + .takeDamage(config.damage, config.isDirect) + .then(updates => targetDamage.push({ token, updates })) + ); + } + + Promise.all(damagePromises).then(async _ => { + const summaryMessageSettings = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.Automation + ).summaryMessages; + if (!summaryMessageSettings.damage) return; + + const cls = getDocumentClass('ChatMessage'); + const msg = { + type: 'systemMessage', + user: game.user.id, + speaker: cls.getSpeaker(), + title: game.i18n.localize( + `DAGGERHEART.UI.Chat.damageSummary.${config.hasHealing ? 'healingTitle' : 'title'}` + ), + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/ui/chat/damageSummary.hbs', + { + targets: targetDamage + } + ) + }; + + cls.create(msg); + }); + } + + /** + * Return value or valueAlt from damage part + * Must be called within Action context or similar. + * @param {object} part Damage Part + * @param {object} data Action getRollData + * @returns Formula value object + */ + static getFormulaValue(part, data) { + let formulaValue = part.value; + + if (data.hasRoll && part.resultBased && data.roll.result.duality === -1) return part.valueAlt; + + const isAdversary = this.actor.type === 'adversary'; + if (isAdversary && this.actor.system.type === CONFIG.DH.ACTOR.adversaryTypes.horde.id) { + const hasHordeDamage = this.actor.effects.find(x => x.type === 'horde'); + if (hasHordeDamage && !hasHordeDamage.disabled) return part.valueAlt; + } + + return formulaValue; + } + + /** + * Prepare formulas for Damage Roll + * Must be called within Action context or similar. + * @param {object[]} formulas Array of formatted formulas object + * @param {object} data Action getRollData + * @returns + */ + static formatFormulas(formulas, data) { + const formattedFormulas = []; + formulas.forEach(formula => { + if (isNaN(formula.formula)) + formula.formula = Roll.replaceFormulaData(formula.formula, this.getRollData(data)); + const same = formattedFormulas.find( + f => setsEqual(f.damageTypes, formula.damageTypes) && f.applyTo === formula.applyTo + ); + if (same) same.formula += ` + ${formula.formula}`; + else formattedFormulas.push(formula); + }); + return formattedFormulas; + } + + /** + * Return the automation setting for execute method for current user role + * @returns {string} Id from settingsConfig.mjs actionAutomationChoices + */ + static getAutomation() { + return ( + (game.user.isGM && + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.damage.gm) || + (!game.user.isGM && + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.damage.players) + ); + } + + /** + * Return the automation setting for applyDamage method for current user role + * @returns {boolean} If applyDamage should be triggered automatically + */ + static getApplyAutomation() { + return ( + (game.user.isGM && + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.damageApply.gm) || + (!game.user.isGM && + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.damageApply.players) + ); + } } export class DHActionDiceData extends foundry.abstract.DataModel { @@ -22,14 +214,26 @@ export class DHActionDiceData extends foundry.abstract.DataModel { multiplier: new fields.StringField({ choices: CONFIG.DH.GENERAL.multiplierTypes, initial: 'prof', - label: 'Multiplier' + label: 'DAGGERHEART.ACTIONS.Config.damage.multiplier', + nullable: false, + required: true }), - flatMultiplier: new fields.NumberField({ nullable: true, initial: 1, label: 'Flat Multiplier' }), - dice: new fields.StringField({ choices: CONFIG.DH.GENERAL.diceTypes, initial: 'd6', label: 'Dice' }), - bonus: new fields.NumberField({ nullable: true, initial: null, label: 'Bonus' }), + flatMultiplier: new fields.NumberField({ + nullable: true, + initial: 1, + label: 'DAGGERHEART.ACTIONS.Config.damage.flatMultiplier' + }), + dice: new fields.StringField({ + choices: CONFIG.DH.GENERAL.diceTypes, + initial: 'd6', + label: 'DAGGERHEART.GENERAL.Dice.single', + nullable: false, + required: true + }), + bonus: new fields.NumberField({ nullable: true, initial: null, label: 'DAGGERHEART.GENERAL.bonus' }), custom: new fields.SchemaField({ - enabled: new fields.BooleanField({ label: 'Custom Formula' }), - formula: new FormulaField({ label: 'Formula', initial: "" }) + enabled: new fields.BooleanField({ label: 'DAGGERHEART.ACTIONS.Config.general.customFormula' }), + formula: new FormulaField({ label: 'DAGGERHEART.ACTIONS.Config.general.formula', initial: '' }) }) }; } diff --git a/module/data/fields/action/effectsField.mjs b/module/data/fields/action/effectsField.mjs index ddc69d2d..887607ba 100644 --- a/module/data/fields/action/effectsField.mjs +++ b/module/data/fields/action/effectsField.mjs @@ -1,6 +1,14 @@ +import { emitAsGM, GMUpdateEvent } from '../../../systemRegistration/socket.mjs'; + const fields = foundry.data.fields; export default class EffectsField extends fields.ArrayField { + /** + * Action Workflow order + */ + static order = 100; + + /** @inheritDoc */ constructor(options = {}, context = {}) { const element = new fields.SchemaField({ _id: new fields.DocumentIdField(), @@ -8,4 +16,116 @@ export default class EffectsField extends fields.ArrayField { }); super(element, options, context); } + + /** + * Apply Effects Action Workflow part. + * Must be called within Action context or similar. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + * @param {object[]} [targets=null] Array of targets to override pre-selected ones. + * @param {boolean} [force=false] If the method should be executed outside of Action workflow, for ChatMessage button for example. + */ + static async execute(config, targets = null, force = false) { + if (!config.hasEffect) return; + let message = config.message ?? ui.chat.collection.get(config.parent?._id); + if (!message) { + const roll = new CONFIG.Dice.daggerheart.DHRoll(''); + roll._evaluated = true; + message = config.message = await CONFIG.Dice.daggerheart.DHRoll.toMessage(roll, config); + } + if (EffectsField.getAutomation() || force) { + targets ??= (message.system?.targets ?? config.targets).filter(t => !config.hasRoll || t.hit); + await emitAsGM(GMUpdateEvent.UpdateEffect, EffectsField.applyEffects.bind(this), targets, this.uuid); + // EffectsField.applyEffects.call(this, config.targets.filter(t => !config.hasRoll || t.hit)); + } + } + + /** + * Apply Action Effects to a list of Targets + * Must be called within Action context or similar. + * @param {object[]} targets Array of formatted targets + */ + static async applyEffects(targets) { + if (!this.effects?.length || !targets?.length) return; + + let effects = this.effects; + const messageTargets = []; + targets.forEach(async baseToken => { + if (this.hasSave && token.saved.success === true) effects = this.effects.filter(e => e.onSave === true); + if (!effects.length) return; + + const token = canvas.tokens.get(baseToken.id); + if (!token) return; + messageTargets.push(token.document); + + effects.forEach(async e => { + const effect = this.item.effects.get(e._id); + if (!token.actor || !effect) return; + await EffectsField.applyEffect(effect, token.actor); + }); + }); + + if (messageTargets.length === 0) return; + + const summaryMessageSettings = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.Automation + ).summaryMessages; + if (!summaryMessageSettings.effects) return; + + const cls = getDocumentClass('ChatMessage'); + const msg = { + type: 'systemMessage', + user: game.user.id, + speaker: cls.getSpeaker(), + title: game.i18n.localize('DAGGERHEART.UI.Chat.effectSummary.title'), + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/ui/chat/effectSummary.hbs', + { + effects: this.effects.map(e => this.item.effects.get(e._id)), + targets: messageTargets + } + ) + }; + + cls.create(msg); + } + + /** + * Apply an Effect to a target or enable it if already on it + * @param {object} effect Effect object containing ActiveEffect UUID + * @param {object} actor Actor Document + */ + static async applyEffect(effect, actor) { + const existingEffect = actor.effects.find(e => e.origin === effect.uuid); + if (existingEffect) { + return effect.update( + foundry.utils.mergeObject({ + ...effect.constructor.getInitialDuration(), + disabled: false + }) + ); + } + + // Otherwise, create a new effect on the target + const effectData = foundry.utils.mergeObject({ + ...effect.toObject(), + disabled: false, + transfer: false, + origin: effect.uuid + }); + await ActiveEffect.implementation.create(effectData, { parent: actor }); + } + + /** + * Return the automation setting for execute method for current user role + * @returns {boolean} If execute should be triggered automatically + */ + static getAutomation() { + return ( + (game.user.isGM && + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.effect.gm) || + (!game.user.isGM && + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.effect.players) + ); + } } diff --git a/module/data/fields/action/healingField.mjs b/module/data/fields/action/healingField.mjs deleted file mode 100644 index 98f4f5ea..00000000 --- a/module/data/fields/action/healingField.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { DHDamageData } from './damageField.mjs'; - -const fields = foundry.data.fields; - -export default class HealingField extends fields.SchemaField { - constructor(options, context = {}) { - const healingFields = { - parts: new fields.ArrayField(new fields.EmbeddedDataField(DHDamageData)) - }; - super(healingFields, options, context); - } -} diff --git a/module/data/fields/action/macroField.mjs b/module/data/fields/action/macroField.mjs index 62da0da0..e37a2852 100644 --- a/module/data/fields/action/macroField.mjs +++ b/module/data/fields/action/macroField.mjs @@ -1,7 +1,29 @@ const fields = foundry.data.fields; export default class MacroField extends fields.DocumentUUIDField { + /** + * Action Workflow order + */ + static order = 70; + + /** @inheritDoc */ constructor(context = {}) { - super({ type: "Macro" }, context); + super({ type: 'Macro' }, context); + } + + /** + * Macro Action Workflow part. + * Must be called within Action context or similar or similar. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. Currently not used. + */ + static async execute(config) { + const fixUUID = !this.macro.includes('Macro.') ? `Macro.${this.macro}` : this.macro, + macro = await fromUuid(fixUUID); + try { + if (!macro) throw new Error(`No macro found for the UUID: ${this.macro}.`); + macro.execute(); + } catch (error) { + ui.notifications.error(error); + } } } diff --git a/module/data/fields/action/rangeField.mjs b/module/data/fields/action/rangeField.mjs index 221f00af..d0bceada 100644 --- a/module/data/fields/action/rangeField.mjs +++ b/module/data/fields/action/rangeField.mjs @@ -1,17 +1,23 @@ const fields = foundry.data.fields; export default class RangeField extends fields.StringField { + /** @inheritDoc */ constructor(context = {}) { const options = { choices: CONFIG.DH.GENERAL.range, required: false, blank: true, - label: "DAGGERHEART.GENERAL.range" + label: 'DAGGERHEART.GENERAL.range' }; super(options, context); } - static prepareConfig(config) { - return true; + /** + * Update Action Workflow config object. + * NOT YET IMPLEMENTED. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + */ + prepareConfig(config) { + return; } } diff --git a/module/data/fields/action/rollField.mjs b/module/data/fields/action/rollField.mjs index a4df2a9e..e2196c1c 100644 --- a/module/data/fields/action/rollField.mjs +++ b/module/data/fields/action/rollField.mjs @@ -5,18 +5,27 @@ export class DHActionRollData extends foundry.abstract.DataModel { static defineSchema() { return { type: new fields.StringField({ nullable: true, initial: null, choices: CONFIG.DH.GENERAL.rollTypes }), - trait: new fields.StringField({ nullable: true, initial: null, choices: CONFIG.DH.ACTOR.abilities, label: "DAGGERHEART.GENERAL.Trait.single" }), + trait: new fields.StringField({ + nullable: true, + initial: null, + choices: CONFIG.DH.ACTOR.abilities, + label: 'DAGGERHEART.GENERAL.Trait.single' + }), 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.advantageState, - initial: 'neutral' + initial: 'neutral', + nullable: false, + required: true }), diceRolling: new fields.SchemaField({ multiplier: new fields.StringField({ choices: CONFIG.DH.GENERAL.diceSetNumbers, initial: 'prof', - label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.multiplier' + label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.multiplier', + nullable: false, + required: true }), flatMultiplier: new fields.NumberField({ nullable: true, @@ -26,7 +35,9 @@ export class DHActionRollData extends foundry.abstract.DataModel { dice: new fields.StringField({ choices: CONFIG.DH.GENERAL.diceTypes, initial: CONFIG.DH.GENERAL.diceTypes.d6, - label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.dice' + label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.dice', + nullable: false, + required: true }), compare: new fields.StringField({ choices: CONFIG.DH.ACTIONS.diceCompare, @@ -71,29 +82,6 @@ export class DHActionRollData extends foundry.abstract.DataModel { const modifiers = []; if (!this.parent?.actor) return modifiers; switch (this.parent.actor.type) { - case 'character': - const spellcastingTrait = - this.type === 'spellcast' - ? (this.parent.actor?.system?.spellcastModifierTrait?.key ?? 'agility') - : null; - const trait = - this.useDefault || !this.trait - ? (spellcastingTrait ?? this.parent.item.system.attack?.roll?.trait ?? 'agility') - : this.trait; - if ( - this.type === CONFIG.DH.GENERAL.rollTypes.attack.id || - this.type === CONFIG.DH.GENERAL.rollTypes.trait.id - ) - modifiers.push({ - label: `DAGGERHEART.CONFIG.Traits.${trait}.name`, - value: this.parent.actor.system.traits[trait].value - }); - else if (this.type === CONFIG.DH.GENERAL.rollTypes.spellcast.id) - modifiers.push({ - label: `DAGGERHEART.CONFIG.RollTypes.spellcast.name`, - value: this.parent.actor.system.spellcastModifier - }); - break; case 'companion': case 'adversary': if (this.type === CONFIG.DH.GENERAL.rollTypes.attack.id) @@ -107,10 +95,79 @@ export class DHActionRollData extends foundry.abstract.DataModel { } return modifiers; } + + get rollTrait() { + if (this.parent?.actor?.type !== 'character') return null; + switch (this.type) { + case CONFIG.DH.GENERAL.rollTypes.spellcast.id: + return this.parent.actor?.system?.spellcastModifierTrait?.key ?? 'agility'; + case CONFIG.DH.GENERAL.rollTypes.attack.id: + case CONFIG.DH.GENERAL.rollTypes.trait.id: + return this.useDefault || !this.trait + ? (this.parent.item.system.attack?.roll?.trait ?? 'agility') + : this.trait; + default: + return null; + } + } } export default class RollField extends fields.EmbeddedDataField { + /** + * Action Workflow order + */ + static order = 10; + + /** @inheritDoc */ constructor(options, context = {}) { super(DHActionRollData, options, context); } + + /** + * Roll Action Workflow part. + * Must be called within Action context or similar. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + */ + static async execute(config) { + if (!config.hasRoll) return; + config = await this.actor.diceRoll(config); + if (!config) return false; + } + + /** + * Update Action Workflow config object. + * Must be called within Action context. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + */ + prepareConfig(config) { + if (!config.hasRoll) return; + + config.dialog.configure = RollField.getAutomation() ? !config.dialog.configure : config.dialog.configure; + + const roll = { + baseModifiers: this.roll.getModifier(), + label: 'Attack', + type: this.roll?.type, + trait: this.roll?.rollTrait, + difficulty: this.roll?.difficulty, + formula: this.roll.getFormula(), + advantage: CONFIG.DH.ACTIONS.advantageState[this.roll.advState].value + }; + if (this.roll.type === 'diceSet' || !this.hasRoll) roll.lite = true; + + config.roll = roll; + } + + /** + * Return the automation setting for execute method for current user role + * @returns {boolean} If execute should be triggered automatically + */ + static getAutomation() { + return ( + (game.user.isGM && + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.roll.gm) || + (!game.user.isGM && + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.roll.players) + ); + } } diff --git a/module/data/fields/action/saveField.mjs b/module/data/fields/action/saveField.mjs index e93a82a9..19486b85 100644 --- a/module/data/fields/action/saveField.mjs +++ b/module/data/fields/action/saveField.mjs @@ -1,6 +1,14 @@ +import { abilities } from '../../../config/actorConfig.mjs'; + const fields = foundry.data.fields; export default class SaveField extends fields.SchemaField { + /** + * Action Workflow order + */ + static order = 50; + + /** @inheritDoc */ constructor(options = {}, context = {}) { const saveFields = { trait: new fields.StringField({ @@ -11,9 +19,164 @@ export default class SaveField extends fields.SchemaField { 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 + choices: CONFIG.DH.ACTIONS.damageOnSave, + nullable: false, + required: true }) }; super(saveFields, options, context); } + + /** + * Reaction Roll Action Workflow part. + * Must be called within Action context or similar. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + * @param {object[]} [targets=null] Array of targets to override pre-selected ones. + * @param {boolean} [force=false] If the method should be executed outside of Action workflow, for ChatMessage button for example. + */ + static async execute(config, targets = null, force = false) { + if (!config.hasSave) return; + let message = config.message ?? ui.chat.collection.get(config.parent?._id); + + if (!message) { + const roll = new CONFIG.Dice.daggerheart.DHRoll(''); + roll._evaluated = true; + message = config.message = await CONFIG.Dice.daggerheart.DHRoll.toMessage(roll, config); + } + if (SaveField.getAutomation() !== CONFIG.DH.SETTINGS.actionAutomationChoices.never.id || force) { + targets ??= config.targets.filter(t => !config.hasRoll || t.hit); + await SaveField.rollAllSave.call(this, targets, config.event, message); + } else return false; + } + + /** + * Roll a Reaction Roll for all targets. Send a query to the owner if the User is not. + * Must be called within Action context. + * @param {object[]} targets Array of formatted targets. + * @param {Event} event Triggering event + * @param {ChatMessage} message The ChatMessage the triggered button comes from. + */ + static async rollAllSave(targets, event, message) { + if (!targets) return; + return new Promise(resolve => { + const aPromise = []; + targets.forEach(target => { + aPromise.push( + new Promise(async subResolve => { + const actor = fromUuidSync(target.actorId); + if (actor) { + const rollSave = + game.user === actor.owner + ? SaveField.rollSave.call(this, actor, event) + : actor.owner.query('reactionRoll', { + actionId: this.uuid, + actorId: actor.uuid, + event, + message + }); + const result = await rollSave; + await SaveField.updateSaveMessage.call(this, result, message, target.id); + subResolve(); + } else subResolve(); + }) + ); + }); + Promise.all(aPromise).then(result => resolve()); + }); + } + + /** + * Roll a Reaction Roll for the specified Actor against the Action difficulty. + * Must be called within Action context. + * @param {*} actor Actor document + * @param {Event} event Triggering event + * @returns {object} Actor diceRoll config result. + */ + static async rollSave(actor, event) { + if (!actor) return; + const title = actor.isNPC + ? game.i18n.localize('DAGGERHEART.GENERAL.reactionRoll') + : game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', { + ability: game.i18n.localize(abilities[this.save.trait]?.label) + }), + rollConfig = { + event, + title, + roll: { + trait: this.save.trait, + difficulty: this.save.difficulty ?? this.actor?.baseSaveDifficulty, + type: 'trait' + }, + actionType: 'reaction', + hasRoll: true, + data: actor.getRollData() + }; + if (SaveField.getAutomation() === CONFIG.DH.SETTINGS.actionAutomationChoices.always.id) + rollConfig.dialog = { configure: false }; + return actor.diceRoll(rollConfig); + } + + /** + * Update a Roll ChatMessage for a token according to his Reaction Roll result. + * @param {object} result Result from the Reaction Roll + * @param {object} message ChatMessage to update + * @param {string} targetId Token ID + */ + static async updateSaveMessage(result, message, targetId) { + if (!result) return; + const updateMsg = async function (message, targetId, result) { + // setTimeout(async () => { + const chatMessage = ui.chat.collection.get(message._id), + changes = { + flags: { + [game.system.id]: { + reactionRolls: { + [targetId]: { + result: result.roll.total, + success: result.roll.success + } + } + } + } + }; + await chatMessage.update(changes); + // }, 100); + }; + if (game.modules.get('dice-so-nice')?.active) + game.dice3d + .waitFor3DAnimationByMessageID(result.message.id ?? result.message._id) + .then(async () => await updateMsg(message, targetId, result)); + else await updateMsg(message, targetId, result); + } + + /** + * Return the automation setting for execute method for current user role + * @returns {string} Id from settingsConfig.mjs actionAutomationChoices + */ + static getAutomation() { + return ( + (game.user.isGM && + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.save.gm) || + (!game.user.isGM && + game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.save.players) + ); + } + + /** + * Send a query to an Actor owner to roll a Reaction Roll then send back the result. + * @param {object} param0 + * @param {string} param0.actionId Action ID + * @param {string} param0.actorId Actor ID + * @param {Event} param0.event Triggering event + * @param {ChatMessage} param0.message Chat Message to update + * @returns + */ + 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(); + SaveField.rollSave.call(action, actor, event, message).then(result => resolve(result)); + }); + } } diff --git a/module/data/fields/action/targetField.mjs b/module/data/fields/action/targetField.mjs index bfb01db9..439f2be1 100644 --- a/module/data/fields/action/targetField.mjs +++ b/module/data/fields/action/targetField.mjs @@ -1,56 +1,80 @@ const fields = foundry.data.fields; export default class TargetField extends fields.SchemaField { + /** @inheritDoc */ constructor(options = {}, context = {}) { const targetFields = { type: new fields.StringField({ choices: CONFIG.DH.GENERAL.targetTypes, initial: CONFIG.DH.GENERAL.targetTypes.any.id, - nullable: true + nullable: true, + blank: true }), amount: new fields.NumberField({ nullable: true, initial: null, integer: true, min: 0 }) }; super(targetFields, options, context); } - static prepareConfig(config) { - if (!this.target?.type) return []; + /** + * Update Action Workflow config object. + * Must be called within Action context. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + */ + prepareConfig(config) { + if (!this.target?.type) return (config.targets = []); config.hasTarget = true; let targets; + // If the Action is configured as self-targeted, set targets as the owner. if (this.target?.type === CONFIG.DH.GENERAL.targetTypes.self.id) targets = [this.actor.token ?? this.actor.prototypeToken]; else { targets = Array.from(game.user.targets); if (this.target.type !== CONFIG.DH.GENERAL.targetTypes.any.id) { - targets = targets.filter(t => TargetField.isTargetFriendly.call(this, t)); + targets = targets.filter(target => TargetField.isTargetFriendly(this.actor, target, this.target.type)); 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); - if (config.isFastForward && !hasTargets) - return ui.notifications.warn('Too many targets selected for that actions.'); - return hasTargets; + if (config.dialog.configure === false && !hasTargets) { + ui.notifications.warn('Too many targets selected for that actions.'); + return hasTargets; + } } + /** + * Check if the number of selected targets respect the amount set in the Action. + * NOT YET IMPLEMENTED. Will be with Target Picker. + * @param {number} amount Max amount of targets configured in the action. + * @param {*[]} targets Array of targeted tokens. + * @returns {boolean} If the amount of targeted tokens does not exceed action configured one. + */ static checkTargets(amount, targets) { return true; // return !amount || (targets.length > amount); } - static isTargetFriendly(target) { - const actorDisposition = this.actor.token - ? this.actor.token.disposition - : this.actor.prototypeToken.disposition, + /** + * Compare 2 Actors disposition between each other + * @param {*} actor First actor document. + * @param {*} target Second actor document. + * @param {string} type Disposition id to compare (friendly/hostile). + * @returns {boolean} If both actors respect the provided type. + */ + static isTargetFriendly(actor, target, type) { + const actorDisposition = actor.token ? actor.token.disposition : actor.prototypeToken.disposition, targetDisposition = target.document.disposition; return ( - (this.target.type === CONFIG.DH.GENERAL.targetTypes.friendly.id && - actorDisposition === targetDisposition) || - (this.target.type === CONFIG.DH.GENERAL.targetTypes.hostile.id && - actorDisposition + targetDisposition === 0) + (type === CONFIG.DH.GENERAL.targetTypes.friendly.id && actorDisposition === targetDisposition) || + (type === CONFIG.DH.GENERAL.targetTypes.hostile.id && actorDisposition + targetDisposition === 0) ); } + /** + * Format actor to useful datas for Action roll workflow. + * @param {*} actor Actor object to format. + * @returns {*} Formatted Actor. + */ static formatTarget(actor) { return { id: actor.id, diff --git a/module/data/fields/action/usesField.mjs b/module/data/fields/action/usesField.mjs index 3993ca3b..d1f3ebff 100644 --- a/module/data/fields/action/usesField.mjs +++ b/module/data/fields/action/usesField.mjs @@ -3,6 +3,12 @@ import FormulaField from '../formulaField.mjs'; const fields = foundry.data.fields; export default class UsesField extends fields.SchemaField { + /** + * Action Workflow order + */ + static order = 160; + + /** @inheritDoc */ constructor(options = {}, context = {}) { const usesFields = { value: new fields.NumberField({ nullable: true, initial: null }), @@ -20,15 +26,45 @@ export default class UsesField extends fields.SchemaField { super(usesFields, options, context); } - static prepareConfig(config) { + /** + * Uses Consumption Action Workflow part. + * Increment Action spent uses by 1. + * Must be called within Action context or similar or similar. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + * @param {boolean} [successCost=false] Consume only resources configured as "On Success only" if not already consumed. + */ + static async execute(config, successCost = false) { + if ( + config.uses?.enabled && + ((!successCost && (!config.uses?.consumeOnSuccess || config.roll?.success)) || + (successCost && config.uses?.consumeOnSuccess)) + ) + this.update({ 'uses.value': this.uses.value + 1 }); + } + + /** + * Update Action Workflow config object. + * Must be called within Action context. + * @param {object} config Object that contains workflow datas. Usually made from Action Fields prepareConfig methods. + * @returns {boolean} Return false if fast-forwarded and no more uses. + */ + prepareConfig(config) { const uses = this.uses?.max ? foundry.utils.deepClone(this.uses) : null; if (uses && !uses.value) uses.value = 0; config.uses = uses; const hasUses = UsesField.hasUses.call(this, config.uses); - if (config.isFastForward && !hasUses) return ui.notifications.warn("That action doesn't have remaining uses."); - return hasUses; + if (config.dialog.configure === false && !hasUses) { + ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.actionNoUsesRemaining')); + return hasUses; + } } + /** + * Prepare Uses object for Action Workflow + * Must be called within Action context. + * @param {object} uses + * @returns {object} + */ static calcUses(uses) { if (!uses) return null; return { @@ -38,6 +74,12 @@ export default class UsesField extends fields.SchemaField { }; } + /** + * Check if the Action still get atleast one unspent uses. + * Must be called within Action context. + * @param {*} uses + * @returns {boolean} + */ static hasUses(uses) { if (!uses) return true; let max = uses.max ?? 0; diff --git a/module/data/fields/foreignDocumentUUIDField.mjs b/module/data/fields/foreignDocumentUUIDField.mjs index 0efa60da..cf68ace3 100644 --- a/module/data/fields/foreignDocumentUUIDField.mjs +++ b/module/data/fields/foreignDocumentUUIDField.mjs @@ -38,4 +38,13 @@ export default class ForeignDocumentUUIDField extends foundry.data.fields.Docume toObject(value) { return value?.uuid ?? value; } + + /** @override */ + _cast(value) { + if (typeof value === 'string') return value; + if (value instanceof foundry.abstract.Document) return value.uuid; + throw new Error( + `The value provided to a ForeignDocumentUUIDField must be a ${foundry.abstract.Document.name} instance or a UUID string.` + ); + } } diff --git a/module/data/item/armor.mjs b/module/data/item/armor.mjs index 7f70d3f7..e35fae46 100644 --- a/module/data/item/armor.mjs +++ b/module/data/item/armor.mjs @@ -1,5 +1,4 @@ import AttachableItem from './attachableItem.mjs'; -import { armorFeatures } from '../../config/itemConfig.mjs'; export default class DHArmor extends AttachableItem { /** @inheritDoc */ @@ -25,7 +24,7 @@ export default class DHArmor extends AttachableItem { new fields.SchemaField({ value: new fields.StringField({ required: true, - choices: CONFIG.DH.ITEM.armorFeatures, + choices: CONFIG.DH.ITEM.allArmorFeatures, blank: true }), effectIds: new fields.ArrayField(new fields.StringField({ required: true })), @@ -60,13 +59,14 @@ export default class DHArmor extends AttachableItem { const allowed = await super._preUpdate(changes, options, user); if (allowed === false) return false; + const changedArmorFeatures = changes.system?.armorFeatures ?? []; + const removedFeatures = this.armorFeatures.filter(x => changedArmorFeatures.every(y => y.value !== x.value)); if (changes.system?.armorFeatures) { - const removed = this.armorFeatures.filter(x => !changes.system.armorFeatures.includes(x)); - const added = changes.system.armorFeatures.filter(x => !this.armorFeatures.includes(x)); + const added = changedArmorFeatures.filter(x => this.armorFeatures.every(y => y.value !== x.value)); const effectIds = []; const actionIds = []; - for (var feature of removed) { + for (var feature of removedFeatures) { effectIds.push(...feature.effectIds); actionIds.push(...feature.actionIds); } @@ -76,8 +76,9 @@ export default class DHArmor extends AttachableItem { return acc; }, {}); + const allFeatures = CONFIG.DH.ITEM.allArmorFeatures(); for (const feature of added) { - const featureData = armorFeatures[feature.value]; + const featureData = allFeatures[feature.value]; if (featureData.effects?.length > 0) { const embeddedItems = await this.parent.createEmbeddedDocuments( 'ActiveEffect', @@ -91,7 +92,7 @@ export default class DHArmor extends AttachableItem { } const newActions = {}; - if (featureData.actions?.length > 0) { + if (featureData.actions?.length > 0 || featureData.actions?.size > 0) { for (let action of featureData.actions) { const embeddedEffects = await this.parent.createEmbeddedDocuments( 'ActiveEffect', @@ -110,10 +111,12 @@ export default class DHArmor extends AttachableItem { { ...cls.getSourceConfig(this), ...action, + type: action.type, _id: actionId, name: game.i18n.localize(action.name), description: game.i18n.localize(action.description), - effects: embeddedEffects.map(x => ({ _id: x.id })) + effects: embeddedEffects.map(x => ({ _id: x.id })), + systemPath: 'actions' }, { parent: this } ); @@ -126,6 +129,16 @@ export default class DHArmor extends AttachableItem { } } + _onUpdate(a, b, c) { + super._onUpdate(a, b, c); + + if (this.actor?.type === 'character') { + for (const party of this.actor.parties) { + party.render(); + } + } + } + /** * Generates a list of localized tags based on this item's type-specific properties. * @returns {string[]} An array of localized tag strings. @@ -145,7 +158,8 @@ export default class DHArmor extends AttachableItem { */ _getLabels() { const labels = []; - if(this.baseScore) labels.push(`${game.i18n.localize('DAGGERHEART.ITEMS.Armor.baseScore')}: ${this.baseScore}`) + if (this.baseScore) + labels.push(`${game.i18n.localize('DAGGERHEART.ITEMS.Armor.baseScore')}: ${this.baseScore}`); return labels; } diff --git a/module/data/item/base.mjs b/module/data/item/base.mjs index f8eae265..11be0a52 100644 --- a/module/data/item/base.mjs +++ b/module/data/item/base.mjs @@ -26,7 +26,8 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel { hasResource: false, isQuantifiable: false, isInventoryItem: false, - hasActions: false + hasActions: false, + hasAttribution: true }; } @@ -37,7 +38,13 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel { /** @inheritDoc */ static defineSchema() { - const schema = {}; + const schema = { + attribution: new fields.SchemaField({ + source: new fields.StringField(), + page: new fields.NumberField(), + artist: new fields.StringField() + }) + }; if (this.metadata.hasDescription) schema.description = new fields.HTMLField({ required: true, nullable: true }); @@ -110,6 +117,13 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel { return []; } + get attributionLabel() { + if (!this.attribution) return; + + const { source, page } = this.attribution; + return [source, page ? `pg ${page}.` : null].filter(x => x).join('. '); + } + /** * Obtain a data object used to evaluate any dice rolls associated with this Item Type * @param {object} [options] - Options which modify the getRollData method. @@ -187,6 +201,8 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel { super._onUpdate(changed, options, userId); updateLinkedItemApps(options, this.parent.sheet); - createScrollText(this.parent?.parent, options.scrollingTextData); + + if (this.parent?.parent && options.scrollingTextData) + this.parent.parent.queueScrollText(options.scrollingTextData); } } diff --git a/module/data/item/beastform.mjs b/module/data/item/beastform.mjs index 3c9bef5c..8f5dffe6 100644 --- a/module/data/item/beastform.mjs +++ b/module/data/item/beastform.mjs @@ -33,11 +33,13 @@ export default class DHBeastform extends BaseDataItem { tokenImg: new fields.FilePathField({ initial: 'icons/svg/mystery-man.svg', categories: ['IMAGE'], + wildcard: true, base64: false }), tokenRingImg: new fields.FilePathField({ initial: 'icons/svg/mystery-man.svg', categories: ['IMAGE'], + wildcard: true, base64: false }), tokenSize: new fields.SchemaField({ @@ -108,6 +110,30 @@ export default class DHBeastform extends BaseDataItem { }; } + static async getWildcardImage(actor, beastform) { + const usesDynamicToken = actor.prototypeToken.ring.enabled && beastform.system.tokenRingImg; + const tokenPath = usesDynamicToken ? beastform.system.tokenRingImg : beastform.system.tokenImg; + const usesWildcard = tokenPath.includes('*'); + if (usesWildcard) { + const filePicker = new foundry.applications.apps.FilePicker.implementation(tokenPath); + const { files } = await foundry.applications.apps.FilePicker.implementation.browse( + filePicker.activeSource, + tokenPath, + { + wildcard: true, + type: 'image' + } + ); + const selectedImage = await game.system.api.applications.dialogs.ImageSelectDialog.configure( + game.i18n.localize('DAGGERHEART.APPLICATIONS.ImageSelect.title'), + files + ); + return { usesDynamicToken, selectedImage }; + } + + return null; + } + async _preCreate() { if (!this.actor) return; diff --git a/module/data/item/class.mjs b/module/data/item/class.mjs index 5e92d2fc..c233a31b 100644 --- a/module/data/item/class.mjs +++ b/module/data/item/class.mjs @@ -49,6 +49,8 @@ export default class DHClass extends BaseDataItem { suggestedSecondaryWeapon: new ForeignDocumentUUIDField({ type: 'Item' }), suggestedArmor: new ForeignDocumentUUIDField({ type: 'Item' }) }), + backgroundQuestions: new fields.ArrayField(new fields.StringField(), { initial: ['', '', ''] }), + connections: new fields.ArrayField(new fields.StringField(), { initial: ['', '', ''] }), isMulticlass: new fields.BooleanField({ initial: false }) }; } @@ -96,6 +98,20 @@ export default class DHClass extends BaseDataItem { } } } + + if (!data.system.isMulticlass) { + const addQuestions = (base, questions) => { + return `${base}${questions.map(q => `

${q}

`).join('
')}`; + }; + const backgroundQuestions = data.system.backgroundQuestions.filter(x => x); + const connections = data.system.connections.filter(x => x); + await this.actor.update({ + 'system.biography': { + background: addQuestions(this.actor.system.biography.background, backgroundQuestions), + connections: addQuestions(this.actor.system.biography.connections, connections) + } + }); + } } const allowed = await super._preCreate(data, options, user); diff --git a/module/data/item/consumable.mjs b/module/data/item/consumable.mjs index dad6a95c..5a50525a 100644 --- a/module/data/item/consumable.mjs +++ b/module/data/item/consumable.mjs @@ -1,5 +1,4 @@ import BaseDataItem from './base.mjs'; -import { ActionField } from '../fields/actionField.mjs'; export default class DHConsumable extends BaseDataItem { /** @inheritDoc */ @@ -19,7 +18,8 @@ export default class DHConsumable extends BaseDataItem { const fields = foundry.data.fields; return { ...super.defineSchema(), - consumeOnUse: new fields.BooleanField({ initial: false }) + consumeOnUse: new fields.BooleanField({ initial: true }), + destroyOnEmpty: new fields.BooleanField({ initial: true }) }; } @@ -27,5 +27,4 @@ export default class DHConsumable extends BaseDataItem { /**@override */ static DEFAULT_ICON = 'systems/daggerheart/assets/icons/documents/items/round-potion.svg'; - } diff --git a/module/data/item/weapon.mjs b/module/data/item/weapon.mjs index 66025cc5..b2d937b5 100644 --- a/module/data/item/weapon.mjs +++ b/module/data/item/weapon.mjs @@ -39,7 +39,7 @@ export default class DHWeapon extends AttachableItem { new fields.SchemaField({ value: new fields.StringField({ required: true, - choices: CONFIG.DH.ITEM.weaponFeatures, + choices: CONFIG.DH.ITEM.allWeaponFeatures, blank: true }), effectIds: new fields.ArrayField(new fields.StringField({ required: true })), @@ -116,13 +116,14 @@ export default class DHWeapon extends AttachableItem { const allowed = await super._preUpdate(changes, options, user); if (allowed === false) return false; + const changedWeaponFeatures = changes.system?.weaponFeatures ?? []; + const removedFeatures = this.weaponFeatures.filter(x => changedWeaponFeatures.every(y => y.value !== x.value)); if (changes.system?.weaponFeatures) { - const removed = this.weaponFeatures.filter(x => !changes.system.weaponFeatures.includes(x)); - const added = changes.system.weaponFeatures.filter(x => !this.weaponFeatures.includes(x)); + const added = changedWeaponFeatures.filter(x => this.weaponFeatures.every(y => y.value !== x.value)); const removedEffectsUpdate = []; const removedActionsUpdate = []; - for (let weaponFeature of removed) { + for (let weaponFeature of removedFeatures) { removedEffectsUpdate.push(...weaponFeature.effectIds); removedActionsUpdate.push(...weaponFeature.actionIds); } @@ -133,8 +134,9 @@ export default class DHWeapon extends AttachableItem { return acc; }, {}); + const allFeatures = CONFIG.DH.ITEM.allWeaponFeatures(); for (let weaponFeature of added) { - const featureData = CONFIG.DH.ITEM.weaponFeatures[weaponFeature.value]; + const featureData = allFeatures[weaponFeature.value]; if (featureData.effects?.length > 0) { const embeddedItems = await this.parent.createEmbeddedDocuments( 'ActiveEffect', @@ -148,7 +150,7 @@ export default class DHWeapon extends AttachableItem { } const newActions = {}; - if (featureData.actions?.length > 0) { + if (featureData.actions?.length > 0 || featureData.actions?.size > 0) { for (let action of featureData.actions) { const embeddedEffects = await this.parent.createEmbeddedDocuments( 'ActiveEffect', @@ -170,10 +172,12 @@ export default class DHWeapon extends AttachableItem { { ...cls.getSourceConfig(this), ...action, + type: action.type, _id: actionId, name: game.i18n.localize(action.name), description: game.i18n.localize(action.description), - effects: embeddedEffects.map(x => ({ _id: x.id })) + effects: embeddedEffects.map(x => ({ _id: x.id })), + systemPath: 'actions' }, { parent: this } ); @@ -199,8 +203,8 @@ export default class DHWeapon extends AttachableItem { ]; for (const { value, type } of attack.damage.parts) { - const parts = [value.dice]; - if (value.bonus) parts.push(value.bonus.signedString()); + const parts = value.custom.enabled ? [game.i18n.localize('DAGGERHEART.GENERAL.custom')] : [value.dice]; + if (!value.custom.enabled && value.bonus) parts.push(value.bonus.signedString()); if (type.size > 0) { const typeTags = Array.from(type) diff --git a/module/data/levelTier.mjs b/module/data/levelTier.mjs index e42cfc54..2252e4da 100644 --- a/module/data/levelTier.mjs +++ b/module/data/levelTier.mjs @@ -169,7 +169,7 @@ export const defaultLevelTiers = { tiers: { 2: { tier: 2, - name: 'Tier 2', + name: 'DAGGERHEART.APPLICATIONS.Levelup.tier2.name', levels: { start: 2, end: 4 @@ -232,7 +232,7 @@ export const defaultLevelTiers = { }, 3: { tier: 3, - name: 'Tier 3', + name: 'DAGGERHEART.APPLICATIONS.Levelup.tier3.name', levels: { start: 5, end: 7 @@ -313,7 +313,7 @@ export const defaultLevelTiers = { }, 4: { tier: 4, - name: 'Tier 4', + name: 'DAGGERHEART.APPLICATIONS.Levelup.tier4.name', levels: { start: 8, end: 10 diff --git a/module/data/levelup.mjs b/module/data/levelup.mjs index 665b3264..4dc1c058 100644 --- a/module/data/levelup.mjs +++ b/module/data/levelup.mjs @@ -234,7 +234,7 @@ export class DhLevelup extends foundry.abstract.DataModel { const subclassInTier = subclasses.some(x => x.tier === Number(tierKey)); return { - name: tier.name, + name: game.i18n.localize(tier.name), active: this.currentLevel >= Math.min(...tier.belongingLevels), groups: Object.keys(tier.options).map(optionKey => { const option = tier.options[optionKey]; diff --git a/module/data/scene/_module.mjs b/module/data/scene/_module.mjs new file mode 100644 index 00000000..9994901b --- /dev/null +++ b/module/data/scene/_module.mjs @@ -0,0 +1 @@ +export { default as DHScene } from './scene.mjs'; diff --git a/module/data/scene/scene.mjs b/module/data/scene/scene.mjs new file mode 100644 index 00000000..7cf74ade --- /dev/null +++ b/module/data/scene/scene.mjs @@ -0,0 +1,19 @@ +export default class DHScene extends foundry.abstract.DataModel { + static defineSchema() { + const fields = foundry.data.fields; + + return { + rangeMeasurement: new fields.SchemaField({ + setting: new fields.StringField({ + choices: CONFIG.DH.GENERAL.sceneRangeMeasurementSetting, + initial: CONFIG.DH.GENERAL.sceneRangeMeasurementSetting.default.id, + label: 'DAGGERHEART.SETTINGS.Scene.FIELDS.rangeMeasurement.setting.label' + }), + melee: new fields.NumberField({ integer: true, label: 'DAGGERHEART.CONFIG.Range.melee.name' }), + veryClose: new fields.NumberField({ integer: true, label: 'DAGGERHEART.CONFIG.Range.veryClose.name' }), + close: new fields.NumberField({ integer: true, label: 'DAGGERHEART.CONFIG.Range.close.name' }), + far: new fields.NumberField({ integer: true, label: 'DAGGERHEART.CONFIG.Range.far.name' }) + }) + }; + } +} diff --git a/module/data/settings/Appearance.mjs b/module/data/settings/Appearance.mjs index ac980346..47909b2c 100644 --- a/module/data/settings/Appearance.mjs +++ b/module/data/settings/Appearance.mjs @@ -1,77 +1,47 @@ -import { fearDisplay } from '../../config/generalConfig.mjs'; - export default class DhAppearance extends foundry.abstract.DataModel { + static LOCALIZATION_PREFIXES = ['DAGGERHEART.SETTINGS.Appearance']; + static defineSchema() { - const fields = foundry.data.fields; + const { StringField, ColorField, BooleanField, SchemaField } = foundry.data.fields; + + // helper to create dice style schema + const diceStyle = ({ fg, bg, outline, edge }) => + new SchemaField({ + foreground: new ColorField({ required: true, initial: fg }), + background: new ColorField({ required: true, initial: bg }), + outline: new ColorField({ required: true, initial: outline }), + edge: new ColorField({ required: true, initial: edge }), + texture: new StringField({ initial: 'astralsea', required: true, blank: false }), + colorset: new StringField({ initial: 'inspired', required: true, blank: false }), + material: new StringField({ initial: 'metal', required: true, blank: false }), + system: new StringField({ initial: 'standard', required: true, blank: false }) + }); + return { - displayFear: new fields.StringField({ + useResourcePips: new BooleanField({ initial: false }), + displayFear: new StringField({ required: true, - choices: fearDisplay, - initial: fearDisplay.token.value, - label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.displayFear.label' + choices: CONFIG.DH.GENERAL.fearDisplay, + initial: CONFIG.DH.GENERAL.fearDisplay.token.value }), - diceSoNice: new fields.SchemaField({ - hope: new fields.SchemaField({ - 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' }), - 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' }), - 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' }), - 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' }), - texture: new fields.StringField({ initial: 'astralsea' }), - colorset: new fields.StringField({ initial: 'inspired' }), - material: new fields.StringField({ initial: 'metal' }), - system: new fields.StringField({ initial: 'standard' }) - }) + diceSoNice: new SchemaField({ + hope: diceStyle({ fg: '#ffffff', bg: '#ffe760', outline: '#000000', edge: '#ffffff' }), + fear: diceStyle({ fg: '#000000', bg: '#0032b1', outline: '#ffffff', edge: '#000000' }), + advantage: diceStyle({ fg: '#ffffff', bg: '#008000', outline: '#000000', edge: '#ffffff' }), + disadvantage: diceStyle({ fg: '#000000', bg: '#b30000', outline: '#ffffff', edge: '#000000' }) }), - showGenericStatusEffects: new fields.BooleanField({ - initial: true, - label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.showGenericStatusEffects.label' + extendCharacterDescriptions: new BooleanField(), + extendAdversaryDescriptions: new BooleanField(), + extendEnvironmentDescriptions: new BooleanField(), + extendItemDescriptions: new BooleanField(), + expandRollMessage: new SchemaField({ + desc: new BooleanField(), + roll: new BooleanField(), + damage: new BooleanField(), + target: new BooleanField() }), - extendCharacterDescriptions: new fields.BooleanField({ - initial: false, - label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.extendCharacterDescriptions.label' - }), - extendAdversaryDescriptions: new fields.BooleanField({ - initial: false, - label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.extendAdversaryDescriptions.label' - }), - extendEnvironmentDescriptions: new fields.BooleanField({ - initial: false, - label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.extendEnvironmentDescriptions.label' - }), - extendItemDescriptions: new fields.BooleanField({ - initial: false, - label: 'DAGGERHEART.SETTINGS.Appearance.FIELDS.extendItemDescriptions.label' - }) + hideAttribution: new BooleanField(), + showGenericStatusEffects: new BooleanField({ initial: true }) }; } } diff --git a/module/data/settings/Automation.mjs b/module/data/settings/Automation.mjs index e1d63669..fbded2de 100644 --- a/module/data/settings/Automation.mjs +++ b/module/data/settings/Automation.mjs @@ -2,6 +2,10 @@ export default class DhAutomation extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; return { + summaryMessages: new fields.SchemaField({ + damage: new fields.BooleanField({ initial: true, label: 'DAGGERHEART.GENERAL.damage' }), + effects: new fields.BooleanField({ initial: true, label: 'DAGGERHEART.GENERAL.Effect.plural' }) + }), hopeFear: new fields.SchemaField({ gm: new fields.BooleanField({ required: true, @@ -64,21 +68,105 @@ export default class DhAutomation extends foundry.abstract.DataModel { }), characterDefault: new fields.StringField({ required: true, - choices: CONFIG.DH.GENERAL.defeatedConditions, - initial: CONFIG.DH.GENERAL.defeatedConditions.unconscious.id, + choices: CONFIG.DH.GENERAL.defeatedConditionChoices, + initial: CONFIG.DH.GENERAL.defeatedConditionChoices.unconscious.id, label: 'DAGGERHEART.SETTINGS.Automation.FIELDS.defeated.characterDefault.label' }), adversaryDefault: new fields.StringField({ required: true, - choices: CONFIG.DH.GENERAL.defeatedConditions, - initial: CONFIG.DH.GENERAL.defeatedConditions.defeated.id, + choices: CONFIG.DH.GENERAL.defeatedConditionChoices, + initial: CONFIG.DH.GENERAL.defeatedConditionChoices.dead.id, label: 'DAGGERHEART.SETTINGS.Automation.FIELDS.defeated.adversaryDefault.label' }), companionDefault: new fields.StringField({ required: true, - choices: CONFIG.DH.GENERAL.defeatedConditions, - initial: CONFIG.DH.GENERAL.defeatedConditions.defeated.id, + choices: CONFIG.DH.GENERAL.defeatedConditionChoices, + initial: CONFIG.DH.GENERAL.defeatedConditionChoices.defeated.id, label: 'DAGGERHEART.SETTINGS.Automation.FIELDS.defeated.companionDefault.label' + }), + deadIcon: new fields.FilePathField({ + initial: 'icons/magic/death/grave-tombstone-glow-teal.webp', + categories: ['IMAGE'], + base64: false, + label: 'Dead' + }), + defeatedIcon: new fields.FilePathField({ + initial: 'icons/magic/control/fear-fright-mask-orange.webp', + categories: ['IMAGE'], + base64: false, + label: 'Defeated' + }), + unconsciousIcon: new fields.FilePathField({ + initial: 'icons/magic/control/sleep-bubble-purple.webp', + categories: ['IMAGE'], + base64: false, + label: 'Unconcious' + }) + }), + roll: new fields.SchemaField({ + roll: new fields.SchemaField({ + gm: new fields.BooleanField({ + required: true, + initial: false, + label: 'DAGGERHEART.GENERAL.gm' + }), + players: new fields.BooleanField({ + required: true, + initial: false, + label: 'DAGGERHEART.GENERAL.player.plurial' + }) + }), + damage: new fields.SchemaField({ + gm: new fields.StringField({ + required: true, + initial: 'never', + choices: CONFIG.DH.SETTINGS.actionAutomationChoices, + label: 'DAGGERHEART.GENERAL.gm' + }), + players: new fields.StringField({ + required: true, + initial: 'never', + choices: CONFIG.DH.SETTINGS.actionAutomationChoices, + label: 'DAGGERHEART.GENERAL.player.plurial' + }) + }), + save: new fields.SchemaField({ + gm: new fields.StringField({ + required: true, + initial: 'never', + choices: CONFIG.DH.SETTINGS.actionAutomationChoices, + label: 'DAGGERHEART.GENERAL.gm' + }), + players: new fields.StringField({ + required: true, + initial: 'never', + choices: CONFIG.DH.SETTINGS.actionAutomationChoices, + label: 'DAGGERHEART.GENERAL.player.plurial' + }) + }), + damageApply: new fields.SchemaField({ + gm: new fields.BooleanField({ + required: true, + initial: false, + label: 'DAGGERHEART.GENERAL.gm' + }), + players: new fields.BooleanField({ + required: true, + initial: false, + label: 'DAGGERHEART.GENERAL.player.plurial' + }) + }), + effect: new fields.SchemaField({ + gm: new fields.BooleanField({ + required: true, + initial: false, + label: 'DAGGERHEART.GENERAL.gm' + }), + players: new fields.BooleanField({ + required: true, + initial: false, + label: 'DAGGERHEART.GENERAL.player.plurial' + }) }) }) }; diff --git a/module/data/settings/Homebrew.mjs b/module/data/settings/Homebrew.mjs index e18fee39..ca44a3ed 100644 --- a/module/data/settings/Homebrew.mjs +++ b/module/data/settings/Homebrew.mjs @@ -108,7 +108,42 @@ export default class DhHomebrew extends foundry.abstract.DataModel { }), description: new fields.HTMLField() }) - ) + ), + adversaryTypes: new fields.TypedObjectField( + new fields.SchemaField({ + id: new fields.StringField({ required: true }), + label: new fields.StringField({ required: true, label: 'DAGGERHEART.GENERAL.label' }), + description: new fields.StringField() + }) + ), + itemFeatures: new fields.SchemaField({ + weaponFeatures: new fields.TypedObjectField( + new fields.SchemaField({ + name: new fields.StringField({ required: true }), + img: new fields.FilePathField({ + initial: 'icons/magic/life/cross-worn-green.webp', + categories: ['IMAGE'], + base64: false + }), + description: new fields.HTMLField(), + actions: new ActionsField(), + effects: new fields.ArrayField(new fields.ObjectField()) + }) + ), + armorFeatures: new fields.TypedObjectField( + new fields.SchemaField({ + name: new fields.StringField({ required: true }), + img: new fields.FilePathField({ + initial: 'icons/magic/life/cross-worn-green.webp', + categories: ['IMAGE'], + base64: false + }), + description: new fields.HTMLField(), + actions: new ActionsField(), + effects: new fields.ArrayField(new fields.ObjectField()) + }) + ) + }) }; } } diff --git a/module/data/tagTeamRoll.mjs b/module/data/tagTeamRoll.mjs new file mode 100644 index 00000000..de71a11b --- /dev/null +++ b/module/data/tagTeamRoll.mjs @@ -0,0 +1,20 @@ +import { DhCharacter } from './actor/_module.mjs'; + +export default class DhTagTeamRoll extends foundry.abstract.DataModel { + static defineSchema() { + const fields = foundry.data.fields; + + return { + initiator: new fields.SchemaField({ + id: new fields.StringField({ nullable: true, initial: null }), + cost: new fields.NumberField({ integer: true, min: 0, initial: 3 }) + }), + members: new fields.TypedObjectField( + new fields.SchemaField({ + messageId: new fields.StringField({ required: true, nullable: true, initial: null }), + selected: new fields.BooleanField({ required: true, initial: false }) + }) + ) + }; + } +} diff --git a/module/dice/d20Roll.mjs b/module/dice/d20Roll.mjs index 63d84744..f0660106 100644 --- a/module/dice/d20Roll.mjs +++ b/module/dice/d20Roll.mjs @@ -128,7 +128,9 @@ export default class D20Roll extends DHRoll { applyBaseBonus() { const modifiers = foundry.utils.deepClone(this.options.roll.baseModifiers) ?? []; - modifiers.push(...this.getBonus(`roll.${this.options.type}`, `${this.options.type?.capitalize()} Bonus`)); + modifiers.push( + ...this.getBonus(`roll.${this.options.actionType}`, `${this.options.actionType?.capitalize()} Bonus`) + ); modifiers.push( ...this.getBonus(`roll.${this.options.roll.type}`, `${this.options.roll.type?.capitalize()} Bonus`) ); @@ -138,7 +140,7 @@ export default class D20Roll extends DHRoll { static postEvaluate(roll, config = {}) { const data = super.postEvaluate(roll, config); - data.type = config.roll?.type; + data.type = config.actionType; data.difficulty = config.roll.difficulty; if (config.targets?.length) { config.targets.forEach(target => { @@ -147,6 +149,7 @@ export default class D20Roll extends DHRoll { }); data.success = config.targets.some(target => target.hit); } else if (config.roll.difficulty) data.success = roll.isCritical || roll.total >= config.roll.difficulty; + config.successConsumed = data.success; data.advantage = { type: config.roll.advantage, diff --git a/module/dice/damageRoll.mjs b/module/dice/damageRoll.mjs index aa9e1d94..c10ee6ff 100644 --- a/module/dice/damageRoll.mjs +++ b/module/dice/damageRoll.mjs @@ -1,4 +1,5 @@ import DamageDialog from '../applications/dialogs/damageDialog.mjs'; +import { RefreshType, socketEvent } from '../systemRegistration/socket.mjs'; import DHRoll from './dhRoll.mjs'; export default class DamageRoll extends DHRoll { @@ -9,6 +10,7 @@ export default class DamageRoll extends DHRoll { static DefaultDialog = DamageDialog; static async buildEvaluate(roll, config = {}, message = {}) { + if (config.dialog.configure === false) roll.constructFormula(config); if (config.evaluate !== false) for (const roll of config.roll) await roll.roll.evaluate(); roll._evaluated = true; @@ -46,9 +48,7 @@ export default class DamageRoll extends DHRoll { ); } await super.buildPost(roll, config, message); - if (config.source?.message) { - chatMessage.update({ 'system.damage': config.damage }); - } + if (config.source?.message) chatMessage.update({ 'system.damage': config.damage }); } static unifyDamageRoll(rolls) { @@ -339,5 +339,13 @@ export default class DamageRoll extends DHRoll { parts: damageParts } }); + + Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll }); + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.Refresh, + data: { + refreshType: RefreshType.TagTeamRoll + } + }); } } diff --git a/module/dice/dhRoll.mjs b/module/dice/dhRoll.mjs index 6d691c20..c9bda197 100644 --- a/module/dice/dhRoll.mjs +++ b/module/dice/dhRoll.mjs @@ -28,6 +28,11 @@ export default class DHRoll extends Roll { static async buildConfigure(config = {}, message = {}) { config.hooks = [...this.getHooks(), '']; config.dialog ??= {}; + + const actorIdSplit = config.source.actor.split('.'); + const tagTeamSettings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll); + config.tagTeamSelected = tagTeamSettings.members[actorIdSplit[actorIdSplit.length - 1]]; + for (const hook of config.hooks) { if (Hooks.call(`${CONFIG.DH.id}.preRoll${hook.capitalize()}`, config, message) === false) return null; } @@ -65,8 +70,13 @@ export default class DHRoll extends Roll { if (Hooks.call(`${CONFIG.DH.id}.postRoll${hook.capitalize()}`, config, message) === false) return null; } - // Create Chat Message - if (!config.source?.message) config.message = await this.toMessage(roll, config); + if (config.skips?.createMessage) { + if (game.modules.get('dice-so-nice')?.active) { + await game.dice3d.showForRoll(roll, game.user, true); + } + } else if (!config.source?.message) { + config.message = await this.toMessage(roll, config); + } } static postEvaluate(roll, config = {}) { @@ -84,18 +94,31 @@ export default class DHRoll extends Roll { static async toMessage(roll, config) { const cls = getDocumentClass('ChatMessage'), - msg = { + msgData = { type: this.messageType, user: game.user.id, title: roll.title, - speaker: cls.getSpeaker(), + speaker: cls.getSpeaker({ actor: roll.data?.parent }), sound: config.mute ? null : CONFIG.sounds.dice, system: config, rolls: [roll] }; + config.selectedRollMode ??= game.settings.get('core', 'rollMode'); - if (roll._evaluated) return await cls.create(msg, { rollMode: config.selectedRollMode }); - return msg; + + if (roll._evaluated) { + const message = await cls.create(msgData, { rollMode: config.selectedRollMode }); + + if (config.tagTeamSelected) { + game.system.api.applications.dialogs.TagTeamDialog.assignRoll(message.speakerActor, message); + } + + if (game.modules.get('dice-so-nice')?.active) { + await game.dice3d.waitFor3DAnimationByMessageID(message.id); + } + + return message; + } else return msgData; } /** @inheritDoc */ @@ -218,10 +241,11 @@ export const registerRollDiceHooks = () => { if ( !config.source?.actor || (game.user.isGM ? !hopeFearAutomation.gm : !hopeFearAutomation.players) || - config.roll.type === 'reaction' + config.actionType === 'reaction' || + config.tagTeamSelected || + config.skips?.resources ) return; - const actor = await fromUuid(config.source.actor); let updates = []; if (!actor) return; diff --git a/module/dice/dualityRoll.mjs b/module/dice/dualityRoll.mjs index ac1047ab..813c913b 100644 --- a/module/dice/dualityRoll.mjs +++ b/module/dice/dualityRoll.mjs @@ -19,7 +19,7 @@ export default class DualityRoll extends D20Roll { get title() { return game.i18n.localize( - `DAGGERHEART.GENERAL.${this.options?.roll?.type === CONFIG.DH.ITEM.actionTypes.reaction.id ? 'reactionRoll' : 'dualityRoll'}` + `DAGGERHEART.GENERAL.${this.options?.actionType === CONFIG.DH.ITEM.actionTypes.reaction.id ? 'reactionRoll' : 'dualityRoll'}` ); } @@ -154,9 +154,12 @@ export default class DualityRoll extends D20Roll { applyBaseBonus() { const modifiers = super.applyBaseBonus(); - if (this.options.roll.trait && this.data.traits[this.options.roll.trait]) + if (this.options.roll.trait && this.data.traits?.[this.options.roll.trait]) modifiers.unshift({ - label: `DAGGERHEART.CONFIG.Traits.${this.options.roll.trait}.name`, + label: + this.options.roll.type === CONFIG.DH.GENERAL.rollTypes.spellcast.id + ? 'DAGGERHEART.CONFIG.RollTypes.spellcast.name' + : `DAGGERHEART.CONFIG.Traits.${this.options.roll.trait}.name`, value: this.data.traits[this.options.roll.trait].value }); @@ -253,9 +256,11 @@ export default class DualityRoll extends D20Roll { }); newRoll.extra = newRoll.extra.slice(2); + const tagTeamSettings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll); Hooks.call(`${CONFIG.DH.id}.postRollDuality`, { source: { actor: message.system.source.actor ?? '' }, targets: message.system.targets, + tagTeamSelected: Object.values(tagTeamSettings.members).some(x => x.messageId === message._id), roll: newRoll, rerolledRoll: newRoll.result.duality !== message.system.roll.result.duality ? message.system.roll : undefined diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 9a22eb44..8faf1350 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -1,17 +1,22 @@ import { emitAsGM, GMUpdateEvent } from '../systemRegistration/socket.mjs'; import { LevelOptionType } from '../data/levelTier.mjs'; import DHFeature from '../data/item/feature.mjs'; -import { damageKeyToNumber } from '../helpers/utils.mjs'; +import { createScrollText, damageKeyToNumber } from '../helpers/utils.mjs'; import DhCompanionLevelUp from '../applications/levelup/companionLevelup.mjs'; export default class DhpActor extends Actor { + parties = new Set(); + + #scrollTextQueue = []; + #scrollTextInterval; + /** * Return the first Actor active owner. */ get owner() { const user = this.hasPlayerOwner && game.users.players.find(u => this.testUserPermission(u, 'OWNER') && u.active); - if (!user) return game.user.isGM ? game.user : null; + if (!user) return game.users.activeGM; return user; } @@ -71,7 +76,7 @@ export default class DhpActor extends Actor { // Configure prototype token settings const prototypeToken = {}; - if (['character', 'companion'].includes(this.type)) + if (['character', 'companion', 'party'].includes(this.type)) Object.assign(prototypeToken, { sight: { enabled: true }, actorLink: true, @@ -80,6 +85,20 @@ export default class DhpActor extends Actor { this.updateSource({ prototypeToken }); } + _onUpdate(changes, options, userId) { + super._onUpdate(changes, options, userId); + for (const party of this.parties) { + party.render(); + } + } + + _onDelete(options, userId) { + super._onDelete(options, userId); + for (const party of this.parties) { + party.render(); + } + } + async updateLevel(newLevel) { if (!['character', 'companion'].includes(this.type) || newLevel === this.system.levelData.level.changed) return; @@ -498,6 +517,7 @@ export default class DhpActor extends Actor { /**@inheritdoc */ getRollData() { const rollData = super.getRollData(); + rollData.name = this.name; rollData.system = this.system.getRollData(); rollData.prof = this.system.proficiency ?? 1; rollData.cast = this.system.spellcastModifier ?? 1; @@ -523,7 +543,7 @@ export default class DhpActor extends Actor { return canUseArmor || canUseStress; } - async takeDamage(damages) { + async takeDamage(damages, isDirect = false) { if (Hooks.call(`${CONFIG.DH.id}.preTakeDamage`, this, damages) === false) return null; if (this.type === 'companion') { @@ -554,6 +574,7 @@ export default class DhpActor extends Actor { hpDamage.value = this.convertDamageToThreshold(hpDamage.value); if ( this.type === 'character' && + !isDirect && this.system.armor && this.#canReduceDamage(hpDamage.value, hpDamage.damageTypes) ) { @@ -594,6 +615,8 @@ export default class DhpActor extends Actor { await this.modifyResource(updates); if (Hooks.call(`${CONFIG.DH.id}.postTakeDamage`, this, updates) === false) return null; + + return updates; } calculateDamage(baseDamage, type) { @@ -642,6 +665,8 @@ export default class DhpActor extends Actor { await this.modifyResource(updates); if (Hooks.call(`${CONFIG.DH.id}.postTakeHealing`, this, updates) === false) return null; + + return updates; } async modifyResource(resources) { @@ -655,13 +680,22 @@ export default class DhpActor extends Actor { }; resources.forEach(r => { - if (r.keyIsID) { - updates.items[r.key] = { - target: r.target, - resources: { - 'system.resource.value': r.target.system.resource.value + r.value - } - }; + if (r.itemId) { + const { path, value } = game.system.api.fields.ActionFields.CostField.getItemIdCostUpdate(r); + + if ( + r.key === 'quantity' && + r.target.type === 'consumable' && + value === 0 && + r.target.system.destroyOnEmpty + ) { + r.target.delete(); + } else { + updates.items[r.key] = { + target: r.target, + resources: { [path]: value } + }; + } } else { switch (r.key) { case 'fear': @@ -735,7 +769,7 @@ export default class DhpActor extends Actor { async toggleDefeated(defeatedState) { const settings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).defeated; - const { unconscious, defeated, dead } = CONFIG.DH.GENERAL.conditions; + const { unconscious, defeated, dead } = CONFIG.DH.GENERAL.conditions(); const defeatedConditions = new Set([unconscious.id, defeated.id, dead.id]); if (!defeatedState) { for (let defeatedId of defeatedConditions) { @@ -750,6 +784,25 @@ export default class DhpActor extends Actor { } } + queueScrollText(scrollingTextData) { + this.#scrollTextQueue.push(...scrollingTextData.map(data => () => createScrollText(this, data))); + if (!this.#scrollTextInterval) { + const scrollFunc = this.#scrollTextQueue.pop(); + scrollFunc?.(); + + const intervalFunc = () => { + const scrollFunc = this.#scrollTextQueue.pop(); + scrollFunc?.(); + if (this.#scrollTextQueue.length === 0) { + clearInterval(this.#scrollTextInterval); + this.#scrollTextInterval = null; + } + }; + + this.#scrollTextInterval = setInterval(intervalFunc.bind(this), 600); + } + } + /** @inheritdoc */ async importFromJSON(json) { if (!this.type === 'character') return await super.importFromJSON(json); @@ -771,4 +824,14 @@ export default class DhpActor extends Actor { return await super.importFromJSON(json); } + + /** + * Generate an array of localized tag. + * @returns {string[]} An array of localized tag strings. + */ + _getTags() { + const tags = []; + if (this.system._getTags) tags.push(...this.system._getTags()); + return tags; + } } diff --git a/module/documents/chatMessage.mjs b/module/documents/chatMessage.mjs index b8667384..ec4c5a49 100644 --- a/module/documents/chatMessage.mjs +++ b/module/documents/chatMessage.mjs @@ -1,3 +1,5 @@ +import { emitAsGM, GMUpdateEvent, RefreshType, socketEvent } from '../systemRegistration/socket.mjs'; + export default class DhpChatMessage extends foundry.documents.ChatMessage { targetHook = null; @@ -14,7 +16,7 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage { const html = await super.renderHTML({ actor: actorData, author: this.author }); if (this.flags.core?.RollTable) { - html.querySelector('.roll-buttons.apply-buttons').remove(); + html.querySelector('.roll-buttons.apply-buttons')?.remove(); } this.enrichChatMessage(html); @@ -47,6 +49,18 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage { return super._preDelete(options, user); } + /** @inheritDoc */ + _onUpdate(changes, options, userId) { + super._onUpdate(changes, options, userId); + + const lastMessage = Array.from(game.messages).sort((a, b) => b.timestamp - a.timestamp)[0]; + if (lastMessage.id === this.id && ui.chat.isAtBottom) { + setTimeout(() => { + ui.chat.scrollBottom(); + }, 5); + } + } + enrichChatMessage(html) { const elements = html.querySelectorAll('[data-perm-id]'); elements.forEach(e => { @@ -73,21 +87,47 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage { break; } } + + const autoExpandRoll = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.appearance + ).expandRollMessage, + rollSections = html.querySelectorAll('.roll-part'), + itemDesc = html.querySelector('.domain-card-move'); + rollSections.forEach(s => { + if (s.classList.contains('roll-section')) { + const toExpand = s.querySelector('[data-action="expandRoll"]'); + toExpand.classList.toggle('expanded', autoExpandRoll.roll); + } else if (s.classList.contains('damage-section')) + s.classList.toggle('expanded', autoExpandRoll.damage); + else if (s.classList.contains('target-section')) s.classList.toggle('expanded', autoExpandRoll.target); + }); + if (itemDesc && autoExpandRoll.desc) itemDesc.setAttribute('open', ''); } - if (!game.user.isGM) { + if (!this.isAuthor && !this.speakerActor?.isOwner) { const applyButtons = html.querySelector('.apply-buttons'); applyButtons?.remove(); - if (!this.isAuthor && !this.speakerActor?.isOwner) { - const buttons = html.querySelectorAll('.ability-card-footer > .ability-use-button'); - buttons.forEach(b => b.remove()); - } + const buttons = html.querySelectorAll('.ability-card-footer > .ability-use-button'); + buttons.forEach(b => b.remove()); } } addChatListeners(html) { + html.querySelectorAll('.duality-action-damage').forEach(element => + element.addEventListener('click', this.onRollDamage.bind(this)) + ); + html.querySelectorAll('.damage-button').forEach(element => - element.addEventListener('click', this.onDamage.bind(this)) + element.addEventListener('click', this.onApplyDamage.bind(this)) + ); + + html.querySelectorAll('.target-save').forEach(element => + element.addEventListener('click', this.onRollSave.bind(this)) + ); + + html.querySelectorAll('.roll-all-save-button').forEach(element => + element.addEventListener('click', this.onRollAllSave.bind(this)) ); html.querySelectorAll('.duality-action-effect').forEach(element => @@ -103,19 +143,37 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage { html.querySelectorAll('.button-target-selection').forEach(element => { element.addEventListener('click', this.onTargetSelection.bind(this)); }); + + html.querySelectorAll('.token-target-container').forEach(element => { + element.addEventListener('pointerover', this.hoverTarget); + element.addEventListener('pointerout', this.unhoverTarget); + element.addEventListener('click', this.clickTarget); + }); } - getTargetList() { - const targets = this.system.hitTargets ?? []; - return targets.map(target => game.canvas.tokens.documentCollection.find(t => t.actor?.uuid === target.actorId)); - } - - async onDamage(event) { + async onRollDamage(event) { event.stopPropagation(); - const targets = this.getTargetList(); + const config = foundry.utils.deepClone(this.system); + config.event = event; + await this.system.action?.workflow.get('damage')?.execute(config, this._id, true); + + Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.TagTeamRoll }); + await game.socket.emit(`system.${CONFIG.DH.id}`, { + action: socketEvent.Refresh, + data: { + refreshType: RefreshType.TagTeamRoll + } + }); + } + + async onApplyDamage(event) { + event.stopPropagation(); + const targets = this.filterPermTargets(this.system.hitTargets), + config = foundry.utils.deepClone(this.system); + config.event = event; if (this.system.onSave) { - const pendingingSaves = this.system.hitTargets.filter(t => t.saved.success === null); + const pendingingSaves = targets.filter(t => t.saved.success === null); if (pendingingSaves.length) { const confirm = await foundry.applications.api.DialogV2.confirm({ window: { title: 'Pending Reaction Rolls found' }, @@ -126,62 +184,66 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage { } if (targets.length === 0) - return ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noTargetsSelected')); + return ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noTargetsSelectedOrPerm')); - for (let target of targets) { - let damages = foundry.utils.deepClone(this.system.damage); - if ( - !this.system.hasHealing && - this.system.onSave && - this.system.hitTargets.find(t => t.id === target.id)?.saved?.success === true - ) { - const mod = CONFIG.DH.ACTIONS.damageOnSave[this.system.onSave]?.mod ?? 1; - Object.entries(damages).forEach(([k, v]) => { - v.total = 0; - v.parts.forEach(part => { - part.total = Math.ceil(part.total * mod); - v.total += part.total; - }); - }); - } + this.consumeOnSuccess(); + this.system.action?.workflow.get('applyDamage')?.execute(config, targets, true); + } - this.consumeOnSuccess(); - if (this.system.hasHealing) target.actor.takeHealing(damages); - else target.actor.takeDamage(damages); + async onRollSave(event) { + event.stopPropagation(); + const tokenId = event.target.closest('[data-token]')?.dataset.token, + token = game.canvas.tokens.get(tokenId); + if (!token?.actor || !token.isOwner) return true; + if (this.system.source.item && this.system.source.action) { + const action = this.system.action; + if (!action || !action?.hasSave) return; + game.system.api.fields.ActionFields.SaveField.rollSave.call(action, token.actor, event).then(result => + emitAsGM( + GMUpdateEvent.UpdateSaveMessage, + game.system.api.fields.ActionFields.SaveField.updateSaveMessage.bind( + action, + result, + this, + token.id + ), + { + action: action.uuid, + message: this._id, + token: token.id, + result + } + ) + ); } } - getAction(actor, itemId, actionId) { - const item = actor.items.get(itemId), - action = - actor.system.attack?._id === actionId - ? actor.system.attack - : item.system.attack?._id === actionId - ? item.system.attack - : item?.system?.actions?.get(actionId); - return action; + async onRollAllSave(event) { + event.stopPropagation(); + if (!game.user.isGM) return; + const targets = this.system.hitTargets, + config = foundry.utils.deepClone(this.system); + config.event = event; + this.system.action?.workflow.get('save')?.execute(config, targets, true); } async onApplyEffect(event) { event.stopPropagation(); - const actor = await foundry.utils.fromUuid(this.system.source.actor); - if (!actor || !game.user.isGM) return true; - if (this.system.source.item && this.system.source.action) { - const action = this.getAction(actor, this.system.source.item, this.system.source.action); - if (!action || !action?.applyEffects) return; - const targets = this.getTargetList(); - if (targets.length === 0) - ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noTargetsSelected')); - this.consumeOnSuccess(); - await action.applyEffects(event, this, targets); - } + const targets = this.filterPermTargets(this.system.hitTargets), + config = foundry.utils.deepClone(this.system); + config.event = event; + if (targets.length === 0) + ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noTargetsSelectedOrPerm')); + this.consumeOnSuccess(); + this.system.action?.workflow.get('effects')?.execute(config, targets, true); + } + + filterPermTargets(targets) { + return targets.filter(t => fromUuidSync(t.actorId)?.canUserModify(game.user, 'update')); } consumeOnSuccess() { - if (!this.system.successConsumed && !this.targetSelection) { - const action = this.system.action; - if (action) action.consume(this.system, true); - } + if (!this.system.successConsumed && !this.targetSelection) this.system.action?.consume(this.system, true); } hoverTarget(event) { diff --git a/module/documents/item.mjs b/module/documents/item.mjs index 8492f068..33daf52a 100644 --- a/module/documents/item.mjs +++ b/module/documents/item.mjs @@ -32,7 +32,7 @@ export default class DHItem extends foundry.documents.Item { /** @inheritDoc */ static migrateData(source) { - if(source.system?.attack && !source.system.attack.type) source.system.attack.type = "attack"; + if (source.system?.attack && !source.system.attack.type) source.system.attack.type = 'attack'; return super.migrateData(source); } diff --git a/module/documents/templateManager.mjs b/module/documents/templateManager.mjs index c31b1baa..cf15c2e3 100644 --- a/module/documents/templateManager.mjs +++ b/module/documents/templateManager.mjs @@ -57,7 +57,10 @@ export default class DhTemplateManager { * @param {wheel Event} event */ #onMouseWheel(event) { - if (!event.shiftKey) return; + if (!this.#activePreview) { + return; + } + if (!event.shiftKey && !event.ctrlKey) return; event.stopPropagation(); event.preventDefault(); const { moveTime, object } = this.#activePreview; @@ -66,8 +69,10 @@ export default class DhTemplateManager { if (now - (moveTime || 0) <= 16) return; this.#activePreview.moveTime = now; + const multiplier = event.shiftKey ? 0.2 : 0.1; + object.document.updateSource({ - direction: object.document.direction + event.deltaY * 0.2 + direction: object.document.direction + event.deltaY * multiplier }); object.renderFlags.set({ refresh: true }); } @@ -77,12 +82,13 @@ export default class DhTemplateManager { * @param {contextmenu Event} event */ #cancelTemplate(event) { - const { mousemove, mousedown, contextmenu } = this.#activePreview.events; + const { mousemove, mousedown, contextmenu, wheel } = this.#activePreview.events; canvas.templates._onDragLeftCancel(event); canvas.stage.off('mousemove', mousemove); canvas.stage.off('mousedown', mousedown); canvas.app.view.removeEventListener('contextmenu', contextmenu); + canvas.app.view.removeEventListener('wheel', wheel); } /** @@ -91,9 +97,9 @@ export default class DhTemplateManager { */ #confirmTemplate(event) { event.stopPropagation(); + this.#cancelTemplate(event); canvas.scene.createEmbeddedDocuments('MeasuredTemplate', [this.#activePreview.document.toObject()]); - - this.#cancelTemplate(event); + this.#activePreview = undefined; } } diff --git a/module/enrichers/DamageEnricher.mjs b/module/enrichers/DamageEnricher.mjs index a52c4b31..e3f9c42a 100644 --- a/module/enrichers/DamageEnricher.mjs +++ b/module/enrichers/DamageEnricher.mjs @@ -1,29 +1,8 @@ +import { parseInlineParams } from './parser.mjs'; + export default function DhDamageEnricher(match, _options) { - const parts = match[1].split('|').map(x => x.trim()); - - let value = null, - type = null, - inline = false; - - parts.forEach(part => { - const split = part.split(':').map(x => x.toLowerCase().trim()); - if (split.length === 2) { - switch (split[0]) { - case 'value': - value = split[1]; - break; - case 'type': - type = split[1]; - break; - case 'inline': - inline = true; - break; - } - } - }); - - if (!value || !value) return match[0]; - + const { value, type, inline } = parseInlineParams(match[1]); + if (!value || !type) return match[0]; return getDamageMessage(value, type, inline, match[0]); } diff --git a/module/enrichers/DualityRollEnricher.mjs b/module/enrichers/DualityRollEnricher.mjs index 73d4f25a..1d6404ff 100644 --- a/module/enrichers/DualityRollEnricher.mjs +++ b/module/enrichers/DualityRollEnricher.mjs @@ -9,12 +9,12 @@ export default function DhDualityRollEnricher(match, _options) { } function getDualityMessage(roll, flavor) { - const trait = roll.trait && abilities[roll.trait] ? game.i18n.localize(abilities[roll.trait].label) : null; + const trait = roll?.trait && abilities[roll.trait] ? game.i18n.localize(abilities[roll.trait].label) : null; const label = flavor ?? - (roll.trait + (roll?.trait ? game.i18n.format('DAGGERHEART.GENERAL.rollWith', { roll: trait }) - : roll.reaction + : roll?.reaction ? game.i18n.localize('DAGGERHEART.GENERAL.reactionRoll') : game.i18n.localize('DAGGERHEART.GENERAL.duality')); @@ -22,9 +22,9 @@ function getDualityMessage(roll, flavor) { ? game.i18n.localize(abilities[roll.trait].label) : game.i18n.localize('DAGGERHEART.GENERAL.duality'); - const advantage = roll.advantage + const advantage = roll?.advantage ? CONFIG.DH.ACTIONS.advantageState.advantage.value - : roll.disadvantage + : roll?.disadvantage ? CONFIG.DH.ACTIONS.advantageState.disadvantage.value : undefined; const advantageLabel = @@ -36,21 +36,21 @@ function getDualityMessage(roll, flavor) { const dualityElement = document.createElement('span'); dualityElement.innerHTML = ` - `; diff --git a/module/enrichers/LookupEnricher.mjs b/module/enrichers/LookupEnricher.mjs new file mode 100644 index 00000000..3566e112 --- /dev/null +++ b/module/enrichers/LookupEnricher.mjs @@ -0,0 +1,8 @@ +import { parseInlineParams } from './parser.mjs'; + +export default function DhLookupEnricher(match, { rollData }) { + const results = parseInlineParams(match[1], { first: 'formula' }); + const element = document.createElement('span'); + element.textContent = Roll.replaceFormulaData(String(results.formula), rollData); + return element; +} diff --git a/module/enrichers/TemplateEnricher.mjs b/module/enrichers/TemplateEnricher.mjs index 35a3e231..4b9b052e 100644 --- a/module/enrichers/TemplateEnricher.mjs +++ b/module/enrichers/TemplateEnricher.mjs @@ -1,41 +1,46 @@ +import { parseInlineParams } from './parser.mjs'; + export default function DhTemplateEnricher(match, _options) { - const parts = match[1].split('|').map(x => x.trim()); + const params = parseInlineParams(match[1]); + const { type, angle = CONFIG.MeasuredTemplate.defaults.angle, inline = false } = params; + const direction = Number(params.direction) || 0; + const range = + params.range && Number.isNaN(Number(params.range)) + ? Object.values(CONFIG.DH.GENERAL.templateRanges).find( + x => x.id.toLowerCase() === params.range || x.short === params.range + )?.id + : params.range; - let type = null, - range = null, - inline = false; - - parts.forEach(part => { - const split = part.split(':').map(x => x.toLowerCase().trim()); - if (split.length === 2) { - switch (split[0]) { - case 'type': - const matchedType = Object.values(CONFIG.DH.GENERAL.templateTypes).find( - x => x.toLowerCase() === split[1] - ); - type = matchedType; - break; - case 'range': - const matchedRange = Object.values(CONFIG.DH.GENERAL.templateRanges).find( - x => x.id.toLowerCase() === split[1] || x.short === split[1] - ); - range = matchedRange?.id; - break; - case 'inline': - inline = true; - break; - } - } - }); - - if (!type || !range) return match[0]; + if (!Object.values(CONFIG.DH.GENERAL.templateTypes).find(x => x === type) || !range) return match[0]; const label = game.i18n.localize(`DAGGERHEART.CONFIG.TemplateTypes.${type}`); + const rangeDisplay = Number.isNaN(Number(range)) + ? game.i18n.localize(`DAGGERHEART.CONFIG.Range.${range}.name`) + : range; + + let angleDisplay = ''; + if (angle != CONFIG.MeasuredTemplate.defaults.angle) { + angleDisplay = 'angle:' + angle; + } + let directionDisplay = ''; + if (direction != 0) { + directionDisplay = 'direction:' + direction; + } + + let extraDisplay = ''; + if (angleDisplay != '' && directionDisplay != '') { + extraDisplay = ' (' + angleDisplay + '|' + directionDisplay + ')'; + } else if (angleDisplay != '') { + extraDisplay = ' (' + angleDisplay + ')'; + } else if (directionDisplay != '') { + extraDisplay = ' (' + directionDisplay + ')'; + } const templateElement = document.createElement('span'); templateElement.innerHTML = ` - `; @@ -45,21 +50,26 @@ export default function DhTemplateEnricher(match, _options) { export const renderMeasuredTemplate = async event => { const button = event.currentTarget, type = button.dataset.type, - range = button.dataset.range; + range = button.dataset.range, + angle = button.dataset.angle, + direction = button.dataset.direction; if (!type || !range || !game.canvas.scene) return; const usedType = type === 'inFront' ? 'cone' : type === 'emanation' ? 'circle' : type; - const angle = + const usedAngle = type === CONST.MEASURED_TEMPLATE_TYPES.CONE - ? CONFIG.MeasuredTemplate.defaults.angle + ? (angle ?? CONFIG.MeasuredTemplate.defaults.angle) : type === CONFIG.DH.GENERAL.templateTypes.INFRONT ? '180' : undefined; - const baseDistance = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement[ - range - ]; + let baseDistance = range; + if (Number.isNaN(Number(range))) { + baseDistance = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement[ + range + ]; + } const distance = type === CONFIG.DH.GENERAL.templateTypes.EMANATION ? baseDistance + 2.5 : baseDistance; const { width, height } = game.canvas.scene.dimensions; @@ -69,7 +79,8 @@ export const renderMeasuredTemplate = async event => { t: usedType, distance: distance, width: type === CONST.MEASURED_TEMPLATE_TYPES.RAY ? 5 : undefined, - angle: angle + angle: usedAngle, + direction: direction }; CONFIG.ux.TemplateManager.createPreview(data); diff --git a/module/enrichers/_module.mjs b/module/enrichers/_module.mjs index deec4250..794756f4 100644 --- a/module/enrichers/_module.mjs +++ b/module/enrichers/_module.mjs @@ -2,6 +2,7 @@ import { default as DhDamageEnricher, renderDamageButton } from './DamageEnriche import { default as DhDualityRollEnricher, renderDualityButton } from './DualityRollEnricher.mjs'; import { default as DhEffectEnricher } from './EffectEnricher.mjs'; import { default as DhTemplateEnricher, renderMeasuredTemplate } from './TemplateEnricher.mjs'; +import { default as DhLookupEnricher } from './LookupEnricher.mjs'; export { DhDamageEnricher, DhDualityRollEnricher, DhEffectEnricher, DhTemplateEnricher }; @@ -21,6 +22,10 @@ export const enricherConfig = [ { pattern: /@Template\[(.*)\]({.*})?/g, enricher: DhTemplateEnricher + }, + { + pattern: /@Lookup\[(.*)\]({.*})?/g, + enricher: DhLookupEnricher } ]; diff --git a/module/enrichers/parser.mjs b/module/enrichers/parser.mjs new file mode 100644 index 00000000..365caec9 --- /dev/null +++ b/module/enrichers/parser.mjs @@ -0,0 +1,20 @@ +/** + * @param {string} paramString The parameter inside the brackets of something like @Template[] to parse + * @param {Object} options + * @param {string} options.first If set, the first parameter is treated as a value with this as its key + * @returns {Record | null} + */ +export function parseInlineParams(paramString, { first } = {}) { + const parts = paramString.split('|').map(x => x.trim()); + const params = {}; + for (const [idx, param] of parts.entries()) { + if (first && idx === 0) { + params[first] = param; + } else { + const parts = param.split(':'); + params[parts[0]] = parts.length > 1 ? parts[1] : true; + } + } + + return params; +} diff --git a/module/helpers/handlebarsHelper.mjs b/module/helpers/handlebarsHelper.mjs index 171255e2..2aa72dfc 100644 --- a/module/helpers/handlebarsHelper.mjs +++ b/module/helpers/handlebarsHelper.mjs @@ -13,7 +13,10 @@ export default class RegisterHandlebarsHelpers { hasProperty: foundry.utils.hasProperty, getProperty: foundry.utils.getProperty, setVar: this.setVar, - empty: this.empty + empty: this.empty, + pluralize: this.pluralize, + positive: this.positive, + isNullish: this.isNullish }); } static add(a, b) { @@ -64,7 +67,7 @@ export default class RegisterHandlebarsHelpers { return isNumerical ? (!result ? 0 : Number(result)) : result; } - static setVar(name, value, context) { + static setVar(name, value) { this[name] = value; } @@ -72,4 +75,28 @@ export default class RegisterHandlebarsHelpers { if (!(typeof object === 'object')) return true; return Object.keys(object).length === 0; } + + /** + * Pluralize helper that returns the appropriate localized string based on count + * @param {number} count - The number to check for plurality + * @param {string} baseKey - The base localization key (e.g., "DAGGERHEART.GENERAL.Target") + * @returns {string} The localized singular or plural string + * + * Usage: {{pluralize currentTargets.length "DAGGERHEART.GENERAL.Target"}} + * Returns: "Target" if count is exactly 1, "Targets" if count is 0, 2+, or invalid + */ + static pluralize(count, baseKey) { + const numericCount = Number(count); + const isSingular = !isNaN(numericCount) && numericCount === 1; + const key = isSingular ? `${baseKey}.single` : `${baseKey}.plural`; + return game.i18n.localize(key); + } + + static positive(a) { + return Math.abs(Number(a)); + } + + static isNullish(a) { + return a === null || a === undefined; + } } diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index 6f4e5a26..3044cd71 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -177,7 +177,7 @@ Roll.replaceFormulaData = function (formula, data = {}, { missing, warn = false return nativeReplaceFormulaData(formula, data, { missing, warn }); }; -foundry.dice.terms.Die.MODIFIERS.sc = 'selfCorrecting'; +foundry.utils.setProperty(foundry, 'dice.terms.Die.MODIFIERS.sc', 'selfCorrecting'); /** * Return the configured value as result if 1 is rolled @@ -371,17 +371,15 @@ export function getScrollTextData(resources, resource, key) { return { text, stroke, fill, direction }; } -export function createScrollText(actor, optionsData) { - if (actor && optionsData?.length) { +export function createScrollText(actor, data) { + if (actor) { actor.getActiveTokens().forEach(token => { - optionsData.forEach(data => { - const { text, ...options } = data; - canvas.interface.createScrollingText(token.getCenterPoint(), data.text, { - duration: 2000, - distance: token.h, - jitter: 0, - ...options - }); + const { text, ...options } = data; + canvas.interface.createScrollingText(token.getCenterPoint(), data.text, { + duration: 2000, + distance: token.h, + jitter: 0, + ...options }); }); } @@ -420,3 +418,15 @@ export async function createEmbeddedItemsWithEffects(actor, baseData) { export const slugify = name => { return name.toLowerCase().replaceAll(' ', '-').replaceAll('.', ''); }; + +export function shuffleArray(array) { + let currentIndex = array.length; + while (currentIndex != 0) { + let randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex--; + + [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]]; + } + + return array; +} diff --git a/module/systemRegistration/handlebars.mjs b/module/systemRegistration/handlebars.mjs index ff741b91..2bf820c1 100644 --- a/module/systemRegistration/handlebars.mjs +++ b/module/systemRegistration/handlebars.mjs @@ -1,15 +1,19 @@ export const preloadHandlebarsTemplates = async function () { foundry.applications.handlebars.loadTemplates({ + 'daggerheart.inventory-item-compact': + 'systems/daggerheart/templates/sheets/global/partials/inventory-item-compact.hbs', 'daggerheart.inventory-items': 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items-V2.hbs', 'daggerheart.inventory-item': 'systems/daggerheart/templates/sheets/global/partials/inventory-item-V2.hbs' }); return foundry.applications.handlebars.loadTemplates([ + 'templates/generic/tab-navigation.hbs', 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs', 'systems/daggerheart/templates/sheets/global/partials/action-item.hbs', 'systems/daggerheart/templates/sheets/global/partials/domain-card-item.hbs', 'systems/daggerheart/templates/sheets/global/partials/item-resource.hbs', 'systems/daggerheart/templates/sheets/global/partials/resource-section.hbs', + 'systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs', 'systems/daggerheart/templates/components/card-preview.hbs', 'systems/daggerheart/templates/levelup/parts/selectable-card-preview.hbs', 'systems/daggerheart/templates/sheets/global/partials/feature-section-item.hbs', @@ -29,11 +33,11 @@ export const preloadHandlebarsTemplates = async function () { 'systems/daggerheart/templates/ui/tooltip/parts/tooltipTags.hbs', 'systems/daggerheart/templates/dialogs/downtime/activities.hbs', 'systems/daggerheart/templates/dialogs/dice-roll/costSelection.hbs', - - 'systems/daggerheart/templates/ui/chat/parts/roll-part.hbs', 'systems/daggerheart/templates/ui/chat/parts/damage-part.hbs', 'systems/daggerheart/templates/ui/chat/parts/target-part.hbs', 'systems/daggerheart/templates/ui/chat/parts/button-part.hbs', + 'systems/daggerheart/templates/ui/itemBrowser/itemContainer.hbs', + 'systems/daggerheart/templates/scene/dh-config.hbs' ]); }; diff --git a/module/systemRegistration/migrations.mjs b/module/systemRegistration/migrations.mjs index 134c8714..98a9a7e6 100644 --- a/module/systemRegistration/migrations.mjs +++ b/module/systemRegistration/migrations.mjs @@ -1,6 +1,6 @@ export async function runMigrations() { let lastMigrationVersion = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion); - if (!lastMigrationVersion) lastMigrationVersion = '1.0.6'; + if (!lastMigrationVersion) lastMigrationVersion = game.system.version; if (foundry.utils.isNewerVersion('1.1.0', lastMigrationVersion)) { const lockedPacks = []; @@ -96,5 +96,91 @@ export async function runMigrations() { lastMigrationVersion = '1.1.1'; } + if (foundry.utils.isNewerVersion('1.2.0', lastMigrationVersion)) { + /* Migrate old action costs */ + const lockedPacks = []; + const compendiumItems = []; + for (let pack of game.packs) { + if (pack.locked) { + lockedPacks.push(pack.collection); + await pack.configure({ locked: false }); + } + const documents = await pack.getDocuments(); + + compendiumItems.push(...documents.filter(x => x.system?.metadata?.hasActions)); + compendiumItems.push( + ...documents + .filter(x => x.items) + .flatMap(actor => actor.items.filter(x => x.system?.metadata?.hasActions)) + ); + } + + const worldItems = game.items.filter(x => x.system.metadata.hasActions); + const worldActorItems = Array.from(game.actors).flatMap(actor => + actor.items.filter(x => x.system.metadata.hasActions) + ); + + const validCostKeys = Object.keys(CONFIG.DH.GENERAL.abilityCosts); + for (let item of [...worldItems, ...worldActorItems, ...compendiumItems]) { + for (let action of item.system.actions) { + const resourceCostIndexes = Object.keys(action.cost).reduce( + (acc, index) => (!validCostKeys.includes(action.cost[index].key) ? [...acc, Number(index)] : acc), + [] + ); + if (resourceCostIndexes.length === 0) continue; + + await action.update({ + cost: action.cost.map((cost, index) => { + const { keyIsID, ...rest } = cost; + if (!resourceCostIndexes.includes(index)) return { ...rest }; + + return { + ...rest, + key: 'resource', + itemId: cost.key + }; + }) + }); + } + } + + for (let packId of lockedPacks) { + const pack = game.packs.get(packId); + await pack.configure({ locked: true }); + } + + /* Migrate old countdown structure */ + const countdownSettings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns); + const getCountdowns = (data, type) => { + return Object.keys(data.countdowns).reduce((acc, key) => { + const countdown = data.countdowns[key]; + acc[key] = { + ...countdown, + type: type, + ownership: Object.keys(countdown.ownership.players).reduce((acc, key) => { + acc[key] = countdown.ownership.players[key].type; + return acc; + }, {}), + progress: { + ...countdown.progress, + type: countdown.progress.type.value + } + }; + + return acc; + }, {}); + }; + + await countdownSettings.updateSource({ + countdowns: { + ...getCountdowns(countdownSettings.narrative, CONFIG.DH.GENERAL.countdownBaseTypes.narrative.id), + ...getCountdowns(countdownSettings.encounter, CONFIG.DH.GENERAL.countdownBaseTypes.encounter.id) + } + }); + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, countdownSettings); + + lastMigrationVersion = '1.2.0'; + } + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion, lastMigrationVersion); } diff --git a/module/systemRegistration/settings.mjs b/module/systemRegistration/settings.mjs index 4828ebb0..6954730f 100644 --- a/module/systemRegistration/settings.mjs +++ b/module/systemRegistration/settings.mjs @@ -7,6 +7,7 @@ import { DhHomebrewSettings, DhVariantRuleSettings } from '../applications/settings/_module.mjs'; +import { DhTagTeamRoll } from '../data/_module.mjs'; export const registerDHSettings = () => { registerMenuSettings(); @@ -72,7 +73,7 @@ const registerMenus = () => { }); game.settings.registerMenu(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.appearance, { - name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.appearance.title'), + name: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.appearance.label'), label: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.appearance.label'), hint: game.i18n.localize('DAGGERHEART.SETTINGS.Menu.appearance.hint'), icon: 'fa-solid fa-palette', @@ -122,4 +123,10 @@ const registerNonConfigSettings = () => { config: false, type: DhCountdowns }); + + game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll, { + scope: 'world', + config: false, + type: DhTagTeamRoll + }); }; diff --git a/module/systemRegistration/socket.mjs b/module/systemRegistration/socket.mjs index b47fee85..ac61238f 100644 --- a/module/systemRegistration/socket.mjs +++ b/module/systemRegistration/socket.mjs @@ -1,4 +1,5 @@ import DamageReductionDialog from '../applications/dialogs/damageReductionDialog.mjs'; +import Party from '../applications/sheets/actors/party.mjs'; export function handleSocketEvent({ action = null, data = {} } = {}) { switch (action) { @@ -11,24 +12,31 @@ export function handleSocketEvent({ action = null, data = {} } = {}) { case socketEvent.Refresh: Hooks.call(socketEvent.Refresh, data); break; + case socketEvent.DowntimeTrigger: + Party.downtimeMoveQuery(data); + break; } } export const socketEvent = { GMUpdate: 'DhGMUpdate', Refresh: 'DhRefresh', - DhpFearUpdate: 'DhFearUpdate' + DhpFearUpdate: 'DhFearUpdate', + DowntimeTrigger: 'DowntimeTrigger' }; export const GMUpdateEvent = { UpdateDocument: 'DhGMUpdateDocument', + UpdateEffect: 'DhGMUpdateEffect', UpdateSetting: 'DhGMUpdateSetting', UpdateFear: 'DhGMUpdateFear', + UpdateCountdowns: 'DhGMUpdateCountdowns', UpdateSaveMessage: 'DhGMUpdateSaveMessage' }; export const RefreshType = { - Countdown: 'DhCoundownRefresh' + Countdown: 'DhCoundownRefresh', + TagTeamRoll: 'DhTagTeamRollRefresh' }; export const registerSocketHooks = () => { @@ -37,9 +45,11 @@ export const registerSocketHooks = () => { const document = data.uuid ? await fromUuid(data.uuid) : null; switch (data.action) { case GMUpdateEvent.UpdateDocument: - if (document && data.update) { - await document.update(data.update); - } + if (document && data.update) await document.update(data.update); + break; + case GMUpdateEvent.UpdateEffect: + if (document && data.update) + await game.system.api.fields.ActionFields.EffectsField.applyEffects.call(document, data.update); break; case GMUpdateEvent.UpdateSetting: await game.settings.set(CONFIG.DH.id, data.uuid, data.update); @@ -57,6 +67,10 @@ export const registerSocketHooks = () => { ) ); break; + case GMUpdateEvent.UpdateCountdowns: + await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, data.update); + Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.Countdown }); + break; case GMUpdateEvent.UpdateSaveMessage: const action = await fromUuid(data.update.action), message = game.messages.get(data.update.message); @@ -78,17 +92,18 @@ export const registerSocketHooks = () => { export const registerUserQueries = () => { CONFIG.queries.armorSlot = DamageReductionDialog.armorSlotQuery; - CONFIG.queries.reactionRoll = game.system.api.models.actions.actionsTypes.base.rollSaveQuery; + CONFIG.queries.reactionRoll = game.system.api.fields.ActionFields.SaveField.rollSaveQuery; }; -export const emitAsGM = async (eventName, callback, update, uuid = null) => { +export const emitAsGM = async (eventName, callback, update, uuid = null, refresh = null) => { if (!game.user.isGM) { return await game.socket.emit(`system.${CONFIG.DH.id}`, { action: socketEvent.GMUpdate, data: { action: eventName, uuid, - update + update, + refresh } }); } else return callback(update); diff --git a/pull_request_template.md b/pull_request_template.md index c1b8cbfa..263eb5b8 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -1,10 +1,11 @@ --- name: Pull Request about: Create a new pull request -title: "[PR] " +title: '[PR] ' labels: pr assignees: '' --- + Is this a community PR? Please go to preview tab and click [here](?expand=1&template=community_pull_request_template.md). If not, delete this line. ## Description diff --git a/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json b/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json index e226f013..2cc54257 100644 --- a/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json +++ b/src/packs/adversaries/adversary_Acid_Burrower_89yAh30vaNQOALlz.json @@ -143,6 +143,11 @@ "difficulty": null, "damageMod": "none" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 75, + "artist": "" } }, "flags": {}, @@ -152,9 +157,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754010222829, - "modifiedTime": 1755259462470, + "modifiedTime": 1755384241210, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { @@ -266,7 +271,40 @@ "system": { "description": "

The Burrower can be spotlighted up to three times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "3lGGgkxnzgUwHGIp": { + "type": "effect", + "_id": "3lGGgkxnzgUwHGIp", + "systemPath": "actions", + "description": "

The Burrower can be spotlighted up to three times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": false, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "2", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -283,10 +321,11 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", - "lastModifiedBy": null + "systemVersion": "1.1.2", + "lastModifiedBy": "fBcTgyTzoARBvohY", + "modifiedTime": 1760033015502 }, "_key": "!actors.items!89yAh30vaNQOALlz.MFmGN6Tbf5GYxrQ9" }, @@ -311,7 +350,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -434,7 +472,7 @@ "_id": "UpFsnlbZkyvM2Ftv", "img": "icons/magic/acid/projectile-smoke-glowing.webp", "system": { - "description": "

Make an attack against all targets in front of the Burrower within Close range. Targets the Burrower succeeds against take 2d6 physical damage and must mark an Armor Slot without receiving its benefi ts (they can still use armor to reduce the damage). If they can’t mark an Armor Slot, they must mark an additional HP and you gain a Fear.

@Template[type:inFront|range:c]

", + "description": "

Make an attack against all targets in front of the Burrower within Close range. Targets the Burrower succeeds against take 2d6 physical damage and must mark an Armor Slot without receiving its benefits (they can still use armor to reduce the damage). If they can’t mark an Armor Slot, they must mark an additional HP and you gain a Fear.

@Template[type:inFront|range:c]

", "resource": null, "actions": { "yd10HwK6Wa3OEvv2": { @@ -553,11 +591,11 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", - "lastModifiedBy": "MQSznptE5yLT7kj8", - "modifiedTime": 1754143653876 + "systemVersion": "1.1.2", + "lastModifiedBy": "fBcTgyTzoARBvohY", + "modifiedTime": 1760019840573 }, "_key": "!actors.items!89yAh30vaNQOALlz.UpFsnlbZkyvM2Ftv" }, diff --git a/src/packs/adversaries/adversary_Adult_Flickerfly_G7jiltRjgvVhZewm.json b/src/packs/adversaries/adversary_Adult_Flickerfly_G7jiltRjgvVhZewm.json index f2eeb23b..c04d1a65 100644 --- a/src/packs/adversaries/adversary_Adult_Flickerfly_G7jiltRjgvVhZewm.json +++ b/src/packs/adversaries/adversary_Adult_Flickerfly_G7jiltRjgvVhZewm.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 91, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784219, - "modifiedTime": 1755259462665, + "modifiedTime": 1755385356620, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "G7jiltRjgvVhZewm", @@ -228,7 +233,40 @@ "system": { "description": "

The Flickerfly can be spotlighted up to fourΒ times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "poUhJdSkhjiVL2Vp": { + "type": "effect", + "_id": "poUhJdSkhjiVL2Vp", + "systemPath": "actions", + "description": "

The Flickerfly can be spotlighted up to fourΒ times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "3", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -246,12 +284,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754121940551, - "modifiedTime": 1754121965558, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760381115291, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!G7jiltRjgvVhZewm.fFOhhMl4SDUnYNNO" }, @@ -268,7 +306,7 @@ "systemPath": "actions", "description": "

When the Flickerfly makes an attack, the target’s Evasion is halved against the attack.

", "chatDisplay": true, - "actionType": "action", + "actionType": "passive", "cost": [], "uses": { "value": null, @@ -359,12 +397,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754121968284, - "modifiedTime": 1754122883213, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760381147421, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!G7jiltRjgvVhZewm.PrwC6RpsP12fPUwy" }, @@ -387,7 +425,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -502,7 +539,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -716,13 +752,12 @@ "systemPath": "actions", "description": "

When the Flickerfly takes damage from an attack within Close range, you can mark a Stress to take half damage.

", "chatDisplay": true, - "actionType": "action", + "actionType": "reaction", "cost": [ { "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -758,14 +793,47 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754122789186, - "modifiedTime": 1754122857220, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760381159787, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!G7jiltRjgvVhZewm.KLdLRKoJHBJlHwYe" + }, + { + "name": "Deadly Flight", + "type": "feature", + "system": { + "description": "

While flying the Flickerfly can move up to Far range instead of Close range before taking an action.

", + "resource": null, + "actions": {}, + "originItemType": null, + "multiclassOrigin": false + }, + "_id": "WFRpSDZvqF0Upjoy", + "img": "icons/skills/movement/feet-winged-boots-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "fBcTgyTzoARBvohY": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.350", + "systemId": "daggerheart", + "systemVersion": "1.1.2", + "createdTime": 1760381172325, + "modifiedTime": 1760381302938, + "lastModifiedBy": "fBcTgyTzoARBvohY" + }, + "_key": "!actors.items!G7jiltRjgvVhZewm.WFRpSDZvqF0Upjoy" } ], "effects": [], diff --git a/src/packs/adversaries/adversary_Apprentice_Assassin_vNIbYQ4YSzNf0WPE.json b/src/packs/adversaries/adversary_Apprentice_Assassin_vNIbYQ4YSzNf0WPE.json index 953e7deb..663aa8a3 100644 --- a/src/packs/adversaries/adversary_Apprentice_Assassin_vNIbYQ4YSzNf0WPE.json +++ b/src/packs/adversaries/adversary_Apprentice_Assassin_vNIbYQ4YSzNf0WPE.json @@ -105,6 +105,11 @@ "img": "icons/weapons/daggers/dagger-bone-black.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 84, + "artist": "" } }, "flags": {}, @@ -114,9 +119,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784220, - "modifiedTime": 1755259462932, + "modifiedTime": 1755384980487, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "vNIbYQ4YSzNf0WPE", @@ -273,7 +278,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Arch_Necromancer_WPEOIGfclNJxWb87.json b/src/packs/adversaries/adversary_Arch_Necromancer_WPEOIGfclNJxWb87.json index 81287859..c8f0b0d1 100644 --- a/src/packs/adversaries/adversary_Arch_Necromancer_WPEOIGfclNJxWb87.json +++ b/src/packs/adversaries/adversary_Arch_Necromancer_WPEOIGfclNJxWb87.json @@ -117,6 +117,11 @@ "img": "icons/magic/unholy/beam-ringed-impact-purple.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 97, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784221, - "modifiedTime": 1755259462752, + "modifiedTime": 1755385620034, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "WPEOIGfclNJxWb87", @@ -252,7 +257,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -340,7 +344,6 @@ "scalable": false, "key": "stress", "value": 2, - "keyIsID": false, "step": null } ], @@ -574,7 +577,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -638,7 +640,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Archer_Guard_JRhrrEg5UroURiAD.json b/src/packs/adversaries/adversary_Archer_Guard_JRhrrEg5UroURiAD.json index e2793ca3..2b0bddcd 100644 --- a/src/packs/adversaries/adversary_Archer_Guard_JRhrrEg5UroURiAD.json +++ b/src/packs/adversaries/adversary_Archer_Guard_JRhrrEg5UroURiAD.json @@ -111,6 +111,11 @@ "img": "icons/weapons/bows/longbow-recurve-leather-brown.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 77, + "artist": "" } }, "flags": {}, @@ -120,9 +125,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784222, - "modifiedTime": 1755259462476, + "modifiedTime": 1755384306205, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "JRhrrEg5UroURiAD", diff --git a/src/packs/adversaries/adversary_Archer_Squadron_0ts6CGd93lLqGZI5.json b/src/packs/adversaries/adversary_Archer_Squadron_0ts6CGd93lLqGZI5.json index 643610d3..18906dbd 100644 --- a/src/packs/adversaries/adversary_Archer_Squadron_0ts6CGd93lLqGZI5.json +++ b/src/packs/adversaries/adversary_Archer_Squadron_0ts6CGd93lLqGZI5.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 84, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784223, - "modifiedTime": 1755259462516, + "modifiedTime": 1755384973132, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "0ts6CGd93lLqGZI5", @@ -274,7 +279,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json b/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json index 7cffa6de..c69454c6 100644 --- a/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json +++ b/src/packs/adversaries/adversary_Assassin_Poisoner_h5RuhzGL17dW5FBT.json @@ -112,6 +112,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 84, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784224, - "modifiedTime": 1755259462844, + "modifiedTime": 1755384989183, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "h5RuhzGL17dW5FBT", diff --git a/src/packs/adversaries/adversary_Battle_Box_dgH3fW9FTYLaIDvS.json b/src/packs/adversaries/adversary_Battle_Box_dgH3fW9FTYLaIDvS.json index cad8ac88..f9411446 100644 --- a/src/packs/adversaries/adversary_Battle_Box_dgH3fW9FTYLaIDvS.json +++ b/src/packs/adversaries/adversary_Battle_Box_dgH3fW9FTYLaIDvS.json @@ -112,6 +112,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 85, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784224, - "modifiedTime": 1755264708230, + "modifiedTime": 1755385012352, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "dgH3fW9FTYLaIDvS", @@ -234,7 +239,40 @@ "system": { "description": "

The Box can be spotlighted up to two times times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "2JfPSV3pw6pv0BXd": { + "type": "effect", + "_id": "2JfPSV3pw6pv0BXd", + "systemPath": "actions", + "description": "

The Box can be spotlighted up to two times times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "1", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -252,12 +290,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754073816379, - "modifiedTime": 1754073843197, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760211145763, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!dgH3fW9FTYLaIDvS.RSovCwuGrZ1mk5py" }, @@ -280,7 +318,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -1086,7 +1123,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json b/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json index 688b54f4..dc8f4013 100644 --- a/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json +++ b/src/packs/adversaries/adversary_Bear_71qKDLKO3CsrNkdy.json @@ -117,6 +117,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 75, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784226, - "modifiedTime": 1755259462479, + "modifiedTime": 1755384265295, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "71qKDLKO3CsrNkdy", @@ -288,7 +293,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -443,7 +447,77 @@ "system": { "description": "

When the Bear makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "ZQHGR0IweeWBLokB": { + "type": "healing", + "_id": "ZQHGR0IweeWBLokB", + "systemPath": "actions", + "description": "

When the Bear makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -460,12 +534,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754012330113, - "modifiedTime": 1754143729868, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760209165515, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!71qKDLKO3CsrNkdy.4hJbq9WCwJn78frt" } diff --git a/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json b/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json index 184f5fdf..899aa33f 100644 --- a/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json +++ b/src/packs/adversaries/adversary_Bladed_Guard_B4LZcGuBAHzyVdzy.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 77, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784226, - "modifiedTime": 1755259462481, + "modifiedTime": 1755384320981, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "B4LZcGuBAHzyVdzy", @@ -234,7 +239,7 @@ "_id": "qEn4baWgkjKtmILp", "img": "icons/equipment/shield/shield-round-boss-wood-brown.webp", "system": { - "description": "

A creature who tries to move within Very Close range of the Guard must succeed on an Agility Roll. If additional Bladed Guards are standing in a line alongside the f i rst, and each is within Melee range of another guard in the line, the Diffi culty increases by the total number of guards in that line.

", + "description": "

A creature who tries to move within Very Close range of the Guard must succeed on an Agility Roll. If additional Bladed Guards are standing in a line alongside the first, and each is within Melee range of another guard in the line, the Difficulty increases by the total number of guards in that line.

", "resource": null, "actions": { "3lbeEeJdjzPn0MoG": { @@ -300,12 +305,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754012824140, - "modifiedTime": 1754143793947, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760021165250, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!B4LZcGuBAHzyVdzy.qEn4baWgkjKtmILp" }, diff --git a/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json b/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json index bbdb4e63..9d59323c 100644 --- a/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json +++ b/src/packs/adversaries/adversary_Brawny_Zombie_2UeZ0tEe7AzgSJNd.json @@ -115,6 +115,11 @@ "img": "icons/skills/melee/unarmed-punch-fist-yellow-red.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 83, + "artist": "" } }, "flags": {}, @@ -124,9 +129,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784231, - "modifiedTime": 1755259462487, + "modifiedTime": 1755384340788, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "2UeZ0tEe7AzgSJNd", @@ -399,7 +404,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Cave_Ogre_8Zkqk1jU09nKL2fy.json b/src/packs/adversaries/adversary_Cave_Ogre_8Zkqk1jU09nKL2fy.json index 8904e37a..e64e5c6f 100644 --- a/src/packs/adversaries/adversary_Cave_Ogre_8Zkqk1jU09nKL2fy.json +++ b/src/packs/adversaries/adversary_Cave_Ogre_8Zkqk1jU09nKL2fy.json @@ -111,6 +111,11 @@ "img": "icons/weapons/clubs/club-banded-barbed-black.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 75, + "artist": "" } }, "flags": {}, @@ -120,9 +125,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784233, - "modifiedTime": 1755259462491, + "modifiedTime": 1755384280132, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "8Zkqk1jU09nKL2fy", @@ -248,7 +253,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -347,7 +351,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Chaos_Skull_jDmHqGvzg5wjgmxE.json b/src/packs/adversaries/adversary_Chaos_Skull_jDmHqGvzg5wjgmxE.json index 652ccc48..446aee22 100644 --- a/src/packs/adversaries/adversary_Chaos_Skull_jDmHqGvzg5wjgmxE.json +++ b/src/packs/adversaries/adversary_Chaos_Skull_jDmHqGvzg5wjgmxE.json @@ -106,6 +106,11 @@ "img": "icons/magic/light/beam-rays-magenta.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 85, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784233, - "modifiedTime": 1755259462855, + "modifiedTime": 1755385025439, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "jDmHqGvzg5wjgmxE", @@ -299,7 +304,7 @@ "startRound": null, "startTurn": null }, - "description": "

The Skull is resistant to magic damage.

", + "description": "

The Skull is resistant to magic damage.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -359,7 +364,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Conscript_99TqczuQipBmaB8i.json b/src/packs/adversaries/adversary_Conscript_99TqczuQipBmaB8i.json index 6bea9bbc..b30bdc84 100644 --- a/src/packs/adversaries/adversary_Conscript_99TqczuQipBmaB8i.json +++ b/src/packs/adversaries/adversary_Conscript_99TqczuQipBmaB8i.json @@ -99,6 +99,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 85, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784234, - "modifiedTime": 1755259462618, + "modifiedTime": 1755385032835, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "99TqczuQipBmaB8i", @@ -267,7 +272,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Construct_uOP5oT9QzXPlnf3p.json b/src/packs/adversaries/adversary_Construct_uOP5oT9QzXPlnf3p.json index eb5d35a1..75868101 100644 --- a/src/packs/adversaries/adversary_Construct_uOP5oT9QzXPlnf3p.json +++ b/src/packs/adversaries/adversary_Construct_uOP5oT9QzXPlnf3p.json @@ -106,6 +106,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 75, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784236, - "modifiedTime": 1755259462495, + "modifiedTime": 1755384289735, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "uOP5oT9QzXPlnf3p", @@ -230,7 +235,40 @@ "system": { "description": "

The Construct can be spotlighted up to twoΒ times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "bay0pyPsCyDEZKuk": { + "type": "effect", + "_id": "bay0pyPsCyDEZKuk", + "systemPath": "actions", + "description": "

The Construct can be spotlighted up to twoΒ times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "1", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -247,12 +285,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754013727085, - "modifiedTime": 1754013745214, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760032979707, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!uOP5oT9QzXPlnf3p.y3oUmDLGkcSjOO5Q" }, @@ -311,7 +349,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -427,7 +464,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Courtesan_ZxWaWPdzFIUPNC62.json b/src/packs/adversaries/adversary_Courtesan_ZxWaWPdzFIUPNC62.json index e0cfcf66..95a29d0b 100644 --- a/src/packs/adversaries/adversary_Courtesan_ZxWaWPdzFIUPNC62.json +++ b/src/packs/adversaries/adversary_Courtesan_ZxWaWPdzFIUPNC62.json @@ -117,6 +117,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 85, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784237, - "modifiedTime": 1755264799637, + "modifiedTime": 1755385040425, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ZxWaWPdzFIUPNC62", @@ -252,7 +257,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json b/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json index 77181f05..1b76af96 100644 --- a/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json +++ b/src/packs/adversaries/adversary_Courtier_CBBuEXAlLKFMJdjg.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 76, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784237, - "modifiedTime": 1755259462499, + "modifiedTime": 1755384362436, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "CBBuEXAlLKFMJdjg", @@ -249,7 +254,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -318,7 +322,7 @@ "difficulty": 14, "damageMod": "none" }, - "name": "Use", + "name": "Mark Stress", "img": "icons/magic/control/mouth-smile-deception-purple.webp", "range": "close" } @@ -386,12 +390,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754014295058, - "modifiedTime": 1754143921727, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760209255313, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!CBBuEXAlLKFMJdjg.LYNaKEYcYMgvF4Rf" }, @@ -416,7 +420,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Cult_Adept_0NxCSugvKQ4W8OYZ.json b/src/packs/adversaries/adversary_Cult_Adept_0NxCSugvKQ4W8OYZ.json index 6c63e29e..091b862c 100644 --- a/src/packs/adversaries/adversary_Cult_Adept_0NxCSugvKQ4W8OYZ.json +++ b/src/packs/adversaries/adversary_Cult_Adept_0NxCSugvKQ4W8OYZ.json @@ -117,6 +117,11 @@ "img": "icons/weapons/staves/staff-ornate-purple.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 85, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784239, - "modifiedTime": 1755259462512, + "modifiedTime": 1755385049086, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "0NxCSugvKQ4W8OYZ", @@ -252,7 +257,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -392,7 +396,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -519,7 +522,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Cult_Fang_tyBOpLfigAhI9bU3.json b/src/packs/adversaries/adversary_Cult_Fang_tyBOpLfigAhI9bU3.json index 96fc1cc6..47626209 100644 --- a/src/packs/adversaries/adversary_Cult_Fang_tyBOpLfigAhI9bU3.json +++ b/src/packs/adversaries/adversary_Cult_Fang_tyBOpLfigAhI9bU3.json @@ -106,6 +106,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 86, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784239, - "modifiedTime": 1755264898243, + "modifiedTime": 1755385067530, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "tyBOpLfigAhI9bU3", @@ -241,7 +246,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -305,7 +309,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Cult_Initiate_zx99sOGTXicP4SSD.json b/src/packs/adversaries/adversary_Cult_Initiate_zx99sOGTXicP4SSD.json index b46dc3a0..12f715c5 100644 --- a/src/packs/adversaries/adversary_Cult_Initiate_zx99sOGTXicP4SSD.json +++ b/src/packs/adversaries/adversary_Cult_Initiate_zx99sOGTXicP4SSD.json @@ -99,6 +99,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 86, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784240, - "modifiedTime": 1755264925295, + "modifiedTime": 1755385079522, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "zx99sOGTXicP4SSD", @@ -267,7 +272,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json b/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json index 31418d81..d14eff69 100644 --- a/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json +++ b/src/packs/adversaries/adversary_Deeproot_Defender_9x2xY9zwc3xzbXo5.json @@ -111,6 +111,11 @@ "img": "icons/magic/nature/root-vines-grow-brown.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 76, + "artist": "" } }, "flags": {}, @@ -120,9 +125,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784246, - "modifiedTime": 1755259462506, + "modifiedTime": 1755384371297, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "9x2xY9zwc3xzbXo5", diff --git a/src/packs/adversaries/adversary_Demon_of_Avarice_pnyjIGxxvurcWmTv.json b/src/packs/adversaries/adversary_Demon_of_Avarice_pnyjIGxxvurcWmTv.json index d32c7ef7..e74522d3 100644 --- a/src/packs/adversaries/adversary_Demon_of_Avarice_pnyjIGxxvurcWmTv.json +++ b/src/packs/adversaries/adversary_Demon_of_Avarice_pnyjIGxxvurcWmTv.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 91, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784247, - "modifiedTime": 1755265775161, + "modifiedTime": 1755385363507, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "pnyjIGxxvurcWmTv", diff --git a/src/packs/adversaries/adversary_Demon_of_Despair_kE4dfhqmIQpNd44e.json b/src/packs/adversaries/adversary_Demon_of_Despair_kE4dfhqmIQpNd44e.json index 673a050d..1038cb06 100644 --- a/src/packs/adversaries/adversary_Demon_of_Despair_kE4dfhqmIQpNd44e.json +++ b/src/packs/adversaries/adversary_Demon_of_Despair_kE4dfhqmIQpNd44e.json @@ -112,6 +112,11 @@ "type": "attack", "range": "far", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 92, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784248, - "modifiedTime": 1755266281854, + "modifiedTime": 1755385375748, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "kE4dfhqmIQpNd44e", @@ -280,7 +285,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -394,7 +398,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -475,7 +478,77 @@ "system": { "description": "

When the Demon makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "N0Xx6GnijLXIMGBw": { + "type": "healing", + "_id": "N0Xx6GnijLXIMGBw", + "systemPath": "actions", + "description": "

When the Demon makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -493,12 +566,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754125078956, - "modifiedTime": 1754125096421, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760381412185, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!kE4dfhqmIQpNd44e.7qjx1c4C1fUfvXnu" } diff --git a/src/packs/adversaries/adversary_Demon_of_Hubris_2VN3BftageoTTIzu.json b/src/packs/adversaries/adversary_Demon_of_Hubris_2VN3BftageoTTIzu.json index 23cfe473..4144b8c3 100644 --- a/src/packs/adversaries/adversary_Demon_of_Hubris_2VN3BftageoTTIzu.json +++ b/src/packs/adversaries/adversary_Demon_of_Hubris_2VN3BftageoTTIzu.json @@ -112,6 +112,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 92, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784249, - "modifiedTime": 1755259462532, + "modifiedTime": 1755385382792, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "2VN3BftageoTTIzu", @@ -247,7 +252,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -427,7 +431,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -522,7 +525,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Demon_of_Jealousy_SxSOkM4bcVOFyjbo.json b/src/packs/adversaries/adversary_Demon_of_Jealousy_SxSOkM4bcVOFyjbo.json index d20f1f18..049dd77a 100644 --- a/src/packs/adversaries/adversary_Demon_of_Jealousy_SxSOkM4bcVOFyjbo.json +++ b/src/packs/adversaries/adversary_Demon_of_Jealousy_SxSOkM4bcVOFyjbo.json @@ -71,7 +71,7 @@ } }, "tier": 3, - "description": "

fickle creature of spindly limbs and insatiable desires.

", + "description": "

A fickle creature of spindly limbs and insatiable desires.

", "attack": { "name": "Psychic Assault", "roll": { @@ -112,6 +112,11 @@ "img": "icons/magic/symbols/rune-sigil-rough-white-teal.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 92, + "artist": "" } }, "flags": {}, @@ -119,12 +124,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753922784249, - "modifiedTime": 1755259462726, - "lastModifiedBy": "VZIeX2YDvX338Zvr" + "modifiedTime": 1760381460345, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_id": "SxSOkM4bcVOFyjbo", "sort": 3400000, @@ -313,7 +318,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Demon_of_Wrath_5lphJAgzoqZI3VoG.json b/src/packs/adversaries/adversary_Demon_of_Wrath_5lphJAgzoqZI3VoG.json index 0948c917..027383e2 100644 --- a/src/packs/adversaries/adversary_Demon_of_Wrath_5lphJAgzoqZI3VoG.json +++ b/src/packs/adversaries/adversary_Demon_of_Wrath_5lphJAgzoqZI3VoG.json @@ -112,6 +112,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 92, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784252, - "modifiedTime": 1755259462568, + "modifiedTime": 1755385398938, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "5lphJAgzoqZI3VoG", @@ -280,7 +285,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -344,7 +348,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Demonic_Hound_Pack_NoRZ1PqB8N5wcIw0.json b/src/packs/adversaries/adversary_Demonic_Hound_Pack_NoRZ1PqB8N5wcIw0.json index bd8fa5e9..7ce790e3 100644 --- a/src/packs/adversaries/adversary_Demonic_Hound_Pack_NoRZ1PqB8N5wcIw0.json +++ b/src/packs/adversaries/adversary_Demonic_Hound_Pack_NoRZ1PqB8N5wcIw0.json @@ -112,6 +112,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 86, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784253, - "modifiedTime": 1755264935543, + "modifiedTime": 1755385087255, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "NoRZ1PqB8N5wcIw0", @@ -353,7 +358,77 @@ "system": { "description": "

When the Pack makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "BApDkAKPfyBkqrKY": { + "type": "healing", + "_id": "BApDkAKPfyBkqrKY", + "systemPath": "actions", + "description": "

When the Pack makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -371,12 +446,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754077119018, - "modifiedTime": 1754077139008, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760211234576, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!NoRZ1PqB8N5wcIw0.3mOBJE5c3cP2cGP1" } diff --git a/src/packs/adversaries/adversary_Dire_Bat_tBWHW00epmMnkawe.json b/src/packs/adversaries/adversary_Dire_Bat_tBWHW00epmMnkawe.json index 6e2f68a7..22408c0e 100644 --- a/src/packs/adversaries/adversary_Dire_Bat_tBWHW00epmMnkawe.json +++ b/src/packs/adversaries/adversary_Dire_Bat_tBWHW00epmMnkawe.json @@ -111,6 +111,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 93, + "artist": "" } }, "flags": {}, @@ -120,9 +125,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784253, - "modifiedTime": 1755266383523, + "modifiedTime": 1755385409189, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "tBWHW00epmMnkawe", @@ -416,7 +421,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json b/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json index 71a12698..ebd87834 100644 --- a/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json +++ b/src/packs/adversaries/adversary_Dire_Wolf_wNzeuQLfLUMvgHlQ.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 76, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784257, - "modifiedTime": 1755259591554, + "modifiedTime": 1755384380804, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "wNzeuQLfLUMvgHlQ", @@ -243,12 +248,13 @@ "systemPath": "actions", "description": "

If the Wolf makes a successful standard attack and another Dire Wolf is within Melee range of the target, deal 1d6+5 physical damage instead of their standard damage and you gain a Fear.

", "chatDisplay": true, - "actionType": "action", + "actionType": "passive", "cost": [], "uses": { "value": null, "max": "", - "recovery": null + "recovery": null, + "consumeOnSuccess": false }, "damage": { "parts": [ @@ -325,12 +331,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754044226022, - "modifiedTime": 1754143967972, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760209346410, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!wNzeuQLfLUMvgHlQ.wQXEnMqrl2jo91oy" }, @@ -355,7 +361,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Dryad_wR7cFKrHvRzbzhBT.json b/src/packs/adversaries/adversary_Dryad_wR7cFKrHvRzbzhBT.json index c899f15b..5eaab71d 100644 --- a/src/packs/adversaries/adversary_Dryad_wR7cFKrHvRzbzhBT.json +++ b/src/packs/adversaries/adversary_Dryad_wR7cFKrHvRzbzhBT.json @@ -112,6 +112,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 93, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784258, - "modifiedTime": 1755259462937, + "modifiedTime": 1755385415645, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "wR7cFKrHvRzbzhBT", @@ -247,7 +252,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -293,7 +297,7 @@ "type": "damage", "_id": "cpZ5c9d3opSA4BN9", "systemPath": "actions", - "description": "

All targets within the area take 2d6+2 physical damage when they act.

", + "description": "

All targets within the area take 2d6+2 physical damage when they act.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -388,7 +392,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -452,7 +455,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Electric_Eels_TLzY1nDw0Bu9Ud40.json b/src/packs/adversaries/adversary_Electric_Eels_TLzY1nDw0Bu9Ud40.json index 87d1999c..0412ba4b 100644 --- a/src/packs/adversaries/adversary_Electric_Eels_TLzY1nDw0Bu9Ud40.json +++ b/src/packs/adversaries/adversary_Electric_Eels_TLzY1nDw0Bu9Ud40.json @@ -106,6 +106,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 86, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784258, - "modifiedTime": 1755264962798, + "modifiedTime": 1755385098856, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "TLzY1nDw0Bu9Ud40", @@ -274,7 +279,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Elemental_Spark_P7h54ZePFPHpYwvB.json b/src/packs/adversaries/adversary_Elemental_Spark_P7h54ZePFPHpYwvB.json index 227a40af..618323ce 100644 --- a/src/packs/adversaries/adversary_Elemental_Spark_P7h54ZePFPHpYwvB.json +++ b/src/packs/adversaries/adversary_Elemental_Spark_P7h54ZePFPHpYwvB.json @@ -99,6 +99,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 93, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784259, - "modifiedTime": 1755259462705, + "modifiedTime": 1755385425940, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "P7h54ZePFPHpYwvB", @@ -267,7 +272,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Elite_Soldier_bfhVWMBUh61b9J6n.json b/src/packs/adversaries/adversary_Elite_Soldier_bfhVWMBUh61b9J6n.json index 872f0398..145b2534 100644 --- a/src/packs/adversaries/adversary_Elite_Soldier_bfhVWMBUh61b9J6n.json +++ b/src/packs/adversaries/adversary_Elite_Soldier_bfhVWMBUh61b9J6n.json @@ -138,6 +138,11 @@ "difficulty": null, "damageMod": "none" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 86, + "artist": "" } }, "flags": {}, @@ -147,9 +152,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754090776362, - "modifiedTime": 1755259462811, + "modifiedTime": 1755385106827, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { @@ -272,7 +277,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -386,7 +390,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Failed_Experiment_ChwwVqowFw8hJQwT.json b/src/packs/adversaries/adversary_Failed_Experiment_ChwwVqowFw8hJQwT.json index 491e085d..96efe6c6 100644 --- a/src/packs/adversaries/adversary_Failed_Experiment_ChwwVqowFw8hJQwT.json +++ b/src/packs/adversaries/adversary_Failed_Experiment_ChwwVqowFw8hJQwT.json @@ -112,6 +112,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 86, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784262, - "modifiedTime": 1755265009751, + "modifiedTime": 1755385114729, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ChwwVqowFw8hJQwT", @@ -365,7 +370,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Fallen_Shock_Troop_OsLG2BjaEdTZUJU9.json b/src/packs/adversaries/adversary_Fallen_Shock_Troop_OsLG2BjaEdTZUJU9.json index 2b4aea79..f1652c33 100644 --- a/src/packs/adversaries/adversary_Fallen_Shock_Troop_OsLG2BjaEdTZUJU9.json +++ b/src/packs/adversaries/adversary_Fallen_Shock_Troop_OsLG2BjaEdTZUJU9.json @@ -99,6 +99,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 97, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784264, - "modifiedTime": 1755259462703, + "modifiedTime": 1755385629418, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "OsLG2BjaEdTZUJU9", @@ -353,7 +358,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Fallen_Sorcerer_PELRry1vqjBzSAlr.json b/src/packs/adversaries/adversary_Fallen_Sorcerer_PELRry1vqjBzSAlr.json index 2dece191..43edbc70 100644 --- a/src/packs/adversaries/adversary_Fallen_Sorcerer_PELRry1vqjBzSAlr.json +++ b/src/packs/adversaries/adversary_Fallen_Sorcerer_PELRry1vqjBzSAlr.json @@ -112,6 +112,11 @@ "img": "icons/weapons/staves/staff-animal-skull-bull.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 97, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784265, - "modifiedTime": 1755259462708, + "modifiedTime": 1755385635754, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "PELRry1vqjBzSAlr", @@ -247,7 +252,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -496,7 +500,7 @@ "type": "effect", "_id": "11mqihmiBK41aoDm", "systemPath": "actions", - "description": "

Countdown (Loop 2d6). When the Sorcerer is in the spotlight for the first time, activate the countdown.

", + "description": "

Countdown (Loop 2d6). When the Sorcerer is in the spotlight for the first time, activate the countdown.

", "chatDisplay": true, "actionType": "action", "cost": [], diff --git a/src/packs/adversaries/adversary_Fallen_Warlord__Realm_Breaker_hxZ0sgoFJubh5aj6.json b/src/packs/adversaries/adversary_Fallen_Warlord__Realm_Breaker_hxZ0sgoFJubh5aj6.json index aa8b015e..2b44b8df 100644 --- a/src/packs/adversaries/adversary_Fallen_Warlord__Realm_Breaker_hxZ0sgoFJubh5aj6.json +++ b/src/packs/adversaries/adversary_Fallen_Warlord__Realm_Breaker_hxZ0sgoFJubh5aj6.json @@ -1,6 +1,6 @@ { "folder": "7XHlANCPz18yvl5L", - "name": "Fallen Warlord: Realm Breaker", + "name": "Fallen Warlord: Realm-Breaker", "type": "adversary", "_id": "hxZ0sgoFJubh5aj6", "img": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg", @@ -155,7 +155,12 @@ } } }, - "motivesAndTactics": "Corrupt, dominate, punish, break the weak" + "motivesAndTactics": "Corrupt, dominate, punish, break the weak", + "attribution": { + "source": "Daggerheart SRD", + "page": 97, + "artist": "" + } }, "prototypeToken": { "name": "Fallen Warlord: Realm Breaker", @@ -258,7 +263,40 @@ "system": { "description": "

The Realm-Breaker can be spotlighted up to two times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "9IHzeKjP35M5jj3b": { + "type": "effect", + "_id": "9IHzeKjP35M5jj3b", + "systemPath": "actions", + "description": "

The Realm-Breaker can be spotlighted up to two times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "1", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -276,12 +314,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754134022685, - "modifiedTime": 1754134047203, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760382854734, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!hxZ0sgoFJubh5aj6.feb6vTfDsi1yQLpn" }, @@ -384,7 +422,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -740,12 +777,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753929378070, - "modifiedTime": 1755259462847, - "lastModifiedBy": "VZIeX2YDvX338Zvr" + "modifiedTime": 1760382818455, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors!hxZ0sgoFJubh5aj6" } diff --git a/src/packs/adversaries/adversary_Fallen_Warlord__Undefeated_Champion_RXkZTwBRi4dJ3JE5.json b/src/packs/adversaries/adversary_Fallen_Warlord__Undefeated_Champion_RXkZTwBRi4dJ3JE5.json index 45a59c7e..5e1beba4 100644 --- a/src/packs/adversaries/adversary_Fallen_Warlord__Undefeated_Champion_RXkZTwBRi4dJ3JE5.json +++ b/src/packs/adversaries/adversary_Fallen_Warlord__Undefeated_Champion_RXkZTwBRi4dJ3JE5.json @@ -156,7 +156,12 @@ }, "chatDisplay": false }, - "motivesAndTactics": "Dispatch merciless death, punish the defi ant, secure victory at any cost" + "motivesAndTactics": "Dispatch merciless death, punish the defi ant, secure victory at any cost", + "attribution": { + "source": "Daggerheart SRD", + "page": 98, + "artist": "" + } }, "prototypeToken": { "name": "Fallen Warlord: Undefeated Champion", @@ -259,7 +264,40 @@ "system": { "description": "

The Undefeated Champion can be spotlighted up to three times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "BoDTEH8Y6i9G1d4R": { + "type": "effect", + "_id": "BoDTEH8Y6i9G1d4R", + "systemPath": "actions", + "description": "

The Undefeated Champion can be spotlighted up to three times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "2", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -277,12 +315,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754135392829, - "modifiedTime": 1754135407562, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760382917596, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!RXkZTwBRi4dJ3JE5.ct5vhSsNP25arggo" }, @@ -492,7 +530,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -673,7 +710,77 @@ "system": { "description": "

When the Undefeated Champion makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "i1Wmh6Mok4Qsur00": { + "type": "healing", + "_id": "i1Wmh6Mok4Qsur00", + "systemPath": "actions", + "description": "

When the Undefeated Champion makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -691,12 +798,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754135803929, - "modifiedTime": 1754135822414, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760382961713, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!RXkZTwBRi4dJ3JE5.ReWtcLE5akrSauI1" }, @@ -800,9 +907,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753929476879, - "modifiedTime": 1755259462720, + "modifiedTime": 1755385652290, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!actors!RXkZTwBRi4dJ3JE5" diff --git a/src/packs/adversaries/adversary_Giant_Beastmaster_8VZIgU12cB3cvlyH.json b/src/packs/adversaries/adversary_Giant_Beastmaster_8VZIgU12cB3cvlyH.json index 2408d7cd..5c09cd95 100644 --- a/src/packs/adversaries/adversary_Giant_Beastmaster_8VZIgU12cB3cvlyH.json +++ b/src/packs/adversaries/adversary_Giant_Beastmaster_8VZIgU12cB3cvlyH.json @@ -112,6 +112,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 87, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784268, - "modifiedTime": 1755259462604, + "modifiedTime": 1755385128275, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "8VZIgU12cB3cvlyH", diff --git a/src/packs/adversaries/adversary_Giant_Brawler_YnObCleGjPT7yqEc.json b/src/packs/adversaries/adversary_Giant_Brawler_YnObCleGjPT7yqEc.json index db039085..c84905d0 100644 --- a/src/packs/adversaries/adversary_Giant_Brawler_YnObCleGjPT7yqEc.json +++ b/src/packs/adversaries/adversary_Giant_Brawler_YnObCleGjPT7yqEc.json @@ -112,6 +112,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 87, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784268, - "modifiedTime": 1755259462794, + "modifiedTime": 1755385135374, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "YnObCleGjPT7yqEc", @@ -247,7 +252,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -456,7 +460,77 @@ "system": { "description": "

When the Brawler makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "U2AfyadkJluHXA4r": { + "type": "healing", + "_id": "U2AfyadkJluHXA4r", + "systemPath": "actions", + "description": "

When the Brawler makes a successful attack against a PC you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -474,12 +548,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754078789986, - "modifiedTime": 1754078804616, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760380456232, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!YnObCleGjPT7yqEc.B0EniYxyLvjJSqYb" } diff --git a/src/packs/adversaries/adversary_Giant_Eagle_OMQ0v6PE8s1mSU0K.json b/src/packs/adversaries/adversary_Giant_Eagle_OMQ0v6PE8s1mSU0K.json index a281a775..f400054b 100644 --- a/src/packs/adversaries/adversary_Giant_Eagle_OMQ0v6PE8s1mSU0K.json +++ b/src/packs/adversaries/adversary_Giant_Eagle_OMQ0v6PE8s1mSU0K.json @@ -138,6 +138,11 @@ "difficulty": null, "damageMod": "none" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 87, + "artist": "" } }, "flags": {}, @@ -147,9 +152,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1754090770908, - "modifiedTime": 1755265221515, + "modifiedTime": 1755385144098, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { @@ -354,7 +359,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Giant_Mosquitoes_IIWV4ysJPFPnTP7W.json b/src/packs/adversaries/adversary_Giant_Mosquitoes_IIWV4ysJPFPnTP7W.json index 1cc50da4..82a37f5f 100644 --- a/src/packs/adversaries/adversary_Giant_Mosquitoes_IIWV4ysJPFPnTP7W.json +++ b/src/packs/adversaries/adversary_Giant_Mosquitoes_IIWV4ysJPFPnTP7W.json @@ -112,6 +112,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 76, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784269, - "modifiedTime": 1755259619874, + "modifiedTime": 1755384391635, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "IIWV4ysJPFPnTP7W", @@ -229,7 +234,7 @@ }, "items": [ { - "name": "Horde (1d4+1)", + "name": "Horde", "type": "feature", "_id": "9RduwBLYcBaiouYk", "img": "icons/creatures/magical/humanoid-silhouette-aliens-green.webp", @@ -253,12 +258,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754044549944, - "modifiedTime": 1754044591579, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760032064905, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!IIWV4ysJPFPnTP7W.9RduwBLYcBaiouYk" }, @@ -369,7 +374,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Giant_Rat_4PfLnaCrOcMdb4dK.json b/src/packs/adversaries/adversary_Giant_Rat_4PfLnaCrOcMdb4dK.json index e4330c68..4234430c 100644 --- a/src/packs/adversaries/adversary_Giant_Rat_4PfLnaCrOcMdb4dK.json +++ b/src/packs/adversaries/adversary_Giant_Rat_4PfLnaCrOcMdb4dK.json @@ -105,6 +105,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 76, + "artist": "" } }, "flags": {}, @@ -114,9 +119,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784270, - "modifiedTime": 1755259636506, + "modifiedTime": 1755384399993, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "4PfLnaCrOcMdb4dK", @@ -276,7 +281,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Giant_Recruit_5s8wSvpyC5rxY5aD.json b/src/packs/adversaries/adversary_Giant_Recruit_5s8wSvpyC5rxY5aD.json index 09a3fe45..ca8aad39 100644 --- a/src/packs/adversaries/adversary_Giant_Recruit_5s8wSvpyC5rxY5aD.json +++ b/src/packs/adversaries/adversary_Giant_Recruit_5s8wSvpyC5rxY5aD.json @@ -99,6 +99,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 87, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784271, - "modifiedTime": 1755259462570, + "modifiedTime": 1755385156358, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "5s8wSvpyC5rxY5aD", @@ -265,10 +270,11 @@ "cost": [ { "scalable": false, - "key": "stress", + "key": "fear", "value": 1, "keyIsID": false, - "step": null + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -281,7 +287,7 @@ "type": "self", "amount": null }, - "name": "Mark Stress", + "name": "Spend Fear", "img": "icons/creatures/abilities/tail-strike-bone-orange.webp", "range": "" } @@ -303,12 +309,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754079291678, - "modifiedTime": 1754142639306, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760380537296, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!5s8wSvpyC5rxY5aD.FMgB28X1LammRInU" } diff --git a/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json b/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json index 6337dc1c..d9573d60 100644 --- a/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json +++ b/src/packs/adversaries/adversary_Giant_Scorpion_fmfntuJ8mHRCAktP.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 76, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784272, - "modifiedTime": 1755259666128, + "modifiedTime": 1755384410923, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "fmfntuJ8mHRCAktP", @@ -249,7 +254,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -510,7 +514,77 @@ "system": { "description": "

When the Scorpion makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "1Fn4rvhueQoMXqFc": { + "type": "healing", + "_id": "1Fn4rvhueQoMXqFc", + "systemPath": "actions", + "description": "

When the Scorpion makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -527,12 +601,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754047039345, - "modifiedTime": 1754047066840, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760032201996, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!fmfntuJ8mHRCAktP.TmDpAY5t3PjhEv9K" } diff --git a/src/packs/adversaries/adversary_Glass_Snake_8KWVLWXFhlY2kYx0.json b/src/packs/adversaries/adversary_Glass_Snake_8KWVLWXFhlY2kYx0.json index f82aa34f..31b3721c 100644 --- a/src/packs/adversaries/adversary_Glass_Snake_8KWVLWXFhlY2kYx0.json +++ b/src/packs/adversaries/adversary_Glass_Snake_8KWVLWXFhlY2kYx0.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 77, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784273, - "modifiedTime": 1755259462600, + "modifiedTime": 1755384427339, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "8KWVLWXFhlY2kYx0", @@ -330,7 +335,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -444,7 +448,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Gorgon_8mJYMpbLTb8qIOrr.json b/src/packs/adversaries/adversary_Gorgon_8mJYMpbLTb8qIOrr.json index 57cb1760..5b7ad344 100644 --- a/src/packs/adversaries/adversary_Gorgon_8mJYMpbLTb8qIOrr.json +++ b/src/packs/adversaries/adversary_Gorgon_8mJYMpbLTb8qIOrr.json @@ -112,6 +112,11 @@ "img": "icons/weapons/bows/shortbow-recurve-yellow.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 88, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784274, - "modifiedTime": 1755259462608, + "modifiedTime": 1755385192601, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "8mJYMpbLTb8qIOrr", @@ -234,7 +239,40 @@ "system": { "description": "

The Gorgon can be spotlighted up to twoΒ times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "GSYD7y0ywAqyKUfm": { + "type": "effect", + "_id": "GSYD7y0ywAqyKUfm", + "systemPath": "actions", + "description": "

The Gorgon can be spotlighted up to twoΒ times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "1", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -252,12 +290,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754079428160, - "modifiedTime": 1754079447238, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760380620538, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!8mJYMpbLTb8qIOrr.OqE6hBijxAkn5gIm" }, @@ -518,7 +556,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -593,7 +630,77 @@ "system": { "description": "

When the Gorgon makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "V6tkBYSjOt1LZCkp": { + "type": "healing", + "_id": "V6tkBYSjOt1LZCkp", + "systemPath": "actions", + "description": "

When the Gorgon makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -611,12 +718,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754079744174, - "modifiedTime": 1754079759538, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760380666298, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!8mJYMpbLTb8qIOrr.IRIaFxFughjXVu0Y" } diff --git a/src/packs/adversaries/adversary_Greater_Earth_Elemental_dsfB3YhoL5SudvS2.json b/src/packs/adversaries/adversary_Greater_Earth_Elemental_dsfB3YhoL5SudvS2.json index e519b193..0549c81e 100644 --- a/src/packs/adversaries/adversary_Greater_Earth_Elemental_dsfB3YhoL5SudvS2.json +++ b/src/packs/adversaries/adversary_Greater_Earth_Elemental_dsfB3YhoL5SudvS2.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 93, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784275, - "modifiedTime": 1755259462829, + "modifiedTime": 1755385432586, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "dsfB3YhoL5SudvS2", @@ -450,7 +455,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -604,7 +608,77 @@ "system": { "description": "

When the Elemental makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "FPIpslusIeVQGdnb": { + "type": "healing", + "_id": "FPIpslusIeVQGdnb", + "systemPath": "actions", + "description": "

When the Elemental makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -622,12 +696,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754127921154, - "modifiedTime": 1754127937379, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760381537218, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!dsfB3YhoL5SudvS2.ag7t5EW358M0qiSL" } diff --git a/src/packs/adversaries/adversary_Greater_Water_Elemental_xIICT6tEdnA7dKDV.json b/src/packs/adversaries/adversary_Greater_Water_Elemental_xIICT6tEdnA7dKDV.json index 57dbc48b..e8fcd0ce 100644 --- a/src/packs/adversaries/adversary_Greater_Water_Elemental_xIICT6tEdnA7dKDV.json +++ b/src/packs/adversaries/adversary_Greater_Water_Elemental_xIICT6tEdnA7dKDV.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 93, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784278, - "modifiedTime": 1755259462945, + "modifiedTime": 1755385438845, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "xIICT6tEdnA7dKDV", @@ -241,7 +246,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -413,7 +417,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -554,7 +557,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json b/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json index 253da042..c359782a 100644 --- a/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json +++ b/src/packs/adversaries/adversary_Green_Ooze_SHXedd9zZPVfUgUa.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 80, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784278, - "modifiedTime": 1755259726565, + "modifiedTime": 1755384442882, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "SHXedd9zZPVfUgUa", @@ -558,7 +563,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Hallowed_Archer_kabueAo6BALApWqp.json b/src/packs/adversaries/adversary_Hallowed_Archer_kabueAo6BALApWqp.json index fe3f0050..4cf17ff5 100644 --- a/src/packs/adversaries/adversary_Hallowed_Archer_kabueAo6BALApWqp.json +++ b/src/packs/adversaries/adversary_Hallowed_Archer_kabueAo6BALApWqp.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 98, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784279, - "modifiedTime": 1755259462863, + "modifiedTime": 1755385664307, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "kabueAo6BALApWqp", @@ -274,7 +279,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Hallowed_Soldier_VENwg7xEFcYObjmT.json b/src/packs/adversaries/adversary_Hallowed_Soldier_VENwg7xEFcYObjmT.json index 944e53aa..82d74b93 100644 --- a/src/packs/adversaries/adversary_Hallowed_Soldier_VENwg7xEFcYObjmT.json +++ b/src/packs/adversaries/adversary_Hallowed_Soldier_VENwg7xEFcYObjmT.json @@ -99,6 +99,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 98, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784279, - "modifiedTime": 1755266855456, + "modifiedTime": 1755385672764, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "VENwg7xEFcYObjmT", @@ -267,7 +272,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -331,7 +335,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Harrier_uRtghKE9mHlII4rs.json b/src/packs/adversaries/adversary_Harrier_uRtghKE9mHlII4rs.json index b0c3f125..c4f94d8e 100644 --- a/src/packs/adversaries/adversary_Harrier_uRtghKE9mHlII4rs.json +++ b/src/packs/adversaries/adversary_Harrier_uRtghKE9mHlII4rs.json @@ -111,6 +111,11 @@ "img": "icons/weapons/polearms/spear-hooked-rounded.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 77, + "artist": "" } }, "flags": {}, @@ -120,9 +125,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784281, - "modifiedTime": 1755259462930, + "modifiedTime": 1755384460991, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "uRtghKE9mHlII4rs", @@ -282,7 +287,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Head_Guard_mK3A5FTx6k8iPU3F.json b/src/packs/adversaries/adversary_Head_Guard_mK3A5FTx6k8iPU3F.json index a5ebb68c..a191ee03 100644 --- a/src/packs/adversaries/adversary_Head_Guard_mK3A5FTx6k8iPU3F.json +++ b/src/packs/adversaries/adversary_Head_Guard_mK3A5FTx6k8iPU3F.json @@ -117,6 +117,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 77, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784282, - "modifiedTime": 1755259874457, + "modifiedTime": 1755384472544, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "mK3A5FTx6k8iPU3F", @@ -254,7 +259,6 @@ "scalable": false, "key": "fear", "value": 2, - "keyIsID": false, "step": null } ], @@ -328,7 +332,7 @@ "_id": "YeJ7eJVCKsRxG8mk", "img": "icons/skills/ranged/target-bullseye-arrow-blue.webp", "system": { - "description": "

Countdown (5). When the Head Guard is in the spotlight for the fi rst time, activate the countdown. It ticks down when a PC makes an attack roll. When it triggers, all Archer Guards within Far range make a standard attack with advantage against the nearest target within their range. If any attacks succeed on the same target, combine their damage.

@Template[type:emanation|range:f]

", + "description": "

Countdown (5). When the Head Guard is in the spotlight for the first time, activate the countdown. It ticks down when a PC makes an attack roll. When it triggers, all Archer Guards within Far range make a standard attack with advantage against the nearest target within their range. If any attacks succeed on the same target, combine their damage.

@Template[type:emanation|range:f]

", "resource": null, "actions": {}, "originItemType": null, @@ -347,12 +351,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754048119625, - "modifiedTime": 1754048254827, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760209562267, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!mK3A5FTx6k8iPU3F.YeJ7eJVCKsRxG8mk" }, @@ -364,7 +368,77 @@ "system": { "description": "

When the Head Guard makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "tD1hAwP6scxXrouw": { + "type": "healing", + "_id": "tD1hAwP6scxXrouw", + "systemPath": "actions", + "description": "

When the Head Guard makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -381,12 +455,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754048263819, - "modifiedTime": 1754048279307, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760209526360, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!mK3A5FTx6k8iPU3F.sd2OlhLchyoqeKke" } diff --git a/src/packs/adversaries/adversary_Head_Vampire_i2UNbRvgyoSs07M6.json b/src/packs/adversaries/adversary_Head_Vampire_i2UNbRvgyoSs07M6.json index 0abf7cdb..c6a3c141 100644 --- a/src/packs/adversaries/adversary_Head_Vampire_i2UNbRvgyoSs07M6.json +++ b/src/packs/adversaries/adversary_Head_Vampire_i2UNbRvgyoSs07M6.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 95, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784283, - "modifiedTime": 1755266472641, + "modifiedTime": 1755385468446, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "i2UNbRvgyoSs07M6", @@ -514,7 +519,6 @@ "scalable": false, "key": "fear", "value": 2, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_High_Seraph_r1mbfSSwKWdcFdAU.json b/src/packs/adversaries/adversary_High_Seraph_r1mbfSSwKWdcFdAU.json index c2e5c886..bfa94db3 100644 --- a/src/packs/adversaries/adversary_High_Seraph_r1mbfSSwKWdcFdAU.json +++ b/src/packs/adversaries/adversary_High_Seraph_r1mbfSSwKWdcFdAU.json @@ -112,6 +112,11 @@ "img": "icons/skills/melee/strike-blade-hooked-orange-blue.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 98, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784283, - "modifiedTime": 1755259462909, + "modifiedTime": 1755385681541, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "r1mbfSSwKWdcFdAU", @@ -234,7 +239,40 @@ "system": { "description": "

The Seraph can be spotlighted up to threeΒ times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "7oqXSF66R2GlB17O": { + "type": "effect", + "_id": "7oqXSF66R2GlB17O", + "systemPath": "actions", + "description": "

The Seraph can be spotlighted up to threeΒ times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "2", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -252,12 +290,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754136398491, - "modifiedTime": 1754136414914, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760383034711, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!r1mbfSSwKWdcFdAU.jUu058IZwt4u2goM" }, @@ -280,7 +318,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -450,7 +487,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -565,7 +601,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Huge_Green_Ooze_6hbqmxDXFOzZJDk4.json b/src/packs/adversaries/adversary_Huge_Green_Ooze_6hbqmxDXFOzZJDk4.json index af630cdd..d9efc9fb 100644 --- a/src/packs/adversaries/adversary_Huge_Green_Ooze_6hbqmxDXFOzZJDk4.json +++ b/src/packs/adversaries/adversary_Huge_Green_Ooze_6hbqmxDXFOzZJDk4.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 94, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784284, - "modifiedTime": 1755266545039, + "modifiedTime": 1755385452708, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "6hbqmxDXFOzZJDk4", @@ -527,7 +532,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Hydra_MI126iMOOobQ1Obn.json b/src/packs/adversaries/adversary_Hydra_MI126iMOOobQ1Obn.json index 170b55a1..2373db4d 100644 --- a/src/packs/adversaries/adversary_Hydra_MI126iMOOobQ1Obn.json +++ b/src/packs/adversaries/adversary_Hydra_MI126iMOOobQ1Obn.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 94, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784285, - "modifiedTime": 1755259462679, + "modifiedTime": 1755385485548, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "MI126iMOOobQ1Obn", @@ -264,7 +269,7 @@ "name": "Relentless (X)", "type": "feature", "system": { - "description": "

The Hydra can be spotlighted X times per GM turn, where X is the Hydra’s number of heads. Spend Fear as usual to spotlight them.

", + "description": "

The Hydra can be spotlighted X times per GM turn, where X is the Hydra’s number of heads. Spend Fear as usual to spotlight them.

Note: Automation is not added so manually spend fear as per text.

", "resource": null, "actions": {}, "originItemType": null, @@ -284,12 +289,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754129556390, - "modifiedTime": 1754129579457, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760381891609, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!MI126iMOOobQ1Obn.nwIjDjpLGfuXNYvA" }, @@ -312,7 +317,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Bandit_5Lh1T0zaT8Pkr2U2.json b/src/packs/adversaries/adversary_Jagged_Knife_Bandit_5Lh1T0zaT8Pkr2U2.json index 1c8d59c6..9affbacd 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Bandit_5Lh1T0zaT8Pkr2U2.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Bandit_5Lh1T0zaT8Pkr2U2.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 77, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784290, - "modifiedTime": 1755259904640, + "modifiedTime": 1755384483511, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "5Lh1T0zaT8Pkr2U2", diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json b/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json index 6ecc3fdd..e1314bb1 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Hexer_MbBPIOxaxXYNApXz.json @@ -111,6 +111,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 78, + "artist": "" } }, "flags": {}, @@ -120,9 +125,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784291, - "modifiedTime": 1755259462688, + "modifiedTime": 1755384496776, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "MbBPIOxaxXYNApXz", diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json b/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json index 0d5e2133..96f25b1c 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Kneebreaker_CBKixLH3yhivZZuL.json @@ -117,6 +117,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 78, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784292, - "modifiedTime": 1755259941370, + "modifiedTime": 1755384505324, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "CBKixLH3yhivZZuL", diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Lackey_C0OMQqV7pN6t7ouR.json b/src/packs/adversaries/adversary_Jagged_Knife_Lackey_C0OMQqV7pN6t7ouR.json index a7caeeee..edf8f3ea 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Lackey_C0OMQqV7pN6t7ouR.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Lackey_C0OMQqV7pN6t7ouR.json @@ -105,6 +105,11 @@ "stress": { "max": 1 } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 78, + "artist": "" } }, "flags": {}, @@ -114,9 +119,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784293, - "modifiedTime": 1755259961931, + "modifiedTime": 1755384512770, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "C0OMQqV7pN6t7ouR", @@ -276,7 +281,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Lieutenant_aTljstqteGoLpCBq.json b/src/packs/adversaries/adversary_Jagged_Knife_Lieutenant_aTljstqteGoLpCBq.json index c551f836..00eb61bb 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Lieutenant_aTljstqteGoLpCBq.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Lieutenant_aTljstqteGoLpCBq.json @@ -111,6 +111,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 78, + "artist": "" } }, "flags": {}, @@ -120,9 +125,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784294, - "modifiedTime": 1755259462803, + "modifiedTime": 1755384520025, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "aTljstqteGoLpCBq", @@ -248,7 +253,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -298,7 +302,7 @@ "_id": "Mo91w4ccffcmBPt5", "img": "icons/magic/control/silhouette-hold-beam-blue.webp", "system": { - "description": "

Summon three Jagged Knife Lackeys, who appear at Far range.

", + "description": "

Summon three @Compendium[daggerheart.adversaries.Actor.C0OMQqV7pN6t7ouR], who appear at Far range.

", "resource": null, "actions": {}, "originItemType": null, @@ -317,12 +321,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754049041008, - "modifiedTime": 1754049075688, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760209967742, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!aTljstqteGoLpCBq.Mo91w4ccffcmBPt5" }, @@ -347,7 +351,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -475,7 +478,77 @@ "system": { "description": "

When the Lieutenant makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "GSjfSgBzyhbVcpbt": { + "type": "healing", + "_id": "GSjfSgBzyhbVcpbt", + "systemPath": "actions", + "description": "

When the Lieutenant makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -492,12 +565,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754049157702, - "modifiedTime": 1754049175516, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760032394994, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!aTljstqteGoLpCBq.uelnRgGStjJ27VtO" } diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Shadow_XF4tYTq9nPJAy2ox.json b/src/packs/adversaries/adversary_Jagged_Knife_Shadow_XF4tYTq9nPJAy2ox.json index d3acab90..535d1564 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Shadow_XF4tYTq9nPJAy2ox.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Shadow_XF4tYTq9nPJAy2ox.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 78, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784295, - "modifiedTime": 1755260040062, + "modifiedTime": 1755384529543, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "XF4tYTq9nPJAy2ox", diff --git a/src/packs/adversaries/adversary_Jagged_Knife_Sniper_1zuyof1XuIfi3aMG.json b/src/packs/adversaries/adversary_Jagged_Knife_Sniper_1zuyof1XuIfi3aMG.json index b08f3922..e62b5264 100644 --- a/src/packs/adversaries/adversary_Jagged_Knife_Sniper_1zuyof1XuIfi3aMG.json +++ b/src/packs/adversaries/adversary_Jagged_Knife_Sniper_1zuyof1XuIfi3aMG.json @@ -39,7 +39,8 @@ "experiences": { "GLqSqPJcyKHQYMtO": { "name": "Stealth", - "value": 2 + "value": 2, + "description": "" } }, "bonuses": { @@ -70,7 +71,7 @@ }, "tier": 1, "description": "

A lanky bandit striking from cover with a shortbow.

", - "motivesAndTactics": "Ambush, hide, profi t, reposition", + "motivesAndTactics": "Ambush, hide, profit, reposition", "attack": { "name": "Shortbow", "img": "icons/weapons/bows/shortbow-leather.webp", @@ -111,6 +112,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 78, + "artist": "" } }, "flags": {}, @@ -118,12 +124,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753922784296, - "modifiedTime": 1755259462527, - "lastModifiedBy": "VZIeX2YDvX338Zvr" + "modifiedTime": 1760032469625, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_id": "1zuyof1XuIfi3aMG", "sort": 300000, diff --git a/src/packs/adversaries/adversary_Juvenile_Flickerfly_MYXmTx2FHcIjdfYZ.json b/src/packs/adversaries/adversary_Juvenile_Flickerfly_MYXmTx2FHcIjdfYZ.json index 51740ec5..77b107ec 100644 --- a/src/packs/adversaries/adversary_Juvenile_Flickerfly_MYXmTx2FHcIjdfYZ.json +++ b/src/packs/adversaries/adversary_Juvenile_Flickerfly_MYXmTx2FHcIjdfYZ.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 88, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784297, - "modifiedTime": 1755259462684, + "modifiedTime": 1755385201114, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "MYXmTx2FHcIjdfYZ", @@ -228,7 +233,40 @@ "system": { "description": "

The Flickerfly can be spotlighted up to threeΒ times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "FgoP6tlMUxnv5k4Z": { + "type": "effect", + "_id": "FgoP6tlMUxnv5k4Z", + "systemPath": "actions", + "description": "

The Flickerfly can be spotlighted up to threeΒ times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "2", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -246,12 +284,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754080169421, - "modifiedTime": 1754080186529, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760380729020, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!MYXmTx2FHcIjdfYZ.6SnqNCeSEY7Q2tSI" }, diff --git a/src/packs/adversaries/adversary_Knight_of_the_Realm_7ai2opemrclQe3VF.json b/src/packs/adversaries/adversary_Knight_of_the_Realm_7ai2opemrclQe3VF.json index 86757347..31fa44f3 100644 --- a/src/packs/adversaries/adversary_Knight_of_the_Realm_7ai2opemrclQe3VF.json +++ b/src/packs/adversaries/adversary_Knight_of_the_Realm_7ai2opemrclQe3VF.json @@ -122,6 +122,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 88, + "artist": "" } }, "flags": {}, @@ -131,9 +136,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784302, - "modifiedTime": 1755265352331, + "modifiedTime": 1755385208695, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "7ai2opemrclQe3VF", @@ -557,7 +562,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Kraken_4nqv3ZwJGjnmic8j.json b/src/packs/adversaries/adversary_Kraken_4nqv3ZwJGjnmic8j.json index d0b014eb..32282950 100644 --- a/src/packs/adversaries/adversary_Kraken_4nqv3ZwJGjnmic8j.json +++ b/src/packs/adversaries/adversary_Kraken_4nqv3ZwJGjnmic8j.json @@ -112,6 +112,11 @@ "img": "icons/creatures/tentacles/tentacles-octopus-black-pink.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 99, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784303, - "modifiedTime": 1755259462553, + "modifiedTime": 1755385695905, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "4nqv3ZwJGjnmic8j", @@ -234,7 +239,40 @@ "system": { "description": "

The Kraken can be spotlighted up to threeΒ times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "420LQBs27zQTAXfY": { + "type": "effect", + "_id": "420LQBs27zQTAXfY", + "systemPath": "actions", + "description": "

The Kraken can be spotlighted up to threeΒ times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "2", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -252,12 +290,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754136773170, - "modifiedTime": 1754136792851, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760383087323, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!4nqv3ZwJGjnmic8j.1YxbPc8C0X64w1JN" }, @@ -538,9 +576,79 @@ "name": "Momentum", "type": "feature", "system": { - "description": "

When the Kraken makes a successful attack against a PC, you gain a Fear.

", + "description": "

When the Kraken makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "hXQtIGmSaWKMOuFB": { + "type": "healing", + "_id": "hXQtIGmSaWKMOuFB", + "systemPath": "actions", + "description": "

When the Kraken makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -558,12 +666,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754137017535, - "modifiedTime": 1754137033162, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760383121099, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!4nqv3ZwJGjnmic8j.m4aybzb8tXWHelDU" } diff --git a/src/packs/adversaries/adversary_Masked_Thief_niBpVU7yeo5ccskE.json b/src/packs/adversaries/adversary_Masked_Thief_niBpVU7yeo5ccskE.json index a316a402..7d16e606 100644 --- a/src/packs/adversaries/adversary_Masked_Thief_niBpVU7yeo5ccskE.json +++ b/src/packs/adversaries/adversary_Masked_Thief_niBpVU7yeo5ccskE.json @@ -112,6 +112,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 88, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784304, - "modifiedTime": 1755265377045, + "modifiedTime": 1755385217678, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "niBpVU7yeo5ccskE", diff --git a/src/packs/adversaries/adversary_Master_Assassin_dNta0cUzr96xcFhf.json b/src/packs/adversaries/adversary_Master_Assassin_dNta0cUzr96xcFhf.json index 26b1374b..f6594bf7 100644 --- a/src/packs/adversaries/adversary_Master_Assassin_dNta0cUzr96xcFhf.json +++ b/src/packs/adversaries/adversary_Master_Assassin_dNta0cUzr96xcFhf.json @@ -117,6 +117,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 84, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784305, - "modifiedTime": 1755259462821, + "modifiedTime": 1755384999362, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "dNta0cUzr96xcFhf", @@ -285,7 +290,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -349,7 +353,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -400,7 +403,77 @@ "system": { "description": "

When the Assassin makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "7EP5X5kodzMCBQZO": { + "type": "healing", + "_id": "7EP5X5kodzMCBQZO", + "systemPath": "actions", + "description": "

When the Assassin makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -418,12 +491,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754081711789, - "modifiedTime": 1754081721415, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760380850027, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!dNta0cUzr96xcFhf.PcNgHScmTd9l3exN" } diff --git a/src/packs/adversaries/adversary_Merchant_Al3w2CgjfdT3p9ma.json b/src/packs/adversaries/adversary_Merchant_Al3w2CgjfdT3p9ma.json index 1f3826ca..c11a9313 100644 --- a/src/packs/adversaries/adversary_Merchant_Al3w2CgjfdT3p9ma.json +++ b/src/packs/adversaries/adversary_Merchant_Al3w2CgjfdT3p9ma.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 79, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784305, - "modifiedTime": 1755263103972, + "modifiedTime": 1755384552277, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Al3w2CgjfdT3p9ma", diff --git a/src/packs/adversaries/adversary_Merchant_Baron_Vy02IhGhkJLuezu4.json b/src/packs/adversaries/adversary_Merchant_Baron_Vy02IhGhkJLuezu4.json index 97f6a052..315f6039 100644 --- a/src/packs/adversaries/adversary_Merchant_Baron_Vy02IhGhkJLuezu4.json +++ b/src/packs/adversaries/adversary_Merchant_Baron_Vy02IhGhkJLuezu4.json @@ -117,6 +117,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 88, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784306, - "modifiedTime": 1755265400782, + "modifiedTime": 1755385228380, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Vy02IhGhkJLuezu4", @@ -358,7 +363,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json b/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json index 810359dd..ed5deb22 100644 --- a/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json +++ b/src/packs/adversaries/adversary_Minor_Chaos_Elemental_sRn4bqerfARvhgSV.json @@ -106,6 +106,11 @@ "range": "close", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 79, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784307, - "modifiedTime": 1755259462919, + "modifiedTime": 1755384563851, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "sRn4bqerfARvhgSV", @@ -329,7 +334,6 @@ "scalable": false, "key": "hitPoints", "value": 1, - "keyIsID": false, "step": null } ], @@ -476,7 +480,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -593,7 +596,77 @@ "system": { "description": "

When the Elemental makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "zpQIB9z9kK2BlfqZ": { + "type": "healing", + "_id": "zpQIB9z9kK2BlfqZ", + "systemPath": "actions", + "description": "

When the Elemental makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -610,12 +683,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754050010657, - "modifiedTime": 1754050027337, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760032579019, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!sRn4bqerfARvhgSV.JqRfb0IZ3aJrVazI" } diff --git a/src/packs/adversaries/adversary_Minor_Demon_3tqCjDwJAQ7JKqMb.json b/src/packs/adversaries/adversary_Minor_Demon_3tqCjDwJAQ7JKqMb.json index 9b4e8594..e74ef329 100644 --- a/src/packs/adversaries/adversary_Minor_Demon_3tqCjDwJAQ7JKqMb.json +++ b/src/packs/adversaries/adversary_Minor_Demon_3tqCjDwJAQ7JKqMb.json @@ -105,6 +105,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 79, + "artist": "" } }, "flags": {}, @@ -114,9 +119,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784308, - "modifiedTime": 1755259462544, + "modifiedTime": 1755384577384, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "3tqCjDwJAQ7JKqMb", @@ -229,7 +234,40 @@ "system": { "description": "

The Demon can be spotlighted up to twoΒ times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "lfYFbb71wWaR8DJs": { + "type": "effect", + "_id": "lfYFbb71wWaR8DJs", + "systemPath": "actions", + "description": "

The Demon can be spotlighted up to twoΒ times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "1", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -246,12 +284,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754050072926, - "modifiedTime": 1754050089194, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760032900622, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!3tqCjDwJAQ7JKqMb.4xoydX3YwsLujuaI" }, @@ -363,7 +401,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -479,7 +516,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -531,7 +567,77 @@ "system": { "description": "

When the Demon makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "Cmd4f2gfxgOZsN6f": { + "type": "healing", + "_id": "Cmd4f2gfxgOZsN6f", + "systemPath": "actions", + "description": "

When the Demon makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -548,12 +654,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754050318009, - "modifiedTime": 1754050337233, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760032781589, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!3tqCjDwJAQ7JKqMb.w400aHTlADxDihpt" } diff --git a/src/packs/adversaries/adversary_Minor_Fire_Elemental_DscWkNVoHak6P4hh.json b/src/packs/adversaries/adversary_Minor_Fire_Elemental_DscWkNVoHak6P4hh.json index fa4b9828..c765d55a 100644 --- a/src/packs/adversaries/adversary_Minor_Fire_Elemental_DscWkNVoHak6P4hh.json +++ b/src/packs/adversaries/adversary_Minor_Fire_Elemental_DscWkNVoHak6P4hh.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 79, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784308, - "modifiedTime": 1755259462650, + "modifiedTime": 1755384584836, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "DscWkNVoHak6P4hh", @@ -230,7 +235,31 @@ "system": { "description": "

The Elemental can be spotlighted up to twoΒ times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "oFsBEbdXCpX9XLQy": { + "type": "effect", + "_id": "oFsBEbdXCpX9XLQy", + "systemPath": "actions", + "description": "

The Elemental can be spotlighted up to twoΒ times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [], + "uses": { + "value": 0, + "max": "1", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -247,12 +276,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754050392983, - "modifiedTime": 1754050410908, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760032886801, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!DscWkNVoHak6P4hh.c1jcZZD616J5Y4Mb" }, @@ -277,7 +306,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -393,7 +421,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -670,7 +697,77 @@ "system": { "description": "

When the Elemental makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "rPj1Wf22Kai3eBCv": { + "type": "healing", + "_id": "rPj1Wf22Kai3eBCv", + "systemPath": "actions", + "description": "

When the Elemental makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -687,12 +784,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754050716542, - "modifiedTime": 1754050733981, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760210142488, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!DscWkNVoHak6P4hh.kssnXljBaV31iX58" } diff --git a/src/packs/adversaries/adversary_Minor_Treant_G62k4oSkhkoXEs2D.json b/src/packs/adversaries/adversary_Minor_Treant_G62k4oSkhkoXEs2D.json index 8e05e6fe..b5ca05c9 100644 --- a/src/packs/adversaries/adversary_Minor_Treant_G62k4oSkhkoXEs2D.json +++ b/src/packs/adversaries/adversary_Minor_Treant_G62k4oSkhkoXEs2D.json @@ -99,6 +99,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 80, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784309, - "modifiedTime": 1755263168654, + "modifiedTime": 1755384597383, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "G62k4oSkhkoXEs2D", @@ -270,7 +275,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Minotaur_Wrecker_rM9qCIYeWg9I0B4l.json b/src/packs/adversaries/adversary_Minotaur_Wrecker_rM9qCIYeWg9I0B4l.json index 67cca4a4..ac3766d3 100644 --- a/src/packs/adversaries/adversary_Minotaur_Wrecker_rM9qCIYeWg9I0B4l.json +++ b/src/packs/adversaries/adversary_Minotaur_Wrecker_rM9qCIYeWg9I0B4l.json @@ -106,6 +106,11 @@ "img": "icons/weapons/axes/axe-double.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 89, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784310, - "modifiedTime": 1755259462912, + "modifiedTime": 1755385247589, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "rM9qCIYeWg9I0B4l", @@ -241,7 +246,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -305,7 +309,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Monarch_yx0vK2yfNVZKWUUi.json b/src/packs/adversaries/adversary_Monarch_yx0vK2yfNVZKWUUi.json index 8e84e0ec..b4868595 100644 --- a/src/packs/adversaries/adversary_Monarch_yx0vK2yfNVZKWUUi.json +++ b/src/packs/adversaries/adversary_Monarch_yx0vK2yfNVZKWUUi.json @@ -117,6 +117,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 94, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784312, - "modifiedTime": 1755266608082, + "modifiedTime": 1755385492928, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "yx0vK2yfNVZKWUUi", @@ -285,7 +290,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -349,7 +353,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Mortal_Hunter_mVV7a7KQAORoPMgZ.json b/src/packs/adversaries/adversary_Mortal_Hunter_mVV7a7KQAORoPMgZ.json index fa72fea6..8c2332aa 100644 --- a/src/packs/adversaries/adversary_Mortal_Hunter_mVV7a7KQAORoPMgZ.json +++ b/src/packs/adversaries/adversary_Mortal_Hunter_mVV7a7KQAORoPMgZ.json @@ -112,6 +112,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 89, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784313, - "modifiedTime": 1755259462879, + "modifiedTime": 1755385255652, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "mVV7a7KQAORoPMgZ", @@ -333,7 +338,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -447,7 +451,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Oak_Treant_XK78QUfY8c8Go8Uv.json b/src/packs/adversaries/adversary_Oak_Treant_XK78QUfY8c8Go8Uv.json index f32a9894..14b7e7b0 100644 --- a/src/packs/adversaries/adversary_Oak_Treant_XK78QUfY8c8Go8Uv.json +++ b/src/packs/adversaries/adversary_Oak_Treant_XK78QUfY8c8Go8Uv.json @@ -105,19 +105,25 @@ "img": "icons/skills/melee/blood-slash-foam-red.webp", "type": "attack", "chatDisplay": false - } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 95, + "artist": "" + }, + "motivesAndTactics": "Hide in plain sight, preserve the forest, root down, swing branches" }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753922784314, - "modifiedTime": 1755259462770, - "lastModifiedBy": "VZIeX2YDvX338Zvr" + "modifiedTime": 1760382572320, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_id": "XK78QUfY8c8Go8Uv", "sort": 3400000, @@ -220,7 +226,263 @@ "appendNumber": false, "prependAdjective": false }, - "items": [], + "items": [ + { + "name": "Just a Tree", + "type": "feature", + "system": { + "description": "

Before they make their first attack in a fight or after they become Hidden the Treant is indistinguishable from other trees until they next act or a PC succeeds on an Instinct Roll to identify them.

", + "resource": null, + "actions": {}, + "originItemType": null, + "multiclassOrigin": false + }, + "_id": "ERco8urSuHgrtnzL", + "img": "icons/environment/wilderness/tree-spruce-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "fBcTgyTzoARBvohY": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.350", + "systemId": "daggerheart", + "systemVersion": "1.1.2", + "createdTime": 1760381988359, + "modifiedTime": 1760382038663, + "lastModifiedBy": "fBcTgyTzoARBvohY" + }, + "_key": "!actors.items!XK78QUfY8c8Go8Uv.ERco8urSuHgrtnzL" + }, + { + "name": "Seed Barrage", + "type": "feature", + "system": { + "description": "

Mark a Stress and make an attack against up to three targets within Close range pummeling them with giant acorns Targets the Treant succeeds against take 2d10+5 physical damage.

", + "resource": null, + "actions": { + "cM5BBUSFxOHBsV2G": { + "type": "damage", + "_id": "cM5BBUSFxOHBsV2G", + "systemPath": "actions", + "description": "

Mark a Stress and make an attack against up to three targets within Close range pummeling them with giant acorns Targets the Treant succeeds against take 2d10+5 physical damage.

", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": false, + "formula": "" + }, + "flatMultiplier": 2, + "dice": "d10", + "bonus": 5, + "multiplier": "flat" + }, + "applyTo": "hitPoints", + "type": [ + "physical" + ], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": 3 + }, + "effects": [], + "name": "Mark Stress", + "img": "icons/consumables/nuts/nut-spiked-shell.webp", + "range": "close" + } + }, + "originItemType": null, + "multiclassOrigin": false + }, + "_id": "Q2slH9qkBO5SPw43", + "img": "icons/consumables/nuts/nut-spiked-shell.webp", + "effects": [], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "fBcTgyTzoARBvohY": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.350", + "systemId": "daggerheart", + "systemVersion": "1.1.2", + "createdTime": 1760382060546, + "modifiedTime": 1760382297884, + "lastModifiedBy": "fBcTgyTzoARBvohY" + }, + "_key": "!actors.items!XK78QUfY8c8Go8Uv.Q2slH9qkBO5SPw43" + }, + { + "name": "Take Root", + "type": "feature", + "system": { + "description": "

Mark a Stress to Root the Treant in place. The Treant is Restrained while Rooted and can end this effect instead of moving while they are spotlighted. While Rooted the Treant has resistance to physical damage.

", + "resource": null, + "actions": { + "008EelRlcs6CKGvM": { + "type": "effect", + "_id": "008EelRlcs6CKGvM", + "systemPath": "actions", + "description": "

Mark a Stress to Root the Treant in place. The Treant is Restrained while Rooted and can end this effect instead of moving while they are spotlighted. While Rooted the Treant has resistance to physical damage.

", + "chatDisplay": true, + "actionType": "action", + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [ + { + "_id": "3PY5KIG6d3dr3dty", + "onSave": false + } + ], + "target": { + "type": "any", + "amount": null + }, + "name": "Mark Stress", + "img": "icons/consumables/plants/thorned-stem-brown.webp", + "range": "self" + } + }, + "originItemType": null, + "multiclassOrigin": false + }, + "_id": "sqkgw26P2KiQVtXT", + "img": "icons/consumables/plants/thorned-stem-brown.webp", + "effects": [ + { + "name": "Take Root", + "img": "icons/consumables/plants/thorned-stem-brown.webp", + "origin": "Compendium.daggerheart.adversaries.Actor.XK78QUfY8c8Go8Uv.Item.sqkgw26P2KiQVtXT", + "transfer": false, + "_id": "3PY5KIG6d3dr3dty", + "type": "base", + "system": { + "rangeDependence": { + "enabled": false, + "type": "withinRange", + "target": "any", + "range": "self" + } + }, + "changes": [ + { + "key": "system.resistance.physical.resistance", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "

Mark a Stress to Root the Treant in place. The Treant is Restrained while Rooted and can end this effect instead of moving while they are spotlighted. While Rooted the Treant has resistance to physical damage.

", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.350", + "systemId": "daggerheart", + "systemVersion": "1.1.2", + "createdTime": 1760382462603, + "modifiedTime": 1760382500728, + "lastModifiedBy": "fBcTgyTzoARBvohY" + }, + "_key": "!actors.items.effects!XK78QUfY8c8Go8Uv.sqkgw26P2KiQVtXT.3PY5KIG6d3dr3dty" + } + ], + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "fBcTgyTzoARBvohY": 3 + }, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.350", + "systemId": "daggerheart", + "systemVersion": "1.1.2", + "createdTime": 1760382346850, + "modifiedTime": 1760382517980, + "lastModifiedBy": "fBcTgyTzoARBvohY" + }, + "_key": "!actors.items!XK78QUfY8c8Go8Uv.sqkgw26P2KiQVtXT" + } + ], "effects": [], "_key": "!actors!XK78QUfY8c8Go8Uv" } diff --git a/src/packs/adversaries/adversary_Oracle_of_Doom_befIqd5IYKg6eUz2.json b/src/packs/adversaries/adversary_Oracle_of_Doom_befIqd5IYKg6eUz2.json index ac8f7c34..4ada4bf1 100644 --- a/src/packs/adversaries/adversary_Oracle_of_Doom_befIqd5IYKg6eUz2.json +++ b/src/packs/adversaries/adversary_Oracle_of_Doom_befIqd5IYKg6eUz2.json @@ -112,6 +112,11 @@ "img": "icons/magic/symbols/rune-sigil-rough-white-teal.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 99, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784315, - "modifiedTime": 1755259462807, + "modifiedTime": 1755385703272, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "befIqd5IYKg6eUz2", @@ -419,7 +424,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -534,7 +538,6 @@ "scalable": false, "key": "fear", "value": 2, - "keyIsID": false, "step": null } ], @@ -655,7 +658,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Outer_Realms_Abomination_A0SeeDzwjvqOsyof.json b/src/packs/adversaries/adversary_Outer_Realms_Abomination_A0SeeDzwjvqOsyof.json index beedfcb5..b5becb90 100644 --- a/src/packs/adversaries/adversary_Outer_Realms_Abomination_A0SeeDzwjvqOsyof.json +++ b/src/packs/adversaries/adversary_Outer_Realms_Abomination_A0SeeDzwjvqOsyof.json @@ -106,6 +106,11 @@ "img": "icons/creatures/tentacles/tentacle-earth-green.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 99, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784319, - "modifiedTime": 1755259462626, + "modifiedTime": 1755385710032, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "A0SeeDzwjvqOsyof", @@ -483,7 +488,7 @@ "startRound": null, "startTurn": null }, - "description": "

Unstuck from reality until the end of the scene. When you spend Hope or mark Armor Slots, HP, or Stress, you must double the amount spent or marked.

", + "description": "

Unstuck from reality until the end of the scene. When you spend Hope or mark Armor Slots, HP, or Stress, you must double the amount spent or marked.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/adversaries/adversary_Outer_Realms_Corrupter_ms6nuOl3NFkhPj1k.json b/src/packs/adversaries/adversary_Outer_Realms_Corrupter_ms6nuOl3NFkhPj1k.json index 2c6b7623..e19fb41d 100644 --- a/src/packs/adversaries/adversary_Outer_Realms_Corrupter_ms6nuOl3NFkhPj1k.json +++ b/src/packs/adversaries/adversary_Outer_Realms_Corrupter_ms6nuOl3NFkhPj1k.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 99, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784320, - "modifiedTime": 1755259462889, + "modifiedTime": 1755385717112, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ms6nuOl3NFkhPj1k", diff --git a/src/packs/adversaries/adversary_Outer_Realms_Thrall_moJhHgKqTKPS2WYS.json b/src/packs/adversaries/adversary_Outer_Realms_Thrall_moJhHgKqTKPS2WYS.json index ac0380b5..4eb8ba4b 100644 --- a/src/packs/adversaries/adversary_Outer_Realms_Thrall_moJhHgKqTKPS2WYS.json +++ b/src/packs/adversaries/adversary_Outer_Realms_Thrall_moJhHgKqTKPS2WYS.json @@ -99,6 +99,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 99, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784321, - "modifiedTime": 1755266968806, + "modifiedTime": 1755385729840, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "moJhHgKqTKPS2WYS", @@ -267,7 +272,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Patchwork_Zombie_Hulk_EQTOAOUrkIvS2z88.json b/src/packs/adversaries/adversary_Patchwork_Zombie_Hulk_EQTOAOUrkIvS2z88.json index c6a5393b..5143abbe 100644 --- a/src/packs/adversaries/adversary_Patchwork_Zombie_Hulk_EQTOAOUrkIvS2z88.json +++ b/src/packs/adversaries/adversary_Patchwork_Zombie_Hulk_EQTOAOUrkIvS2z88.json @@ -115,6 +115,11 @@ "img": "icons/commodities/biological/hand-clawed-blue.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 83, + "artist": "" } }, "flags": {}, @@ -124,9 +129,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784322, - "modifiedTime": 1755259462653, + "modifiedTime": 1755384671972, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "EQTOAOUrkIvS2z88", @@ -239,7 +244,64 @@ "system": { "description": "

When the Zombie takes Major or greater damage, they mark an additional HP.

", "resource": null, - "actions": {}, + "actions": { + "Y8LQe5TzbdK2mOG9": { + "type": "damage", + "_id": "Y8LQe5TzbdK2mOG9", + "systemPath": "actions", + "description": "", + "chatDisplay": true, + "actionType": "passive", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "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, + "formula": "" + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "name": "Mark HP", + "img": "icons/commodities/biological/hand-clawed-tan.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -256,12 +318,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754051427428, - "modifiedTime": 1754051450294, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760208951573, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!EQTOAOUrkIvS2z88.rEJ1kAfhHQZWhrZj" }, @@ -447,7 +509,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Perfected_Zombie_CP6iRfHdyFWniTHY.json b/src/packs/adversaries/adversary_Perfected_Zombie_CP6iRfHdyFWniTHY.json index 2062fdb3..97fd5789 100644 --- a/src/packs/adversaries/adversary_Perfected_Zombie_CP6iRfHdyFWniTHY.json +++ b/src/packs/adversaries/adversary_Perfected_Zombie_CP6iRfHdyFWniTHY.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 101, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784323, - "modifiedTime": 1755267137806, + "modifiedTime": 1755385787559, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "CP6iRfHdyFWniTHY", @@ -360,7 +365,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Petty_Noble_wycLpvebWdUqRhpP.json b/src/packs/adversaries/adversary_Petty_Noble_wycLpvebWdUqRhpP.json index 673f9af5..d0f8ec58 100644 --- a/src/packs/adversaries/adversary_Petty_Noble_wycLpvebWdUqRhpP.json +++ b/src/packs/adversaries/adversary_Petty_Noble_wycLpvebWdUqRhpP.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 80, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784324, - "modifiedTime": 1755263279700, + "modifiedTime": 1755384656265, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "wycLpvebWdUqRhpP", @@ -283,7 +288,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -372,7 +376,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Pirate_Captain_OROJbjsqagVh7ECV.json b/src/packs/adversaries/adversary_Pirate_Captain_OROJbjsqagVh7ECV.json index e485ffb5..06625dbf 100644 --- a/src/packs/adversaries/adversary_Pirate_Captain_OROJbjsqagVh7ECV.json +++ b/src/packs/adversaries/adversary_Pirate_Captain_OROJbjsqagVh7ECV.json @@ -117,6 +117,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 81, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784325, - "modifiedTime": 1755263303289, + "modifiedTime": 1755384693018, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "OROJbjsqagVh7ECV", @@ -341,7 +346,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -406,7 +410,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -507,7 +510,77 @@ "system": { "description": "

When the Captain makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "78Qphxjbs7cOYsNf": { + "type": "healing", + "_id": "78Qphxjbs7cOYsNf", + "systemPath": "actions", + "description": "

When the Captain makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "action", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -524,12 +597,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754052246000, - "modifiedTime": 1754052257935, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760033187578, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!OROJbjsqagVh7ECV.V4EcsqMd70BTrDNu" } diff --git a/src/packs/adversaries/adversary_Pirate_Raiders_5YgEajn0wa4i85kC.json b/src/packs/adversaries/adversary_Pirate_Raiders_5YgEajn0wa4i85kC.json index 178883bf..e970e5d5 100644 --- a/src/packs/adversaries/adversary_Pirate_Raiders_5YgEajn0wa4i85kC.json +++ b/src/packs/adversaries/adversary_Pirate_Raiders_5YgEajn0wa4i85kC.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 81, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784326, - "modifiedTime": 1755263339105, + "modifiedTime": 1755384706485, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "5YgEajn0wa4i85kC", @@ -229,7 +234,7 @@ }, "items": [ { - "name": "Horde (1d4+1)", + "name": "Horde", "type": "feature", "_id": "Q7DRbWjHl64CNwag", "img": "icons/creatures/magical/humanoid-silhouette-aliens-green.webp", @@ -253,12 +258,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754052315770, - "modifiedTime": 1754052347985, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760033213944, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!5YgEajn0wa4i85kC.Q7DRbWjHl64CNwag" }, diff --git a/src/packs/adversaries/adversary_Pirate_Tough_mhcVkVFrzIJ18FDm.json b/src/packs/adversaries/adversary_Pirate_Tough_mhcVkVFrzIJ18FDm.json index 8a3839f5..8858ffdb 100644 --- a/src/packs/adversaries/adversary_Pirate_Tough_mhcVkVFrzIJ18FDm.json +++ b/src/packs/adversaries/adversary_Pirate_Tough_mhcVkVFrzIJ18FDm.json @@ -145,7 +145,12 @@ } } }, - "motivesAndTactics": "Plunder, raid, smash, terrorize" + "motivesAndTactics": "Plunder, raid, smash, terrorize", + "attribution": { + "source": "Daggerheart SRD", + "page": 81, + "artist": "" + } }, "prototypeToken": { "name": "Pirate Tough", @@ -449,9 +454,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754089855172, - "modifiedTime": 1755259462883, + "modifiedTime": 1755384713113, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!actors!mhcVkVFrzIJ18FDm" diff --git a/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json b/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json index f8656c9d..54340160 100644 --- a/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json +++ b/src/packs/adversaries/adversary_Red_Ooze_9rVlbJVrDNn1x7PS.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 80, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784338, - "modifiedTime": 1755263361677, + "modifiedTime": 1755384643919, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "9rVlbJVrDNn1x7PS", @@ -494,7 +499,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Rotted_Zombie_gP3fWTLzSFnpA8EJ.json b/src/packs/adversaries/adversary_Rotted_Zombie_gP3fWTLzSFnpA8EJ.json index 3f566841..f9f0c5d0 100644 --- a/src/packs/adversaries/adversary_Rotted_Zombie_gP3fWTLzSFnpA8EJ.json +++ b/src/packs/adversaries/adversary_Rotted_Zombie_gP3fWTLzSFnpA8EJ.json @@ -99,6 +99,11 @@ "stress": { "max": 1 } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 83, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784339, - "modifiedTime": 1755263398665, + "modifiedTime": 1755384730622, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "gP3fWTLzSFnpA8EJ", @@ -270,7 +275,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Royal_Advisor_EtLJiTsilPPZvLUX.json b/src/packs/adversaries/adversary_Royal_Advisor_EtLJiTsilPPZvLUX.json index 0632ca05..93453c35 100644 --- a/src/packs/adversaries/adversary_Royal_Advisor_EtLJiTsilPPZvLUX.json +++ b/src/packs/adversaries/adversary_Royal_Advisor_EtLJiTsilPPZvLUX.json @@ -117,6 +117,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 89, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784339, - "modifiedTime": 1755259462657, + "modifiedTime": 1755385265369, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "EtLJiTsilPPZvLUX", @@ -338,7 +343,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -402,7 +406,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Secret_Keeper_sLAccjvCWfeedbpI.json b/src/packs/adversaries/adversary_Secret_Keeper_sLAccjvCWfeedbpI.json index 4791237c..ac2dc316 100644 --- a/src/packs/adversaries/adversary_Secret_Keeper_sLAccjvCWfeedbpI.json +++ b/src/packs/adversaries/adversary_Secret_Keeper_sLAccjvCWfeedbpI.json @@ -117,6 +117,11 @@ "img": "icons/weapons/staves/staff-ornate-purple.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 89, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784341, - "modifiedTime": 1755259462915, + "modifiedTime": 1755385272304, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "sLAccjvCWfeedbpI", @@ -252,7 +257,6 @@ "scalable": false, "key": "fear", "value": 2, - "keyIsID": false, "step": null } ], @@ -340,7 +344,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -527,7 +530,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Sellsword_bgreCaQ6ap2DVpCr.json b/src/packs/adversaries/adversary_Sellsword_bgreCaQ6ap2DVpCr.json index 7e92085f..d281b974 100644 --- a/src/packs/adversaries/adversary_Sellsword_bgreCaQ6ap2DVpCr.json +++ b/src/packs/adversaries/adversary_Sellsword_bgreCaQ6ap2DVpCr.json @@ -99,6 +99,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 81, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784341, - "modifiedTime": 1755263436436, + "modifiedTime": 1755384775888, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "bgreCaQ6ap2DVpCr", @@ -270,7 +275,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Shambling_Zombie_2nXz4ilAY4xuhKLm.json b/src/packs/adversaries/adversary_Shambling_Zombie_2nXz4ilAY4xuhKLm.json index b2f19954..860b659b 100644 --- a/src/packs/adversaries/adversary_Shambling_Zombie_2nXz4ilAY4xuhKLm.json +++ b/src/packs/adversaries/adversary_Shambling_Zombie_2nXz4ilAY4xuhKLm.json @@ -106,6 +106,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 84, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784342, - "modifiedTime": 1755263464581, + "modifiedTime": 1755384838975, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "2nXz4ilAY4xuhKLm", diff --git a/src/packs/adversaries/adversary_Shark_YmVAkdNsyuXWTtYp.json b/src/packs/adversaries/adversary_Shark_YmVAkdNsyuXWTtYp.json index 9f29fea3..1e1b422a 100644 --- a/src/packs/adversaries/adversary_Shark_YmVAkdNsyuXWTtYp.json +++ b/src/packs/adversaries/adversary_Shark_YmVAkdNsyuXWTtYp.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 90, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784342, - "modifiedTime": 1755259462790, + "modifiedTime": 1755385288183, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "YmVAkdNsyuXWTtYp", @@ -459,7 +464,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Siren_BK4jwyXSRx7IOQiO.json b/src/packs/adversaries/adversary_Siren_BK4jwyXSRx7IOQiO.json index 27592dd8..06f3c4a8 100644 --- a/src/packs/adversaries/adversary_Siren_BK4jwyXSRx7IOQiO.json +++ b/src/packs/adversaries/adversary_Siren_BK4jwyXSRx7IOQiO.json @@ -112,6 +112,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 90, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784344, - "modifiedTime": 1755265520298, + "modifiedTime": 1755385294725, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "BK4jwyXSRx7IOQiO", @@ -354,7 +359,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Skeleton_Archer_7X5q7a6ueeHs5oA9.json b/src/packs/adversaries/adversary_Skeleton_Archer_7X5q7a6ueeHs5oA9.json index 29ab00ba..31693f85 100644 --- a/src/packs/adversaries/adversary_Skeleton_Archer_7X5q7a6ueeHs5oA9.json +++ b/src/packs/adversaries/adversary_Skeleton_Archer_7X5q7a6ueeHs5oA9.json @@ -106,6 +106,11 @@ "img": "icons/weapons/bows/shortbow-leather.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 81, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784345, - "modifiedTime": 1755259462590, + "modifiedTime": 1755384787440, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "7X5q7a6ueeHs5oA9", diff --git a/src/packs/adversaries/adversary_Skeleton_Dredge_6l1a3Fazq8BoKIcc.json b/src/packs/adversaries/adversary_Skeleton_Dredge_6l1a3Fazq8BoKIcc.json index 9fccfbd6..5f32df25 100644 --- a/src/packs/adversaries/adversary_Skeleton_Dredge_6l1a3Fazq8BoKIcc.json +++ b/src/packs/adversaries/adversary_Skeleton_Dredge_6l1a3Fazq8BoKIcc.json @@ -99,6 +99,11 @@ "stress": { "max": 1 } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 81, + "artist": "" } }, "flags": {}, @@ -108,9 +113,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784347, - "modifiedTime": 1755264328739, + "modifiedTime": 1755384795225, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "6l1a3Fazq8BoKIcc", @@ -270,7 +275,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Skeleton_Knight_Q9LaVTyXF9NF12C7.json b/src/packs/adversaries/adversary_Skeleton_Knight_Q9LaVTyXF9NF12C7.json index 4edf1b89..eb13eed0 100644 --- a/src/packs/adversaries/adversary_Skeleton_Knight_Q9LaVTyXF9NF12C7.json +++ b/src/packs/adversaries/adversary_Skeleton_Knight_Q9LaVTyXF9NF12C7.json @@ -106,6 +106,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 82, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784348, - "modifiedTime": 1755264339964, + "modifiedTime": 1755384814146, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Q9LaVTyXF9NF12C7", @@ -330,7 +335,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Skeleton_Warrior_10YIQl0lvCJXZLfX.json b/src/packs/adversaries/adversary_Skeleton_Warrior_10YIQl0lvCJXZLfX.json index 55ab1fb4..5d090b46 100644 --- a/src/packs/adversaries/adversary_Skeleton_Warrior_10YIQl0lvCJXZLfX.json +++ b/src/packs/adversaries/adversary_Skeleton_Warrior_10YIQl0lvCJXZLfX.json @@ -106,6 +106,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 82, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784350, - "modifiedTime": 1755264406791, + "modifiedTime": 1755384823045, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "10YIQl0lvCJXZLfX", diff --git a/src/packs/adversaries/adversary_Spectral_Archer_5tCkhnBByUIN5UdG.json b/src/packs/adversaries/adversary_Spectral_Archer_5tCkhnBByUIN5UdG.json index e556640f..a4ce7e26 100644 --- a/src/packs/adversaries/adversary_Spectral_Archer_5tCkhnBByUIN5UdG.json +++ b/src/packs/adversaries/adversary_Spectral_Archer_5tCkhnBByUIN5UdG.json @@ -112,6 +112,11 @@ "range": "far", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 90, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784351, - "modifiedTime": 1755259462572, + "modifiedTime": 1755385301617, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "5tCkhnBByUIN5UdG", @@ -247,7 +252,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Spectral_Captain_65cSO3EQEh6ZH6Xk.json b/src/packs/adversaries/adversary_Spectral_Captain_65cSO3EQEh6ZH6Xk.json index c1d3db63..8041286a 100644 --- a/src/packs/adversaries/adversary_Spectral_Captain_65cSO3EQEh6ZH6Xk.json +++ b/src/packs/adversaries/adversary_Spectral_Captain_65cSO3EQEh6ZH6Xk.json @@ -112,6 +112,11 @@ "range": "far", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 90, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784352, - "modifiedTime": 1755259462575, + "modifiedTime": 1755385308553, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "65cSO3EQEh6ZH6Xk", @@ -247,7 +252,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -363,7 +367,6 @@ "scalable": false, "key": "fear", "value": 2, - "keyIsID": false, "step": null } ], @@ -427,7 +430,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -478,7 +480,77 @@ "system": { "description": "

When the Captain makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "tZKpqKdehnPxRsOc": { + "type": "healing", + "_id": "tZKpqKdehnPxRsOc", + "systemPath": "actions", + "description": "

When the Captain makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -496,12 +568,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754084396019, - "modifiedTime": 1754084409095, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760380981818, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!65cSO3EQEh6ZH6Xk.b9wn9oVMne8E1OYx" } diff --git a/src/packs/adversaries/adversary_Spectral_Guardian_UFVGl1osOsJTneLf.json b/src/packs/adversaries/adversary_Spectral_Guardian_UFVGl1osOsJTneLf.json index cd4dc479..38545446 100644 --- a/src/packs/adversaries/adversary_Spectral_Guardian_UFVGl1osOsJTneLf.json +++ b/src/packs/adversaries/adversary_Spectral_Guardian_UFVGl1osOsJTneLf.json @@ -112,6 +112,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 90, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784353, - "modifiedTime": 1755259462734, + "modifiedTime": 1755385316790, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "UFVGl1osOsJTneLf", @@ -247,7 +252,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -363,7 +367,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Spellblade_ldbWEL7uZs84vyrR.json b/src/packs/adversaries/adversary_Spellblade_ldbWEL7uZs84vyrR.json index da7fd6d6..9c55fa35 100644 --- a/src/packs/adversaries/adversary_Spellblade_ldbWEL7uZs84vyrR.json +++ b/src/packs/adversaries/adversary_Spellblade_ldbWEL7uZs84vyrR.json @@ -113,6 +113,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 82, + "artist": "" } }, "flags": {}, @@ -122,9 +127,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784353, - "modifiedTime": 1755264447203, + "modifiedTime": 1755384873585, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ldbWEL7uZs84vyrR", @@ -284,7 +289,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -400,7 +404,6 @@ "scalable": false, "key": "fear", "value": 2, - "keyIsID": false, "step": null } ], @@ -452,7 +455,77 @@ "system": { "description": "

When the Spellblade makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "f4AulN6MeMaEvqbk": { + "type": "healing", + "_id": "f4AulN6MeMaEvqbk", + "systemPath": "actions", + "description": "

When the Spellblade makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -469,12 +542,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754054217134, - "modifiedTime": 1754054233931, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760210893024, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!ldbWEL7uZs84vyrR.P9nD5K2ztkZGo2I8" } diff --git a/src/packs/adversaries/adversary_Spy_8zlynOhnVA59KpKT.json b/src/packs/adversaries/adversary_Spy_8zlynOhnVA59KpKT.json index fd4244f3..b4a5fbb7 100644 --- a/src/packs/adversaries/adversary_Spy_8zlynOhnVA59KpKT.json +++ b/src/packs/adversaries/adversary_Spy_8zlynOhnVA59KpKT.json @@ -112,6 +112,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 90, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784354, - "modifiedTime": 1755265655362, + "modifiedTime": 1755385323568, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "8zlynOhnVA59KpKT", @@ -247,7 +252,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -311,7 +315,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Stag_Knight_KGVwnLq85ywP9xvB.json b/src/packs/adversaries/adversary_Stag_Knight_KGVwnLq85ywP9xvB.json index 13dc9a27..91b83239 100644 --- a/src/packs/adversaries/adversary_Stag_Knight_KGVwnLq85ywP9xvB.json +++ b/src/packs/adversaries/adversary_Stag_Knight_KGVwnLq85ywP9xvB.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 94, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784355, - "modifiedTime": 1755266627287, + "modifiedTime": 1755385501283, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "KGVwnLq85ywP9xvB", @@ -334,7 +339,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -422,7 +426,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json b/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json index 760e1c74..45e01348 100644 --- a/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json +++ b/src/packs/adversaries/adversary_Stonewraith_3aAS2Qm3R6cgaYfE.json @@ -112,6 +112,11 @@ "range": "melee", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 91, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784355, - "modifiedTime": 1755265669682, + "modifiedTime": 1755385336971, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "3aAS2Qm3R6cgaYfE", @@ -280,7 +285,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -427,7 +431,7 @@ "_key": "!actors.items!3aAS2Qm3R6cgaYfE.tQgxiSS48TJ3X1Dl" }, { - "name": "Avalance Roar", + "name": "Avalanche Roar", "type": "feature", "system": { "description": "

Spend a Fear to roar while within a cave and cause a cave-in. All targets within Close range must succeed on an Agility Reaction Roll (14) or take 2d10 physical damage. The rubble can be cleared with a Progress Countdown (8).

@Template[type:emanation|range:c]

", @@ -445,7 +449,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -532,12 +535,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754085059319, - "modifiedTime": 1754143365810, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761503879335, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!3aAS2Qm3R6cgaYfE.9Z0i0uURfBMVIapJ" }, @@ -547,7 +550,77 @@ "system": { "description": "

When the Stonewraith makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "IIZPctjF4MJkWs4b": { + "type": "healing", + "_id": "IIZPctjF4MJkWs4b", + "systemPath": "actions", + "description": "

When the Stonewraith makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -565,12 +638,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754085161530, - "modifiedTime": 1754085176471, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760381032018, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!3aAS2Qm3R6cgaYfE.faM1UzclP0X3ZrkJ" } diff --git a/src/packs/adversaries/adversary_Swarm_of_Rats_qNgs3AbLyJrY19nt.json b/src/packs/adversaries/adversary_Swarm_of_Rats_qNgs3AbLyJrY19nt.json index 0e9cfa6d..0a7697cc 100644 --- a/src/packs/adversaries/adversary_Swarm_of_Rats_qNgs3AbLyJrY19nt.json +++ b/src/packs/adversaries/adversary_Swarm_of_Rats_qNgs3AbLyJrY19nt.json @@ -106,6 +106,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 82, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784356, - "modifiedTime": 1755264462044, + "modifiedTime": 1755384883461, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "qNgs3AbLyJrY19nt", diff --git a/src/packs/adversaries/adversary_Sylvan_Soldier_VtFBt9XBE0WrGGxP.json b/src/packs/adversaries/adversary_Sylvan_Soldier_VtFBt9XBE0WrGGxP.json index 0c869376..12b26a15 100644 --- a/src/packs/adversaries/adversary_Sylvan_Soldier_VtFBt9XBE0WrGGxP.json +++ b/src/packs/adversaries/adversary_Sylvan_Soldier_VtFBt9XBE0WrGGxP.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 82, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784356, - "modifiedTime": 1755264471444, + "modifiedTime": 1755384893528, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "VtFBt9XBE0WrGGxP", @@ -357,7 +362,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -473,7 +477,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Tangle_Bramble_Swarm_PKSXFuaIHUCoH63A.json b/src/packs/adversaries/adversary_Tangle_Bramble_Swarm_PKSXFuaIHUCoH63A.json index f1a00b34..c54afb36 100644 --- a/src/packs/adversaries/adversary_Tangle_Bramble_Swarm_PKSXFuaIHUCoH63A.json +++ b/src/packs/adversaries/adversary_Tangle_Bramble_Swarm_PKSXFuaIHUCoH63A.json @@ -143,6 +143,11 @@ "difficulty": null, "damageMod": "none" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 82, + "artist": "" } }, "flags": {}, @@ -152,9 +157,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754054959791, - "modifiedTime": 1755259462711, + "modifiedTime": 1755384904068, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { @@ -311,7 +316,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Tangle_Bramble_XcAGOSmtCFLT1unN.json b/src/packs/adversaries/adversary_Tangle_Bramble_XcAGOSmtCFLT1unN.json index c61f84aa..f3fde38b 100644 --- a/src/packs/adversaries/adversary_Tangle_Bramble_XcAGOSmtCFLT1unN.json +++ b/src/packs/adversaries/adversary_Tangle_Bramble_XcAGOSmtCFLT1unN.json @@ -139,6 +139,11 @@ "difficulty": null, "damageMod": "none" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 83, + "artist": "" } }, "flags": {}, @@ -148,9 +153,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754055125822, - "modifiedTime": 1755259462779, + "modifiedTime": 1755384916131, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { @@ -307,7 +312,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json b/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json index be94d1bd..25247c81 100644 --- a/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json +++ b/src/packs/adversaries/adversary_Tiny_Green_Ooze_aLkLFuVoKz2NLoBK.json @@ -102,6 +102,11 @@ "stress": { "max": 1 } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 80, + "artist": "" } }, "flags": {}, @@ -111,9 +116,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784359, - "modifiedTime": 1755264530216, + "modifiedTime": 1755384624947, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "aLkLFuVoKz2NLoBK", diff --git a/src/packs/adversaries/adversary_Tiny_Red_Ooze_1fkLQXVtmILqfJ44.json b/src/packs/adversaries/adversary_Tiny_Red_Ooze_1fkLQXVtmILqfJ44.json index 6c4849d4..07860ef4 100644 --- a/src/packs/adversaries/adversary_Tiny_Red_Ooze_1fkLQXVtmILqfJ44.json +++ b/src/packs/adversaries/adversary_Tiny_Red_Ooze_1fkLQXVtmILqfJ44.json @@ -102,6 +102,11 @@ "damageThresholds": { "major": 5, "severe": 5 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 80, + "artist": "" } }, "flags": {}, @@ -111,9 +116,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784359, - "modifiedTime": 1755264552312, + "modifiedTime": 1755384634569, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "1fkLQXVtmILqfJ44", diff --git a/src/packs/adversaries/adversary_Treant_Sapling_o63nS0k3wHu6EgKP.json b/src/packs/adversaries/adversary_Treant_Sapling_o63nS0k3wHu6EgKP.json index a5c004b5..139212b5 100644 --- a/src/packs/adversaries/adversary_Treant_Sapling_o63nS0k3wHu6EgKP.json +++ b/src/packs/adversaries/adversary_Treant_Sapling_o63nS0k3wHu6EgKP.json @@ -98,6 +98,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 95, + "artist": "" } }, "flags": {}, @@ -107,9 +112,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784360, - "modifiedTime": 1755259462897, + "modifiedTime": 1755385523279, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "o63nS0k3wHu6EgKP", @@ -266,7 +271,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Vampire_WWyUp6Mxl1S3KYUG.json b/src/packs/adversaries/adversary_Vampire_WWyUp6Mxl1S3KYUG.json index 803934a6..285feb7b 100644 --- a/src/packs/adversaries/adversary_Vampire_WWyUp6Mxl1S3KYUG.json +++ b/src/packs/adversaries/adversary_Vampire_WWyUp6Mxl1S3KYUG.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 95, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784364, - "modifiedTime": 1755266648769, + "modifiedTime": 1755385538146, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "WWyUp6Mxl1S3KYUG", @@ -402,7 +407,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Vault_Guardian_Gaoler_JqYraOqNmmhHk4Yy.json b/src/packs/adversaries/adversary_Vault_Guardian_Gaoler_JqYraOqNmmhHk4Yy.json index 068ce832..e28a4227 100644 --- a/src/packs/adversaries/adversary_Vault_Guardian_Gaoler_JqYraOqNmmhHk4Yy.json +++ b/src/packs/adversaries/adversary_Vault_Guardian_Gaoler_JqYraOqNmmhHk4Yy.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 95, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784367, - "modifiedTime": 1755259462674, + "modifiedTime": 1755385547451, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "JqYraOqNmmhHk4Yy", @@ -274,7 +279,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Vault_Guardian_Sentinel_FVgYb28fhxlVcGwA.json b/src/packs/adversaries/adversary_Vault_Guardian_Sentinel_FVgYb28fhxlVcGwA.json index 992bb62e..c68c72fd 100644 --- a/src/packs/adversaries/adversary_Vault_Guardian_Sentinel_FVgYb28fhxlVcGwA.json +++ b/src/packs/adversaries/adversary_Vault_Guardian_Sentinel_FVgYb28fhxlVcGwA.json @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 96, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784368, - "modifiedTime": 1755259462659, + "modifiedTime": 1755385569020, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "FVgYb28fhxlVcGwA", @@ -274,7 +279,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -395,7 +399,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -497,7 +500,77 @@ "system": { "description": "

When the Sentinel makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "AtXg38fItOgiYUee": { + "type": "healing", + "_id": "AtXg38fItOgiYUee", + "systemPath": "actions", + "description": "

When the Sentinel makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -515,12 +588,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754130991279, - "modifiedTime": 1754131007959, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760382661323, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!FVgYb28fhxlVcGwA.N4446BxubUanUQHH" } diff --git a/src/packs/adversaries/adversary_Vault_Guardian_Turret_c5hGdvY5UnSjlHws.json b/src/packs/adversaries/adversary_Vault_Guardian_Turret_c5hGdvY5UnSjlHws.json index 9de89cce..05b0908b 100644 --- a/src/packs/adversaries/adversary_Vault_Guardian_Turret_c5hGdvY5UnSjlHws.json +++ b/src/packs/adversaries/adversary_Vault_Guardian_Turret_c5hGdvY5UnSjlHws.json @@ -106,6 +106,11 @@ "img": "icons/commodities/tech/metal-joint.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 96, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784368, - "modifiedTime": 1755259462816, + "modifiedTime": 1755385577282, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "c5hGdvY5UnSjlHws", @@ -279,7 +284,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -400,7 +404,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Volcanic_Dragon__Ashen_Tyrant_pMuXGCSOQaxpi5tb.json b/src/packs/adversaries/adversary_Volcanic_Dragon__Ashen_Tyrant_pMuXGCSOQaxpi5tb.json index 51a4cd52..80a8230c 100644 --- a/src/packs/adversaries/adversary_Volcanic_Dragon__Ashen_Tyrant_pMuXGCSOQaxpi5tb.json +++ b/src/packs/adversaries/adversary_Volcanic_Dragon__Ashen_Tyrant_pMuXGCSOQaxpi5tb.json @@ -145,7 +145,12 @@ } } }, - "motivesAndTactics": "Choke, fly, intimidate, kill or be killed" + "motivesAndTactics": "Choke, fly, intimidate, kill or be killed", + "attribution": { + "source": "Daggerheart SRD", + "page": 101, + "artist": "" + } }, "prototypeToken": { "name": "Volcanic Dragon: Ashen Tyrant", @@ -248,7 +253,40 @@ "system": { "description": "

The Ashen Tyrant can be spotlighted up to four times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "cvhKUhLycuEeloKH": { + "type": "effect", + "_id": "cvhKUhLycuEeloKH", + "systemPath": "actions", + "description": "

The Ashen Tyrant can be spotlighted up to four times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "3", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -266,12 +304,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754139608923, - "modifiedTime": 1754139627030, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760383226391, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!pMuXGCSOQaxpi5tb.saz3Vr0xgfAl10tU" }, @@ -294,7 +332,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -661,7 +698,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -901,9 +937,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753929252617, - "modifiedTime": 1755267105169, + "modifiedTime": 1755385779475, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!actors!pMuXGCSOQaxpi5tb" diff --git a/src/packs/adversaries/adversary_Volcanic_Dragon__Molten_Scourge_eArAPuB38CNR0ZIM.json b/src/packs/adversaries/adversary_Volcanic_Dragon__Molten_Scourge_eArAPuB38CNR0ZIM.json index 56e7a0e7..6a088ed1 100644 --- a/src/packs/adversaries/adversary_Volcanic_Dragon__Molten_Scourge_eArAPuB38CNR0ZIM.json +++ b/src/packs/adversaries/adversary_Volcanic_Dragon__Molten_Scourge_eArAPuB38CNR0ZIM.json @@ -145,7 +145,12 @@ } } }, - "motivesAndTactics": "Douse with lava, incinerate, repel Invaders, reposition" + "motivesAndTactics": "Douse with lava, incinerate, repel Invaders, reposition", + "attribution": { + "source": "Daggerheart SRD", + "page": 100, + "artist": "" + } }, "prototypeToken": { "name": "Volcanic Dragon: Molten Scourge", @@ -248,7 +253,40 @@ "system": { "description": "

The Molten Scourge can be spotlighted up to three times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "ngzXlah4Lv3eK6i5": { + "type": "effect", + "_id": "ngzXlah4Lv3eK6i5", + "systemPath": "actions", + "description": "

The Molten Scourge can be spotlighted up to three times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "2", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -266,12 +304,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754140232475, - "modifiedTime": 1754140255711, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760383290639, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!eArAPuB38CNR0ZIM.DVtxHnbvNDz2POSD" }, @@ -327,7 +365,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -549,7 +586,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -901,9 +937,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753929160832, - "modifiedTime": 1755259462833, + "modifiedTime": 1755385761296, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!actors!eArAPuB38CNR0ZIM" diff --git a/src/packs/adversaries/adversary_Volcanic_Dragon__Obsidian_Predator_ladm7wykhZczYzrQ.json b/src/packs/adversaries/adversary_Volcanic_Dragon__Obsidian_Predator_ladm7wykhZczYzrQ.json index b546dbc0..e182cf2b 100644 --- a/src/packs/adversaries/adversary_Volcanic_Dragon__Obsidian_Predator_ladm7wykhZczYzrQ.json +++ b/src/packs/adversaries/adversary_Volcanic_Dragon__Obsidian_Predator_ladm7wykhZczYzrQ.json @@ -145,7 +145,12 @@ } } }, - "motivesAndTactics": "Defend lair, dive-bomb, fly, hunt, intimidate" + "motivesAndTactics": "Defend lair, dive-bomb, fly, hunt, intimidate", + "attribution": { + "source": "Daggerheart SRD", + "page": 100, + "artist": "" + } }, "prototypeToken": { "name": "Volcanic Dragon: Obsidian Predator", @@ -246,9 +251,42 @@ "name": "Relentless (2)", "type": "feature", "system": { - "description": "

When the Molten Scourge marks their last HP, replace them with the Ashen Tyrant and immediately spotlight them.

", + "description": "

The Obsidian Predator can be spotlighted up to two times per GM turn Spend Fear as usual to spotlight them

", "resource": null, - "actions": {}, + "actions": { + "XuhmupOVJj8ae6q0": { + "type": "effect", + "_id": "XuhmupOVJj8ae6q0", + "systemPath": "actions", + "description": "

The Obsidian Predator can be spotlighted up to two times per GM turn Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "1", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -266,12 +304,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754140957019, - "modifiedTime": 1754140976241, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760383384636, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!ladm7wykhZczYzrQ.hnr2drwGFJAXRJLo" }, @@ -806,9 +844,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753929001531, - "modifiedTime": 1755259462866, + "modifiedTime": 1755385751958, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!actors!ladm7wykhZczYzrQ" diff --git a/src/packs/adversaries/adversary_War_Wizard_noDdT0tsN6FXSmC8.json b/src/packs/adversaries/adversary_War_Wizard_noDdT0tsN6FXSmC8.json index 714c273e..37d0328a 100644 --- a/src/packs/adversaries/adversary_War_Wizard_noDdT0tsN6FXSmC8.json +++ b/src/packs/adversaries/adversary_War_Wizard_noDdT0tsN6FXSmC8.json @@ -117,6 +117,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 91, + "artist": "" } }, "flags": {}, @@ -126,9 +131,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784373, - "modifiedTime": 1755259462894, + "modifiedTime": 1755385343007, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "noDdT0tsN6FXSmC8", @@ -252,7 +257,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -316,7 +320,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -380,7 +383,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -495,7 +497,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json b/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json index fef30f1b..a23c4221 100644 --- a/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json +++ b/src/packs/adversaries/adversary_Weaponmaster_ZNbQ2jg35LG4t9eH.json @@ -65,7 +65,7 @@ }, "tier": 1, "description": "

A master-at-arms wielding a sword twice their size.

", - "motivesAndTactics": "Act fi rst, aim for the weakest, intimidate", + "motivesAndTactics": "Act first, aim for the weakest, intimidate", "attack": { "roll": { "bonus": 2, @@ -106,6 +106,11 @@ }, "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 83, + "artist": "" } }, "flags": {}, @@ -113,12 +118,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753922784373, - "modifiedTime": 1755259462796, - "lastModifiedBy": "VZIeX2YDvX338Zvr" + "modifiedTime": 1760210942230, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_id": "ZNbQ2jg35LG4t9eH", "sort": 3800000, @@ -403,18 +408,18 @@ "actionType": "action", "cost": [ { - "scalable": false, "key": "fear", + "itemId": null, "value": 1, - "keyIsID": false, + "scalable": false, "step": null, "consumeOnSuccess": false }, { - "scalable": false, - "key": "UsC0vtOBbf9Kut4v", + "key": "resource", + "itemId": "UsC0vtOBbf9Kut4v", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -522,10 +527,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.2.0", "createdTime": 1754055703816, - "modifiedTime": 1755264604190, - "lastModifiedBy": "VZIeX2YDvX338Zvr" + "modifiedTime": 1756325576007, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_key": "!actors.items!ZNbQ2jg35LG4t9eH.UsC0vtOBbf9Kut4v" }, @@ -537,7 +542,77 @@ "system": { "description": "

When the Weaponmaster makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "jeKcXbdw8gPF4OQA": { + "type": "healing", + "_id": "jeKcXbdw8gPF4OQA", + "systemPath": "actions", + "description": "

When the Weaponmaster makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -554,12 +629,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754055804370, - "modifiedTime": 1754055820896, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760210973953, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!ZNbQ2jg35LG4t9eH.oYNVPQOy5oQli5Il" } diff --git a/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json b/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json index 8c89cd72..5449bf90 100644 --- a/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json +++ b/src/packs/adversaries/adversary_Young_Dryad_8yUj2Mzvnifhxegm.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 83, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784374, - "modifiedTime": 1755264623824, + "modifiedTime": 1755384952240, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "8yUj2Mzvnifhxegm", @@ -249,7 +254,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -338,7 +342,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -442,7 +445,77 @@ "system": { "description": "

When the Dryad makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "9MGyAjWtLbDz8Znu": { + "type": "healing", + "_id": "9MGyAjWtLbDz8Znu", + "systemPath": "actions", + "description": "

When the Dryad makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "subType": null, "originId": null @@ -459,12 +532,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754056082977, - "modifiedTime": 1754056099954, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760211015186, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!8yUj2Mzvnifhxegm.4f79icB7Dd1xLEZQ" } diff --git a/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json b/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json index 48b1cd14..f8726219 100644 --- a/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json +++ b/src/packs/adversaries/adversary_Young_Ice_Dragon_UGPiPLJsPvMTSKEF.json @@ -112,6 +112,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 96, + "artist": "" } }, "flags": {}, @@ -121,9 +126,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784374, - "modifiedTime": 1755266725295, + "modifiedTime": 1755385585250, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "UGPiPLJsPvMTSKEF", @@ -234,7 +239,40 @@ "system": { "description": "

The Dragon can be spotlighted up to threeΒ times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "cmZsrUJa9FJ8gZKP": { + "type": "effect", + "_id": "cmZsrUJa9FJ8gZKP", + "systemPath": "actions", + "description": "

The Dragon can be spotlighted up to threeΒ times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "2", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -252,12 +290,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754131459641, - "modifiedTime": 1754131476300, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760382728777, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!UGPiPLJsPvMTSKEF.lsHoXHZ452axhyEr" }, @@ -399,7 +437,6 @@ "scalable": false, "key": "fear", "value": 2, - "keyIsID": false, "step": null } ], @@ -548,7 +585,7 @@ "_key": "!actors.items!UGPiPLJsPvMTSKEF.QV2ytK4b1VWF71OS" }, { - "name": "Avalance", + "name": "Avalanche", "type": "feature", "system": { "description": "

Spend a Fear to have the Dragon unleash a huge downfall of snow and ice, covering all other creatures within Far range. All targets within this area must succeed on an Instinct Reaction Roll or be buried in snow and rocks, becoming Vulnerable until they dig themselves out from the debris. For each PC that fails the reaction roll, you gain a Fear.

@Template[type:emanation|range:f]

", @@ -566,7 +603,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -678,12 +714,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754131703390, - "modifiedTime": 1754131790034, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761503909714, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!UGPiPLJsPvMTSKEF.CcRTxCDCJskiu3fI" }, @@ -836,7 +872,77 @@ "system": { "description": "

When the Dragon makes a successful attack against a PC, you gain a Fear.

", "resource": null, - "actions": {}, + "actions": { + "5V5SDnUBg9dQOkLW": { + "type": "healing", + "_id": "5V5SDnUBg9dQOkLW", + "systemPath": "actions", + "description": "

When the Dragon makes a successful attack against a PC, you gain a Fear.

", + "chatDisplay": true, + "actionType": "reaction", + "cost": [], + "uses": { + "value": null, + "max": "", + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": true, + "formula": "1" + }, + "multiplier": "flat", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null + }, + "applyTo": "fear", + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + }, + "type": [] + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": null + }, + "effects": [], + "roll": { + "type": null, + "trait": null, + "difficulty": null, + "bonus": null, + "advState": "neutral", + "diceRolling": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "compare": null, + "treshold": null + }, + "useDefault": false + }, + "name": "Gain Fear", + "img": "icons/skills/melee/strike-weapons-orange.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -854,12 +960,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754131943438, - "modifiedTime": 1754131956104, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760382767009, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!UGPiPLJsPvMTSKEF.QHdJgT2fvwqquyf7" } diff --git a/src/packs/adversaries/adversary_Zombie_Legion_YhJrP7rTBiRdX5Fp.json b/src/packs/adversaries/adversary_Zombie_Legion_YhJrP7rTBiRdX5Fp.json index ce880f7d..2ec376dc 100644 --- a/src/packs/adversaries/adversary_Zombie_Legion_YhJrP7rTBiRdX5Fp.json +++ b/src/packs/adversaries/adversary_Zombie_Legion_YhJrP7rTBiRdX5Fp.json @@ -106,6 +106,11 @@ "img": "icons/creatures/tentacles/tentacles-octopus-black-pink.webp", "type": "attack", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 101, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784375, - "modifiedTime": 1755259462784, + "modifiedTime": 1755385797660, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "YhJrP7rTBiRdX5Fp", @@ -346,7 +351,40 @@ "system": { "description": "

The Legion can be spotlighted up to twoΒ times per GM turn. Spend Fear as usual to spotlight them.

", "resource": null, - "actions": {}, + "actions": { + "IACoLeO6VmnK0qkW": { + "type": "effect", + "_id": "IACoLeO6VmnK0qkW", + "systemPath": "actions", + "description": "

The Legion can be spotlighted up to twoΒ times per GM turn. Spend Fear as usual to spotlight them.

", + "chatDisplay": true, + "actionType": "passive", + "cost": [ + { + "scalable": false, + "key": "fear", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], + "uses": { + "value": 0, + "max": "1", + "recovery": null, + "consumeOnSuccess": false + }, + "effects": [], + "target": { + "type": "any", + "amount": null + }, + "name": "Spotlight: Relentless", + "img": "icons/magic/unholy/silhouette-evil-horned-giant.webp", + "range": "" + } + }, "originItemType": null, "originId": null }, @@ -364,12 +402,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754132968589, - "modifiedTime": 1754132983591, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1760383453524, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!YhJrP7rTBiRdX5Fp.fCYLZKeTn0YSpVDI" }, @@ -392,7 +430,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/adversaries/adversary_Zombie_Pack_Nf0v43rtflV56V2T.json b/src/packs/adversaries/adversary_Zombie_Pack_Nf0v43rtflV56V2T.json index 6f001b5c..a51ce6a0 100644 --- a/src/packs/adversaries/adversary_Zombie_Pack_Nf0v43rtflV56V2T.json +++ b/src/packs/adversaries/adversary_Zombie_Pack_Nf0v43rtflV56V2T.json @@ -106,6 +106,11 @@ "type": "attack", "range": "melee", "chatDisplay": false + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 84, + "artist": "" } }, "flags": {}, @@ -115,9 +120,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753922784375, - "modifiedTime": 1755264639582, + "modifiedTime": 1755384852262, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Nf0v43rtflV56V2T", @@ -277,7 +282,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/ancestries/ancestry_Clank_ed8BoLR4SHOpeV00.json b/src/packs/ancestries/ancestry_Clank_ed8BoLR4SHOpeV00.json index fe060a41..9f71128c 100644 --- a/src/packs/ancestries/ancestry_Clank_ed8BoLR4SHOpeV00.json +++ b/src/packs/ancestries/ancestry_Clank_ed8BoLR4SHOpeV00.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.2xlqKOkDxWHbuj4t" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 27, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784381, - "modifiedTime": 1753993914940, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394032819, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ed8BoLR4SHOpeV00", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Drakona_VLeOEqkLS0RbF0tB.json b/src/packs/ancestries/ancestry_Drakona_VLeOEqkLS0RbF0tB.json index a3861a40..0f5657b4 100644 --- a/src/packs/ancestries/ancestry_Drakona_VLeOEqkLS0RbF0tB.json +++ b/src/packs/ancestries/ancestry_Drakona_VLeOEqkLS0RbF0tB.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.sRaE3CgkgjBF1UpV" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 27, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784382, - "modifiedTime": 1753994173339, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394105939, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "VLeOEqkLS0RbF0tB", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Dwarf_pDt6fI6otv2E2odf.json b/src/packs/ancestries/ancestry_Dwarf_pDt6fI6otv2E2odf.json index 8bdd2113..706dc2ec 100644 --- a/src/packs/ancestries/ancestry_Dwarf_pDt6fI6otv2E2odf.json +++ b/src/packs/ancestries/ancestry_Dwarf_pDt6fI6otv2E2odf.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.0RN0baBxh95GT1cm" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 27, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784382, - "modifiedTime": 1753994478754, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394117175, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "pDt6fI6otv2E2odf", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Elf_q2l6g3Ssa04K84GO.json b/src/packs/ancestries/ancestry_Elf_q2l6g3Ssa04K84GO.json index 84792663..3db7bee2 100644 --- a/src/packs/ancestries/ancestry_Elf_q2l6g3Ssa04K84GO.json +++ b/src/packs/ancestries/ancestry_Elf_q2l6g3Ssa04K84GO.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.TfolXWFG2W2hx6sK" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784382, - "modifiedTime": 1753994623487, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394127340, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "q2l6g3Ssa04K84GO", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Faerie_XzJVbb5NT9k79ykR.json b/src/packs/ancestries/ancestry_Faerie_XzJVbb5NT9k79ykR.json index 250444de..93b277e6 100644 --- a/src/packs/ancestries/ancestry_Faerie_XzJVbb5NT9k79ykR.json +++ b/src/packs/ancestries/ancestry_Faerie_XzJVbb5NT9k79ykR.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.WquAjoOcso8lwySW" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784383, - "modifiedTime": 1753994865178, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394136677, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "XzJVbb5NT9k79ykR", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Faun_HaYhe6WqoXW5EbRl.json b/src/packs/ancestries/ancestry_Faun_HaYhe6WqoXW5EbRl.json index 628f4a6a..5dc04976 100644 --- a/src/packs/ancestries/ancestry_Faun_HaYhe6WqoXW5EbRl.json +++ b/src/packs/ancestries/ancestry_Faun_HaYhe6WqoXW5EbRl.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.gpW19TfJk0WWFh1S" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784383, - "modifiedTime": 1753995403631, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394142374, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "HaYhe6WqoXW5EbRl", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Firbolg_hzKmydI8sR3uk4CO.json b/src/packs/ancestries/ancestry_Firbolg_hzKmydI8sR3uk4CO.json index 07cc9996..2de5ee24 100644 --- a/src/packs/ancestries/ancestry_Firbolg_hzKmydI8sR3uk4CO.json +++ b/src/packs/ancestries/ancestry_Firbolg_hzKmydI8sR3uk4CO.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.G5pE8FW94V1W9jJx" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784384, - "modifiedTime": 1753995720164, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394148626, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "hzKmydI8sR3uk4CO", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Fungril_J1hX7nBBc5jQiHli.json b/src/packs/ancestries/ancestry_Fungril_J1hX7nBBc5jQiHli.json index 06146d9c..aa30fc5b 100644 --- a/src/packs/ancestries/ancestry_Fungril_J1hX7nBBc5jQiHli.json +++ b/src/packs/ancestries/ancestry_Fungril_J1hX7nBBc5jQiHli.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.WuwXH2r2uM9sDJtj" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784385, - "modifiedTime": 1753996282858, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394159775, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "J1hX7nBBc5jQiHli", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Galapa_eZNG5Iv0yfbHs5CO.json b/src/packs/ancestries/ancestry_Galapa_eZNG5Iv0yfbHs5CO.json index 5d6ca0ae..2817ecf3 100644 --- a/src/packs/ancestries/ancestry_Galapa_eZNG5Iv0yfbHs5CO.json +++ b/src/packs/ancestries/ancestry_Galapa_eZNG5Iv0yfbHs5CO.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.UFR67BUOhNGLFyg9" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784385, - "modifiedTime": 1753996656622, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394165825, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "eZNG5Iv0yfbHs5CO", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Giant_3U8CncG92a7ERIJ0.json b/src/packs/ancestries/ancestry_Giant_3U8CncG92a7ERIJ0.json index 02b3fa63..d7b6bda0 100644 --- a/src/packs/ancestries/ancestry_Giant_3U8CncG92a7ERIJ0.json +++ b/src/packs/ancestries/ancestry_Giant_3U8CncG92a7ERIJ0.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.WRs2jvwM0STmkWIW" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784386, - "modifiedTime": 1753996849286, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394174325, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "3U8CncG92a7ERIJ0", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Goblin_EKPEdIz9lA9grPqH.json b/src/packs/ancestries/ancestry_Goblin_EKPEdIz9lA9grPqH.json index 0e1fb16e..a7f92b00 100644 --- a/src/packs/ancestries/ancestry_Goblin_EKPEdIz9lA9grPqH.json +++ b/src/packs/ancestries/ancestry_Goblin_EKPEdIz9lA9grPqH.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.AXqcoxnRoWBbbKpK" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784386, - "modifiedTime": 1753997126174, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394180109, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "EKPEdIz9lA9grPqH", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Halfling_CtL2jDjvPOJxNJKm.json b/src/packs/ancestries/ancestry_Halfling_CtL2jDjvPOJxNJKm.json index ea37196d..32b640b5 100644 --- a/src/packs/ancestries/ancestry_Halfling_CtL2jDjvPOJxNJKm.json +++ b/src/packs/ancestries/ancestry_Halfling_CtL2jDjvPOJxNJKm.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.e2Cu6exxtvfQzc1e" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784387, - "modifiedTime": 1753997257661, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394186643, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "CtL2jDjvPOJxNJKm", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Human_wtJ5V5qRppLQn61n.json b/src/packs/ancestries/ancestry_Human_wtJ5V5qRppLQn61n.json index 58310832..5ef479b6 100644 --- a/src/packs/ancestries/ancestry_Human_wtJ5V5qRppLQn61n.json +++ b/src/packs/ancestries/ancestry_Human_wtJ5V5qRppLQn61n.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.BNofV1UC4ZbdFTkb" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784388, - "modifiedTime": 1753997481487, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394199176, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "wtJ5V5qRppLQn61n", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Infernis_hyxcuF2I0xcZSGkm.json b/src/packs/ancestries/ancestry_Infernis_hyxcuF2I0xcZSGkm.json index 67e95734..823aedf8 100644 --- a/src/packs/ancestries/ancestry_Infernis_hyxcuF2I0xcZSGkm.json +++ b/src/packs/ancestries/ancestry_Infernis_hyxcuF2I0xcZSGkm.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.i92lYjDhVB0LyPid" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784388, - "modifiedTime": 1754000194006, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394204627, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "hyxcuF2I0xcZSGkm", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Katari_yyW0UM8srD9WuwW7.json b/src/packs/ancestries/ancestry_Katari_yyW0UM8srD9WuwW7.json index f3997143..25819b34 100644 --- a/src/packs/ancestries/ancestry_Katari_yyW0UM8srD9WuwW7.json +++ b/src/packs/ancestries/ancestry_Katari_yyW0UM8srD9WuwW7.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.Zj69cAeb3NjIa8Hn" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784388, - "modifiedTime": 1754000474970, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394210762, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "yyW0UM8srD9WuwW7", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Orc_D1RbUsRV9HpTrPuF.json b/src/packs/ancestries/ancestry_Orc_D1RbUsRV9HpTrPuF.json index 0075cf94..dbbfe21b 100644 --- a/src/packs/ancestries/ancestry_Orc_D1RbUsRV9HpTrPuF.json +++ b/src/packs/ancestries/ancestry_Orc_D1RbUsRV9HpTrPuF.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.YhxD1ujZpftPu19w" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784389, - "modifiedTime": 1754000737849, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394218178, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "D1RbUsRV9HpTrPuF", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Ribbet_HwOoBKXOL9Tf5j85.json b/src/packs/ancestries/ancestry_Ribbet_HwOoBKXOL9Tf5j85.json index 5624ba77..677852f7 100644 --- a/src/packs/ancestries/ancestry_Ribbet_HwOoBKXOL9Tf5j85.json +++ b/src/packs/ancestries/ancestry_Ribbet_HwOoBKXOL9Tf5j85.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.oWbdlh51ajn1Q5kL" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 31, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784389, - "modifiedTime": 1754000881040, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394245530, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "HwOoBKXOL9Tf5j85", "sort": 3400000, diff --git a/src/packs/ancestries/ancestry_Simiah_2yMLxxn7CHEvmShj.json b/src/packs/ancestries/ancestry_Simiah_2yMLxxn7CHEvmShj.json index d09abcdd..647ddf20 100644 --- a/src/packs/ancestries/ancestry_Simiah_2yMLxxn7CHEvmShj.json +++ b/src/packs/ancestries/ancestry_Simiah_2yMLxxn7CHEvmShj.json @@ -14,19 +14,24 @@ "type": "secondary", "item": "Compendium.daggerheart.ancestries.Item.3lNqft3LmOlEIEkw" } - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 31, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784390, - "modifiedTime": 1754001185010, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394237166, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "2yMLxxn7CHEvmShj", "sort": 3400000, diff --git a/src/packs/ancestries/feature_Adaptability_BNofV1UC4ZbdFTkb.json b/src/packs/ancestries/feature_Adaptability_BNofV1UC4ZbdFTkb.json index 74d0396e..8884df4f 100644 --- a/src/packs/ancestries/feature_Adaptability_BNofV1UC4ZbdFTkb.json +++ b/src/packs/ancestries/feature_Adaptability_BNofV1UC4ZbdFTkb.json @@ -12,7 +12,7 @@ "type": "effect", "_id": "D7EE2L2Y96nfrfTW", "systemPath": "actions", - "description": "", + "description": "

When you fail a roll that utilized one of your Experiences, you can mark a Stress to reroll.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -41,7 +40,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "effects": [], "sort": 0, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753997402776, - "modifiedTime": 1753997472141, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138322948, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!BNofV1UC4ZbdFTkb" } diff --git a/src/packs/ancestries/feature_Amphibious_GVhmLouGq9GWCsN8.json b/src/packs/ancestries/feature_Amphibious_GVhmLouGq9GWCsN8.json index fbc8de74..f1e07a4a 100644 --- a/src/packs/ancestries/feature_Amphibious_GVhmLouGq9GWCsN8.json +++ b/src/packs/ancestries/feature_Amphibious_GVhmLouGq9GWCsN8.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 31, + "artist": "" + } }, "effects": [], "sort": 0, @@ -23,12 +28,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754000764274, - "modifiedTime": 1754000778312, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394576564, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!GVhmLouGq9GWCsN8" } diff --git a/src/packs/ancestries/feature_Caprine_Leap_nLL2zuDDDbbyxlrQ.json b/src/packs/ancestries/feature_Caprine_Leap_nLL2zuDDDbbyxlrQ.json index db455164..98a9ee47 100644 --- a/src/packs/ancestries/feature_Caprine_Leap_nLL2zuDDDbbyxlrQ.json +++ b/src/packs/ancestries/feature_Caprine_Leap_nLL2zuDDDbbyxlrQ.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "effects": [], "sort": 0, @@ -23,12 +28,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753995211408, - "modifiedTime": 1753995232467, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394383202, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!nLL2zuDDDbbyxlrQ" } diff --git a/src/packs/ancestries/feature_Celestial_Trance_TfolXWFG2W2hx6sK.json b/src/packs/ancestries/feature_Celestial_Trance_TfolXWFG2W2hx6sK.json index e9a240ef..46a5c210 100644 --- a/src/packs/ancestries/feature_Celestial_Trance_TfolXWFG2W2hx6sK.json +++ b/src/packs/ancestries/feature_Celestial_Trance_TfolXWFG2W2hx6sK.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "effects": [ { @@ -50,7 +55,7 @@ "startRound": null, "startTurn": null }, - "description": "", + "description": "

During a rest, you can drop into a trance to choose an additional downtime move.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -61,12 +66,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1753994586602, - "modifiedTime": 1753994613702, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761137891643, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!TfolXWFG2W2hx6sK.LqQvZJJLNMnFkt1D" } @@ -81,12 +86,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753994570602, - "modifiedTime": 1753994583518, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394338351, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!TfolXWFG2W2hx6sK" } diff --git a/src/packs/ancestries/feature_Charge_AA2CZlJSWW8GPhrR.json b/src/packs/ancestries/feature_Charge_AA2CZlJSWW8GPhrR.json index 319086a4..40dd11ef 100644 --- a/src/packs/ancestries/feature_Charge_AA2CZlJSWW8GPhrR.json +++ b/src/packs/ancestries/feature_Charge_AA2CZlJSWW8GPhrR.json @@ -12,7 +12,7 @@ "type": "damage", "_id": "KLg0T6I1w24sfIbH", "systemPath": "actions", - "description": "", + "description": "

When you succeed on an Agility Roll to move from Far or Very Far range into Melee range with one or more targets, you can mark a Stress to deal 1d12 physical damage to all targets within Melee range.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -65,14 +64,19 @@ "amount": null }, "effects": [], - "name": "Damage", + "name": "Deal Damage", "img": "icons/magic/movement/trail-streak-impact-blue.webp", "range": "" } }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "effects": [], "sort": 0, @@ -85,12 +89,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753995559143, - "modifiedTime": 1753995629206, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138130084, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!AA2CZlJSWW8GPhrR" } diff --git a/src/packs/ancestries/feature_Danger_Sense_AXqcoxnRoWBbbKpK.json b/src/packs/ancestries/feature_Danger_Sense_AXqcoxnRoWBbbKpK.json index e8152918..09e677c7 100644 --- a/src/packs/ancestries/feature_Danger_Sense_AXqcoxnRoWBbbKpK.json +++ b/src/packs/ancestries/feature_Danger_Sense_AXqcoxnRoWBbbKpK.json @@ -12,7 +12,7 @@ "type": "effect", "_id": "V2K3pMWOCVwBUnjq", "systemPath": "actions", - "description": "", + "description": "

Once per rest, mark a Stress to force an adversary to reroll an attack against you or an ally within Very Close range.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -41,7 +40,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "effects": [], "sort": 0, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753997061290, - "modifiedTime": 1754498245294, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138260496, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!AXqcoxnRoWBbbKpK" } diff --git a/src/packs/ancestries/feature_Death_Connection_WuwXH2r2uM9sDJtj.json b/src/packs/ancestries/feature_Death_Connection_WuwXH2r2uM9sDJtj.json index cc2ba641..ad87f1ea 100644 --- a/src/packs/ancestries/feature_Death_Connection_WuwXH2r2uM9sDJtj.json +++ b/src/packs/ancestries/feature_Death_Connection_WuwXH2r2uM9sDJtj.json @@ -12,7 +12,7 @@ "type": "effect", "_id": "0RdKeWfbPRTHcAMf", "systemPath": "actions", - "description": "", + "description": "

While touching a corpse that died recently, you can mark a Stress to extract one memory from the corpse related to a specific emotion or sensation of your choice.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -41,7 +40,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "effects": [], "sort": 0, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753996213198, - "modifiedTime": 1753996272048, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138171389, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!WuwXH2r2uM9sDJtj" } diff --git a/src/packs/ancestries/feature_Dread_Visage_i92lYjDhVB0LyPid.json b/src/packs/ancestries/feature_Dread_Visage_i92lYjDhVB0LyPid.json index 23adb822..c26fe58b 100644 --- a/src/packs/ancestries/feature_Dread_Visage_i92lYjDhVB0LyPid.json +++ b/src/packs/ancestries/feature_Dread_Visage_i92lYjDhVB0LyPid.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "effects": [ { @@ -30,7 +35,7 @@ { "key": "system.advantageSources", "mode": 2, - "value": "Rolls to intimidate hostile creatures", + "value": "Dread Visage: Rolls to intimidate hostile creatures", "priority": null } ], @@ -55,12 +60,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754000031619, - "modifiedTime": 1754000179466, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138386730, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!i92lYjDhVB0LyPid.2Gd6iHQX521aAZqC" } @@ -75,12 +80,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753999985847, - "modifiedTime": 1754000026405, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394529510, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!i92lYjDhVB0LyPid" } diff --git a/src/packs/ancestries/feature_Efficient_2xlqKOkDxWHbuj4t.json b/src/packs/ancestries/feature_Efficient_2xlqKOkDxWHbuj4t.json index 5d946a88..0ac18184 100644 --- a/src/packs/ancestries/feature_Efficient_2xlqKOkDxWHbuj4t.json +++ b/src/packs/ancestries/feature_Efficient_2xlqKOkDxWHbuj4t.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 27, + "artist": "" + } }, "effects": [ { @@ -50,7 +55,7 @@ "startRound": null, "startTurn": null }, - "description": "

When you take a short rest, you can choose a long rest move instead of a short rest move.

", + "description": "

When you take a short rest, you can choose a long rest move instead of a short rest move.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -61,12 +66,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1753993852553, - "modifiedTime": 1753993889097, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761137607063, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!2xlqKOkDxWHbuj4t.EEryWN2nE33ppGHi" } @@ -81,12 +86,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753993806761, - "modifiedTime": 1753993849345, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394264580, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!2xlqKOkDxWHbuj4t" } diff --git a/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json b/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json index 9764c5b4..3f50d8cf 100644 --- a/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json +++ b/src/packs/ancestries/feature_Elemental_Breath_sRaE3CgkgjBF1UpV.json @@ -82,7 +82,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 27, + "artist": "" + } }, "effects": [], "sort": 0, diff --git a/src/packs/ancestries/feature_Endurance_tXWEMdLXafUSZTbK.json b/src/packs/ancestries/feature_Endurance_tXWEMdLXafUSZTbK.json index 1624957e..b82b9e3e 100644 --- a/src/packs/ancestries/feature_Endurance_tXWEMdLXafUSZTbK.json +++ b/src/packs/ancestries/feature_Endurance_tXWEMdLXafUSZTbK.json @@ -10,11 +10,16 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "effects": [ { - "name": "Base", + "name": "Endurance", "type": "base", "_id": "db8W2Q0Qty84XV0x", "img": "icons/magic/control/buff-strength-muscle-damage.webp", @@ -55,12 +60,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1753996768847, - "modifiedTime": 1754310930764, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138203999, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!tXWEMdLXafUSZTbK.db8W2Q0Qty84XV0x" } @@ -75,12 +80,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753996738047, - "modifiedTime": 1753996763700, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394456808, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!tXWEMdLXafUSZTbK" } diff --git a/src/packs/ancestries/feature_Fearless_IlWvn5kCqCBMuUJn.json b/src/packs/ancestries/feature_Fearless_IlWvn5kCqCBMuUJn.json index bb8d790c..0bd9c405 100644 --- a/src/packs/ancestries/feature_Fearless_IlWvn5kCqCBMuUJn.json +++ b/src/packs/ancestries/feature_Fearless_IlWvn5kCqCBMuUJn.json @@ -12,7 +12,7 @@ "type": "effect", "_id": "G1H7k5RdvS1EJgFu", "systemPath": "actions", - "description": "", + "description": "

When you roll with Fear, you can mark 2 Stress to change it into a roll with Hope instead.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 2, - "keyIsID": false, "step": null } ], @@ -41,7 +40,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "effects": [], "sort": 0, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753999842518, - "modifiedTime": 1753999969945, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138348732, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!IlWvn5kCqCBMuUJn" } diff --git a/src/packs/ancestries/feature_Feline_Instincts_lNgbbYnCKgrdvA85.json b/src/packs/ancestries/feature_Feline_Instincts_lNgbbYnCKgrdvA85.json index c0547372..f78ecca2 100644 --- a/src/packs/ancestries/feature_Feline_Instincts_lNgbbYnCKgrdvA85.json +++ b/src/packs/ancestries/feature_Feline_Instincts_lNgbbYnCKgrdvA85.json @@ -12,7 +12,7 @@ "type": "effect", "_id": "ALsGHOy0q5THGxz5", "systemPath": "actions", - "description": "", + "description": "

When you make an Agility Roll, you can spend 2 Hope to reroll your Hope Die.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null } ], @@ -41,7 +40,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "effects": [], "sort": 0, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754000245487, - "modifiedTime": 1754000291789, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138403613, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!lNgbbYnCKgrdvA85" } diff --git a/src/packs/ancestries/feature_Fungril_Network_9tmeXm623hl4Qnws.json b/src/packs/ancestries/feature_Fungril_Network_9tmeXm623hl4Qnws.json index 60a74cf4..1604a7f8 100644 --- a/src/packs/ancestries/feature_Fungril_Network_9tmeXm623hl4Qnws.json +++ b/src/packs/ancestries/feature_Fungril_Network_9tmeXm623hl4Qnws.json @@ -12,7 +12,7 @@ "type": "attack", "_id": "ZYfigAyUdDUteczO", "systemPath": "actions", - "description": "", + "description": "

Make an Instinct Roll (12) to use your mycelial array to speak with others of your ancestry. On a success, you can communicate across any distance.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -57,7 +57,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "effects": [], "sort": 0, @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753996087513, - "modifiedTime": 1753996189704, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138154960, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!9tmeXm623hl4Qnws" } diff --git a/src/packs/ancestries/feature_High_Stamina_HMXNJZ7ynzajR2KT.json b/src/packs/ancestries/feature_High_Stamina_HMXNJZ7ynzajR2KT.json index 81fd4b84..eeae4dd4 100644 --- a/src/packs/ancestries/feature_High_Stamina_HMXNJZ7ynzajR2KT.json +++ b/src/packs/ancestries/feature_High_Stamina_HMXNJZ7ynzajR2KT.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "effects": [ { @@ -75,12 +80,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753997324366, - "modifiedTime": 1753997344417, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394512693, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!HMXNJZ7ynzajR2KT" } diff --git a/src/packs/ancestries/feature_Increased_Fortitude_0RN0baBxh95GT1cm.json b/src/packs/ancestries/feature_Increased_Fortitude_0RN0baBxh95GT1cm.json index 34de2d91..2f2b8b5f 100644 --- a/src/packs/ancestries/feature_Increased_Fortitude_0RN0baBxh95GT1cm.json +++ b/src/packs/ancestries/feature_Increased_Fortitude_0RN0baBxh95GT1cm.json @@ -12,7 +12,7 @@ "type": "effect", "_id": "pFPbjyexOPx5gog6", "systemPath": "actions", - "description": "", + "description": "

Spend 3 Hope to halve incoming physical damage.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null } ], @@ -41,7 +40,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 27, + "artist": "" + } }, "effects": [], "sort": 0, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753994395837, - "modifiedTime": 1753994468110, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761137852259, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!0RN0baBxh95GT1cm" } diff --git a/src/packs/ancestries/feature_Internal_Compass_e2Cu6exxtvfQzc1e.json b/src/packs/ancestries/feature_Internal_Compass_e2Cu6exxtvfQzc1e.json index 00645109..0ebd51ff 100644 --- a/src/packs/ancestries/feature_Internal_Compass_e2Cu6exxtvfQzc1e.json +++ b/src/packs/ancestries/feature_Internal_Compass_e2Cu6exxtvfQzc1e.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "effects": [], "sort": 0, @@ -23,12 +28,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753997233606, - "modifiedTime": 1753997248375, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394489091, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!e2Cu6exxtvfQzc1e" } diff --git a/src/packs/ancestries/feature_Kick_gpW19TfJk0WWFh1S.json b/src/packs/ancestries/feature_Kick_gpW19TfJk0WWFh1S.json index f9233e32..cc285355 100644 --- a/src/packs/ancestries/feature_Kick_gpW19TfJk0WWFh1S.json +++ b/src/packs/ancestries/feature_Kick_gpW19TfJk0WWFh1S.json @@ -12,10 +12,19 @@ "type": "damage", "_id": "bXbQ57CB1Hfj5XrS", "systemPath": "actions", - "description": "", + "description": "

When you succeed on an attack against a target within Melee range, you can mark a Stress to kick yourself off them, dealing an extra 2d6 damage and knocking back either yourself or the target to Very Close range.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -26,11 +35,11 @@ { "value": { "custom": { - "enabled": true, - "formula": "2d6" + "enabled": false, + "formula": "" }, - "multiplier": "prof", - "flatMultiplier": 1, + "multiplier": "flat", + "flatMultiplier": 2, "dice": "d6", "bonus": null }, @@ -44,7 +53,8 @@ "dice": "d6", "bonus": null, "custom": { - "enabled": false + "enabled": false, + "formula": "" } } } @@ -56,14 +66,19 @@ "amount": null }, "effects": [], - "name": "Damage", + "name": "Deal Damage", "img": "icons/skills/melee/shield-damaged-broken-gold.webp", "range": "melee" } }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "effects": [], "sort": 0, @@ -76,12 +91,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753995249173, - "modifiedTime": 1753995396728, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761139310352, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!gpW19TfJk0WWFh1S" } diff --git a/src/packs/ancestries/feature_Long_Tongue_oWbdlh51ajn1Q5kL.json b/src/packs/ancestries/feature_Long_Tongue_oWbdlh51ajn1Q5kL.json index 4c8cfc30..e9e0b86f 100644 --- a/src/packs/ancestries/feature_Long_Tongue_oWbdlh51ajn1Q5kL.json +++ b/src/packs/ancestries/feature_Long_Tongue_oWbdlh51ajn1Q5kL.json @@ -12,7 +12,7 @@ "type": "attack", "_id": "MhAWv7tuvkfOf7wQ", "systemPath": "actions", - "description": "", + "description": "

You can use your long tongue to grab onto things within Close range. Mark a Stress to use your tongue as a Finesse Close weapon that deals d12 physical damage using your Proficiency.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -83,14 +82,19 @@ "difficulty": null, "damageMod": "none" }, - "name": "Attack", + "name": "Mark Stress", "img": "icons/commodities/biological/tongue-violet.webp", "range": "close" } }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 31, + "artist": "" + } }, "effects": [], "sort": 0, @@ -103,12 +107,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754000791839, - "modifiedTime": 1754000854253, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138622800, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!oWbdlh51ajn1Q5kL" } diff --git a/src/packs/ancestries/feature_Luckbender_U6iFjZgLYawlOlQZ.json b/src/packs/ancestries/feature_Luckbender_U6iFjZgLYawlOlQZ.json index 51b33024..7473fa07 100644 --- a/src/packs/ancestries/feature_Luckbender_U6iFjZgLYawlOlQZ.json +++ b/src/packs/ancestries/feature_Luckbender_U6iFjZgLYawlOlQZ.json @@ -12,7 +12,7 @@ "type": "effect", "_id": "l1wUmqMzG8YF9sqb", "systemPath": "actions", - "description": "", + "description": "

Once per session, after you or a willing ally within Close range makes an action roll, you can spend 3 Hope to reroll the Duality Dice.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null } ], @@ -34,14 +33,19 @@ "type": "friendly", "amount": null }, - "name": "Use", + "name": "Spend Hope", "img": "icons/magic/control/buff-luck-fortune-green-gold.webp", "range": "close" } }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "effects": [], "sort": 0, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753994658436, - "modifiedTime": 1754498186961, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138006341, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!U6iFjZgLYawlOlQZ" } diff --git a/src/packs/ancestries/feature_Luckbringer_8O6SQQMxKWr430QA.json b/src/packs/ancestries/feature_Luckbringer_8O6SQQMxKWr430QA.json index 01de5030..9db179b4 100644 --- a/src/packs/ancestries/feature_Luckbringer_8O6SQQMxKWr430QA.json +++ b/src/packs/ancestries/feature_Luckbringer_8O6SQQMxKWr430QA.json @@ -12,7 +12,7 @@ "type": "healing", "_id": "8sK3t73bFkpb999C", "systemPath": "actions", - "description": "", + "description": "

At the start of each session, everyone in your party gains a Hope.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -78,7 +78,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "effects": [], "sort": 0, @@ -91,12 +96,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753997164653, - "modifiedTime": 1753997217376, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138289388, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!8O6SQQMxKWr430QA" } diff --git a/src/packs/ancestries/feature_Natural_Climber_soQvPL0MrTLLcc31.json b/src/packs/ancestries/feature_Natural_Climber_soQvPL0MrTLLcc31.json index 9f36411f..cfe8f9d4 100644 --- a/src/packs/ancestries/feature_Natural_Climber_soQvPL0MrTLLcc31.json +++ b/src/packs/ancestries/feature_Natural_Climber_soQvPL0MrTLLcc31.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 31, + "artist": "" + } }, "effects": [ { @@ -75,12 +80,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754001064223, - "modifiedTime": 1754001078029, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394600697, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!soQvPL0MrTLLcc31" } diff --git a/src/packs/ancestries/feature_Nimble_3lNqft3LmOlEIEkw.json b/src/packs/ancestries/feature_Nimble_3lNqft3LmOlEIEkw.json index d3539a9f..cd759ff4 100644 --- a/src/packs/ancestries/feature_Nimble_3lNqft3LmOlEIEkw.json +++ b/src/packs/ancestries/feature_Nimble_3lNqft3LmOlEIEkw.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 31, + "artist": "" + } }, "effects": [ { @@ -75,12 +80,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754001125989, - "modifiedTime": 1754001147782, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394608816, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!3lNqft3LmOlEIEkw" } diff --git a/src/packs/ancestries/feature_Purposeful_Design_g6I4tRUQNgL4vZ6H.json b/src/packs/ancestries/feature_Purposeful_Design_g6I4tRUQNgL4vZ6H.json index d805e240..409aa88b 100644 --- a/src/packs/ancestries/feature_Purposeful_Design_g6I4tRUQNgL4vZ6H.json +++ b/src/packs/ancestries/feature_Purposeful_Design_g6I4tRUQNgL4vZ6H.json @@ -5,12 +5,17 @@ "_id": "g6I4tRUQNgL4vZ6H", "img": "icons/tools/scribal/lens-blue.webp", "system": { - "description": "

Decide who made you and for what purpose. At character creation, choose one of your Experiences that best aligns with this purpose and gain a permanent +1 bonus to it.

", + "description": "

Note: Automation not implemented for permanent bonus. Manually increase the experience in the respective editing field.


Decide who made you and for what purpose. At character creation, choose one of your Experiences that best aligns with this purpose and gain a permanent +1 bonus to it.

", "resource": null, "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 27, + "artist": "" + } }, "effects": [], "sort": 0, @@ -23,12 +28,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753993755899, - "modifiedTime": 1753993791943, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761137758590, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!g6I4tRUQNgL4vZ6H" } diff --git a/src/packs/ancestries/feature_Quick_Reactions_0NSPSuB8KSEYTJIP.json b/src/packs/ancestries/feature_Quick_Reactions_0NSPSuB8KSEYTJIP.json index 87c6ec96..fd260647 100644 --- a/src/packs/ancestries/feature_Quick_Reactions_0NSPSuB8KSEYTJIP.json +++ b/src/packs/ancestries/feature_Quick_Reactions_0NSPSuB8KSEYTJIP.json @@ -12,7 +12,7 @@ "type": "effect", "_id": "6Av1Y8JXWDkteLhc", "systemPath": "actions", - "description": "", + "description": "

Mark a Stress to gain advantage on a reaction roll.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -41,7 +40,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "effects": [], "sort": 0, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753994522468, - "modifiedTime": 1753994554455, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761137904802, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!0NSPSuB8KSEYTJIP" } diff --git a/src/packs/ancestries/feature_Reach_WRs2jvwM0STmkWIW.json b/src/packs/ancestries/feature_Reach_WRs2jvwM0STmkWIW.json index b6c974d0..deac5491 100644 --- a/src/packs/ancestries/feature_Reach_WRs2jvwM0STmkWIW.json +++ b/src/packs/ancestries/feature_Reach_WRs2jvwM0STmkWIW.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "effects": [], "sort": 0, @@ -23,12 +28,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753996802591, - "modifiedTime": 1753996830453, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394448890, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!WRs2jvwM0STmkWIW" } diff --git a/src/packs/ancestries/feature_Retract_UFR67BUOhNGLFyg9.json b/src/packs/ancestries/feature_Retract_UFR67BUOhNGLFyg9.json index 356f9283..90d96124 100644 --- a/src/packs/ancestries/feature_Retract_UFR67BUOhNGLFyg9.json +++ b/src/packs/ancestries/feature_Retract_UFR67BUOhNGLFyg9.json @@ -5,7 +5,7 @@ "_id": "UFR67BUOhNGLFyg9", "img": "icons/magic/defensive/shield-barrier-flaming-diamond-teal.webp", "system": { - "description": "

Mark a Stress to retract into your shell. While in your shell, you have resistance to physical damage, you have disadvantage on action rolls, and you can’t move.

", + "description": "

Mark a Stress to retract into your shell. While in your shell, you have resistance to physical damage, you have disadvantage on action rolls, and you can’t move.

(When marked, manually enable the retract effect in effects tab and mark disadvantage when doing any action rolls)

", "resource": null, "actions": { "HfiAg14hrYt7Yvnj": { @@ -15,32 +15,53 @@ "description": "", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "stress", + "value": 1, + "keyIsID": false, + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", "recovery": null }, - "effects": [], + "effects": [ + { + "_id": "3V4FPoyjJUnFP9WS", + "onSave": false + } + ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Mark Stress", "img": "icons/magic/defensive/shield-barrier-flaming-diamond-teal.webp", - "range": "" + "range": "self" } }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "effects": [ { - "name": "Base", - "type": "base", - "_id": "KoHQg8KurugHlga0", + "name": "Retract", "img": "icons/magic/defensive/shield-barrier-flaming-diamond-teal.webp", + "origin": "Compendium.daggerheart.ancestries.Item.UFR67BUOhNGLFyg9", + "transfer": false, + "_id": "3V4FPoyjJUnFP9WS", + "type": "base", "system": { "rangeDependence": { "enabled": false, @@ -59,11 +80,11 @@ { "key": "system.disadvantageSources", "mode": 2, - "value": "Action Rolls", + "value": "Retract", "priority": null } ], - "disabled": true, + "disabled": false, "duration": { "startTime": null, "combat": null, @@ -73,10 +94,8 @@ "startRound": null, "startTurn": null }, - "description": "

While in your shell, you have resistance to physical damage, you have disadvantage on action rolls, and you can’t move.

", - "origin": null, + "description": "

While in your shell, you have resistance to physical damage, you have disadvantage on action rolls, and you can’t move.

", "tint": "#ffffff", - "transfer": true, "statuses": [], "sort": 0, "flags": {}, @@ -84,14 +103,14 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", - "createdTime": 1753996568678, - "modifiedTime": 1753996633306, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "systemVersion": "1.1.2", + "createdTime": 1759960447341, + "modifiedTime": 1759961484642, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, - "_key": "!items.effects!UFR67BUOhNGLFyg9.KoHQg8KurugHlga0" + "_key": "!items.effects!UFR67BUOhNGLFyg9.3V4FPoyjJUnFP9WS" } ], "sort": 0, @@ -104,12 +123,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753996513763, - "modifiedTime": 1753996553192, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1759961925987, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!UFR67BUOhNGLFyg9" } diff --git a/src/packs/ancestries/feature_Retracting_Claws_Zj69cAeb3NjIa8Hn.json b/src/packs/ancestries/feature_Retracting_Claws_Zj69cAeb3NjIa8Hn.json index 01e909bb..730b0d86 100644 --- a/src/packs/ancestries/feature_Retracting_Claws_Zj69cAeb3NjIa8Hn.json +++ b/src/packs/ancestries/feature_Retracting_Claws_Zj69cAeb3NjIa8Hn.json @@ -12,7 +12,7 @@ "type": "attack", "_id": "LcFhDb3sJk8sraAc", "systemPath": "actions", - "description": "", + "description": "

Make an Agility Roll to scratch a target within Melee range. On a success, they become temporarily Vulnerable.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -62,7 +62,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "effects": [ { @@ -122,12 +127,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754000306620, - "modifiedTime": 1754000434953, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138426560, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!Zj69cAeb3NjIa8Hn" } diff --git a/src/packs/ancestries/feature_Scales_u8ZhV962rNmUlzkp.json b/src/packs/ancestries/feature_Scales_u8ZhV962rNmUlzkp.json index 3b23d6b7..efc64b57 100644 --- a/src/packs/ancestries/feature_Scales_u8ZhV962rNmUlzkp.json +++ b/src/packs/ancestries/feature_Scales_u8ZhV962rNmUlzkp.json @@ -10,11 +10,16 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 27, + "artist": "" + } }, "effects": [ { - "name": "Base", + "name": "Scales", "type": "base", "_id": "b6Pkwwk7pgBeeUTe", "img": "icons/commodities/leather/scales-brown.webp", @@ -44,7 +49,7 @@ "startRound": null, "startTurn": null }, - "description": "

When you would take Severe damage, you can mark a Stress to mark 1 fewer Hit Points.

", + "description": "

When you would take Severe damage, you can mark a Stress to mark 1 fewer Hit Points.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -55,12 +60,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1753993993682, - "modifiedTime": 1753994027257, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761137949459, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!u8ZhV962rNmUlzkp.b6Pkwwk7pgBeeUTe" } @@ -75,12 +80,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753993962796, - "modifiedTime": 1753993988373, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394286965, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!u8ZhV962rNmUlzkp" } diff --git a/src/packs/ancestries/feature_Shell_A6a87OWA3tx16g9V.json b/src/packs/ancestries/feature_Shell_A6a87OWA3tx16g9V.json index 65352d25..06c73c40 100644 --- a/src/packs/ancestries/feature_Shell_A6a87OWA3tx16g9V.json +++ b/src/packs/ancestries/feature_Shell_A6a87OWA3tx16g9V.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "effects": [ { @@ -81,12 +86,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753996421284, - "modifiedTime": 1753996433164, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394431506, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!A6a87OWA3tx16g9V" } diff --git a/src/packs/ancestries/feature_Sturdy_60o3cKUZzxO9EDQF.json b/src/packs/ancestries/feature_Sturdy_60o3cKUZzxO9EDQF.json index 61ff446d..fac77407 100644 --- a/src/packs/ancestries/feature_Sturdy_60o3cKUZzxO9EDQF.json +++ b/src/packs/ancestries/feature_Sturdy_60o3cKUZzxO9EDQF.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "effects": [], "sort": 0, @@ -23,12 +28,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754000559764, - "modifiedTime": 1754000590019, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394566830, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!60o3cKUZzxO9EDQF" } diff --git a/src/packs/ancestries/feature_Surefooted_YsJticxv8OFndd4D.json b/src/packs/ancestries/feature_Surefooted_YsJticxv8OFndd4D.json index cc0fd804..a11247db 100644 --- a/src/packs/ancestries/feature_Surefooted_YsJticxv8OFndd4D.json +++ b/src/packs/ancestries/feature_Surefooted_YsJticxv8OFndd4D.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 29, + "artist": "" + } }, "effects": [], "sort": 0, @@ -23,12 +28,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753997026520, - "modifiedTime": 1753997047297, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394473491, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!YsJticxv8OFndd4D" } diff --git a/src/packs/ancestries/feature_Thick_Skin_S0Ww7pYOSREt8qKg.json b/src/packs/ancestries/feature_Thick_Skin_S0Ww7pYOSREt8qKg.json index 6b8aa900..0a1fdc97 100644 --- a/src/packs/ancestries/feature_Thick_Skin_S0Ww7pYOSREt8qKg.json +++ b/src/packs/ancestries/feature_Thick_Skin_S0Ww7pYOSREt8qKg.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 27, + "artist": "" + } }, "effects": [ { @@ -44,7 +49,7 @@ "startRound": null, "startTurn": null }, - "description": "

When you take Minor damage, you can mark 2 Stress instead of marking a Hit Point.

", + "description": "

When you take Minor damage, you can mark 2 Stress instead of marking a Hit Point.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -55,12 +60,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1753994342724, - "modifiedTime": 1753994373197, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761137921157, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!S0Ww7pYOSREt8qKg.4Lc40mNnRInTKMC5" } @@ -75,12 +80,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753994247261, - "modifiedTime": 1753994338239, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761506267107, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!S0Ww7pYOSREt8qKg" } diff --git a/src/packs/ancestries/feature_Tusks_YhxD1ujZpftPu19w.json b/src/packs/ancestries/feature_Tusks_YhxD1ujZpftPu19w.json index 4078ca03..f56b3516 100644 --- a/src/packs/ancestries/feature_Tusks_YhxD1ujZpftPu19w.json +++ b/src/packs/ancestries/feature_Tusks_YhxD1ujZpftPu19w.json @@ -8,40 +8,77 @@ "description": "

When you succeed on an attack against a target within Melee range, you can spend a Hope to gore the target with your tusks, dealing an extra 1d6 damage.

", "resource": null, "actions": { - "1n4ZsA6s2iBAL1tG": { - "type": "effect", - "_id": "1n4ZsA6s2iBAL1tG", + "ytSFDCONRi5L4THz": { + "type": "damage", + "_id": "ytSFDCONRi5L4THz", "systemPath": "actions", - "description": "", + "description": "

When you succeed on an attack against a target within Melee range, you can spend a Hope to gore the target with your tusks, dealing an extra 1d6 damage.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, - "step": null + "step": null, + "consumeOnSuccess": false } ], "uses": { "value": null, "max": "", - "recovery": null + "recovery": null, + "consumeOnSuccess": false + }, + "damage": { + "parts": [ + { + "value": { + "custom": { + "enabled": false, + "formula": "" + }, + "multiplier": "flat", + "dice": "d6", + "bonus": null, + "flatMultiplier": 1 + }, + "applyTo": "hitPoints", + "type": [], + "base": false, + "resultBased": false, + "valueAlt": { + "multiplier": "prof", + "flatMultiplier": 1, + "dice": "d6", + "bonus": null, + "custom": { + "enabled": false, + "formula": "" + } + } + } + ], + "includeBase": false + }, + "target": { + "type": "any", + "amount": 1 }, "effects": [], - "target": { - "type": "self", - "amount": null - }, "name": "Spend Hope", "img": "icons/creatures/abilities/fang-tooth-blood-red.webp", - "range": "" + "range": "melee" } }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 30, + "artist": "" + } }, "effects": [ { @@ -81,7 +118,7 @@ "startRound": null, "startTurn": null }, - "description": "

You gore the target with your tusks, dealing an extra 1d6 damage on this attack.

", + "description": "

You gore the target with your tusks, dealing an extra 1d6 damage on this attack.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -112,12 +149,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1754000611682, - "modifiedTime": 1754000658375, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138569638, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!YhxD1ujZpftPu19w" } diff --git a/src/packs/ancestries/feature_Unshakeable_G5pE8FW94V1W9jJx.json b/src/packs/ancestries/feature_Unshakeable_G5pE8FW94V1W9jJx.json index 5d534a67..aa256f5b 100644 --- a/src/packs/ancestries/feature_Unshakeable_G5pE8FW94V1W9jJx.json +++ b/src/packs/ancestries/feature_Unshakeable_G5pE8FW94V1W9jJx.json @@ -57,7 +57,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "effects": [], "sort": 0, @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753995651913, - "modifiedTime": 1753995700360, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394394521, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!G5pE8FW94V1W9jJx" } diff --git a/src/packs/ancestries/feature_Wings_WquAjoOcso8lwySW.json b/src/packs/ancestries/feature_Wings_WquAjoOcso8lwySW.json index 56ffaacc..2afaff58 100644 --- a/src/packs/ancestries/feature_Wings_WquAjoOcso8lwySW.json +++ b/src/packs/ancestries/feature_Wings_WquAjoOcso8lwySW.json @@ -12,7 +12,7 @@ "type": "effect", "_id": "dpKxkDSjXsP8kHMI", "systemPath": "actions", - "description": "", + "description": "

You can fly. While flying, you can mark a Stress after an adversary makes an attack against you to gain a +2 bonus to your Evasion against that attack.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -31,17 +30,22 @@ }, "effects": [], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Mark Stress", "img": "icons/creatures/abilities/wing-batlike-white-blue.webp", - "range": "" + "range": "self" } }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 28, + "artist": "" + } }, "effects": [ { @@ -75,7 +79,7 @@ "startRound": null, "startTurn": null }, - "description": "

You to gain a +2 bonus to your Evasion against the Adversary's attack.

", + "description": "

You to gain a +2 bonus to your Evasion against the Adversary's attack.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -106,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753994723305, - "modifiedTime": 1753994805028, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761138022348, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!WquAjoOcso8lwySW" } diff --git a/src/packs/beastforms/beastform_Agile_Scout_a9UoCwtrbgKk02mK.json b/src/packs/beastforms/beastform_Agile_Scout_a9UoCwtrbgKk02mK.json index 9ce4cea5..a6444c9c 100644 --- a/src/packs/beastforms/beastform_Agile_Scout_a9UoCwtrbgKk02mK.json +++ b/src/packs/beastforms/beastform_Agile_Scout_a9UoCwtrbgKk02mK.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 1, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/mammals/rodent-rat-diseaed-gray.webp", + "tokenRingImg": "icons/creatures/mammals/rodent-rat-diseaed-gray.webp", "tokenSize": { "height": null, "width": null @@ -36,7 +36,12 @@ "advantages": 2, "features": 2 }, - "examples": "Fox, Mouse, Weasel, etc." + "examples": "Fox, Mouse, Weasel, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [ { @@ -120,12 +125,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753570913893, - "modifiedTime": 1753575463479, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786932553, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "a9UoCwtrbgKk02mK", "sort": 500000, diff --git a/src/packs/beastforms/beastform_Aquatic_Predator_ItBVeCl2u5uetgy7.json b/src/packs/beastforms/beastform_Aquatic_Predator_ItBVeCl2u5uetgy7.json index 75c747ab..1b38232a 100644 --- a/src/packs/beastforms/beastform_Aquatic_Predator_ItBVeCl2u5uetgy7.json +++ b/src/packs/beastforms/beastform_Aquatic_Predator_ItBVeCl2u5uetgy7.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 3, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/fish/fish-marlin-swordfight-blue.webp", + "tokenRingImg": "icons/creatures/fish/fish-marlin-swordfight-blue.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Dolphin, Orca, Shark, etc." + "examples": "Dolphin, Orca, Shark, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753626985883, - "modifiedTime": 1753626995174, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787103412, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "ItBVeCl2u5uetgy7", "sort": 0, diff --git a/src/packs/beastforms/beastform_Aquatic_Scout_qqzdFCxyYupWZK23.json b/src/packs/beastforms/beastform_Aquatic_Scout_qqzdFCxyYupWZK23.json index 4b5c792c..7ed72958 100644 --- a/src/packs/beastforms/beastform_Aquatic_Scout_qqzdFCxyYupWZK23.json +++ b/src/packs/beastforms/beastform_Aquatic_Scout_qqzdFCxyYupWZK23.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 1, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/tentacles/tentacles-octopus-black-pink.webp", + "tokenRingImg": "icons/creatures/tentacles/tentacles-octopus-black-pink.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Eel, Fish, Octopus, etc." + "examples": "Eel, Fish, Octopus, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [ { @@ -119,12 +124,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753575463467, - "modifiedTime": 1753575469111, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786937661, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "qqzdFCxyYupWZK23", "sort": 200000, diff --git a/src/packs/beastforms/beastform_Armored_Sentry_8pUHJv3BYdjA4Qdf.json b/src/packs/beastforms/beastform_Armored_Sentry_8pUHJv3BYdjA4Qdf.json index 553fa9e9..cf91ac7d 100644 --- a/src/packs/beastforms/beastform_Armored_Sentry_8pUHJv3BYdjA4Qdf.json +++ b/src/packs/beastforms/beastform_Armored_Sentry_8pUHJv3BYdjA4Qdf.json @@ -5,22 +5,22 @@ "system": { "beastformType": "normal", "tier": 2, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/reptiles/turtle-shell-glowing-green.webp", + "tokenRingImg": "icons/creatures/reptiles/turtle-shell-glowing-green.webp", "tokenSize": { "height": null, "width": null }, "mainTrait": "strength", "advantageOn": { - "mX0DbTDuWAIpAGYq": { - "value": "Armadillo" + "4AbCgOZvyUFH9Pug": { + "value": "Dig" }, - "0VGGQOhVOoNpZfdJ": { - "value": "Pangolin" + "8GsRyXaQnfsGNGW6": { + "value": "Locate" }, - "6v6bkfKevJrn3YHf": { - "value": "Turtle" + "0ut15QizNIG254Vw": { + "value": "Protect" } }, "features": [ @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Armadillo, Pangolin, Turtle, etc." + "examples": "Armadillo, Pangolin, Turtle, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753580987168, - "modifiedTime": 1753617739186, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786983275, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "8pUHJv3BYdjA4Qdf", "sort": 100000, diff --git a/src/packs/beastforms/beastform_Epic_Aquatic_Beast_wT4xbF99I55yjKZV.json b/src/packs/beastforms/beastform_Epic_Aquatic_Beast_wT4xbF99I55yjKZV.json index 895a3467..a06ea7d9 100644 --- a/src/packs/beastforms/beastform_Epic_Aquatic_Beast_wT4xbF99I55yjKZV.json +++ b/src/packs/beastforms/beastform_Epic_Aquatic_Beast_wT4xbF99I55yjKZV.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 4, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/fish/squid-kraken-teal.webp", + "tokenRingImg": "icons/creatures/fish/squid-kraken-teal.webp", "tokenSize": { "height": null, "width": null @@ -38,7 +38,12 @@ "advantages": 2, "features": 2 }, - "examples": "Giant Squid, Whale, etc." + "examples": "Giant Squid, Whale, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 15, + "artist": "" + } }, "effects": [ { @@ -128,12 +133,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753628697986, - "modifiedTime": 1753628714911, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787224941, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "wT4xbF99I55yjKZV", "sort": 0, diff --git a/src/packs/beastforms/beastform_Great_Predator_afbMt4Ld6nY3mw0N.json b/src/packs/beastforms/beastform_Great_Predator_afbMt4Ld6nY3mw0N.json index e794abf2..4439e261 100644 --- a/src/packs/beastforms/beastform_Great_Predator_afbMt4Ld6nY3mw0N.json +++ b/src/packs/beastforms/beastform_Great_Predator_afbMt4Ld6nY3mw0N.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 3, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/mammals/wolf-shadow-black.webp", + "tokenRingImg": "icons/creatures/mammals/wolf-shadow-black.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Dire Wolf, Velociraptor, Sabertooth Tiger, etc." + "examples": "Dire Wolf, Velociraptor, Sabertooth Tiger, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753625648103, - "modifiedTime": 1753626865950, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787119852, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "afbMt4Ld6nY3mw0N", "sort": 100000, diff --git a/src/packs/beastforms/beastform_Great_Winged_Beast_b4BMnTbJ3iPPidSb.json b/src/packs/beastforms/beastform_Great_Winged_Beast_b4BMnTbJ3iPPidSb.json index 15eed972..5bf38ae7 100644 --- a/src/packs/beastforms/beastform_Great_Winged_Beast_b4BMnTbJ3iPPidSb.json +++ b/src/packs/beastforms/beastform_Great_Winged_Beast_b4BMnTbJ3iPPidSb.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 3, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/birds/corvid-flying-wings-purple.webp", + "tokenRingImg": "icons/creatures/birds/corvid-flying-wings-purple.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Giant Eagle, Falcon, etc." + "examples": "Giant Eagle, Falcon, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753626865938, - "modifiedTime": 1753626874515, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787132432, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "b4BMnTbJ3iPPidSb", "sort": 200000, diff --git a/src/packs/beastforms/beastform_Household_Friend_iDmOtiHJJ80AIAVT.json b/src/packs/beastforms/beastform_Household_Friend_iDmOtiHJJ80AIAVT.json index 57a1ecdf..44cb71a8 100644 --- a/src/packs/beastforms/beastform_Household_Friend_iDmOtiHJJ80AIAVT.json +++ b/src/packs/beastforms/beastform_Household_Friend_iDmOtiHJJ80AIAVT.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 1, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/mammals/rabbit-movement-glowing-green.webp", + "tokenRingImg": "icons/creatures/mammals/rabbit-movement-glowing-green.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Cat, Dog, Rabbit, etc." + "examples": "Cat, Dog, Rabbit, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [ { @@ -119,12 +124,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753573035973, - "modifiedTime": 1753575463479, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786944642, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "iDmOtiHJJ80AIAVT", "sort": 100000, diff --git a/src/packs/beastforms/beastform_Legendary_Beast_mqP6z4Wg4K3oDAom.json b/src/packs/beastforms/beastform_Legendary_Beast_mqP6z4Wg4K3oDAom.json index a73b31d2..15d0eaa4 100644 --- a/src/packs/beastforms/beastform_Legendary_Beast_mqP6z4Wg4K3oDAom.json +++ b/src/packs/beastforms/beastform_Legendary_Beast_mqP6z4Wg4K3oDAom.json @@ -5,8 +5,8 @@ "system": { "beastformType": "evolved", "tier": 3, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/magical/humanoid-giant-forest-blue.webp", + "tokenRingImg": "icons/creatures/magical/humanoid-giant-forest-blue.webp", "tokenSize": { "height": null, "width": null @@ -23,7 +23,12 @@ "advantages": 2, "features": 2 }, - "examples": "" + "examples": "", + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -95,12 +100,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753627165434, - "modifiedTime": 1753627165434, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787146758, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "mqP6z4Wg4K3oDAom", "sort": 0, diff --git a/src/packs/beastforms/beastform_Legendary_Hybrid_rRUtgcUjimlpPhnn.json b/src/packs/beastforms/beastform_Legendary_Hybrid_rRUtgcUjimlpPhnn.json index aff94138..b38d1304 100644 --- a/src/packs/beastforms/beastform_Legendary_Hybrid_rRUtgcUjimlpPhnn.json +++ b/src/packs/beastforms/beastform_Legendary_Hybrid_rRUtgcUjimlpPhnn.json @@ -5,8 +5,8 @@ "system": { "beastformType": "hybrid", "tier": 3, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/magical/humanoid-silhouette-glowing-pink.webp", + "tokenRingImg": "icons/creatures/magical/humanoid-silhouette-glowing-pink.webp", "tokenSize": { "height": null, "width": null @@ -23,7 +23,12 @@ "features": 2, "maximumTier": 2 }, - "examples": "" + "examples": "", + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -113,12 +118,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753627303526, - "modifiedTime": 1753627303526, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787159027, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "rRUtgcUjimlpPhnn", "sort": 0, diff --git a/src/packs/beastforms/beastform_Massive_Behemoth_qjwMzPn33aKZACkv.json b/src/packs/beastforms/beastform_Massive_Behemoth_qjwMzPn33aKZACkv.json index 470cfffe..6990814c 100644 --- a/src/packs/beastforms/beastform_Massive_Behemoth_qjwMzPn33aKZACkv.json +++ b/src/packs/beastforms/beastform_Massive_Behemoth_qjwMzPn33aKZACkv.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 4, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/mammals/beast-horned-scaled-glowing-orange.webp", + "tokenRingImg": "icons/creatures/mammals/beast-horned-scaled-glowing-orange.webp", "tokenSize": { "height": null, "width": null @@ -39,7 +39,12 @@ "advantages": 2, "features": 2 }, - "examples": "Elephant, Mammoth, Rhinoceros, etc." + "examples": "Elephant, Mammoth, Rhinoceros, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -129,12 +134,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753627711166, - "modifiedTime": 1753631381561, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787235514, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "qjwMzPn33aKZACkv", "sort": 100000, diff --git a/src/packs/beastforms/beastform_Mighty_Lizard_94tvcC3D5Kp4lzuN.json b/src/packs/beastforms/beastform_Mighty_Lizard_94tvcC3D5Kp4lzuN.json index 374fc301..e4f41dab 100644 --- a/src/packs/beastforms/beastform_Mighty_Lizard_94tvcC3D5Kp4lzuN.json +++ b/src/packs/beastforms/beastform_Mighty_Lizard_94tvcC3D5Kp4lzuN.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 3, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/reptiles/lizard-iguana-green.webp", + "tokenRingImg": "icons/creatures/reptiles/lizard-iguana-green.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Alligator, Crocodile, Gila Monster, etc." + "examples": "Alligator, Crocodile, Gila Monster, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753626720443, - "modifiedTime": 1753626865950, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787174916, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "94tvcC3D5Kp4lzuN", "sort": 300000, diff --git a/src/packs/beastforms/beastform_Mighty_Strider_zRLjqKx4Rn2TjivL.json b/src/packs/beastforms/beastform_Mighty_Strider_zRLjqKx4Rn2TjivL.json index e44e01e9..eebf60ee 100644 --- a/src/packs/beastforms/beastform_Mighty_Strider_zRLjqKx4Rn2TjivL.json +++ b/src/packs/beastforms/beastform_Mighty_Strider_zRLjqKx4Rn2TjivL.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 2, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/environment/creatures/horse-tan.webp", + "tokenRingImg": "icons/environment/creatures/horse-tan.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Camel, Horse, Zebra, etc." + "examples": "Camel, Horse, Zebra, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753617739175, - "modifiedTime": 1753617745460, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787003407, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "zRLjqKx4Rn2TjivL", "sort": 200000, diff --git a/src/packs/beastforms/beastform_Mythic_Aerial_Hunter_jV6EuEacyQlHW4SN.json b/src/packs/beastforms/beastform_Mythic_Aerial_Hunter_jV6EuEacyQlHW4SN.json index fbd60195..7725d919 100644 --- a/src/packs/beastforms/beastform_Mythic_Aerial_Hunter_jV6EuEacyQlHW4SN.json +++ b/src/packs/beastforms/beastform_Mythic_Aerial_Hunter_jV6EuEacyQlHW4SN.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 4, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/reptiles/dragon-winged-blue.webp", + "tokenRingImg": "icons/creatures/reptiles/dragon-winged-blue.webp", "tokenSize": { "height": null, "width": null @@ -38,7 +38,12 @@ "advantages": 2, "features": 2 }, - "examples": "Dragon, Pterodactyl, Roc, Wyvern, etc." + "examples": "Dragon, Pterodactyl, Roc, Wyvern, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 15, + "artist": "" + } }, "effects": [ { @@ -128,12 +133,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753628382723, - "modifiedTime": 1753628401450, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787250619, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "jV6EuEacyQlHW4SN", "sort": 200000, diff --git a/src/packs/beastforms/beastform_Mythic_Beast_kObobka52JdpWBSu.json b/src/packs/beastforms/beastform_Mythic_Beast_kObobka52JdpWBSu.json index d7d407a6..aa7483ce 100644 --- a/src/packs/beastforms/beastform_Mythic_Beast_kObobka52JdpWBSu.json +++ b/src/packs/beastforms/beastform_Mythic_Beast_kObobka52JdpWBSu.json @@ -5,8 +5,8 @@ "system": { "beastformType": "evolved", "tier": 4, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/eyes/lizard-single-slit-pink.webp", + "tokenRingImg": "icons/creatures/eyes/lizard-single-slit-pink.webp", "tokenSize": { "height": null, "width": null @@ -23,7 +23,12 @@ "advantages": 2, "features": 2 }, - "examples": "" + "examples": "", + "attribution": { + "source": "Daggerheart SRD", + "page": 15, + "artist": "" + } }, "effects": [ { @@ -101,12 +106,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753628844905, - "modifiedTime": 1753628844905, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787259530, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "kObobka52JdpWBSu", "sort": 0, diff --git a/src/packs/beastforms/beastform_Mythic_Hybrid_WAbxCf2An8qmxyJ1.json b/src/packs/beastforms/beastform_Mythic_Hybrid_WAbxCf2An8qmxyJ1.json index c0be75db..e9f62172 100644 --- a/src/packs/beastforms/beastform_Mythic_Hybrid_WAbxCf2An8qmxyJ1.json +++ b/src/packs/beastforms/beastform_Mythic_Hybrid_WAbxCf2An8qmxyJ1.json @@ -5,8 +5,8 @@ "system": { "beastformType": "hybrid", "tier": 4, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/magical/spirit-undead-horned-blue.webp", + "tokenRingImg": "icons/creatures/magical/spirit-undead-horned-blue.webp", "tokenSize": { "height": null, "width": null @@ -23,7 +23,12 @@ "features": 3, "maximumTier": 3 }, - "examples": "" + "examples": "", + "attribution": { + "source": "Daggerheart SRD", + "page": 15, + "artist": "" + } }, "effects": [ { @@ -113,12 +118,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753628965658, - "modifiedTime": 1753628965658, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787273314, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "WAbxCf2An8qmxyJ1", "sort": 0, diff --git a/src/packs/beastforms/beastform_Nimble_Grazer_CItO8yX6amQaqyk7.json b/src/packs/beastforms/beastform_Nimble_Grazer_CItO8yX6amQaqyk7.json index 926b8739..12e8f002 100644 --- a/src/packs/beastforms/beastform_Nimble_Grazer_CItO8yX6amQaqyk7.json +++ b/src/packs/beastforms/beastform_Nimble_Grazer_CItO8yX6amQaqyk7.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 1, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/mammals/deer-antlers-glowing-blue.webp", + "tokenRingImg": "icons/creatures/mammals/deer-antlers-glowing-blue.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Deer, Gazelle, Goat, etc." + "examples": "Deer, Gazelle, Goat, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [ { @@ -119,12 +124,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753574930310, - "modifiedTime": 1753575463479, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786950257, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "CItO8yX6amQaqyk7", "sort": 300000, diff --git a/src/packs/beastforms/beastform_Pack_Predator_YLisKYYhAGca50WM.json b/src/packs/beastforms/beastform_Pack_Predator_YLisKYYhAGca50WM.json index 38150adb..7074ef72 100644 --- a/src/packs/beastforms/beastform_Pack_Predator_YLisKYYhAGca50WM.json +++ b/src/packs/beastforms/beastform_Pack_Predator_YLisKYYhAGca50WM.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 1, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/mammals/wolf-howl-moon-forest-blue.webp", + "tokenRingImg": "icons/creatures/mammals/wolf-howl-moon-forest-blue.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Coyote, Hyena, Wolf, etc." + "examples": "Coyote, Hyena, Wolf, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753575274807, - "modifiedTime": 1753575463479, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786928080, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "YLisKYYhAGca50WM", "sort": 400000, diff --git a/src/packs/beastforms/beastform_Pouncing_Predator_33oFSZ1PwFqInHPe.json b/src/packs/beastforms/beastform_Pouncing_Predator_33oFSZ1PwFqInHPe.json index 9073bb23..7c345093 100644 --- a/src/packs/beastforms/beastform_Pouncing_Predator_33oFSZ1PwFqInHPe.json +++ b/src/packs/beastforms/beastform_Pouncing_Predator_33oFSZ1PwFqInHPe.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 2, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/abilities/cougar-roar-rush-orange.webp", + "tokenRingImg": "icons/creatures/abilities/cougar-roar-rush-orange.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Cheetah, Lion, Panther, etc." + "examples": "Cheetah, Lion, Panther, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753621789186, - "modifiedTime": 1753621803375, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787017340, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "33oFSZ1PwFqInHPe", "sort": 0, diff --git a/src/packs/beastforms/beastform_Powerful_Beast_m8BVTuJI1wCvzTcf.json b/src/packs/beastforms/beastform_Powerful_Beast_m8BVTuJI1wCvzTcf.json index 17d55206..de65b40b 100644 --- a/src/packs/beastforms/beastform_Powerful_Beast_m8BVTuJI1wCvzTcf.json +++ b/src/packs/beastforms/beastform_Powerful_Beast_m8BVTuJI1wCvzTcf.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 2, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/abilities/bear-roar-bite-brown-green.webp", + "tokenRingImg": "icons/creatures/abilities/bear-roar-bite-brown-green.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Bear, Bull, Moose, etc." + "examples": "Bear, Bull, Moose, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -57,13 +62,13 @@ { "key": "system.traits.strength.value", "mode": 2, - "value": "1", + "value": "3", "priority": null }, { "key": "system.evasion", "mode": 2, - "value": "3", + "value": "1", "priority": null }, { @@ -106,11 +111,11 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", - "lastModifiedBy": "FecEtPuoQh6MpjQ0", - "modifiedTime": 1753636973034 + "lastModifiedBy": "fBcTgyTzoARBvohY", + "modifiedTime": 1761503222813 }, "_key": "!items.effects!m8BVTuJI1wCvzTcf.AZGTvqzFVHa4wS1a" } @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753582598510, - "modifiedTime": 1753617739186, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787029819, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "m8BVTuJI1wCvzTcf", "sort": 300000, diff --git a/src/packs/beastforms/beastform_Stalking_Arachnid_A4TVRY0D5r9EiVwA.json b/src/packs/beastforms/beastform_Stalking_Arachnid_A4TVRY0D5r9EiVwA.json index 98a949ff..3e81f75e 100644 --- a/src/packs/beastforms/beastform_Stalking_Arachnid_A4TVRY0D5r9EiVwA.json +++ b/src/packs/beastforms/beastform_Stalking_Arachnid_A4TVRY0D5r9EiVwA.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 1, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/invertebrates/spider-mandibles-brown.webp", + "tokenRingImg": "icons/creatures/invertebrates/spider-mandibles-brown.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Tarantula, Wolf Spider, etc." + "examples": "Tarantula, Wolf Spider, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753576016472, - "modifiedTime": 1753576046773, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786957384, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "A4TVRY0D5r9EiVwA", "sort": 0, diff --git a/src/packs/beastforms/beastform_Striking_Serpent_1XrZWGDttBAAUxR1.json b/src/packs/beastforms/beastform_Striking_Serpent_1XrZWGDttBAAUxR1.json index 3f4a5dbb..47e800d9 100644 --- a/src/packs/beastforms/beastform_Striking_Serpent_1XrZWGDttBAAUxR1.json +++ b/src/packs/beastforms/beastform_Striking_Serpent_1XrZWGDttBAAUxR1.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 2, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/reptiles/serpent-horned-green.webp", + "tokenRingImg": "icons/creatures/reptiles/serpent-horned-green.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Cobra, Rattlesnake, Viper, etc." + "examples": "Cobra, Rattlesnake, Viper, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753621251793, - "modifiedTime": 1753621266619, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787068105, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "1XrZWGDttBAAUxR1", "sort": 0, diff --git a/src/packs/beastforms/beastform_Terrible_Lizard_5BABxRe2XVrYTj8N.json b/src/packs/beastforms/beastform_Terrible_Lizard_5BABxRe2XVrYTj8N.json index 0614d763..2e1bf603 100644 --- a/src/packs/beastforms/beastform_Terrible_Lizard_5BABxRe2XVrYTj8N.json +++ b/src/packs/beastforms/beastform_Terrible_Lizard_5BABxRe2XVrYTj8N.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 4, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/abilities/dragon-breath-purple.webp", + "tokenRingImg": "icons/creatures/abilities/dragon-breath-purple.webp", "tokenSize": { "height": null, "width": null @@ -38,7 +38,12 @@ "advantages": 2, "features": 2 }, - "examples": "Brachiosaurus, Tyrannosaurus, etc." + "examples": "Brachiosaurus, Tyrannosaurus, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -128,12 +133,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753628213224, - "modifiedTime": 1753628382733, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787283468, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "5BABxRe2XVrYTj8N", "sort": 300000, diff --git a/src/packs/beastforms/beastform_Winged_Beast_mZ4Wlqtss2FlNNvL.json b/src/packs/beastforms/beastform_Winged_Beast_mZ4Wlqtss2FlNNvL.json index 352b7124..27984b87 100644 --- a/src/packs/beastforms/beastform_Winged_Beast_mZ4Wlqtss2FlNNvL.json +++ b/src/packs/beastforms/beastform_Winged_Beast_mZ4Wlqtss2FlNNvL.json @@ -5,8 +5,8 @@ "system": { "beastformType": "normal", "tier": 2, - "tokenImg": "icons/svg/mystery-man.svg", - "tokenRingImg": "icons/svg/mystery-man.svg", + "tokenImg": "icons/creatures/birds/raptor-owl-flying-moon.webp", + "tokenRingImg": "icons/creatures/birds/raptor-owl-flying-moon.webp", "tokenSize": { "height": null, "width": null @@ -35,7 +35,12 @@ "advantages": 2, "features": 2 }, - "examples": "Hawk, Owl, Raven, etc." + "examples": "Hawk, Owl, Raven, etc.", + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -125,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753624952844, - "modifiedTime": 1753624972889, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762787081429, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "mZ4Wlqtss2FlNNvL", "sort": 0, diff --git a/src/packs/beastforms/feature_Agile_xLS5YT1B6yeCiNTg.json b/src/packs/beastforms/feature_Agile_xLS5YT1B6yeCiNTg.json index d36699a4..d67d124f 100644 --- a/src/packs/beastforms/feature_Agile_xLS5YT1B6yeCiNTg.json +++ b/src/packs/beastforms/feature_Agile_xLS5YT1B6yeCiNTg.json @@ -10,12 +10,11 @@ "type": "effect", "_id": "4yQ56hSL5LBkzrV6", "systemPath": "actions", - "description": "", + "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, @@ -24,12 +23,12 @@ ], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, "effects": [], "target": { - "type": null, + "type": "", "amount": null }, "name": "Spend Hope", @@ -39,7 +38,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753569752255, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786188592, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "xLS5YT1B6yeCiNTg", "sort": 2700000, diff --git a/src/packs/beastforms/feature_Aquatic_kQWWx9P3fCyGSVOI.json b/src/packs/beastforms/feature_Aquatic_kQWWx9P3fCyGSVOI.json index fc8862c7..47bf2c20 100644 --- a/src/packs/beastforms/feature_Aquatic_kQWWx9P3fCyGSVOI.json +++ b/src/packs/beastforms/feature_Aquatic_kQWWx9P3fCyGSVOI.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -21,12 +26,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753575456927, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395593318, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "kQWWx9P3fCyGSVOI", "sort": 2100000, diff --git a/src/packs/beastforms/feature_Armored_Shell_nDQZdIF2epKlhauX.json b/src/packs/beastforms/feature_Armored_Shell_nDQZdIF2epKlhauX.json index 5ff9b259..4d6a5627 100644 --- a/src/packs/beastforms/feature_Armored_Shell_nDQZdIF2epKlhauX.json +++ b/src/packs/beastforms/feature_Armored_Shell_nDQZdIF2epKlhauX.json @@ -18,13 +18,12 @@ "scalable": false, "key": "armor", "value": 1, - "keyIsID": false, "step": null } ], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, "effects": [ @@ -39,12 +38,17 @@ }, "name": "Retract", "img": "icons/creatures/reptiles/turtle-shell-glowing-green.webp", - "range": "" + "range": "self" } }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -142,12 +146,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753580983699, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1756041050697, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "nDQZdIF2epKlhauX", "sort": 2200000, diff --git a/src/packs/beastforms/feature_Bird_s_Eye_View_FNKQlWQcArSorMPK.json b/src/packs/beastforms/feature_Bird_s_Eye_View_FNKQlWQcArSorMPK.json index 83fdfab1..53fe0c0b 100644 --- a/src/packs/beastforms/feature_Bird_s_Eye_View_FNKQlWQcArSorMPK.json +++ b/src/packs/beastforms/feature_Bird_s_Eye_View_FNKQlWQcArSorMPK.json @@ -31,7 +31,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -44,12 +49,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753624947561, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395710291, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "FNKQlWQcArSorMPK", "sort": 1400000, diff --git a/src/packs/beastforms/feature_Cannonball_jp5KpPRBFBOIs46Q.json b/src/packs/beastforms/feature_Cannonball_jp5KpPRBFBOIs46Q.json index 7b714c75..c73cc803 100644 --- a/src/packs/beastforms/feature_Cannonball_jp5KpPRBFBOIs46Q.json +++ b/src/packs/beastforms/feature_Cannonball_jp5KpPRBFBOIs46Q.json @@ -37,7 +37,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -61,7 +60,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -74,12 +78,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753580984811, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395630937, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "jp5KpPRBFBOIs46Q", "sort": 1900000, diff --git a/src/packs/beastforms/feature_Carrier_EVOJTskJYf4rpuga.json b/src/packs/beastforms/feature_Carrier_EVOJTskJYf4rpuga.json index 4a0dcae2..30c82923 100644 --- a/src/packs/beastforms/feature_Carrier_EVOJTskJYf4rpuga.json +++ b/src/packs/beastforms/feature_Carrier_EVOJTskJYf4rpuga.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -21,12 +26,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753617736331, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395659457, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "EVOJTskJYf4rpuga", "sort": 900000, diff --git a/src/packs/beastforms/feature_Companion_jhWSC5bNZyYUAA5Q.json b/src/packs/beastforms/feature_Companion_jhWSC5bNZyYUAA5Q.json index b54e4a05..2a5504fe 100644 --- a/src/packs/beastforms/feature_Companion_jhWSC5bNZyYUAA5Q.json +++ b/src/packs/beastforms/feature_Companion_jhWSC5bNZyYUAA5Q.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -21,12 +26,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753572888764, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395556952, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "jhWSC5bNZyYUAA5Q", "sort": 2600000, diff --git a/src/packs/beastforms/feature_Deadly_Raptor_QQtQ77tos8ijTHag.json b/src/packs/beastforms/feature_Deadly_Raptor_QQtQ77tos8ijTHag.json index d21facf5..e44e8fb5 100644 --- a/src/packs/beastforms/feature_Deadly_Raptor_QQtQ77tos8ijTHag.json +++ b/src/packs/beastforms/feature_Deadly_Raptor_QQtQ77tos8ijTHag.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 15, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -21,12 +26,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753628380597, - "modifiedTime": 1753628380597, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395796630, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "QQtQ77tos8ijTHag", "sort": 0, diff --git a/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json b/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json index 4e683d9a..026db6c4 100644 --- a/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json +++ b/src/packs/beastforms/feature_Demolish_DfBXO8jTchwFG8dZ.json @@ -15,7 +15,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -93,7 +92,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -144,12 +148,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753627699848, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395772711, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "DfBXO8jTchwFG8dZ", "sort": 100000, diff --git a/src/packs/beastforms/feature_Devastating_Strikes_HJbQcKWcFZ9NoFxs.json b/src/packs/beastforms/feature_Devastating_Strikes_HJbQcKWcFZ9NoFxs.json index 1c792e95..a2ffb88d 100644 --- a/src/packs/beastforms/feature_Devastating_Strikes_HJbQcKWcFZ9NoFxs.json +++ b/src/packs/beastforms/feature_Devastating_Strikes_HJbQcKWcFZ9NoFxs.json @@ -18,7 +18,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -39,7 +38,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753628206110, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395786112, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "HJbQcKWcFZ9NoFxs", "sort": 200000, diff --git a/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json b/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json index 1de48d46..c347db84 100644 --- a/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json +++ b/src/packs/beastforms/feature_Elusive_Prey_a7Qvmm14nx9BCysA.json @@ -10,7 +10,7 @@ "type": "attack", "_id": "9lvrqQKTEB3NRwvM", "systemPath": "actions", - "description": "", + "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.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -18,13 +18,12 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, "damage": { @@ -32,7 +31,7 @@ "includeBase": false }, "target": { - "type": null, + "type": "", "amount": null }, "effects": [], @@ -63,7 +62,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -76,12 +80,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753574925665, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786470855, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "a7Qvmm14nx9BCysA", "sort": 2300000, diff --git a/src/packs/beastforms/feature_Fleet_GhHsSHOa509cwCvr.json b/src/packs/beastforms/feature_Fleet_GhHsSHOa509cwCvr.json index cabc703d..dd13a8cc 100644 --- a/src/packs/beastforms/feature_Fleet_GhHsSHOa509cwCvr.json +++ b/src/packs/beastforms/feature_Fleet_GhHsSHOa509cwCvr.json @@ -15,7 +15,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -39,7 +38,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753621784810, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395691006, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "GhHsSHOa509cwCvr", "sort": 1000000, diff --git a/src/packs/beastforms/feature_Fragile_QFg1hNCEoKVDd9Zo.json b/src/packs/beastforms/feature_Fragile_QFg1hNCEoKVDd9Zo.json index e22b70b4..c4a39892 100644 --- a/src/packs/beastforms/feature_Fragile_QFg1hNCEoKVDd9Zo.json +++ b/src/packs/beastforms/feature_Fragile_QFg1hNCEoKVDd9Zo.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -21,12 +26,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753569754067, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395538450, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "QFg1hNCEoKVDd9Zo", "sort": 2500000, diff --git a/src/packs/beastforms/feature_Hobbling_Strike_8u0HkK3WgtU9lWYs.json b/src/packs/beastforms/feature_Hobbling_Strike_8u0HkK3WgtU9lWYs.json index a46fd322..0083cd5f 100644 --- a/src/packs/beastforms/feature_Hobbling_Strike_8u0HkK3WgtU9lWYs.json +++ b/src/packs/beastforms/feature_Hobbling_Strike_8u0HkK3WgtU9lWYs.json @@ -10,7 +10,7 @@ "type": "effect", "_id": "p8DESOMGA6dLwEMz", "systemPath": "actions", - "description": "", + "description": "

When you succeed on an attack against a target within Melee range, you can mark a Stress to make the target temporarily Vulnerable.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -18,13 +18,12 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, "effects": [ @@ -34,7 +33,7 @@ } ], "target": { - "type": null, + "type": "", "amount": null }, "name": "Mark Stress", @@ -44,7 +43,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [ { @@ -97,12 +101,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753575250590, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786502471, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "8u0HkK3WgtU9lWYs", "sort": 2400000, diff --git a/src/packs/beastforms/feature_Hollow_Bones_xVgmXhj2YgeqS1KK.json b/src/packs/beastforms/feature_Hollow_Bones_xVgmXhj2YgeqS1KK.json index d358b416..7dbcb48b 100644 --- a/src/packs/beastforms/feature_Hollow_Bones_xVgmXhj2YgeqS1KK.json +++ b/src/packs/beastforms/feature_Hollow_Bones_xVgmXhj2YgeqS1KK.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753624948910, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395703373, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "xVgmXhj2YgeqS1KK", "sort": 1500000, diff --git a/src/packs/beastforms/feature_Massive_Stride_9QkZSeuEKgXtlpHc.json b/src/packs/beastforms/feature_Massive_Stride_9QkZSeuEKgXtlpHc.json index 17812c9d..05e95201 100644 --- a/src/packs/beastforms/feature_Massive_Stride_9QkZSeuEKgXtlpHc.json +++ b/src/packs/beastforms/feature_Massive_Stride_9QkZSeuEKgXtlpHc.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -21,12 +26,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753628207886, - "modifiedTime": 1753628207886, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395780645, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "9QkZSeuEKgXtlpHc", "sort": 0, diff --git a/src/packs/beastforms/feature_Ocean_Master_tGDdEH40wyOCsFmH.json b/src/packs/beastforms/feature_Ocean_Master_tGDdEH40wyOCsFmH.json index 37716764..2dab5551 100644 --- a/src/packs/beastforms/feature_Ocean_Master_tGDdEH40wyOCsFmH.json +++ b/src/packs/beastforms/feature_Ocean_Master_tGDdEH40wyOCsFmH.json @@ -36,7 +36,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 15, + "artist": "" + } }, "effects": [ { @@ -87,12 +92,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753628691739, - "modifiedTime": 1753628691739, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395806363, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "tGDdEH40wyOCsFmH", "sort": 0, diff --git a/src/packs/beastforms/feature_Pack_Hunting_d3q8lfeiEMyTjusT.json b/src/packs/beastforms/feature_Pack_Hunting_d3q8lfeiEMyTjusT.json index d6e58fcb..0c66a4e0 100644 --- a/src/packs/beastforms/feature_Pack_Hunting_d3q8lfeiEMyTjusT.json +++ b/src/packs/beastforms/feature_Pack_Hunting_d3q8lfeiEMyTjusT.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 12, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -21,12 +26,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753575268237, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395582868, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "d3q8lfeiEMyTjusT", "sort": 1800000, diff --git a/src/packs/beastforms/feature_Physical_Defense_StabkQ3BzWRZa8Tz.json b/src/packs/beastforms/feature_Physical_Defense_StabkQ3BzWRZa8Tz.json index effdc34f..4a86cb45 100644 --- a/src/packs/beastforms/feature_Physical_Defense_StabkQ3BzWRZa8Tz.json +++ b/src/packs/beastforms/feature_Physical_Defense_StabkQ3BzWRZa8Tz.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753626716369, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395740811, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "StabkQ3BzWRZa8Tz", "sort": 500000, diff --git a/src/packs/beastforms/feature_Rampage_8upqfcZvi7b5hRLE.json b/src/packs/beastforms/feature_Rampage_8upqfcZvi7b5hRLE.json index 0164d236..eedab4d6 100644 --- a/src/packs/beastforms/feature_Rampage_8upqfcZvi7b5hRLE.json +++ b/src/packs/beastforms/feature_Rampage_8upqfcZvi7b5hRLE.json @@ -18,35 +18,91 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, "effects": [ { - "_id": "5TX0hHFKZHvBeWne", + "_id": "A7l4JEBC1FFQajsN", "onSave": false } ], "target": { - "type": null, + "type": "self", "amount": null }, - "name": "Gain Proficiency", + "name": "Mark Stress", "img": "icons/creatures/abilities/bear-roar-bite-brown.webp", - "range": "" + "range": "self" } }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, - "effects": [], + "effects": [ + { + "name": "Rampage", + "img": "icons/creatures/claws/claw-bear-paw-swipe-red.webp", + "origin": "Compendium.daggerheart.beastforms.Item.8upqfcZvi7b5hRLE", + "transfer": false, + "_id": "A7l4JEBC1FFQajsN", + "type": "base", + "system": { + "rangeDependence": { + "enabled": false, + "type": "withinRange", + "target": "hostile", + "range": "melee" + } + }, + "changes": [ + { + "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": "

Before you make an attack roll, you can mark a Stress to gain a +1 bonus to your Proficiency for that attack.

", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.347", + "systemId": "daggerheart", + "systemVersion": "1.1.0", + "createdTime": 1756041194412, + "modifiedTime": 1756041218646, + "lastModifiedBy": "vUIbuan0U50nfKBE" + }, + "_key": "!items.effects!8upqfcZvi7b5hRLE.A7l4JEBC1FFQajsN" + } + ], "folder": "uU8bIoZvXge0rLaU", "ownership": { "default": 0, @@ -57,12 +113,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753582591417, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1756041228102, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "8upqfcZvi7b5hRLE", "sort": 2000000, diff --git a/src/packs/beastforms/feature_Snapping_Strike_Ky3rZD3sJMXYZOBC.json b/src/packs/beastforms/feature_Snapping_Strike_Ky3rZD3sJMXYZOBC.json index c22dad6e..0ab50abe 100644 --- a/src/packs/beastforms/feature_Snapping_Strike_Ky3rZD3sJMXYZOBC.json +++ b/src/packs/beastforms/feature_Snapping_Strike_Ky3rZD3sJMXYZOBC.json @@ -15,7 +15,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -44,7 +43,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -96,12 +100,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753626717512, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395734143, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Ky3rZD3sJMXYZOBC", "sort": 300000, diff --git a/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json b/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json index 13ffe145..5392665b 100644 --- a/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json +++ b/src/packs/beastforms/feature_Takedown_0ey4kM9ssj2otHvb.json @@ -18,13 +18,12 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, "damage": { @@ -58,7 +57,7 @@ "includeBase": false }, "target": { - "type": "any", + "type": "self", "amount": null }, "effects": [], @@ -84,19 +83,24 @@ }, "name": "Attack", "img": "icons/creatures/abilities/paw-print-orange.webp", - "range": "" + "range": "self" } }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { "name": "Takedown", "img": "icons/creatures/abilities/paw-print-orange.webp", "origin": "Item.okjlLUwEdNOKeUk3", - "transfer": false, + "transfer": true, "_id": "hE6ciIusvKEtUQ8U", "type": "base", "system": {}, @@ -108,7 +112,7 @@ "priority": null } ], - "disabled": false, + "disabled": true, "duration": { "startTime": null, "combat": null, @@ -118,7 +122,7 @@ "startRound": null, "startTurn": null }, - "description": "", + "description": "

You gain a +2 bonus to your Proficiency for this attack and the target must mark a Stress.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -127,10 +131,11 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", - "lastModifiedBy": null + "lastModifiedBy": "vUIbuan0U50nfKBE", + "modifiedTime": 1756041368153 }, "_key": "!items.effects!0ey4kM9ssj2otHvb.hE6ciIusvKEtUQ8U" } @@ -145,12 +150,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753621786000, - "modifiedTime": 1753643111609, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1756041242273, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "0ey4kM9ssj2otHvb", "sort": 600000, diff --git a/src/packs/beastforms/feature_Thick_Hide_ZYbdXaWVj2zdcmaK.json b/src/packs/beastforms/feature_Thick_Hide_ZYbdXaWVj2zdcmaK.json index 62e74afd..ab765715 100644 --- a/src/packs/beastforms/feature_Thick_Hide_ZYbdXaWVj2zdcmaK.json +++ b/src/packs/beastforms/feature_Thick_Hide_ZYbdXaWVj2zdcmaK.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753582593100, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395643155, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ZYbdXaWVj2zdcmaK", "sort": 1100000, diff --git a/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json b/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json index 15dec8f3..0db60d14 100644 --- a/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json +++ b/src/packs/beastforms/feature_Trample_A0lgd6eVEfX6oqSB.json @@ -18,7 +18,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -93,7 +92,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -144,12 +148,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753617737349, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395668076, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "A0lgd6eVEfX6oqSB", "sort": 800000, diff --git a/src/packs/beastforms/feature_Undaunted_ODudjX88Te4vDP57.json b/src/packs/beastforms/feature_Undaunted_ODudjX88Te4vDP57.json index 5137104d..1ed1f2eb 100644 --- a/src/packs/beastforms/feature_Undaunted_ODudjX88Te4vDP57.json +++ b/src/packs/beastforms/feature_Undaunted_ODudjX88Te4vDP57.json @@ -8,7 +8,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753627700926, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395766945, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ODudjX88Te4vDP57", "sort": 400000, diff --git a/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json b/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json index 98fe5e15..b1aadec4 100644 --- a/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json +++ b/src/packs/beastforms/feature_Unyielding_vEAQ4cfsoPmOv2Gg.json @@ -55,7 +55,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 15, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -68,12 +73,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753628692761, - "modifiedTime": 1753628692761, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395812715, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "vEAQ4cfsoPmOv2Gg", "sort": 0, diff --git a/src/packs/beastforms/feature_Venomous_Bite_2KlTnfzO03vneVS8.json b/src/packs/beastforms/feature_Venomous_Bite_2KlTnfzO03vneVS8.json index bea17311..480da867 100644 --- a/src/packs/beastforms/feature_Venomous_Bite_2KlTnfzO03vneVS8.json +++ b/src/packs/beastforms/feature_Venomous_Bite_2KlTnfzO03vneVS8.json @@ -10,13 +10,13 @@ "type": "effect", "_id": "eow90DYK6cUWOk7g", "systemPath": "actions", - "description": "", + "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.

", "chatDisplay": true, "actionType": "action", "cost": [], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, "effects": [ @@ -36,7 +36,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -86,12 +91,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753576004121, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786649810, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "2KlTnfzO03vneVS8", "sort": 1600000, diff --git a/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json b/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json index 11e60f58..cd44212c 100644 --- a/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json +++ b/src/packs/beastforms/feature_Venomous_Strike_uW3853pViM9VAfHb.json @@ -60,7 +60,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -109,12 +114,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753621248553, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395682759, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "uW3853pViM9VAfHb", "sort": 1300000, diff --git a/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json b/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json index 9c862f3e..8083ec69 100644 --- a/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json +++ b/src/packs/beastforms/feature_Vicious_Maul_jYUBi7yLHap5ljpa.json @@ -15,7 +15,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -74,7 +73,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 14, + "artist": "" + } }, "effects": [ { @@ -125,12 +129,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625637943, - "modifiedTime": 1753643084893, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395725076, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "jYUBi7yLHap5ljpa", "sort": 700000, diff --git a/src/packs/beastforms/feature_Warning_Hiss_cTlqpQZPy5TvdDAT.json b/src/packs/beastforms/feature_Warning_Hiss_cTlqpQZPy5TvdDAT.json index 5380f968..639966e6 100644 --- a/src/packs/beastforms/feature_Warning_Hiss_cTlqpQZPy5TvdDAT.json +++ b/src/packs/beastforms/feature_Warning_Hiss_cTlqpQZPy5TvdDAT.json @@ -18,7 +18,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -39,7 +38,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [], "folder": "uU8bIoZvXge0rLaU", @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753621249622, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755395677589, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "cTlqpQZPy5TvdDAT", "sort": 1200000, diff --git a/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json b/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json index 4f6e6717..a85f5d14 100644 --- a/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json +++ b/src/packs/beastforms/feature_Webslinger_D73fS1iM4SZPFimu.json @@ -10,13 +10,13 @@ "type": "attack", "_id": "vRU6xutkp3VYxZ0i", "systemPath": "actions", - "description": "", + "description": "

You can temporarily Restrain a target within Close range by succeeding on a Finesse Roll against them.

", "chatDisplay": true, "actionType": "action", "cost": [], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, "damage": { @@ -60,7 +60,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 13, + "artist": "" + } }, "effects": [ { @@ -112,12 +117,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753576005315, - "modifiedTime": 1753628206133, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1762786690091, + "lastModifiedBy": "gtrqalNxfl7iRwL8" }, "_id": "D73fS1iM4SZPFimu", "sort": 1700000, diff --git a/src/packs/classes/class_Bard_vegl3bFOq3pcFTWT.json b/src/packs/classes/class_Bard_vegl3bFOq3pcFTWT.json index 5ffd8a11..dfa5f29c 100644 --- a/src/packs/classes/class_Bard_vegl3bFOq3pcFTWT.json +++ b/src/packs/classes/class_Bard_vegl3bFOq3pcFTWT.json @@ -58,7 +58,22 @@ "suggestedSecondaryWeapon": "Compendium.daggerheart.weapons.Item.wKklDxs5nkzILNp4", "suggestedArmor": "Compendium.daggerheart.armors.Item.yJFp1bfpecDcStVK" }, - "isMulticlass": false + "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + }, + "backgroundQuestions": [ + "Who from your community taught you to have such confidence in yourself?", + "You were in love once. Who did you adore, and how did they hurt you?", + "You’ve always looked up to another bard. Who are they, and why do you idolize them?" + ], + "connections": [ + "What made you realize we were going to be such good friends?", + "What do I do that annoys you?", + "Why do you grab my hand at night?" + ] }, "effects": [], "ownership": { @@ -72,10 +87,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.1.0", + "systemVersion": "1.1.2", "createdTime": 1754174600538, - "modifiedTime": 1755943467705, - "lastModifiedBy": "tt3PwMBXcTLCtIQU" + "modifiedTime": 1756399046200, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_id": "vegl3bFOq3pcFTWT", "sort": 300000, diff --git a/src/packs/classes/class_Druid_ZNwUTCyGCEcidZFv.json b/src/packs/classes/class_Druid_ZNwUTCyGCEcidZFv.json index 086d363e..5e30b889 100644 --- a/src/packs/classes/class_Druid_ZNwUTCyGCEcidZFv.json +++ b/src/packs/classes/class_Druid_ZNwUTCyGCEcidZFv.json @@ -58,7 +58,22 @@ "suggestedSecondaryWeapon": "Compendium.daggerheart.weapons.Item.mxwWKDujgsRcZWPT", "suggestedArmor": "Compendium.daggerheart.armors.Item.nibfdNtp2PtxvbVz" }, - "isMulticlass": false + "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 10, + "artist": "" + }, + "backgroundQuestions": [ + "Why was the community you grew up in so reliant on nature and its creatures?", + "Who was the first wild animal you bonded with? Why did your bond end?", + "Who has been trying to hunt you down? What do they want from you?" + ], + "connections": [ + "What did you confide in me that makes me leap into danger for you every time?", + "What animal do I say you remind me of?", + "What affectionate nickname have you given me?" + ] }, "effects": [], "folder": null, @@ -74,10 +89,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.1.0", + "systemVersion": "1.1.2", "createdTime": 1754222247012, - "modifiedTime": 1755943479440, - "lastModifiedBy": "tt3PwMBXcTLCtIQU" + "modifiedTime": 1756399003725, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_key": "!items!ZNwUTCyGCEcidZFv" } diff --git a/src/packs/classes/class_Guardian_nRAyoC0fOzXPDa4z.json b/src/packs/classes/class_Guardian_nRAyoC0fOzXPDa4z.json index b50f86ef..c412abba 100644 --- a/src/packs/classes/class_Guardian_nRAyoC0fOzXPDa4z.json +++ b/src/packs/classes/class_Guardian_nRAyoC0fOzXPDa4z.json @@ -54,7 +54,22 @@ "suggestedSecondaryWeapon": null, "suggestedArmor": "Compendium.daggerheart.armors.Item.haULhuEg37zUUvhb" }, - "isMulticlass": false + "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 15, + "artist": "" + }, + "backgroundQuestions": [ + "Who from your community did you fail to protect, and why do you still think of them?", + "You’ve been tasked with protecting something important and delivering\nit somewhere dangerous. What is it, and where does it need to go?", + "You consider an aspect of yourself to be a weakness. What is it, and how has it affected you?" + ], + "connections": [ + "How did I save your life the first time we met?", + "What small gift did you give me that you notice I always carry with me?", + "What lie have you told me about yourself that I absolutely believe?" + ] }, "effects": [], "folder": null, @@ -70,10 +85,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.1.0", + "systemVersion": "1.1.2", "createdTime": 1754246931974, - "modifiedTime": 1755943488697, - "lastModifiedBy": "tt3PwMBXcTLCtIQU" + "modifiedTime": 1756398951257, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_key": "!items!nRAyoC0fOzXPDa4z" } diff --git a/src/packs/classes/class_Ranger_BTyfve69LKqoOi9S.json b/src/packs/classes/class_Ranger_BTyfve69LKqoOi9S.json index 62e51c7d..f85f6d59 100644 --- a/src/packs/classes/class_Ranger_BTyfve69LKqoOi9S.json +++ b/src/packs/classes/class_Ranger_BTyfve69LKqoOi9S.json @@ -54,7 +54,22 @@ "suggestedSecondaryWeapon": null, "suggestedArmor": "Compendium.daggerheart.armors.Item.nibfdNtp2PtxvbVz" }, - "isMulticlass": false + "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + }, + "backgroundQuestions": [ + "A terrible creature hurt your community, and you’ve vowed to hunt them down. What are they, and what unique trail or sign do they leave behind?", + "Your first kill almost killed you, too. What was it, and what part of you was never the same after that event?", + "You’ve traveled many dangerous lands, but what is the one place you refuse to go?" + ], + "connections": [ + "What friendly competition do we have?", + "Why do you act differently when we’re alone than when others are around?", + "What threat have you asked me to watch for, and why are you worried about it?" + ] }, "effects": [], "folder": null, @@ -70,10 +85,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.1.0", + "systemVersion": "1.1.2", "createdTime": 1754268869310, - "modifiedTime": 1755943505024, - "lastModifiedBy": "tt3PwMBXcTLCtIQU" + "modifiedTime": 1756398897309, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_key": "!items!BTyfve69LKqoOi9S" } diff --git a/src/packs/classes/class_Rogue_CvHlkHZfpMiCz5uT.json b/src/packs/classes/class_Rogue_CvHlkHZfpMiCz5uT.json index 146ad340..a0a59613 100644 --- a/src/packs/classes/class_Rogue_CvHlkHZfpMiCz5uT.json +++ b/src/packs/classes/class_Rogue_CvHlkHZfpMiCz5uT.json @@ -58,7 +58,22 @@ "suggestedSecondaryWeapon": "Compendium.daggerheart.weapons.Item.wKklDxs5nkzILNp4", "suggestedArmor": "Compendium.daggerheart.armors.Item.yJFp1bfpecDcStVK" }, - "isMulticlass": false + "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 19, + "artist": "" + }, + "backgroundQuestions": [ + "What did you get caught doing that got you exiled from your home community?", + "You used to have a different life, but you’ve tried to leave it behind. Who from your past is still chasing you?", + "Who from your past were you most sad to say goodbye to?" + ], + "connections": [ + "What did I recently convince you to do that got us both in trouble?", + "What have I discovered about your past that I hold secret from the others?", + "Who do you know from my past, and how have they influenced your feelings about me?" + ] }, "effects": [], "folder": null, @@ -74,10 +89,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.1.0", + "systemVersion": "1.1.2", "createdTime": 1754325275832, - "modifiedTime": 1755943515533, - "lastModifiedBy": "tt3PwMBXcTLCtIQU" + "modifiedTime": 1756398839983, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_key": "!items!CvHlkHZfpMiCz5uT" } diff --git a/src/packs/classes/class_Seraph_5ZnlJ5bEoyOTkUJv.json b/src/packs/classes/class_Seraph_5ZnlJ5bEoyOTkUJv.json index 6a2b70a1..7c3ce471 100644 --- a/src/packs/classes/class_Seraph_5ZnlJ5bEoyOTkUJv.json +++ b/src/packs/classes/class_Seraph_5ZnlJ5bEoyOTkUJv.json @@ -54,11 +54,26 @@ "suggestedSecondaryWeapon": "Compendium.daggerheart.weapons.Item.mxwWKDujgsRcZWPT", "suggestedArmor": "Compendium.daggerheart.armors.Item.haULhuEg37zUUvhb" }, - "isMulticlass": false + "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 20, + "artist": "" + }, + "backgroundQuestions": [ + "Which god did you devote yourself to? What incredible feat did they perform for you in a moment of desperation?", + "How did your appearance change after taking your oath?", + "In what strange or unique way do you communicate with your god?" + ], + "connections": [ + "What promise did you make me agree to, should you die on the battlefield?", + "Why do you ask me so many questions about my god?", + "You’ve told me to protect one member of our party above all others, even yourself. Who are they and why?" + ] }, "effects": [], "folder": null, - "sort": 0, + "sort": 737500, "ownership": { "default": 0, "Q9NoTaEarn3VMS6Z": 3 @@ -68,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "1.1.0", + "systemVersion": "1.1.2", "createdTime": 1754351482530, - "modifiedTime": 1755943523935, - "lastModifiedBy": "tt3PwMBXcTLCtIQU" + "modifiedTime": 1760018751908, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!5ZnlJ5bEoyOTkUJv" } diff --git a/src/packs/classes/class_Sorcerer_DchOzHcWIJE9FKcR.json b/src/packs/classes/class_Sorcerer_DchOzHcWIJE9FKcR.json index 0d3d71ac..ce1ced71 100644 --- a/src/packs/classes/class_Sorcerer_DchOzHcWIJE9FKcR.json +++ b/src/packs/classes/class_Sorcerer_DchOzHcWIJE9FKcR.json @@ -62,11 +62,26 @@ "suggestedSecondaryWeapon": null, "suggestedArmor": "Compendium.daggerheart.armors.Item.yJFp1bfpecDcStVK" }, - "isMulticlass": false + "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + }, + "backgroundQuestions": [ + "What did you do that made the people in your community wary of you?", + "What mentor taught you to control your untamed magic, and why are they no longer able to guide you?", + "You have a deep fear you hide from everyone. What is it, and why does it scare you?" + ], + "connections": [ + "Why do you trust me so deeply?", + "What did I do that makes you cautious around me?", + "Why do we keep our shared past a secret?" + ] }, "effects": [], "folder": null, - "sort": 0, + "sort": 743750, "ownership": { "default": 0, "Q9NoTaEarn3VMS6Z": 3 @@ -76,12 +91,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.347", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "1.1.0", + "systemVersion": "1.1.2", "createdTime": 1754349743129, - "modifiedTime": 1755943536635, - "lastModifiedBy": "tt3PwMBXcTLCtIQU" + "modifiedTime": 1760018753854, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!DchOzHcWIJE9FKcR" } diff --git a/src/packs/classes/class_Warrior_xCUWwJz4WSthvLfy.json b/src/packs/classes/class_Warrior_xCUWwJz4WSthvLfy.json index 2d120f8e..3ecb2b72 100644 --- a/src/packs/classes/class_Warrior_xCUWwJz4WSthvLfy.json +++ b/src/packs/classes/class_Warrior_xCUWwJz4WSthvLfy.json @@ -58,7 +58,22 @@ "suggestedSecondaryWeapon": null, "suggestedArmor": "Compendium.daggerheart.armors.Item.haULhuEg37zUUvhb" }, - "isMulticlass": false + "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 23, + "artist": "" + }, + "backgroundQuestions": [ + "Who taught you to fight, and why did they stay behind when you left home?", + "Somebody defeated you in battle years ago and left you to die. Who was it, and how did they betray you?", + "What legendary place have you always wanted to visit, and why is it so special?" + ], + "connections": [ + "We knew each other long before this party came together. How?", + "What mundane task do you usually help me with off the battlefield?", + "What fear am I helping you overcome?" + ] }, "effects": [], "folder": null, @@ -74,10 +89,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.1.0", + "systemVersion": "1.1.2", "createdTime": 1754255776706, - "modifiedTime": 1755943545980, - "lastModifiedBy": "tt3PwMBXcTLCtIQU" + "modifiedTime": 1756398696324, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_key": "!items!xCUWwJz4WSthvLfy" } diff --git a/src/packs/classes/class_Wizard_5LwX4m8ziY3F1ZGC.json b/src/packs/classes/class_Wizard_5LwX4m8ziY3F1ZGC.json index 0955e68a..d5cc53ca 100644 --- a/src/packs/classes/class_Wizard_5LwX4m8ziY3F1ZGC.json +++ b/src/packs/classes/class_Wizard_5LwX4m8ziY3F1ZGC.json @@ -58,7 +58,22 @@ "suggestedSecondaryWeapon": null, "suggestedArmor": "Compendium.daggerheart.armors.Item.nibfdNtp2PtxvbVz" }, - "isMulticlass": false + "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + }, + "backgroundQuestions": [ + "What responsibilities did your community once count on you for?\nHow did you let them down?", + "You’ve spent your life searching for a book or object of great\nsignificance. What is it, and why is it so important to you?", + "You have a powerful rival. Who are they, and why are you so determined to defeat them?" + ], + "connections": [ + "What favor have I asked of you that you’re not sure you can fulfill?", + "What weird hobby or strange fascination do we both share?", + "What secret about yourself have you entrusted only to me?" + ] }, "effects": [], "folder": null, @@ -74,10 +89,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.1.0", + "systemVersion": "1.1.2", "createdTime": 1754253505323, - "modifiedTime": 1755943555087, - "lastModifiedBy": "tt3PwMBXcTLCtIQU" + "modifiedTime": 1756391897762, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_key": "!items!5LwX4m8ziY3F1ZGC" } diff --git a/src/packs/classes/feature_Arcane_Sense_CHK32dfCTTyuxV1A.json b/src/packs/classes/feature_Arcane_Sense_CHK32dfCTTyuxV1A.json index 493a5336..6e737d42 100644 --- a/src/packs/classes/feature_Arcane_Sense_CHK32dfCTTyuxV1A.json +++ b/src/packs/classes/feature_Arcane_Sense_CHK32dfCTTyuxV1A.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754349703843, - "modifiedTime": 1754349703843, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755391367476, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!CHK32dfCTTyuxV1A" } diff --git a/src/packs/classes/feature_Attack_Of_Opportunity_3hNVqD1c0VIw2Nj5.json b/src/packs/classes/feature_Attack_Of_Opportunity_3hNVqD1c0VIw2Nj5.json index 4fc8f904..aff9be25 100644 --- a/src/packs/classes/feature_Attack_Of_Opportunity_3hNVqD1c0VIw2Nj5.json +++ b/src/packs/classes/feature_Attack_Of_Opportunity_3hNVqD1c0VIw2Nj5.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 23, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754257407143, - "modifiedTime": 1754257470399, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391424513, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!3hNVqD1c0VIw2Nj5" } diff --git a/src/packs/classes/feature_Beastform_P1K0jcnH2RiS6TLd.json b/src/packs/classes/feature_Beastform_P1K0jcnH2RiS6TLd.json index c93225e2..327e611f 100644 --- a/src/packs/classes/feature_Beastform_P1K0jcnH2RiS6TLd.json +++ b/src/packs/classes/feature_Beastform_P1K0jcnH2RiS6TLd.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -40,7 +39,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 10, + "artist": "" + } }, "effects": [], "sort": 200000, @@ -53,12 +57,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754221796297, - "modifiedTime": 1754246230370, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391222871, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!P1K0jcnH2RiS6TLd" } diff --git a/src/packs/classes/feature_Channel_Raw_Power_P02cbN50LIoD662z.json b/src/packs/classes/feature_Channel_Raw_Power_P02cbN50LIoD662z.json index f01b29b1..a371bfea 100644 --- a/src/packs/classes/feature_Channel_Raw_Power_P02cbN50LIoD662z.json +++ b/src/packs/classes/feature_Channel_Raw_Power_P02cbN50LIoD662z.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hitPoints", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,7 +41,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + } }, "effects": [], "sort": 0, @@ -55,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754349703843, - "modifiedTime": 1754498040342, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391373925, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!P02cbN50LIoD662z" } diff --git a/src/packs/classes/feature_Cloaked_5IT8wYa0m1EFw8Zp.json b/src/packs/classes/feature_Cloaked_5IT8wYa0m1EFw8Zp.json index d5067bf7..f14ef868 100644 --- a/src/packs/classes/feature_Cloaked_5IT8wYa0m1EFw8Zp.json +++ b/src/packs/classes/feature_Cloaked_5IT8wYa0m1EFw8Zp.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 19, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754324132841, - "modifiedTime": 1754324172617, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391307139, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!5IT8wYa0m1EFw8Zp" } diff --git a/src/packs/classes/feature_Combat_Training_eoSmuAJmgHUyULtp.json b/src/packs/classes/feature_Combat_Training_eoSmuAJmgHUyULtp.json index 83121c84..e13427d4 100644 --- a/src/packs/classes/feature_Combat_Training_eoSmuAJmgHUyULtp.json +++ b/src/packs/classes/feature_Combat_Training_eoSmuAJmgHUyULtp.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 23, + "artist": "" + } }, "effects": [ { @@ -80,12 +85,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754257489875, - "modifiedTime": 1754257512503, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391432013, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!eoSmuAJmgHUyULtp" } diff --git a/src/packs/classes/feature_Evolution_6rlxhrRwFaVgq9fe.json b/src/packs/classes/feature_Evolution_6rlxhrRwFaVgq9fe.json index ed9b87e3..cd011361 100644 --- a/src/packs/classes/feature_Evolution_6rlxhrRwFaVgq9fe.json +++ b/src/packs/classes/feature_Evolution_6rlxhrRwFaVgq9fe.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null } ], @@ -40,7 +39,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 10, + "artist": "" + } }, "effects": [], "sort": 100000, @@ -53,12 +57,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754221506611, - "modifiedTime": 1754353698203, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391214500, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!6rlxhrRwFaVgq9fe" } diff --git a/src/packs/classes/feature_Frontline_Tank_YS1g7YdWwOaS629x.json b/src/packs/classes/feature_Frontline_Tank_YS1g7YdWwOaS629x.json index af403628..b2e30707 100644 --- a/src/packs/classes/feature_Frontline_Tank_YS1g7YdWwOaS629x.json +++ b/src/packs/classes/feature_Frontline_Tank_YS1g7YdWwOaS629x.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null } ], @@ -60,7 +59,7 @@ "includeBase": false }, "target": { - "type": "any", + "type": "self", "amount": null }, "effects": [], @@ -81,11 +80,16 @@ }, "name": "Spend Hope", "img": "icons/magic/defensive/shield-barrier-flaming-pentagon-orange.webp", - "range": "" + "range": "self" } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 15, + "artist": "" + } }, "effects": [], "sort": 0, @@ -98,12 +102,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754246687097, - "modifiedTime": 1754246740977, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1756034159296, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!YS1g7YdWwOaS629x" } diff --git a/src/packs/classes/feature_Hold_Them_Off_2Cyb9ZeuAesf5Sb3.json b/src/packs/classes/feature_Hold_Them_Off_2Cyb9ZeuAesf5Sb3.json index b99116da..0c831a14 100644 --- a/src/packs/classes/feature_Hold_Them_Off_2Cyb9ZeuAesf5Sb3.json +++ b/src/packs/classes/feature_Hold_Them_Off_2Cyb9ZeuAesf5Sb3.json @@ -5,14 +5,14 @@ "_id": "2Cyb9ZeuAesf5Sb3", "img": "icons/magic/defensive/barrier-shield-dome-deflect-teal.webp", "system": { - "description": "

Spend 3 Hope when you succeed on an attack with a weapon to use that same roll against two additional adversaries within range of the attack.

", + "description": "

Spend 3 Hope when you succeed on an attack with a weapon to use that same roll against two additional adversaries within range of the attack.

", "resource": null, "actions": { "yhVUna5biFAN0o2Y": { "type": "effect", "_id": "yhVUna5biFAN0o2Y", "systemPath": "actions", - "description": "

Spend 3 Hope when you succeed on an attack with a weapon to use that same roll against two additional adversaries within range of the attack.

", + "description": "

Spend 3 Hope when you succeed on an attack with a weapon to use that same roll against two additional adversaries within range of the attack.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null } ], @@ -40,7 +39,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [], "sort": 0, @@ -53,12 +57,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754268431889, - "modifiedTime": 1754268481364, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1756034191317, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!2Cyb9ZeuAesf5Sb3" } diff --git a/src/packs/classes/feature_Life_Support_lSlvSUHbOoX36q2j.json b/src/packs/classes/feature_Life_Support_lSlvSUHbOoX36q2j.json index 289401df..2ee5cba8 100644 --- a/src/packs/classes/feature_Life_Support_lSlvSUHbOoX36q2j.json +++ b/src/packs/classes/feature_Life_Support_lSlvSUHbOoX36q2j.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -87,7 +86,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 20, + "artist": "" + } }, "effects": [], "sort": 0, @@ -100,12 +104,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754352191693, - "modifiedTime": 1754352366258, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755391338608, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!lSlvSUHbOoX36q2j" } diff --git a/src/packs/classes/feature_Make_a_Scene_N9E5skDDK2VgvohR.json b/src/packs/classes/feature_Make_a_Scene_N9E5skDDK2VgvohR.json index 0b06f0f2..1627a77a 100644 --- a/src/packs/classes/feature_Make_a_Scene_N9E5skDDK2VgvohR.json +++ b/src/packs/classes/feature_Make_a_Scene_N9E5skDDK2VgvohR.json @@ -19,7 +19,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null } ], @@ -44,7 +43,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + } }, "effects": [ { @@ -102,12 +106,12 @@ "compendiumSource": "Compendium.daggerheart.classes.Item.OxmucTHHfuBSv2dn", "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754174534518, - "modifiedTime": 1754246214305, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391180683, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { "default": 0, diff --git a/src/packs/classes/feature_Minor_Illusion_cshTYdtz9yoXYYB3.json b/src/packs/classes/feature_Minor_Illusion_cshTYdtz9yoXYYB3.json index 1bb9865b..a5103190 100644 --- a/src/packs/classes/feature_Minor_Illusion_cshTYdtz9yoXYYB3.json +++ b/src/packs/classes/feature_Minor_Illusion_cshTYdtz9yoXYYB3.json @@ -57,7 +57,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + } }, "effects": [], "sort": 0, @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754349703843, - "modifiedTime": 1754349703843, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755391393430, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!cshTYdtz9yoXYYB3" } diff --git a/src/packs/classes/feature_No_Mercy_njj2C3tMDeCHHOoh.json b/src/packs/classes/feature_No_Mercy_njj2C3tMDeCHHOoh.json index fd65ec54..caa2462c 100644 --- a/src/packs/classes/feature_No_Mercy_njj2C3tMDeCHHOoh.json +++ b/src/packs/classes/feature_No_Mercy_njj2C3tMDeCHHOoh.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -38,16 +37,21 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Spend Hope", "img": "icons/magic/holy/barrier-shield-winged-blue.webp", - "range": "" + "range": "self" } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 23, + "artist": "" + } }, "effects": [ { @@ -112,12 +116,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754257270096, - "modifiedTime": 1754257373211, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756034406042, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!njj2C3tMDeCHHOoh" } diff --git a/src/packs/classes/feature_Not_This_Time_h3VE0jhcM5xHKBs4.json b/src/packs/classes/feature_Not_This_Time_h3VE0jhcM5xHKBs4.json index 43b53093..b8053ed2 100644 --- a/src/packs/classes/feature_Not_This_Time_h3VE0jhcM5xHKBs4.json +++ b/src/packs/classes/feature_Not_This_Time_h3VE0jhcM5xHKBs4.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,7 +41,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 0, @@ -55,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754254821288, - "modifiedTime": 1754254888546, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391455848, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!h3VE0jhcM5xHKBs4" } diff --git a/src/packs/classes/feature_Prayer_Dice_Xd7RYhfTxIj9aWI2.json b/src/packs/classes/feature_Prayer_Dice_Xd7RYhfTxIj9aWI2.json index 8203a246..6c8f2ee8 100644 --- a/src/packs/classes/feature_Prayer_Dice_Xd7RYhfTxIj9aWI2.json +++ b/src/packs/classes/feature_Prayer_Dice_Xd7RYhfTxIj9aWI2.json @@ -15,7 +15,12 @@ }, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 20, + "artist": "" + } }, "effects": [], "sort": 100000, @@ -30,10 +35,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1754352649696, - "modifiedTime": 1754845640002, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755391345473, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Xd7RYhfTxIj9aWI2" } diff --git a/src/packs/classes/feature_Prestidigitation_SG2uw8h5YuwDviCn.json b/src/packs/classes/feature_Prestidigitation_SG2uw8h5YuwDviCn.json index 3757fde2..d4846155 100644 --- a/src/packs/classes/feature_Prestidigitation_SG2uw8h5YuwDviCn.json +++ b/src/packs/classes/feature_Prestidigitation_SG2uw8h5YuwDviCn.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754254907799, - "modifiedTime": 1754254926599, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391463314, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!SG2uw8h5YuwDviCn" } diff --git a/src/packs/classes/feature_Rally_PydiMnNCKpd44SGS.json b/src/packs/classes/feature_Rally_PydiMnNCKpd44SGS.json index c5933ca8..f421c6ab 100644 --- a/src/packs/classes/feature_Rally_PydiMnNCKpd44SGS.json +++ b/src/packs/classes/feature_Rally_PydiMnNCKpd44SGS.json @@ -36,7 +36,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + } }, "effects": [ { @@ -94,12 +99,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754174497668, - "modifiedTime": 1754494820213, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391189267, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { "default": 0, diff --git a/src/packs/classes/feature_Rally__Level_5__TVeEyqmPPiRa2r3i.json b/src/packs/classes/feature_Rally__Level_5__TVeEyqmPPiRa2r3i.json index da124244..50d8e2ab 100644 --- a/src/packs/classes/feature_Rally__Level_5__TVeEyqmPPiRa2r3i.json +++ b/src/packs/classes/feature_Rally__Level_5__TVeEyqmPPiRa2r3i.json @@ -36,7 +36,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + } }, "effects": [ { @@ -94,12 +99,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754174499893, - "modifiedTime": 1754494835723, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391195765, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { "default": 0, diff --git a/src/packs/classes/feature_Ranger_s_Focus_ncLx2P8BOUtrAD38.json b/src/packs/classes/feature_Ranger_s_Focus_ncLx2P8BOUtrAD38.json index a8b7fa77..2060a2e1 100644 --- a/src/packs/classes/feature_Ranger_s_Focus_ncLx2P8BOUtrAD38.json +++ b/src/packs/classes/feature_Ranger_s_Focus_ncLx2P8BOUtrAD38.json @@ -17,7 +17,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -29,7 +28,12 @@ "max": "", "recovery": null }, - "effects": [], + "effects": [ + { + "_id": "SXi2dQWqpwY9fap4", + "onSave": false + } + ], "target": { "type": "any", "amount": null @@ -40,9 +44,59 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + } }, - "effects": [], + "effects": [ + { + "name": "Ranger's Focus", + "img": "icons/magic/perception/eye-ringed-green.webp", + "origin": "Compendium.daggerheart.classes.Item.ncLx2P8BOUtrAD38", + "transfer": false, + "_id": "SXi2dQWqpwY9fap4", + "type": "base", + "system": { + "rangeDependence": { + "enabled": false, + "type": "withinRange", + "target": "hostile", + "range": "melee" + } + }, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "

Until this feature ends or the ranger makes a different creature their Focus, they gain the following benefits against this adversary:

  • They know precisely what direction they are in.

  • When they deal damage to them, the adverasry must mark a Stress.

  • When they fail an attack against them, they can end their Ranger’s Focus feature to reroll their Duality Dice.

", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.347", + "systemId": "daggerheart", + "systemVersion": "1.1.0", + "createdTime": 1756034238996, + "modifiedTime": 1756034332923, + "lastModifiedBy": "vUIbuan0U50nfKBE" + }, + "_key": "!items.effects!ncLx2P8BOUtrAD38.SXi2dQWqpwY9fap4" + } + ], "sort": 0, "ownership": { "default": 0, @@ -53,12 +107,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754268505051, - "modifiedTime": 1754268589700, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1756034239047, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!ncLx2P8BOUtrAD38" } diff --git a/src/packs/classes/feature_Rogue_s_Dodge_hVaaPIjxoextIgSL.json b/src/packs/classes/feature_Rogue_s_Dodge_hVaaPIjxoextIgSL.json index b544f70a..c96fe2fc 100644 --- a/src/packs/classes/feature_Rogue_s_Dodge_hVaaPIjxoextIgSL.json +++ b/src/packs/classes/feature_Rogue_s_Dodge_hVaaPIjxoextIgSL.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null } ], @@ -36,7 +35,7 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Spend Hope", @@ -45,7 +44,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 19, + "artist": "" + } }, "effects": [ { @@ -71,7 +75,7 @@ "priority": null } ], - "disabled": true, + "disabled": false, "duration": { "startTime": null, "combat": null, @@ -90,12 +94,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754323997794, - "modifiedTime": 1754351805065, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756034385415, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items.effects!hVaaPIjxoextIgSL.hhVjBro2osGDTT5g" } @@ -110,12 +114,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754323951411, - "modifiedTime": 1754324053728, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1756034357629, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!hVaaPIjxoextIgSL" } diff --git a/src/packs/classes/feature_Sneak_Attack_5QqpEwmwkPfZHpMW.json b/src/packs/classes/feature_Sneak_Attack_5QqpEwmwkPfZHpMW.json index ec203e9a..8984606c 100644 --- a/src/packs/classes/feature_Sneak_Attack_5QqpEwmwkPfZHpMW.json +++ b/src/packs/classes/feature_Sneak_Attack_5QqpEwmwkPfZHpMW.json @@ -7,37 +7,14 @@ "system": { "description": "

When you succeed on an attack while Cloaked or while an ally is within Melee range of your target, add a number of d6s equal to your tier to your damage roll.

  • Level 1 -> Tier 1

  • Levels 2–4 -> Tier 2

  • Levels 5–7 -> Tier 3

  • Levels 8–10 -> Tier 4

", "resource": null, - "actions": { - "SfctrIW5KjH4nq5G": { - "type": "effect", - "_id": "SfctrIW5KjH4nq5G", - "systemPath": "actions", - "description": "

When you succeed on an attack while Cloaked or while an ally is within Melee range of your target, add a number of d6s equal to your tier to your damage roll.

  • Level 1 -> Tier 1

  • Levels 2–4 -> Tier 2

  • Levels 5–7 -> Tier 3

  • Levels 8–10 -> Tier 4

", - "chatDisplay": true, - "actionType": "action", - "cost": [], - "uses": { - "value": null, - "max": "", - "recovery": null - }, - "effects": [ - { - "_id": "380jFzw756qSy5ae", - "onSave": false - } - ], - "target": { - "type": "any", - "amount": null - }, - "name": "Use Sneak Attack", - "img": "icons/skills/melee/strike-dagger-skull-white.webp", - "range": "" - } - }, + "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 19, + "artist": "" + } }, "effects": [ { @@ -108,12 +85,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754324216454, - "modifiedTime": 1754324890997, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1756034698108, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!5QqpEwmwkPfZHpMW" } diff --git a/src/packs/classes/feature_Strange_Patterns_6YsfFjmCGuFYVhT4.json b/src/packs/classes/feature_Strange_Patterns_6YsfFjmCGuFYVhT4.json index afe896de..18e6f87e 100644 --- a/src/packs/classes/feature_Strange_Patterns_6YsfFjmCGuFYVhT4.json +++ b/src/packs/classes/feature_Strange_Patterns_6YsfFjmCGuFYVhT4.json @@ -84,7 +84,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 0, @@ -97,12 +102,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754254942995, - "modifiedTime": 1754498121727, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391470247, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!6YsfFjmCGuFYVhT4" } diff --git a/src/packs/classes/feature_Unstoppable_PnD2UCgzIlwX6cY3.json b/src/packs/classes/feature_Unstoppable_PnD2UCgzIlwX6cY3.json index 5505ed44..c768b09f 100644 --- a/src/packs/classes/feature_Unstoppable_PnD2UCgzIlwX6cY3.json +++ b/src/packs/classes/feature_Unstoppable_PnD2UCgzIlwX6cY3.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 15, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754246498657, - "modifiedTime": 1754246649352, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391250586, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!PnD2UCgzIlwX6cY3" } diff --git a/src/packs/classes/feature_Volatile_Magic_ieiQlD0joWSqt53D.json b/src/packs/classes/feature_Volatile_Magic_ieiQlD0joWSqt53D.json index b6994b72..65e4c0c8 100644 --- a/src/packs/classes/feature_Volatile_Magic_ieiQlD0joWSqt53D.json +++ b/src/packs/classes/feature_Volatile_Magic_ieiQlD0joWSqt53D.json @@ -19,7 +19,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -41,7 +40,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + } }, "effects": [], "folder": "oNhnBt8HZ2oaSnSn", @@ -55,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754349703843, - "modifiedTime": 1754349703843, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755391406960, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ieiQlD0joWSqt53D" } diff --git a/src/packs/classes/feature_Wildtouch_fqSdfUYUK9QUcVE4.json b/src/packs/classes/feature_Wildtouch_fqSdfUYUK9QUcVE4.json index efdbe7e7..19f780fd 100644 --- a/src/packs/classes/feature_Wildtouch_fqSdfUYUK9QUcVE4.json +++ b/src/packs/classes/feature_Wildtouch_fqSdfUYUK9QUcVE4.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 10, + "artist": "" + } }, "effects": [], "sort": 300000, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754221970100, - "modifiedTime": 1754246231149, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391229618, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!fqSdfUYUK9QUcVE4" } diff --git a/src/packs/communities/community_Highborne_DVw2mOCHB8i0XeBz.json b/src/packs/communities/community_Highborne_DVw2mOCHB8i0XeBz.json index be485d0b..58ccda51 100644 --- a/src/packs/communities/community_Highborne_DVw2mOCHB8i0XeBz.json +++ b/src/packs/communities/community_Highborne_DVw2mOCHB8i0XeBz.json @@ -7,19 +7,24 @@ "description": "

Being part of a highborne community means you’re accustomed to a life of elegance, opulence, and prestige within the upper echelons of society.

Traditionally, members of a highborne community possess incredible material wealth. While this can take a variety of forms depending on the communityβ€”including gold and other minerals, land, or controlling the means of productionβ€”this status always comes with power and influence. Highborne place great value on titles and possessions, and there is little social mobility within their ranks. Members of a highborne community often control the political and economic status of the areas in which they live due to their ability to influence people and the economy with their substantial wealth. The health and safety of the less affluent people who live in these locations often hinges on the ability of this highborne ruling class to prioritize the well-being of their subjects over profit.

\n

Highborne are often amiable, candid, conniving, enterprising, ostentatious, and unflappable.

", "features": [ "Compendium.daggerheart.communities.Item.C7NR6qRatawZusmg" - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 32, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784392, - "modifiedTime": 1754010352828, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394637367, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "DVw2mOCHB8i0XeBz", "sort": 3400000, diff --git a/src/packs/communities/community_Loreborne_YsvlyqYoi8QQ8kwm.json b/src/packs/communities/community_Loreborne_YsvlyqYoi8QQ8kwm.json index 50530aff..2db69c4d 100644 --- a/src/packs/communities/community_Loreborne_YsvlyqYoi8QQ8kwm.json +++ b/src/packs/communities/community_Loreborne_YsvlyqYoi8QQ8kwm.json @@ -7,19 +7,24 @@ "description": "

Being part of a loreborne community means you’re from a society that favors strong academic or political prowess.

Loreborne communities highly value knowledge, frequently in the form of historical preservation, political advancement, scientific study, skill development, or lore and mythology compilation. Most members of these communities research in institutions built in bastions of civilization, while some eclectic few thrive in gathering information from the natural world. Some may be isolationists, operating in smaller enclaves, schools, or guilds and following their own unique ethos. Others still wield their knowledge on a larger scale, making deft political maneuvers across governmental landscapes.

\n

Loreborne are often direct, eloquent, inquisitive, patient, rhapsodic, and witty.

", "features": [ "Compendium.daggerheart.communities.Item.JBZJmywisJg5X3tH" - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 32, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784392, - "modifiedTime": 1754010491764, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394793025, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "YsvlyqYoi8QQ8kwm", "sort": 3400000, diff --git a/src/packs/communities/community_Orderborne_TY2TejenASXtS484.json b/src/packs/communities/community_Orderborne_TY2TejenASXtS484.json index 7817a2ea..ae6adc86 100644 --- a/src/packs/communities/community_Orderborne_TY2TejenASXtS484.json +++ b/src/packs/communities/community_Orderborne_TY2TejenASXtS484.json @@ -7,19 +7,24 @@ "description": "

Being part of an orderborne community means you’re from a collective that focuses on discipline or faith, and you uphold a set of principles that reflect your experience there.

Orderborne are frequently some of the most powerful among the surrounding communities. By aligning the members of their society around a common value or goal, such as a god, doctrine, ethos, or even a shared business or trade, the ruling bodies of these enclaves are able to mobilize larger populations with less effort. While orderborne communities take a variety of formsβ€”some even profoundly pacifisticβ€”perhaps the most feared are those that structure themselves around military prowess. In such a case, it’s not uncommon for orderborne to provide soldiers for hire to other cities or countries.

\n

Orderborne are often ambitious, benevolent, pensive, prudent, sardonic, and stoic.

", "features": [ "Compendium.daggerheart.communities.Item.7aXWdH3gzaYREK0X" - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 32, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784393, - "modifiedTime": 1754010626874, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394802410, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "TY2TejenASXtS484", "sort": 3400000, diff --git a/src/packs/communities/community_Ridgeborne_WHLA4qrdszXQHOuo.json b/src/packs/communities/community_Ridgeborne_WHLA4qrdszXQHOuo.json index 5971d311..1b09ad82 100644 --- a/src/packs/communities/community_Ridgeborne_WHLA4qrdszXQHOuo.json +++ b/src/packs/communities/community_Ridgeborne_WHLA4qrdszXQHOuo.json @@ -7,19 +7,24 @@ "description": "

Being part of a ridgeborne community means you’ve called the rocky peaks and sharp cliffs of the mountainside home.

Those who’ve lived in the mountains often consider themselves hardier than most because they’ve thrived among the most dangerous terrain many continents have to offer. These groups are adept at adaptation, developing unique technologies and equipment to move both people and products across difficult terrain. As such, ridgeborne grow up scrambling and climbing, making them sturdy and strong-willed. Ridgeborne localities appear in a variety of formsβ€”some cities carve out entire cliff faces, others construct castles of stone, and still more live in small homes on windblown peaks. Outside forces often struggle to attack ridgeborne groups, as the small militias and large military forces of the mountains are adept at utilizing their high-ground advantage.

\n

Ridgeborne are often bold, hardy, indomitable, loyal, reserved, and stubborn.

", "features": [ "Compendium.daggerheart.communities.Item.DYmmr5CknLtHnwuj" - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 33, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784394, - "modifiedTime": 1754010655426, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394814094, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "WHLA4qrdszXQHOuo", "sort": 3400000, diff --git a/src/packs/communities/community_Seaborne_o5AA5J05N7EvH1rN.json b/src/packs/communities/community_Seaborne_o5AA5J05N7EvH1rN.json index 95798e66..cd474b14 100644 --- a/src/packs/communities/community_Seaborne_o5AA5J05N7EvH1rN.json +++ b/src/packs/communities/community_Seaborne_o5AA5J05N7EvH1rN.json @@ -7,19 +7,24 @@ "description": "

Being part of a seaborne community means you lived on or near a large body of water.

Seaborne communities are built, both physically and culturally, around the specific waters they call home. Some of these groups live along the shore, constructing ports for locals and travelers alike. These harbors function as centers of commerce, tourist attractions, or even just a safe place to lay down one’s head after weeks of travel. Other seaborne live on the water in small boats or large ships, with the idea of β€œhome” comprising a ship and its crew, rather than any one landmass. No matter their exact location, seaborne communities are closely tied to the ocean tides and the creatures who inhabit them. Seaborne learn to fish at a young age, and train from birth to hold their breath and swim in even the most tumultuous waters. Individuals from these groups are highly sought after for their sailing skills, and many become captains of vessels, whether within their own community, working for another, or even at the helm of a powerful naval operation.

\n

Seaborne are often candid, cooperative, exuberant, fierce, resolute, and weathered.

", "features": [ "Compendium.daggerheart.communities.Item.07x6Qe6qMzDw2xN4" - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 33, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784395, - "modifiedTime": 1754010861330, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394819693, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "o5AA5J05N7EvH1rN", "sort": 3400000, diff --git a/src/packs/communities/community_Slyborne_rGwCPMqZtky7SE6d.json b/src/packs/communities/community_Slyborne_rGwCPMqZtky7SE6d.json index c038fe90..3d8911be 100644 --- a/src/packs/communities/community_Slyborne_rGwCPMqZtky7SE6d.json +++ b/src/packs/communities/community_Slyborne_rGwCPMqZtky7SE6d.json @@ -7,19 +7,24 @@ "description": "

Being part of a slyborne community means you come from a group that operates outside the law, including all manner of criminals, grifters, and con artists.

Being part of a slyborne community means you come from a group that operates outside the law, including all manner of criminals, grifters, and con artists. Members of slyborne communities are brought together by their disreputable goals and their clever means of achieving them. Many people in these communities have an array of unscrupulous skills: forging, thievery, smuggling, and violence. People of any social class can be slyborne, from those who have garnered vast wealth and influence to those without a coin to their name. To the outside eye, slyborne might appear to be ruffians with no loyalty, but these communities possess some of the strictest codes of honor which, when broken, can result in a terrifying end for the transgressor.

\n

Slyborne are often calculating, clever, formidable, perceptive, shrewd, and tenacious.

", "features": [ "Compendium.daggerheart.communities.Item.ZmEuBdL0JrvuA8le" - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 33, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784396, - "modifiedTime": 1754011031727, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394825710, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "rGwCPMqZtky7SE6d", "sort": 3400000, diff --git a/src/packs/communities/community_Underborne_eX0I1ZNMyD3nfaL1.json b/src/packs/communities/community_Underborne_eX0I1ZNMyD3nfaL1.json index 7bd276be..7a5134c6 100644 --- a/src/packs/communities/community_Underborne_eX0I1ZNMyD3nfaL1.json +++ b/src/packs/communities/community_Underborne_eX0I1ZNMyD3nfaL1.json @@ -7,19 +7,24 @@ "description": "

Being part of an underborne community means you’re from a subterranean society.

Many underborne live right beneath the cities and villages of other collectives, while some live much deeper. These communities range from small family groups in burrows to massive metropolises in caverns of stone. In many locales, underborne are recognized for their incredible boldness and skill that enable great feats of architecture and engineering. Underborne are regularly hired for their bravery, as even the least daring among them has likely encountered formidable belowground beasts, and learning to dispatch such creatures is common practice amongst these societies. Because of the dangers of their environment, many underborne communities develop unique nonverbal languages that prove equally useful on the surface.

\n

Underborne are often composed, elusive, indomitable, innovative, resourceful, and unpretentious.

", "features": [ "Compendium.daggerheart.communities.Item.aMla3xQuCHEwORGD" - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 33, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784398, - "modifiedTime": 1754011085731, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394833394, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "eX0I1ZNMyD3nfaL1", "sort": 3400000, diff --git a/src/packs/communities/community_Wanderborne_82mDY2EIBfLkNwQj.json b/src/packs/communities/community_Wanderborne_82mDY2EIBfLkNwQj.json index a1b03f93..465e20e3 100644 --- a/src/packs/communities/community_Wanderborne_82mDY2EIBfLkNwQj.json +++ b/src/packs/communities/community_Wanderborne_82mDY2EIBfLkNwQj.json @@ -7,19 +7,24 @@ "description": "

Being part of a wanderborne community means you’ve lived as a nomad, forgoing a permanent home and experiencing a wide variety of cultures.

Unlike many communities that are defined by their locale, wanderborne are defined by their traveling lifestyle. Because of their frequent migration, wanderborne put less value on the accumulation of material possessions in favor of acquiring information, skills, and connections. While some wanderborne are allied by a common ethos, such as a religion or a set of political or economic values, others come together after shared tragedy, such as the loss of their home or land. No matter the reason, the dangers posed by life on the road and the choice to continue down that road together mean that wanderborne are known for their unwavering loyalty.

\n

Wanderborne are often inscrutable, magnanimous, mirthful, reliable, savvy, and unorthodox.

", "features": [ "Compendium.daggerheart.communities.Item.2RSrQouA2zEJ5Xee" - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 34, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784398, - "modifiedTime": 1754011123332, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394858795, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "82mDY2EIBfLkNwQj", "sort": 3400000, diff --git a/src/packs/communities/community_Wildborne_CRJ5pzJj4FjCtIlx.json b/src/packs/communities/community_Wildborne_CRJ5pzJj4FjCtIlx.json index 73032136..922c3fc7 100644 --- a/src/packs/communities/community_Wildborne_CRJ5pzJj4FjCtIlx.json +++ b/src/packs/communities/community_Wildborne_CRJ5pzJj4FjCtIlx.json @@ -7,19 +7,24 @@ "description": "

Being part of a wildborne community means you lived deep within the forest.

Wildborne communities are defined by their dedication to the conservation of their homelands, and many have strong religious or cultural ties to the fauna they live among. This results in unique architectural and technological advancements that favor sustainability over short-term, high-yield results. It is a hallmark of wildborne societies to integrate their villages and cities with the natural environment and avoid disturbing the lives of the plants and animals. While some construct their lodgings high in the branches of trees, others establish their homes on the ground beneath the forest canopy. It’s not uncommon for wildborne to remain reclusive and hidden within their woodland homes.

\n

Wildborne are often hardy, loyal, nurturing, reclusive, sagacious, and vibrant.

", "features": [ "Compendium.daggerheart.communities.Item.TQ1AIQjndC4mYmmU" - ] + ], + "attribution": { + "source": "Daggerheart SRD", + "page": 34, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784398, - "modifiedTime": 1754011159389, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394854412, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "CRJ5pzJj4FjCtIlx", "sort": 3400000, diff --git a/src/packs/communities/feature_Dedicated_7aXWdH3gzaYREK0X.json b/src/packs/communities/feature_Dedicated_7aXWdH3gzaYREK0X.json index 11ac8208..5591af1e 100644 --- a/src/packs/communities/feature_Dedicated_7aXWdH3gzaYREK0X.json +++ b/src/packs/communities/feature_Dedicated_7aXWdH3gzaYREK0X.json @@ -33,7 +33,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 32, + "artist": "" + } }, "effects": [], "flags": {}, diff --git a/src/packs/communities/feature_Know_the_Tide_07x6Qe6qMzDw2xN4.json b/src/packs/communities/feature_Know_the_Tide_07x6Qe6qMzDw2xN4.json index d2c1c314..e93245f6 100644 --- a/src/packs/communities/feature_Know_the_Tide_07x6Qe6qMzDw2xN4.json +++ b/src/packs/communities/feature_Know_the_Tide_07x6Qe6qMzDw2xN4.json @@ -18,7 +18,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 33, + "artist": "" + } }, "effects": [], "flags": {}, @@ -26,12 +31,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754010247432, - "modifiedTime": 1754498464092, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755394912698, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "sort": 0, "ownership": { diff --git a/src/packs/communities/feature_Lightfoot_TQ1AIQjndC4mYmmU.json b/src/packs/communities/feature_Lightfoot_TQ1AIQjndC4mYmmU.json index 86d1ba97..2c9028a2 100644 --- a/src/packs/communities/feature_Lightfoot_TQ1AIQjndC4mYmmU.json +++ b/src/packs/communities/feature_Lightfoot_TQ1AIQjndC4mYmmU.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 34, + "artist": "" + } }, "effects": [ { @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754010247432, - "modifiedTime": 1754010247432, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394946768, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "sort": 0, "ownership": { diff --git a/src/packs/communities/feature_Low_Light_Living_aMla3xQuCHEwORGD.json b/src/packs/communities/feature_Low_Light_Living_aMla3xQuCHEwORGD.json index 27dde95c..38008333 100644 --- a/src/packs/communities/feature_Low_Light_Living_aMla3xQuCHEwORGD.json +++ b/src/packs/communities/feature_Low_Light_Living_aMla3xQuCHEwORGD.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 33, + "artist": "" + } }, "effects": [ { @@ -82,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754010247432, - "modifiedTime": 1754010247432, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394926216, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "sort": 0, "ownership": { diff --git a/src/packs/communities/feature_Nomadic_Pack_2RSrQouA2zEJ5Xee.json b/src/packs/communities/feature_Nomadic_Pack_2RSrQouA2zEJ5Xee.json index 605c9d7d..b2f8eeb3 100644 --- a/src/packs/communities/feature_Nomadic_Pack_2RSrQouA2zEJ5Xee.json +++ b/src/packs/communities/feature_Nomadic_Pack_2RSrQouA2zEJ5Xee.json @@ -17,7 +17,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -41,7 +40,12 @@ }, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 34, + "artist": "" + } }, "effects": [], "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754010247432, - "modifiedTime": 1754010247432, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394951501, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "sort": 0, "ownership": { diff --git a/src/packs/communities/feature_Privilege_C7NR6qRatawZusmg.json b/src/packs/communities/feature_Privilege_C7NR6qRatawZusmg.json index 20f015b2..a3d9912a 100644 --- a/src/packs/communities/feature_Privilege_C7NR6qRatawZusmg.json +++ b/src/packs/communities/feature_Privilege_C7NR6qRatawZusmg.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 32, + "artist": "" + } }, "effects": [ { @@ -82,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754010247432, - "modifiedTime": 1754010247432, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394874830, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "sort": 0, "ownership": { diff --git a/src/packs/communities/feature_Scoundrel_ZmEuBdL0JrvuA8le.json b/src/packs/communities/feature_Scoundrel_ZmEuBdL0JrvuA8le.json index b5618477..1dd3db4f 100644 --- a/src/packs/communities/feature_Scoundrel_ZmEuBdL0JrvuA8le.json +++ b/src/packs/communities/feature_Scoundrel_ZmEuBdL0JrvuA8le.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 33, + "artist": "" + } }, "effects": [ { @@ -82,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754010247432, - "modifiedTime": 1754010247432, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394919483, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "sort": 0, "ownership": { diff --git a/src/packs/communities/feature_Steady_DYmmr5CknLtHnwuj.json b/src/packs/communities/feature_Steady_DYmmr5CknLtHnwuj.json index 713f8f53..f3690651 100644 --- a/src/packs/communities/feature_Steady_DYmmr5CknLtHnwuj.json +++ b/src/packs/communities/feature_Steady_DYmmr5CknLtHnwuj.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 33, + "artist": "" + } }, "effects": [ { @@ -82,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754010247432, - "modifiedTime": 1754010247432, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394904715, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "sort": 0, "ownership": { diff --git a/src/packs/communities/feature_Well_Read_JBZJmywisJg5X3tH.json b/src/packs/communities/feature_Well_Read_JBZJmywisJg5X3tH.json index 7fd9e397..7ef972a2 100644 --- a/src/packs/communities/feature_Well_Read_JBZJmywisJg5X3tH.json +++ b/src/packs/communities/feature_Well_Read_JBZJmywisJg5X3tH.json @@ -10,7 +10,12 @@ "actions": {}, "originItemType": null, "subType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 32, + "artist": "" + } }, "effects": [ { @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754010247432, - "modifiedTime": 1754010247432, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755394887664, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "sort": 0, "ownership": { diff --git a/src/packs/domains/domainCard_A_Soldier_s_Bond_Y08dLFuPXsgeRrHi.json b/src/packs/domains/domainCard_A_Soldier_s_Bond_Y08dLFuPXsgeRrHi.json index 2177b496..f84e8113 100644 --- a/src/packs/domains/domainCard_A_Soldier_s_Bond_Y08dLFuPXsgeRrHi.json +++ b/src/packs/domains/domainCard_A_Soldier_s_Bond_Y08dLFuPXsgeRrHi.json @@ -78,6 +78,11 @@ "img": "icons/magic/light/beam-rays-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -85,12 +90,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784407, - "modifiedTime": 1754304308103, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428101583, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Y08dLFuPXsgeRrHi", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Adjust_Reality_Zp2S2EnLS5Iv3XuT.json b/src/packs/domains/domainCard_Adjust_Reality_Zp2S2EnLS5Iv3XuT.json index 142f6f42..051e27f0 100644 --- a/src/packs/domains/domainCard_Adjust_Reality_Zp2S2EnLS5Iv3XuT.json +++ b/src/packs/domains/domainCard_Adjust_Reality_Zp2S2EnLS5Iv3XuT.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 5, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,6 +41,11 @@ "img": "icons/magic/fire/flame-burning-hand-purple.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784408, - "modifiedTime": 1754254353257, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755428058189, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Zp2S2EnLS5Iv3XuT", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Arcana_Touched_5PvMQKCjrgSxzstn.json b/src/packs/domains/domainCard_Arcana_Touched_5PvMQKCjrgSxzstn.json index 64c03215..c614a86e 100644 --- a/src/packs/domains/domainCard_Arcana_Touched_5PvMQKCjrgSxzstn.json +++ b/src/packs/domains/domainCard_Arcana_Touched_5PvMQKCjrgSxzstn.json @@ -21,15 +21,15 @@ "type": "effect", "_id": "hBh4Lt0Bdd9CtJY7", "systemPath": "actions", - "description": "

Once per rest, you can switch the results of your Hope and Fear Dice.

", + "description": "

Once per rest, you can switch the results of your Hope and Fear Dice.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": false, - "key": "5PvMQKCjrgSxzstn", + "key": "resource", + "itemId": "5PvMQKCjrgSxzstn", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -49,6 +49,11 @@ "img": "icons/commodities/gems/gem-faceted-octagon-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" } }, "flags": {}, @@ -56,12 +61,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784408, - "modifiedTime": 1754253919218, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575261, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "5PvMQKCjrgSxzstn", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Arcane_Reflection_JzSvxy9Mu3RJp1jV.json b/src/packs/domains/domainCard_Arcane_Reflection_JzSvxy9Mu3RJp1jV.json index 1bf40321..d9f887c6 100644 --- a/src/packs/domains/domainCard_Arcane_Reflection_JzSvxy9Mu3RJp1jV.json +++ b/src/packs/domains/domainCard_Arcane_Reflection_JzSvxy9Mu3RJp1jV.json @@ -23,7 +23,6 @@ "key": "hope", "value": 1, "step": 1, - "keyIsID": false, "consumeOnSuccess": false } ], @@ -66,6 +65,11 @@ "img": "icons/magic/defensive/barrier-shield-dome-deflect-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" } }, "flags": {}, @@ -73,12 +77,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784409, - "modifiedTime": 1754254134197, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755428031621, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "JzSvxy9Mu3RJp1jV", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Armorer_cy8GjBPGc9w9RaGO.json b/src/packs/domains/domainCard_Armorer_cy8GjBPGc9w9RaGO.json index cc33310b..023c6ee8 100644 --- a/src/packs/domains/domainCard_Armorer_cy8GjBPGc9w9RaGO.json +++ b/src/packs/domains/domainCard_Armorer_cy8GjBPGc9w9RaGO.json @@ -77,6 +77,11 @@ "img": "icons/tools/hand/hammer-and-nail.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" } }, "flags": {}, @@ -84,12 +89,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784409, - "modifiedTime": 1754241866049, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429881876, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "cy8GjBPGc9w9RaGO", "sort": 3400000, @@ -125,7 +130,7 @@ "startRound": null, "startTurn": null }, - "description": "

While you’re wearing armor, gain a +1 bonus to your Armor Score.

", + "description": "

While you’re wearing armor, gain a +1 bonus to your Armor Score.

", "origin": null, "tint": "#ffffff", "transfer": true, diff --git a/src/packs/domains/domainCard_Astral_Projection_YNOCNmZ96sCp9NEr.json b/src/packs/domains/domainCard_Astral_Projection_YNOCNmZ96sCp9NEr.json index a82eb0e7..619ab731 100644 --- a/src/packs/domains/domainCard_Astral_Projection_YNOCNmZ96sCp9NEr.json +++ b/src/packs/domains/domainCard_Astral_Projection_YNOCNmZ96sCp9NEr.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -40,6 +39,11 @@ "img": "icons/magic/perception/orb-crystal-ball-scrying.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -47,12 +51,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784409, - "modifiedTime": 1754342271751, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429240862, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "YNOCNmZ96sCp9NEr", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Banish_AIbHfryMA2Rvs1ut.json b/src/packs/domains/domainCard_Banish_AIbHfryMA2Rvs1ut.json index 403a8286..ce7669d5 100644 --- a/src/packs/domains/domainCard_Banish_AIbHfryMA2Rvs1ut.json +++ b/src/packs/domains/domainCard_Banish_AIbHfryMA2Rvs1ut.json @@ -63,6 +63,11 @@ "max": "1", "icon": "fa-solid fa-hand-sparkles", "recovery": "shortRest" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 125, + "artist": "" } }, "flags": {}, @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784411, - "modifiedTime": 1754240991601, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429055116, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "AIbHfryMA2Rvs1ut", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Bare_Bones_l5D9kq901JDESaXw.json b/src/packs/domains/domainCard_Bare_Bones_l5D9kq901JDESaXw.json index 181e994a..0509faff 100644 --- a/src/packs/domains/domainCard_Bare_Bones_l5D9kq901JDESaXw.json +++ b/src/packs/domains/domainCard_Bare_Bones_l5D9kq901JDESaXw.json @@ -11,19 +11,24 @@ "type": "ability", "resource": null, "actions": {}, - "inVault": false + "inVault": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754067006722, - "modifiedTime": 1754337008196, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429823165, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "effects": [], "ownership": { diff --git a/src/packs/domains/domainCard_Battle_Cry_Ef1JsUG50LIoKx2F.json b/src/packs/domains/domainCard_Battle_Cry_Ef1JsUG50LIoKx2F.json index e3c74f7e..be928940 100644 --- a/src/packs/domains/domainCard_Battle_Cry_Ef1JsUG50LIoKx2F.json +++ b/src/packs/domains/domainCard_Battle_Cry_Ef1JsUG50LIoKx2F.json @@ -108,6 +108,11 @@ "img": "icons/magic/control/buff-flight-wings-runes-purple.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -115,12 +120,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784413, - "modifiedTime": 1754304622040, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428179279, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Ef1JsUG50LIoKx2F", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Battle_Hardened_NeEOghgfyDUBTwBG.json b/src/packs/domains/domainCard_Battle_Hardened_NeEOghgfyDUBTwBG.json index ccd46389..3b804ddf 100644 --- a/src/packs/domains/domainCard_Battle_Hardened_NeEOghgfyDUBTwBG.json +++ b/src/packs/domains/domainCard_Battle_Hardened_NeEOghgfyDUBTwBG.json @@ -78,6 +78,11 @@ "img": "icons/magic/life/heart-cross-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -85,12 +90,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784415, - "modifiedTime": 1754304541810, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428149693, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "NeEOghgfyDUBTwBG", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Battle_Monster_P0ezScyQ5t8ruByf.json b/src/packs/domains/domainCard_Battle_Monster_P0ezScyQ5t8ruByf.json index 50cabbea..13178c37 100644 --- a/src/packs/domains/domainCard_Battle_Monster_P0ezScyQ5t8ruByf.json +++ b/src/packs/domains/domainCard_Battle_Monster_P0ezScyQ5t8ruByf.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 4, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,6 +41,11 @@ "img": "icons/magic/control/silhouette-aura-energy.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784414, - "modifiedTime": 1754304799641, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428207522, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "P0ezScyQ5t8ruByf", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Blade_Touched_Gb5bqpFSBiuBxUix.json b/src/packs/domains/domainCard_Blade_Touched_Gb5bqpFSBiuBxUix.json index 82a13070..f451d5cf 100644 --- a/src/packs/domains/domainCard_Blade_Touched_Gb5bqpFSBiuBxUix.json +++ b/src/packs/domains/domainCard_Blade_Touched_Gb5bqpFSBiuBxUix.json @@ -8,19 +8,24 @@ "domain": "blade", "recallCost": 1, "level": 7, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784416, - "modifiedTime": 1754304595818, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428164790, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Gb5bqpFSBiuBxUix", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Blink_Out_Qu0iA4s3Xov10Erd.json b/src/packs/domains/domainCard_Blink_Out_Qu0iA4s3Xov10Erd.json index 67fe9335..c069362d 100644 --- a/src/packs/domains/domainCard_Blink_Out_Qu0iA4s3Xov10Erd.json +++ b/src/packs/domains/domainCard_Blink_Out_Qu0iA4s3Xov10Erd.json @@ -23,7 +23,6 @@ "scalable": true, "key": "hope", "value": 1, - "keyIsID": false, "step": null } ], @@ -66,6 +65,11 @@ "img": "icons/magic/symbols/runes-star-orange-purple.webp", "range": "veryClose" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 119, + "artist": "" } }, "flags": {}, @@ -73,12 +77,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784416, - "modifiedTime": 1754253600839, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755427965888, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Qu0iA4s3Xov10Erd", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Body_Basher_aQz8jKkCd8M9aKMA.json b/src/packs/domains/domainCard_Body_Basher_aQz8jKkCd8M9aKMA.json index 763a4fe0..32d336ab 100644 --- a/src/packs/domains/domainCard_Body_Basher_aQz8jKkCd8M9aKMA.json +++ b/src/packs/domains/domainCard_Body_Basher_aQz8jKkCd8M9aKMA.json @@ -11,19 +11,24 @@ "type": "ability", "resource": null, "actions": {}, - "inVault": false + "inVault": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754067167343, - "modifiedTime": 1754241470721, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429841164, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "effects": [ { @@ -63,7 +68,7 @@ "startRound": null, "startTurn": null }, - "description": "

On a successful attack using a weapon with a Melee range, gain a bonus to your damage roll equal to your Strength.

", + "description": "

On a successful attack using a weapon with a Melee range, gain a bonus to your damage roll equal to your Strength.

", "origin": null, "tint": "#ffffff", "transfer": true, diff --git a/src/packs/domains/domainCard_Bold_Presence_tdsL00yTSLNgZWs6.json b/src/packs/domains/domainCard_Bold_Presence_tdsL00yTSLNgZWs6.json index 9c767f34..2c80d1d5 100644 --- a/src/packs/domains/domainCard_Bold_Presence_tdsL00yTSLNgZWs6.json +++ b/src/packs/domains/domainCard_Bold_Presence_tdsL00yTSLNgZWs6.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 1, - "keyIsID": false, "step": null } ], @@ -43,7 +42,7 @@ }, "name": "Spend Hope", "img": "icons/magic/holy/barrier-shield-winged-blue.webp", - "range": "" + "range": "self" }, "OdRTXMOXhZFiZHES": { "type": "effect", @@ -67,6 +66,11 @@ "img": "icons/skills/wounds/blood-cells-disease-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" } }, "flags": {}, @@ -74,12 +78,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784418, - "modifiedTime": 1754241531537, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756038980509, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "tdsL00yTSLNgZWs6", "sort": 3400000, @@ -88,7 +92,7 @@ "name": "Bold Presence", "img": "icons/magic/holy/barrier-shield-winged-blue.webp", "origin": "Compendium.daggerheart.domains.Item.tdsL00yTSLNgZWs6", - "transfer": true, + "transfer": false, "_id": "2XEYhuAcRGTtqvED", "type": "base", "system": { @@ -107,7 +111,7 @@ "priority": null } ], - "disabled": true, + "disabled": false, "duration": { "startTime": null, "combat": null, @@ -126,12 +130,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754241531511, - "modifiedTime": 1754241605959, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756038989398, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items.effects!tdsL00yTSLNgZWs6.2XEYhuAcRGTtqvED" } diff --git a/src/packs/domains/domainCard_Bolt_Beacon_BNevJyGk7hmN7XOY.json b/src/packs/domains/domainCard_Bolt_Beacon_BNevJyGk7hmN7XOY.json index aa4552c5..8921de7d 100644 --- a/src/packs/domains/domainCard_Bolt_Beacon_BNevJyGk7hmN7XOY.json +++ b/src/packs/domains/domainCard_Bolt_Beacon_BNevJyGk7hmN7XOY.json @@ -14,7 +14,7 @@ "type": "attack", "_id": "zrGLlwmpuUIBrSXy", "systemPath": "actions", - "description": "

Make a Spellcast Roll against a target within Far range. On a success, spend a Hope to send a bolt of shimmering light toward them, dealing d8+2 magic damage using your Proficiency. The target becomes temporarily Vulnerable and glows brightly until this condition is cleared.

", + "description": "

Make a Spellcast Roll against a target within Far range. On a success, spend a Hope to send a bolt of shimmering light toward them, dealing d8+2 magic damage using your Proficiency. The target becomes temporarily Vulnerable and glows brightly until this condition is cleared.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -23,7 +23,6 @@ "scalable": false, "key": "hope", "value": 1, - "keyIsID": false, "step": null } ], @@ -96,6 +95,11 @@ "img": "icons/magic/light/beam-horizon-strike-yellow.webp", "range": "far" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 132, + "artist": "" } }, "flags": {}, @@ -103,12 +107,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784418, - "modifiedTime": 1754269150878, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429657284, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "BNevJyGk7hmN7XOY", "sort": 3400000, @@ -139,7 +143,7 @@ "startRound": null, "startTurn": null }, - "description": "

Temporarily Vulnerable and glows brightly until this condition is cleared.

", + "description": "

Temporarily Vulnerable and glows brightly until this condition is cleared.

", "tint": "#ffffff", "statuses": [ "vulnerable" diff --git a/src/packs/domains/domainCard_Bone_Touched_ON5bvnoQBy0SYc9Y.json b/src/packs/domains/domainCard_Bone_Touched_ON5bvnoQBy0SYc9Y.json index 5932c284..922a77d9 100644 --- a/src/packs/domains/domainCard_Bone_Touched_ON5bvnoQBy0SYc9Y.json +++ b/src/packs/domains/domainCard_Bone_Touched_ON5bvnoQBy0SYc9Y.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,6 +41,11 @@ "img": "icons/magic/holy/barrier-shield-winged-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784419, - "modifiedTime": 1754252494658, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428331915, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ON5bvnoQBy0SYc9Y", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Ava_YtZzYBtR0yLPPA93.json b/src/packs/domains/domainCard_Book_of_Ava_YtZzYBtR0yLPPA93.json index 2c18114e..0c460a1d 100644 --- a/src/packs/domains/domainCard_Book_of_Ava_YtZzYBtR0yLPPA93.json +++ b/src/packs/domains/domainCard_Book_of_Ava_YtZzYBtR0yLPPA93.json @@ -92,7 +92,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -237,6 +236,11 @@ "img": "icons/magic/water/projectile-icecicle.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 124, + "artist": "" } }, "flags": {}, @@ -244,12 +248,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784419, - "modifiedTime": 1754228833533, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428973862, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "YtZzYBtR0yLPPA93", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Exota_oVs2MSC6Uf5GbgEG.json b/src/packs/domains/domainCard_Book_of_Exota_oVs2MSC6Uf5GbgEG.json index a3808a31..611c71cb 100644 --- a/src/packs/domains/domainCard_Book_of_Exota_oVs2MSC6Uf5GbgEG.json +++ b/src/packs/domains/domainCard_Book_of_Exota_oVs2MSC6Uf5GbgEG.json @@ -66,7 +66,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -160,6 +159,11 @@ "img": "icons/creatures/magical/construct-golem-stone-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 124, + "artist": "" } }, "flags": {}, @@ -167,12 +171,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784420, - "modifiedTime": 1754240355163, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429022342, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "oVs2MSC6Uf5GbgEG", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json b/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json index 4b04f076..83974d28 100644 --- a/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json +++ b/src/packs/domains/domainCard_Book_of_Grynn_R0LNheiZycZlZzV3.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -136,6 +135,11 @@ "img": "icons/magic/fire/barrier-wall-flame-ring-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 125, + "artist": "" } }, "flags": {}, @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784420, - "modifiedTime": 1754240392592, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429032715, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "R0LNheiZycZlZzV3", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Homet_gFMx08ogQ8hS2Obi.json b/src/packs/domains/domainCard_Book_of_Homet_gFMx08ogQ8hS2Obi.json index 6869c1f0..94ff8ca7 100644 --- a/src/packs/domains/domainCard_Book_of_Homet_gFMx08ogQ8hS2Obi.json +++ b/src/packs/domains/domainCard_Book_of_Homet_gFMx08ogQ8hS2Obi.json @@ -105,19 +105,24 @@ "range": "" } }, - "resource": null + "resource": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 125, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784421, - "modifiedTime": 1754240751151, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429070054, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "gFMx08ogQ8hS2Obi", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Illiat_df4iRqQzRntrF6Qw.json b/src/packs/domains/domainCard_Book_of_Illiat_df4iRqQzRntrF6Qw.json index 91943faf..1d4084d6 100644 --- a/src/packs/domains/domainCard_Book_of_Illiat_df4iRqQzRntrF6Qw.json +++ b/src/packs/domains/domainCard_Book_of_Illiat_df4iRqQzRntrF6Qw.json @@ -73,8 +73,7 @@ "scalable": true, "key": "hope", "value": 1, - "step": 1, - "keyIsID": false + "step": 1 } ], "uses": { @@ -129,7 +128,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -155,6 +153,11 @@ "img": "icons/magic/perception/third-eye-blue-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 124, + "artist": "" } }, "flags": {}, @@ -162,12 +165,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784421, - "modifiedTime": 1754228842497, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428980637, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "df4iRqQzRntrF6Qw", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json b/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json index d3fdb94f..d2e80c21 100644 --- a/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json +++ b/src/packs/domains/domainCard_Book_of_Korvax_cWRFHJdxEZ0M1dAg.json @@ -65,7 +65,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -122,7 +121,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -171,6 +169,11 @@ "img": "icons/magic/symbols/runes-star-pentagon-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 124, + "artist": "" } }, "flags": {}, @@ -178,12 +181,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784423, - "modifiedTime": 1754230131429, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429006130, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "cWRFHJdxEZ0M1dAg", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json b/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json index 70d1fc79..4db3e78f 100644 --- a/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json +++ b/src/packs/domains/domainCard_Book_of_Norai_WtwSWXTRZa7QVvmo.json @@ -160,6 +160,11 @@ "img": "icons/magic/fire/explosion-fireball-large-red-orange.webp", "range": "veryFar" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 124, + "artist": "" } }, "flags": {}, @@ -167,12 +172,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784423, - "modifiedTime": 1754231026933, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429011603, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "WtwSWXTRZa7QVvmo", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Ronin_SZMNR3uGNinJcN4N.json b/src/packs/domains/domainCard_Book_of_Ronin_SZMNR3uGNinJcN4N.json index 7c0ecab0..862d5da9 100644 --- a/src/packs/domains/domainCard_Book_of_Ronin_SZMNR3uGNinJcN4N.json +++ b/src/packs/domains/domainCard_Book_of_Ronin_SZMNR3uGNinJcN4N.json @@ -28,7 +28,7 @@ "includeBase": false }, "target": { - "type": "any", + "type": "self", "amount": null }, "effects": [ @@ -59,7 +59,7 @@ }, "name": "Transform", "img": "icons/containers/barrels/barrel-reinforced-cherry-brown.webp", - "range": "" + "range": "self" }, "h7i4ZuDYuYLnjze6": { "type": "attack", @@ -112,6 +112,11 @@ "img": "icons/magic/unholy/hand-light-green.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -119,12 +124,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784424, - "modifiedTime": 1754233533128, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756038121293, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "SZMNR3uGNinJcN4N", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Sitil_eq8VNqYMRHhF9xw9.json b/src/packs/domains/domainCard_Book_of_Sitil_eq8VNqYMRHhF9xw9.json index 594c34e1..1002b85c 100644 --- a/src/packs/domains/domainCard_Book_of_Sitil_eq8VNqYMRHhF9xw9.json +++ b/src/packs/domains/domainCard_Book_of_Sitil_eq8VNqYMRHhF9xw9.json @@ -30,12 +30,12 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Adjust Appearance", "img": "icons/magic/defensive/shield-barrier-blades-teal.webp", - "range": "" + "range": "self" }, "wBQkw3P4Esj6kOx2": { "type": "effect", @@ -49,7 +49,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null } ], @@ -118,6 +117,11 @@ "img": "icons/magic/control/silhouette-hold-change-green.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 124, + "artist": "" } }, "flags": {}, @@ -125,12 +129,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784424, - "modifiedTime": 1754229292338, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756037990822, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "eq8VNqYMRHhF9xw9", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Tyfar_1VXzwRbvbBj5bd5V.json b/src/packs/domains/domainCard_Book_of_Tyfar_1VXzwRbvbBj5bd5V.json index ed29fd87..e974f58a 100644 --- a/src/packs/domains/domainCard_Book_of_Tyfar_1VXzwRbvbBj5bd5V.json +++ b/src/packs/domains/domainCard_Book_of_Tyfar_1VXzwRbvbBj5bd5V.json @@ -176,6 +176,11 @@ "img": "icons/magic/air/fog-gas-smoke-dense-gray.webp", "range": "veryClose" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 124, + "artist": "" } }, "flags": {}, @@ -183,12 +188,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784426, - "modifiedTime": 1754241041570, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428986804, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "1VXzwRbvbBj5bd5V", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Vagras_aknDDYtN7EObv94t.json b/src/packs/domains/domainCard_Book_of_Vagras_aknDDYtN7EObv94t.json index a54f4c5f..1e3b3bf4 100644 --- a/src/packs/domains/domainCard_Book_of_Vagras_aknDDYtN7EObv94t.json +++ b/src/packs/domains/domainCard_Book_of_Vagras_aknDDYtN7EObv94t.json @@ -70,7 +70,6 @@ "scalable": false, "key": "hope", "value": 1, - "keyIsID": false, "step": null } ], @@ -158,6 +157,11 @@ "img": "icons/magic/perception/orb-crystal-ball-scrying-blue.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 124, + "artist": "" } }, "flags": {}, @@ -165,12 +169,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784427, - "modifiedTime": 1754240299795, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428999015, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "aknDDYtN7EObv94t", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Vyola_VOIgm2j2Ijszwc5m.json b/src/packs/domains/domainCard_Book_of_Vyola_VOIgm2j2Ijszwc5m.json index e9c8dacf..9ecf339a 100644 --- a/src/packs/domains/domainCard_Book_of_Vyola_VOIgm2j2Ijszwc5m.json +++ b/src/packs/domains/domainCard_Book_of_Vyola_VOIgm2j2Ijszwc5m.json @@ -65,7 +65,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -91,6 +90,11 @@ "img": "icons/magic/control/energy-stream-link-large-teal.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 125, + "artist": "" } }, "flags": {}, @@ -98,12 +102,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784427, - "modifiedTime": 1754233138291, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429085107, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "VOIgm2j2Ijszwc5m", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json b/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json index 4e1cdaf6..2896a467 100644 --- a/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json +++ b/src/packs/domains/domainCard_Book_of_Yarrow_J1ovx2FpNDvPq1o6.json @@ -68,7 +68,6 @@ "scalable": false, "key": "hope", "value": 5, - "keyIsID": false, "step": null } ], @@ -89,8 +88,13 @@ }, "name": "Magic Immunity", "img": "icons/magic/defensive/barrier-shield-dome-deflect-teal.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -98,12 +102,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784429, - "modifiedTime": 1754234029921, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756038143042, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "J1ovx2FpNDvPq1o6", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Boost_VKAHS6eWz28ukcDs.json b/src/packs/domains/domainCard_Boost_VKAHS6eWz28ukcDs.json index d6438669..f4d69fcd 100644 --- a/src/packs/domains/domainCard_Boost_VKAHS6eWz28ukcDs.json +++ b/src/packs/domains/domainCard_Boost_VKAHS6eWz28ukcDs.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,6 +41,11 @@ "img": "icons/skills/movement/arrow-upward-yellow.webp", "range": "far" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784430, - "modifiedTime": 1754252472924, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428287690, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "VKAHS6eWz28ukcDs", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Brace_QXs4vssSqNGQu5b8.json b/src/packs/domains/domainCard_Brace_QXs4vssSqNGQu5b8.json index 4ac9fc40..c477f555 100644 --- a/src/packs/domains/domainCard_Brace_QXs4vssSqNGQu5b8.json +++ b/src/packs/domains/domainCard_Brace_QXs4vssSqNGQu5b8.json @@ -8,19 +8,24 @@ "domain": "bone", "recallCost": 1, "level": 3, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784431, - "modifiedTime": 1754249663994, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428272090, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "QXs4vssSqNGQu5b8", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Breaking_Blow_8UANBgSdhMZ0sqfO.json b/src/packs/domains/domainCard_Breaking_Blow_8UANBgSdhMZ0sqfO.json index 8f440bd9..a660200b 100644 --- a/src/packs/domains/domainCard_Breaking_Blow_8UANBgSdhMZ0sqfO.json +++ b/src/packs/domains/domainCard_Breaking_Blow_8UANBgSdhMZ0sqfO.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -41,12 +40,17 @@ ], "target": { "type": "any", - "amount": null + "amount": 1 }, "name": "Mark Stress", "img": "icons/skills/wounds/bone-broken-knee-beam.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784431, - "modifiedTime": 1754252500559, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756037935304, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "8UANBgSdhMZ0sqfO", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json b/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json index 84704d27..9193247f 100644 --- a/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json +++ b/src/packs/domains/domainCard_Chain_Lightning_0kAVO6rordCfZqYP.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 2, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -147,6 +146,11 @@ "img": "icons/magic/lightning/bolt-forked-large-magenta.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 119, + "artist": "" } }, "flags": {}, @@ -154,12 +158,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784433, - "modifiedTime": 1754253714828, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755427978632, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "0kAVO6rordCfZqYP", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Champion_s_Edge_rnejRbUQsNGX1GMC.json b/src/packs/domains/domainCard_Champion_s_Edge_rnejRbUQsNGX1GMC.json index f0ffe8f8..48c35a57 100644 --- a/src/packs/domains/domainCard_Champion_s_Edge_rnejRbUQsNGX1GMC.json +++ b/src/packs/domains/domainCard_Champion_s_Edge_rnejRbUQsNGX1GMC.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -96,7 +95,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -173,7 +171,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -228,6 +225,11 @@ "img": "icons/skills/melee/strike-axe-blood-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -235,12 +237,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784433, - "modifiedTime": 1754304490701, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428137797, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "rnejRbUQsNGX1GMC", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Chokehold_R5GYUalYXLLFRlNl.json b/src/packs/domains/domainCard_Chokehold_R5GYUalYXLLFRlNl.json index f68ba80c..74a862b8 100644 --- a/src/packs/domains/domainCard_Chokehold_R5GYUalYXLLFRlNl.json +++ b/src/packs/domains/domainCard_Chokehold_R5GYUalYXLLFRlNl.json @@ -14,7 +14,7 @@ "type": "effect", "_id": "QCMkze8rU0VB1VYL", "systemPath": "actions", - "description": "

When you position yourself behind a creature who’s about your size, you can mark a Stress to pull them into a chokehold, making them temporarily Vulnerable.

", + "description": "

When you position yourself behind a creature who’s about your size, you can mark a Stress to pull them into a chokehold, making them temporarily Vulnerable.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -57,7 +56,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -79,6 +77,11 @@ "img": "icons/magic/control/debuff-chains-shackle-movement-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" } }, "flags": {}, @@ -86,12 +89,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784434, - "modifiedTime": 1754173330136, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429320800, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "R5GYUalYXLLFRlNl", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Cinder_Grasp_5EP2Lgf7ojfrc0Is.json b/src/packs/domains/domainCard_Cinder_Grasp_5EP2Lgf7ojfrc0Is.json index ce88eb60..410bb313 100644 --- a/src/packs/domains/domainCard_Cinder_Grasp_5EP2Lgf7ojfrc0Is.json +++ b/src/packs/domains/domainCard_Cinder_Grasp_5EP2Lgf7ojfrc0Is.json @@ -143,6 +143,11 @@ "img": "icons/magic/fire/flame-burning-earth-orange.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 119, + "artist": "" } }, "flags": {}, @@ -150,12 +155,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784434, - "modifiedTime": 1754475145346, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755427937789, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "5EP2Lgf7ojfrc0Is", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Cloaking_Blast_Zhw7PtK8nMPlsOqD.json b/src/packs/domains/domainCard_Cloaking_Blast_Zhw7PtK8nMPlsOqD.json index 6b5f9ee9..a853cbcf 100644 --- a/src/packs/domains/domainCard_Cloaking_Blast_Zhw7PtK8nMPlsOqD.json +++ b/src/packs/domains/domainCard_Cloaking_Blast_Zhw7PtK8nMPlsOqD.json @@ -22,7 +22,6 @@ "scalable": true, "key": "hope", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -40,13 +39,18 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Become Cloaked", "img": "icons/magic/perception/shadow-stealth-eyes-purple.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" } }, "flags": {}, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784435, - "modifiedTime": 1754254076729, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756037373705, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "Zhw7PtK8nMPlsOqD", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Codex_Touched_7Pu83ABdMukTxu3e.json b/src/packs/domains/domainCard_Codex_Touched_7Pu83ABdMukTxu3e.json index 2e3caa80..e06b2cff 100644 --- a/src/packs/domains/domainCard_Codex_Touched_7Pu83ABdMukTxu3e.json +++ b/src/packs/domains/domainCard_Codex_Touched_7Pu83ABdMukTxu3e.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -67,6 +66,11 @@ "img": "icons/magic/symbols/star-inverted-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 125, + "artist": "" } }, "flags": {}, @@ -74,12 +78,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784435, - "modifiedTime": 1754232995094, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429075701, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "7Pu83ABdMukTxu3e", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Confusing_Aura_R8NDiJXJWmC48WSr.json b/src/packs/domains/domainCard_Confusing_Aura_R8NDiJXJWmC48WSr.json index ee91b2fc..1f4f8851 100644 --- a/src/packs/domains/domainCard_Confusing_Aura_R8NDiJXJWmC48WSr.json +++ b/src/packs/domains/domainCard_Confusing_Aura_R8NDiJXJWmC48WSr.json @@ -61,7 +61,7 @@ "type": "attack", "_id": "oB5tyd2a7bmcJJmm", "systemPath": "actions", - "description": "

Mark any number of Stress to make that many additional layers.

", + "description": "

Mark any number of Stress to make that many additional layers.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -70,7 +70,6 @@ "key": "stress", "value": 1, "step": 1, - "keyIsID": false, "consumeOnSuccess": false } ], @@ -117,6 +116,11 @@ "resource": { "type": "simple", "value": 0 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" } }, "flags": {}, @@ -124,12 +128,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784437, - "modifiedTime": 1754501480068, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428037022, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "R8NDiJXJWmC48WSr", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json b/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json index 87226a85..94ce7d3b 100644 --- a/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json +++ b/src/packs/domains/domainCard_Conjure_Swarm_rZPH0BY8Sznc9sFG.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -36,7 +35,7 @@ "includeBase": false }, "target": { - "type": "any", + "type": "self", "amount": null }, "effects": [ @@ -67,7 +66,7 @@ }, "name": "Tekaira's Armored Beetles: Stress", "img": "icons/creatures/invertebrates/wasp-swarm-attack.webp", - "range": "" + "range": "self" }, "533qzPIjcccpiMey": { "type": "effect", @@ -78,7 +77,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -112,7 +110,6 @@ "scalable": false, "key": "hope", "value": 1, - "keyIsID": false, "step": null } ], @@ -127,11 +124,12 @@ "resultBased": false, "value": { "custom": { - "enabled": false + "enabled": false, + "formula": "" }, "multiplier": "flat", "flatMultiplier": 2, - "dice": "d6", + "dice": "d8", "bonus": 3 }, "applyTo": "hitPoints", @@ -145,7 +143,8 @@ "dice": "d6", "bonus": null, "custom": { - "enabled": false + "enabled": false, + "formula": "" } } } @@ -181,6 +180,11 @@ "img": "icons/creatures/invertebrates/wasp-swarm-movement.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 130, + "artist": "" } }, "flags": {}, @@ -188,12 +192,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753922784438, - "modifiedTime": 1754338003443, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1761502767190, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_id": "rZPH0BY8Sznc9sFG", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Conjured_Steeds_Jkp6cMDiHHaBZQRS.json b/src/packs/domains/domainCard_Conjured_Steeds_Jkp6cMDiHHaBZQRS.json index 6c23ae92..6403e4ce 100644 --- a/src/packs/domains/domainCard_Conjured_Steeds_Jkp6cMDiHHaBZQRS.json +++ b/src/packs/domains/domainCard_Conjured_Steeds_Jkp6cMDiHHaBZQRS.json @@ -22,8 +22,7 @@ "scalable": true, "key": "hope", "value": 1, - "step": 1, - "keyIsID": false + "step": 1 } ], "uses": { @@ -45,6 +44,11 @@ "img": "icons/creatures/mammals/deer-movement-leap-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 131, + "artist": "" } }, "flags": {}, @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784438, - "modifiedTime": 1754339195316, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429572061, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Jkp6cMDiHHaBZQRS", "sort": 3400000, @@ -107,7 +111,7 @@ "startRound": null, "startTurn": null }, - "description": "

Creatures riding a steed gain a βˆ’2 penalty to attack rolls and a +2 bonus to damage rolls.

", + "description": "

Creatures riding a steed gain a βˆ’2 penalty to attack rolls and a +2 bonus to damage rolls.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Copycat_3A7LZ1xmDEMGa165.json b/src/packs/domains/domainCard_Copycat_3A7LZ1xmDEMGa165.json index 6e9762c6..2785ecaa 100644 --- a/src/packs/domains/domainCard_Copycat_3A7LZ1xmDEMGa165.json +++ b/src/packs/domains/domainCard_Copycat_3A7LZ1xmDEMGa165.json @@ -34,6 +34,11 @@ "img": "icons/magic/perception/hand-eye-black.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -41,12 +46,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784439, - "modifiedTime": 1754499898585, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429253976, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "3A7LZ1xmDEMGa165", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Corrosive_Projectile_qJaSNTuDfbPVr8Lb.json b/src/packs/domains/domainCard_Corrosive_Projectile_qJaSNTuDfbPVr8Lb.json index e5e4532f..12e36eb3 100644 --- a/src/packs/domains/domainCard_Corrosive_Projectile_qJaSNTuDfbPVr8Lb.json +++ b/src/packs/domains/domainCard_Corrosive_Projectile_qJaSNTuDfbPVr8Lb.json @@ -93,8 +93,7 @@ "scalable": true, "key": "stress", "value": 0, - "step": 2, - "keyIsID": false + "step": 2 } ], "uses": { @@ -116,6 +115,11 @@ "img": "icons/magic/acid/dissolve-bone-white.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 130, + "artist": "" } }, "flags": {}, @@ -123,12 +127,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784439, - "modifiedTime": 1754338276907, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429496161, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "qJaSNTuDfbPVr8Lb", "sort": 3400000, @@ -166,7 +170,7 @@ "startRound": null, "startTurn": null }, - "description": "

While a target is Corroded, they gain a βˆ’1 penalty to their Difficulty for every 2 Stress you spent. This condition can stack.

", + "description": "

While a target is Corroded, they gain a βˆ’1 penalty to their Difficulty for every 2 Stress you spent. This condition can stack.

", "tint": "#ffffff", "statuses": [ "corrode" diff --git a/src/packs/domains/domainCard_Counterspell_6dhqo1kzGxejCjHa.json b/src/packs/domains/domainCard_Counterspell_6dhqo1kzGxejCjHa.json index 63ed214d..80b4192e 100644 --- a/src/packs/domains/domainCard_Counterspell_6dhqo1kzGxejCjHa.json +++ b/src/packs/domains/domainCard_Counterspell_6dhqo1kzGxejCjHa.json @@ -14,7 +14,7 @@ "type": "attack", "_id": "SeOcGdKAc7egwg9H", "systemPath": "actions", - "description": "

You can interrupt a magical effect taking place by making a reaction roll using your Spellcast trait. On a success, the effect stops and any consequences are avoided, and this card is placed in your vault.

", + "description": "

You can interrupt a magical effect taking place by making a reaction roll using your Spellcast trait. On a success, the effect stops and any consequences are avoided, and this card is placed in your vault.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -57,6 +57,11 @@ "img": "icons/magic/control/hypnosis-mesmerism-watch.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 119, + "artist": "" } }, "flags": {}, @@ -64,12 +69,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784440, - "modifiedTime": 1754253523353, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755427950892, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "6dhqo1kzGxejCjHa", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Critical_Inspiration_ABp9pUfBS69NomTD.json b/src/packs/domains/domainCard_Critical_Inspiration_ABp9pUfBS69NomTD.json index ba3c5685..747eb272 100644 --- a/src/packs/domains/domainCard_Critical_Inspiration_ABp9pUfBS69NomTD.json +++ b/src/packs/domains/domainCard_Critical_Inspiration_ABp9pUfBS69NomTD.json @@ -51,6 +51,11 @@ "img": "icons/magic/light/hand-sparks-glow-yellow.webp", "range": "veryClose" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" } }, "flags": {}, @@ -58,12 +63,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784441, - "modifiedTime": 1754241711823, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429855659, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ABp9pUfBS69NomTD", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Cruel_Precision_bap1eCWryPNowbyo.json b/src/packs/domains/domainCard_Cruel_Precision_bap1eCWryPNowbyo.json index 8b142a56..352e1941 100644 --- a/src/packs/domains/domainCard_Cruel_Precision_bap1eCWryPNowbyo.json +++ b/src/packs/domains/domainCard_Cruel_Precision_bap1eCWryPNowbyo.json @@ -8,19 +8,24 @@ "domain": "bone", "recallCost": 1, "level": 7, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784442, - "modifiedTime": 1754252496659, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428338581, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "bap1eCWryPNowbyo", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Dark_Whispers_yL2qrSWmTwXVOySH.json b/src/packs/domains/domainCard_Dark_Whispers_yL2qrSWmTwXVOySH.json index 2e680a1a..019e4d51 100644 --- a/src/packs/domains/domainCard_Dark_Whispers_yL2qrSWmTwXVOySH.json +++ b/src/packs/domains/domainCard_Dark_Whispers_yL2qrSWmTwXVOySH.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -64,6 +63,11 @@ "img": "icons/magic/control/mouth-smile-deception-purple.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 129, + "artist": "" } }, "flags": {}, @@ -71,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784442, - "modifiedTime": 1754331078647, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429363025, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "yL2qrSWmTwXVOySH", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Deadly_Focus_xxZOXC4tiZQ6kg1e.json b/src/packs/domains/domainCard_Deadly_Focus_xxZOXC4tiZQ6kg1e.json index 62b40269..9246896d 100644 --- a/src/packs/domains/domainCard_Deadly_Focus_xxZOXC4tiZQ6kg1e.json +++ b/src/packs/domains/domainCard_Deadly_Focus_xxZOXC4tiZQ6kg1e.json @@ -26,18 +26,23 @@ }, "effects": [ { - "_id": "6sR46Hd554DiLHy4", + "_id": "TFWiAUDCfGaax5MU", "onSave": false } ], "target": { - "type": "any", - "amount": null + "type": "self", + "amount": 1 }, "name": "Focus", "img": "icons/skills/targeting/crosshair-pointed-orange.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -45,22 +50,22 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784443, - "modifiedTime": 1754304260916, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756037604544, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "xxZOXC4tiZQ6kg1e", "sort": 3400000, "effects": [ { "name": "Deadly Focus", - "img": "systems/daggerheart/assets/icons/domains/domain-card/blade.png", + "img": "icons/skills/targeting/crosshair-pointed-orange.webp", "origin": "Compendium.daggerheart.domains.Item.xxZOXC4tiZQ6kg1e", - "transfer": true, - "_id": "6sR46Hd554DiLHy4", + "transfer": false, + "_id": "TFWiAUDCfGaax5MU", "type": "base", "system": { "rangeDependence": { @@ -78,7 +83,7 @@ "priority": null } ], - "disabled": true, + "disabled": false, "duration": { "startTime": null, "combat": null, @@ -88,7 +93,7 @@ "startRound": null, "startTurn": null }, - "description": "", + "description": "

Until you attack another creature, you defeat the target, or the battle ends, gain a +1 bonus to your Proficiency.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -97,14 +102,14 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", - "createdTime": 1754244951545, - "modifiedTime": 1754304242570, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "systemVersion": "1.1.0", + "createdTime": 1756037548255, + "modifiedTime": 1756037588317, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, - "_key": "!items.effects!xxZOXC4tiZQ6kg1e.6sR46Hd554DiLHy4" + "_key": "!items.effects!xxZOXC4tiZQ6kg1e.TFWiAUDCfGaax5MU" } ], "ownership": { diff --git a/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json b/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json index 4341f03f..437100da 100644 --- a/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json +++ b/src/packs/domains/domainCard_Death_Grip_x0FVGE1YbfXalJiw.json @@ -216,6 +216,11 @@ "img": "icons/magic/nature/root-vine-beanstalk-moon.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 130, + "artist": "" } }, "flags": {}, @@ -223,12 +228,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784444, - "modifiedTime": 1754338651654, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429513441, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "x0FVGE1YbfXalJiw", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Deathrun_xFOSn8IVVNizgHFq.json b/src/packs/domains/domainCard_Deathrun_xFOSn8IVVNizgHFq.json index 4d415f76..8d6ea214 100644 --- a/src/packs/domains/domainCard_Deathrun_xFOSn8IVVNizgHFq.json +++ b/src/packs/domains/domainCard_Deathrun_xFOSn8IVVNizgHFq.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -42,6 +41,11 @@ "img": "icons/magic/movement/trail-streak-zigzag-yellow.webp", "range": "far" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784445, - "modifiedTime": 1754252515126, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428374555, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "xFOSn8IVVNizgHFq", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Deft_Deceiver_38znCh6kHTkaPwYi.json b/src/packs/domains/domainCard_Deft_Deceiver_38znCh6kHTkaPwYi.json index 0ac724a6..1e971dd9 100644 --- a/src/packs/domains/domainCard_Deft_Deceiver_38znCh6kHTkaPwYi.json +++ b/src/packs/domains/domainCard_Deft_Deceiver_38znCh6kHTkaPwYi.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -45,6 +44,11 @@ "img": "icons/magic/life/heart-pink.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784445, - "modifiedTime": 1754340779197, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429137161, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "38znCh6kHTkaPwYi", "sort": 3400000, @@ -95,7 +99,7 @@ "startRound": null, "startTurn": null }, - "description": "

Gain advantage on a roll to deceive or trick someone into believing a lie you tell them.

", + "description": "

Gain advantage on a roll to deceive or trick someone into believing a lie you tell them.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Deft_Maneuvers_dc4rAXlv95srZUct.json b/src/packs/domains/domainCard_Deft_Maneuvers_dc4rAXlv95srZUct.json index bdf4cbd0..ae4932bf 100644 --- a/src/packs/domains/domainCard_Deft_Maneuvers_dc4rAXlv95srZUct.json +++ b/src/packs/domains/domainCard_Deft_Maneuvers_dc4rAXlv95srZUct.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -47,6 +46,11 @@ "img": "icons/skills/movement/arrow-upward-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" } }, "flags": {}, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784446, - "modifiedTime": 1754249648390, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428242266, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "dc4rAXlv95srZUct", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Disintegration_Wave_kja5qvh4rdeDBB96.json b/src/packs/domains/domainCard_Disintegration_Wave_kja5qvh4rdeDBB96.json index cf5c2cc0..1f229fca 100644 --- a/src/packs/domains/domainCard_Disintegration_Wave_kja5qvh4rdeDBB96.json +++ b/src/packs/domains/domainCard_Disintegration_Wave_kja5qvh4rdeDBB96.json @@ -58,19 +58,24 @@ "range": "far" } }, - "resource": null + "resource": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784447, - "modifiedTime": 1754240832214, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429109019, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "kja5qvh4rdeDBB96", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Divination_K8oFepK24UVsAX8B.json b/src/packs/domains/domainCard_Divination_K8oFepK24UVsAX8B.json index 0c7e5530..4c0a599d 100644 --- a/src/packs/domains/domainCard_Divination_K8oFepK24UVsAX8B.json +++ b/src/packs/domains/domainCard_Divination_K8oFepK24UVsAX8B.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,6 +41,11 @@ "img": "icons/skills/trades/academics-astronomy-navigation-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 132, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784448, - "modifiedTime": 1754269593038, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429706201, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "K8oFepK24UVsAX8B", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Earthquake_C0qLOwSSvZ6PG3Ws.json b/src/packs/domains/domainCard_Earthquake_C0qLOwSSvZ6PG3Ws.json index 6b8cc8b1..e0441289 100644 --- a/src/packs/domains/domainCard_Earthquake_C0qLOwSSvZ6PG3Ws.json +++ b/src/packs/domains/domainCard_Earthquake_C0qLOwSSvZ6PG3Ws.json @@ -19,12 +19,12 @@ "actionType": "action", "cost": [ { - "consumeOnSuccess": true, - "scalable": false, - "key": "C0qLOwSSvZ6PG3Ws", + "key": "resource", + "itemId": "C0qLOwSSvZ6PG3Ws", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": true } ], "uses": { @@ -99,19 +99,24 @@ "range": "veryFar" } }, - "resource": null + "resource": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784449, - "modifiedTime": 1754501560924, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756325575299, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "C0qLOwSSvZ6PG3Ws", "sort": 3400000, @@ -142,7 +147,7 @@ "startRound": null, "startTurn": null }, - "description": "

Temporarily Vulnerable.

", + "description": "

Temporarily Vulnerable.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json b/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json index 855d336e..6bc6a040 100644 --- a/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json +++ b/src/packs/domains/domainCard_Eclipse_62Sj67PdPFzwWVe3.json @@ -114,6 +114,11 @@ "img": "icons/skills/wounds/anatomy-organ-brain-pink-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 129, + "artist": "" } }, "flags": {}, @@ -121,12 +126,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784449, - "modifiedTime": 1754331279468, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429426240, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "62Sj67PdPFzwWVe3", "sort": 3400000, @@ -164,7 +169,7 @@ "startRound": null, "startTurn": null }, - "description": "

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

", + "description": "

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

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Encore_klahWDFwihqqEhXP.json b/src/packs/domains/domainCard_Encore_klahWDFwihqqEhXP.json index 43b6cf22..ef4eb1ad 100644 --- a/src/packs/domains/domainCard_Encore_klahWDFwihqqEhXP.json +++ b/src/packs/domains/domainCard_Encore_klahWDFwihqqEhXP.json @@ -56,6 +56,11 @@ "img": "icons/magic/light/explosion-impact-purple.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -63,12 +68,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784450, - "modifiedTime": 1754342166865, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429267094, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "klahWDFwihqqEhXP", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Endless_Charisma_tNzFNlVHghloKsFi.json b/src/packs/domains/domainCard_Endless_Charisma_tNzFNlVHghloKsFi.json index a226b952..0277175a 100644 --- a/src/packs/domains/domainCard_Endless_Charisma_tNzFNlVHghloKsFi.json +++ b/src/packs/domains/domainCard_Endless_Charisma_tNzFNlVHghloKsFi.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -40,6 +39,11 @@ "img": "icons/sundries/gaming/dice-runed-tan.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -47,12 +51,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784450, - "modifiedTime": 1754341790725, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429228458, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "tNzFNlVHghloKsFi", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Enrapture_a8lFiKX1o8T924ze.json b/src/packs/domains/domainCard_Enrapture_a8lFiKX1o8T924ze.json index fc87d922..a933e609 100644 --- a/src/packs/domains/domainCard_Enrapture_a8lFiKX1o8T924ze.json +++ b/src/packs/domains/domainCard_Enrapture_a8lFiKX1o8T924ze.json @@ -73,7 +73,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -121,6 +120,11 @@ "img": "icons/commodities/gems/gem-faceted-navette-red.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -128,12 +132,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784451, - "modifiedTime": 1754500747453, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429143444, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "a8lFiKX1o8T924ze", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json b/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json index fd032d37..f827cd09 100644 --- a/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json +++ b/src/packs/domains/domainCard_Falling_Sky_hZJp9mdkMnqKDROe.json @@ -23,8 +23,7 @@ "scalable": true, "key": "stress", "value": 1, - "step": 1, - "keyIsID": false + "step": 1 } ], "uses": { @@ -92,6 +91,11 @@ "img": "icons/magic/light/projectiles-star-purple.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" } }, "flags": {}, @@ -99,12 +103,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784452, - "modifiedTime": 1754501517016, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428063874, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "hZJp9mdkMnqKDROe", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Fane_of_the_Wilds_F2m9wvZ3v5c3yCtv.json b/src/packs/domains/domainCard_Fane_of_the_Wilds_F2m9wvZ3v5c3yCtv.json index 05477e79..a2c18ba5 100644 --- a/src/packs/domains/domainCard_Fane_of_the_Wilds_F2m9wvZ3v5c3yCtv.json +++ b/src/packs/domains/domainCard_Fane_of_the_Wilds_F2m9wvZ3v5c3yCtv.json @@ -15,6 +15,11 @@ "recovery": "longRest", "max": "", "icon": "" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 131, + "artist": "" } }, "flags": {}, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784452, - "modifiedTime": 1754336327302, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429617500, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "F2m9wvZ3v5c3yCtv", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Ferocity_jSQsSP61CX4MhSN7.json b/src/packs/domains/domainCard_Ferocity_jSQsSP61CX4MhSN7.json index feb74897..483c6a7d 100644 --- a/src/packs/domains/domainCard_Ferocity_jSQsSP61CX4MhSN7.json +++ b/src/packs/domains/domainCard_Ferocity_jSQsSP61CX4MhSN7.json @@ -33,6 +33,11 @@ "img": "icons/skills/melee/maneuver-daggers-paired-orange.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" } }, "flags": {}, @@ -40,12 +45,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784453, - "modifiedTime": 1754249658710, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428260608, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "jSQsSP61CX4MhSN7", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Final_Words_Nbw6Jnh1vRZzwHQI.json b/src/packs/domains/domainCard_Final_Words_Nbw6Jnh1vRZzwHQI.json index 61cd64e6..17f4c969 100644 --- a/src/packs/domains/domainCard_Final_Words_Nbw6Jnh1vRZzwHQI.json +++ b/src/packs/domains/domainCard_Final_Words_Nbw6Jnh1vRZzwHQI.json @@ -57,6 +57,11 @@ "img": "icons/magic/death/undead-skeleton-fire-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 132, + "artist": "" } }, "flags": {}, @@ -64,12 +69,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784454, - "modifiedTime": 1754269243084, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429677699, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Nbw6Jnh1vRZzwHQI", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Flight_54GUjNuBEy7xdzMz.json b/src/packs/domains/domainCard_Flight_54GUjNuBEy7xdzMz.json index 1b4970d2..fd2cd7ec 100644 --- a/src/packs/domains/domainCard_Flight_54GUjNuBEy7xdzMz.json +++ b/src/packs/domains/domainCard_Flight_54GUjNuBEy7xdzMz.json @@ -14,7 +14,7 @@ "type": "attack", "_id": "sAE4ZDLyU9CmNzES", "systemPath": "actions", - "description": "

Make a Spellcast Roll (15). On a success, place a number of tokens equal to your Agility on this card (minimum 1).

", + "description": "

Make a Spellcast Roll (15). On a success, place a number of tokens equal to your Agility on this card (minimum 1).

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -66,15 +66,15 @@ "type": "effect", "_id": "2wzlrOPefdowBtRr", "systemPath": "actions", - "description": "

When you make an action roll while flying, spend a token from this card. After the action that spends the last token is resolved, you descend to the ground directly below you.

", + "description": "

When you make an action roll while flying, spend a token from this card. After the action that spends the last token is resolved, you descend to the ground directly below you.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": false, - "key": "54GUjNuBEy7xdzMz", + "key": "resource", + "itemId": "54GUjNuBEy7xdzMz", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -100,6 +100,11 @@ "value": 0, "max": "", "icon": "" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 119, + "artist": "" } }, "flags": {}, @@ -107,12 +112,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784454, - "modifiedTime": 1754253557569, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575249, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "54GUjNuBEy7xdzMz", "sort": 3400000, @@ -143,7 +148,7 @@ "startRound": null, "startTurn": null }, - "description": "

You can fly. When you make an action roll while flying, spend a token from this card.Β After the action that spends the last token is resolved, you descend to the ground directly below you.

", + "description": "

You can fly. When you make an action roll while flying, spend a token from this card.Β After the action that spends the last token is resolved, you descend to the ground directly below you.

", "tint": "#ffffff", "statuses": [ "fly" diff --git a/src/packs/domains/domainCard_Floating_Eye_wOQLu7nLMQ7v6Ogw.json b/src/packs/domains/domainCard_Floating_Eye_wOQLu7nLMQ7v6Ogw.json index 62a36dcf..1df8c51d 100644 --- a/src/packs/domains/domainCard_Floating_Eye_wOQLu7nLMQ7v6Ogw.json +++ b/src/packs/domains/domainCard_Floating_Eye_wOQLu7nLMQ7v6Ogw.json @@ -14,7 +14,7 @@ "type": "effect", "_id": "pO8E1Bf4GDAU0efI", "systemPath": "actions", - "description": "

Spend a Hope to create a single, small floating orb that you can move anywhere within Very Far range. While this spell is active, you can see through the orb as though you’re looking out from its position. You can transition between using your own senses and seeing through the orb freely. If the orb takes damage or moves out of range, the spell ends.

", + "description": "

Spend a Hope to create a single, small floating orb that you can move anywhere within Very Far range. While this spell is active, you can see through the orb as though you’re looking out from its position. You can transition between using your own senses and seeing through the orb freely. If the orb takes damage or moves out of range, the spell ends.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -38,6 +38,11 @@ "img": "icons/magic/perception/eye-tendrils-web-purple.webp", "range": "veryFar" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 119, + "artist": "" } }, "flags": {}, @@ -45,12 +50,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784455, - "modifiedTime": 1754253473206, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755427943550, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "wOQLu7nLMQ7v6Ogw", "sort": 3400000, @@ -81,7 +86,7 @@ "startRound": null, "startTurn": null }, - "description": "

While this spell is active, you can see through the orb as though you’re looking out from its position. You can transition between using your own senses and seeing through the orb freely. If the orb takes damage or moves out of range, the spell ends.

", + "description": "

While this spell is active, you can see through the orb as though you’re looking out from its position. You can transition between using your own senses and seeing through the orb freely. If the orb takes damage or moves out of range, the spell ends.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Forager_06UapZuaA5S6fAKl.json b/src/packs/domains/domainCard_Forager_06UapZuaA5S6fAKl.json index 5e039fb9..b7629a8f 100644 --- a/src/packs/domains/domainCard_Forager_06UapZuaA5S6fAKl.json +++ b/src/packs/domains/domainCard_Forager_06UapZuaA5S6fAKl.json @@ -238,6 +238,11 @@ "img": "icons/consumables/potions/bottle-bulb-corked-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 131, + "artist": "" } }, "flags": {}, @@ -245,12 +250,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784456, - "modifiedTime": 1754339631526, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429578094, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "06UapZuaA5S6fAKl", "sort": 3400000, @@ -288,7 +293,7 @@ "startRound": null, "startTurn": null }, - "description": "

+2 to a Spellcast Roll

", + "description": "

+2 to a Spellcast Roll

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Force_of_Nature_LzVpMkD5I4QeaIHf.json b/src/packs/domains/domainCard_Force_of_Nature_LzVpMkD5I4QeaIHf.json index bf4a1e0d..b3d55ab5 100644 --- a/src/packs/domains/domainCard_Force_of_Nature_LzVpMkD5I4QeaIHf.json +++ b/src/packs/domains/domainCard_Force_of_Nature_LzVpMkD5I4QeaIHf.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -38,12 +37,12 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Transform", "img": "icons/magic/nature/elemental-plant-humanoid.webp", - "range": "" + "range": "self" }, "1rLoYS90AZizJujS": { "type": "effect", @@ -54,7 +53,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -75,6 +73,11 @@ "img": "icons/commodities/gems/gem-faceted-octagon-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 131, + "artist": "" } }, "flags": {}, @@ -82,12 +85,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784456, - "modifiedTime": 1754340347669, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756038760003, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "LzVpMkD5I4QeaIHf", "sort": 3400000, @@ -131,7 +134,7 @@ "startRound": null, "startTurn": null }, - "description": "
  • When you succeed on an attack or Spellcast Roll, gain a +10 bonus to the damage roll.

  • When you deal enough damage to defeat a creature within Close range, you absorb them and clear an Armor Slot.

  • You can’t be Restrained.

  • Before you make an action roll, you must spend a Hope. If you can’t, you revert to your normal form.

", + "description": "
  • When you succeed on an attack or Spellcast Roll, gain a +10 bonus to the damage roll.

  • When you deal enough damage to defeat a creature within Close range, you absorb them and clear an Armor Slot.

  • You can’t be Restrained.

  • Before you make an action roll, you must spend a Hope. If you can’t, you revert to your normal form.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Forceful_Push_z8FFPhDh2SdFkFfS.json b/src/packs/domains/domainCard_Forceful_Push_z8FFPhDh2SdFkFfS.json index 1943eac9..7f7cb2b5 100644 --- a/src/packs/domains/domainCard_Forceful_Push_z8FFPhDh2SdFkFfS.json +++ b/src/packs/domains/domainCard_Forceful_Push_z8FFPhDh2SdFkFfS.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -48,19 +47,24 @@ } }, "resource": null, - "inVault": false + "inVault": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754067019520, - "modifiedTime": 1754241411518, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429828890, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "effects": [ { diff --git a/src/packs/domains/domainCard_Forest_Sprites_JrkUMTzaFmQNBHVm.json b/src/packs/domains/domainCard_Forest_Sprites_JrkUMTzaFmQNBHVm.json index 6b812038..177cfae9 100644 --- a/src/packs/domains/domainCard_Forest_Sprites_JrkUMTzaFmQNBHVm.json +++ b/src/packs/domains/domainCard_Forest_Sprites_JrkUMTzaFmQNBHVm.json @@ -23,8 +23,7 @@ "scalable": true, "key": "hope", "value": 1, - "step": 1, - "keyIsID": false + "step": 1 } ], "uses": { @@ -70,6 +69,11 @@ "img": "icons/creatures/magical/humanoid-silhouette-dashing-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 131, + "artist": "" } }, "flags": {}, @@ -77,12 +81,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784457, - "modifiedTime": 1754339713793, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429599034, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "JrkUMTzaFmQNBHVm", "sort": 3400000, @@ -120,7 +124,7 @@ "startRound": null, "startTurn": null }, - "description": "

Gain a +3 bonus to attack rolls against adversaries within Melee range of a sprite.

An ally who marks an Armor Slot while within Melee range of a sprite can mark an additional Armor Slot.

A sprite vanishes after granting a benefit or taking any damage.

", + "description": "

Gain a +3 bonus to attack rolls against adversaries within Melee range of a sprite.

An ally who marks an Armor Slot while within Melee range of a sprite can mark an additional Armor Slot.

A sprite vanishes after granting a benefit or taking any damage.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Fortified_Armor_oVa49lI107eZILZr.json b/src/packs/domains/domainCard_Fortified_Armor_oVa49lI107eZILZr.json index b48a2e09..a0a58f74 100644 --- a/src/packs/domains/domainCard_Fortified_Armor_oVa49lI107eZILZr.json +++ b/src/packs/domains/domainCard_Fortified_Armor_oVa49lI107eZILZr.json @@ -8,19 +8,24 @@ "domain": "blade", "recallCost": 0, "level": 4, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784458, - "modifiedTime": 1754304268859, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428132316, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "oVa49lI107eZILZr", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Frenzy_MMl7abdGRLl7TJLO.json b/src/packs/domains/domainCard_Frenzy_MMl7abdGRLl7TJLO.json index d8718735..c6323551 100644 --- a/src/packs/domains/domainCard_Frenzy_MMl7abdGRLl7TJLO.json +++ b/src/packs/domains/domainCard_Frenzy_MMl7abdGRLl7TJLO.json @@ -31,13 +31,18 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Frenzy", "img": "icons/magic/fire/projectile-wave-yellow.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" } }, "flags": {}, @@ -45,12 +50,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784459, - "modifiedTime": 1754304635322, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756037770198, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "MMl7abdGRLl7TJLO", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Full_Surge_SgvjJfMyubZowPxS.json b/src/packs/domains/domainCard_Full_Surge_SgvjJfMyubZowPxS.json index ca10655c..91bc544a 100644 --- a/src/packs/domains/domainCard_Full_Surge_SgvjJfMyubZowPxS.json +++ b/src/packs/domains/domainCard_Full_Surge_SgvjJfMyubZowPxS.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 3, - "keyIsID": false, "step": null } ], @@ -43,8 +42,13 @@ }, "name": "Mark Stress", "img": "icons/magic/control/buff-flight-wings-runes-purple.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 135, + "artist": "" } }, "flags": {}, @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784460, - "modifiedTime": 1754498928489, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756039042961, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "SgvjJfMyubZowPxS", "sort": 3400000, @@ -66,7 +70,7 @@ "name": "Full Surge", "img": "icons/magic/symbols/ring-circle-smoke-blue.webp", "origin": "Compendium.daggerheart.domains.Item.SgvjJfMyubZowPxS", - "transfer": true, + "transfer": false, "_id": "H5q5iYImr69TfZcp", "type": "base", "system": { @@ -115,7 +119,7 @@ "priority": null } ], - "disabled": true, + "disabled": false, "duration": { "startTime": null, "combat": null, @@ -125,7 +129,7 @@ "startRound": null, "startTurn": null }, - "description": "

Gain a +2 bonus to all of your character traits until your next rest.

", + "description": "

Gain a +2 bonus to all of your character traits until your next rest.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -134,12 +138,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754242182511, - "modifiedTime": 1754242229676, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756039048089, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items.effects!SgvjJfMyubZowPxS.H5q5iYImr69TfZcp" } diff --git a/src/packs/domains/domainCard_Get_Back_Up_BFWN2cObMdlk9uVz.json b/src/packs/domains/domainCard_Get_Back_Up_BFWN2cObMdlk9uVz.json index 91b55807..a35dcd3c 100644 --- a/src/packs/domains/domainCard_Get_Back_Up_BFWN2cObMdlk9uVz.json +++ b/src/packs/domains/domainCard_Get_Back_Up_BFWN2cObMdlk9uVz.json @@ -9,19 +9,24 @@ "recallCost": 1, "level": 1, "type": "ability", - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784460, - "modifiedTime": 1754304045807, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428082275, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "BFWN2cObMdlk9uVz", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Gifted_Tracker_VZ2b4zfRzV73XTuT.json b/src/packs/domains/domainCard_Gifted_Tracker_VZ2b4zfRzV73XTuT.json index a9e66110..5fb1987e 100644 --- a/src/packs/domains/domainCard_Gifted_Tracker_VZ2b4zfRzV73XTuT.json +++ b/src/packs/domains/domainCard_Gifted_Tracker_VZ2b4zfRzV73XTuT.json @@ -22,8 +22,7 @@ "scalable": true, "key": "hope", "value": 1, - "step": 1, - "keyIsID": false + "step": 1 } ], "uses": { @@ -45,6 +44,11 @@ "img": "icons/magic/nature/stealth-hide-eyes-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 130, + "artist": "" } }, "flags": {}, @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784461, - "modifiedTime": 1754337461017, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429462909, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "VZ2b4zfRzV73XTuT", "sort": 3400000, @@ -95,7 +99,7 @@ "startRound": null, "startTurn": null }, - "description": "

When you encounter creatures you’ve tracked in this way, gain a +1 bonus to your Evasion against them.

", + "description": "

When you encounter creatures you’ve tracked in this way, gain a +1 bonus to your Evasion against them.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Glancing_Blow_nCNCqSH7UgW4O3To.json b/src/packs/domains/domainCard_Glancing_Blow_nCNCqSH7UgW4O3To.json index b01a8e00..cde0c6f0 100644 --- a/src/packs/domains/domainCard_Glancing_Blow_nCNCqSH7UgW4O3To.json +++ b/src/packs/domains/domainCard_Glancing_Blow_nCNCqSH7UgW4O3To.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -46,6 +45,11 @@ "img": "systems/daggerheart/assets/icons/domains/domain-card/blade.png", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -53,12 +57,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784462, - "modifiedTime": 1754304608102, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428170369, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "nCNCqSH7UgW4O3To", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Glyph_of_Nightfall_B5HXqYRJiL3xMNKT.json b/src/packs/domains/domainCard_Glyph_of_Nightfall_B5HXqYRJiL3xMNKT.json index 99b6b683..b552545d 100644 --- a/src/packs/domains/domainCard_Glyph_of_Nightfall_B5HXqYRJiL3xMNKT.json +++ b/src/packs/domains/domainCard_Glyph_of_Nightfall_B5HXqYRJiL3xMNKT.json @@ -23,7 +23,6 @@ "scalable": false, "key": "hope", "value": 1, - "keyIsID": false, "step": null } ], @@ -70,6 +69,11 @@ "img": "icons/magic/symbols/runes-triangle-blue.webp", "range": "veryClose" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" } }, "flags": {}, @@ -77,12 +81,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784463, - "modifiedTime": 1754330838174, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429335032, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "B5HXqYRJiL3xMNKT", "sort": 3400000, @@ -120,7 +124,7 @@ "startRound": null, "startTurn": null }, - "description": "

Conjure a dark glyph upon their body that exposes their weak points, temporarily reducing the target’s Difficulty by a value equal to your Knowledge (minimum 1).

", + "description": "

Conjure a dark glyph upon their body that exposes their weak points, temporarily reducing the target’s Difficulty by a value equal to your Knowledge (minimum 1).

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -171,7 +175,7 @@ "startRound": null, "startTurn": null }, - "description": "

Conjure a dark glyph upon their body that exposes their weak points, temporarily reducing the target’s Difficulty by a value equal to your Knowledge (minimum 1).

", + "description": "

Conjure a dark glyph upon their body that exposes their weak points, temporarily reducing the target’s Difficulty by a value equal to your Knowledge (minimum 1).

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Goad_Them_On_HufF5KzuNfEb9RTi.json b/src/packs/domains/domainCard_Goad_Them_On_HufF5KzuNfEb9RTi.json index 03c1b5e0..09f49cf2 100644 --- a/src/packs/domains/domainCard_Goad_Them_On_HufF5KzuNfEb9RTi.json +++ b/src/packs/domains/domainCard_Goad_Them_On_HufF5KzuNfEb9RTi.json @@ -87,6 +87,11 @@ "img": "icons/magic/control/mouth-smile-deception-purple.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" } }, "flags": {}, @@ -94,12 +99,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784464, - "modifiedTime": 1754241738411, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429869259, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "HufF5KzuNfEb9RTi", "sort": 3400000, @@ -137,7 +142,7 @@ "startRound": null, "startTurn": null }, - "description": "

The next time this Adversary isΒ spotlighted,Β they must target the Goading Character with an attack, which they make with disadvantage.

", + "description": "

The next time this Adversary isΒ spotlighted,Β they must target the Goading Character with an attack, which they make with disadvantage.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Gore_and_Glory_3zvjgZ5Od343wHzx.json b/src/packs/domains/domainCard_Gore_and_Glory_3zvjgZ5Od343wHzx.json index 6c8de699..bfb91236 100644 --- a/src/packs/domains/domainCard_Gore_and_Glory_3zvjgZ5Od343wHzx.json +++ b/src/packs/domains/domainCard_Gore_and_Glory_3zvjgZ5Od343wHzx.json @@ -146,6 +146,11 @@ "img": "icons/magic/holy/barrier-shield-winged-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" } }, "flags": {}, @@ -153,12 +158,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784464, - "modifiedTime": 1754304753469, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428195100, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "3zvjgZ5Od343wHzx", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Grace_Touched_KAuNb51AwhD8KEXk.json b/src/packs/domains/domainCard_Grace_Touched_KAuNb51AwhD8KEXk.json index f1d82163..11a9c47a 100644 --- a/src/packs/domains/domainCard_Grace_Touched_KAuNb51AwhD8KEXk.json +++ b/src/packs/domains/domainCard_Grace_Touched_KAuNb51AwhD8KEXk.json @@ -22,7 +22,6 @@ "scalable": false, "key": "armor", "value": 1, - "keyIsID": false, "step": null } ], @@ -92,6 +91,11 @@ "img": "icons/commodities/gems/gem-faceted-navette-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -99,12 +103,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784465, - "modifiedTime": 1754341871438, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429233975, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "KAuNb51AwhD8KEXk", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json b/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json index 4e603ff8..2b27f9d6 100644 --- a/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json +++ b/src/packs/domains/domainCard_Ground_Pound_WnGldYhJPDhx8v9X.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null } ], @@ -91,6 +90,11 @@ "img": "icons/magic/earth/barrier-stone-brown-green.webp", "range": "veryClose" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 135, + "artist": "" } }, "flags": {}, @@ -98,12 +102,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784466, - "modifiedTime": 1754242257735, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429937836, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "WnGldYhJPDhx8v9X", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json b/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json index a9b0561d..49001e24 100644 --- a/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json +++ b/src/packs/domains/domainCard_Healing_Field_GlRm1Dxlc0Z1b04o.json @@ -19,11 +19,12 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "GlRm1Dxlc0Z1b04o", + "key": "resource", + "itemId": "GlRm1Dxlc0Z1b04o", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -94,18 +95,20 @@ "actionType": "action", "cost": [ { - "scalable": false, "key": "hope", + "itemId": null, "value": 2, - "keyIsID": false, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false }, { - "scalable": false, - "key": "GlRm1Dxlc0Z1b04o", + "key": "resource", + "itemId": "GlRm1Dxlc0Z1b04o", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -175,6 +178,11 @@ "max": "1", "icon": "", "progression": "decreasing" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 130, + "artist": "" } }, "flags": {}, @@ -182,12 +190,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784466, - "modifiedTime": 1754499077474, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756325575341, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "GlRm1Dxlc0Z1b04o", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Healing_Hands_WTlhnQMajc1r8i50.json b/src/packs/domains/domainCard_Healing_Hands_WTlhnQMajc1r8i50.json index a7aeb6b2..dc3669da 100644 --- a/src/packs/domains/domainCard_Healing_Hands_WTlhnQMajc1r8i50.json +++ b/src/packs/domains/domainCard_Healing_Hands_WTlhnQMajc1r8i50.json @@ -66,7 +66,7 @@ "type": "healing", "_id": "vmWku5XYmakLdwX2", "systemPath": "actions", - "description": "

On a failure, mark a Stress to clear a Hit Point or a Stress on the target. You can’t heal the same target again until your next long rest.

", + "description": "

On a failure, mark a Stress to clear a Hit Point or a Stress on the target. You can’t heal the same target again until your next long rest.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -75,7 +75,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -143,7 +142,7 @@ "type": "healing", "_id": "FYHLuVtFCR9A6Nvt", "systemPath": "actions", - "description": "

On a success, mark a Stress to clear 2 Hit Points or 2 Stress on the target. You can’t heal the same target again until your next long rest.

", + "description": "

On a success, mark a Stress to clear 2 Hit Points or 2 Stress on the target. You can’t heal the same target again until your next long rest.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -151,7 +150,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -220,7 +218,7 @@ "type": "healing", "_id": "8ElTYMjIM7YI6Kb8", "systemPath": "actions", - "description": "

On a failure, mark a Stress to clear a Hit Point or a Stress on the target. You can’t heal the same target again until your next long rest.

", + "description": "

On a failure, mark a Stress to clear a Hit Point or a Stress on the target. You can’t heal the same target again until your next long rest.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -228,7 +226,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -297,7 +294,7 @@ "type": "healing", "_id": "lQMhidLodJn9Nj7e", "systemPath": "actions", - "description": "

On a success, mark a Stress to clear 2 Hit Points or 2 Stress on the target. You can’t heal the same target again until your next long rest.

", + "description": "

On a success, mark a Stress to clear 2 Hit Points or 2 Stress on the target. You can’t heal the same target again until your next long rest.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -305,7 +302,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -370,6 +366,11 @@ "img": "icons/commodities/gems/gem-faceted-navette-red.webp", "range": "melee" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 132, + "artist": "" } }, "flags": {}, @@ -377,12 +378,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784467, - "modifiedTime": 1754269408742, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429684407, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "WTlhnQMajc1r8i50", "sort": 3400000, @@ -413,7 +414,7 @@ "startRound": null, "startTurn": null }, - "description": "

Can’t be healed again with Healing Hands by the caster of the Healing Hands until a long rest.

", + "description": "

Can’t be healed again with Healing Hands by the caster of the Healing Hands until a long rest.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Healing_Strike_XtSc0jIJLOoMTMYS.json b/src/packs/domains/domainCard_Healing_Strike_XtSc0jIJLOoMTMYS.json index 6c3dd4fd..68c2143b 100644 --- a/src/packs/domains/domainCard_Healing_Strike_XtSc0jIJLOoMTMYS.json +++ b/src/packs/domains/domainCard_Healing_Strike_XtSc0jIJLOoMTMYS.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -87,6 +86,11 @@ "img": "icons/commodities/gems/gem-faceted-diamond-green.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" } }, "flags": {}, @@ -94,12 +98,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784468, - "modifiedTime": 1754269824514, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429756749, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "XtSc0jIJLOoMTMYS", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Hold_the_Line_kdFoLo3KXwn4LqTG.json b/src/packs/domains/domainCard_Hold_the_Line_kdFoLo3KXwn4LqTG.json index 0ab4d205..cbca693c 100644 --- a/src/packs/domains/domainCard_Hold_the_Line_kdFoLo3KXwn4LqTG.json +++ b/src/packs/domains/domainCard_Hold_the_Line_kdFoLo3KXwn4LqTG.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -43,7 +42,7 @@ }, "name": "Spend Hope", "img": "icons/magic/holy/barrier-shield-winged-blue.webp", - "range": "" + "range": "self" }, "SKG6Gu0uJZxtYTnz": { "type": "effect", @@ -73,6 +72,11 @@ "img": "icons/magic/defensive/shield-barrier-blue.webp", "range": "veryClose" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 135, + "artist": "" } }, "flags": {}, @@ -80,12 +84,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784468, - "modifiedTime": 1754242400496, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756039072992, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "kdFoLo3KXwn4LqTG", "sort": 3400000, @@ -94,7 +98,7 @@ "name": "Hold the Line", "img": "icons/magic/defensive/shield-barrier-blue.webp", "origin": "Compendium.daggerheart.domains.Item.kdFoLo3KXwn4LqTG", - "transfer": true, + "transfer": false, "_id": "y82y3nUStyL8DIJL", "type": "base", "system": { @@ -106,7 +110,7 @@ } }, "changes": [], - "disabled": true, + "disabled": false, "duration": { "startTime": null, "combat": null, @@ -125,18 +129,18 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754242295342, - "modifiedTime": 1754242434181, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756039077113, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items.effects!kdFoLo3KXwn4LqTG.y82y3nUStyL8DIJL" }, { "name": "Hold the Line", - "img": "systems/daggerheart/assets/icons/domains/domain-card/valor.png", + "img": "icons/skills/melee/shield-block-bash-blue.webp", "origin": "Compendium.daggerheart.domains.Item.kdFoLo3KXwn4LqTG", "transfer": false, "_id": "WTYg0b8nE1XbnMiA", @@ -171,12 +175,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754242400483, - "modifiedTime": 1754242409060, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756039151398, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items.effects!kdFoLo3KXwn4LqTG.WTYg0b8nE1XbnMiA" } diff --git a/src/packs/domains/domainCard_Hush_gwmYasmfgXZ7tFS6.json b/src/packs/domains/domainCard_Hush_gwmYasmfgXZ7tFS6.json index 93dfbf97..a3293033 100644 --- a/src/packs/domains/domainCard_Hush_gwmYasmfgXZ7tFS6.json +++ b/src/packs/domains/domainCard_Hush_gwmYasmfgXZ7tFS6.json @@ -23,7 +23,6 @@ "scalable": false, "key": "hope", "value": 1, - "keyIsID": false, "step": null } ], @@ -70,6 +69,11 @@ "img": "icons/magic/unholy/orb-glowing-purple.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" } }, "flags": {}, @@ -77,12 +81,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784470, - "modifiedTime": 1754331001689, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429348547, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "gwmYasmfgXZ7tFS6", "sort": 3400000, @@ -113,7 +117,7 @@ "startRound": null, "startTurn": null }, - "description": "

Auppressive magic around the target that encompasses everything within Very Close range of them and follows them as they move.Β The target and anything within the area is Silenced until the GM spends a Fear on their turn to clear this condition, you cast Hush again, or you take Major damage. While Silenced, they can’t make noise and can’t cast spells.

", + "description": "

Auppressive magic around the target that encompasses everything within Very Close range of them and follows them as they move.Β The target and anything within the area is Silenced until the GM spends a Fear on their turn to clear this condition, you cast Hush again, or you take Major damage. While Silenced, they can’t make noise and can’t cast spells.

", "tint": "#ffffff", "statuses": [ "silence" @@ -159,7 +163,7 @@ "startRound": null, "startTurn": null }, - "description": "

Suppressive magic around the target that encompasses everything within Very Close range of them and follows them as they move.Β The target and anything within the area is Silenced until the GM spends a Fear on their turn to clear this condition, you cast Hush again, or you take Major damage. While Silenced, they can’t make noise and can’t cast spells.

", + "description": "

Suppressive magic around the target that encompasses everything within Very Close range of them and follows them as they move.Β The target and anything within the area is Silenced until the GM spends a Fear on their turn to clear this condition, you cast Hush again, or you take Major damage. While Silenced, they can’t make noise and can’t cast spells.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json b/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json index a221859c..a04c7c6e 100644 --- a/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json +++ b/src/packs/domains/domainCard_Hypnotic_Shimmer_2ZeuCGVatQdPOVC6.json @@ -14,7 +14,7 @@ "type": "attack", "_id": "kLMAuyZktmohOSXa", "systemPath": "actions", - "description": "

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

", + "description": "

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

@Template[type:infront|range:c]

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -88,6 +88,11 @@ "img": "icons/magic/control/hypnosis-mesmerism-swirl.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -95,12 +100,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784471, - "modifiedTime": 1754341315075, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756038232979, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "2ZeuCGVatQdPOVC6", "sort": 3400000, @@ -131,7 +136,7 @@ "startRound": null, "startTurn": null }, - "description": "

An illusion of flashing colors and lights that temporarily Stuns targets. While Stunned, they can’t use reactions and can’t take any other actions until they clear this condition.

", + "description": "

An illusion of flashing colors and lights that temporarily Stuns targets. While Stunned, they can’t use reactions and can’t take any other actions until they clear this condition.

", "tint": "#ffffff", "statuses": [ "stun" diff --git a/src/packs/domains/domainCard_I_Am_Your_Shield_KOf6LLpMRNwjezDx.json b/src/packs/domains/domainCard_I_Am_Your_Shield_KOf6LLpMRNwjezDx.json index 1699800f..258499a7 100644 --- a/src/packs/domains/domainCard_I_Am_Your_Shield_KOf6LLpMRNwjezDx.json +++ b/src/packs/domains/domainCard_I_Am_Your_Shield_KOf6LLpMRNwjezDx.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -42,19 +41,24 @@ } }, "resource": null, - "inVault": false + "inVault": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754067020844, - "modifiedTime": 1754241453261, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429834425, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "effects": [], "ownership": { diff --git a/src/packs/domains/domainCard_I_See_It_Coming_Kp6RejHGimnuoBom.json b/src/packs/domains/domainCard_I_See_It_Coming_Kp6RejHGimnuoBom.json index 0960839a..d44ae867 100644 --- a/src/packs/domains/domainCard_I_See_It_Coming_Kp6RejHGimnuoBom.json +++ b/src/packs/domains/domainCard_I_See_It_Coming_Kp6RejHGimnuoBom.json @@ -23,7 +23,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -66,6 +65,11 @@ "img": "icons/skills/melee/maneuver-sword-katana-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" } }, "flags": {}, @@ -73,12 +77,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784472, - "modifiedTime": 1754249651973, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428247643, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Kp6RejHGimnuoBom", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Inevitable_XTT8c8uJ4D7fvtbL.json b/src/packs/domains/domainCard_Inevitable_XTT8c8uJ4D7fvtbL.json index 78718d6b..c453111c 100644 --- a/src/packs/domains/domainCard_Inevitable_XTT8c8uJ4D7fvtbL.json +++ b/src/packs/domains/domainCard_Inevitable_XTT8c8uJ4D7fvtbL.json @@ -8,19 +8,24 @@ "domain": "valor", "recallCost": 1, "level": 6, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784472, - "modifiedTime": 1754242058119, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429896649, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "XTT8c8uJ4D7fvtbL", "sort": 3400000, @@ -56,7 +61,7 @@ "startRound": null, "startTurn": null }, - "description": "

When you fail an action roll, your next action roll has advantage.

", + "description": "

When you fail an action roll, your next action roll has advantage.

", "origin": null, "tint": "#ffffff", "transfer": true, diff --git a/src/packs/domains/domainCard_Inspirational_Words_cWu1o82ZF7GvnbXc.json b/src/packs/domains/domainCard_Inspirational_Words_cWu1o82ZF7GvnbXc.json index 424b08b7..e3dd7875 100644 --- a/src/packs/domains/domainCard_Inspirational_Words_cWu1o82ZF7GvnbXc.json +++ b/src/packs/domains/domainCard_Inspirational_Words_cWu1o82ZF7GvnbXc.json @@ -27,11 +27,12 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "cWu1o82ZF7GvnbXc", + "key": "resource", + "itemId": "cWu1o82ZF7GvnbXc", "value": 1, + "scalable": false, "step": null, - "keyIsID": true + "consumeOnSuccess": false } ], "uses": { @@ -97,16 +98,17 @@ "type": "healing", "_id": "QKS3vo3Nf5CK8rkF", "systemPath": "actions", - "description": "

Spend a token from this card to give them the following:

  • Your ally clears a Hit Point.

", + "description": "

Spend a token from this card to give them the following:

  • Your ally clears a Hit Point.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": false, - "key": "cWu1o82ZF7GvnbXc", + "key": "resource", + "itemId": "cWu1o82ZF7GvnbXc", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -172,16 +174,17 @@ "type": "healing", "_id": "5xn70wYZW7k9aiVl", "systemPath": "actions", - "description": "

Spend a token from this card to give them the following:

  • Your ally gains a Hope.

", + "description": "

Spend a token from this card to give them the following:

  • Your ally gains a Hope.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": false, - "key": "cWu1o82ZF7GvnbXc", + "key": "resource", + "itemId": "cWu1o82ZF7GvnbXc", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -243,6 +246,11 @@ "img": "icons/commodities/gems/gem-faceted-octagon-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -250,12 +258,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784473, - "modifiedTime": 1754499693699, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756325575659, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "cWu1o82ZF7GvnbXc", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Invigoration_X8OfkEoI5gLTRf1B.json b/src/packs/domains/domainCard_Invigoration_X8OfkEoI5gLTRf1B.json index 9bdf44e7..fe5da256 100644 --- a/src/packs/domains/domainCard_Invigoration_X8OfkEoI5gLTRf1B.json +++ b/src/packs/domains/domainCard_Invigoration_X8OfkEoI5gLTRf1B.json @@ -23,7 +23,6 @@ "key": "hope", "value": 1, "step": 1, - "keyIsID": false, "consumeOnSuccess": false } ], @@ -66,6 +65,11 @@ "img": "icons/commodities/gems/gem-faceted-octagon-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" } }, "flags": {}, @@ -73,12 +77,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784474, - "modifiedTime": 1754270049868, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429801608, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "X8OfkEoI5gLTRf1B", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Invisibility_KHkzA4Zrw8EWN1CH.json b/src/packs/domains/domainCard_Invisibility_KHkzA4Zrw8EWN1CH.json index a0bff97c..d32fd954 100644 --- a/src/packs/domains/domainCard_Invisibility_KHkzA4Zrw8EWN1CH.json +++ b/src/packs/domains/domainCard_Invisibility_KHkzA4Zrw8EWN1CH.json @@ -23,7 +23,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -76,6 +75,11 @@ "value": 0, "max": "@cast", "icon": "" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -83,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784475, - "modifiedTime": 1754341402828, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429172642, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "KHkzA4Zrw8EWN1CH", "sort": 3400000, @@ -119,7 +123,7 @@ "startRound": null, "startTurn": null }, - "description": "

An Invisible creature can’t be seen except through magical means and attack rolls against them are made with disadvantage. Place a number of tokens on this card equal to your Spellcast trait. When the Invisible creature takes an action, spend a token from this card. After the action that spends the last token is resolved, the effect ends.

", + "description": "

An Invisible creature can’t be seen except through magical means and attack rolls against them are made with disadvantage. Place a number of tokens on this card equal to your Spellcast trait. When the Invisible creature takes an action, spend a token from this card. After the action that spends the last token is resolved, the effect ends.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Know_Thy_Enemy_O38MQMhJWdZnXi6b.json b/src/packs/domains/domainCard_Know_Thy_Enemy_O38MQMhJWdZnXi6b.json index 53ef85a7..75b94c59 100644 --- a/src/packs/domains/domainCard_Know_Thy_Enemy_O38MQMhJWdZnXi6b.json +++ b/src/packs/domains/domainCard_Know_Thy_Enemy_O38MQMhJWdZnXi6b.json @@ -23,7 +23,6 @@ "scalable": false, "key": "hope", "value": 1, - "keyIsID": false, "step": null } ], @@ -78,7 +77,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -98,6 +96,11 @@ "img": "icons/magic/perception/eye-ringed-glow-angry-small-teal.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -105,12 +108,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784475, - "modifiedTime": 1754252480391, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428299138, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "O38MQMhJWdZnXi6b", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Lead_by_Example_YWCRplmtwpCjpq5i.json b/src/packs/domains/domainCard_Lead_by_Example_YWCRplmtwpCjpq5i.json index 67f8e04c..86e8b1ca 100644 --- a/src/packs/domains/domainCard_Lead_by_Example_YWCRplmtwpCjpq5i.json +++ b/src/packs/domains/domainCard_Lead_by_Example_YWCRplmtwpCjpq5i.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -39,12 +38,17 @@ ], "target": { "type": "any", - "amount": null + "amount": 1 }, "name": "Mark Stress", "img": "icons/magic/control/buff-flight-wings-runes-purple.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 135, + "artist": "" } }, "flags": {}, @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784475, - "modifiedTime": 1754242464667, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756039181179, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "YWCRplmtwpCjpq5i", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Lean_on_Me_BdePs1ZWpZTZvY1Z.json b/src/packs/domains/domainCard_Lean_on_Me_BdePs1ZWpZTZvY1Z.json index aecbe898..73bfee2b 100644 --- a/src/packs/domains/domainCard_Lean_on_Me_BdePs1ZWpZTZvY1Z.json +++ b/src/packs/domains/domainCard_Lean_on_Me_BdePs1ZWpZTZvY1Z.json @@ -77,6 +77,11 @@ "img": "icons/magic/life/heart-cross-strong-purple-orange.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" } }, "flags": {}, @@ -84,12 +89,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784477, - "modifiedTime": 1754241703151, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429861185, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "BdePs1ZWpZTZvY1Z", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Life_Ward_OszbCj0jTqq2ADx9.json b/src/packs/domains/domainCard_Life_Ward_OszbCj0jTqq2ADx9.json index 78b2ec5e..12884992 100644 --- a/src/packs/domains/domainCard_Life_Ward_OszbCj0jTqq2ADx9.json +++ b/src/packs/domains/domainCard_Life_Ward_OszbCj0jTqq2ADx9.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -47,6 +46,11 @@ "img": "icons/magic/defensive/shield-barrier-deflect-gold.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 132, + "artist": "" } }, "flags": {}, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784478, - "modifiedTime": 1754269642386, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429712212, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "OszbCj0jTqq2ADx9", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json b/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json index acb35822..c938aca6 100644 --- a/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json +++ b/src/packs/domains/domainCard_Manifest_Wall_TtGOtWkbr23VhHfH.json @@ -23,7 +23,6 @@ "scalable": false, "key": "hope", "value": 1, - "keyIsID": false, "step": null } ], @@ -66,6 +65,11 @@ "img": "icons/magic/symbols/ring-circle-smoke-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 125, + "artist": "" } }, "flags": {}, @@ -73,12 +77,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784479, - "modifiedTime": 1754240697822, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429040215, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "TtGOtWkbr23VhHfH", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Mass_Disguise_dT95m0Jam8sWbeuC.json b/src/packs/domains/domainCard_Mass_Disguise_dT95m0Jam8sWbeuC.json index 76ea0d6b..b715c94a 100644 --- a/src/packs/domains/domainCard_Mass_Disguise_dT95m0Jam8sWbeuC.json +++ b/src/packs/domains/domainCard_Mass_Disguise_dT95m0Jam8sWbeuC.json @@ -37,6 +37,11 @@ "img": "icons/skills/social/diplomacy-unity-alliance.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 129, + "artist": "" } }, "flags": {}, @@ -44,12 +49,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784480, - "modifiedTime": 1754331105670, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429370519, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "dT95m0Jam8sWbeuC", "sort": 3400000, @@ -87,7 +92,7 @@ "startRound": null, "startTurn": null }, - "description": "

A disguised creature has advantage on Presence Rolls to avoid scrutiny.

", + "description": "

A disguised creature has advantage on Presence Rolls to avoid scrutiny.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json b/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json index 2713e2c7..b04fddf6 100644 --- a/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json +++ b/src/packs/domains/domainCard_Mass_Enrapture_ubpixIgZrJXKyM3b.json @@ -73,7 +73,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -121,6 +120,11 @@ "img": "icons/commodities/gems/gem-faceted-navette-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -128,12 +132,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784481, - "modifiedTime": 1754499825008, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429247535, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ubpixIgZrJXKyM3b", "sort": 3400000, @@ -164,7 +168,7 @@ "startRound": null, "startTurn": null }, - "description": "

While Enraptured, a target’s attention is fixed on you, narrowing their field of view and drowning out any sound but your voice.

", + "description": "

While Enraptured, a target’s attention is fixed on you, narrowing their field of view and drowning out any sound but your voice.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Master_of_the_Craft_yAGTwXHUC3qxpTeK.json b/src/packs/domains/domainCard_Master_of_the_Craft_yAGTwXHUC3qxpTeK.json index 8ab75989..148ce05a 100644 --- a/src/packs/domains/domainCard_Master_of_the_Craft_yAGTwXHUC3qxpTeK.json +++ b/src/packs/domains/domainCard_Master_of_the_Craft_yAGTwXHUC3qxpTeK.json @@ -8,19 +8,24 @@ "domain": "grace", "recallCost": 0, "level": 9, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784482, - "modifiedTime": 1754229084018, - "lastModifiedBy": "l5jB3XmcVXOTQpRZ" + "modifiedTime": 1755429259836, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "yAGTwXHUC3qxpTeK", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Mending_Touch_TGjR4vJVNbQRV8zr.json b/src/packs/domains/domainCard_Mending_Touch_TGjR4vJVNbQRV8zr.json index 437adffc..102c895f 100644 --- a/src/packs/domains/domainCard_Mending_Touch_TGjR4vJVNbQRV8zr.json +++ b/src/packs/domains/domainCard_Mending_Touch_TGjR4vJVNbQRV8zr.json @@ -14,7 +14,7 @@ "type": "healing", "_id": "sDoL9p1cpIx8Vdbb", "systemPath": "actions", - "description": "

When you can take a few minutes to focus on the target you’re helping, you can spend 2 Hope to clear a Hit Point or a Stress on them.

", + "description": "

When you can take a few minutes to focus on the target you’re helping, you can spend 2 Hope to clear a Hit Point or a Stress on them.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -99,7 +98,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -173,18 +171,18 @@ "actionType": "action", "cost": [ { - "scalable": false, "key": "hope", + "itemId": null, "value": 2, - "keyIsID": false, + "scalable": false, "step": null, "consumeOnSuccess": false }, { - "scalable": false, - "key": "TGjR4vJVNbQRV8zr", + "key": "resource", + "itemId": "TGjR4vJVNbQRV8zr", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -258,18 +256,18 @@ "actionType": "action", "cost": [ { - "scalable": false, "key": "hope", + "itemId": null, "value": 2, - "keyIsID": false, + "scalable": false, "step": null, "consumeOnSuccess": false }, { - "scalable": false, - "key": "TGjR4vJVNbQRV8zr", + "key": "resource", + "itemId": "TGjR4vJVNbQRV8zr", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -342,6 +340,11 @@ "max": "1", "icon": "fa-solid fa-hands-praying", "recovery": "longRest" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 132, + "artist": "" } }, "flags": {}, @@ -349,12 +352,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784482, - "modifiedTime": 1754498631054, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756325575507, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "TGjR4vJVNbQRV8zr", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Midnight_Spirit_FXLsB3QbQvTtqX5B.json b/src/packs/domains/domainCard_Midnight_Spirit_FXLsB3QbQvTtqX5B.json index 701f912d..6878ed3f 100644 --- a/src/packs/domains/domainCard_Midnight_Spirit_FXLsB3QbQvTtqX5B.json +++ b/src/packs/domains/domainCard_Midnight_Spirit_FXLsB3QbQvTtqX5B.json @@ -14,12 +14,11 @@ "type": "effect", "_id": "BDKCP4FvntHkYqXp", "systemPath": "actions", - "description": "

Spend a Hope to summon a humanoid-sized spirit that can move or carry things for you until your next rest.

", + "description": "

Spend a Hope to summon a humanoid-sized spirit that can move or carry things for you until your next rest.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -44,12 +43,11 @@ "type": "attack", "_id": "YVSMa2Igxp6DhNpG", "systemPath": "actions", - "description": "

You can also send it to attack an adversary. When you do, make a Spellcast Roll against a target within Very Far range. On a success, the spirit moves into Melee range with that target. Roll a number of d6s equal to your Spellcast trait and deal that much magic damage to the target. The spirit then dissipates. You can only have one spirit at a time.

", + "description": "

You can also send it to attack an adversary. When you do, make a Spellcast Roll against a target within Very Far range. On a success, the spirit moves into Melee range with that target. Roll a number of d6s equal to your Spellcast trait and deal that much magic damage to the target. The spirit then dissipates. You can only have one spirit at a time.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -121,6 +119,11 @@ "img": "icons/creatures/magical/spirit-undead-ghost-purple.webp", "range": "veryFar" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" } }, "flags": {}, @@ -128,12 +131,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784482, - "modifiedTime": 1754330630881, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429306955, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "FXLsB3QbQvTtqX5B", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Midnight_Touched_uSyGKVxOJcnp28po.json b/src/packs/domains/domainCard_Midnight_Touched_uSyGKVxOJcnp28po.json index 7a06e78e..73ecfaae 100644 --- a/src/packs/domains/domainCard_Midnight_Touched_uSyGKVxOJcnp28po.json +++ b/src/packs/domains/domainCard_Midnight_Touched_uSyGKVxOJcnp28po.json @@ -14,7 +14,7 @@ "type": "healing", "_id": "ksl1CcxcuwYxObiS", "systemPath": "actions", - "description": "

Once per rest, when you have 0 Hope and the GM would gain a Fear, you can gain a Hope instead.

", + "description": "

Once per rest, when you have 0 Hope and the GM would gain a Fear, you can gain a Hope instead.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -81,7 +81,7 @@ "type": "effect", "_id": "Ky5wcwBqgm5bJCK1", "systemPath": "actions", - "description": "

When you make a successful attack, you can mark a Stress to add the result of your Fear Die to your damage roll.

", + "description": "

When you make a successful attack, you can mark a Stress to add the result of your Fear Die to your damage roll.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -89,7 +89,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -107,6 +106,11 @@ "img": "icons/skills/wounds/anatomy-organ-brain-pink-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 129, + "artist": "" } }, "flags": {}, @@ -114,12 +118,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784484, - "modifiedTime": 1754331118511, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429376821, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "uSyGKVxOJcnp28po", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Natural_Familiar_Tag303LoRNC5zGgl.json b/src/packs/domains/domainCard_Natural_Familiar_Tag303LoRNC5zGgl.json index 97da5875..1e2c783d 100644 --- a/src/packs/domains/domainCard_Natural_Familiar_Tag303LoRNC5zGgl.json +++ b/src/packs/domains/domainCard_Natural_Familiar_Tag303LoRNC5zGgl.json @@ -22,7 +22,6 @@ "scalable": true, "key": "hope", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -104,7 +103,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -122,6 +120,11 @@ "img": "icons/magic/perception/eye-ringed-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 130, + "artist": "" } }, "flags": {}, @@ -129,12 +132,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784485, - "modifiedTime": 1754338204263, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429486873, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Tag303LoRNC5zGgl", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Nature_s_Tongue_atWLorlCOxcrq8WB.json b/src/packs/domains/domainCard_Nature_s_Tongue_atWLorlCOxcrq8WB.json index ed754e5c..4ede0a27 100644 --- a/src/packs/domains/domainCard_Nature_s_Tongue_atWLorlCOxcrq8WB.json +++ b/src/packs/domains/domainCard_Nature_s_Tongue_atWLorlCOxcrq8WB.json @@ -65,7 +65,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -91,6 +90,11 @@ "img": "icons/magic/nature/beam-hand-leaves-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 130, + "artist": "" } }, "flags": {}, @@ -98,12 +102,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784485, - "modifiedTime": 1754337595015, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429468262, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "atWLorlCOxcrq8WB", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Never_Upstaged_McdncxmO9K1YNP7Y.json b/src/packs/domains/domainCard_Never_Upstaged_McdncxmO9K1YNP7Y.json index b53b635d..4f553e26 100644 --- a/src/packs/domains/domainCard_Never_Upstaged_McdncxmO9K1YNP7Y.json +++ b/src/packs/domains/domainCard_Never_Upstaged_McdncxmO9K1YNP7Y.json @@ -25,18 +25,20 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "McdncxmO9K1YNP7Y", + "key": "resource", + "itemId": "McdncxmO9K1YNP7Y", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false }, { - "scalable": false, "key": "stress", + "itemId": null, "value": 1, - "keyIsID": false, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -67,18 +69,20 @@ "actionType": "action", "cost": [ { - "scalable": false, "key": "stress", + "itemId": null, "value": 1, - "keyIsID": false, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false }, { - "scalable": false, - "key": "McdncxmO9K1YNP7Y", + "key": "resource", + "itemId": "McdncxmO9K1YNP7Y", "value": 2, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -109,18 +113,20 @@ "actionType": "action", "cost": [ { - "scalable": false, "key": "stress", + "itemId": null, "value": 1, - "keyIsID": false, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false }, { - "scalable": false, - "key": "McdncxmO9K1YNP7Y", + "key": "resource", + "itemId": "McdncxmO9K1YNP7Y", "value": 3, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -151,18 +157,20 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "McdncxmO9K1YNP7Y", + "key": "resource", + "itemId": "McdncxmO9K1YNP7Y", "value": 4, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false }, { - "scalable": false, "key": "stress", + "itemId": null, "value": 1, - "keyIsID": false, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -184,6 +192,11 @@ "img": "icons/commodities/gems/gem-faceted-navette-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -191,12 +204,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784486, - "modifiedTime": 1754341729669, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575431, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "McdncxmO9K1YNP7Y", "sort": 3400000, @@ -240,7 +253,7 @@ "startRound": null, "startTurn": null }, - "description": "

Gain a +5 bonus to your damage roll

", + "description": "

Gain a +5 bonus to your damage roll

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -297,7 +310,7 @@ "startRound": null, "startTurn": null }, - "description": "

Gain a +10 bonus to your damage roll

", + "description": "

Gain a +10 bonus to your damage roll

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -354,7 +367,7 @@ "startRound": null, "startTurn": null }, - "description": "

Gain a +15 bonus to your damage roll

", + "description": "

Gain a +15 bonus to your damage roll

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -411,7 +424,7 @@ "startRound": null, "startTurn": null }, - "description": "

Gain a +20 bonus to your damage roll

", + "description": "

Gain a +20 bonus to your damage roll

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json b/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json index cb538eb1..28cd1e0b 100644 --- a/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json +++ b/src/packs/domains/domainCard_Night_Terror_zcldCuqOg3dphUVI.json @@ -65,16 +65,17 @@ "type": "damage", "_id": "ELzQvftGxZigPkBH", "systemPath": "actions", - "description": "

Steal a number of Fear from the GM equal to the number of targets that are Horrified (up to the number of Fear in the GM’s pool). Roll a number of d6s equal to the number of stolen Fear and deal the total damage to each Horrified target. Discard the stolen Fear.

", + "description": "

Steal a number of Fear from the GM equal to the number of targets that are Horrified (up to the number of Fear in the GM’s pool). Roll a number of d6s equal to the number of stolen Fear and deal the total damage to each Horrified target. Discard the stolen Fear.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": true, - "key": "zcldCuqOg3dphUVI", + "key": "resource", + "itemId": "zcldCuqOg3dphUVI", "value": 1, + "scalable": true, "step": 1, - "keyIsID": true + "consumeOnSuccess": false } ], "uses": { @@ -121,19 +122,24 @@ "range": "" } }, - "resource": null + "resource": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 129, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784487, - "modifiedTime": 1754499654051, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756325575872, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "zcldCuqOg3dphUVI", "sort": 3400000, @@ -164,7 +170,7 @@ "startRound": null, "startTurn": null }, - "description": "

While Horrified, they’re Vulnerable.

", + "description": "

While Horrified, they’re Vulnerable.

", "tint": "#ffffff", "statuses": [ "vulnerable" diff --git a/src/packs/domains/domainCard_Not_Good_Enough_xheQZOIYp0ERQhT9.json b/src/packs/domains/domainCard_Not_Good_Enough_xheQZOIYp0ERQhT9.json index 56abe99f..6d7acdf5 100644 --- a/src/packs/domains/domainCard_Not_Good_Enough_xheQZOIYp0ERQhT9.json +++ b/src/packs/domains/domainCard_Not_Good_Enough_xheQZOIYp0ERQhT9.json @@ -8,19 +8,24 @@ "domain": "blade", "recallCost": 1, "level": 1, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784487, - "modifiedTime": 1754244517328, - "lastModifiedBy": "l5jB3XmcVXOTQpRZ" + "modifiedTime": 1755428087961, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "xheQZOIYp0ERQhT9", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Notorious_IqxzvvjZiYbgx21A.json b/src/packs/domains/domainCard_Notorious_IqxzvvjZiYbgx21A.json index aad731ff..4f9e09e2 100644 --- a/src/packs/domains/domainCard_Notorious_IqxzvvjZiYbgx21A.json +++ b/src/packs/domains/domainCard_Notorious_IqxzvvjZiYbgx21A.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -40,6 +39,11 @@ "img": "icons/magic/light/explosion-star-glow-silhouette.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -47,12 +51,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784489, - "modifiedTime": 1754342229231, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429273228, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "IqxzvvjZiYbgx21A", "sort": 3400000, diff --git a/src/packs/domains/domainCard_On_the_Brink_zbxPl81kbWEegKQN.json b/src/packs/domains/domainCard_On_the_Brink_zbxPl81kbWEegKQN.json index b6f6548f..c6978859 100644 --- a/src/packs/domains/domainCard_On_the_Brink_zbxPl81kbWEegKQN.json +++ b/src/packs/domains/domainCard_On_the_Brink_zbxPl81kbWEegKQN.json @@ -8,19 +8,24 @@ "domain": "bone", "recallCost": 1, "level": 9, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784489, - "modifiedTime": 1754252507659, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428361099, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "zbxPl81kbWEegKQN", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Onslaught_I7pNsQ9Yx6mRJX4V.json b/src/packs/domains/domainCard_Onslaught_I7pNsQ9Yx6mRJX4V.json index 0d924ef2..20a677d0 100644 --- a/src/packs/domains/domainCard_Onslaught_I7pNsQ9Yx6mRJX4V.json +++ b/src/packs/domains/domainCard_Onslaught_I7pNsQ9Yx6mRJX4V.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -46,6 +45,11 @@ "img": "icons/skills/melee/strike-axe-blood-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" } }, "flags": {}, @@ -53,12 +57,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784490, - "modifiedTime": 1754304817948, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428212614, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "I7pNsQ9Yx6mRJX4V", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Overwhelming_Aura_iEBLySZD9z8CLdz7.json b/src/packs/domains/domainCard_Overwhelming_Aura_iEBLySZD9z8CLdz7.json index 68abefea..8cdb10fc 100644 --- a/src/packs/domains/domainCard_Overwhelming_Aura_iEBLySZD9z8CLdz7.json +++ b/src/packs/domains/domainCard_Overwhelming_Aura_iEBLySZD9z8CLdz7.json @@ -14,7 +14,7 @@ "type": "attack", "_id": "r2XblKJyZyamOOXq", "systemPath": "actions", - "description": "

Make a Spellcast Roll (15) to magically empower your aura. On a success, spend 2 Hope to make your Presence equal to your Spellcast trait until your next long rest.While this spell is active, an adversary must mark a Stress when they target you with an attack.

", + "description": "

Make a Spellcast Roll (15) to magically empower your aura. On a success, spend 2 Hope to make your Presence equal to your Spellcast trait until your next long rest.While this spell is active, an adversary must mark a Stress when they target you with an attack.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -23,7 +23,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null } ], @@ -38,7 +37,7 @@ "includeBase": false }, "target": { - "type": "any", + "type": "self", "amount": null }, "effects": [ @@ -69,8 +68,13 @@ }, "name": "Cast", "img": "icons/magic/holy/angel-winged-humanoid-blue.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" } }, "flags": {}, @@ -78,12 +82,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784491, - "modifiedTime": 1754270006714, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756038903709, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "iEBLySZD9z8CLdz7", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Phantom_Retreat_0vdpIn06ifF3xxqZ.json b/src/packs/domains/domainCard_Phantom_Retreat_0vdpIn06ifF3xxqZ.json index 7e58df93..1acf0f9d 100644 --- a/src/packs/domains/domainCard_Phantom_Retreat_0vdpIn06ifF3xxqZ.json +++ b/src/packs/domains/domainCard_Phantom_Retreat_0vdpIn06ifF3xxqZ.json @@ -14,12 +14,11 @@ "type": "effect", "_id": "SE2C9Andtlw3OQLL", "systemPath": "actions", - "description": "

Spend a Hope to activate Phantom Retreat where you’re currently standing.

", + "description": "

Spend a Hope to activate Phantom Retreat where you’re currently standing.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -49,7 +48,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -70,6 +68,11 @@ "img": "icons/magic/control/silhouette-hold-beam-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" } }, "flags": {}, @@ -77,12 +80,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784491, - "modifiedTime": 1754331063221, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429354517, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "0vdpIn06ifF3xxqZ", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Pick_and_Pull_HdgZUfWd7Hyj7nBW.json b/src/packs/domains/domainCard_Pick_and_Pull_HdgZUfWd7Hyj7nBW.json index 23e477a9..f1a0777f 100644 --- a/src/packs/domains/domainCard_Pick_and_Pull_HdgZUfWd7Hyj7nBW.json +++ b/src/packs/domains/domainCard_Pick_and_Pull_HdgZUfWd7Hyj7nBW.json @@ -8,19 +8,24 @@ "domain": "midnight", "recallCost": 0, "level": 1, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784492, - "modifiedTime": 1754330601777, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429286495, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "HdgZUfWd7Hyj7nBW", "sort": 3400000, @@ -68,7 +73,7 @@ "startRound": null, "startTurn": null }, - "description": "

You have advantage on action rolls to pick nonmagical locks, disarm nonmagical traps, or steal items from a target (either through stealth or by force).

", + "description": "

You have advantage on action rolls to pick nonmagical locks, disarm nonmagical traps, or steal items from a target (either through stealth or by force).

", "origin": null, "tint": "#ffffff", "transfer": true, diff --git a/src/packs/domains/domainCard_Plant_Dominion_9a6xP5pxhVvdugk9.json b/src/packs/domains/domainCard_Plant_Dominion_9a6xP5pxhVvdugk9.json index 8176850e..665a7af9 100644 --- a/src/packs/domains/domainCard_Plant_Dominion_9a6xP5pxhVvdugk9.json +++ b/src/packs/domains/domainCard_Plant_Dominion_9a6xP5pxhVvdugk9.json @@ -57,6 +57,11 @@ "img": "icons/magic/nature/tree-elm-roots-brown.webp", "range": "far" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 131, + "artist": "" } }, "flags": {}, @@ -64,12 +69,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784493, - "modifiedTime": 1754499238543, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429623471, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "9a6xP5pxhVvdugk9", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Premonition_aC43NiFQLpOADyjO.json b/src/packs/domains/domainCard_Premonition_aC43NiFQLpOADyjO.json index 8a590089..8678a0f8 100644 --- a/src/packs/domains/domainCard_Premonition_aC43NiFQLpOADyjO.json +++ b/src/packs/domains/domainCard_Premonition_aC43NiFQLpOADyjO.json @@ -19,10 +19,10 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "aC43NiFQLpOADyjO", + "key": "resource", + "itemId": "aC43NiFQLpOADyjO", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -49,6 +49,11 @@ "recovery": "longRest", "max": "1", "icon": "" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" } }, "flags": {}, @@ -56,12 +61,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784494, - "modifiedTime": 1754253731528, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575616, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "aC43NiFQLpOADyjO", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Preservation_Blast_1p1cOmbnRd5CoKBp.json b/src/packs/domains/domainCard_Preservation_Blast_1p1cOmbnRd5CoKBp.json index 2460130f..9240a534 100644 --- a/src/packs/domains/domainCard_Preservation_Blast_1p1cOmbnRd5CoKBp.json +++ b/src/packs/domains/domainCard_Preservation_Blast_1p1cOmbnRd5CoKBp.json @@ -84,6 +84,11 @@ "img": "icons/magic/air/air-pressure-shield-blue.webp", "range": "melee" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 119, + "artist": "" } }, "flags": {}, @@ -91,12 +96,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784495, - "modifiedTime": 1754253657439, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755427971834, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "1p1cOmbnRd5CoKBp", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Rage_Up_GRL0cvs96vrTDckZ.json b/src/packs/domains/domainCard_Rage_Up_GRL0cvs96vrTDckZ.json index b11bd6f9..f7e72b9f 100644 --- a/src/packs/domains/domainCard_Rage_Up_GRL0cvs96vrTDckZ.json +++ b/src/packs/domains/domainCard_Rage_Up_GRL0cvs96vrTDckZ.json @@ -14,7 +14,7 @@ "type": "effect", "_id": "LmjwPg03xLnoGTHm", "systemPath": "actions", - "description": "", + "description": "

You can mark a Stress to gain a bonus to your damage roll equal to twice your Strength.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -22,8 +22,7 @@ "scalable": false, "key": "stress", "value": 1, - "step": 1, - "keyIsID": false, + "step": null, "consumeOnSuccess": false } ], @@ -40,18 +39,18 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Mark 1 Stress", "img": "icons/magic/control/silhouette-aura-energy.webp", - "range": "" + "range": "self" }, "fKY9NcYBwCFwMsgV": { "type": "effect", "_id": "fKY9NcYBwCFwMsgV", "systemPath": "actions", - "description": "", + "description": "

You can mark a Stress to gain a bonus to your damage roll equal to twice your Strength.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -59,7 +58,6 @@ "scalable": false, "key": "stress", "value": 2, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -77,13 +75,18 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Mark 2 Stress", "img": "icons/magic/control/silhouette-aura-energy.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -91,12 +94,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784496, - "modifiedTime": 1754445106667, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756037744719, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "GRL0cvs96vrTDckZ", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json b/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json index 7327a44e..0651411a 100644 --- a/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json +++ b/src/packs/domains/domainCard_Rain_of_Blades_Ucenef6JpjQxwXni.json @@ -14,12 +14,11 @@ "type": "attack", "_id": "WTnjKQs2uI1TuF9r", "systemPath": "actions", - "description": "

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

", + "description": "

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

@Template[type:emanation|range:vc]

", "chatDisplay": true, "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -140,6 +139,11 @@ "img": "icons/skills/melee/spear-tips-three-purple.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" } }, "flags": {}, @@ -147,12 +151,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784497, - "modifiedTime": 1754330607042, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756038335767, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "Ucenef6JpjQxwXni", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Rapid_Riposte_tceJDcCUefrMS2Ov.json b/src/packs/domains/domainCard_Rapid_Riposte_tceJDcCUefrMS2Ov.json index e2f248c7..2f3bb3a0 100644 --- a/src/packs/domains/domainCard_Rapid_Riposte_tceJDcCUefrMS2Ov.json +++ b/src/packs/domains/domainCard_Rapid_Riposte_tceJDcCUefrMS2Ov.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,6 +41,11 @@ "img": "icons/skills/melee/maneuver-greatsword-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784497, - "modifiedTime": 1754252487558, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428316589, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "tceJDcCUefrMS2Ov", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Reaper_s_Strike_MCgNRlh0s5XUPCfl.json b/src/packs/domains/domainCard_Reaper_s_Strike_MCgNRlh0s5XUPCfl.json index 201005a1..df98b899 100644 --- a/src/packs/domains/domainCard_Reaper_s_Strike_MCgNRlh0s5XUPCfl.json +++ b/src/packs/domains/domainCard_Reaper_s_Strike_MCgNRlh0s5XUPCfl.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -66,6 +65,11 @@ "img": "icons/skills/melee/strike-axe-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" } }, "flags": {}, @@ -73,12 +77,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784498, - "modifiedTime": 1754304768446, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428200348, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "MCgNRlh0s5XUPCfl", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Reassurance_iYNVTB7uAD1FTCZu.json b/src/packs/domains/domainCard_Reassurance_iYNVTB7uAD1FTCZu.json index 43c17e96..87ec672e 100644 --- a/src/packs/domains/domainCard_Reassurance_iYNVTB7uAD1FTCZu.json +++ b/src/packs/domains/domainCard_Reassurance_iYNVTB7uAD1FTCZu.json @@ -33,6 +33,11 @@ "img": "icons/sundries/gaming/dice-pair-white-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 132, + "artist": "" } }, "flags": {}, @@ -40,12 +45,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784499, - "modifiedTime": 1754498645559, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429669557, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "iYNVTB7uAD1FTCZu", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Reckless_2ooUo2yoilGifY81.json b/src/packs/domains/domainCard_Reckless_2ooUo2yoilGifY81.json index 7e6d927a..3784874b 100644 --- a/src/packs/domains/domainCard_Reckless_2ooUo2yoilGifY81.json +++ b/src/packs/domains/domainCard_Reckless_2ooUo2yoilGifY81.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,6 +41,11 @@ "img": "icons/magic/control/silhouette-aura-energy.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784500, - "modifiedTime": 1754304322191, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428107078, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "2ooUo2yoilGifY81", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Recovery_gsiQFT6q3WOgqerJ.json b/src/packs/domains/domainCard_Recovery_gsiQFT6q3WOgqerJ.json index 8b491d49..963abf97 100644 --- a/src/packs/domains/domainCard_Recovery_gsiQFT6q3WOgqerJ.json +++ b/src/packs/domains/domainCard_Recovery_gsiQFT6q3WOgqerJ.json @@ -38,6 +38,11 @@ "img": "icons/magic/life/cross-beam-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -45,12 +50,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784500, - "modifiedTime": 1754252490411, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428322053, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "gsiQFT6q3WOgqerJ", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Redirect_faU0XkJCbar69PiN.json b/src/packs/domains/domainCard_Redirect_faU0XkJCbar69PiN.json index 85a952c3..86c765a2 100644 --- a/src/packs/domains/domainCard_Redirect_faU0XkJCbar69PiN.json +++ b/src/packs/domains/domainCard_Redirect_faU0XkJCbar69PiN.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,6 +41,11 @@ "img": "icons/skills/melee/sword-twirl-orange.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784500, - "modifiedTime": 1754252475141, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428292852, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "faU0XkJCbar69PiN", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json b/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json index 4d910604..e4a9a421 100644 --- a/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json +++ b/src/packs/domains/domainCard_Rejuvenation_Barrier_HtWx5IIemCoorMj2.json @@ -82,6 +82,11 @@ "img": "icons/magic/nature/leaf-hand-green.webp", "range": "veryClose" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 131, + "artist": "" } }, "flags": {}, @@ -89,12 +94,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784502, - "modifiedTime": 1754499308449, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429606994, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "HtWx5IIemCoorMj2", "sort": 3400000, @@ -132,7 +137,7 @@ "startRound": null, "startTurn": null }, - "description": "

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

", + "description": "

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

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Restoration_wUQFsRtww18naYaq.json b/src/packs/domains/domainCard_Restoration_wUQFsRtww18naYaq.json index c75e8ca6..830033c3 100644 --- a/src/packs/domains/domainCard_Restoration_wUQFsRtww18naYaq.json +++ b/src/packs/domains/domainCard_Restoration_wUQFsRtww18naYaq.json @@ -22,16 +22,16 @@ "type": "healing", "_id": "udmHKUtCDClxeB4h", "systemPath": "actions", - "description": "

Touch a creature and spend any number of tokens to clear 2 Hit Points or 2 Stress for each token spent.

", + "description": "

Touch a creature and spend any number of tokens to clear 2 Hit Points or 2 Stress for each token spent.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": true, - "key": "wUQFsRtww18naYaq", + "key": "resource", + "itemId": "wUQFsRtww18naYaq", "value": 1, + "scalable": true, "step": null, - "keyIsID": true, "consumeOnSuccess": false } ], @@ -99,16 +99,16 @@ "type": "healing", "_id": "TvF88tS5x3Yof8Q1", "systemPath": "actions", - "description": "

Touch a creature and spend any number of tokens to clear 2 Hit Points or 2 Stress for each token spent.

", + "description": "

Touch a creature and spend any number of tokens to clear 2 Hit Points or 2 Stress for each token spent.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": true, - "key": "wUQFsRtww18naYaq", + "key": "resource", + "itemId": "wUQFsRtww18naYaq", "value": 1, + "scalable": true, "step": 1, - "keyIsID": true, "consumeOnSuccess": false } ], @@ -181,11 +181,11 @@ "actionType": "action", "cost": [ { - "scalable": true, - "key": "wUQFsRtww18naYaq", + "key": "resource", + "itemId": "wUQFsRtww18naYaq", "value": 1, + "scalable": true, "step": null, - "keyIsID": true, "consumeOnSuccess": false } ], @@ -204,6 +204,11 @@ "img": "icons/magic/light/beam-rays-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" } }, "flags": {}, @@ -211,12 +216,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784502, - "modifiedTime": 1754498742091, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756325575854, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "wUQFsRtww18naYaq", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Resurrection_z30ciOwQI7g3tHla.json b/src/packs/domains/domainCard_Resurrection_z30ciOwQI7g3tHla.json index 7d580ff9..7b44c5dd 100644 --- a/src/packs/domains/domainCard_Resurrection_z30ciOwQI7g3tHla.json +++ b/src/packs/domains/domainCard_Resurrection_z30ciOwQI7g3tHla.json @@ -14,7 +14,7 @@ "type": "attack", "_id": "znSDInMjOlFZn7Vp", "systemPath": "actions", - "description": "

Make a Spellcast Roll (20). On a success, restore one creature who has been dead no longer than 100 years to full strength.

", + "description": "

Make a Spellcast Roll (20). On a success, restore one creature who has been dead no longer than 100 years to full strength.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -61,7 +61,7 @@ "type": "attack", "_id": "NurXUfoPDSVptejR", "systemPath": "actions", - "description": "

Then roll a d6. On a result of 5 or lower, place this card in your vault permanently. On a failure, you can’t cast Resurrection again for a week.

", + "description": "

Then roll a d6. On a result of 5 or lower, place this card in your vault permanently. On a failure, you can’t cast Resurrection again for a week.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -104,6 +104,11 @@ "img": "icons/sundries/gaming/dice-runed-brown.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" } }, "flags": {}, @@ -111,12 +116,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784503, - "modifiedTime": 1754270120120, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429807372, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "z30ciOwQI7g3tHla", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Rift_Walker_vd5STqX29RpYbGxa.json b/src/packs/domains/domainCard_Rift_Walker_vd5STqX29RpYbGxa.json index 476e9534..76313434 100644 --- a/src/packs/domains/domainCard_Rift_Walker_vd5STqX29RpYbGxa.json +++ b/src/packs/domains/domainCard_Rift_Walker_vd5STqX29RpYbGxa.json @@ -57,6 +57,11 @@ "img": "icons/magic/earth/projectile-stone-bullet-pink.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" } }, "flags": {}, @@ -64,12 +69,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784503, - "modifiedTime": 1754253784334, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755427997569, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "vd5STqX29RpYbGxa", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Rise_Up_oDIZoC4l19Nli0Fj.json b/src/packs/domains/domainCard_Rise_Up_oDIZoC4l19Nli0Fj.json index d7c8c618..99f02f13 100644 --- a/src/packs/domains/domainCard_Rise_Up_oDIZoC4l19Nli0Fj.json +++ b/src/packs/domains/domainCard_Rise_Up_oDIZoC4l19Nli0Fj.json @@ -77,6 +77,11 @@ "img": "icons/magic/life/heart-cross-strong-purple-orange.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" } }, "flags": {}, @@ -84,12 +89,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784504, - "modifiedTime": 1754242078238, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429903155, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "oDIZoC4l19Nli0Fj", "sort": 3400000, @@ -125,7 +130,7 @@ "startRound": null, "startTurn": null }, - "description": "

Gain a bonus to your Severe threshold equal to your Proficiency.

", + "description": "

Gain a bonus to your Severe threshold equal to your Proficiency.

", "origin": null, "tint": "#ffffff", "transfer": true, diff --git a/src/packs/domains/domainCard_Rousing_Strike_pcbYD33rBBdAo5f9.json b/src/packs/domains/domainCard_Rousing_Strike_pcbYD33rBBdAo5f9.json index 47aa96d1..99c411fe 100644 --- a/src/packs/domains/domainCard_Rousing_Strike_pcbYD33rBBdAo5f9.json +++ b/src/packs/domains/domainCard_Rousing_Strike_pcbYD33rBBdAo5f9.json @@ -32,6 +32,11 @@ "img": "icons/magic/light/hand-sparks-glow-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" } }, "flags": {}, @@ -39,12 +44,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784506, - "modifiedTime": 1754242030472, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429887417, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "pcbYD33rBBdAo5f9", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Rune_Ward_GEhBUmv9Bj7oJfHk.json b/src/packs/domains/domainCard_Rune_Ward_GEhBUmv9Bj7oJfHk.json index ea33cfcb..f84e035b 100644 --- a/src/packs/domains/domainCard_Rune_Ward_GEhBUmv9Bj7oJfHk.json +++ b/src/packs/domains/domainCard_Rune_Ward_GEhBUmv9Bj7oJfHk.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -47,7 +46,7 @@ "bonus": null, "advState": "neutral", "diceRolling": { - "multiplier": "prof", + "multiplier": "flat", "flatMultiplier": 1, "dice": "d8", "compare": null, @@ -64,6 +63,11 @@ "img": "icons/commodities/gems/gem-faceted-diamond-pink-gold.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 119, + "artist": "" } }, "flags": {}, @@ -71,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753922784506, - "modifiedTime": 1754253212120, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1761502476899, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_id": "GEhBUmv9Bj7oJfHk", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Safe_Haven_lmBLMPuR8qLbuzNf.json b/src/packs/domains/domainCard_Safe_Haven_lmBLMPuR8qLbuzNf.json index 3f84099c..7f542794 100644 --- a/src/packs/domains/domainCard_Safe_Haven_lmBLMPuR8qLbuzNf.json +++ b/src/packs/domains/domainCard_Safe_Haven_lmBLMPuR8qLbuzNf.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null } ], @@ -45,6 +44,11 @@ "img": "icons/environment/settlement/watchtower-moonlit-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 125, + "artist": "" } }, "flags": {}, @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784506, - "modifiedTime": 1754233292265, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429092085, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "lmBLMPuR8qLbuzNf", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Sage_Touched_VOSFaQHZbmhMyXwi.json b/src/packs/domains/domainCard_Sage_Touched_VOSFaQHZbmhMyXwi.json index 3f172c21..520f98e1 100644 --- a/src/packs/domains/domainCard_Sage_Touched_VOSFaQHZbmhMyXwi.json +++ b/src/packs/domains/domainCard_Sage_Touched_VOSFaQHZbmhMyXwi.json @@ -19,11 +19,12 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "VOSFaQHZbmhMyXwi", + "key": "resource", + "itemId": "VOSFaQHZbmhMyXwi", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -54,11 +55,12 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "VOSFaQHZbmhMyXwi", + "key": "resource", + "itemId": "VOSFaQHZbmhMyXwi", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -87,6 +89,11 @@ "max": "1", "icon": "", "recovery": "shortRest" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 131, + "artist": "" } }, "flags": {}, @@ -94,12 +101,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784507, - "modifiedTime": 1754339963905, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575562, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "VOSFaQHZbmhMyXwi", "sort": 3400000, @@ -135,7 +142,7 @@ "startRound": null, "startTurn": null }, - "description": "

While you’re in a natural environment, you gain a +2 bonus to your Spellcast Rolls.

", + "description": "

While you’re in a natural environment, you gain a +2 bonus to your Spellcast Rolls.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -239,7 +246,7 @@ "startRound": null, "startTurn": null }, - "description": "

Once per rest, you can double your Agility or Instinct when making a roll that uses that trait. You must choose to do this before you roll.

", + "description": "

Once per rest, you can double your Agility or Instinct when making a roll that uses that trait. You must choose to do this before you roll.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json b/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json index 0d799f82..7009df65 100644 --- a/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json +++ b/src/packs/domains/domainCard_Salvation_Beam_4uAFGp3LxiC07woC.json @@ -14,7 +14,7 @@ "type": "healing", "_id": "dmnB4ZMSk8lsB8Lg", "systemPath": "actions", - "description": "

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

", + "description": "

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

@Template[type:ray|range:f]

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -23,8 +23,7 @@ "scalable": true, "key": "stress", "value": 1, - "step": null, - "keyIsID": false + "step": null } ], "uses": { @@ -87,6 +86,11 @@ "img": "icons/magic/light/beams-rays-orange-purple-large.webp", "range": "far" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" } }, "flags": {}, @@ -94,12 +98,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784508, - "modifiedTime": 1754270031835, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756038941872, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "4uAFGp3LxiC07woC", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Scramble_5bBU9jWHOuOY12lR.json b/src/packs/domains/domainCard_Scramble_5bBU9jWHOuOY12lR.json index 5ca6fc07..77b1b0c8 100644 --- a/src/packs/domains/domainCard_Scramble_5bBU9jWHOuOY12lR.json +++ b/src/packs/domains/domainCard_Scramble_5bBU9jWHOuOY12lR.json @@ -33,6 +33,11 @@ "img": "icons/skills/movement/feet-winged-boots-brown.webp", "range": "melee" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -40,12 +45,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784509, - "modifiedTime": 1754304188850, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428115458, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "5bBU9jWHOuOY12lR", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Second_Wind_ffPbSEvLuFrFsMxl.json b/src/packs/domains/domainCard_Second_Wind_ffPbSEvLuFrFsMxl.json index 07b037d6..671ffcfb 100644 --- a/src/packs/domains/domainCard_Second_Wind_ffPbSEvLuFrFsMxl.json +++ b/src/packs/domains/domainCard_Second_Wind_ffPbSEvLuFrFsMxl.json @@ -19,10 +19,10 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "ffPbSEvLuFrFsMxl", + "key": "resource", + "itemId": "ffPbSEvLuFrFsMxl", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -96,10 +96,10 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "ffPbSEvLuFrFsMxl", + "key": "resource", + "itemId": "ffPbSEvLuFrFsMxl", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -171,6 +171,11 @@ "recovery": "shortRest", "max": "1", "icon": "" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 132, + "artist": "" } }, "flags": {}, @@ -178,12 +183,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784509, - "modifiedTime": 1754269533170, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575706, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "ffPbSEvLuFrFsMxl", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Sensory_Projection_gZOMzskSOfeiXn54.json b/src/packs/domains/domainCard_Sensory_Projection_gZOMzskSOfeiXn54.json index 227ab463..9e0e7f67 100644 --- a/src/packs/domains/domainCard_Sensory_Projection_gZOMzskSOfeiXn54.json +++ b/src/packs/domains/domainCard_Sensory_Projection_gZOMzskSOfeiXn54.json @@ -57,6 +57,11 @@ "img": "icons/magic/control/debuff-energy-hold-pink.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" } }, "flags": {}, @@ -64,12 +69,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784511, - "modifiedTime": 1754254316744, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755428050507, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "gZOMzskSOfeiXn54", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json b/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json index 000a1b1f..25277259 100644 --- a/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json +++ b/src/packs/domains/domainCard_Shadowbind_kguhWlidhxe2GbT0.json @@ -61,6 +61,11 @@ "img": "icons/magic/control/debuff-energy-snare-blue.webp", "range": "veryClose" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" } }, "flags": {}, @@ -68,12 +73,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784512, - "modifiedTime": 1754499502570, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429312498, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "kguhWlidhxe2GbT0", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Shadowhunter_A0XzD6MmBXYdk7Ps.json b/src/packs/domains/domainCard_Shadowhunter_A0XzD6MmBXYdk7Ps.json index 1b1639fd..b943486d 100644 --- a/src/packs/domains/domainCard_Shadowhunter_A0XzD6MmBXYdk7Ps.json +++ b/src/packs/domains/domainCard_Shadowhunter_A0XzD6MmBXYdk7Ps.json @@ -9,19 +9,24 @@ "recallCost": 2, "level": 8, "type": "ability", - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 129, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784513, - "modifiedTime": 1754331190370, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429396600, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "A0XzD6MmBXYdk7Ps", "sort": 3400000, @@ -50,7 +55,7 @@ "startRound": null, "startTurn": null }, - "description": "

While you’re shrouded in low light or darkness, you gain a +1 bonus to your Evasion and make attack rolls with advantage.

", + "description": "

While you’re shrouded in low light or darkness, you gain a +1 bonus to your Evasion and make attack rolls with advantage.

", "origin": null, "tint": "#ffffff", "transfer": true, diff --git a/src/packs/domains/domainCard_Shape_Material_db4xV3YErHRslbVE.json b/src/packs/domains/domainCard_Shape_Material_db4xV3YErHRslbVE.json index c4eb21a0..e3b3569c 100644 --- a/src/packs/domains/domainCard_Shape_Material_db4xV3YErHRslbVE.json +++ b/src/packs/domains/domainCard_Shape_Material_db4xV3YErHRslbVE.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -42,6 +41,11 @@ "img": "icons/commodities/stone/geode-raw-white.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784514, - "modifiedTime": 1754269669897, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429726392, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "db4xV3YErHRslbVE", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Share_the_Burden_8nRle10pw1HO8QVu.json b/src/packs/domains/domainCard_Share_the_Burden_8nRle10pw1HO8QVu.json index 62c4de86..202a4e58 100644 --- a/src/packs/domains/domainCard_Share_the_Burden_8nRle10pw1HO8QVu.json +++ b/src/packs/domains/domainCard_Share_the_Burden_8nRle10pw1HO8QVu.json @@ -33,6 +33,11 @@ "img": "systems/daggerheart/assets/icons/domains/domain-card/grace.png", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -40,12 +45,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784515, - "modifiedTime": 1754499760780, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429220432, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "8nRle10pw1HO8QVu", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Shield_Aura_rfIv6lln40Fh6EIl.json b/src/packs/domains/domainCard_Shield_Aura_rfIv6lln40Fh6EIl.json index ea63ca5a..0aa37f29 100644 --- a/src/packs/domains/domainCard_Shield_Aura_rfIv6lln40Fh6EIl.json +++ b/src/packs/domains/domainCard_Shield_Aura_rfIv6lln40Fh6EIl.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -47,6 +46,11 @@ "img": "icons/magic/defensive/shield-barrier-flaming-diamond-orange.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" } }, "flags": {}, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784516, - "modifiedTime": 1754269891393, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429770054, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "rfIv6lln40Fh6EIl", "sort": 3400000, @@ -97,7 +101,7 @@ "startRound": null, "startTurn": null }, - "description": "

When the target marks an Armor Slot, they reduce the severity of the attack by an additional threshold. If this spell causes a creature who would be damaged to instead mark no Hit Points, the effect ends.

", + "description": "

When the target marks an Armor Slot, they reduce the severity of the attack by an additional threshold. If this spell causes a creature who would be damaged to instead mark no Hit Points, the effect ends.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Shrug_It_Off_JwfhtgmmuRxg4zhI.json b/src/packs/domains/domainCard_Shrug_It_Off_JwfhtgmmuRxg4zhI.json index 2b7ccf04..cded950d 100644 --- a/src/packs/domains/domainCard_Shrug_It_Off_JwfhtgmmuRxg4zhI.json +++ b/src/packs/domains/domainCard_Shrug_It_Off_JwfhtgmmuRxg4zhI.json @@ -23,7 +23,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -65,6 +64,11 @@ "img": "icons/magic/defensive/shield-barrier-deflect-teal.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" } }, "flags": {}, @@ -72,12 +76,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784516, - "modifiedTime": 1754242112465, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429912530, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "JwfhtgmmuRxg4zhI", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Sigil_of_Retribution_RiuN0lMlfoTAhLJz.json b/src/packs/domains/domainCard_Sigil_of_Retribution_RiuN0lMlfoTAhLJz.json index cd3e81b3..edb6588b 100644 --- a/src/packs/domains/domainCard_Sigil_of_Retribution_RiuN0lMlfoTAhLJz.json +++ b/src/packs/domains/domainCard_Sigil_of_Retribution_RiuN0lMlfoTAhLJz.json @@ -44,6 +44,11 @@ "img": "icons/magic/symbols/triangle-glow-purple.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 125, + "artist": "" } }, "flags": {}, @@ -51,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784517, - "modifiedTime": 1754232249140, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429062367, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "RiuN0lMlfoTAhLJz", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Signature_Move_LWRkhNY968Cu2Zl5.json b/src/packs/domains/domainCard_Signature_Move_LWRkhNY968Cu2Zl5.json index 29ab1f5c..b429259a 100644 --- a/src/packs/domains/domainCard_Signature_Move_LWRkhNY968Cu2Zl5.json +++ b/src/packs/domains/domainCard_Signature_Move_LWRkhNY968Cu2Zl5.json @@ -8,19 +8,24 @@ "domain": "bone", "recallCost": 1, "level": 5, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784518, - "modifiedTime": 1754252482524, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428307837, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "LWRkhNY968Cu2Zl5", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Smite_U1uWJE94HZVudujz.json b/src/packs/domains/domainCard_Smite_U1uWJE94HZVudujz.json index 939fff19..1b707341 100644 --- a/src/packs/domains/domainCard_Smite_U1uWJE94HZVudujz.json +++ b/src/packs/domains/domainCard_Smite_U1uWJE94HZVudujz.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -40,13 +39,18 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Charge Smite", "img": "icons/skills/melee/sword-winged-holy-orange.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" } }, "flags": {}, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784519, - "modifiedTime": 1754498725946, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756038851464, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "U1uWJE94HZVudujz", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Soothing_Speech_QED2PDYePOSTbLtC.json b/src/packs/domains/domainCard_Soothing_Speech_QED2PDYePOSTbLtC.json index 73bef395..f7520c6c 100644 --- a/src/packs/domains/domainCard_Soothing_Speech_QED2PDYePOSTbLtC.json +++ b/src/packs/domains/domainCard_Soothing_Speech_QED2PDYePOSTbLtC.json @@ -144,6 +144,11 @@ "img": "icons/commodities/gems/gem-faceted-diamond-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -151,12 +156,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784519, - "modifiedTime": 1754341467905, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429180273, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "QED2PDYePOSTbLtC", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Specter_of_the_Dark_iQhgqmLwhcSTYnvr.json b/src/packs/domains/domainCard_Specter_of_the_Dark_iQhgqmLwhcSTYnvr.json index a5ba7cae..ed7ae5db 100644 --- a/src/packs/domains/domainCard_Specter_of_the_Dark_iQhgqmLwhcSTYnvr.json +++ b/src/packs/domains/domainCard_Specter_of_the_Dark_iQhgqmLwhcSTYnvr.json @@ -14,7 +14,7 @@ "type": "effect", "_id": "K91pB8O1ak8fikUj", "systemPath": "actions", - "description": "

Mark a Stress to become Spectral until you make an action roll targeting another creature. While Spectral, you’re immune to physical damage and can float and pass through solid objects. Other creatures can still see you while you’re in this form.

", + "description": "

Mark a Stress to become Spectral until you make an action roll targeting another creature. While Spectral, you’re immune to physical damage and can float and pass through solid objects. Other creatures can still see you while you’re in this form.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -38,13 +37,18 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Become Spectral", "img": "icons/magic/unholy/silhouette-light-fire-blue.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 129, + "artist": "" } }, "flags": {}, @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784520, - "modifiedTime": 1754331335651, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756038467712, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "iQhgqmLwhcSTYnvr", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Spellcharge_ewhIzXQ2h9fS9I8c.json b/src/packs/domains/domainCard_Spellcharge_ewhIzXQ2h9fS9I8c.json index 651fe897..674316ac 100644 --- a/src/packs/domains/domainCard_Spellcharge_ewhIzXQ2h9fS9I8c.json +++ b/src/packs/domains/domainCard_Spellcharge_ewhIzXQ2h9fS9I8c.json @@ -20,16 +20,17 @@ "type": "effect", "_id": "jCgZ0yCoIhSAVEw3", "systemPath": "actions", - "description": "

When you make a successful attack against a target, you can spend any number of tokens to add a d6 for each token spent to your damage roll.

", + "description": "

When you make a successful attack against a target, you can spend any number of tokens to add a d6 for each token spent to your damage roll.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": true, - "key": "ewhIzXQ2h9fS9I8c", + "key": "resource", + "itemId": "ewhIzXQ2h9fS9I8c", "value": 1, - "keyIsID": true, - "step": null + "scalable": true, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -46,6 +47,11 @@ "img": "icons/commodities/gems/gem-faceted-diamond-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 129, + "artist": "" } }, "flags": {}, @@ -53,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784521, - "modifiedTime": 1754331207737, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575684, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "ewhIzXQ2h9fS9I8c", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Splendor_Touched_JT5dM3gVL6chDBYU.json b/src/packs/domains/domainCard_Splendor_Touched_JT5dM3gVL6chDBYU.json index 0772f92b..03d39a92 100644 --- a/src/packs/domains/domainCard_Splendor_Touched_JT5dM3gVL6chDBYU.json +++ b/src/packs/domains/domainCard_Splendor_Touched_JT5dM3gVL6chDBYU.json @@ -8,19 +8,24 @@ "domain": "splendor", "recallCost": 2, "level": 7, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784522, - "modifiedTime": 1754268980895, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429762596, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "JT5dM3gVL6chDBYU", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Splintering_Strike_TYKfM3H9vBXyWiH4.json b/src/packs/domains/domainCard_Splintering_Strike_TYKfM3H9vBXyWiH4.json index ed3d5f4c..24a0433f 100644 --- a/src/packs/domains/domainCard_Splintering_Strike_TYKfM3H9vBXyWiH4.json +++ b/src/packs/domains/domainCard_Splintering_Strike_TYKfM3H9vBXyWiH4.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -66,6 +65,11 @@ "img": "icons/skills/melee/strike-sword-steel-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -73,12 +77,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784522, - "modifiedTime": 1754501075258, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428367184, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "TYKfM3H9vBXyWiH4", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Stealth_Expertise_NIUhmuQGwbb3UClZ.json b/src/packs/domains/domainCard_Stealth_Expertise_NIUhmuQGwbb3UClZ.json index a19143c9..bb2d4eaa 100644 --- a/src/packs/domains/domainCard_Stealth_Expertise_NIUhmuQGwbb3UClZ.json +++ b/src/packs/domains/domainCard_Stealth_Expertise_NIUhmuQGwbb3UClZ.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -40,6 +39,11 @@ "img": "icons/commodities/gems/gem-faceted-octagon-yellow.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" } }, "flags": {}, @@ -47,12 +51,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784523, - "modifiedTime": 1754330848539, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429340856, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "NIUhmuQGwbb3UClZ", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Strategic_Approach_5b1awkgTmMp3FVrm.json b/src/packs/domains/domainCard_Strategic_Approach_5b1awkgTmMp3FVrm.json index ae4ab09d..697f29cd 100644 --- a/src/packs/domains/domainCard_Strategic_Approach_5b1awkgTmMp3FVrm.json +++ b/src/packs/domains/domainCard_Strategic_Approach_5b1awkgTmMp3FVrm.json @@ -27,10 +27,10 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "5b1awkgTmMp3FVrm", + "key": "resource", + "itemId": "5b1awkgTmMp3FVrm", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -50,6 +50,11 @@ "img": "icons/skills/targeting/crosshair-arrowhead-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" } }, "flags": {}, @@ -57,12 +62,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784523, - "modifiedTime": 1754501630846, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756325575271, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "5b1awkgTmMp3FVrm", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json b/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json index b601a08d..39fd5f6c 100644 --- a/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json +++ b/src/packs/domains/domainCard_Stunning_Sunlight_lRHo6ZkK1zybeEoG.json @@ -23,8 +23,7 @@ "scalable": true, "key": "hope", "value": 1, - "step": null, - "keyIsID": false + "step": null } ], "uses": { @@ -152,6 +151,11 @@ "img": "icons/magic/light/beam-strike-village-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" } }, "flags": {}, @@ -159,12 +163,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784524, - "modifiedTime": 1754269929319, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429776475, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "lRHo6ZkK1zybeEoG", "sort": 3400000, @@ -195,7 +199,7 @@ "startRound": null, "startTurn": null }, - "description": "

Temporarily Stunned. While Stunned, they can’t use reactions and can’t take any other actions until they clear this condition.

", + "description": "

Temporarily Stunned. While Stunned, they can’t use reactions and can’t take any other actions until they clear this condition.

", "tint": "#ffffff", "statuses": [ "stun" diff --git a/src/packs/domains/domainCard_Support_Tank_stId5syX7YpP2JGz.json b/src/packs/domains/domainCard_Support_Tank_stId5syX7YpP2JGz.json index 04c3c64c..7e0dcf37 100644 --- a/src/packs/domains/domainCard_Support_Tank_stId5syX7YpP2JGz.json +++ b/src/packs/domains/domainCard_Support_Tank_stId5syX7YpP2JGz.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null } ], @@ -40,6 +39,11 @@ "img": "icons/magic/holy/barrier-shield-winged-blue.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" } }, "flags": {}, @@ -47,12 +51,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784525, - "modifiedTime": 1754241759840, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429875110, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "stId5syX7YpP2JGz", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Swift_Step_H6TqCJBaa1eWEQ1z.json b/src/packs/domains/domainCard_Swift_Step_H6TqCJBaa1eWEQ1z.json index 0dc8c2c9..cc2a4a10 100644 --- a/src/packs/domains/domainCard_Swift_Step_H6TqCJBaa1eWEQ1z.json +++ b/src/packs/domains/domainCard_Swift_Step_H6TqCJBaa1eWEQ1z.json @@ -146,6 +146,11 @@ "img": "icons/magic/life/cross-beam-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -153,12 +158,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784526, - "modifiedTime": 1754252518993, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428380396, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "H6TqCJBaa1eWEQ1z", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Tactician_WChWEH36lUpXAC0K.json b/src/packs/domains/domainCard_Tactician_WChWEH36lUpXAC0K.json index bcd56d25..eb3546f1 100644 --- a/src/packs/domains/domainCard_Tactician_WChWEH36lUpXAC0K.json +++ b/src/packs/domains/domainCard_Tactician_WChWEH36lUpXAC0K.json @@ -8,19 +8,24 @@ "domain": "bone", "recallCost": 1, "level": 3, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784526, - "modifiedTime": 1754249669078, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428277274, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "WChWEH36lUpXAC0K", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Telekinesis_FgzBppvLjXr0UbUI.json b/src/packs/domains/domainCard_Telekinesis_FgzBppvLjXr0UbUI.json index 22a7d347..cffac839 100644 --- a/src/packs/domains/domainCard_Telekinesis_FgzBppvLjXr0UbUI.json +++ b/src/packs/domains/domainCard_Telekinesis_FgzBppvLjXr0UbUI.json @@ -131,6 +131,11 @@ "img": "icons/magic/control/energy-stream-link-spiral-blue.webp", "range": "far" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 120, + "artist": "" } }, "flags": {}, @@ -138,12 +143,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784527, - "modifiedTime": 1754253886885, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755428003177, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "FgzBppvLjXr0UbUI", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Teleport_HnPwVrWblYa9hwSt.json b/src/packs/domains/domainCard_Teleport_HnPwVrWblYa9hwSt.json index e1569b1a..9e4e39ec 100644 --- a/src/packs/domains/domainCard_Teleport_HnPwVrWblYa9hwSt.json +++ b/src/packs/domains/domainCard_Teleport_HnPwVrWblYa9hwSt.json @@ -56,6 +56,11 @@ "img": "icons/magic/movement/pinwheel-turning-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 125, + "artist": "" } }, "flags": {}, @@ -63,12 +68,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784528, - "modifiedTime": 1754231629691, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429045982, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "HnPwVrWblYa9hwSt", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Tell_No_Lies_HTv9QEPS466WsstP.json b/src/packs/domains/domainCard_Tell_No_Lies_HTv9QEPS466WsstP.json index f25819c7..a3ceb370 100644 --- a/src/packs/domains/domainCard_Tell_No_Lies_HTv9QEPS466WsstP.json +++ b/src/packs/domains/domainCard_Tell_No_Lies_HTv9QEPS466WsstP.json @@ -82,6 +82,11 @@ "img": "icons/magic/control/voodoo-doll-pain-damage-red.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -89,12 +94,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784529, - "modifiedTime": 1754341185897, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429155562, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "HTv9QEPS466WsstP", "sort": 3400000, @@ -123,7 +128,7 @@ "startRound": null, "startTurn": null }, - "description": "

Can’t lie to you while they remain within Close range, but they are not compelled to speak. If you ask them a question and they refuse to answer, they must mark a Stress and the effect ends. The target is typically unaware this spell has been cast on them until it causes them to utter the truth.

", + "description": "

Can’t lie to you while they remain within Close range, but they are not compelled to speak. If you ask them a question and they refuse to answer, they must mark a Stress and the effect ends. The target is typically unaware this spell has been cast on them until it causes them to utter the truth.

", "origin": null, "tint": "#ffffff", "transfer": true, diff --git a/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json b/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json index 71d1dc6a..b2ca4f09 100644 --- a/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json +++ b/src/packs/domains/domainCard_Tempest_X7YaZgFieBlqaPdZ.json @@ -244,6 +244,11 @@ "img": "icons/magic/air/air-wave-gust-smoke-yellow.webp", "range": "far" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 132, + "artist": "" } }, "flags": {}, @@ -251,12 +256,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784530, - "modifiedTime": 1754340540933, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429646639, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "X7YaZgFieBlqaPdZ", "sort": 3400000, @@ -333,7 +338,7 @@ "startRound": null, "startTurn": null }, - "description": "

Targets can’t move against the wind.

", + "description": "

Targets can’t move against the wind.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -377,7 +382,7 @@ "startRound": null, "startTurn": null }, - "description": "

Attacks made from beyond Melee range have disadvantage.

", + "description": "

Attacks made from beyond Melee range have disadvantage.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Thorn_Skin_oUipGK84E2KjoKqh.json b/src/packs/domains/domainCard_Thorn_Skin_oUipGK84E2KjoKqh.json index 6aca1471..eba9736d 100644 --- a/src/packs/domains/domainCard_Thorn_Skin_oUipGK84E2KjoKqh.json +++ b/src/packs/domains/domainCard_Thorn_Skin_oUipGK84E2KjoKqh.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -33,12 +32,12 @@ }, "effects": [], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Spend Hope", "img": "icons/magic/nature/thorns-hand-glow-green.webp", - "range": "" + "range": "self" }, "IVAyyVf8gqFWB7bP": { "type": "effect", @@ -49,11 +48,12 @@ "actionType": "action", "cost": [ { - "scalable": true, - "key": "oUipGK84E2KjoKqh", + "key": "resource", + "itemId": "oUipGK84E2KjoKqh", "value": 1, + "scalable": true, "step": 1, - "keyIsID": true + "consumeOnSuccess": false } ], "uses": { @@ -78,6 +78,11 @@ "max": "@cast", "icon": "", "dieFaces": "d6" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 130, + "artist": "" } }, "flags": {}, @@ -85,12 +90,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784531, - "modifiedTime": 1754338832102, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575772, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "oUipGK84E2KjoKqh", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Thought_Delver_B4choj481tqajWb9.json b/src/packs/domains/domainCard_Thought_Delver_B4choj481tqajWb9.json index 3717b810..0f3932d2 100644 --- a/src/packs/domains/domainCard_Thought_Delver_B4choj481tqajWb9.json +++ b/src/packs/domains/domainCard_Thought_Delver_B4choj481tqajWb9.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -49,7 +48,7 @@ "type": "attack", "_id": "nuYCkANsYDtZJO6f", "systemPath": "actions", - "description": "

Make a Spellcast Roll against the target to delve for deeper, more hidden thoughts. On a roll with Fear, the target might, at the GM’s discretion, become aware that you’re reading their thoughts.

", + "description": "

Make a Spellcast Roll against the target to delve for deeper, more hidden thoughts. On a roll with Fear, the target might, at the GM’s discretion, become aware that you’re reading their thoughts.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -91,6 +90,11 @@ "img": "icons/magic/control/fear-fright-shadow-monster-purple.webp", "range": "far" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -98,12 +102,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784532, - "modifiedTime": 1754341613759, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429199741, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "B4choj481tqajWb9", "sort": 3400000, @@ -134,7 +138,7 @@ "startRound": null, "startTurn": null }, - "description": "

Read the vague surface thoughts of a target within Far range. Make a Spellcast Roll against the target to delve for deeper, more hidden thoughts.

", + "description": "

Read the vague surface thoughts of a target within Far range. Make a Spellcast Roll against the target to delve for deeper, more hidden thoughts.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Through_Your_Eyes_7b0mzV5QMPjVPT4o.json b/src/packs/domains/domainCard_Through_Your_Eyes_7b0mzV5QMPjVPT4o.json index 4c3d2611..db7be009 100644 --- a/src/packs/domains/domainCard_Through_Your_Eyes_7b0mzV5QMPjVPT4o.json +++ b/src/packs/domains/domainCard_Through_Your_Eyes_7b0mzV5QMPjVPT4o.json @@ -37,6 +37,11 @@ "img": "icons/magic/perception/eye-slit-pink.webp", "range": "veryFar" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -44,12 +49,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784533, - "modifiedTime": 1754341493606, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429187901, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "7b0mzV5QMPjVPT4o", "sort": 3400000, @@ -80,7 +85,7 @@ "startRound": null, "startTurn": null }, - "description": "

Can see through their eyes and hear through their ears.

", + "description": "

Can see through their eyes and hear through their ears.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json b/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json index 124144a8..3b5a5f97 100644 --- a/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json +++ b/src/packs/domains/domainCard_Towering_Stalk_n0P3VS1WfxvmXbB6.json @@ -19,18 +19,20 @@ "actionType": "action", "cost": [ { - "scalable": false, "key": "stress", + "itemId": null, "value": 1, - "keyIsID": false, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false }, { - "scalable": false, - "key": "n0P3VS1WfxvmXbB6", + "key": "resource", + "itemId": "n0P3VS1WfxvmXbB6", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -110,7 +112,6 @@ "scalable": false, "key": "hitPoints", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -130,19 +131,24 @@ "range": "" } }, - "resource": null + "resource": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 130, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784534, - "modifiedTime": 1754499113867, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756325575741, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "n0P3VS1WfxvmXbB6", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Transcendent_Union_kVkoCLBXLAIifqpz.json b/src/packs/domains/domainCard_Transcendent_Union_kVkoCLBXLAIifqpz.json index 10ef5d47..ecee943e 100644 --- a/src/packs/domains/domainCard_Transcendent_Union_kVkoCLBXLAIifqpz.json +++ b/src/packs/domains/domainCard_Transcendent_Union_kVkoCLBXLAIifqpz.json @@ -22,7 +22,6 @@ "scalable": false, "key": "hope", "value": 5, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -47,6 +46,11 @@ "img": "icons/magic/light/explosion-beam-impact-silhouette.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784534, - "modifiedTime": 1754240901607, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429121503, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "kVkoCLBXLAIifqpz", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Troublemaker_JrdZedm1BFKeV7Yb.json b/src/packs/domains/domainCard_Troublemaker_JrdZedm1BFKeV7Yb.json index 5bcd3482..9d8e3db8 100644 --- a/src/packs/domains/domainCard_Troublemaker_JrdZedm1BFKeV7Yb.json +++ b/src/packs/domains/domainCard_Troublemaker_JrdZedm1BFKeV7Yb.json @@ -83,6 +83,11 @@ "img": "icons/magic/control/fear-fright-monster-purple-blue.webp", "range": "far" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 126, + "artist": "" } }, "flags": {}, @@ -90,12 +95,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784535, - "modifiedTime": 1754341260325, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429160838, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "JrdZedm1BFKeV7Yb", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Twilight_Toll_SDjjV61TC1NceV1m.json b/src/packs/domains/domainCard_Twilight_Toll_SDjjV61TC1NceV1m.json index c4c06be8..845d2f11 100644 --- a/src/packs/domains/domainCard_Twilight_Toll_SDjjV61TC1NceV1m.json +++ b/src/packs/domains/domainCard_Twilight_Toll_SDjjV61TC1NceV1m.json @@ -21,16 +21,17 @@ "type": "damage", "_id": "hdMFgH17KyxENDAJ", "systemPath": "actions", - "description": "

When you deal damage to this target, spend any number of tokens to add a d12 for each token spent to your damage roll. You can only hold Twilight Toll on one creature at a time.When you choose a new target or take a rest, clear all unspent tokens.

", + "description": "

When you deal damage to this target, spend any number of tokens to add a d12 for each token spent to your damage roll. You can only hold Twilight Toll on one creature at a time.When you choose a new target or take a rest, clear all unspent tokens.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": true, - "key": "SDjjV61TC1NceV1m", + "key": "resource", + "itemId": "SDjjV61TC1NceV1m", "value": 1, + "scalable": true, "step": 1, - "keyIsID": true + "consumeOnSuccess": false } ], "uses": { @@ -76,6 +77,11 @@ "img": "icons/commodities/gems/gem-faceted-diamond-blue.webp", "range": "far" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 129, + "artist": "" } }, "flags": {}, @@ -83,12 +89,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784535, - "modifiedTime": 1754331253303, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575478, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "SDjjV61TC1NceV1m", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Unbreakable_CUIQmrPjf9VCHmwJ.json b/src/packs/domains/domainCard_Unbreakable_CUIQmrPjf9VCHmwJ.json index 3d06e736..d79fa2a7 100644 --- a/src/packs/domains/domainCard_Unbreakable_CUIQmrPjf9VCHmwJ.json +++ b/src/packs/domains/domainCard_Unbreakable_CUIQmrPjf9VCHmwJ.json @@ -56,6 +56,11 @@ "img": "icons/magic/life/heart-cross-strong-flame-purple-orange.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 135, + "artist": "" } }, "flags": {}, @@ -63,12 +68,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784536, - "modifiedTime": 1754242513278, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429961365, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "CUIQmrPjf9VCHmwJ", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Uncanny_Disguise_TV56wSysbU5xAlOa.json b/src/packs/domains/domainCard_Uncanny_Disguise_TV56wSysbU5xAlOa.json index a90187c0..da019723 100644 --- a/src/packs/domains/domainCard_Uncanny_Disguise_TV56wSysbU5xAlOa.json +++ b/src/packs/domains/domainCard_Uncanny_Disguise_TV56wSysbU5xAlOa.json @@ -14,7 +14,7 @@ "type": "damage", "_id": "Rncq6VD6B9ugC0AO", "systemPath": "actions", - "description": "

When you have a few minutes to prepare, you can mark a Stress to don the facade of any humanoid you can picture clearly in your mind. While disguised, you have advantage on Presence Rolls to avoid scrutiny.

", + "description": "

When you have a few minutes to prepare, you can mark a Stress to don the facade of any humanoid you can picture clearly in your mind. While disguised, you have advantage on Presence Rolls to avoid scrutiny.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -28,7 +28,7 @@ "includeBase": false }, "target": { - "type": "any", + "type": "self", "amount": null }, "effects": [ @@ -39,7 +39,7 @@ ], "name": "Don Facade", "img": "icons/magic/control/debuff-energy-hold-pink.webp", - "range": "" + "range": "self" }, "OoNND7VcWoBQdtFK": { "type": "effect", @@ -50,11 +50,12 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "TV56wSysbU5xAlOa", + "key": "resource", + "itemId": "TV56wSysbU5xAlOa", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -77,6 +78,11 @@ "value": 0, "max": "@cast", "icon": "" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" } }, "flags": {}, @@ -84,12 +90,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784537, - "modifiedTime": 1754330615594, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575516, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "TV56wSysbU5xAlOa", "sort": 3400000, @@ -127,7 +133,7 @@ "startRound": null, "startTurn": null }, - "description": "

Don the facade of any humanoid you can picture clearly in your mind. While disguised, you have advantage on Presence Rolls to avoid scrutiny.

", + "description": "

Don the facade of any humanoid you can picture clearly in your mind. While disguised, you have advantage on Presence Rolls to avoid scrutiny.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Unleash_Chaos_o62i0QdbUDIiAhSq.json b/src/packs/domains/domainCard_Unleash_Chaos_o62i0QdbUDIiAhSq.json index 17f934d6..32682c1e 100644 --- a/src/packs/domains/domainCard_Unleash_Chaos_o62i0QdbUDIiAhSq.json +++ b/src/packs/domains/domainCard_Unleash_Chaos_o62i0QdbUDIiAhSq.json @@ -22,16 +22,16 @@ "type": "attack", "_id": "MWvrKuwejWcQm7N1", "systemPath": "actions", - "description": "

Make a Spellcast Roll against a target within Far range and spend any number of tokens to channel raw energy from within yourself to unleash against them. On a success, roll a number of d10s equal to the tokens you spent and deal that much magic damage to the target.

", + "description": "

Make a Spellcast Roll against a target within Far range and spend any number of tokens to channel raw energy from within yourself to unleash against them. On a success, roll a number of d10s equal to the tokens you spent and deal that much magic damage to the target.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": true, - "key": "o62i0QdbUDIiAhSq", + "key": "resource", + "itemId": "o62i0QdbUDIiAhSq", "value": 1, + "scalable": true, "step": 1, - "keyIsID": true, "consumeOnSuccess": false } ], @@ -113,7 +113,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -126,13 +125,18 @@ }, "effects": [], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Replenish Tokens", "img": "icons/commodities/gems/gem-faceted-diamond-blue.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 119, + "artist": "" } }, "flags": {}, @@ -140,12 +144,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753922784537, - "modifiedTime": 1754501257508, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756325575757, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_id": "o62i0QdbUDIiAhSq", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Untouchable_9QElncQUDSakuSdR.json b/src/packs/domains/domainCard_Untouchable_9QElncQUDSakuSdR.json index 89b4cbee..548f9eee 100644 --- a/src/packs/domains/domainCard_Untouchable_9QElncQUDSakuSdR.json +++ b/src/packs/domains/domainCard_Untouchable_9QElncQUDSakuSdR.json @@ -8,19 +8,24 @@ "domain": "bone", "recallCost": 1, "level": 1, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 122, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784538, - "modifiedTime": 1754249654207, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428252550, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "9QElncQUDSakuSdR", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Unyielding_Armor_s3zRsOMeUkuDwgd8.json b/src/packs/domains/domainCard_Unyielding_Armor_s3zRsOMeUkuDwgd8.json index a5b3ed83..2c991d8d 100644 --- a/src/packs/domains/domainCard_Unyielding_Armor_s3zRsOMeUkuDwgd8.json +++ b/src/packs/domains/domainCard_Unyielding_Armor_s3zRsOMeUkuDwgd8.json @@ -8,19 +8,24 @@ "domain": "valor", "recallCost": 1, "level": 10, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 135, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784538, - "modifiedTime": 1754242525301, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429967098, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "s3zRsOMeUkuDwgd8", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Valor_Touched_k1AtYd3lSchIymBr.json b/src/packs/domains/domainCard_Valor_Touched_k1AtYd3lSchIymBr.json index ec66bbd6..8ff2e41a 100644 --- a/src/packs/domains/domainCard_Valor_Touched_k1AtYd3lSchIymBr.json +++ b/src/packs/domains/domainCard_Valor_Touched_k1AtYd3lSchIymBr.json @@ -77,6 +77,11 @@ "img": "icons/equipment/chest/breastplate-collared-steel-grey.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 134, + "artist": "" } }, "flags": {}, @@ -84,12 +89,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784539, - "modifiedTime": 1754242143242, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429918794, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "k1AtYd3lSchIymBr", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Vanishing_Dodge_GBMIElIpk4cvk1Bd.json b/src/packs/domains/domainCard_Vanishing_Dodge_GBMIElIpk4cvk1Bd.json index 1d9e2108..2e2cb5a0 100644 --- a/src/packs/domains/domainCard_Vanishing_Dodge_GBMIElIpk4cvk1Bd.json +++ b/src/packs/domains/domainCard_Vanishing_Dodge_GBMIElIpk4cvk1Bd.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -38,13 +37,18 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Vanish", "img": "icons/magic/perception/shadow-stealth-eyes-purple.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 129, + "artist": "" } }, "flags": {}, @@ -52,12 +56,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784539, - "modifiedTime": 1754331169719, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756038425727, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "GBMIElIpk4cvk1Bd", "sort": 3400000, @@ -88,7 +92,7 @@ "startRound": null, "startTurn": null }, - "description": "

Envelop yourself in shadow, becoming Hidden and teleporting to a point within Close range of the attacker. You remain Hidden until the next time you make an action roll.

", + "description": "

Envelop yourself in shadow, becoming Hidden and teleporting to a point within Close range of the attacker. You remain Hidden until the next time you make an action roll.

", "tint": "#ffffff", "statuses": [ "hidden" diff --git a/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json b/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json index 917c2e93..9c34b557 100644 --- a/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json +++ b/src/packs/domains/domainCard_Veil_of_Night_gV4L5ZZmfPrEbIDh.json @@ -14,7 +14,7 @@ "type": "attack", "_id": "br6UQ0toK4ZYpP2s", "systemPath": "actions", - "description": "

Make a Spellcast Roll (13). On a success, you can create a temporary curtain of darkness between two points within Far range. Only you can see through this darkness. You’re considered Hidden to adversaries on the other side of the veil, and you have advantage on attacks you make through the darkness. The veil remains until you cast another spell.

", + "description": "

Make a Spellcast Roll (13). On a success, you can create a temporary curtain of darkness between two points within Far range. Only you can see through this darkness. You’re considered Hidden to adversaries on the other side of the veil, and you have advantage on attacks you make through the darkness. The veil remains until you cast another spell.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -28,7 +28,7 @@ "includeBase": false }, "target": { - "type": "any", + "type": "self", "amount": null }, "effects": [ @@ -59,8 +59,13 @@ }, "name": "Cast", "img": "icons/magic/unholy/barrier-shield-glowing-pink.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 128, + "artist": "" } }, "flags": {}, @@ -68,12 +73,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753922784541, - "modifiedTime": 1754173368653, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756038378309, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_id": "gV4L5ZZmfPrEbIDh", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Versatile_Fighter_wQ53ImDswEHv5SGQ.json b/src/packs/domains/domainCard_Versatile_Fighter_wQ53ImDswEHv5SGQ.json index c8134c0c..21f92663 100644 --- a/src/packs/domains/domainCard_Versatile_Fighter_wQ53ImDswEHv5SGQ.json +++ b/src/packs/domains/domainCard_Versatile_Fighter_wQ53ImDswEHv5SGQ.json @@ -22,7 +22,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,6 +41,11 @@ "img": "icons/magic/control/silhouette-aura-energy.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784541, - "modifiedTime": 1754304293769, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428120598, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "wQ53ImDswEHv5SGQ", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Vicious_Entangle_qvpvTnkAoRn9vYO4.json b/src/packs/domains/domainCard_Vicious_Entangle_qvpvTnkAoRn9vYO4.json index cedcec36..c78bebca 100644 --- a/src/packs/domains/domainCard_Vicious_Entangle_qvpvTnkAoRn9vYO4.json +++ b/src/packs/domains/domainCard_Vicious_Entangle_qvpvTnkAoRn9vYO4.json @@ -97,7 +97,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -123,6 +122,11 @@ "img": "icons/commodities/gems/gem-faceted-octagon-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 130, + "artist": "" } }, "flags": {}, @@ -130,12 +134,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784541, - "modifiedTime": 1754338467256, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429474482, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "qvpvTnkAoRn9vYO4", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Vitality_sWUlSPOJEaXyQLCj.json b/src/packs/domains/domainCard_Vitality_sWUlSPOJEaXyQLCj.json index 3e41ae1a..bd413bda 100644 --- a/src/packs/domains/domainCard_Vitality_sWUlSPOJEaXyQLCj.json +++ b/src/packs/domains/domainCard_Vitality_sWUlSPOJEaXyQLCj.json @@ -46,6 +46,11 @@ "img": "systems/daggerheart/assets/icons/domains/domain-card/blade.png", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -53,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784542, - "modifiedTime": 1754304501280, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428142811, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "sWUlSPOJEaXyQLCj", "sort": 3400000, @@ -80,7 +85,7 @@ }, "changes": [ { - "key": "system.resources.hitPoints", + "key": "system.resources.hitPoints.max", "mode": 2, "value": "1", "priority": null @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754245866724, - "modifiedTime": 1754246004543, - "lastModifiedBy": "l5jB3XmcVXOTQpRZ" + "modifiedTime": 1761502808129, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!sWUlSPOJEaXyQLCj.1jtgIyFvDpTb0asZ" }, @@ -131,7 +136,7 @@ }, "changes": [ { - "key": "system.resources.stress", + "key": "system.resources.stress.max", "mode": 2, "value": "1", "priority": null @@ -156,12 +161,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754245912530, - "modifiedTime": 1754245972468, - "lastModifiedBy": "l5jB3XmcVXOTQpRZ" + "modifiedTime": 1761502816888, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!sWUlSPOJEaXyQLCj.vj9rm1tLqqsSFOXF" }, diff --git a/src/packs/domains/domainCard_Voice_of_Reason_t3RRGH6mMYYJJCcF.json b/src/packs/domains/domainCard_Voice_of_Reason_t3RRGH6mMYYJJCcF.json index 481caddf..cea3e78c 100644 --- a/src/packs/domains/domainCard_Voice_of_Reason_t3RRGH6mMYYJJCcF.json +++ b/src/packs/domains/domainCard_Voice_of_Reason_t3RRGH6mMYYJJCcF.json @@ -8,19 +8,24 @@ "domain": "splendor", "recallCost": 1, "level": 3, - "type": "ability" + "type": "ability", + "attribution": { + "source": "Daggerheart SRD", + "page": 132, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784542, - "modifiedTime": 1754268954870, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429699193, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "t3RRGH6mMYYJJCcF", "sort": 3400000, @@ -62,7 +67,7 @@ "startRound": null, "startTurn": null }, - "description": "

You have advantage on action rolls to de-escalate violent situations or convince someone to follow your lead.

", + "description": "

You have advantage on action rolls to de-escalate violent situations or convince someone to follow your lead.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -113,7 +118,7 @@ "startRound": null, "startTurn": null }, - "description": "

When all of your Stress slots are marked, you gain a +1 bonus to your Proficiency for damage rolls.

", + "description": "

When all of your Stress slots are marked, you gain a +1 bonus to your Proficiency for damage rolls.

", "origin": null, "tint": "#ffffff", "transfer": true, diff --git a/src/packs/domains/domainCard_Wall_Walk_1ROT08E1UVBwHLAS.json b/src/packs/domains/domainCard_Wall_Walk_1ROT08E1UVBwHLAS.json index e4c48b0e..da6de1a7 100644 --- a/src/packs/domains/domainCard_Wall_Walk_1ROT08E1UVBwHLAS.json +++ b/src/packs/domains/domainCard_Wall_Walk_1ROT08E1UVBwHLAS.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -47,6 +46,11 @@ "img": "icons/creatures/invertebrates/spider-pink-purple.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 119, + "artist": "" } }, "flags": {}, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784543, - "modifiedTime": 1754253399849, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755427927041, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "1ROT08E1UVBwHLAS", "sort": 3400000, @@ -90,7 +94,7 @@ "startRound": null, "startTurn": null }, - "description": "

Can climb on walls and ceilings as easily as walking on the ground.Β This lasts until the end of the scene or you cast Wall Walk again.

", + "description": "

Can climb on walls and ceilings as easily as walking on the ground.Β This lasts until the end of the scene or you cast Wall Walk again.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Whirlwind_anO0arioUy7I5zBg.json b/src/packs/domains/domainCard_Whirlwind_anO0arioUy7I5zBg.json index a6013aa6..14dc5fc9 100644 --- a/src/packs/domains/domainCard_Whirlwind_anO0arioUy7I5zBg.json +++ b/src/packs/domains/domainCard_Whirlwind_anO0arioUy7I5zBg.json @@ -19,7 +19,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -42,6 +41,11 @@ "img": "icons/magic/control/buff-flight-wings-runes-purple-orange.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 121, + "artist": "" } }, "flags": {}, @@ -49,12 +53,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784545, - "modifiedTime": 1754304354572, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428093764, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "anO0arioUy7I5zBg", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Wild_Fortress_9dFvcM1i3bxG3BSA.json b/src/packs/domains/domainCard_Wild_Fortress_9dFvcM1i3bxG3BSA.json index 69bc5bc8..cfe14983 100644 --- a/src/packs/domains/domainCard_Wild_Fortress_9dFvcM1i3bxG3BSA.json +++ b/src/packs/domains/domainCard_Wild_Fortress_9dFvcM1i3bxG3BSA.json @@ -23,7 +23,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null } ], @@ -71,6 +70,11 @@ "value": 0, "max": "3", "icon": "" + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 131, + "artist": "" } }, "flags": {}, @@ -78,12 +82,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784546, - "modifiedTime": 1754339127606, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429562599, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "9dFvcM1i3bxG3BSA", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Wild_Surge_DjnKlZQYaWdQGKcK.json b/src/packs/domains/domainCard_Wild_Surge_DjnKlZQYaWdQGKcK.json index 269139cf..11fcf48e 100644 --- a/src/packs/domains/domainCard_Wild_Surge_DjnKlZQYaWdQGKcK.json +++ b/src/packs/domains/domainCard_Wild_Surge_DjnKlZQYaWdQGKcK.json @@ -28,7 +28,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -46,6 +45,11 @@ "img": "icons/magic/control/debuff-energy-hold-levitate-green.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 131, + "artist": "" } }, "flags": {}, @@ -53,12 +57,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784547, - "modifiedTime": 1754499199811, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429591650, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "DjnKlZQYaWdQGKcK", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Words_of_Discord_ZjAdi1FSNCDDHI3X.json b/src/packs/domains/domainCard_Words_of_Discord_ZjAdi1FSNCDDHI3X.json index b1e6aaa2..fd0932b7 100644 --- a/src/packs/domains/domainCard_Words_of_Discord_ZjAdi1FSNCDDHI3X.json +++ b/src/packs/domains/domainCard_Words_of_Discord_ZjAdi1FSNCDDHI3X.json @@ -87,6 +87,11 @@ "img": "icons/skills/melee/strike-axe-energy-pink.webp", "range": "melee" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 127, + "artist": "" } }, "flags": {}, @@ -94,12 +99,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784548, - "modifiedTime": 1754341685992, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755429205496, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ZjAdi1FSNCDDHI3X", "sort": 3400000, @@ -130,7 +135,7 @@ "startRound": null, "startTurn": null }, - "description": "

The target must make an attack against another adversary instead of against you or your allies. Once this attack is over, the target realizes what happened. The next time you cast Words of Discord on them, gain a βˆ’5 penalty to the Spellcast Roll.

", + "description": "

The target must make an attack against another adversary instead of against you or your allies. Once this attack is over, the target realizes what happened. The next time you cast Words of Discord on them, gain a βˆ’5 penalty to the Spellcast Roll.

", "tint": "#ffffff", "statuses": [], "sort": 0, diff --git a/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json b/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json index 76b17134..30e8cb4e 100644 --- a/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json +++ b/src/packs/domains/domainCard_Wrangle_9DwSxHoUwl8Kxj3n.json @@ -57,6 +57,11 @@ "img": "icons/skills/melee/sword-engraved-glow-purple.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 123, + "artist": "" } }, "flags": {}, @@ -64,12 +69,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784549, - "modifiedTime": 1754252503293, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755428352791, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "9DwSxHoUwl8Kxj3n", "sort": 3400000, diff --git a/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json b/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json index c712284d..2c1c0bfc 100644 --- a/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json +++ b/src/packs/domains/domainCard_Zone_of_Protection_lOZaRb4fCVgQsWB5.json @@ -4,7 +4,7 @@ "type": "domainCard", "folder": "OwsbTSWzKq2WJmQN", "system": { - "description": "

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

@Template[type:emanation|range:vc]

", + "description": "

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

@Template[type:emanation|range:vc]

", "domain": "splendor", "recallCost": 2, "level": 6, @@ -58,19 +58,24 @@ "range": "far" } }, - "resource": null + "resource": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 133, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784549, - "modifiedTime": 1754498786877, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755429748542, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "lOZaRb4fCVgQsWB5", "sort": 3400000, diff --git a/src/packs/domains/folders_Splendor_TL1TutmbeCVJ06nR.json b/src/packs/domains/folders_Splendor_TL1TutmbeCVJ06nR.json index c0870ecf..87cc7469 100644 --- a/src/packs/domains/folders_Splendor_TL1TutmbeCVJ06nR.json +++ b/src/packs/domains/folders_Splendor_TL1TutmbeCVJ06nR.json @@ -6,18 +6,18 @@ "sorting": "m", "_id": "TL1TutmbeCVJ06nR", "description": "", - "sort": 800000, + "sort": 900000, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1748717133557, - "modifiedTime": 1752681441081, - "lastModifiedBy": "YNJ4HgHtFrTI89mx" + "modifiedTime": 1756038952388, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!folders!TL1TutmbeCVJ06nR" } diff --git a/src/packs/domains/folders_Valor_yPVeShe47ETIqs9q.json b/src/packs/domains/folders_Valor_yPVeShe47ETIqs9q.json index 0a65d51f..f6361e50 100644 --- a/src/packs/domains/folders_Valor_yPVeShe47ETIqs9q.json +++ b/src/packs/domains/folders_Valor_yPVeShe47ETIqs9q.json @@ -6,18 +6,18 @@ "sorting": "m", "_id": "yPVeShe47ETIqs9q", "description": "", - "sort": 900000, + "sort": 800000, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1748717138700, - "modifiedTime": 1752681443619, - "lastModifiedBy": "YNJ4HgHtFrTI89mx" + "modifiedTime": 1756038952388, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!folders!yPVeShe47ETIqs9q" } diff --git a/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json b/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json index 1f1d5722..9e855978 100644 --- a/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json +++ b/src/packs/environments/environment_Abandoned_Grove_pGEdzdLkqYtBhxnG.json @@ -1,6 +1,6 @@ { "name": "Abandoned Grove", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "GQ0VnOLrKBIHR6Us", "system": { @@ -27,19 +27,24 @@ "tier": 1, "description": "

A former druidic grove lying fallow and fully reclaimed by nature.

", "type": "exploration", - "impulses": "Draw in the curious, echo the past" + "impulses": "Draw in the curious, echo the past", + "attribution": { + "source": "Daggerheart SRD", + "page": 103, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784553, - "modifiedTime": 1754208922163, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890228, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "pGEdzdLkqYtBhxnG", "sort": 3400000, @@ -55,7 +60,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "AbominationVaults.webp", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, diff --git a/src/packs/environments/environment_Ambushed_uGEdNYERCTJBEjc5.json b/src/packs/environments/environment_Ambushed_uGEdNYERCTJBEjc5.json index a705fa2d..7135bd42 100644 --- a/src/packs/environments/environment_Ambushed_uGEdNYERCTJBEjc5.json +++ b/src/packs/environments/environment_Ambushed_uGEdNYERCTJBEjc5.json @@ -1,6 +1,6 @@ { "name": "Ambushed", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "GQ0VnOLrKBIHR6Us", "system": { @@ -10,19 +10,24 @@ "tier": 1, "description": "

An ambush is set to catch an unsuspecting party off-guard.

", "type": "event", - "impulses": "Overwhelm, scatter, surround" + "impulses": "Overwhelm, scatter, surround", + "attribution": { + "source": "Daggerheart SRD", + "page": 103, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784553, - "modifiedTime": 1754211171895, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890231, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "uGEdNYERCTJBEjc5", "sort": 3400000, @@ -38,7 +43,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, diff --git a/src/packs/environments/environment_Ambushers_uXZpebPR77YQ1oXI.json b/src/packs/environments/environment_Ambushers_uXZpebPR77YQ1oXI.json index 3a8e3092..4efb6b52 100644 --- a/src/packs/environments/environment_Ambushers_uXZpebPR77YQ1oXI.json +++ b/src/packs/environments/environment_Ambushers_uXZpebPR77YQ1oXI.json @@ -1,6 +1,6 @@ { "name": "Ambushers", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "GQ0VnOLrKBIHR6Us", "system": { @@ -10,19 +10,24 @@ "tier": 1, "description": "

An ambush is set by the PCs to catch unsuspecting adversaries off-guard.

", "type": "event", - "impulses": "Escape, group up, protect the most vulnerable" + "impulses": "Escape, group up, protect the most vulnerable", + "attribution": { + "source": "Daggerheart SRD", + "page": 103, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784554, - "modifiedTime": 1754211550898, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890234, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "uXZpebPR77YQ1oXI", "sort": 3400000, @@ -38,7 +43,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -178,7 +183,6 @@ "scalable": false, "key": "fear", "value": 2, - "keyIsID": false, "step": null } ], diff --git a/src/packs/environments/environment_Burning_Heart_of_the_Woods_oY69NN4rYxoRE4hl.json b/src/packs/environments/environment_Burning_Heart_of_the_Woods_oY69NN4rYxoRE4hl.json index a1949373..5683f6f5 100644 --- a/src/packs/environments/environment_Burning_Heart_of_the_Woods_oY69NN4rYxoRE4hl.json +++ b/src/packs/environments/environment_Burning_Heart_of_the_Woods_oY69NN4rYxoRE4hl.json @@ -1,6 +1,6 @@ { "name": "Burning Heart of the Woods", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "MfrIkJK12PAEfbPL", "system": { @@ -32,19 +32,24 @@ "tier": 3, "description": "

Thick indigo ash fills the air around a towering moss-covered tree that burns eternally with flames a sickly shade of blue.

", "type": "exploration", - "impulses": "Beat out an uncanny rhythm for all to follow, corrupt the woods" + "impulses": "Beat out an uncanny rhythm for all to follow, corrupt the woods", + "attribution": { + "source": "Daggerheart SRD", + "page": 108, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784554, - "modifiedTime": 1754218065764, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890258, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "oY69NN4rYxoRE4hl", "sort": 3400000, @@ -60,7 +65,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, diff --git a/src/packs/environments/environment_Bustling_Marketplace_HZKA7hkej7JJY503.json b/src/packs/environments/environment_Bustling_Marketplace_HZKA7hkej7JJY503.json index f68ad8fd..11b458c1 100644 --- a/src/packs/environments/environment_Bustling_Marketplace_HZKA7hkej7JJY503.json +++ b/src/packs/environments/environment_Bustling_Marketplace_HZKA7hkej7JJY503.json @@ -1,6 +1,6 @@ { "name": "Bustling Marketplace", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "GQ0VnOLrKBIHR6Us", "system": { @@ -25,19 +25,24 @@ "tier": 1, "description": "

The economic heart of the settlement, with local artisans, traveling merchants, and patrons across social classes.

", "type": "social", - "impulses": "Buy low, and sell high, tempt and tantalize with wares from near and far" + "impulses": "Buy low, and sell high, tempt and tantalize with wares from near and far", + "attribution": { + "source": "Daggerheart SRD", + "page": 104, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784554, - "modifiedTime": 1754212085334, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890236, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "HZKA7hkej7JJY503", "sort": 3400000, @@ -53,7 +58,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, diff --git a/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json b/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json index 1739e6bd..88d9096e 100644 --- a/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json +++ b/src/packs/environments/environment_Castle_Siege_1eZ32Esq7rfZOjlu.json @@ -1,6 +1,6 @@ { "name": "Castle Siege", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "MfrIkJK12PAEfbPL", "system": { @@ -29,19 +29,24 @@ "tier": 3, "description": "

An active siege with an attacking force fighting to gain entry to a fortified castle.

", "type": "event", - "impulses": "Bleed out the will to fi ght, breach the walls, build tension" + "impulses": "Bleed out the will to fi ght, breach the walls, build tension", + "attribution": { + "source": "Daggerheart SRD", + "page": 109, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784555, - "modifiedTime": 1754218654354, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890261, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "1eZ32Esq7rfZOjlu", "sort": 3400000, @@ -57,7 +62,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, diff --git a/src/packs/environments/environment_Chaos_Realm_2Z1mKc65LxNk2PqR.json b/src/packs/environments/environment_Chaos_Realm_2Z1mKc65LxNk2PqR.json index fe3f3349..a2947aa3 100644 --- a/src/packs/environments/environment_Chaos_Realm_2Z1mKc65LxNk2PqR.json +++ b/src/packs/environments/environment_Chaos_Realm_2Z1mKc65LxNk2PqR.json @@ -1,6 +1,6 @@ { "name": "Chaos Realm", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "IKumu5HTLqONLYqb", "system": { @@ -19,19 +19,24 @@ "tier": 4, "description": "

An otherworldly space where the laws of reality are unstable and dangerous.

", "type": "traversal", - "impulses": "Annihilate certainty, consume power, defy logic" + "impulses": "Annihilate certainty, consume power, defy logic", + "attribution": { + "source": "Daggerheart SRD", + "page": 110, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784556, - "modifiedTime": 1754219630584, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890266, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "2Z1mKc65LxNk2PqR", "sort": 3400000, @@ -47,7 +52,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -146,7 +151,7 @@ "type": "damage", "_id": "hli84bleKqYoU7YL", "systemPath": "actions", - "description": "

On a failure, a PC must mark a Stress in addition to the roll’s other consequences.

", + "description": "

On a failure, a PC must mark a Stress in addition to the roll’s other consequences.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -366,7 +371,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -481,7 +485,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/environments/environment_Cliffside_Ascent_LPpfdlNKqiZIl04w.json b/src/packs/environments/environment_Cliffside_Ascent_LPpfdlNKqiZIl04w.json index 67a6e7ea..ab8daf7d 100644 --- a/src/packs/environments/environment_Cliffside_Ascent_LPpfdlNKqiZIl04w.json +++ b/src/packs/environments/environment_Cliffside_Ascent_LPpfdlNKqiZIl04w.json @@ -1,6 +1,6 @@ { "name": "Cliffside Ascent", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "GQ0VnOLrKBIHR6Us", "system": { @@ -20,19 +20,24 @@ "tier": 1, "description": "

A steep, rocky cliffside tall enough to make traversal dangerous.

", "type": "traversal", - "impulses": "Cast the unready down to a rocky doom, draw people in with promise of what lies at the top" + "impulses": "Cast the unready down to a rocky doom, draw people in with promise of what lies at the top", + "attribution": { + "source": "Daggerheart SRD", + "page": 104, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784557, - "modifiedTime": 1754212638870, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890238, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "LPpfdlNKqiZIl04w", "sort": 3400000, @@ -48,7 +53,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -450,7 +455,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/environments/environment_Cult_Ritual_QAXXiOKBDmCTauHD.json b/src/packs/environments/environment_Cult_Ritual_QAXXiOKBDmCTauHD.json index a1d1ed38..ded1d14f 100644 --- a/src/packs/environments/environment_Cult_Ritual_QAXXiOKBDmCTauHD.json +++ b/src/packs/environments/environment_Cult_Ritual_QAXXiOKBDmCTauHD.json @@ -1,6 +1,6 @@ { "name": "Cult Ritual", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "XMeecO3IRvu5ck6F", "system": { @@ -20,19 +20,24 @@ "tier": 2, "description": "

A Fallen cult assembles around a sigil of the defeated gods and a bonfire that burns a sickly shade of green.

", "type": "event", - "impulses": "Profane the land, unite the Mortal Realm with the Circles Below" + "impulses": "Profane the land, unite the Mortal Realm with the Circles Below", + "attribution": { + "source": "Daggerheart SRD", + "page": 106, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784557, - "modifiedTime": 1754215595854, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890248, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "QAXXiOKBDmCTauHD", "sort": 3400000, @@ -48,7 +53,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, diff --git a/src/packs/environments/environment_Divine_Usurpation_4DLYez7VbMCFDAuZ.json b/src/packs/environments/environment_Divine_Usurpation_4DLYez7VbMCFDAuZ.json index c0b9e8e8..38821a59 100644 --- a/src/packs/environments/environment_Divine_Usurpation_4DLYez7VbMCFDAuZ.json +++ b/src/packs/environments/environment_Divine_Usurpation_4DLYez7VbMCFDAuZ.json @@ -1,6 +1,6 @@ { "name": "Divine Usurpation", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "IKumu5HTLqONLYqb", "system": { @@ -21,19 +21,24 @@ "tier": 4, "description": "

A massive ritual designed to breach the gates of the Hallows Above and unseat the New Gods themselves.

", "type": "event", - "impulses": "Collect power, overawe, silence dissent" + "impulses": "Collect power, overawe, silence dissent", + "attribution": { + "source": "Daggerheart SRD", + "page": 110, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784558, - "modifiedTime": 1754220432059, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890271, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "4DLYez7VbMCFDAuZ", "sort": 3400000, @@ -49,7 +54,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -267,7 +272,6 @@ "scalable": false, "key": "fear", "value": 2, - "keyIsID": false, "step": null } ], @@ -331,7 +335,6 @@ "scalable": false, "key": "fear", "value": 3, - "keyIsID": false, "step": null } ], diff --git a/src/packs/environments/environment_Hallowed_Temple_dsA6j69AnaJhUyqH.json b/src/packs/environments/environment_Hallowed_Temple_dsA6j69AnaJhUyqH.json index 745414dc..8ae4134d 100644 --- a/src/packs/environments/environment_Hallowed_Temple_dsA6j69AnaJhUyqH.json +++ b/src/packs/environments/environment_Hallowed_Temple_dsA6j69AnaJhUyqH.json @@ -1,6 +1,6 @@ { "name": "Hallowed Temple", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "XMeecO3IRvu5ck6F", "system": { @@ -19,19 +19,24 @@ "tier": 2, "description": "

A bustling but well-kept temple that provides healing and hosts regular services, overseen by a priest or seraph.

", "type": "social", - "impulses": "Connect the Mortal Realm with the Hallows Above, display the power of the divine, provide aid and succor to the faithful" + "impulses": "Connect the Mortal Realm with the Hallows Above, display the power of the divine, provide aid and succor to the faithful", + "attribution": { + "source": "Daggerheart SRD", + "page": 107, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784558, - "modifiedTime": 1754216032747, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890251, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "dsA6j69AnaJhUyqH", "sort": 3400000, @@ -47,7 +52,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -374,7 +379,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/environments/environment_Haunted_City_OzYbizKraK92FDiI.json b/src/packs/environments/environment_Haunted_City_OzYbizKraK92FDiI.json index 11c98e66..0653ae50 100644 --- a/src/packs/environments/environment_Haunted_City_OzYbizKraK92FDiI.json +++ b/src/packs/environments/environment_Haunted_City_OzYbizKraK92FDiI.json @@ -1,6 +1,6 @@ { "name": "Haunted City", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "XMeecO3IRvu5ck6F", "system": { @@ -19,19 +19,24 @@ "tier": 2, "description": "

An abandoned city populated by the restless spirits of eras past.

", "type": "exploration", - "impulses": "Misdirect and disorient, replay apocalypses both public and personal" + "impulses": "Misdirect and disorient, replay apocalypses both public and personal", + "attribution": { + "source": "Daggerheart SRD", + "page": 107, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784559, - "modifiedTime": 1754216926766, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890253, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "OzYbizKraK92FDiI", "sort": 3400000, @@ -47,7 +52,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, diff --git a/src/packs/environments/environment_Imperial_Court_jr1xAoXzVwVblzxI.json b/src/packs/environments/environment_Imperial_Court_jr1xAoXzVwVblzxI.json index ab2c1ef8..bbf23666 100644 --- a/src/packs/environments/environment_Imperial_Court_jr1xAoXzVwVblzxI.json +++ b/src/packs/environments/environment_Imperial_Court_jr1xAoXzVwVblzxI.json @@ -1,6 +1,6 @@ { "name": "Imperial Court", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "IKumu5HTLqONLYqb", "system": { @@ -21,19 +21,24 @@ "tier": 4, "description": "

The majestic domain of a powerful empire, lavishly appointed with stolen treasures.

", "type": "social", - "impulses": "Justify and perpetuate imperial rule, seduce rivals with promises of power and comfort" + "impulses": "Justify and perpetuate imperial rule, seduce rivals with promises of power and comfort", + "attribution": { + "source": "Daggerheart SRD", + "page": 111, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784559, - "modifiedTime": 1754220962410, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890268, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "jr1xAoXzVwVblzxI", "sort": 3400000, @@ -49,7 +54,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -222,7 +227,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -415,7 +419,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/environments/environment_Local_Tavern_cM4X81DOyvxNIi52.json b/src/packs/environments/environment_Local_Tavern_cM4X81DOyvxNIi52.json index cb440aab..1bc1c17f 100644 --- a/src/packs/environments/environment_Local_Tavern_cM4X81DOyvxNIi52.json +++ b/src/packs/environments/environment_Local_Tavern_cM4X81DOyvxNIi52.json @@ -1,6 +1,6 @@ { "name": "Local Tavern", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "GQ0VnOLrKBIHR6Us", "system": { @@ -33,19 +33,24 @@ "tier": 1, "description": "

A lively tavern that serves as the social hub for its town.

", "type": "social", - "impulses": "Provide opportunities for adventurers, nurture community" + "impulses": "Provide opportunities for adventurers, nurture community", + "attribution": { + "source": "Daggerheart SRD", + "page": 105, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784561, - "modifiedTime": 1754213299544, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890240, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "cM4X81DOyvxNIi52", "sort": 3400000, @@ -61,7 +66,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, diff --git a/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json b/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json index e2a31c41..bb538c95 100644 --- a/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json +++ b/src/packs/environments/environment_Mountain_Pass_acMu9wJrMZZzLSTJ.json @@ -1,6 +1,6 @@ { "name": "Mountain Pass", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "XMeecO3IRvu5ck6F", "system": { @@ -27,19 +27,24 @@ "tier": 2, "description": "

Stony peaks that pierce the clouds, with a twisting path winding its way up and over through many switchbacks.

", "type": "traversal", - "impulses": "Exact a chilling toll in supplies and stamina, reveal magical tampering, slow down travel" + "impulses": "Exact a chilling toll in supplies and stamina, reveal magical tampering, slow down travel", + "attribution": { + "source": "Daggerheart SRD", + "page": 108, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784562, - "modifiedTime": 1754217303533, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890256, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "acMu9wJrMZZzLSTJ", "sort": 3400000, @@ -55,7 +60,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -177,7 +182,7 @@ "_key": "!actors.items!acMu9wJrMZZzLSTJ.cIAMenvMXHPTpOFn" }, { - "name": "Avalance", + "name": "Avalanche", "type": "feature", "system": { "description": "

Spend a Fear to carve the mountain with an icy torrent, causing an avalanche. All PCs in its path must succeed on an Agility or Strength Reaction Roll or be bowled over and carried down the mountain. A PC using rope, pitons, or other climbing gear gains advantage on this roll. Targets who fail are knocked down the mountain to Far range, take 2d20 physical damage, and must mark a Stress. Targets who succeed must mark a Stress.

How do the PCs try to weather the avalanche? What approach do the characters take to fi nd one another when their companions go hurtling down the mountainside?

", @@ -252,12 +257,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754217019442, - "modifiedTime": 1754217102897, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1761503937038, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!actors.items!acMu9wJrMZZzLSTJ.jkm03DXYYajsRk2j" }, diff --git a/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json b/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json index 5afc9db6..fc14d738 100644 --- a/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json +++ b/src/packs/environments/environment_Necromancer_s_Ossuary_h3KyRL7AshhLAmcH.json @@ -1,6 +1,6 @@ { "name": "Necromancer’s Ossuary", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "IKumu5HTLqONLYqb", "system": { @@ -18,19 +18,24 @@ "tier": 4, "description": "

A dusty crypt with a library, twisting corridors, and abundant sarcophagi, spattered with the blood of ill-fated invaders.

", "type": "exploration", - "impulses": "Confound intruders, delve into secrets best left buried, manifest unlife, unleash a tide of undead" + "impulses": "Confound intruders, delve into secrets best left buried, manifest unlife, unleash a tide of undead", + "attribution": { + "source": "Daggerheart SRD", + "page": 111, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784563, - "modifiedTime": 1754221404218, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890275, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "h3KyRL7AshhLAmcH", "sort": 3400000, @@ -46,7 +51,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -457,7 +462,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/environments/environment_Outpost_Town_YezryR32uo39xRxW.json b/src/packs/environments/environment_Outpost_Town_YezryR32uo39xRxW.json index 8e58b6a8..82bf42e3 100644 --- a/src/packs/environments/environment_Outpost_Town_YezryR32uo39xRxW.json +++ b/src/packs/environments/environment_Outpost_Town_YezryR32uo39xRxW.json @@ -1,6 +1,6 @@ { "name": "Outpost Town", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "GQ0VnOLrKBIHR6Us", "system": { @@ -29,19 +29,24 @@ "tier": 1, "description": "

A small town on the outskirts of a nation or region, close to a dungeon, tombs, or other adventuring destinations.

", "type": "social", - "impulses": "Drive the desperate to certain doom, profi t off of ragged hope" + "impulses": "Drive the desperate to certain doom, profi t off of ragged hope", + "attribution": { + "source": "Daggerheart SRD", + "page": 105, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784564, - "modifiedTime": 1754213845896, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890243, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "YezryR32uo39xRxW", "sort": 3400000, @@ -57,7 +62,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -296,7 +301,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json b/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json index 3db3d3b6..9c86d63d 100644 --- a/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json +++ b/src/packs/environments/environment_Pitched_Battle_EWD3ZsLoK6VMVOf7.json @@ -1,6 +1,6 @@ { "name": "Pitched Battle", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "MfrIkJK12PAEfbPL", "system": { @@ -29,19 +29,24 @@ "tier": 3, "description": "

A massive combat between two large groups of armed combatants.

", "type": "event", - "impulses": "Seize people, land, and wealth, spill blood for greed and glory" + "impulses": "Seize people, land, and wealth, spill blood for greed and glory", + "attribution": { + "source": "Daggerheart SRD", + "page": 109, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784565, - "modifiedTime": 1754219040722, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890264, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "EWD3ZsLoK6VMVOf7", "sort": 3400000, @@ -57,7 +62,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -230,7 +235,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/environments/environment_Raging_River_t4cdqTfzcqP3H1vJ.json b/src/packs/environments/environment_Raging_River_t4cdqTfzcqP3H1vJ.json index 211c619a..79c89611 100644 --- a/src/packs/environments/environment_Raging_River_t4cdqTfzcqP3H1vJ.json +++ b/src/packs/environments/environment_Raging_River_t4cdqTfzcqP3H1vJ.json @@ -1,6 +1,6 @@ { "name": "Raging River", - "img": "icons/svg/mystery-man.svg", + "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "type": "environment", "folder": "GQ0VnOLrKBIHR6Us", "system": { @@ -29,19 +29,24 @@ "tier": 1, "description": "

A swift-moving river without a bridge crossing, deep enough to sweep away most people.

", "type": "traversal", - "impulses": "Bar crossing, carry away the unready, divide the land" + "impulses": "Bar crossing, carry away the unready, divide the land", + "attribution": { + "source": "Daggerheart SRD", + "page": 106, + "artist": "" + } }, "flags": {}, "_stats": { "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753922784565, - "modifiedTime": 1754214189395, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755389890245, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "t4cdqTfzcqP3H1vJ", "sort": 3400000, @@ -57,7 +62,7 @@ "width": 1, "height": 1, "texture": { - "src": "icons/svg/mystery-man.svg", + "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg", "anchorX": 0.5, "anchorY": 0.5, "offsetX": 0, @@ -220,7 +225,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], @@ -387,7 +391,6 @@ "scalable": false, "key": "fear", "value": 1, - "keyIsID": false, "step": null } ], diff --git a/src/packs/items/armors/armor_Advanced_Chainmail_Armor_LzLOJ9EVaHWAjoq9.json b/src/packs/items/armors/armor_Advanced_Chainmail_Armor_LzLOJ9EVaHWAjoq9.json index 96a2edd7..c5155cb4 100644 --- a/src/packs/items/armors/armor_Advanced_Chainmail_Armor_LzLOJ9EVaHWAjoq9.json +++ b/src/packs/items/armors/armor_Advanced_Chainmail_Armor_LzLOJ9EVaHWAjoq9.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 13, "severe": 31 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753807810859, - "modifiedTime": 1753807844642, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431740693, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!LzLOJ9EVaHWAjoq9" } diff --git a/src/packs/items/armors/armor_Advanced_Full_Plate_Armor_crIbCb9NZ4K0VpoU.json b/src/packs/items/armors/armor_Advanced_Full_Plate_Armor_crIbCb9NZ4K0VpoU.json index 4d97b8bb..4946d733 100644 --- a/src/packs/items/armors/armor_Advanced_Full_Plate_Armor_crIbCb9NZ4K0VpoU.json +++ b/src/packs/items/armors/armor_Advanced_Full_Plate_Armor_crIbCb9NZ4K0VpoU.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 15, "severe": 35 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -83,12 +88,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753809204693, - "modifiedTime": 1753809243349, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431745995, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!crIbCb9NZ4K0VpoU" } diff --git a/src/packs/items/armors/armor_Advanced_Gambeson_Armor_epkAmlZVk7HOfUUT.json b/src/packs/items/armors/armor_Advanced_Gambeson_Armor_epkAmlZVk7HOfUUT.json index 032ebe6d..74ea9cf7 100644 --- a/src/packs/items/armors/armor_Advanced_Gambeson_Armor_epkAmlZVk7HOfUUT.json +++ b/src/packs/items/armors/armor_Advanced_Gambeson_Armor_epkAmlZVk7HOfUUT.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 9, "severe": 23 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753807704469, - "modifiedTime": 1753807740230, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431751044, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!epkAmlZVk7HOfUUT" } diff --git a/src/packs/items/armors/armor_Advanced_Leather_Armor_itSOp2GCyem0f7oM.json b/src/packs/items/armors/armor_Advanced_Leather_Armor_itSOp2GCyem0f7oM.json index ef9d64f9..2c2699a6 100644 --- a/src/packs/items/armors/armor_Advanced_Leather_Armor_itSOp2GCyem0f7oM.json +++ b/src/packs/items/armors/armor_Advanced_Leather_Armor_itSOp2GCyem0f7oM.json @@ -18,6 +18,11 @@ "baseThresholds": { "major": 11, "severe": 27 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [], @@ -31,12 +36,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753807744573, - "modifiedTime": 1753807795515, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431757894, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!itSOp2GCyem0f7oM" } diff --git a/src/packs/items/armors/armor_Bellamoi_Fine_Armor_WuoVwZA53XRAIt6d.json b/src/packs/items/armors/armor_Bellamoi_Fine_Armor_WuoVwZA53XRAIt6d.json index fb4bad0e..a3d805ed 100644 --- a/src/packs/items/armors/armor_Bellamoi_Fine_Armor_WuoVwZA53XRAIt6d.json +++ b/src/packs/items/armors/armor_Bellamoi_Fine_Armor_WuoVwZA53XRAIt6d.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 11, "severe": 27 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753807855787, - "modifiedTime": 1753807887685, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431768795, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!WuoVwZA53XRAIt6d" } diff --git a/src/packs/items/armors/armor_Bladefare_Armor_mNN6pvcsS10ChrWF.json b/src/packs/items/armors/armor_Bladefare_Armor_mNN6pvcsS10ChrWF.json index 60521ffc..2c4d0b5b 100644 --- a/src/packs/items/armors/armor_Bladefare_Armor_mNN6pvcsS10ChrWF.json +++ b/src/packs/items/armors/armor_Bladefare_Armor_mNN6pvcsS10ChrWF.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 16, "severe": 39 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753808752024, - "modifiedTime": 1753808787752, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431763662, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!mNN6pvcsS10ChrWF" } diff --git a/src/packs/items/armors/armor_Chainmail_Armor_haULhuEg37zUUvhb.json b/src/packs/items/armors/armor_Chainmail_Armor_haULhuEg37zUUvhb.json index f7d07f32..2c2df8c9 100644 --- a/src/packs/items/armors/armor_Chainmail_Armor_haULhuEg37zUUvhb.json +++ b/src/packs/items/armors/armor_Chainmail_Armor_haULhuEg37zUUvhb.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 7, "severe": 15 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753805286605, - "modifiedTime": 1753805329039, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431648072, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!haULhuEg37zUUvhb" } diff --git a/src/packs/items/armors/armor_Channeling_Armor_vMJxEWz1srfwMsoj.json b/src/packs/items/armors/armor_Channeling_Armor_vMJxEWz1srfwMsoj.json index 3d795985..efae1b77 100644 --- a/src/packs/items/armors/armor_Channeling_Armor_vMJxEWz1srfwMsoj.json +++ b/src/packs/items/armors/armor_Channeling_Armor_vMJxEWz1srfwMsoj.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 13, "severe": 36 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753809433880, - "modifiedTime": 1753809460722, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431807296, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!vMJxEWz1srfwMsoj" } diff --git a/src/packs/items/armors/armor_Dragonscale_Armor_mdQ69eFHyAQUDmE7.json b/src/packs/items/armors/armor_Dragonscale_Armor_mdQ69eFHyAQUDmE7.json index 52002171..1e690af7 100644 --- a/src/packs/items/armors/armor_Dragonscale_Armor_mdQ69eFHyAQUDmE7.json +++ b/src/packs/items/armors/armor_Dragonscale_Armor_mdQ69eFHyAQUDmE7.json @@ -23,7 +23,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -56,6 +55,11 @@ "baseThresholds": { "major": 11, "severe": 27 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [], @@ -69,12 +73,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753807902750, - "modifiedTime": 1753809495490, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431776878, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!mdQ69eFHyAQUDmE7" } diff --git a/src/packs/items/armors/armor_Dunamis_Silkchain_hAY6UgdGT7dj22Pr.json b/src/packs/items/armors/armor_Dunamis_Silkchain_hAY6UgdGT7dj22Pr.json index 9a6b1baa..c90ff961 100644 --- a/src/packs/items/armors/armor_Dunamis_Silkchain_hAY6UgdGT7dj22Pr.json +++ b/src/packs/items/armors/armor_Dunamis_Silkchain_hAY6UgdGT7dj22Pr.json @@ -16,11 +16,12 @@ "img": "icons/magic/time/hourglass-brown-orange.webp", "cost": [ { - "key": "armorSlot", + "key": "resource", + "itemId": "armorSlot", "value": 1, - "keyIsID": false, "scalable": false, - "step": null + "step": null, + "consumeOnSuccess": false } ], "roll": { @@ -80,6 +81,11 @@ "baseThresholds": { "major": 13, "severe": 36 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [], @@ -93,12 +99,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753809264956, - "modifiedTime": 1753809422818, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1756325575974, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_key": "!items!hAY6UgdGT7dj22Pr" } diff --git a/src/packs/items/armors/armor_Elundrian_Chain_Mail_Q6LxmtFetDDkoZVZ.json b/src/packs/items/armors/armor_Elundrian_Chain_Mail_Q6LxmtFetDDkoZVZ.json index 0825a7a1..8a395b4a 100644 --- a/src/packs/items/armors/armor_Elundrian_Chain_Mail_Q6LxmtFetDDkoZVZ.json +++ b/src/packs/items/armors/armor_Elundrian_Chain_Mail_Q6LxmtFetDDkoZVZ.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 9, "severe": 21 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753805557786, - "modifiedTime": 1753805605453, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431672675, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Q6LxmtFetDDkoZVZ" } diff --git a/src/packs/items/armors/armor_Emberwoven_Armor_bcQUh4QG3qFX0Vx6.json b/src/packs/items/armors/armor_Emberwoven_Armor_bcQUh4QG3qFX0Vx6.json index 3c471a93..2dfb8b29 100644 --- a/src/packs/items/armors/armor_Emberwoven_Armor_bcQUh4QG3qFX0Vx6.json +++ b/src/packs/items/armors/armor_Emberwoven_Armor_bcQUh4QG3qFX0Vx6.json @@ -79,6 +79,11 @@ "baseThresholds": { "major": 13, "severe": 36 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [], @@ -94,10 +99,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753809470138, - "modifiedTime": 1754853048367, - "lastModifiedBy": "7zAk0CoP90J7ebn0" + "modifiedTime": 1755431817865, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!bcQUh4QG3qFX0Vx6" } diff --git a/src/packs/items/armors/armor_Full_Fortified_Armor_7emTSt6nhZuTlvt5.json b/src/packs/items/armors/armor_Full_Fortified_Armor_7emTSt6nhZuTlvt5.json index 73ecfc96..7b2820b4 100644 --- a/src/packs/items/armors/armor_Full_Fortified_Armor_7emTSt6nhZuTlvt5.json +++ b/src/packs/items/armors/armor_Full_Fortified_Armor_7emTSt6nhZuTlvt5.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 15, "severe": 40 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753809653710, - "modifiedTime": 1753809691935, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431822964, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!7emTSt6nhZuTlvt5" } diff --git a/src/packs/items/armors/armor_Full_Plate_Armor_UdUJNa31WxFW2noa.json b/src/packs/items/armors/armor_Full_Plate_Armor_UdUJNa31WxFW2noa.json index 4b45cf7e..14d9257d 100644 --- a/src/packs/items/armors/armor_Full_Plate_Armor_UdUJNa31WxFW2noa.json +++ b/src/packs/items/armors/armor_Full_Plate_Armor_UdUJNa31WxFW2noa.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 8, "severe": 17 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [ @@ -83,12 +88,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753805338471, - "modifiedTime": 1753805365355, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431655405, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!UdUJNa31WxFW2noa" } diff --git a/src/packs/items/armors/armor_Gambeson_Armor_yJFp1bfpecDcStVK.json b/src/packs/items/armors/armor_Gambeson_Armor_yJFp1bfpecDcStVK.json index c51838e0..c02ddd6f 100644 --- a/src/packs/items/armors/armor_Gambeson_Armor_yJFp1bfpecDcStVK.json +++ b/src/packs/items/armors/armor_Gambeson_Armor_yJFp1bfpecDcStVK.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 5, "severe": 11 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753804995685, - "modifiedTime": 1753805399875, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431660555, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!yJFp1bfpecDcStVK" } diff --git a/src/packs/items/armors/armor_Harrowbone_Armor_dvyQeUVRLc9y6rnt.json b/src/packs/items/armors/armor_Harrowbone_Armor_dvyQeUVRLc9y6rnt.json index 85dd7864..efb272fe 100644 --- a/src/packs/items/armors/armor_Harrowbone_Armor_dvyQeUVRLc9y6rnt.json +++ b/src/packs/items/armors/armor_Harrowbone_Armor_dvyQeUVRLc9y6rnt.json @@ -72,6 +72,11 @@ "baseThresholds": { "major": 9, "severe": 21 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [], @@ -85,12 +90,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753805616349, - "modifiedTime": 1753807254838, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431677692, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!dvyQeUVRLc9y6rnt" } diff --git a/src/packs/items/armors/armor_Improved_Chainmail_Armor_K5WkjS0NGqHYmhU3.json b/src/packs/items/armors/armor_Improved_Chainmail_Armor_K5WkjS0NGqHYmhU3.json index 62648557..e39f7ebf 100644 --- a/src/packs/items/armors/armor_Improved_Chainmail_Armor_K5WkjS0NGqHYmhU3.json +++ b/src/packs/items/armors/armor_Improved_Chainmail_Armor_K5WkjS0NGqHYmhU3.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 11, "severe": 24 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753805490635, - "modifiedTime": 1753805512828, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431684575, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!K5WkjS0NGqHYmhU3" } diff --git a/src/packs/items/armors/armor_Improved_Full_Plate_Armor_9f7RozpPTqrzJS1m.json b/src/packs/items/armors/armor_Improved_Full_Plate_Armor_9f7RozpPTqrzJS1m.json index 7e5e36df..3d2355fc 100644 --- a/src/packs/items/armors/armor_Improved_Full_Plate_Armor_9f7RozpPTqrzJS1m.json +++ b/src/packs/items/armors/armor_Improved_Full_Plate_Armor_9f7RozpPTqrzJS1m.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 13, "severe": 28 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [ @@ -83,12 +88,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753805522506, - "modifiedTime": 1753805544375, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431689873, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!9f7RozpPTqrzJS1m" } diff --git a/src/packs/items/armors/armor_Improved_Gambeson_Armor_jphnMZjnS2FkOH3s.json b/src/packs/items/armors/armor_Improved_Gambeson_Armor_jphnMZjnS2FkOH3s.json index 8c6a8f2c..b16a0219 100644 --- a/src/packs/items/armors/armor_Improved_Gambeson_Armor_jphnMZjnS2FkOH3s.json +++ b/src/packs/items/armors/armor_Improved_Gambeson_Armor_jphnMZjnS2FkOH3s.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 7, "severe": 16 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753805377869, - "modifiedTime": 1753805418921, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431695440, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!jphnMZjnS2FkOH3s" } diff --git a/src/packs/items/armors/armor_Improved_Leather_Armor_t91M61pSCMKStTNt.json b/src/packs/items/armors/armor_Improved_Leather_Armor_t91M61pSCMKStTNt.json index 4d225093..9794cf70 100644 --- a/src/packs/items/armors/armor_Improved_Leather_Armor_t91M61pSCMKStTNt.json +++ b/src/packs/items/armors/armor_Improved_Leather_Armor_t91M61pSCMKStTNt.json @@ -18,6 +18,11 @@ "baseThresholds": { "major": 9, "severe": 20 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [], @@ -31,12 +36,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753805428821, - "modifiedTime": 1753805482906, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431701475, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!t91M61pSCMKStTNt" } diff --git a/src/packs/items/armors/armor_Irontree_Breastplate_Armor_tzZntboNtHL5C6VM.json b/src/packs/items/armors/armor_Irontree_Breastplate_Armor_tzZntboNtHL5C6VM.json index 71ad95a9..4fa628b4 100644 --- a/src/packs/items/armors/armor_Irontree_Breastplate_Armor_tzZntboNtHL5C6VM.json +++ b/src/packs/items/armors/armor_Irontree_Breastplate_Armor_tzZntboNtHL5C6VM.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 9, "severe": 20 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [ @@ -90,12 +95,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753807283589, - "modifiedTime": 1753807455497, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431706974, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!tzZntboNtHL5C6VM" } diff --git a/src/packs/items/armors/armor_Leather_Armor_nibfdNtp2PtxvbVz.json b/src/packs/items/armors/armor_Leather_Armor_nibfdNtp2PtxvbVz.json index 1d87a030..32e577c0 100644 --- a/src/packs/items/armors/armor_Leather_Armor_nibfdNtp2PtxvbVz.json +++ b/src/packs/items/armors/armor_Leather_Armor_nibfdNtp2PtxvbVz.json @@ -18,6 +18,11 @@ "baseThresholds": { "major": 6, "severe": 13 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [], @@ -31,12 +36,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753805219679, - "modifiedTime": 1753805275427, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431666089, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!nibfdNtp2PtxvbVz" } diff --git a/src/packs/items/armors/armor_Legendary_Chainmail_Armor_EsIN5OLKe9ZYFNXZ.json b/src/packs/items/armors/armor_Legendary_Chainmail_Armor_EsIN5OLKe9ZYFNXZ.json index 1192b4d5..b61b613c 100644 --- a/src/packs/items/armors/armor_Legendary_Chainmail_Armor_EsIN5OLKe9ZYFNXZ.json +++ b/src/packs/items/armors/armor_Legendary_Chainmail_Armor_EsIN5OLKe9ZYFNXZ.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 15, "severe": 40 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753809118507, - "modifiedTime": 1753809151454, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431827865, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!EsIN5OLKe9ZYFNXZ" } diff --git a/src/packs/items/armors/armor_Legendary_Full_Plate_Armor_SXWjUR2aUR6bYvdl.json b/src/packs/items/armors/armor_Legendary_Full_Plate_Armor_SXWjUR2aUR6bYvdl.json index 5b2d4a97..1459709a 100644 --- a/src/packs/items/armors/armor_Legendary_Full_Plate_Armor_SXWjUR2aUR6bYvdl.json +++ b/src/packs/items/armors/armor_Legendary_Full_Plate_Armor_SXWjUR2aUR6bYvdl.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 17, "severe": 44 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -83,12 +88,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753809163051, - "modifiedTime": 1753809225793, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431832881, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!SXWjUR2aUR6bYvdl" } diff --git a/src/packs/items/armors/armor_Legendary_Gambeson_Armor_c6tMXz4rPf9ioQrf.json b/src/packs/items/armors/armor_Legendary_Gambeson_Armor_c6tMXz4rPf9ioQrf.json index e05e5f32..7b425421 100644 --- a/src/packs/items/armors/armor_Legendary_Gambeson_Armor_c6tMXz4rPf9ioQrf.json +++ b/src/packs/items/armors/armor_Legendary_Gambeson_Armor_c6tMXz4rPf9ioQrf.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 11, "severe": 32 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753809031184, - "modifiedTime": 1753809064934, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431838049, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!c6tMXz4rPf9ioQrf" } diff --git a/src/packs/items/armors/armor_Legendary_Leather_Armor_Tptgl5WOj76TyFn7.json b/src/packs/items/armors/armor_Legendary_Leather_Armor_Tptgl5WOj76TyFn7.json index 9dc82529..c456bc79 100644 --- a/src/packs/items/armors/armor_Legendary_Leather_Armor_Tptgl5WOj76TyFn7.json +++ b/src/packs/items/armors/armor_Legendary_Leather_Armor_Tptgl5WOj76TyFn7.json @@ -18,6 +18,11 @@ "baseThresholds": { "major": 13, "severe": 36 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [], @@ -31,12 +36,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753809078323, - "modifiedTime": 1753809106203, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431845786, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Tptgl5WOj76TyFn7" } diff --git a/src/packs/items/armors/armor_Monett_s_Cloak_AQzU2RsqS5V5bd1v.json b/src/packs/items/armors/armor_Monett_s_Cloak_AQzU2RsqS5V5bd1v.json index 0cc3415d..ed64499f 100644 --- a/src/packs/items/armors/armor_Monett_s_Cloak_AQzU2RsqS5V5bd1v.json +++ b/src/packs/items/armors/armor_Monett_s_Cloak_AQzU2RsqS5V5bd1v.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 16, "severe": 39 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753808797896, - "modifiedTime": 1753808820623, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431781312, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!AQzU2RsqS5V5bd1v" } diff --git a/src/packs/items/armors/armor_Rosewild_Armor_tN8kAeBvNKM3EBFo.json b/src/packs/items/armors/armor_Rosewild_Armor_tN8kAeBvNKM3EBFo.json index a0cb99f1..48eb7fde 100644 --- a/src/packs/items/armors/armor_Rosewild_Armor_tN8kAeBvNKM3EBFo.json +++ b/src/packs/items/armors/armor_Rosewild_Armor_tN8kAeBvNKM3EBFo.json @@ -48,6 +48,11 @@ "baseThresholds": { "major": 11, "severe": 23 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [], @@ -61,12 +66,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753807654078, - "modifiedTime": 1753807692793, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431712574, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!tN8kAeBvNKM3EBFo" } diff --git a/src/packs/items/armors/armor_Runes_of_Fortification_P4qAEDJUoNLgVRsA.json b/src/packs/items/armors/armor_Runes_of_Fortification_P4qAEDJUoNLgVRsA.json index 33fef2f5..0de3a7f9 100644 --- a/src/packs/items/armors/armor_Runes_of_Fortification_P4qAEDJUoNLgVRsA.json +++ b/src/packs/items/armors/armor_Runes_of_Fortification_P4qAEDJUoNLgVRsA.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -56,6 +55,11 @@ "baseThresholds": { "major": 17, "severe": 43 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [], @@ -69,12 +73,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753808832397, - "modifiedTime": 1753809018449, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431788295, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!P4qAEDJUoNLgVRsA" } diff --git a/src/packs/items/armors/armor_Runetan_Floating_Armor_tHlBUDQC24YMZqd6.json b/src/packs/items/armors/armor_Runetan_Floating_Armor_tHlBUDQC24YMZqd6.json index df5cb28f..52aa1978 100644 --- a/src/packs/items/armors/armor_Runetan_Floating_Armor_tHlBUDQC24YMZqd6.json +++ b/src/packs/items/armors/armor_Runetan_Floating_Armor_tHlBUDQC24YMZqd6.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -56,6 +55,11 @@ "baseThresholds": { "major": 9, "severe": 20 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [], @@ -69,12 +73,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753807528637, - "modifiedTime": 1753808232404, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431718527, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!tHlBUDQC24YMZqd6" } diff --git a/src/packs/items/armors/armor_Savior_Chainmail_8X16lJQ3xltTwynm.json b/src/packs/items/armors/armor_Savior_Chainmail_8X16lJQ3xltTwynm.json index 4d8ccfa6..78689fcf 100644 --- a/src/packs/items/armors/armor_Savior_Chainmail_8X16lJQ3xltTwynm.json +++ b/src/packs/items/armors/armor_Savior_Chainmail_8X16lJQ3xltTwynm.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 18, "severe": 48 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -108,12 +113,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753809733405, - "modifiedTime": 1753809762536, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431850849, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!8X16lJQ3xltTwynm" } diff --git a/src/packs/items/armors/armor_Spiked_Plate_Armor_QjwsIhXKqnlvRBMv.json b/src/packs/items/armors/armor_Spiked_Plate_Armor_QjwsIhXKqnlvRBMv.json index 07536704..c744b0b1 100644 --- a/src/packs/items/armors/armor_Spiked_Plate_Armor_QjwsIhXKqnlvRBMv.json +++ b/src/packs/items/armors/armor_Spiked_Plate_Armor_QjwsIhXKqnlvRBMv.json @@ -26,6 +26,11 @@ "baseThresholds": { "major": 10, "severe": 25 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [ @@ -83,12 +88,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753808464678, - "modifiedTime": 1753808691813, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431794279, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!QjwsIhXKqnlvRBMv" } diff --git a/src/packs/items/armors/armor_Tyris_Soft_Armor_PSW3BxCGmtLeWOxM.json b/src/packs/items/armors/armor_Tyris_Soft_Armor_PSW3BxCGmtLeWOxM.json index ae9c849b..60da770c 100644 --- a/src/packs/items/armors/armor_Tyris_Soft_Armor_PSW3BxCGmtLeWOxM.json +++ b/src/packs/items/armors/armor_Tyris_Soft_Armor_PSW3BxCGmtLeWOxM.json @@ -48,6 +48,11 @@ "baseThresholds": { "major": 8, "severe": 18 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 56, + "artist": "" } }, "effects": [], @@ -61,12 +66,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753807607742, - "modifiedTime": 1753807646156, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431725559, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!PSW3BxCGmtLeWOxM" } diff --git a/src/packs/items/armors/armor_Veritas_Opal_Armor_OvzgUTYy2RCN85vV.json b/src/packs/items/armors/armor_Veritas_Opal_Armor_OvzgUTYy2RCN85vV.json index 44f644b0..829c3e40 100644 --- a/src/packs/items/armors/armor_Veritas_Opal_Armor_OvzgUTYy2RCN85vV.json +++ b/src/packs/items/armors/armor_Veritas_Opal_Armor_OvzgUTYy2RCN85vV.json @@ -48,6 +48,11 @@ "baseThresholds": { "major": 13, "severe": 36 + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 57, + "artist": "" } }, "effects": [], @@ -61,12 +66,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753809706360, - "modifiedTime": 1753809725217, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431856135, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!OvzgUTYy2RCN85vV" } diff --git a/src/packs/items/consumables/consumable_Acidpaste_cfVFmS8vT9dbq9s1.json b/src/packs/items/consumables/consumable_Acidpaste_cfVFmS8vT9dbq9s1.json index 78da26af..9bbca941 100644 --- a/src/packs/items/consumables/consumable_Acidpaste_cfVFmS8vT9dbq9s1.json +++ b/src/packs/items/consumables/consumable_Acidpaste_cfVFmS8vT9dbq9s1.json @@ -14,7 +14,16 @@ "description": "

This paste eats away walls and other surfaces in bright flashes.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "cfVFmS8vT9dbq9s1", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -30,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -44,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753590344700, - "modifiedTime": 1754394373835, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336051101, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 20aeeb50..b06f1634 100644 --- a/src/packs/items/consumables/consumable_Armor_Stitcher_VlbsCjvvLNfTzNXb.json +++ b/src/packs/items/consumables/consumable_Armor_Stitcher_VlbsCjvvLNfTzNXb.json @@ -20,7 +20,16 @@ "key": "hope", "value": 1, "step": 1, - "keyIsID": false + "itemId": null, + "consumeOnSuccess": false + }, + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "VlbsCjvvLNfTzNXb", + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -30,15 +39,21 @@ }, "effects": [], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Stitch", "img": "icons/skills/trades/textiles-stitching-leather-brown.webp", - "range": "" + "range": "self" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -52,12 +67,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753588973384, - "modifiedTime": 1754394381368, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336337676, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 39f74078..ad6dea85 100644 --- a/src/packs/items/consumables/consumable_Attune_Potion_JGD3M9hBHtVAA8XP.json +++ b/src/packs/items/consumables/consumable_Attune_Potion_JGD3M9hBHtVAA8XP.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your next Instinct Roll.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "JGD3M9hBHtVAA8XP", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -32,10 +41,16 @@ }, "name": "Drink", "img": "icons/consumables/potions/bottle-conical-corked-purple.webp", - "range": "" + "range": "self" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753587033468, - "modifiedTime": 1754394388974, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336352911, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 0913fb6d..5b58324d 100644 --- a/src/packs/items/consumables/consumable_Blinding_Orb_eAXHdzA5qNPldOpn.json +++ b/src/packs/items/consumables/consumable_Blinding_Orb_eAXHdzA5qNPldOpn.json @@ -14,7 +14,16 @@ "description": "

You can activate this orb to create a flash of bright light. All targets within Close range become Vulnerable until they mark HP.

@Template[type:emanation|range:c]

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "eAXHdzA5qNPldOpn", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "close" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [ { @@ -57,7 +72,7 @@ "startRound": null, "startTurn": null }, - "description": "

You are Vulnerable until you mark a Hit Point.

", + "description": "

You are Vulnerable until you mark a Hit Point.

", "tint": "#ffffff", "statuses": [ "vulnerable" @@ -89,12 +104,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753592512731, - "modifiedTime": 1754394410769, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336362549, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 103b102f..545ce424 100644 --- a/src/packs/items/consumables/consumable_Blood_of_the_Yorgi_pDGzmczoTlKGmKgd.json +++ b/src/packs/items/consumables/consumable_Blood_of_the_Yorgi_pDGzmczoTlKGmKgd.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "pDGzmczoTlKGmKgd", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -22,15 +31,21 @@ }, "effects": [], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Drink", "img": "icons/consumables/potions/potion-tube-corked-bat-gold-red.webp", - "range": "" + "range": "veryFar" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -44,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589954973, - "modifiedTime": 1754394423870, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336370750, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 0c33a50e..56bd6696 100644 --- a/src/packs/items/consumables/consumable_Bolster_Potion_FOPQNqXbiVO0ilYL.json +++ b/src/packs/items/consumables/consumable_Bolster_Potion_FOPQNqXbiVO0ilYL.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your next Strength Roll.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "FOPQNqXbiVO0ilYL", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -32,10 +41,16 @@ }, "name": "Drink", "img": "icons/consumables/potions/potion-vial-tube-yellow.webp", - "range": "" + "range": "self" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753586850134, - "modifiedTime": 1754394431654, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336378610, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 61b0fb2f..73dcfc1f 100644 --- a/src/packs/items/consumables/consumable_Bonding_Honey_PfQvqopXgvroBklL.json +++ b/src/packs/items/consumables/consumable_Bonding_Honey_PfQvqopXgvroBklL.json @@ -14,7 +14,16 @@ "description": "

This honey can be used to glue two objects together permanently.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "PfQvqopXgvroBklL", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -30,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [], "folder": null, @@ -44,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753592033119, - "modifiedTime": 1754394442471, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336387437, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index a03ba6fe..777adc08 100644 --- a/src/packs/items/consumables/consumable_Bridge_Seed_RrIasiMCt6mqVTps.json +++ b/src/packs/items/consumables/consumable_Bridge_Seed_RrIasiMCt6mqVTps.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "RrIasiMCt6mqVTps", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -30,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -44,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753591685990, - "modifiedTime": 1754394450971, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336396404, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_key": "!items!RrIasiMCt6mqVTps" } diff --git a/src/packs/items/consumables/consumable_Channelstone_IKMVQ6VwtapwoUim.json b/src/packs/items/consumables/consumable_Channelstone_IKMVQ6VwtapwoUim.json index c93bb512..85e8ed29 100644 --- a/src/packs/items/consumables/consumable_Channelstone_IKMVQ6VwtapwoUim.json +++ b/src/packs/items/consumables/consumable_Channelstone_IKMVQ6VwtapwoUim.json @@ -14,7 +14,16 @@ "description": "

You can use this stone to take a spell or grimoire from your vault, use it once, and return it to your vault.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "IKMVQ6VwtapwoUim", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -30,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -44,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753590192533, - "modifiedTime": 1754394463123, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336406347, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 26e03cb2..ae60104a 100644 --- a/src/packs/items/consumables/consumable_Charm_Potion_CVBbFfOY75YwyQsp.json +++ b/src/packs/items/consumables/consumable_Charm_Potion_CVBbFfOY75YwyQsp.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your next Presence Roll.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "CVBbFfOY75YwyQsp", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753587097370, - "modifiedTime": 1754394471027, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336420032, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index cdbae661..a6ca40ba 100644 --- a/src/packs/items/consumables/consumable_Circle_of_the_Void_elsyP6VhHw1JjGSl.json +++ b/src/packs/items/consumables/consumable_Circle_of_the_Void_elsyP6VhHw1JjGSl.json @@ -17,10 +17,11 @@ "cost": [ { "scalable": false, - "key": "stress", + "key": "quantity", "value": 1, - "keyIsID": false, - "step": null + "itemId": "elsyP6VhHw1JjGSl", + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -38,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -52,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753590692159, - "modifiedTime": 1754394477728, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336427253, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index f158628e..3c58799a 100644 --- a/src/packs/items/consumables/consumable_Control_Potion_eeBhZSGLjuNZuJuI.json +++ b/src/packs/items/consumables/consumable_Control_Potion_eeBhZSGLjuNZuJuI.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your next Finesse Roll.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "eeBhZSGLjuNZuJuI", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753586944889, - "modifiedTime": 1754394484407, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336435661, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index b7d636bc..c7a9a76d 100644 --- a/src/packs/items/consumables/consumable_Death_Tea_xDnJeF1grkmKck8Q.json +++ b/src/packs/items/consumables/consumable_Death_Tea_xDnJeF1grkmKck8Q.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "xDnJeF1grkmKck8Q", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -27,15 +36,21 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Drink", "img": "icons/consumables/drinks/wine-amphora-clay-gray.webp", - "range": "" + "range": "self" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [ { @@ -64,7 +79,7 @@ "startRound": null, "startTurn": null }, - "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.

", + "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.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753592717630, - "modifiedTime": 1754394494474, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336445925, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index da89cf7a..3bb5766f 100644 --- a/src/packs/items/consumables/consumable_Dragonbloom_Tea_wM18PWWW2Ami4fBG.json +++ b/src/packs/items/consumables/consumable_Dragonbloom_Tea_wM18PWWW2Ami4fBG.json @@ -11,13 +11,22 @@ "type": "attack", "_id": "rcHEz3ImUDwo6lPC", "systemPath": "actions", - "description": "", + "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.

@Template[type:emanation|range:c]

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "consumeOnSuccess": false, + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "wM18PWWW2Ami4fBG", + "step": null + } + ], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, "damage": { @@ -79,7 +88,13 @@ "range": "close" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -93,12 +108,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753591525829, - "modifiedTime": 1753591674720, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1756336455635, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index fa9da4cf..73f1b3c2 100644 --- a/src/packs/items/consumables/consumable_Dripfang_Poison_eU8VpbWB2NHIL47n.json +++ b/src/packs/items/consumables/consumable_Dripfang_Poison_eU8VpbWB2NHIL47n.json @@ -14,7 +14,16 @@ "description": "

A creature who consumes this poison takes 8d10 direct magic damage.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "eU8VpbWB2NHIL47n", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -61,7 +70,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -75,12 +90,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753590938047, - "modifiedTime": 1754394503675, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336465398, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 08ba032e..dc8260d0 100644 --- a/src/packs/items/consumables/consumable_Enlighten_Potion_aWHSO2AqDufi7nL4.json +++ b/src/packs/items/consumables/consumable_Enlighten_Potion_aWHSO2AqDufi7nL4.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your next Knowledge Roll.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "aWHSO2AqDufi7nL4", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753587185754, - "modifiedTime": 1754394512375, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336472979, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 79a7a676..4b4c8236 100644 --- a/src/packs/items/consumables/consumable_Feast_of_Xuria_aX6NyxkNzu0LcJpt.json +++ b/src/packs/items/consumables/consumable_Feast_of_Xuria_aX6NyxkNzu0LcJpt.json @@ -14,7 +14,16 @@ "description": "

You can eat this meal to clear all HP and Stress and gain 1d4 Hope.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "aX6NyxkNzu0LcJpt", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -124,7 +133,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [], "folder": null, @@ -138,12 +153,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753591925502, - "modifiedTime": 1754394521825, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336480162, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_key": "!items!aX6NyxkNzu0LcJpt" } diff --git a/src/packs/items/consumables/consumable_Featherbone_DpxEMpwfasEBpORU.json b/src/packs/items/consumables/consumable_Featherbone_DpxEMpwfasEBpORU.json index 7b4816a5..023edb88 100644 --- a/src/packs/items/consumables/consumable_Featherbone_DpxEMpwfasEBpORU.json +++ b/src/packs/items/consumables/consumable_Featherbone_DpxEMpwfasEBpORU.json @@ -14,25 +14,90 @@ "description": "

You can use this bone to control your falling speed for a number of minutes equal to your level.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "DpxEMpwfasEBpORU", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", "recovery": null }, - "effects": [], + "effects": [ + { + "_id": "VfJIJBW96e45xQHY", + "onSave": false + } + ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Use", "img": "icons/commodities/bones/bones-stack-worn-brown.webp", - "range": "" + "range": "self" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, - "effects": [], + "effects": [ + { + "name": "Featherbone", + "img": "icons/commodities/bones/bones-stack-worn-brown.webp", + "origin": "Compendium.daggerheart.consumables.Item.DpxEMpwfasEBpORU", + "transfer": false, + "_id": "VfJIJBW96e45xQHY", + "type": "base", + "system": { + "rangeDependence": { + "enabled": false, + "type": "withinRange", + "target": "hostile", + "range": "melee" + } + }, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "

You can use this bone to control your falling speed for a number of minutes equal to your level.

", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.347", + "systemId": "daggerheart", + "systemVersion": "1.1.0", + "createdTime": 1756041997551, + "modifiedTime": 1756042000517, + "lastModifiedBy": "vUIbuan0U50nfKBE" + }, + "_key": "!items.effects!DpxEMpwfasEBpORU.VfJIJBW96e45xQHY" + } + ], "folder": null, "sort": 0, "ownership": { @@ -44,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753590624634, - "modifiedTime": 1754394529842, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336487822, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 33130fd2..b76ff1f9 100644 --- a/src/packs/items/consumables/consumable_Gill_Salve_Nvbb9mze6o5D0AEg.json +++ b/src/packs/items/consumables/consumable_Gill_Salve_Nvbb9mze6o5D0AEg.json @@ -14,25 +14,90 @@ "description": "

You can apply this salve to your neck to breathe underwater for a number of minutes equal to your level.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "Nvbb9mze6o5D0AEg", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", "recovery": null }, - "effects": [], + "effects": [ + { + "_id": "5rL9CY5GO9SJcEZq", + "onSave": false + } + ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Apply", "img": "icons/commodities/materials/bowl-powder-blue.webp", - "range": "" + "range": "self" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, - "effects": [], + "effects": [ + { + "name": "Gill Salve", + "img": "icons/commodities/materials/bowl-powder-blue.webp", + "origin": "Compendium.daggerheart.consumables.Item.Nvbb9mze6o5D0AEg", + "transfer": false, + "_id": "5rL9CY5GO9SJcEZq", + "type": "base", + "system": { + "rangeDependence": { + "enabled": false, + "type": "withinRange", + "target": "hostile", + "range": "melee" + } + }, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "

You can apply this salve to your neck to breathe underwater for a number of minutes equal to your level.

", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.347", + "systemId": "daggerheart", + "systemVersion": "1.1.0", + "createdTime": 1756041968799, + "modifiedTime": 1756041978849, + "lastModifiedBy": "vUIbuan0U50nfKBE" + }, + "_key": "!items.effects!Nvbb9mze6o5D0AEg.5rL9CY5GO9SJcEZq" + } + ], "folder": null, "sort": 0, "ownership": { @@ -44,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589241094, - "modifiedTime": 1754394537845, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336496390, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index ba7fd727..18dad17f 100644 --- a/src/packs/items/consumables/consumable_Grindletooth_Venom_8WkhvSzeOmLdnoLJ.json +++ b/src/packs/items/consumables/consumable_Grindletooth_Venom_8WkhvSzeOmLdnoLJ.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "8WkhvSzeOmLdnoLJ", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [ { @@ -71,7 +86,7 @@ "startRound": null, "startTurn": null }, - "description": "

You deal 1d6 additionalΒ physical damageΒ on your next damage roll with the weapon the venom was applied to.

", + "description": "

You deal 1d6 additionalΒ physical damageΒ on your next damage roll with the weapon the venom was applied to.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -101,12 +116,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753587386639, - "modifiedTime": 1754394547827, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336506199, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index ad36fe3e..5563b561 100644 --- a/src/packs/items/consumables/consumable_Growing_Potion_fl2f3ees8RFMze9t.json +++ b/src/packs/items/consumables/consumable_Growing_Potion_fl2f3ees8RFMze9t.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "fl2f3ees8RFMze9t", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [ { @@ -100,12 +115,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753592174440, - "modifiedTime": 1754394557196, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336513568, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 4279f73c..c600d102 100644 --- a/src/packs/items/consumables/consumable_Health_Potion_Aruc2NLutWuVIjP1.json +++ b/src/packs/items/consumables/consumable_Health_Potion_Aruc2NLutWuVIjP1.json @@ -14,7 +14,16 @@ "description": "

Clear 1d4+1 HP.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "Aruc2NLutWuVIjP1", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -74,7 +83,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -88,12 +103,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753588839527, - "modifiedTime": 1754394566378, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336520901, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 7aa146d4..87463773 100644 --- a/src/packs/items/consumables/consumable_Homet_s_Secret_Potion_VSwa1LpQ9PjZKsWF.json +++ b/src/packs/items/consumables/consumable_Homet_s_Secret_Potion_VSwa1LpQ9PjZKsWF.json @@ -14,7 +14,16 @@ "description": "

After drinking this potion, the next successful attack you make critically succeeds.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "VSwa1LpQ9PjZKsWF", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -64,7 +79,7 @@ "startRound": null, "startTurn": null }, - "description": "

The next successful attack you make critically succeeds.

", + "description": "

The next successful attack you make critically succeeds.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589998065, - "modifiedTime": 1754394576928, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336528677, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 9747d8d2..6cb963a8 100644 --- a/src/packs/items/consumables/consumable_Hopehold_Flare_EhaQCPJ8oiqpRIwB.json +++ b/src/packs/items/consumables/consumable_Hopehold_Flare_EhaQCPJ8oiqpRIwB.json @@ -14,7 +14,16 @@ "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.

@Template[type:emanation|range:c]

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "EhaQCPJ8oiqpRIwB", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -30,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -44,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753590388618, - "modifiedTime": 1754394599463, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336535700, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index dc86564b..09ba52dc 100644 --- a/src/packs/items/consumables/consumable_Improved_Arcane_Shard_nQTo6mNoPTEVBtkm.json +++ b/src/packs/items/consumables/consumable_Improved_Arcane_Shard_nQTo6mNoPTEVBtkm.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "consumeOnSuccess": false, + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "nQTo6mNoPTEVBtkm", + "step": null + } + ], "uses": { "value": null, "max": "", @@ -81,7 +90,13 @@ "range": "far" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -95,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589403341, - "modifiedTime": 1754394607830, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336543336, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 9b1ac237..70d515f2 100644 --- a/src/packs/items/consumables/consumable_Improved_Grindletooth_Venom_BqBWXXe9T07AMV4u.json +++ b/src/packs/items/consumables/consumable_Improved_Grindletooth_Venom_BqBWXXe9T07AMV4u.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "BqBWXXe9T07AMV4u", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [ { @@ -71,7 +86,7 @@ "startRound": null, "startTurn": null }, - "description": "

You deal 1d8 additionalΒ physical damageΒ on your next damage roll with the weapon the venom was applied to.

", + "description": "

You deal 1d8 additionalΒ physical damageΒ on your next damage roll with the weapon the venom was applied to.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -101,12 +116,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753588170670, - "modifiedTime": 1754394620213, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336563205, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index df45fcf2..7a9a8193 100644 --- a/src/packs/items/consumables/consumable_Jar_of_Lost_Voices_yUol6M5b8jsbk9za.json +++ b/src/packs/items/consumables/consumable_Jar_of_Lost_Voices_yUol6M5b8jsbk9za.json @@ -14,7 +14,16 @@ "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.

@Template[type:emanation|range:f]

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "yUol6M5b8jsbk9za", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -61,7 +70,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -75,12 +90,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753591372075, - "modifiedTime": 1754394648049, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336570894, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index bbe9e1a4..9f9939a8 100644 --- a/src/packs/items/consumables/consumable_Jumping_Root_c2putn9apuurJhWX.json +++ b/src/packs/items/consumables/consumable_Jumping_Root_c2putn9apuurJhWX.json @@ -14,7 +14,16 @@ "description": "

Eat this root to leap up to Far range once without needing to roll.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "c2putn9apuurJhWX", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -30,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -44,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753588566489, - "modifiedTime": 1754394659649, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336580501, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 02a13b6c..398d12f5 100644 --- a/src/packs/items/consumables/consumable_Knowledge_Stone_nL9IALzm9BNi5oSt.json +++ b/src/packs/items/consumables/consumable_Knowledge_Stone_nL9IALzm9BNi5oSt.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "nL9IALzm9BNi5oSt", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -30,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [], "folder": null, @@ -44,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753592240392, - "modifiedTime": 1754394668583, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336587702, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index ff722381..1cc164a2 100644 --- a/src/packs/items/consumables/consumable_Major_Arcane_Shard_AA7bmiwv00lshPrC.json +++ b/src/packs/items/consumables/consumable_Major_Arcane_Shard_AA7bmiwv00lshPrC.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "consumeOnSuccess": false, + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "AA7bmiwv00lshPrC", + "step": null + } + ], "uses": { "value": null, "max": "", @@ -79,7 +88,13 @@ "range": "far" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -93,12 +108,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753590515261, - "modifiedTime": 1754394676288, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336596900, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 63b3dfbf..05e4fe5d 100644 --- a/src/packs/items/consumables/consumable_Major_Attune_Potion_CCPFm5iXXwvyYYwR.json +++ b/src/packs/items/consumables/consumable_Major_Attune_Potion_CCPFm5iXXwvyYYwR.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your Instinct until your next rest.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "CCPFm5iXXwvyYYwR", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589747286, - "modifiedTime": 1754394684950, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336603508, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 58b988f9..12f5bf1d 100644 --- a/src/packs/items/consumables/consumable_Major_Bolster_Potion_mnyQDRtngWWQeRXF.json +++ b/src/packs/items/consumables/consumable_Major_Bolster_Potion_mnyQDRtngWWQeRXF.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your Strength until your next rest.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "mnyQDRtngWWQeRXF", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589623872, - "modifiedTime": 1754394694337, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336610323, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 65c01549..84a18028 100644 --- a/src/packs/items/consumables/consumable_Major_Charm_Potion_IJLAUlQymbSjzsri.json +++ b/src/packs/items/consumables/consumable_Major_Charm_Potion_IJLAUlQymbSjzsri.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your Presence until your next rest.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "IJLAUlQymbSjzsri", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589816684, - "modifiedTime": 1754394702935, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336617341, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index ff85d8ed..782e543c 100644 --- a/src/packs/items/consumables/consumable_Major_Control_Potion_80s1FLmTLtohZ5GH.json +++ b/src/packs/items/consumables/consumable_Major_Control_Potion_80s1FLmTLtohZ5GH.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your Finesse until your next rest.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "80s1FLmTLtohZ5GH", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589675185, - "modifiedTime": 1754394710253, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336639693, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index d2b26b03..a827a738 100644 --- a/src/packs/items/consumables/consumable_Major_Enlighten_Potion_SDdv1G2veMLKrxcJ.json +++ b/src/packs/items/consumables/consumable_Major_Enlighten_Potion_SDdv1G2veMLKrxcJ.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your Knowledge until your next rest.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "SDdv1G2veMLKrxcJ", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589874661, - "modifiedTime": 1754394718504, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336647833, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 454373f8..3e83a73c 100644 --- a/src/packs/items/consumables/consumable_Major_Health_Potion_cM7pHe8bBAxSZ2xR.json +++ b/src/packs/items/consumables/consumable_Major_Health_Potion_cM7pHe8bBAxSZ2xR.json @@ -14,7 +14,16 @@ "description": "

Clear 1d4+2 HP.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "cM7pHe8bBAxSZ2xR", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -74,7 +83,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -88,12 +103,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753591046168, - "modifiedTime": 1754394726288, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336654766, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 12ce1a3d..a7cd987e 100644 --- a/src/packs/items/consumables/consumable_Major_Stamina_Potion_I4cQ03xbxnc81EGa.json +++ b/src/packs/items/consumables/consumable_Major_Stamina_Potion_I4cQ03xbxnc81EGa.json @@ -14,7 +14,16 @@ "description": "

Clear 1d4+2 Stress.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "I4cQ03xbxnc81EGa", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -74,7 +83,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -88,12 +103,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753591113317, - "modifiedTime": 1754394330048, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336661213, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index a88a1c48..60cd96b2 100644 --- a/src/packs/items/consumables/consumable_Major_Stride_Potion_yK6eEDUrsPbZA8G0.json +++ b/src/packs/items/consumables/consumable_Major_Stride_Potion_yK6eEDUrsPbZA8G0.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your Agility until your next rest.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "yK6eEDUrsPbZA8G0", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589545730, - "modifiedTime": 1754394734536, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336667559, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 8e6ebe0a..5dc8ca28 100644 --- a/src/packs/items/consumables/consumable_Minor_Health_Potion_tPfKtKRRjv8qdSqy.json +++ b/src/packs/items/consumables/consumable_Minor_Health_Potion_tPfKtKRRjv8qdSqy.json @@ -14,7 +14,16 @@ "description": "

Clear 1d4 HP.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "tPfKtKRRjv8qdSqy", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -74,7 +83,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -88,12 +103,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753587253431, - "modifiedTime": 1754394742922, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336675059, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index b8944384..81b000f7 100644 --- a/src/packs/items/consumables/consumable_Minor_Stamina_Potion_b6vGSPFWOlzZZDLO.json +++ b/src/packs/items/consumables/consumable_Minor_Stamina_Potion_b6vGSPFWOlzZZDLO.json @@ -14,7 +14,16 @@ "description": "

Clear 1d4 Stress.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "b6vGSPFWOlzZZDLO", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -74,7 +83,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -88,12 +103,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753587324465, - "modifiedTime": 1754394346717, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336685650, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index caa7a36d..7c80bc78 100644 --- a/src/packs/items/consumables/consumable_Mirror_of_Marigold_UFQVwgYOUZ88UxcH.json +++ b/src/packs/items/consumables/consumable_Mirror_of_Marigold_UFQVwgYOUZ88UxcH.json @@ -16,11 +16,12 @@ "actionType": "action", "cost": [ { - "keyIsID": false, - "key": "hope", - "value": 1, "scalable": false, - "step": null + "key": "quantity", + "value": 1, + "itemId": "UFQVwgYOUZ88UxcH", + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -38,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [], "folder": null, @@ -52,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753592792213, - "modifiedTime": 1754394753189, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336692719, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 5c6bfa94..7081d7d7 100644 --- a/src/packs/items/consumables/consumable_Morphing_Clay_f1NHVSIHJJCIOaBl.json +++ b/src/packs/items/consumables/consumable_Morphing_Clay_f1NHVSIHJJCIOaBl.json @@ -16,11 +16,12 @@ "actionType": "action", "cost": [ { - "keyIsID": false, - "key": "hope", - "value": 1, "scalable": false, - "step": null + "key": "quantity", + "value": 1, + "itemId": "f1NHVSIHJJCIOaBl", + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -43,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -72,7 +79,7 @@ "startRound": null, "startTurn": null }, - "description": "

Your face is unrecognizable until your next rest.

", + "description": "

Your face is unrecognizable until your next rest.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -102,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753588254032, - "modifiedTime": 1754394761890, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336699132, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 1201b838..89952794 100644 --- a/src/packs/items/consumables/consumable_Mythic_Dust_Zsh2AvZr8EkGtLyw.json +++ b/src/packs/items/consumables/consumable_Mythic_Dust_Zsh2AvZr8EkGtLyw.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "Zsh2AvZr8EkGtLyw", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -71,7 +86,7 @@ "startRound": null, "startTurn": null }, - "description": "

You deal 1d12 additionalΒ magical damageΒ on your next damage roll with the weapon the venom was applied to.

", + "description": "

You deal 1d12 additionalΒ magical damageΒ on your next damage roll with the weapon the venom was applied to.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -101,12 +116,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753590241722, - "modifiedTime": 1754394769155, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336705787, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 2e3f60d4..e66486cf 100644 --- a/src/packs/items/consumables/consumable_Ogre_Musk_qr1bosjFcUfuwq4B.json +++ b/src/packs/items/consumables/consumable_Ogre_Musk_qr1bosjFcUfuwq4B.json @@ -14,7 +14,16 @@ "description": "

You can use this musk to prevent anyone from tracking you by mundane or magical means until your next rest.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "qr1bosjFcUfuwq4B", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -64,7 +79,7 @@ "startRound": null, "startTurn": null }, - "description": "

You cannot be tracked by mundane or magical means until your next rest.

", + "description": "

You cannot be tracked by mundane or magical means until your next rest.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753591168468, - "modifiedTime": 1754394777490, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336713230, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 990cb6eb..c7fa2bbb 100644 --- a/src/packs/items/consumables/consumable_Potion_of_Stability_dvL8oaxpEF6jKvYN.json +++ b/src/packs/items/consumables/consumable_Potion_of_Stability_dvL8oaxpEF6jKvYN.json @@ -14,7 +14,16 @@ "description": "

You can drink this potion to choose one additional downtime move.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "dvL8oaxpEF6jKvYN", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [ { @@ -100,12 +115,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753588038000, - "modifiedTime": 1754394786974, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336720970, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 41408713..d6350da3 100644 --- a/src/packs/items/consumables/consumable_Redthorn_Saliva_s2Exl2XFuoOhtIov.json +++ b/src/packs/items/consumables/consumable_Redthorn_Saliva_s2Exl2XFuoOhtIov.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "s2Exl2XFuoOhtIov", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -71,7 +86,7 @@ "startRound": null, "startTurn": null }, - "description": "

You deal 1d12 additional physical damageΒ on your next damage roll with the weapon the saliva was applied to.

", + "description": "

You deal 1d12 additional physical damageΒ on your next damage roll with the weapon the saliva was applied to.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -101,12 +116,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753590061810, - "modifiedTime": 1754394793758, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336727954, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 8488df22..7e07b702 100644 --- a/src/packs/items/consumables/consumable_Replication_Parchment_yJkwz4AP6yhGo8Vj.json +++ b/src/packs/items/consumables/consumable_Replication_Parchment_yJkwz4AP6yhGo8Vj.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "yJkwz4AP6yhGo8Vj", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -30,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -44,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753589306667, - "modifiedTime": 1754394802909, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336734771, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 95e84b30..08af29cc 100644 --- a/src/packs/items/consumables/consumable_Shrinking_Potion_HGixKenQwhyRAYNk.json +++ b/src/packs/items/consumables/consumable_Shrinking_Potion_HGixKenQwhyRAYNk.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "HGixKenQwhyRAYNk", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [ { @@ -100,12 +115,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753592077792, - "modifiedTime": 1754394810891, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336741086, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 9ac76466..b627695a 100644 --- a/src/packs/items/consumables/consumable_Sleeping_Sap_XZavUVlHEvE2srEt.json +++ b/src/packs/items/consumables/consumable_Sleeping_Sap_XZavUVlHEvE2srEt.json @@ -14,7 +14,16 @@ "description": "

You can drink this potion to fall asleep for a full night’s rest. You clear all Stress upon waking.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "XZavUVlHEvE2srEt", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -75,7 +84,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [], "folder": null, @@ -89,12 +104,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753591837472, - "modifiedTime": 1754394819077, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336748248, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 5edcef3d..cdc760ff 100644 --- a/src/packs/items/consumables/consumable_Snap_Powder_cg6VtQ0eVZjDdcK0.json +++ b/src/packs/items/consumables/consumable_Snap_Powder_cg6VtQ0eVZjDdcK0.json @@ -17,10 +17,11 @@ "cost": [ { "scalable": false, - "key": "stress", + "key": "quantity", "value": 1, - "keyIsID": false, - "step": null + "itemId": "cg6VtQ0eVZjDdcK0", + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -83,7 +84,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -97,12 +104,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753588752841, - "modifiedTime": 1754394825942, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336754402, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 3fc1c15d..d278c6fe 100644 --- a/src/packs/items/consumables/consumable_Stamina_Potion_hf3k1POoVSooJyN2.json +++ b/src/packs/items/consumables/consumable_Stamina_Potion_hf3k1POoVSooJyN2.json @@ -14,7 +14,16 @@ "description": "

Clear 1d4+1 Stress.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "hf3k1POoVSooJyN2", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -74,7 +83,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -88,12 +103,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753588904835, - "modifiedTime": 1754394357617, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336761163, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_key": "!items!hf3k1POoVSooJyN2" } diff --git a/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json b/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json index cd30d320..b4c16c8d 100644 --- a/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json +++ b/src/packs/items/consumables/consumable_Stardrop_y4c1jrlHrf0wBWOq.json @@ -14,7 +14,16 @@ "description": "

You can use this stardrop to summon a hailstorm of comets that deals 8d20 physical damage to all targets within Very Far range.

@Template[type:emanation|range:vf]

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "y4c1jrlHrf0wBWOq", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -61,7 +70,13 @@ "range": "veryFar" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [], "folder": null, @@ -75,12 +90,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753592933782, - "modifiedTime": 1754394853714, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336777144, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index b28dd0c7..dd8a354b 100644 --- a/src/packs/items/consumables/consumable_Stride_Potion_lNtcrkgFGOJNaroE.json +++ b/src/packs/items/consumables/consumable_Stride_Potion_lNtcrkgFGOJNaroE.json @@ -14,7 +14,16 @@ "description": "

You gain a +1 bonus to your next Agility Roll.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "lNtcrkgFGOJNaroE", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [ { @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753585993187, - "modifiedTime": 1754394862377, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336784139, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index d9e28567..f79704f4 100644 --- a/src/packs/items/consumables/consumable_Sun_Tree_Sap_kwexUzdM9wm1Qums.json +++ b/src/packs/items/consumables/consumable_Sun_Tree_Sap_kwexUzdM9wm1Qums.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "consumeOnSuccess": false, + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "kwexUzdM9wm1Qums", + "step": null + } + ], "uses": { "value": null, "max": "", @@ -54,7 +63,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -68,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753590791260, - "modifiedTime": 1754394871161, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336791229, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 25780390..e366ddbe 100644 --- a/src/packs/items/consumables/consumable_Sweet_Moss_GrDrRqWgv7gvl9vn.json +++ b/src/packs/items/consumables/consumable_Sweet_Moss_GrDrRqWgv7gvl9vn.json @@ -14,7 +14,16 @@ "description": "

You can consume this moss during a rest to clear 1d10 HP.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "GrDrRqWgv7gvl9vn", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -80,7 +89,16 @@ "description": "

You can consume this moss during a rest to clear 1d10 Stress.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "GrDrRqWgv7gvl9vn", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -140,7 +158,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 62, + "artist": "" + } }, "effects": [], "folder": null, @@ -154,12 +178,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753592391195, - "modifiedTime": 1754394899780, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336804065, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 33e77c66..8194d7b2 100644 --- a/src/packs/items/consumables/consumable_Unstable_Arcane_Shard_mUepnLbkvFk0ha4Z.json +++ b/src/packs/items/consumables/consumable_Unstable_Arcane_Shard_mUepnLbkvFk0ha4Z.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "consumeOnSuccess": false, + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "mUepnLbkvFk0ha4Z", + "step": null + } + ], "uses": { "value": null, "max": "", @@ -81,7 +90,13 @@ "range": "far" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -95,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753587732694, - "modifiedTime": 1754394908763, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336811267, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 20d2ddea..cec9395e 100644 --- a/src/packs/items/consumables/consumable_Varik_Leaves_hvy5BkG3F6iOIXTx.json +++ b/src/packs/items/consumables/consumable_Varik_Leaves_hvy5BkG3F6iOIXTx.json @@ -14,7 +14,16 @@ "description": "

You can eat these paired leaves to immediately gain 2 Hope.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "hvy5BkG3F6iOIXTx", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -75,7 +84,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -89,12 +104,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753587484164, - "modifiedTime": 1754394924546, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336817973, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index b65c1dec..4959dc10 100644 --- a/src/packs/items/consumables/consumable_Vial_of_Darksmoke_Nwv5ydGf0MWnzq1n.json +++ b/src/packs/items/consumables/consumable_Vial_of_Darksmoke_Nwv5ydGf0MWnzq1n.json @@ -14,7 +14,16 @@ "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.

", "chatDisplay": true, "actionType": "reaction", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "Nwv5ydGf0MWnzq1n", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -30,7 +39,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [], "folder": null, @@ -44,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753588345314, - "modifiedTime": 1754394933247, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336825474, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index 3f318842..f6138deb 100644 --- a/src/packs/items/consumables/consumable_Vial_of_Moondrip_VqEX5YwK5oL3r1t6.json +++ b/src/packs/items/consumables/consumable_Vial_of_Moondrip_VqEX5YwK5oL3r1t6.json @@ -14,7 +14,16 @@ "description": "

When you drink the contents of this vial, you can see in total darkness until your next rest.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "VqEX5YwK5oL3r1t6", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [ { @@ -64,7 +79,7 @@ "startRound": null, "startTurn": null }, - "description": "

You can see in total darkness until your next rest.

", + "description": "

You can see in total darkness until your next rest.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753587590537, - "modifiedTime": 1754394940997, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336832961, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_key": "!items!VqEX5YwK5oL3r1t6" } diff --git a/src/packs/items/consumables/consumable_Wingsprout_n10vozlmosVR6lo4.json b/src/packs/items/consumables/consumable_Wingsprout_n10vozlmosVR6lo4.json index f07a6fc9..efab4326 100644 --- a/src/packs/items/consumables/consumable_Wingsprout_n10vozlmosVR6lo4.json +++ b/src/packs/items/consumables/consumable_Wingsprout_n10vozlmosVR6lo4.json @@ -14,7 +14,16 @@ "description": "

You gain magic wings that allow you to fly for a number of minutes equal to your level.

", "chatDisplay": true, "actionType": "action", - "cost": [], + "cost": [ + { + "scalable": false, + "key": "quantity", + "value": 1, + "itemId": "n10vozlmosVR6lo4", + "step": null, + "consumeOnSuccess": false + } + ], "uses": { "value": null, "max": "", @@ -35,7 +44,13 @@ "range": "" } }, - "consumeOnUse": true + "consumeOnUse": true, + "destroyOnEmpty": true, + "attribution": { + "source": "Daggerheart SRD", + "page": 61, + "artist": "" + } }, "effects": [ { @@ -64,7 +79,7 @@ "startRound": null, "startTurn": null }, - "description": "

You gain magic wings that allow you to fly for a number of minutes equal to your level.

", + "description": "

You gain magic wings that allow you to fly for a number of minutes equal to your level.

", "tint": "#ffffff", "statuses": [], "sort": 0, @@ -94,12 +109,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753591283853, - "modifiedTime": 1754394949465, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756336840548, + "lastModifiedBy": "gbAAZWyczKwejDNh" }, "_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 index fbfe3800..3f368be7 100644 --- a/src/packs/items/loot/loot_Airblade_Charm_cTYvyaSKBxosM9Y9.json +++ b/src/packs/items/loot/loot_Airblade_Charm_cTYvyaSKBxosM9Y9.json @@ -29,6 +29,11 @@ "img": "icons/equipment/neck/amulet-carved-stone-spiral-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" } }, "effects": [], @@ -43,12 +48,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753638435202, - "modifiedTime": 1753638500393, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432212303, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 8e77f2bb..dc8c30e4 100644 --- a/src/packs/items/loot/loot_Alistair_s_Torch_MeEg57T6MKpw3sme.json +++ b/src/packs/items/loot/loot_Alistair_s_Torch_MeEg57T6MKpw3sme.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625181140, - "modifiedTime": 1753625205417, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755431934319, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index c8b3c168..bf0a7352 100644 --- a/src/packs/items/loot/loot_Arcane_Cloak_4STt98biZwjFoKOe.json +++ b/src/packs/items/loot/loot_Arcane_Cloak_4STt98biZwjFoKOe.json @@ -6,7 +6,12 @@ "system": { "description": "

A creature with a Spellcast trait wearing this cloak can adjust its color, texture, and size at will.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625371758, - "modifiedTime": 1753625392529, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755431960072, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index b1fa3700..dc3376cb 100644 --- a/src/packs/items/loot/loot_Arcane_Prism_Mn1eo2Mdtu1kzyxB.json +++ b/src/packs/items/loot/loot_Arcane_Prism_Mn1eo2Mdtu1kzyxB.json @@ -34,6 +34,11 @@ "img": "icons/commodities/gems/gem-faceted-trillion-blue.webp", "range": "close" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" } }, "effects": [ @@ -93,12 +98,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753626536923, - "modifiedTime": 1753989088942, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755432045259, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 59909fa7..b7927905 100644 --- a/src/packs/items/loot/loot_Attune_Relic_vK6bKyQTT3m8WvMh.json +++ b/src/packs/items/loot/loot_Attune_Relic_vK6bKyQTT3m8WvMh.json @@ -6,7 +6,12 @@ "system": { "description": "

You gain a +1 bonus to your Instinct. You can only carry one relic.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [ { @@ -33,7 +38,7 @@ "startRound": null, "startTurn": null }, - "description": "

You gain a +1 bonus to your Instinct.

", + "description": "

You gain a +1 bonus to your Instinct.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -65,12 +70,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639587267, - "modifiedTime": 1753639733198, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432312623, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 767dc8e0..69817496 100644 --- a/src/packs/items/loot/loot_Bag_of_Ficklesand_v758j4FwNVAurhYK.json +++ b/src/packs/items/loot/loot_Bag_of_Ficklesand_v758j4FwNVAurhYK.json @@ -58,6 +58,11 @@ "img": "icons/containers/bags/pouch-cloth-tan.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" } }, "effects": [ @@ -119,12 +124,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637946114, - "modifiedTime": 1753989248198, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755432176800, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!v758j4FwNVAurhYK" } diff --git a/src/packs/items/loot/loot_Belt_of_Unity_gFzkUGCjkRJtyoe9.json b/src/packs/items/loot/loot_Belt_of_Unity_gFzkUGCjkRJtyoe9.json index 717f4024..eaa9def5 100644 --- a/src/packs/items/loot/loot_Belt_of_Unity_gFzkUGCjkRJtyoe9.json +++ b/src/packs/items/loot/loot_Belt_of_Unity_gFzkUGCjkRJtyoe9.json @@ -19,7 +19,6 @@ "scalable": false, "key": "hope", "value": 5, - "keyIsID": false, "step": null } ], @@ -37,6 +36,11 @@ "img": "icons/equipment/waist/belt-buckle-ornate-steel.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" } }, "effects": [], @@ -51,12 +55,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640971116, - "modifiedTime": 1753641065768, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432474549, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!gFzkUGCjkRJtyoe9" } diff --git a/src/packs/items/loot/loot_Bloodstone_oMd78vhL2x2NO8Mg.json b/src/packs/items/loot/loot_Bloodstone_oMd78vhL2x2NO8Mg.json index f5a19dff..52a85f8a 100644 --- a/src/packs/items/loot/loot_Bloodstone_oMd78vhL2x2NO8Mg.json +++ b/src/packs/items/loot/loot_Bloodstone_oMd78vhL2x2NO8Mg.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637532005, - "modifiedTime": 1753637570344, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432124214, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 695b8a1c..7e1cd711 100644 --- a/src/packs/items/loot/loot_Bolster_Relic_m3EpxlDgxn2tCDDR.json +++ b/src/packs/items/loot/loot_Bolster_Relic_m3EpxlDgxn2tCDDR.json @@ -6,7 +6,12 @@ "system": { "description": "

You gain a +1 bonus to your Strength. You can only carry one relic.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [ { @@ -33,7 +38,7 @@ "startRound": null, "startTurn": null }, - "description": "

You gain a +1 bonus to your Strength.

", + "description": "

You gain a +1 bonus to your Strength.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -65,12 +70,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639461783, - "modifiedTime": 1753639473676, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432292506, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 3112c665..ee305349 100644 --- a/src/packs/items/loot/loot_Box_of_Many_Goods_bZyT7Qw7iafswlTY.json +++ b/src/packs/items/loot/loot_Box_of_Many_Goods_bZyT7Qw7iafswlTY.json @@ -53,6 +53,11 @@ "img": "icons/containers/boxes/crate-heavy-yellow.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" } }, "effects": [], @@ -67,12 +72,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753638361357, - "modifiedTime": 1753989365853, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755432203301, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 82a1078a..8ba9f0bc 100644 --- a/src/packs/items/loot/loot_Calming_Pendant_tgFFMxpuRSiRrrEB.json +++ b/src/packs/items/loot/loot_Calming_Pendant_tgFFMxpuRSiRrrEB.json @@ -53,6 +53,11 @@ "img": "icons/equipment/neck/amulet-round-blue.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" } }, "effects": [], @@ -67,12 +72,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637842111, - "modifiedTime": 1753989405747, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755432160633, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 19ef04c7..5bff2a6b 100644 --- a/src/packs/items/loot/loot_Charging_Quiver_gsUDP90d4SRtLEUn.json +++ b/src/packs/items/loot/loot_Charging_Quiver_gsUDP90d4SRtLEUn.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [ { @@ -78,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625025089, - "modifiedTime": 1753989432098, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755431911218, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index a1c80a2b..a56dfc73 100644 --- a/src/packs/items/loot/loot_Charm_Relic_9P9jqGSlxVCbTdLe.json +++ b/src/packs/items/loot/loot_Charm_Relic_9P9jqGSlxVCbTdLe.json @@ -6,7 +6,12 @@ "system": { "description": "

You gain a +1 bonus to your Presence. You can only carry one relic.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [ { @@ -33,7 +38,7 @@ "startRound": null, "startTurn": null }, - "description": "

You gain a +1 bonus to your Presence.

", + "description": "

You gain a +1 bonus to your Presence.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -65,12 +70,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639686831, - "modifiedTime": 1753639719586, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432321075, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index d60c928c..e45c91b0 100644 --- a/src/packs/items/loot/loot_Clay_Companion_lGIk9vBNz0jvskXD.json +++ b/src/packs/items/loot/loot_Clay_Companion_lGIk9vBNz0jvskXD.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640057300, - "modifiedTime": 1753640276057, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432384479, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 65854d4c..94b37cc8 100644 --- a/src/packs/items/loot/loot_Companion_Case_V25uXkAQvK3hUta4.json +++ b/src/packs/items/loot/loot_Companion_Case_V25uXkAQvK3hUta4.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625898190, - "modifiedTime": 1753625935379, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432012809, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 9245934b..961e07c0 100644 --- a/src/packs/items/loot/loot_Control_Relic_QPGBDItjrRhXU6iJ.json +++ b/src/packs/items/loot/loot_Control_Relic_QPGBDItjrRhXU6iJ.json @@ -6,7 +6,12 @@ "system": { "description": "

You gain a +1 bonus to your Finesse. You can only carry one relic.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [ { @@ -33,7 +38,7 @@ "startRound": null, "startTurn": null }, - "description": "

You gain a +1 bonus to your Finesse.

", + "description": "

You gain a +1 bonus to your Finesse.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -65,12 +70,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639492071, - "modifiedTime": 1753639541446, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432304157, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 4a1a0848..9519e392 100644 --- a/src/packs/items/loot/loot_Corrector_Sprite_G0RktbmtnuAlKCRH.json +++ b/src/packs/items/loot/loot_Corrector_Sprite_G0RktbmtnuAlKCRH.json @@ -29,6 +29,11 @@ "img": "icons/magic/light/orbs-smoke-pink.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" } }, "effects": [], @@ -43,12 +48,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637155361, - "modifiedTime": 1753637366036, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432083881, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index f99220c9..3d6ab8be 100644 --- a/src/packs/items/loot/loot_Dual_Flask_HCvcAu3sdHCspGMP.json +++ b/src/packs/items/loot/loot_Dual_Flask_HCvcAu3sdHCspGMP.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637893309, - "modifiedTime": 1753637932763, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432168119, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 6b007a29..68c9bc46 100644 --- a/src/packs/items/loot/loot_Elusive_Amulet_PkmTZXRMZL022O75.json +++ b/src/packs/items/loot/loot_Elusive_Amulet_PkmTZXRMZL022O75.json @@ -34,6 +34,11 @@ "img": "icons/equipment/neck/pendant-rough-silver-purple.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" } }, "effects": [ @@ -56,7 +61,7 @@ "startRound": null, "startTurn": null }, - "description": "

You are Hidden until you move. While Hidden in this way, you remain unseen even if an adversary moves to where they would normally see you.

", + "description": "

You are Hidden until you move. While Hidden in this way, you remain unseen even if an adversary moves to where they would normally see you.

", "tint": "#ffffff", "statuses": [ "hidden" @@ -88,12 +93,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753638931971, - "modifiedTime": 1753989758225, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755432243222, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index bb6ca519..ea8649d3 100644 --- a/src/packs/items/loot/loot_Empty_Chest_p2yy61uKsyIsl8cU.json +++ b/src/packs/items/loot/loot_Empty_Chest_p2yy61uKsyIsl8cU.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625859659, - "modifiedTime": 1753625887033, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432002874, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 0f992ddf..8973ffa6 100644 --- a/src/packs/items/loot/loot_Enlighten_Relic_vSGx1f9SYUiA29L3.json +++ b/src/packs/items/loot/loot_Enlighten_Relic_vSGx1f9SYUiA29L3.json @@ -6,7 +6,12 @@ "system": { "description": "

You gain a +1 bonus to your Knowledge. You can only carry one relic.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [ { @@ -33,7 +38,7 @@ "startRound": null, "startTurn": null }, - "description": "

You gain a +1 bonus to your Knowledge.

", + "description": "

You gain a +1 bonus to your Knowledge.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -65,12 +70,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639753586, - "modifiedTime": 1753639789835, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432328609, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index bcdda979..be48c507 100644 --- a/src/packs/items/loot/loot_Fire_Jar_X6RMkIt89wf7qX2E.json +++ b/src/packs/items/loot/loot_Fire_Jar_X6RMkIt89wf7qX2E.json @@ -29,6 +29,11 @@ "img": "icons/containers/kitchenware/jug-wrapped-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" } }, "effects": [], @@ -43,12 +48,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625575791, - "modifiedTime": 1753625617382, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755431975757, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index bb7f8495..4f87a4d2 100644 --- a/src/packs/items/loot/loot_Flickerfly_Pendant_9VKYSBQxN9XFWlAm.json +++ b/src/packs/items/loot/loot_Flickerfly_Pendant_9VKYSBQxN9XFWlAm.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639935227, - "modifiedTime": 1753639964153, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432355676, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 3dbdae76..578eb7c5 100644 --- a/src/packs/items/loot/loot_Gecko_Gloves_CGzjBpHJRG8KSt5Y.json +++ b/src/packs/items/loot/loot_Gecko_Gloves_CGzjBpHJRG8KSt5Y.json @@ -6,7 +6,12 @@ "system": { "description": "

You can climb up vertical surfaces and across ceilings.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637390470, - "modifiedTime": 1753637455936, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432092979, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 86b17e74..68eef682 100644 --- a/src/packs/items/loot/loot_Gem_of_Alacrity_zecFwBUSWtB3HW8X.json +++ b/src/packs/items/loot/loot_Gem_of_Alacrity_zecFwBUSWtB3HW8X.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640285473, - "modifiedTime": 1753640317903, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432422196, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 07d44a2c..b592cd2d 100644 --- a/src/packs/items/loot/loot_Gem_of_Audacity_hMu9It3ThCLCXuCA.json +++ b/src/packs/items/loot/loot_Gem_of_Audacity_hMu9It3ThCLCXuCA.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640590771, - "modifiedTime": 1753640602606, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432430946, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 03743b23..7f75d412 100644 --- a/src/packs/items/loot/loot_Gem_of_Insight_TbgeT9ZxKHqFqJSN.json +++ b/src/packs/items/loot/loot_Gem_of_Insight_TbgeT9ZxKHqFqJSN.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640563344, - "modifiedTime": 1753640580953, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432436597, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 8395388f..19d6f2c4 100644 --- a/src/packs/items/loot/loot_Gem_of_Might_rtSInNPc4B3ChBUZ.json +++ b/src/packs/items/loot/loot_Gem_of_Might_rtSInNPc4B3ChBUZ.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640512721, - "modifiedTime": 1753640527143, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432442699, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 6dc57398..0d10ff19 100644 --- a/src/packs/items/loot/loot_Gem_of_Precision_CrvJ7vb4s40YgEcy.json +++ b/src/packs/items/loot/loot_Gem_of_Precision_CrvJ7vb4s40YgEcy.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640535939, - "modifiedTime": 1753640553552, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432448347, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 4128007b..cb3de994 100644 --- a/src/packs/items/loot/loot_Gem_of_Sagacity_ua351S7CsH22X1x2.json +++ b/src/packs/items/loot/loot_Gem_of_Sagacity_ua351S7CsH22X1x2.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640610217, - "modifiedTime": 1753640623916, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432454597, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index dacc4376..98714741 100644 --- a/src/packs/items/loot/loot_Glamour_Stone_Pj17cvdJ1XG1jv6I.json +++ b/src/packs/items/loot/loot_Glamour_Stone_Pj17cvdJ1XG1jv6I.json @@ -11,12 +11,11 @@ "type": "effect", "_id": "ATQgH12mufTOQLKs", "systemPath": "actions", - "description": "", + "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.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -25,21 +24,76 @@ ], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, - "effects": [], + "effects": [ + { + "_id": "K5SB6tfuDkdVaQYe", + "onSave": false + } + ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Create Illusion", "img": "icons/commodities/treasure/token-engraved-purple-glowing.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" } }, - "effects": [], + "effects": [ + { + "name": "Glamour Stone", + "img": "icons/commodities/treasure/token-engraved-purple-glowing.webp", + "origin": "Compendium.daggerheart.loot.Item.Pj17cvdJ1XG1jv6I", + "transfer": false, + "_id": "K5SB6tfuDkdVaQYe", + "type": "base", + "system": { + "rangeDependence": { + "enabled": false, + "type": "withinRange", + "target": "hostile", + "range": "melee" + } + }, + "changes": [], + "disabled": false, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "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.

", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.347", + "systemId": "daggerheart", + "systemVersion": "1.1.0", + "createdTime": 1756042876194, + "modifiedTime": 1756042884422, + "lastModifiedBy": "vUIbuan0U50nfKBE" + }, + "_key": "!items.effects!Pj17cvdJ1XG1jv6I.K5SB6tfuDkdVaQYe" + } + ], "folder": null, "sort": 0, "ownership": { @@ -51,12 +105,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753625773657, - "modifiedTime": 1753625847459, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1756042876216, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!Pj17cvdJ1XG1jv6I" } diff --git a/src/packs/items/loot/loot_Glider_CiXwelozmBDcPY48.json b/src/packs/items/loot/loot_Glider_CiXwelozmBDcPY48.json index 799e170f..2dfce26c 100644 --- a/src/packs/items/loot/loot_Glider_CiXwelozmBDcPY48.json +++ b/src/packs/items/loot/loot_Glider_CiXwelozmBDcPY48.json @@ -19,7 +19,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -37,6 +36,11 @@ "img": "icons/commodities/leather/leather-patch-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" } }, "effects": [], @@ -51,12 +55,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637642501, - "modifiedTime": 1753989923053, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755432142381, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!CiXwelozmBDcPY48" } diff --git a/src/packs/items/loot/loot_Greatstone_y7zABzR0Q2fRskTw.json b/src/packs/items/loot/loot_Greatstone_y7zABzR0Q2fRskTw.json index e19ac9a6..72d434f9 100644 --- a/src/packs/items/loot/loot_Greatstone_y7zABzR0Q2fRskTw.json +++ b/src/packs/items/loot/loot_Greatstone_y7zABzR0Q2fRskTw.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637596921, - "modifiedTime": 1753637633941, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432133748, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index be6e9ad5..93bbb201 100644 --- a/src/packs/items/loot/loot_Homing_Compasses_yrAGYlDyoe4OYl7d.json +++ b/src/packs/items/loot/loot_Homing_Compasses_yrAGYlDyoe4OYl7d.json @@ -6,7 +6,12 @@ "system": { "description": "

These two compasses point toward each other no matter how far apart they are.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637089789, - "modifiedTime": 1753637129113, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432074527, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 4fb5b0de..6bf34bee 100644 --- a/src/packs/items/loot/loot_Honing_Relic_SAAnEAeXDnhBbLjB.json +++ b/src/packs/items/loot/loot_Honing_Relic_SAAnEAeXDnhBbLjB.json @@ -6,7 +6,12 @@ "system": { "description": "

You gain a +1 bonus to an Experience of your choice. You can only carry one relic.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639799902, - "modifiedTime": 1753639815534, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432343825, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 6899908f..f1eac926 100644 --- a/src/packs/items/loot/loot_Hopekeeper_Locket_9DcFR75tsnBYIp6Z.json +++ b/src/packs/items/loot/loot_Hopekeeper_Locket_9DcFR75tsnBYIp6Z.json @@ -16,7 +16,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -99,6 +98,11 @@ "img": "icons/equipment/neck/amulet-round-engraved-spiral-gold.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" } }, "effects": [], @@ -113,12 +117,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639224510, - "modifiedTime": 1753639329411, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432255622, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 83044c0f..1a82453c 100644 --- a/src/packs/items/loot/loot_Infinite_Bag_Iedjw1LVWEozVh0J.json +++ b/src/packs/items/loot/loot_Infinite_Bag_Iedjw1LVWEozVh0J.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639339762, - "modifiedTime": 1753639361505, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432274021, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index b64c2faf..1c5a2c64 100644 --- a/src/packs/items/loot/loot_Lakestrider_Boots_NgvmrJYKpA2PrRSo.json +++ b/src/packs/items/loot/loot_Lakestrider_Boots_NgvmrJYKpA2PrRSo.json @@ -6,7 +6,12 @@ "system": { "description": "

You can walk on the surface of water as if it were soft ground.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639975496, - "modifiedTime": 1753639999823, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432366912, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!NgvmrJYKpA2PrRSo" } diff --git a/src/packs/items/loot/loot_Lorekeeper_JsPYzrqpITqGj23I.json b/src/packs/items/loot/loot_Lorekeeper_JsPYzrqpITqGj23I.json index 8a1fd26e..16bb3186 100644 --- a/src/packs/items/loot/loot_Lorekeeper_JsPYzrqpITqGj23I.json +++ b/src/packs/items/loot/loot_Lorekeeper_JsPYzrqpITqGj23I.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637467427, - "modifiedTime": 1753637489198, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432101012, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!JsPYzrqpITqGj23I" } diff --git a/src/packs/items/loot/loot_Manacles_GkmATIuemyFtQX1D.json b/src/packs/items/loot/loot_Manacles_GkmATIuemyFtQX1D.json index cbeb9f38..ba762c74 100644 --- a/src/packs/items/loot/loot_Manacles_GkmATIuemyFtQX1D.json +++ b/src/packs/items/loot/loot_Manacles_GkmATIuemyFtQX1D.json @@ -6,7 +6,12 @@ "system": { "description": "

This pair of locking cuffs comes with a key.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625337217, - "modifiedTime": 1753625362038, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755431952005, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 2d8c286b..a84e783a 100644 --- a/src/packs/items/loot/loot_Minor_Health_Potion_Recipe_PQxvxAVBbkt0TleC.json +++ b/src/packs/items/loot/loot_Minor_Health_Potion_Recipe_PQxvxAVBbkt0TleC.json @@ -6,7 +6,12 @@ "system": { "description": "

As a downtime move, you can use a vial of blood to craft a Minor Health Potion.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637045921, - "modifiedTime": 1753637071130, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432066493, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index d963d82d..8069ae69 100644 --- a/src/packs/items/loot/loot_Minor_Stamina_Potion_Recipe_1TLpFsp3PLDsqoTw.json +++ b/src/packs/items/loot/loot_Minor_Stamina_Potion_Recipe_1TLpFsp3PLDsqoTw.json @@ -6,7 +6,12 @@ "system": { "description": "

As a downtime move, you can use the bone of a creature to craft a Minor Stamina Potion.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753626639554, - "modifiedTime": 1753626666369, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432058259, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 2325a405..dfc1916d 100644 --- a/src/packs/items/loot/loot_Mythic_Dust_Recipe_5YZls8XH3MB7twNa.json +++ b/src/packs/items/loot/loot_Mythic_Dust_Recipe_5YZls8XH3MB7twNa.json @@ -6,7 +6,12 @@ "system": { "description": "

As a downtime move, you can use a handful of fine gold dust to craft Mythic Dust.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640163566, - "modifiedTime": 1753640190943, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432395196, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index f62b7895..59260e5d 100644 --- a/src/packs/items/loot/loot_Paragon_s_Chain_F4hoRfvVdZq5bhhI.json +++ b/src/packs/items/loot/loot_Paragon_s_Chain_F4hoRfvVdZq5bhhI.json @@ -16,7 +16,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -37,6 +36,11 @@ "img": "icons/equipment/neck/choker-chain-thin-gold.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" } }, "effects": [], @@ -51,12 +55,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753638721391, - "modifiedTime": 1753638917868, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432230353, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index a51d206b..2cd09252 100644 --- a/src/packs/items/loot/loot_Phoenix_Feather_QNtzJSVENww63THa.json +++ b/src/packs/items/loot/loot_Phoenix_Feather_QNtzJSVENww63THa.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753638285123, - "modifiedTime": 1753638336982, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432194183, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index a3789138..483d0262 100644 --- a/src/packs/items/loot/loot_Piercing_Arrows_I63LTFD6GXHgyGpR.json +++ b/src/packs/items/loot/loot_Piercing_Arrows_I63LTFD6GXHgyGpR.json @@ -11,7 +11,7 @@ "type": "effect", "_id": "DW5AqEM0F8XaUqpn", "systemPath": "actions", - "description": "", + "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.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -29,6 +29,11 @@ "img": "icons/weapons/ammunition/arrow-broadhead-glowing-orange.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" } }, "effects": [ @@ -69,7 +74,7 @@ "startRound": null, "startTurn": null }, - "description": "

Add your Proficiency to the damage roll of this attack.

", + "description": "

Add your Proficiency to the damage roll of this attack.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -101,12 +106,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753625947079, - "modifiedTime": 1753990194353, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756042964027, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_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 index b0e2954c..1a059ae1 100644 --- a/src/packs/items/loot/loot_Piper_Whistle_v4PIoCCEjeE3acys.json +++ b/src/packs/items/loot/loot_Piper_Whistle_v4PIoCCEjeE3acys.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753624968366, - "modifiedTime": 1753625011843, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755431902952, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 4eb1e0d7..d09850e3 100644 --- a/src/packs/items/loot/loot_Portal_Seed_eRd5Gk7J7hPCqp11.json +++ b/src/packs/items/loot/loot_Portal_Seed_eRd5Gk7J7hPCqp11.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753638512020, - "modifiedTime": 1753638586392, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432221837, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 9d90b78b..1a2b7f62 100644 --- a/src/packs/items/loot/loot_Premium_Bedroll_QGYPNBIufpBguwjC.json +++ b/src/packs/items/loot/loot_Premium_Bedroll_QGYPNBIufpBguwjC.json @@ -17,11 +17,11 @@ "cost": [], "uses": { "value": null, - "max": null, + "max": "", "recovery": null }, "target": { - "type": "any", + "type": "self", "amount": null }, "effects": [], @@ -68,6 +68,11 @@ "img": "icons/sundries/survival/bedroll-blue-red.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" } }, "effects": [], @@ -82,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753624827945, - "modifiedTime": 1753624908866, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1756042976231, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_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 index f241cf1f..1fa60198 100644 --- a/src/packs/items/loot/loot_Ring_of_Resistance_aUqRifqR5JXXa1dN.json +++ b/src/packs/items/loot/loot_Ring_of_Resistance_aUqRifqR5JXXa1dN.json @@ -11,7 +11,7 @@ "type": "effect", "_id": "4swwe8SZeh2KyPtl", "systemPath": "actions", - "description": "", + "description": "

Once per long rest, you can activate this ring after a successful attack against you to halve the damage.

", "chatDisplay": true, "actionType": "action", "cost": [], @@ -20,18 +20,86 @@ "max": 1, "recovery": "longRest" }, - "effects": [], + "effects": [ + { + "_id": "Sj7uGf560T7u4rlX", + "onSave": false + } + ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Activate", "img": "icons/equipment/finger/ring-shield-silver.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" } }, - "effects": [], + "effects": [ + { + "name": "Ring of Resistance", + "img": "icons/equipment/finger/ring-shield-silver.webp", + "origin": "Compendium.daggerheart.loot.Item.aUqRifqR5JXXa1dN", + "transfer": false, + "_id": "Sj7uGf560T7u4rlX", + "type": "base", + "system": { + "rangeDependence": { + "enabled": false, + "type": "withinRange", + "target": "hostile", + "range": "melee" + } + }, + "changes": [ + { + "key": "system.resistance.magical.resistance", + "mode": 5, + "value": "1", + "priority": null + }, + { + "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": "

Once per long rest, you can activate this ring after a successful attack against you to halve the damage.

", + "tint": "#ffffff", + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.347", + "systemId": "daggerheart", + "systemVersion": "1.1.0", + "createdTime": 1756043003002, + "modifiedTime": 1756043032046, + "lastModifiedBy": "vUIbuan0U50nfKBE" + }, + "_key": "!items.effects!aUqRifqR5JXXa1dN.Sj7uGf560T7u4rlX" + } + ], "folder": null, "sort": 0, "ownership": { @@ -43,12 +111,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753638222884, - "modifiedTime": 1753638266245, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1756043010729, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_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 index 502c73b2..d6e15140 100644 --- a/src/packs/items/loot/loot_Ring_of_Silence_K1ysGnTpNyxPu5Au.json +++ b/src/packs/items/loot/loot_Ring_of_Silence_K1ysGnTpNyxPu5Au.json @@ -11,12 +11,11 @@ "type": "effect", "_id": "Y4mvuJ4tncrKhyjY", "systemPath": "actions", - "description": "", + "description": "

Spend a Hope to activate this ring. Your footsteps are silent until your next rest.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -28,23 +27,35 @@ "max": 1, "recovery": "shortRest" }, - "effects": [], + "effects": [ + { + "_id": "9JSLRu7amQ4iuIO7", + "onSave": false + } + ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Activate", "img": "icons/equipment/finger/ring-ball-purple.webp", - "range": "" + "range": "self" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" } }, "effects": [ { "name": "Ring of Silence", - "type": "base", - "_id": "aCt3QjdeTREZAlEa", "img": "icons/equipment/finger/ring-ball-purple.webp", + "origin": "Compendium.daggerheart.loot.Item.K1ysGnTpNyxPu5Au", + "transfer": false, + "_id": "9JSLRu7amQ4iuIO7", + "type": "base", "system": { "rangeDependence": { "enabled": false, @@ -54,7 +65,7 @@ } }, "changes": [], - "disabled": true, + "disabled": false, "duration": { "startTime": null, "combat": null, @@ -64,10 +75,8 @@ "startRound": null, "startTurn": null }, - "description": "

Your footsteps are silent until your next rest.

", - "origin": null, + "description": "

Your footsteps are silent until your next rest.

", "tint": "#ffffff", - "transfer": true, "statuses": [], "sort": 0, "flags": {}, @@ -75,14 +84,14 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", - "createdTime": 1753990311274, - "modifiedTime": 1753990345889, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "systemVersion": "1.1.0", + "createdTime": 1756043091753, + "modifiedTime": 1756043101742, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, - "_key": "!items.effects!K1ysGnTpNyxPu5Au.aCt3QjdeTREZAlEa" + "_key": "!items.effects!K1ysGnTpNyxPu5Au.9JSLRu7amQ4iuIO7" } ], "folder": null, @@ -96,12 +105,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1753637775628, - "modifiedTime": 1753637832657, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1756043091776, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_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 index 94f8bdec..99f856da 100644 --- a/src/packs/items/loot/loot_Ring_of_Unbreakable_Resolve_kn71qCQY0DnjmQBJ.json +++ b/src/packs/items/loot/loot_Ring_of_Unbreakable_Resolve_kn71qCQY0DnjmQBJ.json @@ -19,7 +19,6 @@ "scalable": false, "key": "hope", "value": 4, - "keyIsID": false, "step": null } ], @@ -37,6 +36,11 @@ "img": "icons/equipment/finger/ring-faceted-gold-teal.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" } }, "effects": [], @@ -51,12 +55,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640632212, - "modifiedTime": 1753640958684, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432465536, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 46beee5a..efc12e63 100644 --- a/src/packs/items/loot/loot_Shard_of_Memory_2ULPgNyqCrxea0v0.json +++ b/src/packs/items/loot/loot_Shard_of_Memory_2ULPgNyqCrxea0v0.json @@ -19,7 +19,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null } ], @@ -37,6 +36,11 @@ "img": "icons/commodities/gems/gem-rough-navette-purple-pink.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 60, + "artist": "" } }, "effects": [], @@ -51,12 +55,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753640199098, - "modifiedTime": 1753990369010, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755432405079, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 4b480459..d05a0de4 100644 --- a/src/packs/items/loot/loot_Skeleton_Key_edkNgwy4xghZreBa.json +++ b/src/packs/items/loot/loot_Skeleton_Key_edkNgwy4xghZreBa.json @@ -53,6 +53,11 @@ "img": "icons/sundries/misc/key-ornate-iron-black.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" } }, "effects": [], @@ -67,12 +72,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753626370278, - "modifiedTime": 1753626508104, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432037375, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 1239b6ab..af9fc42c 100644 --- a/src/packs/items/loot/loot_Speaking_Orbs_LZrG6CFiSjpLA2F1.json +++ b/src/packs/items/loot/loot_Speaking_Orbs_LZrG6CFiSjpLA2F1.json @@ -6,7 +6,12 @@ "system": { "description": "

This pair of orbs allows any creatures holding them to communicate with each other across any distance.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625222662, - "modifiedTime": 1753625327080, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755431943587, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 9f169207..d5fe0fd1 100644 --- a/src/packs/items/loot/loot_Stride_Relic_FfJISMzYATaPQPLc.json +++ b/src/packs/items/loot/loot_Stride_Relic_FfJISMzYATaPQPLc.json @@ -6,7 +6,12 @@ "system": { "description": "

You gain a +1 bonus to your Agility. You can only carry one relic.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [ { @@ -33,7 +38,7 @@ "startRound": null, "startTurn": null }, - "description": "

You gain a +1 bonus to your Agility.

", + "description": "

You gain a +1 bonus to your Agility.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -65,12 +70,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753639376996, - "modifiedTime": 1753639432017, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432282538, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 83ca772a..7932eb77 100644 --- a/src/packs/items/loot/loot_Suspended_Rod_nnj12RiFanq7s5zv.json +++ b/src/packs/items/loot/loot_Suspended_Rod_nnj12RiFanq7s5zv.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625627433, - "modifiedTime": 1753625765676, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755431985810, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!nnj12RiFanq7s5zv" } diff --git a/src/packs/items/loot/loot_Valorstone_7yywua9TmQ4WP5WH.json b/src/packs/items/loot/loot_Valorstone_7yywua9TmQ4WP5WH.json index 6970a396..39cb89d7 100644 --- a/src/packs/items/loot/loot_Valorstone_7yywua9TmQ4WP5WH.json +++ b/src/packs/items/loot/loot_Valorstone_7yywua9TmQ4WP5WH.json @@ -6,7 +6,12 @@ "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": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753626167593, - "modifiedTime": 1753626237350, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432029408, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index d9ad7e17..29bb21fc 100644 --- a/src/packs/items/loot/loot_Vial_of_Darksmoke_Recipe_MhCo8i0cRXzdnXbA.json +++ b/src/packs/items/loot/loot_Vial_of_Darksmoke_Recipe_MhCo8i0cRXzdnXbA.json @@ -6,7 +6,12 @@ "system": { "description": "

As a downtime move, you can mark a Stress to craft a Vial of Darksmoke.

", "quantity": 1, - "actions": {} + "actions": {}, + "attribution": { + "source": "Daggerheart SRD", + "page": 59, + "artist": "" + } }, "effects": [], "folder": null, @@ -20,12 +25,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753637508452, - "modifiedTime": 1753637524868, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755432114401, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_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 index 3013f603..32fa6c6b 100644 --- a/src/packs/items/loot/loot_Woven_Net_ARuv48PWUGJGBC4n.json +++ b/src/packs/items/loot/loot_Woven_Net_ARuv48PWUGJGBC4n.json @@ -58,6 +58,11 @@ "img": "icons/tools/fishing/net-tan.webp", "range": "" } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 58, + "artist": "" } }, "effects": [ @@ -144,12 +149,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.344", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753625403538, - "modifiedTime": 1753625550934, - "lastModifiedBy": "OFxauskoxcvVTVNA" + "modifiedTime": 1755431968372, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ARuv48PWUGJGBC4n" } diff --git a/src/packs/items/weapons/loot_Black_Powder_Revolver_NUbvkPLS71XO073r.json b/src/packs/items/weapons/loot_Black_Powder_Revolver_NUbvkPLS71XO073r.json deleted file mode 100644 index a51a5c14..00000000 --- a/src/packs/items/weapons/loot_Black_Powder_Revolver_NUbvkPLS71XO073r.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "folder": "OKJC8cHvPuseBHWq", - "name": "Black Powder Revolver", - "type": "loot", - "_id": "NUbvkPLS71XO073r", - "img": "icons/weapons/guns/gun-pistol-brass.webp", - "system": { - "description": "", - "quantity": 1, - "actions": {} - }, - "effects": [], - "sort": 0, - "ownership": { - "default": 0, - "FecEtPuoQh6MpjQ0": 3 - }, - "flags": {}, - "_stats": { - "compendiumSource": null, - "duplicateSource": null, - "exportSource": null, - "coreVersion": "13.346", - "systemId": "daggerheart", - "systemVersion": "0.0.1", - "createdTime": 1753832431607, - "modifiedTime": 1753832439003, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" - }, - "_key": "!items!NUbvkPLS71XO073r" -} diff --git a/src/packs/items/weapons/weapon_Aantari_Bow_ijodu5yNBoMxpkHV.json b/src/packs/items/weapons/weapon_Aantari_Bow_ijodu5yNBoMxpkHV.json index 0dc1f068..03472e33 100644 --- a/src/packs/items/weapons/weapon_Aantari_Bow_ijodu5yNBoMxpkHV.json +++ b/src/packs/items/weapons/weapon_Aantari_Bow_ijodu5yNBoMxpkHV.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [ @@ -161,10 +166,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753835285790, - "modifiedTime": 1754815224721, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755431272519, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ijodu5yNBoMxpkHV" } diff --git a/src/packs/items/weapons/weapon_Advanced_Arcane_Frame_Wheelchair_la3sAWgnvadc4NvP.json b/src/packs/items/weapons/weapon_Advanced_Arcane_Frame_Wheelchair_la3sAWgnvadc4NvP.json index 0abfe057..db39bfcf 100644 --- a/src/packs/items/weapons/weapon_Advanced_Arcane_Frame_Wheelchair_la3sAWgnvadc4NvP.json +++ b/src/packs/items/weapons/weapon_Advanced_Arcane_Frame_Wheelchair_la3sAWgnvadc4NvP.json @@ -99,6 +99,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 55, + "artist": "" } }, "effects": [ @@ -159,10 +164,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753836715885, - "modifiedTime": 1754845968271, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430195943, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "la3sAWgnvadc4NvP", "sort": 0, diff --git a/src/packs/items/weapons/weapon_Advanced_Arcane_Gauntlets_hXR56fTKwZ6s1obs.json b/src/packs/items/weapons/weapon_Advanced_Arcane_Gauntlets_hXR56fTKwZ6s1obs.json index 7e06132f..5e75aae7 100644 --- a/src/packs/items/weapons/weapon_Advanced_Arcane_Gauntlets_hXR56fTKwZ6s1obs.json +++ b/src/packs/items/weapons/weapon_Advanced_Arcane_Gauntlets_hXR56fTKwZ6s1obs.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833079329, - "modifiedTime": 1753833112531, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431151799, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!hXR56fTKwZ6s1obs" } diff --git a/src/packs/items/weapons/weapon_Advanced_Battleaxe_FcbvY1ydbNVMjKvk.json b/src/packs/items/weapons/weapon_Advanced_Battleaxe_FcbvY1ydbNVMjKvk.json index b99dee62..ad176f61 100644 --- a/src/packs/items/weapons/weapon_Advanced_Battleaxe_FcbvY1ydbNVMjKvk.json +++ b/src/packs/items/weapons/weapon_Advanced_Battleaxe_FcbvY1ydbNVMjKvk.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831668041, - "modifiedTime": 1753831689481, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430983569, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!FcbvY1ydbNVMjKvk" } diff --git a/src/packs/items/weapons/weapon_Advanced_Broadsword_WtQAGz0TUgz8Xg70.json b/src/packs/items/weapons/weapon_Advanced_Broadsword_WtQAGz0TUgz8Xg70.json index 19a6d9bf..927b0310 100644 --- a/src/packs/items/weapons/weapon_Advanced_Broadsword_WtQAGz0TUgz8Xg70.json +++ b/src/packs/items/weapons/weapon_Advanced_Broadsword_WtQAGz0TUgz8Xg70.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [ @@ -161,10 +166,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753831599435, - "modifiedTime": 1754814950120, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755430988859, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!WtQAGz0TUgz8Xg70" } diff --git a/src/packs/items/weapons/weapon_Advanced_Crossbow_3HGs0AgVrdIBTaKG.json b/src/packs/items/weapons/weapon_Advanced_Crossbow_3HGs0AgVrdIBTaKG.json index cd64eb4b..017002b4 100644 --- a/src/packs/items/weapons/weapon_Advanced_Crossbow_3HGs0AgVrdIBTaKG.json +++ b/src/packs/items/weapons/weapon_Advanced_Crossbow_3HGs0AgVrdIBTaKG.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832024062, - "modifiedTime": 1753832046861, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430993878, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!3HGs0AgVrdIBTaKG" } diff --git a/src/packs/items/weapons/weapon_Advanced_Cutlass_bw9WO9lxkM9bWZxQ.json b/src/packs/items/weapons/weapon_Advanced_Cutlass_bw9WO9lxkM9bWZxQ.json index f2dd3e0f..2c00a2cf 100644 --- a/src/packs/items/weapons/weapon_Advanced_Cutlass_bw9WO9lxkM9bWZxQ.json +++ b/src/packs/items/weapons/weapon_Advanced_Cutlass_bw9WO9lxkM9bWZxQ.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831881396, - "modifiedTime": 1753831904535, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430999379, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!bw9WO9lxkM9bWZxQ" } diff --git a/src/packs/items/weapons/weapon_Advanced_Dagger_mrioysDjNQEIE8hN.json b/src/packs/items/weapons/weapon_Advanced_Dagger_mrioysDjNQEIE8hN.json index 17aa209b..9fd77076 100644 --- a/src/packs/items/weapons/weapon_Advanced_Dagger_mrioysDjNQEIE8hN.json +++ b/src/packs/items/weapons/weapon_Advanced_Dagger_mrioysDjNQEIE8hN.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831785214, - "modifiedTime": 1753831814649, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431005188, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!mrioysDjNQEIE8hN" } diff --git a/src/packs/items/weapons/weapon_Advanced_Dualstaff_X5x3sC7v2f3L9sjL.json b/src/packs/items/weapons/weapon_Advanced_Dualstaff_X5x3sC7v2f3L9sjL.json index dc665696..eed619c5 100644 --- a/src/packs/items/weapons/weapon_Advanced_Dualstaff_X5x3sC7v2f3L9sjL.json +++ b/src/packs/items/weapons/weapon_Advanced_Dualstaff_X5x3sC7v2f3L9sjL.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833383897, - "modifiedTime": 1753833411958, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431162464, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!X5x3sC7v2f3L9sjL" } diff --git a/src/packs/items/weapons/weapon_Advanced_Glowing_Rings_InQoh8mZPnwarQkX.json b/src/packs/items/weapons/weapon_Advanced_Glowing_Rings_InQoh8mZPnwarQkX.json index c647f3da..338ddc71 100644 --- a/src/packs/items/weapons/weapon_Advanced_Glowing_Rings_InQoh8mZPnwarQkX.json +++ b/src/packs/items/weapons/weapon_Advanced_Glowing_Rings_InQoh8mZPnwarQkX.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833176806, - "modifiedTime": 1753833243855, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431169037, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!InQoh8mZPnwarQkX" } diff --git a/src/packs/items/weapons/weapon_Advanced_Grappler_7vvhVl4TDJHtjpFK.json b/src/packs/items/weapons/weapon_Advanced_Grappler_7vvhVl4TDJHtjpFK.json index ffb6bb44..4477b871 100644 --- a/src/packs/items/weapons/weapon_Advanced_Grappler_7vvhVl4TDJHtjpFK.json +++ b/src/packs/items/weapons/weapon_Advanced_Grappler_7vvhVl4TDJHtjpFK.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753795033661, - "modifiedTime": 1753795079243, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430411064, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!7vvhVl4TDJHtjpFK" } diff --git a/src/packs/items/weapons/weapon_Advanced_Greatstaff_4UzxqfkwF8gDSdu7.json b/src/packs/items/weapons/weapon_Advanced_Greatstaff_4UzxqfkwF8gDSdu7.json index cbd63dd5..dd768c28 100644 --- a/src/packs/items/weapons/weapon_Advanced_Greatstaff_4UzxqfkwF8gDSdu7.json +++ b/src/packs/items/weapons/weapon_Advanced_Greatstaff_4UzxqfkwF8gDSdu7.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833576312, - "modifiedTime": 1753833602381, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431174265, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!4UzxqfkwF8gDSdu7" } diff --git a/src/packs/items/weapons/weapon_Advanced_Greatsword_MAC6YWTo4lzSotQc.json b/src/packs/items/weapons/weapon_Advanced_Greatsword_MAC6YWTo4lzSotQc.json index 81d05554..d1dff9f7 100644 --- a/src/packs/items/weapons/weapon_Advanced_Greatsword_MAC6YWTo4lzSotQc.json +++ b/src/packs/items/weapons/weapon_Advanced_Greatsword_MAC6YWTo4lzSotQc.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [ @@ -162,12 +167,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831701352, - "modifiedTime": 1753831723203, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431010340, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!MAC6YWTo4lzSotQc" } diff --git a/src/packs/items/weapons/weapon_Advanced_Halberd_C8gQn7onAc9wsrCs.json b/src/packs/items/weapons/weapon_Advanced_Halberd_C8gQn7onAc9wsrCs.json index d314f604..cc9dddea 100644 --- a/src/packs/items/weapons/weapon_Advanced_Halberd_C8gQn7onAc9wsrCs.json +++ b/src/packs/items/weapons/weapon_Advanced_Halberd_C8gQn7onAc9wsrCs.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831933214, - "modifiedTime": 1753831956886, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431016287, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!C8gQn7onAc9wsrCs" } diff --git a/src/packs/items/weapons/weapon_Advanced_Hallowed_Axe_BiyXKX2Mo1TQbKgk.json b/src/packs/items/weapons/weapon_Advanced_Hallowed_Axe_BiyXKX2Mo1TQbKgk.json index 52840548..48b52862 100644 --- a/src/packs/items/weapons/weapon_Advanced_Hallowed_Axe_BiyXKX2Mo1TQbKgk.json +++ b/src/packs/items/weapons/weapon_Advanced_Hallowed_Axe_BiyXKX2Mo1TQbKgk.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833120834, - "modifiedTime": 1753833164907, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431179762, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!BiyXKX2Mo1TQbKgk" } diff --git a/src/packs/items/weapons/weapon_Advanced_Hand_Crossbow_Lsvocst8aGqkBj7g.json b/src/packs/items/weapons/weapon_Advanced_Hand_Crossbow_Lsvocst8aGqkBj7g.json index ef1eb127..4dd79561 100644 --- a/src/packs/items/weapons/weapon_Advanced_Hand_Crossbow_Lsvocst8aGqkBj7g.json +++ b/src/packs/items/weapons/weapon_Advanced_Hand_Crossbow_Lsvocst8aGqkBj7g.json @@ -43,12 +43,13 @@ "parts": [ { "value": { - "dice": "d4", + "dice": "d6", "bonus": 5, "multiplier": "prof", "flatMultiplier": 1, "custom": { - "enabled": false + "enabled": false, + "formula": "" } }, "type": [ @@ -62,7 +63,8 @@ "dice": "d6", "bonus": null, "custom": { - "enabled": false + "enabled": false, + "formula": "" } }, "base": false @@ -92,6 +94,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [], @@ -105,12 +112,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.2", "createdTime": 1753795089792, - "modifiedTime": 1753795117775, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1761503058944, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items!Lsvocst8aGqkBj7g" } diff --git a/src/packs/items/weapons/weapon_Advanced_Hand_Runes_PQACczSghZIVTdgZ.json b/src/packs/items/weapons/weapon_Advanced_Hand_Runes_PQACczSghZIVTdgZ.json index 9f78b140..2ecb02ce 100644 --- a/src/packs/items/weapons/weapon_Advanced_Hand_Runes_PQACczSghZIVTdgZ.json +++ b/src/packs/items/weapons/weapon_Advanced_Hand_Runes_PQACczSghZIVTdgZ.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833253569, - "modifiedTime": 1753833282989, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431184599, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!PQACczSghZIVTdgZ" } diff --git a/src/packs/items/weapons/weapon_Advanced_Heavy_Frame_Wheelchair_eT2Qwb0RdrLX2hH1.json b/src/packs/items/weapons/weapon_Advanced_Heavy_Frame_Wheelchair_eT2Qwb0RdrLX2hH1.json index f8257028..9b7f4816 100644 --- a/src/packs/items/weapons/weapon_Advanced_Heavy_Frame_Wheelchair_eT2Qwb0RdrLX2hH1.json +++ b/src/packs/items/weapons/weapon_Advanced_Heavy_Frame_Wheelchair_eT2Qwb0RdrLX2hH1.json @@ -99,6 +99,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 55, + "artist": "" } }, "effects": [ @@ -150,10 +155,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836675558, - "modifiedTime": 1754845996869, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430171326, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "eT2Qwb0RdrLX2hH1", "sort": 0, diff --git a/src/packs/items/weapons/weapon_Advanced_Light_Frame_Wheelchair_BuMfupnCzHbziQ8o.json b/src/packs/items/weapons/weapon_Advanced_Light_Frame_Wheelchair_BuMfupnCzHbziQ8o.json index 324af2b1..03b69488 100644 --- a/src/packs/items/weapons/weapon_Advanced_Light_Frame_Wheelchair_BuMfupnCzHbziQ8o.json +++ b/src/packs/items/weapons/weapon_Advanced_Light_Frame_Wheelchair_BuMfupnCzHbziQ8o.json @@ -17,7 +17,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -129,6 +128,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 54, + "artist": "" } }, "effects": [], @@ -143,10 +147,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836614032, - "modifiedTime": 1754846020904, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430232313, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "BuMfupnCzHbziQ8o", "sort": 0, diff --git a/src/packs/items/weapons/weapon_Advanced_Longbow_M5CywMAyPKGgebsJ.json b/src/packs/items/weapons/weapon_Advanced_Longbow_M5CywMAyPKGgebsJ.json index 0ebb1d08..237d30c2 100644 --- a/src/packs/items/weapons/weapon_Advanced_Longbow_M5CywMAyPKGgebsJ.json +++ b/src/packs/items/weapons/weapon_Advanced_Longbow_M5CywMAyPKGgebsJ.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832060079, - "modifiedTime": 1753832086913, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431035842, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!M5CywMAyPKGgebsJ" } diff --git a/src/packs/items/weapons/weapon_Advanced_Longsword_9xkB3MWXahrsVP4N.json b/src/packs/items/weapons/weapon_Advanced_Longsword_9xkB3MWXahrsVP4N.json index 8b44c759..e7977c92 100644 --- a/src/packs/items/weapons/weapon_Advanced_Longsword_9xkB3MWXahrsVP4N.json +++ b/src/packs/items/weapons/weapon_Advanced_Longsword_9xkB3MWXahrsVP4N.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831635467, - "modifiedTime": 1753831658646, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431029688, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!9xkB3MWXahrsVP4N" } diff --git a/src/packs/items/weapons/weapon_Advanced_Mace_WreMYiH5uhVDaoVw.json b/src/packs/items/weapons/weapon_Advanced_Mace_WreMYiH5uhVDaoVw.json index 770a061c..1dd1f447 100644 --- a/src/packs/items/weapons/weapon_Advanced_Mace_WreMYiH5uhVDaoVw.json +++ b/src/packs/items/weapons/weapon_Advanced_Mace_WreMYiH5uhVDaoVw.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831730528, - "modifiedTime": 1753831747562, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431024022, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!WreMYiH5uhVDaoVw" } diff --git a/src/packs/items/weapons/weapon_Advanced_Quarterstaff_zJtm2f9ZFKZRtCRg.json b/src/packs/items/weapons/weapon_Advanced_Quarterstaff_zJtm2f9ZFKZRtCRg.json index e9a2ff48..60d059ef 100644 --- a/src/packs/items/weapons/weapon_Advanced_Quarterstaff_zJtm2f9ZFKZRtCRg.json +++ b/src/packs/items/weapons/weapon_Advanced_Quarterstaff_zJtm2f9ZFKZRtCRg.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831826360, - "modifiedTime": 1753831868734, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431045472, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!zJtm2f9ZFKZRtCRg" } diff --git a/src/packs/items/weapons/weapon_Advanced_Rapier_KxFne76d7cak15dO.json b/src/packs/items/weapons/weapon_Advanced_Rapier_KxFne76d7cak15dO.json index e108d48f..7e7226d2 100644 --- a/src/packs/items/weapons/weapon_Advanced_Rapier_KxFne76d7cak15dO.json +++ b/src/packs/items/weapons/weapon_Advanced_Rapier_KxFne76d7cak15dO.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831909596, - "modifiedTime": 1753831926420, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431050992, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!KxFne76d7cak15dO" } diff --git a/src/packs/items/weapons/weapon_Advanced_Returning_Blade_sIGXA4KMeYBUjcEO.json b/src/packs/items/weapons/weapon_Advanced_Returning_Blade_sIGXA4KMeYBUjcEO.json index e549ce09..04a8537c 100644 --- a/src/packs/items/weapons/weapon_Advanced_Returning_Blade_sIGXA4KMeYBUjcEO.json +++ b/src/packs/items/weapons/weapon_Advanced_Returning_Blade_sIGXA4KMeYBUjcEO.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833291783, - "modifiedTime": 1753833332963, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431189871, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!sIGXA4KMeYBUjcEO" } diff --git a/src/packs/items/weapons/weapon_Advanced_Round_Shield_hiEOGF2reabGLUoi.json b/src/packs/items/weapons/weapon_Advanced_Round_Shield_hiEOGF2reabGLUoi.json index 9240fbaf..1ea38b75 100644 --- a/src/packs/items/weapons/weapon_Advanced_Round_Shield_hiEOGF2reabGLUoi.json +++ b/src/packs/items/weapons/weapon_Advanced_Round_Shield_hiEOGF2reabGLUoi.json @@ -100,18 +100,24 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [ { "name": "Protective", - "description": "Add your character's Tier to your Armor Score", + "description": "

Add the item's Tier to your Armor Score

", "img": "icons/skills/melee/shield-block-gray-orange.webp", "changes": [ { "key": "system.armorScore", "mode": 2, - "value": "ITEM.@system.tier" + "value": "ITEM.@system.tier", + "priority": null } ], "_id": "i5HfkF5aKQuUCTEG", @@ -120,7 +126,12 @@ "disabled": false, "duration": { "startTime": null, - "combat": null + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "origin": null, "tint": "#ffffff", @@ -132,12 +143,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1753794875150, - "modifiedTime": 1753794875150, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1761503813916, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!hiEOGF2reabGLUoi.i5HfkF5aKQuUCTEG" } @@ -152,12 +163,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753794853303, - "modifiedTime": 1753794890718, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430422255, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!hiEOGF2reabGLUoi" } diff --git a/src/packs/items/weapons/weapon_Advanced_Scepter_2Khzuj768yoWN9QK.json b/src/packs/items/weapons/weapon_Advanced_Scepter_2Khzuj768yoWN9QK.json index 0f24c888..8410acba 100644 --- a/src/packs/items/weapons/weapon_Advanced_Scepter_2Khzuj768yoWN9QK.json +++ b/src/packs/items/weapons/weapon_Advanced_Scepter_2Khzuj768yoWN9QK.json @@ -166,6 +166,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -179,12 +184,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833421806, - "modifiedTime": 1753835888435, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431194696, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!2Khzuj768yoWN9QK" } diff --git a/src/packs/items/weapons/weapon_Advanced_Shortbow_JpSlJvDR0X8VFDns.json b/src/packs/items/weapons/weapon_Advanced_Shortbow_JpSlJvDR0X8VFDns.json index e54b4eea..c6cf9e45 100644 --- a/src/packs/items/weapons/weapon_Advanced_Shortbow_JpSlJvDR0X8VFDns.json +++ b/src/packs/items/weapons/weapon_Advanced_Shortbow_JpSlJvDR0X8VFDns.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831998635, - "modifiedTime": 1753832018423, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431055980, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!JpSlJvDR0X8VFDns" } diff --git a/src/packs/items/weapons/weapon_Advanced_Shortstaff_T5exRCqOXhrjSYnI.json b/src/packs/items/weapons/weapon_Advanced_Shortstaff_T5exRCqOXhrjSYnI.json index b09613da..b9f8abd7 100644 --- a/src/packs/items/weapons/weapon_Advanced_Shortstaff_T5exRCqOXhrjSYnI.json +++ b/src/packs/items/weapons/weapon_Advanced_Shortstaff_T5exRCqOXhrjSYnI.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833341389, - "modifiedTime": 1753833375298, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431199497, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!T5exRCqOXhrjSYnI" } diff --git a/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json b/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json index a7b33030..3602de12 100644 --- a/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json +++ b/src/packs/items/weapons/weapon_Advanced_Shortsword_p3nz5CaGUoyuGVg0.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [ @@ -161,9 +166,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753794821174, - "modifiedTime": 1755268343096, + "modifiedTime": 1755430427239, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!p3nz5CaGUoyuGVg0" diff --git a/src/packs/items/weapons/weapon_Advanced_Small_Dagger_0thN0BpN05KT8Avx.json b/src/packs/items/weapons/weapon_Advanced_Small_Dagger_0thN0BpN05KT8Avx.json index 958bda92..aec66a76 100644 --- a/src/packs/items/weapons/weapon_Advanced_Small_Dagger_0thN0BpN05KT8Avx.json +++ b/src/packs/items/weapons/weapon_Advanced_Small_Dagger_0thN0BpN05KT8Avx.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [ @@ -161,9 +166,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753794938643, - "modifiedTime": 1755268350050, + "modifiedTime": 1755430432441, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!0thN0BpN05KT8Avx" diff --git a/src/packs/items/weapons/weapon_Advanced_Spear_pK6dsNABKKp1CIGN.json b/src/packs/items/weapons/weapon_Advanced_Spear_pK6dsNABKKp1CIGN.json index 0bfb4a8f..af308099 100644 --- a/src/packs/items/weapons/weapon_Advanced_Spear_pK6dsNABKKp1CIGN.json +++ b/src/packs/items/weapons/weapon_Advanced_Spear_pK6dsNABKKp1CIGN.json @@ -92,48 +92,14 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, - "effects": [ - { - "name": "Cumbersome", - "description": "-1 to Finesse", - "img": "icons/commodities/metal/mail-plate-steel.webp", - "changes": [ - { - "key": "system.traits.finesse.value", - "mode": 2, - "value": "-1" - } - ], - "_id": "hl0S2LrBY5Mg69q6", - "type": "base", - "system": {}, - "disabled": false, - "duration": { - "startTime": null, - "combat": null - }, - "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": 1753831987001, - "modifiedTime": 1753831987001, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" - }, - "_key": "!items.effects!pK6dsNABKKp1CIGN.hl0S2LrBY5Mg69q6" - } - ], + "effects": [], "sort": 0, "ownership": { "default": 0, @@ -144,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831962536, - "modifiedTime": 1753831987004, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431061358, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!pK6dsNABKKp1CIGN" } diff --git a/src/packs/items/weapons/weapon_Advanced_Tower_Shield_OfOzQbs4hg6QbfTG.json b/src/packs/items/weapons/weapon_Advanced_Tower_Shield_OfOzQbs4hg6QbfTG.json index 33d9f577..47982de2 100644 --- a/src/packs/items/weapons/weapon_Advanced_Tower_Shield_OfOzQbs4hg6QbfTG.json +++ b/src/packs/items/weapons/weapon_Advanced_Tower_Shield_OfOzQbs4hg6QbfTG.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753794904892, - "modifiedTime": 1753794929241, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430438607, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!OfOzQbs4hg6QbfTG" } diff --git a/src/packs/items/weapons/weapon_Advanced_Wand_jU9jWIardjtdAQcs.json b/src/packs/items/weapons/weapon_Advanced_Wand_jU9jWIardjtdAQcs.json index 65bd9fc3..4e427132 100644 --- a/src/packs/items/weapons/weapon_Advanced_Wand_jU9jWIardjtdAQcs.json +++ b/src/packs/items/weapons/weapon_Advanced_Wand_jU9jWIardjtdAQcs.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833518519, - "modifiedTime": 1753833553163, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431205397, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!jU9jWIardjtdAQcs" } diff --git a/src/packs/items/weapons/weapon_Advanced_Warhammer_8Lipw3RRKDgBVP0p.json b/src/packs/items/weapons/weapon_Advanced_Warhammer_8Lipw3RRKDgBVP0p.json index 56eb31fc..7d3276c6 100644 --- a/src/packs/items/weapons/weapon_Advanced_Warhammer_8Lipw3RRKDgBVP0p.json +++ b/src/packs/items/weapons/weapon_Advanced_Warhammer_8Lipw3RRKDgBVP0p.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831754451, - "modifiedTime": 1753831777547, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431066673, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!8Lipw3RRKDgBVP0p" } diff --git a/src/packs/items/weapons/weapon_Advanced_Whip_01izMUSJcAUo79IX.json b/src/packs/items/weapons/weapon_Advanced_Whip_01izMUSJcAUo79IX.json index b9c4242d..dfbb4906 100644 --- a/src/packs/items/weapons/weapon_Advanced_Whip_01izMUSJcAUo79IX.json +++ b/src/packs/items/weapons/weapon_Advanced_Whip_01izMUSJcAUo79IX.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753795001576, - "modifiedTime": 1753808405822, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430443629, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!01izMUSJcAUo79IX" } diff --git a/src/packs/items/weapons/weapon_Arcane_Frame_Wheelchair_XRChepscgr75Uug7.json b/src/packs/items/weapons/weapon_Arcane_Frame_Wheelchair_XRChepscgr75Uug7.json index 3dd7d463..ca0b07d7 100644 --- a/src/packs/items/weapons/weapon_Arcane_Frame_Wheelchair_XRChepscgr75Uug7.json +++ b/src/packs/items/weapons/weapon_Arcane_Frame_Wheelchair_XRChepscgr75Uug7.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 55, + "artist": "" } }, "effects": [ @@ -161,10 +166,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753836689082, - "modifiedTime": 1754845945327, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430185213, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!XRChepscgr75Uug7" } diff --git a/src/packs/items/weapons/weapon_Arcane_Gauntlets_PC5EyEIq7NWBV0n5.json b/src/packs/items/weapons/weapon_Arcane_Gauntlets_PC5EyEIq7NWBV0n5.json index abef59b7..9eb20491 100644 --- a/src/packs/items/weapons/weapon_Arcane_Gauntlets_PC5EyEIq7NWBV0n5.json +++ b/src/packs/items/weapons/weapon_Arcane_Gauntlets_PC5EyEIq7NWBV0n5.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828194643, - "modifiedTime": 1753828233213, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430636989, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!PC5EyEIq7NWBV0n5" } diff --git a/src/packs/items/weapons/weapon_Axe_of_Fortunis_YcS1rHgfnSlla8Xf.json b/src/packs/items/weapons/weapon_Axe_of_Fortunis_YcS1rHgfnSlla8Xf.json index ae0f0398..f7f748ae 100644 --- a/src/packs/items/weapons/weapon_Axe_of_Fortunis_YcS1rHgfnSlla8Xf.json +++ b/src/packs/items/weapons/weapon_Axe_of_Fortunis_YcS1rHgfnSlla8Xf.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833614959, - "modifiedTime": 1753833653403, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431211441, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!YcS1rHgfnSlla8Xf" } diff --git a/src/packs/items/weapons/weapon_Battleaxe_fbDYUja3ll9vCtrB.json b/src/packs/items/weapons/weapon_Battleaxe_fbDYUja3ll9vCtrB.json index 00034072..63ed7753 100644 --- a/src/packs/items/weapons/weapon_Battleaxe_fbDYUja3ll9vCtrB.json +++ b/src/packs/items/weapons/weapon_Battleaxe_fbDYUja3ll9vCtrB.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753827787429, - "modifiedTime": 1753827801986, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430553429, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!fbDYUja3ll9vCtrB" } diff --git a/src/packs/items/weapons/weapon_Black_Powder_Revolver_AokqTusPzn0hghkE.json b/src/packs/items/weapons/weapon_Black_Powder_Revolver_AokqTusPzn0hghkE.json index 916958c9..699b06ae 100644 --- a/src/packs/items/weapons/weapon_Black_Powder_Revolver_AokqTusPzn0hghkE.json +++ b/src/packs/items/weapons/weapon_Black_Powder_Revolver_AokqTusPzn0hghkE.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832483435, - "modifiedTime": 1753832502167, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431071691, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!AokqTusPzn0hghkE" } diff --git a/src/packs/items/weapons/weapon_Bladed_Whip_5faflfNz20cFW1EM.json b/src/packs/items/weapons/weapon_Bladed_Whip_5faflfNz20cFW1EM.json index 9e188b9f..dba962aa 100644 --- a/src/packs/items/weapons/weapon_Bladed_Whip_5faflfNz20cFW1EM.json +++ b/src/packs/items/weapons/weapon_Bladed_Whip_5faflfNz20cFW1EM.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829680830, - "modifiedTime": 1753829701111, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430702556, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!5faflfNz20cFW1EM" } diff --git a/src/packs/items/weapons/weapon_Blessed_Anlace_n1oPTk5czTIGTkVj.json b/src/packs/items/weapons/weapon_Blessed_Anlace_n1oPTk5czTIGTkVj.json index f4d8d52a..83ef5820 100644 --- a/src/packs/items/weapons/weapon_Blessed_Anlace_n1oPTk5czTIGTkVj.json +++ b/src/packs/items/weapons/weapon_Blessed_Anlace_n1oPTk5czTIGTkVj.json @@ -168,6 +168,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -181,12 +186,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833663905, - "modifiedTime": 1754406631151, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755431216258, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!n1oPTk5czTIGTkVj" } diff --git a/src/packs/items/weapons/weapon_Bloodstaff_IoMVDz92WVvfGGdc.json b/src/packs/items/weapons/weapon_Bloodstaff_IoMVDz92WVvfGGdc.json index abd09941..fb41b73f 100644 --- a/src/packs/items/weapons/weapon_Bloodstaff_IoMVDz92WVvfGGdc.json +++ b/src/packs/items/weapons/weapon_Bloodstaff_IoMVDz92WVvfGGdc.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836256052, - "modifiedTime": 1753836294025, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431424609, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!IoMVDz92WVvfGGdc" } diff --git a/src/packs/items/weapons/weapon_Blunderbuss_SLFrK0WmldPo0shz.json b/src/packs/items/weapons/weapon_Blunderbuss_SLFrK0WmldPo0shz.json index 7d211d92..e6fefe1c 100644 --- a/src/packs/items/weapons/weapon_Blunderbuss_SLFrK0WmldPo0shz.json +++ b/src/packs/items/weapons/weapon_Blunderbuss_SLFrK0WmldPo0shz.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829780930, - "modifiedTime": 1753829802107, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430707621, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!SLFrK0WmldPo0shz" } diff --git a/src/packs/items/weapons/weapon_Braveshield_QEvgVoz9xKBSKsGi.json b/src/packs/items/weapons/weapon_Braveshield_QEvgVoz9xKBSKsGi.json index 6b9af93d..920985fa 100644 --- a/src/packs/items/weapons/weapon_Braveshield_QEvgVoz9xKBSKsGi.json +++ b/src/packs/items/weapons/weapon_Braveshield_QEvgVoz9xKBSKsGi.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753797203355, - "modifiedTime": 1753797247008, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430470813, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!QEvgVoz9xKBSKsGi" } diff --git a/src/packs/items/weapons/weapon_Bravesword_QZrWAkprA2tL2MOI.json b/src/packs/items/weapons/weapon_Bravesword_QZrWAkprA2tL2MOI.json index b5d7559f..29ccef77 100644 --- a/src/packs/items/weapons/weapon_Bravesword_QZrWAkprA2tL2MOI.json +++ b/src/packs/items/weapons/weapon_Bravesword_QZrWAkprA2tL2MOI.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832142373, - "modifiedTime": 1753832160787, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431087258, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!QZrWAkprA2tL2MOI" } diff --git a/src/packs/items/weapons/weapon_Broadsword_1cwWNt4sqlgA8gCT.json b/src/packs/items/weapons/weapon_Broadsword_1cwWNt4sqlgA8gCT.json index 959a8547..10bbaf8c 100644 --- a/src/packs/items/weapons/weapon_Broadsword_1cwWNt4sqlgA8gCT.json +++ b/src/packs/items/weapons/weapon_Broadsword_1cwWNt4sqlgA8gCT.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [ @@ -161,10 +166,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753827734892, - "modifiedTime": 1754814769821, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755430559304, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!1cwWNt4sqlgA8gCT" } diff --git a/src/packs/items/weapons/weapon_Buckler_EmFTp9wzT6MHSaNz.json b/src/packs/items/weapons/weapon_Buckler_EmFTp9wzT6MHSaNz.json index 852a213f..2a7e0db6 100644 --- a/src/packs/items/weapons/weapon_Buckler_EmFTp9wzT6MHSaNz.json +++ b/src/packs/items/weapons/weapon_Buckler_EmFTp9wzT6MHSaNz.json @@ -20,11 +20,12 @@ }, "cost": [ { - "key": "armorSlot", + "key": "resource", + "itemId": "armorSlot", "value": 1, - "keyIsID": false, "scalable": false, - "step": null + "step": null, + "consumeOnSuccess": false } ], "effects": [ @@ -137,6 +138,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [ @@ -189,12 +195,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1753795181779, - "modifiedTime": 1753808413753, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1756325575921, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_key": "!items!EmFTp9wzT6MHSaNz" } diff --git a/src/packs/items/weapons/weapon_Casting_Sword_2Fbf2cxLfbdGkU4I.json b/src/packs/items/weapons/weapon_Casting_Sword_2Fbf2cxLfbdGkU4I.json index 6394645b..45924203 100644 --- a/src/packs/items/weapons/weapon_Casting_Sword_2Fbf2cxLfbdGkU4I.json +++ b/src/packs/items/weapons/weapon_Casting_Sword_2Fbf2cxLfbdGkU4I.json @@ -164,6 +164,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -177,12 +182,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831124348, - "modifiedTime": 1753831194254, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430854985, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!2Fbf2cxLfbdGkU4I" } diff --git a/src/packs/items/weapons/weapon_Crossbow_cw7HG1Z7hp7OOLD0.json b/src/packs/items/weapons/weapon_Crossbow_cw7HG1Z7hp7OOLD0.json index ac1fdb6a..b0915863 100644 --- a/src/packs/items/weapons/weapon_Crossbow_cw7HG1Z7hp7OOLD0.json +++ b/src/packs/items/weapons/weapon_Crossbow_cw7HG1Z7hp7OOLD0.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828109370, - "modifiedTime": 1753828127762, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430563597, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!cw7HG1Z7hp7OOLD0" } diff --git a/src/packs/items/weapons/weapon_Curved_Dagger_Fk69R40svV0kanZD.json b/src/packs/items/weapons/weapon_Curved_Dagger_Fk69R40svV0kanZD.json index c3c4b5d6..0ce2a676 100644 --- a/src/packs/items/weapons/weapon_Curved_Dagger_Fk69R40svV0kanZD.json +++ b/src/packs/items/weapons/weapon_Curved_Dagger_Fk69R40svV0kanZD.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835098261, - "modifiedTime": 1753835125696, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431277893, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Fk69R40svV0kanZD" } diff --git a/src/packs/items/weapons/weapon_Cutlass_CWrbnethuILXrEpA.json b/src/packs/items/weapons/weapon_Cutlass_CWrbnethuILXrEpA.json index 42839516..601ac04e 100644 --- a/src/packs/items/weapons/weapon_Cutlass_CWrbnethuILXrEpA.json +++ b/src/packs/items/weapons/weapon_Cutlass_CWrbnethuILXrEpA.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753827943490, - "modifiedTime": 1753827960371, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430570250, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!CWrbnethuILXrEpA" } diff --git a/src/packs/items/weapons/weapon_Dagger_iStO0BbeMTTR0rQi.json b/src/packs/items/weapons/weapon_Dagger_iStO0BbeMTTR0rQi.json index fe6e34bb..74b81e48 100644 --- a/src/packs/items/weapons/weapon_Dagger_iStO0BbeMTTR0rQi.json +++ b/src/packs/items/weapons/weapon_Dagger_iStO0BbeMTTR0rQi.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753827894955, - "modifiedTime": 1753827907060, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430575107, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!iStO0BbeMTTR0rQi" } diff --git a/src/packs/items/weapons/weapon_Devouring_Dagger_C5wSGglR8e0euQnY.json b/src/packs/items/weapons/weapon_Devouring_Dagger_C5wSGglR8e0euQnY.json index 153220f1..8a97fe05 100644 --- a/src/packs/items/weapons/weapon_Devouring_Dagger_C5wSGglR8e0euQnY.json +++ b/src/packs/items/weapons/weapon_Devouring_Dagger_C5wSGglR8e0euQnY.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831203997, - "modifiedTime": 1753831225429, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430861829, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!C5wSGglR8e0euQnY" } diff --git a/src/packs/items/weapons/weapon_Double_Flail_xm1yU7k58fMgXxRR.json b/src/packs/items/weapons/weapon_Double_Flail_xm1yU7k58fMgXxRR.json index 2a3a6095..86145c0f 100644 --- a/src/packs/items/weapons/weapon_Double_Flail_xm1yU7k58fMgXxRR.json +++ b/src/packs/items/weapons/weapon_Double_Flail_xm1yU7k58fMgXxRR.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832332785, - "modifiedTime": 1753832367770, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431095042, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!xm1yU7k58fMgXxRR" } diff --git a/src/packs/items/weapons/weapon_Dual_Ended_Sword_nXjuBa215H1sTUK3.json b/src/packs/items/weapons/weapon_Dual_Ended_Sword_nXjuBa215H1sTUK3.json index 4463cef4..9b43770c 100644 --- a/src/packs/items/weapons/weapon_Dual_Ended_Sword_nXjuBa215H1sTUK3.json +++ b/src/packs/items/weapons/weapon_Dual_Ended_Sword_nXjuBa215H1sTUK3.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834935521, - "modifiedTime": 1753835006406, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431282742, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!nXjuBa215H1sTUK3" } diff --git a/src/packs/items/weapons/weapon_Dualstaff_j8cdNeIUYxxzFVji.json b/src/packs/items/weapons/weapon_Dualstaff_j8cdNeIUYxxzFVji.json index 35cf3dd6..44487b58 100644 --- a/src/packs/items/weapons/weapon_Dualstaff_j8cdNeIUYxxzFVji.json +++ b/src/packs/items/weapons/weapon_Dualstaff_j8cdNeIUYxxzFVji.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828411828, - "modifiedTime": 1753828446546, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430641953, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!j8cdNeIUYxxzFVji" } diff --git a/src/packs/items/weapons/weapon_Ego_Blade_G7rH31KQ5eEZXcv0.json b/src/packs/items/weapons/weapon_Ego_Blade_G7rH31KQ5eEZXcv0.json index 2d54aa50..82f90f23 100644 --- a/src/packs/items/weapons/weapon_Ego_Blade_G7rH31KQ5eEZXcv0.json +++ b/src/packs/items/weapons/weapon_Ego_Blade_G7rH31KQ5eEZXcv0.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831084805, - "modifiedTime": 1753831108928, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430867175, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!G7rH31KQ5eEZXcv0" } diff --git a/src/packs/items/weapons/weapon_Elder_Bow_JdWcn9W1edhAEInL.json b/src/packs/items/weapons/weapon_Elder_Bow_JdWcn9W1edhAEInL.json index f9637a9e..7441238b 100644 --- a/src/packs/items/weapons/weapon_Elder_Bow_JdWcn9W1edhAEInL.json +++ b/src/packs/items/weapons/weapon_Elder_Bow_JdWcn9W1edhAEInL.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831304971, - "modifiedTime": 1753831327540, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430872430, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!JdWcn9W1edhAEInL" } diff --git a/src/packs/items/weapons/weapon_Extended_Polearm_fJHKMxZokVP34MCi.json b/src/packs/items/weapons/weapon_Extended_Polearm_fJHKMxZokVP34MCi.json index 65b0a657..0c28d943 100644 --- a/src/packs/items/weapons/weapon_Extended_Polearm_fJHKMxZokVP34MCi.json +++ b/src/packs/items/weapons/weapon_Extended_Polearm_fJHKMxZokVP34MCi.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835136460, - "modifiedTime": 1753835169098, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431287604, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!fJHKMxZokVP34MCi" } diff --git a/src/packs/items/weapons/weapon_Finehair_Bow_ykF3jouxHZ6YR8Bg.json b/src/packs/items/weapons/weapon_Finehair_Bow_ykF3jouxHZ6YR8Bg.json index 5dba19c9..d4c8bb5b 100644 --- a/src/packs/items/weapons/weapon_Finehair_Bow_ykF3jouxHZ6YR8Bg.json +++ b/src/packs/items/weapons/weapon_Finehair_Bow_ykF3jouxHZ6YR8Bg.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829844531, - "modifiedTime": 1753829859088, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430717775, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ykF3jouxHZ6YR8Bg" } diff --git a/src/packs/items/weapons/weapon_Firestaff_BtCm2RhWEfs00g38.json b/src/packs/items/weapons/weapon_Firestaff_BtCm2RhWEfs00g38.json index f71b63b2..e10f1fd7 100644 --- a/src/packs/items/weapons/weapon_Firestaff_BtCm2RhWEfs00g38.json +++ b/src/packs/items/weapons/weapon_Firestaff_BtCm2RhWEfs00g38.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833915734, - "modifiedTime": 1753834249920, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431221418, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!BtCm2RhWEfs00g38" } diff --git a/src/packs/items/weapons/weapon_Flickerfly_Blade_xLJ5RRpUoTRmAC3G.json b/src/packs/items/weapons/weapon_Flickerfly_Blade_xLJ5RRpUoTRmAC3G.json index 6696a3fb..d37f7142 100644 --- a/src/packs/items/weapons/weapon_Flickerfly_Blade_xLJ5RRpUoTRmAC3G.json +++ b/src/packs/items/weapons/weapon_Flickerfly_Blade_xLJ5RRpUoTRmAC3G.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832095587, - "modifiedTime": 1753832129589, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431100825, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!xLJ5RRpUoTRmAC3G" } diff --git a/src/packs/items/weapons/weapon_Floating_Bladeshards_3vti3xfo0wJND7ew.json b/src/packs/items/weapons/weapon_Floating_Bladeshards_3vti3xfo0wJND7ew.json index 48087189..16237fff 100644 --- a/src/packs/items/weapons/weapon_Floating_Bladeshards_3vti3xfo0wJND7ew.json +++ b/src/packs/items/weapons/weapon_Floating_Bladeshards_3vti3xfo0wJND7ew.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836170763, - "modifiedTime": 1753836240655, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431431739, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!3vti3xfo0wJND7ew" } diff --git a/src/packs/items/weapons/weapon_Fusion_Gloves_uK1RhtYAsDeoPNGx.json b/src/packs/items/weapons/weapon_Fusion_Gloves_uK1RhtYAsDeoPNGx.json index e8e14abb..ac039ece 100644 --- a/src/packs/items/weapons/weapon_Fusion_Gloves_uK1RhtYAsDeoPNGx.json +++ b/src/packs/items/weapons/weapon_Fusion_Gloves_uK1RhtYAsDeoPNGx.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836449043, - "modifiedTime": 1753836485751, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431436926, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!uK1RhtYAsDeoPNGx" } diff --git a/src/packs/items/weapons/weapon_Ghostblade_6gFvOFTE97QZ74Zr.json b/src/packs/items/weapons/weapon_Ghostblade_6gFvOFTE97QZ74Zr.json index a5d39bea..2a3853ea 100644 --- a/src/packs/items/weapons/weapon_Ghostblade_6gFvOFTE97QZ74Zr.json +++ b/src/packs/items/weapons/weapon_Ghostblade_6gFvOFTE97QZ74Zr.json @@ -93,6 +93,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -106,12 +111,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833724570, - "modifiedTime": 1753833788108, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431226770, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!6gFvOFTE97QZ74Zr" } diff --git a/src/packs/items/weapons/weapon_Gilded_Bow_ctTgFfMbM3YtmsYU.json b/src/packs/items/weapons/weapon_Gilded_Bow_ctTgFfMbM3YtmsYU.json index bf6423c5..ff8d606b 100644 --- a/src/packs/items/weapons/weapon_Gilded_Bow_ctTgFfMbM3YtmsYU.json +++ b/src/packs/items/weapons/weapon_Gilded_Bow_ctTgFfMbM3YtmsYU.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833878513, - "modifiedTime": 1753833907298, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431231849, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ctTgFfMbM3YtmsYU" } diff --git a/src/packs/items/weapons/weapon_Gilded_Falchion_VwcOgqnzjf9LBj2S.json b/src/packs/items/weapons/weapon_Gilded_Falchion_VwcOgqnzjf9LBj2S.json index e9372819..f92fa49f 100644 --- a/src/packs/items/weapons/weapon_Gilded_Falchion_VwcOgqnzjf9LBj2S.json +++ b/src/packs/items/weapons/weapon_Gilded_Falchion_VwcOgqnzjf9LBj2S.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829584359, - "modifiedTime": 1753829600720, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430712705, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!VwcOgqnzjf9LBj2S" } diff --git a/src/packs/items/weapons/weapon_Glowing_Rings_wG9f5NpCwSbaLy8t.json b/src/packs/items/weapons/weapon_Glowing_Rings_wG9f5NpCwSbaLy8t.json index d1b43470..b0a515e1 100644 --- a/src/packs/items/weapons/weapon_Glowing_Rings_wG9f5NpCwSbaLy8t.json +++ b/src/packs/items/weapons/weapon_Glowing_Rings_wG9f5NpCwSbaLy8t.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828268892, - "modifiedTime": 1753828300354, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430650322, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!wG9f5NpCwSbaLy8t" } diff --git a/src/packs/items/weapons/weapon_Grappler_iEzPscUc18GuFoB6.json b/src/packs/items/weapons/weapon_Grappler_iEzPscUc18GuFoB6.json index 760cd787..585473ad 100644 --- a/src/packs/items/weapons/weapon_Grappler_iEzPscUc18GuFoB6.json +++ b/src/packs/items/weapons/weapon_Grappler_iEzPscUc18GuFoB6.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753744418464, - "modifiedTime": 1753794424526, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430265968, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!iEzPscUc18GuFoB6" } diff --git a/src/packs/items/weapons/weapon_Greatbow_MXBpbqQsZFln4rZk.json b/src/packs/items/weapons/weapon_Greatbow_MXBpbqQsZFln4rZk.json index 40092016..64800e1b 100644 --- a/src/packs/items/weapons/weapon_Greatbow_MXBpbqQsZFln4rZk.json +++ b/src/packs/items/weapons/weapon_Greatbow_MXBpbqQsZFln4rZk.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829810496, - "modifiedTime": 1753829836266, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430723754, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!MXBpbqQsZFln4rZk" } diff --git a/src/packs/items/weapons/weapon_Greatstaff_Yk8pTEmyLLi4095S.json b/src/packs/items/weapons/weapon_Greatstaff_Yk8pTEmyLLi4095S.json index 91ab35c3..24a37b60 100644 --- a/src/packs/items/weapons/weapon_Greatstaff_Yk8pTEmyLLi4095S.json +++ b/src/packs/items/weapons/weapon_Greatstaff_Yk8pTEmyLLi4095S.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828546209, - "modifiedTime": 1753828572366, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430656056, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Yk8pTEmyLLi4095S" } diff --git a/src/packs/items/weapons/weapon_Greatsword_70ysaFJDREwTgvZa.json b/src/packs/items/weapons/weapon_Greatsword_70ysaFJDREwTgvZa.json index 88d68120..c3cfc91a 100644 --- a/src/packs/items/weapons/weapon_Greatsword_70ysaFJDREwTgvZa.json +++ b/src/packs/items/weapons/weapon_Greatsword_70ysaFJDREwTgvZa.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [ @@ -162,12 +167,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753827812456, - "modifiedTime": 1753827837860, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430580231, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!70ysaFJDREwTgvZa" } diff --git a/src/packs/items/weapons/weapon_Halberd_qT7FfmauAumOjJoq.json b/src/packs/items/weapons/weapon_Halberd_qT7FfmauAumOjJoq.json index 76ef57d5..5ddc4cf0 100644 --- a/src/packs/items/weapons/weapon_Halberd_qT7FfmauAumOjJoq.json +++ b/src/packs/items/weapons/weapon_Halberd_qT7FfmauAumOjJoq.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828005240, - "modifiedTime": 1753828027571, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430586032, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!qT7FfmauAumOjJoq" } diff --git a/src/packs/items/weapons/weapon_Hallowed_Axe_Vayg7CnRTFBrunjM.json b/src/packs/items/weapons/weapon_Hallowed_Axe_Vayg7CnRTFBrunjM.json index dfb94b82..1a6d341f 100644 --- a/src/packs/items/weapons/weapon_Hallowed_Axe_Vayg7CnRTFBrunjM.json +++ b/src/packs/items/weapons/weapon_Hallowed_Axe_Vayg7CnRTFBrunjM.json @@ -25,7 +25,7 @@ "amount": 1 }, "roll": { - "trait": "agility", + "trait": "strength", "type": "attack", "difficulty": null, "bonus": null, @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.6", "createdTime": 1753828229603, - "modifiedTime": 1753828259599, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755633052433, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Vayg7CnRTFBrunjM" } diff --git a/src/packs/items/weapons/weapon_Hammer_of_Exota_0lAkBEUvbM9Osmqb.json b/src/packs/items/weapons/weapon_Hammer_of_Exota_0lAkBEUvbM9Osmqb.json index 79b179e2..0c00da28 100644 --- a/src/packs/items/weapons/weapon_Hammer_of_Exota_0lAkBEUvbM9Osmqb.json +++ b/src/packs/items/weapons/weapon_Hammer_of_Exota_0lAkBEUvbM9Osmqb.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831233943, - "modifiedTime": 1753831254600, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430877137, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!0lAkBEUvbM9Osmqb" } diff --git a/src/packs/items/weapons/weapon_Hammer_of_Wrath_1R4uzOpWD8bkYRUm.json b/src/packs/items/weapons/weapon_Hammer_of_Wrath_1R4uzOpWD8bkYRUm.json index 0733bc22..bf29dc34 100644 --- a/src/packs/items/weapons/weapon_Hammer_of_Wrath_1R4uzOpWD8bkYRUm.json +++ b/src/packs/items/weapons/weapon_Hammer_of_Wrath_1R4uzOpWD8bkYRUm.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832169515, - "modifiedTime": 1753832195344, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431106242, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!1R4uzOpWD8bkYRUm" } diff --git a/src/packs/items/weapons/weapon_Hand_Cannon_MyGz8nd5sieRQ7zl.json b/src/packs/items/weapons/weapon_Hand_Cannon_MyGz8nd5sieRQ7zl.json index 9dfce730..20370546 100644 --- a/src/packs/items/weapons/weapon_Hand_Cannon_MyGz8nd5sieRQ7zl.json +++ b/src/packs/items/weapons/weapon_Hand_Cannon_MyGz8nd5sieRQ7zl.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835328057, - "modifiedTime": 1753835363359, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431292435, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!MyGz8nd5sieRQ7zl" } diff --git a/src/packs/items/weapons/weapon_Hand_Crossbow_zxKt6qXe7uZB6ljm.json b/src/packs/items/weapons/weapon_Hand_Crossbow_zxKt6qXe7uZB6ljm.json index 7cbbeaec..61ce4d99 100644 --- a/src/packs/items/weapons/weapon_Hand_Crossbow_zxKt6qXe7uZB6ljm.json +++ b/src/packs/items/weapons/weapon_Hand_Crossbow_zxKt6qXe7uZB6ljm.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753744526958, - "modifiedTime": 1753794520954, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430274014, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!zxKt6qXe7uZB6ljm" } diff --git a/src/packs/items/weapons/weapon_Hand_Runes_3whiedn0jBMNRdIb.json b/src/packs/items/weapons/weapon_Hand_Runes_3whiedn0jBMNRdIb.json index b16488ce..18da1680 100644 --- a/src/packs/items/weapons/weapon_Hand_Runes_3whiedn0jBMNRdIb.json +++ b/src/packs/items/weapons/weapon_Hand_Runes_3whiedn0jBMNRdIb.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828308338, - "modifiedTime": 1753828333546, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430667859, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!3whiedn0jBMNRdIb" } diff --git a/src/packs/items/weapons/weapon_Hand_Sling_RAIaoMi6iO1PKIlK.json b/src/packs/items/weapons/weapon_Hand_Sling_RAIaoMi6iO1PKIlK.json index 39a16ddb..42d6b73e 100644 --- a/src/packs/items/weapons/weapon_Hand_Sling_RAIaoMi6iO1PKIlK.json +++ b/src/packs/items/weapons/weapon_Hand_Sling_RAIaoMi6iO1PKIlK.json @@ -164,6 +164,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [], @@ -177,12 +182,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753796778752, - "modifiedTime": 1753796892053, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430455807, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!RAIaoMi6iO1PKIlK" } diff --git a/src/packs/items/weapons/weapon_Heavy_Frame_Wheelchair_XjPQjhRCH08VUIbr.json b/src/packs/items/weapons/weapon_Heavy_Frame_Wheelchair_XjPQjhRCH08VUIbr.json index b4c48925..a3aad851 100644 --- a/src/packs/items/weapons/weapon_Heavy_Frame_Wheelchair_XjPQjhRCH08VUIbr.json +++ b/src/packs/items/weapons/weapon_Heavy_Frame_Wheelchair_XjPQjhRCH08VUIbr.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 55, + "artist": "" } }, "effects": [ @@ -154,10 +159,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836652314, - "modifiedTime": 1754845988869, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430156096, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!XjPQjhRCH08VUIbr" } diff --git a/src/packs/items/weapons/weapon_Ilmari_s_Rifle_TMrUzVC3KvcHmdt8.json b/src/packs/items/weapons/weapon_Ilmari_s_Rifle_TMrUzVC3KvcHmdt8.json index 5d2ad638..51bb46e8 100644 --- a/src/packs/items/weapons/weapon_Ilmari_s_Rifle_TMrUzVC3KvcHmdt8.json +++ b/src/packs/items/weapons/weapon_Ilmari_s_Rifle_TMrUzVC3KvcHmdt8.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834324778, - "modifiedTime": 1753834352088, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431237332, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!TMrUzVC3KvcHmdt8" } diff --git a/src/packs/items/weapons/weapon_Impact_Gauntlet_Zg6IutksQVOqAg8K.json b/src/packs/items/weapons/weapon_Impact_Gauntlet_Zg6IutksQVOqAg8K.json index 5dd794d9..ca842d59 100644 --- a/src/packs/items/weapons/weapon_Impact_Gauntlet_Zg6IutksQVOqAg8K.json +++ b/src/packs/items/weapons/weapon_Impact_Gauntlet_Zg6IutksQVOqAg8K.json @@ -22,7 +22,6 @@ { "key": "hope", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835022121, - "modifiedTime": 1753835056093, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431297704, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Zg6IutksQVOqAg8K" } diff --git a/src/packs/items/weapons/weapon_Improved_Arcane_Frame_Wheelchair_N9P695V5KKlJbAY5.json b/src/packs/items/weapons/weapon_Improved_Arcane_Frame_Wheelchair_N9P695V5KKlJbAY5.json index 69744aab..2fa3de9b 100644 --- a/src/packs/items/weapons/weapon_Improved_Arcane_Frame_Wheelchair_N9P695V5KKlJbAY5.json +++ b/src/packs/items/weapons/weapon_Improved_Arcane_Frame_Wheelchair_N9P695V5KKlJbAY5.json @@ -99,6 +99,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 55, + "artist": "" } }, "effects": [ @@ -159,10 +164,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753836714712, - "modifiedTime": 1754845960700, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430190586, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "N9P695V5KKlJbAY5", "sort": 0, diff --git a/src/packs/items/weapons/weapon_Improved_Arcane_Gauntlets_kENTDpa1hr5LDhIT.json b/src/packs/items/weapons/weapon_Improved_Arcane_Gauntlets_kENTDpa1hr5LDhIT.json index ace2d7f5..4fc65837 100644 --- a/src/packs/items/weapons/weapon_Improved_Arcane_Gauntlets_kENTDpa1hr5LDhIT.json +++ b/src/packs/items/weapons/weapon_Improved_Arcane_Gauntlets_kENTDpa1hr5LDhIT.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753830663702, - "modifiedTime": 1753830688044, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430881797, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!kENTDpa1hr5LDhIT" } diff --git a/src/packs/items/weapons/weapon_Improved_Battleaxe_nxGUpuHLmuKdKsDC.json b/src/packs/items/weapons/weapon_Improved_Battleaxe_nxGUpuHLmuKdKsDC.json index 78a1d9ce..32ef07e2 100644 --- a/src/packs/items/weapons/weapon_Improved_Battleaxe_nxGUpuHLmuKdKsDC.json +++ b/src/packs/items/weapons/weapon_Improved_Battleaxe_nxGUpuHLmuKdKsDC.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829159520, - "modifiedTime": 1753829179084, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430728755, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!nxGUpuHLmuKdKsDC" } diff --git a/src/packs/items/weapons/weapon_Improved_Broadsword_OcKeLJxvmdT81VBc.json b/src/packs/items/weapons/weapon_Improved_Broadsword_OcKeLJxvmdT81VBc.json index 69e46858..9828108d 100644 --- a/src/packs/items/weapons/weapon_Improved_Broadsword_OcKeLJxvmdT81VBc.json +++ b/src/packs/items/weapons/weapon_Improved_Broadsword_OcKeLJxvmdT81VBc.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [ @@ -161,10 +166,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753829098118, - "modifiedTime": 1754814935815, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755430733489, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!OcKeLJxvmdT81VBc" } diff --git a/src/packs/items/weapons/weapon_Improved_Crossbow_55NwHIIZHUeKSE3M.json b/src/packs/items/weapons/weapon_Improved_Crossbow_55NwHIIZHUeKSE3M.json index 4ebf336e..9607f5dd 100644 --- a/src/packs/items/weapons/weapon_Improved_Crossbow_55NwHIIZHUeKSE3M.json +++ b/src/packs/items/weapons/weapon_Improved_Crossbow_55NwHIIZHUeKSE3M.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829524850, - "modifiedTime": 1753829540618, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430738916, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!55NwHIIZHUeKSE3M" } diff --git a/src/packs/items/weapons/weapon_Improved_Cutlass_ddRjXnp2vbohu7rJ.json b/src/packs/items/weapons/weapon_Improved_Cutlass_ddRjXnp2vbohu7rJ.json index 57ead715..f72fd026 100644 --- a/src/packs/items/weapons/weapon_Improved_Cutlass_ddRjXnp2vbohu7rJ.json +++ b/src/packs/items/weapons/weapon_Improved_Cutlass_ddRjXnp2vbohu7rJ.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829336088, - "modifiedTime": 1753829379988, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430744857, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ddRjXnp2vbohu7rJ" } diff --git a/src/packs/items/weapons/weapon_Improved_Dagger_ScjTkb9qrndhlk9S.json b/src/packs/items/weapons/weapon_Improved_Dagger_ScjTkb9qrndhlk9S.json index 09e93778..509be257 100644 --- a/src/packs/items/weapons/weapon_Improved_Dagger_ScjTkb9qrndhlk9S.json +++ b/src/packs/items/weapons/weapon_Improved_Dagger_ScjTkb9qrndhlk9S.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829275876, - "modifiedTime": 1753829295031, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430751928, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ScjTkb9qrndhlk9S" } diff --git a/src/packs/items/weapons/weapon_Improved_Dualstaff_f7hhHlZ5nL3AhYEM.json b/src/packs/items/weapons/weapon_Improved_Dualstaff_f7hhHlZ5nL3AhYEM.json index a55aedd0..e6227e27 100644 --- a/src/packs/items/weapons/weapon_Improved_Dualstaff_f7hhHlZ5nL3AhYEM.json +++ b/src/packs/items/weapons/weapon_Improved_Dualstaff_f7hhHlZ5nL3AhYEM.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753830887023, - "modifiedTime": 1753830918763, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430886600, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!f7hhHlZ5nL3AhYEM" } diff --git a/src/packs/items/weapons/weapon_Improved_Glowing_Rings_N5amhkxR1xn3B7r2.json b/src/packs/items/weapons/weapon_Improved_Glowing_Rings_N5amhkxR1xn3B7r2.json index 1ee640bb..09fc7d78 100644 --- a/src/packs/items/weapons/weapon_Improved_Glowing_Rings_N5amhkxR1xn3B7r2.json +++ b/src/packs/items/weapons/weapon_Improved_Glowing_Rings_N5amhkxR1xn3B7r2.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753830729041, - "modifiedTime": 1753830753601, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430892102, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!N5amhkxR1xn3B7r2" } diff --git a/src/packs/items/weapons/weapon_Improved_Grappler_3T3o9zfe61t22L1H.json b/src/packs/items/weapons/weapon_Improved_Grappler_3T3o9zfe61t22L1H.json index d8b91be7..b10eb764 100644 --- a/src/packs/items/weapons/weapon_Improved_Grappler_3T3o9zfe61t22L1H.json +++ b/src/packs/items/weapons/weapon_Improved_Grappler_3T3o9zfe61t22L1H.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753794386984, - "modifiedTime": 1753795053642, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430314424, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!3T3o9zfe61t22L1H" } diff --git a/src/packs/items/weapons/weapon_Improved_Greatstaff_LCuTrYXi4lhg6LqW.json b/src/packs/items/weapons/weapon_Improved_Greatstaff_LCuTrYXi4lhg6LqW.json index 9b239f60..ab3f7d21 100644 --- a/src/packs/items/weapons/weapon_Improved_Greatstaff_LCuTrYXi4lhg6LqW.json +++ b/src/packs/items/weapons/weapon_Improved_Greatstaff_LCuTrYXi4lhg6LqW.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831031130, - "modifiedTime": 1753831074766, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430897181, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!LCuTrYXi4lhg6LqW" } diff --git a/src/packs/items/weapons/weapon_Improved_Greatsword_FPX4ouDrxXiQ5MDf.json b/src/packs/items/weapons/weapon_Improved_Greatsword_FPX4ouDrxXiQ5MDf.json index 28cad987..eae9543b 100644 --- a/src/packs/items/weapons/weapon_Improved_Greatsword_FPX4ouDrxXiQ5MDf.json +++ b/src/packs/items/weapons/weapon_Improved_Greatsword_FPX4ouDrxXiQ5MDf.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [ @@ -162,12 +167,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829188168, - "modifiedTime": 1753829211950, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430760464, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!FPX4ouDrxXiQ5MDf" } diff --git a/src/packs/items/weapons/weapon_Improved_Halberd_F9PETfCQGwczBPif.json b/src/packs/items/weapons/weapon_Improved_Halberd_F9PETfCQGwczBPif.json index bc88174b..ac5197ed 100644 --- a/src/packs/items/weapons/weapon_Improved_Halberd_F9PETfCQGwczBPif.json +++ b/src/packs/items/weapons/weapon_Improved_Halberd_F9PETfCQGwczBPif.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829414070, - "modifiedTime": 1753829436559, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430766141, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!F9PETfCQGwczBPif" } diff --git a/src/packs/items/weapons/weapon_Improved_Hallowed_Axe_wFOXMN2uiX4j6Gd9.json b/src/packs/items/weapons/weapon_Improved_Hallowed_Axe_wFOXMN2uiX4j6Gd9.json index 818c0f55..d9bc2a64 100644 --- a/src/packs/items/weapons/weapon_Improved_Hallowed_Axe_wFOXMN2uiX4j6Gd9.json +++ b/src/packs/items/weapons/weapon_Improved_Hallowed_Axe_wFOXMN2uiX4j6Gd9.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753830697026, - "modifiedTime": 1753830717920, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430905049, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!wFOXMN2uiX4j6Gd9" } diff --git a/src/packs/items/weapons/weapon_Improved_Hand_Crossbow_XEDRkuw3BhMoVBn9.json b/src/packs/items/weapons/weapon_Improved_Hand_Crossbow_XEDRkuw3BhMoVBn9.json index 63e7f363..8227c35d 100644 --- a/src/packs/items/weapons/weapon_Improved_Hand_Crossbow_XEDRkuw3BhMoVBn9.json +++ b/src/packs/items/weapons/weapon_Improved_Hand_Crossbow_XEDRkuw3BhMoVBn9.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753794476404, - "modifiedTime": 1753794517681, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430322922, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!XEDRkuw3BhMoVBn9" } diff --git a/src/packs/items/weapons/weapon_Improved_Hand_Runes_jMEukC3VpNDz5AOD.json b/src/packs/items/weapons/weapon_Improved_Hand_Runes_jMEukC3VpNDz5AOD.json index 246a4dff..05f8955c 100644 --- a/src/packs/items/weapons/weapon_Improved_Hand_Runes_jMEukC3VpNDz5AOD.json +++ b/src/packs/items/weapons/weapon_Improved_Hand_Runes_jMEukC3VpNDz5AOD.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753830762576, - "modifiedTime": 1753830786247, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430910158, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!jMEukC3VpNDz5AOD" } diff --git a/src/packs/items/weapons/weapon_Improved_Heavy_Frame_Wheelchair_L5KeCtrs768PmYWW.json b/src/packs/items/weapons/weapon_Improved_Heavy_Frame_Wheelchair_L5KeCtrs768PmYWW.json index 70531b7c..c22323d0 100644 --- a/src/packs/items/weapons/weapon_Improved_Heavy_Frame_Wheelchair_L5KeCtrs768PmYWW.json +++ b/src/packs/items/weapons/weapon_Improved_Heavy_Frame_Wheelchair_L5KeCtrs768PmYWW.json @@ -99,6 +99,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 55, + "artist": "" } }, "effects": [ @@ -150,10 +155,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836674233, - "modifiedTime": 1754845992757, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430164612, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "L5KeCtrs768PmYWW", "sort": 0, diff --git a/src/packs/items/weapons/weapon_Improved_Light_Frame_Wheelchair_ZJsetdHKV77ygtCE.json b/src/packs/items/weapons/weapon_Improved_Light_Frame_Wheelchair_ZJsetdHKV77ygtCE.json index 737e2c55..8922d621 100644 --- a/src/packs/items/weapons/weapon_Improved_Light_Frame_Wheelchair_ZJsetdHKV77ygtCE.json +++ b/src/packs/items/weapons/weapon_Improved_Light_Frame_Wheelchair_ZJsetdHKV77ygtCE.json @@ -17,7 +17,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -129,6 +128,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 54, + "artist": "" } }, "effects": [], @@ -143,10 +147,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836612291, - "modifiedTime": 1754846018260, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430225855, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "ZJsetdHKV77ygtCE", "sort": 0, diff --git a/src/packs/items/weapons/weapon_Improved_Longbow_NacNonjbzyoVMNhI.json b/src/packs/items/weapons/weapon_Improved_Longbow_NacNonjbzyoVMNhI.json index 18b98cc0..f23b203e 100644 --- a/src/packs/items/weapons/weapon_Improved_Longbow_NacNonjbzyoVMNhI.json +++ b/src/packs/items/weapons/weapon_Improved_Longbow_NacNonjbzyoVMNhI.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829548741, - "modifiedTime": 1753829574677, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430771841, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!NacNonjbzyoVMNhI" } diff --git a/src/packs/items/weapons/weapon_Improved_Longsword_QyBZ5NxM8F9nCL9s.json b/src/packs/items/weapons/weapon_Improved_Longsword_QyBZ5NxM8F9nCL9s.json index b064b1c2..c6e71c36 100644 --- a/src/packs/items/weapons/weapon_Improved_Longsword_QyBZ5NxM8F9nCL9s.json +++ b/src/packs/items/weapons/weapon_Improved_Longsword_QyBZ5NxM8F9nCL9s.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829133179, - "modifiedTime": 1753829150848, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430779350, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!QyBZ5NxM8F9nCL9s" } diff --git a/src/packs/items/weapons/weapon_Improved_Mace_zSLx52U4Yltqx8F1.json b/src/packs/items/weapons/weapon_Improved_Mace_zSLx52U4Yltqx8F1.json index 3c079674..a4c469e3 100644 --- a/src/packs/items/weapons/weapon_Improved_Mace_zSLx52U4Yltqx8F1.json +++ b/src/packs/items/weapons/weapon_Improved_Mace_zSLx52U4Yltqx8F1.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829219204, - "modifiedTime": 1753829233784, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430785076, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!zSLx52U4Yltqx8F1" } diff --git a/src/packs/items/weapons/weapon_Improved_Quarterstaff_BEmAR60PM3ZaiNXa.json b/src/packs/items/weapons/weapon_Improved_Quarterstaff_BEmAR60PM3ZaiNXa.json index 54b220a5..03975811 100644 --- a/src/packs/items/weapons/weapon_Improved_Quarterstaff_BEmAR60PM3ZaiNXa.json +++ b/src/packs/items/weapons/weapon_Improved_Quarterstaff_BEmAR60PM3ZaiNXa.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829305566, - "modifiedTime": 1753829326219, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430790792, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!BEmAR60PM3ZaiNXa" } diff --git a/src/packs/items/weapons/weapon_Improved_Rapier_LFPH8nD2f4Blv3AM.json b/src/packs/items/weapons/weapon_Improved_Rapier_LFPH8nD2f4Blv3AM.json index 27808573..229d1682 100644 --- a/src/packs/items/weapons/weapon_Improved_Rapier_LFPH8nD2f4Blv3AM.json +++ b/src/packs/items/weapons/weapon_Improved_Rapier_LFPH8nD2f4Blv3AM.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829388946, - "modifiedTime": 1753829406872, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430796102, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!LFPH8nD2f4Blv3AM" } diff --git a/src/packs/items/weapons/weapon_Improved_Returning_Blade_SKNwkW23eVQjN4Zy.json b/src/packs/items/weapons/weapon_Improved_Returning_Blade_SKNwkW23eVQjN4Zy.json index 64404db7..1bc01015 100644 --- a/src/packs/items/weapons/weapon_Improved_Returning_Blade_SKNwkW23eVQjN4Zy.json +++ b/src/packs/items/weapons/weapon_Improved_Returning_Blade_SKNwkW23eVQjN4Zy.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753830798994, - "modifiedTime": 1753830839524, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430915852, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!SKNwkW23eVQjN4Zy" } diff --git a/src/packs/items/weapons/weapon_Improved_Round_Shield_DlinEBGZfIlvreO3.json b/src/packs/items/weapons/weapon_Improved_Round_Shield_DlinEBGZfIlvreO3.json index 49be7813..6d76129a 100644 --- a/src/packs/items/weapons/weapon_Improved_Round_Shield_DlinEBGZfIlvreO3.json +++ b/src/packs/items/weapons/weapon_Improved_Round_Shield_DlinEBGZfIlvreO3.json @@ -100,18 +100,24 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [ { "name": "Protective", - "description": "Add your character's Tier to your Armor Score", + "description": "

Add the item's Tier to your Armor Score

", "img": "icons/skills/melee/shield-block-gray-orange.webp", "changes": [ { "key": "system.armorScore", "mode": 2, - "value": "ITEM.@system.tier" + "value": "ITEM.@system.tier", + "priority": null } ], "_id": "cXWSV50apzaNQkdA", @@ -120,7 +126,12 @@ "disabled": false, "duration": { "startTime": null, - "combat": null + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "origin": null, "tint": "#ffffff", @@ -132,12 +143,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1753794098464, - "modifiedTime": 1753794098464, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1761503800669, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!DlinEBGZfIlvreO3.cXWSV50apzaNQkdA" } @@ -152,12 +163,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753744776245, - "modifiedTime": 1753794098472, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430336489, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!DlinEBGZfIlvreO3" } diff --git a/src/packs/items/weapons/weapon_Improved_Scepter_tj26lbNkwy8bORF4.json b/src/packs/items/weapons/weapon_Improved_Scepter_tj26lbNkwy8bORF4.json index a97d7e10..4d61a5aa 100644 --- a/src/packs/items/weapons/weapon_Improved_Scepter_tj26lbNkwy8bORF4.json +++ b/src/packs/items/weapons/weapon_Improved_Scepter_tj26lbNkwy8bORF4.json @@ -166,6 +166,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -179,12 +184,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753830930043, - "modifiedTime": 1753835907269, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430920982, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!tj26lbNkwy8bORF4" } diff --git a/src/packs/items/weapons/weapon_Improved_Shortbow_6ZWl6ARfvYBaAMwY.json b/src/packs/items/weapons/weapon_Improved_Shortbow_6ZWl6ARfvYBaAMwY.json index ec704881..6ed121f7 100644 --- a/src/packs/items/weapons/weapon_Improved_Shortbow_6ZWl6ARfvYBaAMwY.json +++ b/src/packs/items/weapons/weapon_Improved_Shortbow_6ZWl6ARfvYBaAMwY.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829484986, - "modifiedTime": 1753829516515, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430802429, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!6ZWl6ARfvYBaAMwY" } diff --git a/src/packs/items/weapons/weapon_Improved_Shortstaff_Mn8ja5Oi1sXvvPSk.json b/src/packs/items/weapons/weapon_Improved_Shortstaff_Mn8ja5Oi1sXvvPSk.json index 5ff31862..f9c5246e 100644 --- a/src/packs/items/weapons/weapon_Improved_Shortstaff_Mn8ja5Oi1sXvvPSk.json +++ b/src/packs/items/weapons/weapon_Improved_Shortstaff_Mn8ja5Oi1sXvvPSk.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753830852208, - "modifiedTime": 1753830874554, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430927432, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Mn8ja5Oi1sXvvPSk" } diff --git a/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json b/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json index c2704b4d..adae8915 100644 --- a/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json +++ b/src/packs/items/weapons/weapon_Improved_Shortsword_rSyBNRwemBVuTo3H.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [ @@ -161,9 +166,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753744566951, - "modifiedTime": 1755268322555, + "modifiedTime": 1755430345968, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!rSyBNRwemBVuTo3H" diff --git a/src/packs/items/weapons/weapon_Improved_Small_Dagger_nMuF8ZDZ2aXZVTg6.json b/src/packs/items/weapons/weapon_Improved_Small_Dagger_nMuF8ZDZ2aXZVTg6.json index 5685ac71..2b85fbb5 100644 --- a/src/packs/items/weapons/weapon_Improved_Small_Dagger_nMuF8ZDZ2aXZVTg6.json +++ b/src/packs/items/weapons/weapon_Improved_Small_Dagger_nMuF8ZDZ2aXZVTg6.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [ @@ -161,9 +166,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753794291887, - "modifiedTime": 1755268329308, + "modifiedTime": 1755430352669, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!nMuF8ZDZ2aXZVTg6" diff --git a/src/packs/items/weapons/weapon_Improved_Spear_j5Pt1thLfcvopBij.json b/src/packs/items/weapons/weapon_Improved_Spear_j5Pt1thLfcvopBij.json index 367f80ad..32c080ff 100644 --- a/src/packs/items/weapons/weapon_Improved_Spear_j5Pt1thLfcvopBij.json +++ b/src/packs/items/weapons/weapon_Improved_Spear_j5Pt1thLfcvopBij.json @@ -92,48 +92,14 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, - "effects": [ - { - "name": "Cumbersome", - "description": "-1 to Finesse", - "img": "icons/commodities/metal/mail-plate-steel.webp", - "changes": [ - { - "key": "system.traits.finesse.value", - "mode": 2, - "value": "-1" - } - ], - "_id": "8twXPJELZpvFWA5K", - "type": "base", - "system": {}, - "disabled": false, - "duration": { - "startTime": null, - "combat": null - }, - "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": 1753829466016, - "modifiedTime": 1753829466016, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" - }, - "_key": "!items.effects!j5Pt1thLfcvopBij.8twXPJELZpvFWA5K" - } - ], + "effects": [], "sort": 0, "ownership": { "default": 0, @@ -144,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829443743, - "modifiedTime": 1753829474262, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430807883, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!j5Pt1thLfcvopBij" } diff --git a/src/packs/items/weapons/weapon_Improved_Tower_Shield_bxt3NsbMqTSdI5ab.json b/src/packs/items/weapons/weapon_Improved_Tower_Shield_bxt3NsbMqTSdI5ab.json index b612daef..ef768788 100644 --- a/src/packs/items/weapons/weapon_Improved_Tower_Shield_bxt3NsbMqTSdI5ab.json +++ b/src/packs/items/weapons/weapon_Improved_Tower_Shield_bxt3NsbMqTSdI5ab.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753794198427, - "modifiedTime": 1753794267315, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430358886, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!bxt3NsbMqTSdI5ab" } diff --git a/src/packs/items/weapons/weapon_Improved_Wand_6d9B2b5X2d2U56jt.json b/src/packs/items/weapons/weapon_Improved_Wand_6d9B2b5X2d2U56jt.json index 951b4115..54eaac9f 100644 --- a/src/packs/items/weapons/weapon_Improved_Wand_6d9B2b5X2d2U56jt.json +++ b/src/packs/items/weapons/weapon_Improved_Wand_6d9B2b5X2d2U56jt.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753830985241, - "modifiedTime": 1753831019167, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430932717, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!6d9B2b5X2d2U56jt" } diff --git a/src/packs/items/weapons/weapon_Improved_Warhammer_pxaN4ZK4eqKrjtWj.json b/src/packs/items/weapons/weapon_Improved_Warhammer_pxaN4ZK4eqKrjtWj.json index 115195a7..17615b31 100644 --- a/src/packs/items/weapons/weapon_Improved_Warhammer_pxaN4ZK4eqKrjtWj.json +++ b/src/packs/items/weapons/weapon_Improved_Warhammer_pxaN4ZK4eqKrjtWj.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829240673, - "modifiedTime": 1753829265352, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430814443, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!pxaN4ZK4eqKrjtWj" } diff --git a/src/packs/items/weapons/weapon_Improved_Whip_ftTp8VlsBQ1r4LFD.json b/src/packs/items/weapons/weapon_Improved_Whip_ftTp8VlsBQ1r4LFD.json index 1035131d..b52bf465 100644 --- a/src/packs/items/weapons/weapon_Improved_Whip_ftTp8VlsBQ1r4LFD.json +++ b/src/packs/items/weapons/weapon_Improved_Whip_ftTp8VlsBQ1r4LFD.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753794353291, - "modifiedTime": 1753808384267, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430364486, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ftTp8VlsBQ1r4LFD" } diff --git a/src/packs/items/weapons/weapon_Keeper_s_Staff_q382JqMkqLaaFLIr.json b/src/packs/items/weapons/weapon_Keeper_s_Staff_q382JqMkqLaaFLIr.json index d934731d..46acc280 100644 --- a/src/packs/items/weapons/weapon_Keeper_s_Staff_q382JqMkqLaaFLIr.json +++ b/src/packs/items/weapons/weapon_Keeper_s_Staff_q382JqMkqLaaFLIr.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [ @@ -161,10 +166,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753831418620, - "modifiedTime": 1754815023493, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755430940256, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!q382JqMkqLaaFLIr" } diff --git a/src/packs/items/weapons/weapon_Knuckle_Blades_U8gfyvxoHm024inM.json b/src/packs/items/weapons/weapon_Knuckle_Blades_U8gfyvxoHm024inM.json index fafe9bbc..714f3b5d 100644 --- a/src/packs/items/weapons/weapon_Knuckle_Blades_U8gfyvxoHm024inM.json +++ b/src/packs/items/weapons/weapon_Knuckle_Blades_U8gfyvxoHm024inM.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829611315, - "modifiedTime": 1753829635422, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430819669, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!U8gfyvxoHm024inM" } diff --git a/src/packs/items/weapons/weapon_Knuckle_Claws_SFqganS8Du4aEKjQ.json b/src/packs/items/weapons/weapon_Knuckle_Claws_SFqganS8Du4aEKjQ.json index f2f53dc7..3cb214bd 100644 --- a/src/packs/items/weapons/weapon_Knuckle_Claws_SFqganS8Du4aEKjQ.json +++ b/src/packs/items/weapons/weapon_Knuckle_Claws_SFqganS8Du4aEKjQ.json @@ -123,6 +123,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [], @@ -138,10 +143,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753797258168, - "modifiedTime": 1754814600761, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755430475899, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!SFqganS8Du4aEKjQ" } diff --git a/src/packs/items/weapons/weapon_Labrys_Axe_ijWppQzSOqVCb3rE.json b/src/packs/items/weapons/weapon_Labrys_Axe_ijWppQzSOqVCb3rE.json index fe91f8a1..051c759a 100644 --- a/src/packs/items/weapons/weapon_Labrys_Axe_ijWppQzSOqVCb3rE.json +++ b/src/packs/items/weapons/weapon_Labrys_Axe_ijWppQzSOqVCb3rE.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832206440, - "modifiedTime": 1753832248436, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431111826, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ijWppQzSOqVCb3rE" } diff --git a/src/packs/items/weapons/weapon_Legendary_Arcane_Frame_Wheelchair_gA2tiET9VHGhwMoO.json b/src/packs/items/weapons/weapon_Legendary_Arcane_Frame_Wheelchair_gA2tiET9VHGhwMoO.json index b402692f..9a448ab2 100644 --- a/src/packs/items/weapons/weapon_Legendary_Arcane_Frame_Wheelchair_gA2tiET9VHGhwMoO.json +++ b/src/packs/items/weapons/weapon_Legendary_Arcane_Frame_Wheelchair_gA2tiET9VHGhwMoO.json @@ -99,6 +99,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 55, + "artist": "" } }, "effects": [ @@ -159,10 +164,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753836717240, - "modifiedTime": 1754845972571, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430202136, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "gA2tiET9VHGhwMoO", "sort": 0, diff --git a/src/packs/items/weapons/weapon_Legendary_Arcane_Gauntlets_umADDPYCaykXDc1v.json b/src/packs/items/weapons/weapon_Legendary_Arcane_Gauntlets_umADDPYCaykXDc1v.json index ba769375..f9aabadf 100644 --- a/src/packs/items/weapons/weapon_Legendary_Arcane_Gauntlets_umADDPYCaykXDc1v.json +++ b/src/packs/items/weapons/weapon_Legendary_Arcane_Gauntlets_umADDPYCaykXDc1v.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835451334, - "modifiedTime": 1753835475492, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431441720, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!umADDPYCaykXDc1v" } diff --git a/src/packs/items/weapons/weapon_Legendary_Battleaxe_1nztpLzoHGfbKf5x.json b/src/packs/items/weapons/weapon_Legendary_Battleaxe_1nztpLzoHGfbKf5x.json index c7376573..3d08b628 100644 --- a/src/packs/items/weapons/weapon_Legendary_Battleaxe_1nztpLzoHGfbKf5x.json +++ b/src/packs/items/weapons/weapon_Legendary_Battleaxe_1nztpLzoHGfbKf5x.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834500236, - "modifiedTime": 1753834519405, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431304811, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!1nztpLzoHGfbKf5x" } diff --git a/src/packs/items/weapons/weapon_Legendary_Broadsword_y3hfTPfZhMognyaJ.json b/src/packs/items/weapons/weapon_Legendary_Broadsword_y3hfTPfZhMognyaJ.json index 32d19734..6375e1b6 100644 --- a/src/packs/items/weapons/weapon_Legendary_Broadsword_y3hfTPfZhMognyaJ.json +++ b/src/packs/items/weapons/weapon_Legendary_Broadsword_y3hfTPfZhMognyaJ.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [ @@ -161,10 +166,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753834430378, - "modifiedTime": 1754814961454, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755431309986, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!y3hfTPfZhMognyaJ" } diff --git a/src/packs/items/weapons/weapon_Legendary_Crossbow_1G6xX2QL9O0Rsgz7.json b/src/packs/items/weapons/weapon_Legendary_Crossbow_1G6xX2QL9O0Rsgz7.json index 51bc4ea3..9a66906b 100644 --- a/src/packs/items/weapons/weapon_Legendary_Crossbow_1G6xX2QL9O0Rsgz7.json +++ b/src/packs/items/weapons/weapon_Legendary_Crossbow_1G6xX2QL9O0Rsgz7.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834862922, - "modifiedTime": 1753834882694, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431317436, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!1G6xX2QL9O0Rsgz7" } diff --git a/src/packs/items/weapons/weapon_Legendary_Cutlass_Rpyz0jbFJ1SwqfyD.json b/src/packs/items/weapons/weapon_Legendary_Cutlass_Rpyz0jbFJ1SwqfyD.json index 99950a86..a04487f0 100644 --- a/src/packs/items/weapons/weapon_Legendary_Cutlass_Rpyz0jbFJ1SwqfyD.json +++ b/src/packs/items/weapons/weapon_Legendary_Cutlass_Rpyz0jbFJ1SwqfyD.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834710917, - "modifiedTime": 1753834734158, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431326087, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Rpyz0jbFJ1SwqfyD" } diff --git a/src/packs/items/weapons/weapon_Legendary_Dagger_GmTg3Fdne1UPNs8t.json b/src/packs/items/weapons/weapon_Legendary_Dagger_GmTg3Fdne1UPNs8t.json index 02b8cdce..322b3b27 100644 --- a/src/packs/items/weapons/weapon_Legendary_Dagger_GmTg3Fdne1UPNs8t.json +++ b/src/packs/items/weapons/weapon_Legendary_Dagger_GmTg3Fdne1UPNs8t.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834616464, - "modifiedTime": 1753834659439, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431331293, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!GmTg3Fdne1UPNs8t" } diff --git a/src/packs/items/weapons/weapon_Legendary_Dualstaff_o3rsLvImcLAx5TvD.json b/src/packs/items/weapons/weapon_Legendary_Dualstaff_o3rsLvImcLAx5TvD.json index 5c7977cc..e3f0f656 100644 --- a/src/packs/items/weapons/weapon_Legendary_Dualstaff_o3rsLvImcLAx5TvD.json +++ b/src/packs/items/weapons/weapon_Legendary_Dualstaff_o3rsLvImcLAx5TvD.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835724086, - "modifiedTime": 1753835787515, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431447143, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!o3rsLvImcLAx5TvD" } diff --git a/src/packs/items/weapons/weapon_Legendary_Glowing_Rings_PReWrfuPjoNQuieo.json b/src/packs/items/weapons/weapon_Legendary_Glowing_Rings_PReWrfuPjoNQuieo.json index 9d55a327..31776620 100644 --- a/src/packs/items/weapons/weapon_Legendary_Glowing_Rings_PReWrfuPjoNQuieo.json +++ b/src/packs/items/weapons/weapon_Legendary_Glowing_Rings_PReWrfuPjoNQuieo.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835522076, - "modifiedTime": 1753835564865, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431453215, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!PReWrfuPjoNQuieo" } diff --git a/src/packs/items/weapons/weapon_Legendary_Grappler_IrtUj0UntBMNn49G.json b/src/packs/items/weapons/weapon_Legendary_Grappler_IrtUj0UntBMNn49G.json index 3a22dde7..adcc5fe1 100644 --- a/src/packs/items/weapons/weapon_Legendary_Grappler_IrtUj0UntBMNn49G.json +++ b/src/packs/items/weapons/weapon_Legendary_Grappler_IrtUj0UntBMNn49G.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753797131628, - "modifiedTime": 1753797154423, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430482260, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!IrtUj0UntBMNn49G" } diff --git a/src/packs/items/weapons/weapon_Legendary_Greatstaff_jDtvEabkHY1GFgfc.json b/src/packs/items/weapons/weapon_Legendary_Greatstaff_jDtvEabkHY1GFgfc.json index a7dbbfc5..b0eb6642 100644 --- a/src/packs/items/weapons/weapon_Legendary_Greatstaff_jDtvEabkHY1GFgfc.json +++ b/src/packs/items/weapons/weapon_Legendary_Greatstaff_jDtvEabkHY1GFgfc.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835957503, - "modifiedTime": 1753835997508, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431458779, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!jDtvEabkHY1GFgfc" } diff --git a/src/packs/items/weapons/weapon_Legendary_Greatsword_zMZ46F9VR7zdTxb9.json b/src/packs/items/weapons/weapon_Legendary_Greatsword_zMZ46F9VR7zdTxb9.json index cfd0cfc6..654ddaa8 100644 --- a/src/packs/items/weapons/weapon_Legendary_Greatsword_zMZ46F9VR7zdTxb9.json +++ b/src/packs/items/weapons/weapon_Legendary_Greatsword_zMZ46F9VR7zdTxb9.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [ @@ -162,12 +167,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834526945, - "modifiedTime": 1753834554233, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431336357, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!zMZ46F9VR7zdTxb9" } diff --git a/src/packs/items/weapons/weapon_Legendary_Halberd_1AuMNiJz96Ez9fur.json b/src/packs/items/weapons/weapon_Legendary_Halberd_1AuMNiJz96Ez9fur.json index caeb9c2e..38c67ecf 100644 --- a/src/packs/items/weapons/weapon_Legendary_Halberd_1AuMNiJz96Ez9fur.json +++ b/src/packs/items/weapons/weapon_Legendary_Halberd_1AuMNiJz96Ez9fur.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834772989, - "modifiedTime": 1753834797363, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431341765, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!1AuMNiJz96Ez9fur" } diff --git a/src/packs/items/weapons/weapon_Legendary_Hallowed_Axe_0HmhnZnv1I6uX69c.json b/src/packs/items/weapons/weapon_Legendary_Hallowed_Axe_0HmhnZnv1I6uX69c.json index 2c56cdaa..563d52fa 100644 --- a/src/packs/items/weapons/weapon_Legendary_Hallowed_Axe_0HmhnZnv1I6uX69c.json +++ b/src/packs/items/weapons/weapon_Legendary_Hallowed_Axe_0HmhnZnv1I6uX69c.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835486056, - "modifiedTime": 1753835507874, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431464517, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!0HmhnZnv1I6uX69c" } diff --git a/src/packs/items/weapons/weapon_Legendary_Hand_Crossbow_32nYyMaeDWaakSxz.json b/src/packs/items/weapons/weapon_Legendary_Hand_Crossbow_32nYyMaeDWaakSxz.json index 35e53a9a..cbb44354 100644 --- a/src/packs/items/weapons/weapon_Legendary_Hand_Crossbow_32nYyMaeDWaakSxz.json +++ b/src/packs/items/weapons/weapon_Legendary_Hand_Crossbow_32nYyMaeDWaakSxz.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753797168339, - "modifiedTime": 1753797192489, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430487677, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!32nYyMaeDWaakSxz" } diff --git a/src/packs/items/weapons/weapon_Legendary_Hand_Runes_DWLkswhluXuMy3bB.json b/src/packs/items/weapons/weapon_Legendary_Hand_Runes_DWLkswhluXuMy3bB.json index 73886272..5459f230 100644 --- a/src/packs/items/weapons/weapon_Legendary_Hand_Runes_DWLkswhluXuMy3bB.json +++ b/src/packs/items/weapons/weapon_Legendary_Hand_Runes_DWLkswhluXuMy3bB.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835579627, - "modifiedTime": 1753835606935, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431470561, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!DWLkswhluXuMy3bB" } diff --git a/src/packs/items/weapons/weapon_Legendary_Heavy_Frame_Wheelchair_S6nB0CNlzdU05o5U.json b/src/packs/items/weapons/weapon_Legendary_Heavy_Frame_Wheelchair_S6nB0CNlzdU05o5U.json index d337d32f..b5f1b74e 100644 --- a/src/packs/items/weapons/weapon_Legendary_Heavy_Frame_Wheelchair_S6nB0CNlzdU05o5U.json +++ b/src/packs/items/weapons/weapon_Legendary_Heavy_Frame_Wheelchair_S6nB0CNlzdU05o5U.json @@ -99,6 +99,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 55, + "artist": "" } }, "effects": [ @@ -150,10 +155,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836676831, - "modifiedTime": 1754846000470, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430177593, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "S6nB0CNlzdU05o5U", "sort": 0, diff --git a/src/packs/items/weapons/weapon_Legendary_Light_Frame_Wheelchair_Xt8tVSn5Fu6ly6LF.json b/src/packs/items/weapons/weapon_Legendary_Light_Frame_Wheelchair_Xt8tVSn5Fu6ly6LF.json index 622fcf12..a9b35948 100644 --- a/src/packs/items/weapons/weapon_Legendary_Light_Frame_Wheelchair_Xt8tVSn5Fu6ly6LF.json +++ b/src/packs/items/weapons/weapon_Legendary_Light_Frame_Wheelchair_Xt8tVSn5Fu6ly6LF.json @@ -17,7 +17,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -129,6 +128,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 54, + "artist": "" } }, "effects": [], @@ -143,10 +147,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836615437, - "modifiedTime": 1754846023338, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430241189, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_id": "Xt8tVSn5Fu6ly6LF", "sort": 0, diff --git a/src/packs/items/weapons/weapon_Legendary_Longbow_Utt1GpoH1fhaTOtN.json b/src/packs/items/weapons/weapon_Legendary_Longbow_Utt1GpoH1fhaTOtN.json index 333632dc..fdcc899a 100644 --- a/src/packs/items/weapons/weapon_Legendary_Longbow_Utt1GpoH1fhaTOtN.json +++ b/src/packs/items/weapons/weapon_Legendary_Longbow_Utt1GpoH1fhaTOtN.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834890609, - "modifiedTime": 1753834925920, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431350371, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Utt1GpoH1fhaTOtN" } diff --git a/src/packs/items/weapons/weapon_Legendary_Longsword_14abPqQcROJfDChR.json b/src/packs/items/weapons/weapon_Legendary_Longsword_14abPqQcROJfDChR.json index 636dd7a5..fd755a94 100644 --- a/src/packs/items/weapons/weapon_Legendary_Longsword_14abPqQcROJfDChR.json +++ b/src/packs/items/weapons/weapon_Legendary_Longsword_14abPqQcROJfDChR.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834472085, - "modifiedTime": 1753834491863, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431355505, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!14abPqQcROJfDChR" } diff --git a/src/packs/items/weapons/weapon_Legendary_Mace_RsDsy7tIhrhaAQQc.json b/src/packs/items/weapons/weapon_Legendary_Mace_RsDsy7tIhrhaAQQc.json index e037c5c8..535bba46 100644 --- a/src/packs/items/weapons/weapon_Legendary_Mace_RsDsy7tIhrhaAQQc.json +++ b/src/packs/items/weapons/weapon_Legendary_Mace_RsDsy7tIhrhaAQQc.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834566762, - "modifiedTime": 1753834581202, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431360506, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!RsDsy7tIhrhaAQQc" } diff --git a/src/packs/items/weapons/weapon_Legendary_Quarterstaff_1ZciqG7vIKLYpKsP.json b/src/packs/items/weapons/weapon_Legendary_Quarterstaff_1ZciqG7vIKLYpKsP.json index b4ea03f9..401d6c96 100644 --- a/src/packs/items/weapons/weapon_Legendary_Quarterstaff_1ZciqG7vIKLYpKsP.json +++ b/src/packs/items/weapons/weapon_Legendary_Quarterstaff_1ZciqG7vIKLYpKsP.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834677366, - "modifiedTime": 1753834698077, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431365622, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!1ZciqG7vIKLYpKsP" } diff --git a/src/packs/items/weapons/weapon_Legendary_Rapier_BakN97v4jTePcXiZ.json b/src/packs/items/weapons/weapon_Legendary_Rapier_BakN97v4jTePcXiZ.json index bbdf3ad9..b4df7c8c 100644 --- a/src/packs/items/weapons/weapon_Legendary_Rapier_BakN97v4jTePcXiZ.json +++ b/src/packs/items/weapons/weapon_Legendary_Rapier_BakN97v4jTePcXiZ.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834740751, - "modifiedTime": 1753834763060, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431370823, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!BakN97v4jTePcXiZ" } diff --git a/src/packs/items/weapons/weapon_Legendary_Returning_Blade_mcj3CPkcSSDdAcBB.json b/src/packs/items/weapons/weapon_Legendary_Returning_Blade_mcj3CPkcSSDdAcBB.json index 8081d1ce..da3a5f42 100644 --- a/src/packs/items/weapons/weapon_Legendary_Returning_Blade_mcj3CPkcSSDdAcBB.json +++ b/src/packs/items/weapons/weapon_Legendary_Returning_Blade_mcj3CPkcSSDdAcBB.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835615004, - "modifiedTime": 1753835665790, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431477112, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!mcj3CPkcSSDdAcBB" } diff --git a/src/packs/items/weapons/weapon_Legendary_Round_Shield_A28WL9E2lJ3iLZHW.json b/src/packs/items/weapons/weapon_Legendary_Round_Shield_A28WL9E2lJ3iLZHW.json index 421df201..696c9650 100644 --- a/src/packs/items/weapons/weapon_Legendary_Round_Shield_A28WL9E2lJ3iLZHW.json +++ b/src/packs/items/weapons/weapon_Legendary_Round_Shield_A28WL9E2lJ3iLZHW.json @@ -100,18 +100,24 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [ { "name": "Protective", - "description": "Add your character's Tier to your Armor Score", + "description": "

Add the item's Tier to your Armor Score

", "img": "icons/skills/melee/shield-block-gray-orange.webp", "changes": [ { "key": "system.armorScore", "mode": 2, - "value": "ITEM.@system.tier" + "value": "ITEM.@system.tier", + "priority": null } ], "_id": "Z2p00q5h6x6seXys", @@ -120,7 +126,12 @@ "disabled": false, "duration": { "startTime": null, - "combat": null + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "origin": null, "tint": "#ffffff", @@ -132,12 +143,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1753796983285, - "modifiedTime": 1753796983285, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1761503825366, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!A28WL9E2lJ3iLZHW.Z2p00q5h6x6seXys" } @@ -152,12 +163,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753796968563, - "modifiedTime": 1753797012196, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430492843, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!A28WL9E2lJ3iLZHW" } diff --git a/src/packs/items/weapons/weapon_Legendary_Scepter_IZ4CWNxfuM46JeCN.json b/src/packs/items/weapons/weapon_Legendary_Scepter_IZ4CWNxfuM46JeCN.json index 92d9b49c..afb3ef97 100644 --- a/src/packs/items/weapons/weapon_Legendary_Scepter_IZ4CWNxfuM46JeCN.json +++ b/src/packs/items/weapons/weapon_Legendary_Scepter_IZ4CWNxfuM46JeCN.json @@ -166,6 +166,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -179,12 +184,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835822353, - "modifiedTime": 1753835867763, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431483750, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!IZ4CWNxfuM46JeCN" } diff --git a/src/packs/items/weapons/weapon_Legendary_Shortbow_j7kp36jaetfn5jb3.json b/src/packs/items/weapons/weapon_Legendary_Shortbow_j7kp36jaetfn5jb3.json index 0cf8c3de..7e439d04 100644 --- a/src/packs/items/weapons/weapon_Legendary_Shortbow_j7kp36jaetfn5jb3.json +++ b/src/packs/items/weapons/weapon_Legendary_Shortbow_j7kp36jaetfn5jb3.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834834626, - "modifiedTime": 1753834854507, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431376890, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!j7kp36jaetfn5jb3" } diff --git a/src/packs/items/weapons/weapon_Legendary_Shortstaff_D3SbNvNJZAFuzfhg.json b/src/packs/items/weapons/weapon_Legendary_Shortstaff_D3SbNvNJZAFuzfhg.json index 9a3c1f13..44844553 100644 --- a/src/packs/items/weapons/weapon_Legendary_Shortstaff_D3SbNvNJZAFuzfhg.json +++ b/src/packs/items/weapons/weapon_Legendary_Shortstaff_D3SbNvNJZAFuzfhg.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835676579, - "modifiedTime": 1753835813150, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431489948, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!D3SbNvNJZAFuzfhg" } diff --git a/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json b/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json index 4c1a13a3..4e6ace3f 100644 --- a/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json +++ b/src/packs/items/weapons/weapon_Legendary_Shortsword_dEumq3BIZBk5xYTk.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [ @@ -161,9 +166,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753796913551, - "modifiedTime": 1755268362375, + "modifiedTime": 1755430497769, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!dEumq3BIZBk5xYTk" diff --git a/src/packs/items/weapons/weapon_Legendary_Small_Dagger_Px3Rh3kIvAqyISxJ.json b/src/packs/items/weapons/weapon_Legendary_Small_Dagger_Px3Rh3kIvAqyISxJ.json index 67d58df9..8381111e 100644 --- a/src/packs/items/weapons/weapon_Legendary_Small_Dagger_Px3Rh3kIvAqyISxJ.json +++ b/src/packs/items/weapons/weapon_Legendary_Small_Dagger_Px3Rh3kIvAqyISxJ.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [ @@ -161,9 +166,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753797057472, - "modifiedTime": 1755268370240, + "modifiedTime": 1755430502860, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Px3Rh3kIvAqyISxJ" diff --git a/src/packs/items/weapons/weapon_Legendary_Spear_4e5pWxi2qohuGsWh.json b/src/packs/items/weapons/weapon_Legendary_Spear_4e5pWxi2qohuGsWh.json index bfdcd4eb..1f76d2aa 100644 --- a/src/packs/items/weapons/weapon_Legendary_Spear_4e5pWxi2qohuGsWh.json +++ b/src/packs/items/weapons/weapon_Legendary_Spear_4e5pWxi2qohuGsWh.json @@ -92,48 +92,14 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, - "effects": [ - { - "name": "Cumbersome", - "description": "-1 to Finesse", - "img": "icons/commodities/metal/mail-plate-steel.webp", - "changes": [ - { - "key": "system.traits.finesse.value", - "mode": 2, - "value": "-1" - } - ], - "_id": "f44KWDgCQeKYfccr", - "type": "base", - "system": {}, - "disabled": false, - "duration": { - "startTime": null, - "combat": null - }, - "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": 1753834816288, - "modifiedTime": 1753834816288, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" - }, - "_key": "!items.effects!4e5pWxi2qohuGsWh.f44KWDgCQeKYfccr" - } - ], + "effects": [], "sort": 0, "ownership": { "default": 0, @@ -144,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834806427, - "modifiedTime": 1753834827595, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431384407, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!4e5pWxi2qohuGsWh" } diff --git a/src/packs/items/weapons/weapon_Legendary_Tower_Shield_MaJIROht7A9LxIZx.json b/src/packs/items/weapons/weapon_Legendary_Tower_Shield_MaJIROht7A9LxIZx.json index 7e62f1aa..39d7b7c5 100644 --- a/src/packs/items/weapons/weapon_Legendary_Tower_Shield_MaJIROht7A9LxIZx.json +++ b/src/packs/items/weapons/weapon_Legendary_Tower_Shield_MaJIROht7A9LxIZx.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753797026049, - "modifiedTime": 1753797043015, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430508197, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!MaJIROht7A9LxIZx" } diff --git a/src/packs/items/weapons/weapon_Legendary_Wand_wPjg0LufJH9vUfVM.json b/src/packs/items/weapons/weapon_Legendary_Wand_wPjg0LufJH9vUfVM.json index be8b131b..c58aab9e 100644 --- a/src/packs/items/weapons/weapon_Legendary_Wand_wPjg0LufJH9vUfVM.json +++ b/src/packs/items/weapons/weapon_Legendary_Wand_wPjg0LufJH9vUfVM.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835923888, - "modifiedTime": 1753835965485, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431495832, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!wPjg0LufJH9vUfVM" } diff --git a/src/packs/items/weapons/weapon_Legendary_Warhammer_W9ymfEDck2icfvla.json b/src/packs/items/weapons/weapon_Legendary_Warhammer_W9ymfEDck2icfvla.json index b449fca5..5970022d 100644 --- a/src/packs/items/weapons/weapon_Legendary_Warhammer_W9ymfEDck2icfvla.json +++ b/src/packs/items/weapons/weapon_Legendary_Warhammer_W9ymfEDck2icfvla.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834588280, - "modifiedTime": 1753834609113, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431389974, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!W9ymfEDck2icfvla" } diff --git a/src/packs/items/weapons/weapon_Legendary_Whip_Wcdbf6yS3LEt7nsg.json b/src/packs/items/weapons/weapon_Legendary_Whip_Wcdbf6yS3LEt7nsg.json index b4b8bf02..736db796 100644 --- a/src/packs/items/weapons/weapon_Legendary_Whip_Wcdbf6yS3LEt7nsg.json +++ b/src/packs/items/weapons/weapon_Legendary_Whip_Wcdbf6yS3LEt7nsg.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753797101746, - "modifiedTime": 1753808440137, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430513049, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Wcdbf6yS3LEt7nsg" } diff --git a/src/packs/items/weapons/weapon_Light_Frame_Wheelchair_iaGnlUkShBgdeMo0.json b/src/packs/items/weapons/weapon_Light_Frame_Wheelchair_iaGnlUkShBgdeMo0.json index 9bb97d2b..72aa2931 100644 --- a/src/packs/items/weapons/weapon_Light_Frame_Wheelchair_iaGnlUkShBgdeMo0.json +++ b/src/packs/items/weapons/weapon_Light_Frame_Wheelchair_iaGnlUkShBgdeMo0.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 54, + "artist": "" } }, "effects": [], @@ -145,10 +149,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836579296, - "modifiedTime": 1754846015528, - "lastModifiedBy": "H02dtt2xvVJvYESk" + "modifiedTime": 1755430218981, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!iaGnlUkShBgdeMo0" } diff --git a/src/packs/items/weapons/weapon_Longbow_YfVs6Se903az4Yet.json b/src/packs/items/weapons/weapon_Longbow_YfVs6Se903az4Yet.json index e20f9111..39a0582f 100644 --- a/src/packs/items/weapons/weapon_Longbow_YfVs6Se903az4Yet.json +++ b/src/packs/items/weapons/weapon_Longbow_YfVs6Se903az4Yet.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828135552, - "modifiedTime": 1753828159427, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430591132, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!YfVs6Se903az4Yet" } diff --git a/src/packs/items/weapons/weapon_Longsword_Iv8BZM1R24QMT72M.json b/src/packs/items/weapons/weapon_Longsword_Iv8BZM1R24QMT72M.json index c5d9070b..b58eb1d5 100644 --- a/src/packs/items/weapons/weapon_Longsword_Iv8BZM1R24QMT72M.json +++ b/src/packs/items/weapons/weapon_Longsword_Iv8BZM1R24QMT72M.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753827769163, - "modifiedTime": 1753827781183, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430596498, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Iv8BZM1R24QMT72M" } diff --git a/src/packs/items/weapons/weapon_Mace_cKQCDyM2UopDL9zF.json b/src/packs/items/weapons/weapon_Mace_cKQCDyM2UopDL9zF.json index 529e3874..f074eaba 100644 --- a/src/packs/items/weapons/weapon_Mace_cKQCDyM2UopDL9zF.json +++ b/src/packs/items/weapons/weapon_Mace_cKQCDyM2UopDL9zF.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753827843717, - "modifiedTime": 1753827858825, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430601987, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!cKQCDyM2UopDL9zF" } diff --git a/src/packs/items/weapons/weapon_Mage_Orb_XKBmBUEoGLdLcuqQ.json b/src/packs/items/weapons/weapon_Mage_Orb_XKBmBUEoGLdLcuqQ.json index f609e409..27725351 100644 --- a/src/packs/items/weapons/weapon_Mage_Orb_XKBmBUEoGLdLcuqQ.json +++ b/src/packs/items/weapons/weapon_Mage_Orb_XKBmBUEoGLdLcuqQ.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753834259866, - "modifiedTime": 1753834310221, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431242468, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!XKBmBUEoGLdLcuqQ" } diff --git a/src/packs/items/weapons/weapon_Magus_Revolver_jGykNGQiKm63tCiE.json b/src/packs/items/weapons/weapon_Magus_Revolver_jGykNGQiKm63tCiE.json index daa68be1..9f46d9be 100644 --- a/src/packs/items/weapons/weapon_Magus_Revolver_jGykNGQiKm63tCiE.json +++ b/src/packs/items/weapons/weapon_Magus_Revolver_jGykNGQiKm63tCiE.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836385650, - "modifiedTime": 1753836419000, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431501404, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!jGykNGQiKm63tCiE" } diff --git a/src/packs/items/weapons/weapon_Meridian_Cutlass_Gi26Zk9VqlAAgx3E.json b/src/packs/items/weapons/weapon_Meridian_Cutlass_Gi26Zk9VqlAAgx3E.json index e7809a76..d92bc921 100644 --- a/src/packs/items/weapons/weapon_Meridian_Cutlass_Gi26Zk9VqlAAgx3E.json +++ b/src/packs/items/weapons/weapon_Meridian_Cutlass_Gi26Zk9VqlAAgx3E.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832261628, - "modifiedTime": 1753832286780, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431117685, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Gi26Zk9VqlAAgx3E" } diff --git a/src/packs/items/weapons/weapon_Midas_Scythe_BdLfy5i488VZgkjP.json b/src/packs/items/weapons/weapon_Midas_Scythe_BdLfy5i488VZgkjP.json index 420f28b8..bd682fac 100644 --- a/src/packs/items/weapons/weapon_Midas_Scythe_BdLfy5i488VZgkjP.json +++ b/src/packs/items/weapons/weapon_Midas_Scythe_BdLfy5i488VZgkjP.json @@ -129,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [ @@ -181,12 +186,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836123608, - "modifiedTime": 1753836160033, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431507969, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!BdLfy5i488VZgkjP" } diff --git a/src/packs/items/weapons/weapon_Parrying_Dagger_taAZDkDCpeNgxhnn.json b/src/packs/items/weapons/weapon_Parrying_Dagger_taAZDkDCpeNgxhnn.json index c4a796a7..05b1f08b 100644 --- a/src/packs/items/weapons/weapon_Parrying_Dagger_taAZDkDCpeNgxhnn.json +++ b/src/packs/items/weapons/weapon_Parrying_Dagger_taAZDkDCpeNgxhnn.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753794685727, - "modifiedTime": 1753794748494, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430370186, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!taAZDkDCpeNgxhnn" } diff --git a/src/packs/items/weapons/weapon_Powered_Gauntlet_bW3xw5S9DbaLCN3E.json b/src/packs/items/weapons/weapon_Powered_Gauntlet_bW3xw5S9DbaLCN3E.json index 417fae15..f75537d3 100644 --- a/src/packs/items/weapons/weapon_Powered_Gauntlet_bW3xw5S9DbaLCN3E.json +++ b/src/packs/items/weapons/weapon_Powered_Gauntlet_bW3xw5S9DbaLCN3E.json @@ -22,7 +22,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -137,6 +136,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [ @@ -189,12 +193,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753796723376, - "modifiedTime": 1753808423862, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430461362, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!bW3xw5S9DbaLCN3E" } diff --git a/src/packs/items/weapons/weapon_Primer_Shard_SxcblanBvqaest3A.json b/src/packs/items/weapons/weapon_Primer_Shard_SxcblanBvqaest3A.json index e3dd3035..d6c5b2cb 100644 --- a/src/packs/items/weapons/weapon_Primer_Shard_SxcblanBvqaest3A.json +++ b/src/packs/items/weapons/weapon_Primer_Shard_SxcblanBvqaest3A.json @@ -123,6 +123,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 53, + "artist": "" } }, "effects": [], @@ -138,10 +143,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753797317938, - "modifiedTime": 1754814518028, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755430518095, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!SxcblanBvqaest3A" } diff --git a/src/packs/items/weapons/weapon_Quarterstaff_mlIj88p1wcQNjEDG.json b/src/packs/items/weapons/weapon_Quarterstaff_mlIj88p1wcQNjEDG.json index 7526e8c1..2f6fcbb9 100644 --- a/src/packs/items/weapons/weapon_Quarterstaff_mlIj88p1wcQNjEDG.json +++ b/src/packs/items/weapons/weapon_Quarterstaff_mlIj88p1wcQNjEDG.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753827915482, - "modifiedTime": 1753827935877, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430606837, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!mlIj88p1wcQNjEDG" } diff --git a/src/packs/items/weapons/weapon_Rapier_zkAgEW6zMkRZalEm.json b/src/packs/items/weapons/weapon_Rapier_zkAgEW6zMkRZalEm.json index 01e1cbf2..7b6129ce 100644 --- a/src/packs/items/weapons/weapon_Rapier_zkAgEW6zMkRZalEm.json +++ b/src/packs/items/weapons/weapon_Rapier_zkAgEW6zMkRZalEm.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753827969157, - "modifiedTime": 1753827996285, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430611691, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!zkAgEW6zMkRZalEm" } diff --git a/src/packs/items/weapons/weapon_Retractable_Saber_i8CqVTzqoRoCewNe.json b/src/packs/items/weapons/weapon_Retractable_Saber_i8CqVTzqoRoCewNe.json index 350d8b4f..fd0b1900 100644 --- a/src/packs/items/weapons/weapon_Retractable_Saber_i8CqVTzqoRoCewNe.json +++ b/src/packs/items/weapons/weapon_Retractable_Saber_i8CqVTzqoRoCewNe.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832298659, - "modifiedTime": 1753832323983, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431122548, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!i8CqVTzqoRoCewNe" } diff --git a/src/packs/items/weapons/weapon_Returning_Axe_FtsQGwOg3r8uUCST.json b/src/packs/items/weapons/weapon_Returning_Axe_FtsQGwOg3r8uUCST.json index 5fcd1214..5884b401 100644 --- a/src/packs/items/weapons/weapon_Returning_Axe_FtsQGwOg3r8uUCST.json +++ b/src/packs/items/weapons/weapon_Returning_Axe_FtsQGwOg3r8uUCST.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753794760906, - "modifiedTime": 1753794803866, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430383420, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!FtsQGwOg3r8uUCST" } diff --git a/src/packs/items/weapons/weapon_Returning_Blade_4fQpVfQ3NVwTHStA.json b/src/packs/items/weapons/weapon_Returning_Blade_4fQpVfQ3NVwTHStA.json index e20c840e..1d6d48e9 100644 --- a/src/packs/items/weapons/weapon_Returning_Blade_4fQpVfQ3NVwTHStA.json +++ b/src/packs/items/weapons/weapon_Returning_Blade_4fQpVfQ3NVwTHStA.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828345143, - "modifiedTime": 1753828368281, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430673452, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!4fQpVfQ3NVwTHStA" } diff --git a/src/packs/items/weapons/weapon_Ricochet_Axes_E9QDh5o9eQ1Qx0kH.json b/src/packs/items/weapons/weapon_Ricochet_Axes_E9QDh5o9eQ1Qx0kH.json index 9c71aa5c..c00a90b6 100644 --- a/src/packs/items/weapons/weapon_Ricochet_Axes_E9QDh5o9eQ1Qx0kH.json +++ b/src/packs/items/weapons/weapon_Ricochet_Axes_E9QDh5o9eQ1Qx0kH.json @@ -19,8 +19,7 @@ "key": "stress", "value": 1, "scalable": true, - "step": 1, - "keyIsID": false + "step": 1 } ], "_id": "x9cz8u1utQ6DtoKA", @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835247877, - "modifiedTime": 1753835276839, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431395791, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!E9QDh5o9eQ1Qx0kH" } diff --git a/src/packs/items/weapons/weapon_Round_Shield_mxwWKDujgsRcZWPT.json b/src/packs/items/weapons/weapon_Round_Shield_mxwWKDujgsRcZWPT.json index c49aa7dd..c0f32445 100644 --- a/src/packs/items/weapons/weapon_Round_Shield_mxwWKDujgsRcZWPT.json +++ b/src/packs/items/weapons/weapon_Round_Shield_mxwWKDujgsRcZWPT.json @@ -100,18 +100,24 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [ { "name": "Protective", - "description": "Add your character's Tier to your Armor Score", + "description": "

Add the item's Tier to your Armor Score

", "img": "icons/skills/melee/shield-block-gray-orange.webp", "changes": [ { "key": "system.armorScore", "mode": 2, - "value": "ITEM.@system.tier" + "value": "ITEM.@system.tier", + "priority": null } ], "_id": "M70a81e0Mg66jHRL", @@ -120,7 +126,12 @@ "disabled": false, "duration": { "startTime": null, - "combat": null + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null }, "origin": null, "tint": "#ffffff", @@ -132,12 +143,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1753794114980, - "modifiedTime": 1753794114980, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1761503774632, + "lastModifiedBy": "fBcTgyTzoARBvohY" }, "_key": "!items.effects!mxwWKDujgsRcZWPT.M70a81e0Mg66jHRL" } @@ -152,12 +163,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753742068200, - "modifiedTime": 1753794114990, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430279232, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!mxwWKDujgsRcZWPT" } diff --git a/src/packs/items/weapons/weapon_Runes_of_Ruination_EG6mZhr3ib56r974.json b/src/packs/items/weapons/weapon_Runes_of_Ruination_EG6mZhr3ib56r974.json index ce7fe3bc..533f7ca9 100644 --- a/src/packs/items/weapons/weapon_Runes_of_Ruination_EG6mZhr3ib56r974.json +++ b/src/packs/items/weapons/weapon_Runes_of_Ruination_EG6mZhr3ib56r974.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833802007, - "modifiedTime": 1753833831195, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431248793, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!EG6mZhr3ib56r974" } diff --git a/src/packs/items/weapons/weapon_Scepter_GZh345N8fmuS4Jeh.json b/src/packs/items/weapons/weapon_Scepter_GZh345N8fmuS4Jeh.json index c7a686e7..a4393081 100644 --- a/src/packs/items/weapons/weapon_Scepter_GZh345N8fmuS4Jeh.json +++ b/src/packs/items/weapons/weapon_Scepter_GZh345N8fmuS4Jeh.json @@ -166,6 +166,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -179,12 +184,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828453134, - "modifiedTime": 1753835916388, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430678619, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!GZh345N8fmuS4Jeh" } diff --git a/src/packs/items/weapons/weapon_Scepter_of_Elias_acPGwIaUhx3R0mTq.json b/src/packs/items/weapons/weapon_Scepter_of_Elias_acPGwIaUhx3R0mTq.json index 4348fbee..0c95d62e 100644 --- a/src/packs/items/weapons/weapon_Scepter_of_Elias_acPGwIaUhx3R0mTq.json +++ b/src/packs/items/weapons/weapon_Scepter_of_Elias_acPGwIaUhx3R0mTq.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831343009, - "modifiedTime": 1753831365565, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430946684, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!acPGwIaUhx3R0mTq" } diff --git a/src/packs/items/weapons/weapon_Shortbow_p9tdjQr2AZP19RYm.json b/src/packs/items/weapons/weapon_Shortbow_p9tdjQr2AZP19RYm.json index 424f762d..70b697e6 100644 --- a/src/packs/items/weapons/weapon_Shortbow_p9tdjQr2AZP19RYm.json +++ b/src/packs/items/weapons/weapon_Shortbow_p9tdjQr2AZP19RYm.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828079904, - "modifiedTime": 1753828100575, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430616717, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!p9tdjQr2AZP19RYm" } diff --git a/src/packs/items/weapons/weapon_Shortstaff_vHDHG3STcxTEfYAM.json b/src/packs/items/weapons/weapon_Shortstaff_vHDHG3STcxTEfYAM.json index ed9f9492..73f7985a 100644 --- a/src/packs/items/weapons/weapon_Shortstaff_vHDHG3STcxTEfYAM.json +++ b/src/packs/items/weapons/weapon_Shortstaff_vHDHG3STcxTEfYAM.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828380553, - "modifiedTime": 1753828404541, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430683436, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!vHDHG3STcxTEfYAM" } diff --git a/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json b/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json index 8e1c9d03..05f355eb 100644 --- a/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json +++ b/src/packs/items/weapons/weapon_Shortsword_cjGZpXCoshEqi1FI.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [ @@ -167,9 +172,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753741549716, - "modifiedTime": 1755268286538, + "modifiedTime": 1755430284749, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!cjGZpXCoshEqi1FI" diff --git a/src/packs/items/weapons/weapon_Siphoning_Gauntlets_1N1jggda5DfdzdMj.json b/src/packs/items/weapons/weapon_Siphoning_Gauntlets_1N1jggda5DfdzdMj.json index fcadecf6..34159ba9 100644 --- a/src/packs/items/weapons/weapon_Siphoning_Gauntlets_1N1jggda5DfdzdMj.json +++ b/src/packs/items/weapons/weapon_Siphoning_Gauntlets_1N1jggda5DfdzdMj.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836075703, - "modifiedTime": 1753836131553, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431513330, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!1N1jggda5DfdzdMj" } diff --git a/src/packs/items/weapons/weapon_Sledge_Axe_OxsEmffWriiQmqJK.json b/src/packs/items/weapons/weapon_Sledge_Axe_OxsEmffWriiQmqJK.json index b37a1027..ab3945ae 100644 --- a/src/packs/items/weapons/weapon_Sledge_Axe_OxsEmffWriiQmqJK.json +++ b/src/packs/items/weapons/weapon_Sledge_Axe_OxsEmffWriiQmqJK.json @@ -155,6 +155,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [ @@ -207,12 +212,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835064119, - "modifiedTime": 1753835089195, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431401912, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!OxsEmffWriiQmqJK" } diff --git a/src/packs/items/weapons/weapon_Small_Dagger_wKklDxs5nkzILNp4.json b/src/packs/items/weapons/weapon_Small_Dagger_wKklDxs5nkzILNp4.json index 1a11cab5..e824ea75 100644 --- a/src/packs/items/weapons/weapon_Small_Dagger_wKklDxs5nkzILNp4.json +++ b/src/packs/items/weapons/weapon_Small_Dagger_wKklDxs5nkzILNp4.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [ @@ -161,9 +166,9 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.4", + "systemVersion": "1.0.5", "createdTime": 1753744141625, - "modifiedTime": 1755268300204, + "modifiedTime": 1755430291284, "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!wKklDxs5nkzILNp4" diff --git a/src/packs/items/weapons/weapon_Spear_TF85tKJetUjLwh54.json b/src/packs/items/weapons/weapon_Spear_TF85tKJetUjLwh54.json index 77ba9a93..2432a75b 100644 --- a/src/packs/items/weapons/weapon_Spear_TF85tKJetUjLwh54.json +++ b/src/packs/items/weapons/weapon_Spear_TF85tKJetUjLwh54.json @@ -92,48 +92,14 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, - "effects": [ - { - "name": "Cumbersome", - "description": "-1 to Finesse", - "img": "icons/commodities/metal/mail-plate-steel.webp", - "changes": [ - { - "key": "system.traits.finesse.value", - "mode": 2, - "value": "-1" - } - ], - "_id": "Z5MnVI8EOOgzRdXC", - "type": "base", - "system": {}, - "disabled": false, - "duration": { - "startTime": null, - "combat": null - }, - "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": 1753828072355, - "modifiedTime": 1753828072355, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" - }, - "_key": "!items.effects!TF85tKJetUjLwh54.Z5MnVI8EOOgzRdXC" - } - ], + "effects": [], "sort": 0, "ownership": { "default": 0, @@ -144,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828035153, - "modifiedTime": 1753828072360, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430621466, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!TF85tKJetUjLwh54" } diff --git a/src/packs/items/weapons/weapon_Spiked_Bow_O1w8KPYH85ZS8X64.json b/src/packs/items/weapons/weapon_Spiked_Bow_O1w8KPYH85ZS8X64.json index f4f34d63..f3932e9c 100644 --- a/src/packs/items/weapons/weapon_Spiked_Bow_O1w8KPYH85ZS8X64.json +++ b/src/packs/items/weapons/weapon_Spiked_Bow_O1w8KPYH85ZS8X64.json @@ -164,6 +164,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -177,12 +182,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832511150, - "modifiedTime": 1753832558389, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431128203, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!O1w8KPYH85ZS8X64" } diff --git a/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json b/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json index 9b9d691a..29ff25a8 100644 --- a/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json +++ b/src/packs/items/weapons/weapon_Spiked_Shield_vzyzFwLUniWZV1rt.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [ @@ -166,10 +171,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753794535926, - "modifiedTime": 1754814481212, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755430389345, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!vzyzFwLUniWZV1rt" } diff --git a/src/packs/items/weapons/weapon_Steelforged_Halberd_6bkbw4Ap644KZGvJ.json b/src/packs/items/weapons/weapon_Steelforged_Halberd_6bkbw4Ap644KZGvJ.json index a7d7cd60..f869f8d2 100644 --- a/src/packs/items/weapons/weapon_Steelforged_Halberd_6bkbw4Ap644KZGvJ.json +++ b/src/packs/items/weapons/weapon_Steelforged_Halberd_6bkbw4Ap644KZGvJ.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829710295, - "modifiedTime": 1753829730643, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430825877, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!6bkbw4Ap644KZGvJ" } diff --git a/src/packs/items/weapons/weapon_Swinging_Ropeblade_1jOJHHKdtk3s2jaY.json b/src/packs/items/weapons/weapon_Swinging_Ropeblade_1jOJHHKdtk3s2jaY.json index 58d4a7c7..141d92c1 100644 --- a/src/packs/items/weapons/weapon_Swinging_Ropeblade_1jOJHHKdtk3s2jaY.json +++ b/src/packs/items/weapons/weapon_Swinging_Ropeblade_1jOJHHKdtk3s2jaY.json @@ -18,7 +18,6 @@ { "key": "hope", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 50, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753835178086, - "modifiedTime": 1753835227169, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431409725, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!1jOJHHKdtk3s2jaY" } diff --git a/src/packs/items/weapons/weapon_Sword_of_Light___Flame_TVPCWnSELOVBv6G1.json b/src/packs/items/weapons/weapon_Sword_of_Light___Flame_TVPCWnSELOVBv6G1.json index 7985574e..90a857ab 100644 --- a/src/packs/items/weapons/weapon_Sword_of_Light___Flame_TVPCWnSELOVBv6G1.json +++ b/src/packs/items/weapons/weapon_Sword_of_Light___Flame_TVPCWnSELOVBv6G1.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836015665, - "modifiedTime": 1753836060729, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431519254, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!TVPCWnSELOVBv6G1" } diff --git a/src/packs/items/weapons/weapon_Talon_Blades_jlLtgK468rO5IssR.json b/src/packs/items/weapons/weapon_Talon_Blades_jlLtgK468rO5IssR.json index fb6c6f98..c3a4c20c 100644 --- a/src/packs/items/weapons/weapon_Talon_Blades_jlLtgK468rO5IssR.json +++ b/src/packs/items/weapons/weapon_Talon_Blades_jlLtgK468rO5IssR.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 48, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753832378140, - "modifiedTime": 1753832420169, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431133663, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!jlLtgK468rO5IssR" } diff --git a/src/packs/items/weapons/weapon_Thistlebow_I1nDGpulg29GpWOW.json b/src/packs/items/weapons/weapon_Thistlebow_I1nDGpulg29GpWOW.json index cec5b0d1..5b370f70 100644 --- a/src/packs/items/weapons/weapon_Thistlebow_I1nDGpulg29GpWOW.json +++ b/src/packs/items/weapons/weapon_Thistlebow_I1nDGpulg29GpWOW.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [ @@ -161,10 +166,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753836302436, - "modifiedTime": 1754815251135, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755431525815, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!I1nDGpulg29GpWOW" } diff --git a/src/packs/items/weapons/weapon_Tower_Shield_C9aWpK1shVMWP4m5.json b/src/packs/items/weapons/weapon_Tower_Shield_C9aWpK1shVMWP4m5.json index 874dfc5f..850f79a6 100644 --- a/src/packs/items/weapons/weapon_Tower_Shield_C9aWpK1shVMWP4m5.json +++ b/src/packs/items/weapons/weapon_Tower_Shield_C9aWpK1shVMWP4m5.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [ @@ -157,12 +162,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753742294258, - "modifiedTime": 1753742986604, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430296399, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!C9aWpK1shVMWP4m5" } diff --git a/src/packs/items/weapons/weapon_Urok_Broadsword_zGm6Wa1fGF6cECY5.json b/src/packs/items/weapons/weapon_Urok_Broadsword_zGm6Wa1fGF6cECY5.json index b1fad87b..d971f0c5 100644 --- a/src/packs/items/weapons/weapon_Urok_Broadsword_zGm6Wa1fGF6cECY5.json +++ b/src/packs/items/weapons/weapon_Urok_Broadsword_zGm6Wa1fGF6cECY5.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753829648524, - "modifiedTime": 1753829674190, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430831515, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!zGm6Wa1fGF6cECY5" } diff --git a/src/packs/items/weapons/weapon_Wand_ItWisJFNGMNWeaCV.json b/src/packs/items/weapons/weapon_Wand_ItWisJFNGMNWeaCV.json index d990e614..e500c15f 100644 --- a/src/packs/items/weapons/weapon_Wand_ItWisJFNGMNWeaCV.json +++ b/src/packs/items/weapons/weapon_Wand_ItWisJFNGMNWeaCV.json @@ -92,6 +92,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [], @@ -105,12 +110,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753828516647, - "modifiedTime": 1753828537368, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430688603, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ItWisJFNGMNWeaCV" } diff --git a/src/packs/items/weapons/weapon_Wand_of_Enthrallment_tP6vmnrmTq2h5sj7.json b/src/packs/items/weapons/weapon_Wand_of_Enthrallment_tP6vmnrmTq2h5sj7.json index 46471b7f..425c9ea1 100644 --- a/src/packs/items/weapons/weapon_Wand_of_Enthrallment_tP6vmnrmTq2h5sj7.json +++ b/src/packs/items/weapons/weapon_Wand_of_Enthrallment_tP6vmnrmTq2h5sj7.json @@ -22,7 +22,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -137,6 +136,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [ @@ -189,12 +193,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831377291, - "modifiedTime": 1753831408550, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430952360, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!tP6vmnrmTq2h5sj7" } diff --git a/src/packs/items/weapons/weapon_Wand_of_Essek_ZrRGNjGCgZTTfgDG.json b/src/packs/items/weapons/weapon_Wand_of_Essek_ZrRGNjGCgZTTfgDG.json index 76b82f6a..3fbea383 100644 --- a/src/packs/items/weapons/weapon_Wand_of_Essek_ZrRGNjGCgZTTfgDG.json +++ b/src/packs/items/weapons/weapon_Wand_of_Essek_ZrRGNjGCgZTTfgDG.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 51, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753836344144, - "modifiedTime": 1753836369996, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431531704, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ZrRGNjGCgZTTfgDG" } diff --git a/src/packs/items/weapons/weapon_War_Scythe_z6yEdFYQJ5IzgTX3.json b/src/packs/items/weapons/weapon_War_Scythe_z6yEdFYQJ5IzgTX3.json index 5d65a310..2db63c9d 100644 --- a/src/packs/items/weapons/weapon_War_Scythe_z6yEdFYQJ5IzgTX3.json +++ b/src/packs/items/weapons/weapon_War_Scythe_z6yEdFYQJ5IzgTX3.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 46, + "artist": "" } }, "effects": [ @@ -161,10 +166,10 @@ "exportSource": null, "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "1.0.0", + "systemVersion": "1.0.5", "createdTime": 1753829740082, - "modifiedTime": 1754814992370, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755430838534, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!z6yEdFYQJ5IzgTX3" } diff --git a/src/packs/items/weapons/weapon_Warhammer_ZXh1GQahBiODfSTC.json b/src/packs/items/weapons/weapon_Warhammer_ZXh1GQahBiODfSTC.json index 0804236c..7668ae21 100644 --- a/src/packs/items/weapons/weapon_Warhammer_ZXh1GQahBiODfSTC.json +++ b/src/packs/items/weapons/weapon_Warhammer_ZXh1GQahBiODfSTC.json @@ -100,6 +100,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 45, + "artist": "" } }, "effects": [ @@ -152,12 +157,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753827866228, - "modifiedTime": 1753827888903, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430626466, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!ZXh1GQahBiODfSTC" } diff --git a/src/packs/items/weapons/weapon_Whip_CmtWqw6DwoePnX7W.json b/src/packs/items/weapons/weapon_Whip_CmtWqw6DwoePnX7W.json index b354f5f4..36490a5d 100644 --- a/src/packs/items/weapons/weapon_Whip_CmtWqw6DwoePnX7W.json +++ b/src/packs/items/weapons/weapon_Whip_CmtWqw6DwoePnX7W.json @@ -18,7 +18,6 @@ { "key": "stress", "value": 1, - "keyIsID": false, "scalable": false, "step": null } @@ -130,6 +129,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 52, + "artist": "" } }, "effects": [], @@ -143,12 +147,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753744226240, - "modifiedTime": 1753808365384, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430301656, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!CmtWqw6DwoePnX7W" } diff --git a/src/packs/items/weapons/weapon_Widogast_Pendant_8Z5QrThfwkYPXNco.json b/src/packs/items/weapons/weapon_Widogast_Pendant_8Z5QrThfwkYPXNco.json index 743aef06..bc8dea0d 100644 --- a/src/packs/items/weapons/weapon_Widogast_Pendant_8Z5QrThfwkYPXNco.json +++ b/src/packs/items/weapons/weapon_Widogast_Pendant_8Z5QrThfwkYPXNco.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 49, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753833840059, - "modifiedTime": 1753833870464, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755431254653, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!8Z5QrThfwkYPXNco" } diff --git a/src/packs/items/weapons/weapon_Yutari_Bloodbow_0XpSBYXxtywvBFQi.json b/src/packs/items/weapons/weapon_Yutari_Bloodbow_0XpSBYXxtywvBFQi.json index f096cbc4..79ec0577 100644 --- a/src/packs/items/weapons/weapon_Yutari_Bloodbow_0XpSBYXxtywvBFQi.json +++ b/src/packs/items/weapons/weapon_Yutari_Bloodbow_0XpSBYXxtywvBFQi.json @@ -122,6 +122,11 @@ "trait": null } } + }, + "attribution": { + "source": "Daggerheart SRD", + "page": 47, + "artist": "" } }, "effects": [], @@ -135,12 +140,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1753831267751, - "modifiedTime": 1753831296579, - "lastModifiedBy": "FecEtPuoQh6MpjQ0" + "modifiedTime": 1755430958208, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!0XpSBYXxtywvBFQi" } diff --git a/src/packs/journals/journal_Daggerheart_SRD_uNs7ne9VCbbu5dcG.json b/src/packs/journals/journal_Daggerheart_SRD_uNs7ne9VCbbu5dcG.json index ece610c0..a1bc9f84 100644 --- a/src/packs/journals/journal_Daggerheart_SRD_uNs7ne9VCbbu5dcG.json +++ b/src/packs/journals/journal_Daggerheart_SRD_uNs7ne9VCbbu5dcG.json @@ -125,7 +125,7 @@ "image": {}, "text": { "format": 1, - "content": "

FLOW OF THE GAME

Daggerheart is a conversation. The GM describes fictional scenarios involving the PCs, and the players take turns describing how their characters react. The goal of every person at the table is to build upon everyone else’s ideas and collaboratively tell a satisfying story. The system facilitates this collaborative process by providing structure to the conversation and mechanics for resolving moments of tension where fate or fortune determine the outcome of events.

PLAYER PRINCIPLES & BEST PRACTICES

To get the most out of Daggerheart, we recommend players keep the following principles and practices in mind throughout each session:

PRINCIPLES

  • Be a fan of your character and their journey.

  • Spotlight your friends.

  • Address the characters and address the players.

  • Build the world together.

  • Play to find out what happens.

  • Hold on gently.

BEST PRACTICES

  • Embrace danger.

  • Use your resources.

  • Tell the story.

  • Discover your character.

For more information, see the Daggerheart Core Rulebook, pages 9 and 108.

CORE GAMEPLAY LOOP

The core gameplay loop is the procedure that drives every scene, both in and out of combat:

STEP 1: SET THE SCENE

The GM describes a scenario, establishing the PCs’ surroundings and any dangers, NPCs, or other important details the characters would notice.

STEP 2: ASK AND ANSWER QUESTIONS

The players ask clarifying questions to explore the scene more deeply and gather information that could inform their characters’ actions. The GM responds to these questions by giving the players information their characters could easily obtain, or by asking questions of their own to the players. The players also respond to any questions the GM poses to them.

In this way, the table builds out the fiction collaboratively.

STEP 3: BUILD ON THE FICTION

As the scene develops, the players find opportunities to take actionβ€”problems to solve, obstacles to overcome, mysteries to investigate, and so on. The players describe how their characters proceed; if their proposed actions carry no chance of failure (or if failure would be boring), they automatically succeed. But if the outcome of their action is unknown, the GM calls for an action roll. Either way, the table works the outcome into the story and moves the fiction forward, narrating how the PC’s actions have changed things.

STEP 4: GO BACK TO STEP 1

The process repeats from the beginning, with the GM relaying any updated details or material changes to the players. This process continues until the end of the scene is triggered by a mechanic or arrives organically.

THE SPORLIGHT

The spotlight is a symbol that represents the table’s attentionβ€”and therefore the immediate focus of both the narrative and the game mechanics. Any time a character or player becomes the focus of a scene, they β€œare in the spotlight” or β€œhave the spotlight.”

The spotlight moves around the table organically as scenes unfold unless a mechanical trigger determines where the spotlight goes next. For example, when a player fails an action roll, the mechanics prompt the GM to seize the spotlight and make a GM move.

TURN ORDER & ACTION ECONOMY

Daggerheart’s turns don’t follow a traditional, rigid format:
there is no explicit initiative mechanic and characters don’t have a set number of actions they can take or things they can do before the spotlight passes to someone else. A player with the spotlight describes what their character does and the spotlight simply swings to whoever:

  1. the fiction would naturally turn it toward

  2. hasn’t had the focus in a while, or

  3. a triggered mechanic puts it on


Optional: Spotlight Tracker Tool

If your group prefers a more traditional action economy, you can use tokens to track how many times a player has had the spotlight: At the start of a session or scene, each player adds a certain number of tokens (we recommend 3) to their character sheet and removes a token each time they take an action. If the spotlight would swing to someone without any tokens, it swings to someone else instead. Once every player has used all their available tokens, players refill their character sheet with the same number of tokens as before, then continue playing.


MAKING MOVES & TAKING ACTION

Any time a character does something to advance the story, such as speaking with another character, interacting with the environment, making an attack, casting a spell, or using a class feature, they are making a move.

ACTION ROLLS

Any move where success would be trivial or failure would be boring automatically succeeds, but any move that’s difficult to accomplish or risky to attempt triggers an action roll.

OVERVIEW

All action rolls require a pair of d12s called Duality Dice.

These are two visually distinct twelve-sided dice, with one die representing Hope and the other representing Fear.

To make an action roll, you roll the Duality Dice, sum the results, apply any relevant modifiers, and compare the total to a Difficulty number to determine the outcome:

  • Success with Hope: If your total meets or beats the difficulty AND your Hope Die shows a higher result than your Fear Die, you rolled a β€œSuccess with Hope.” You succeed and gain a Hope.

  • Success with Fear: If your total meets or beats the Difficulty AND your Fear Die shows a higher result than your Hope Die, you rolled a β€œSuccess with Fear.” You succeed with a cost or complication, but the GM gains a Fear.

  • Failure with Hope: If your total is less than the Difficulty AND your Hope Die shows a higher result than your Fear Die, you rolled a β€œFailure with Hope.” You fail with a minor consequence and gain a Hope, then the spotlight swings to the GM.

  • Failure with Fear: If your total is less than the Difficulty AND your Fear Die shows a higher result than your Hope Die, you rolled a β€œFailure with Fear.” You fail with a major consequence and the GM gains a Fear, then the spotlight swings to the GM.

  • Critical Success: If the Duality Dice show matching results, you rolled a β€œCritical Success” (β€œCrit”). You automatically succeed with a bonus, gain a Hope, and clear a Stress. If this was an attack roll, you deal critical damage.

Note: A Critical Success counts as a roll β€œwith Hope.”

After resolving the action roll, the table works together to weave the outcome into the narrative and play continues.

FAILING FORWARD

In Daggerheart, every time you roll the dice, the scene changes in some way. There is no such thing as a roll where β€œnothing happens,” because the fiction constantly evolves based on the successes and failures of the characters.

PROCEDURE

The following steps describe in more detail the procedure that all action rolls utilize:

STEP 1: PICK AN APPROPRIATE TRAIT

Some actions and effects specify in their description which trait applies to the roll; otherwise, the GM tells the acting player which character trait best applies to the action being attempted. If more than one trait could apply to the roll, the GM chooses or lets the acting player decide.

STEP 2: DETERMINE THE DIFFICULTY

Some actions and features say in their description what the Difficulty is. Otherwise, the GM determines the Difficulty based on the scenario. The GM can choose whether to share the Difficulty with the table. In either case, the GM should communicate the potential consequences of failure to the acting player.

STEP 3: APPLY EXTRA DICE AND MODIFIERS

The acting player decides whether to Utilize an Experience or activate other effects, then, if applicable, adds the appropriate tokens and dice (such as advantage or Rally dice) to their dice pool.


Note: Unless an action, ability, or feature specifically allows for it, a player must declare the use of any Experiences, extra dice, or other modifiers before they roll.


STEP 4: ROLL THE DICE

The acting player rolls their entire dice pool and announces the results in the format of β€œ[total result] with [Hope/Fear]”— or β€œCritical Success!” in the case of matching Duality Dice.


Example: A player is making an action roll with a +1 in the relevant trait and no other modifiers; they roll the Duality Dice and get a result of 5 on their Hope Die and 7 on their Fear Die, then announce β€œI rolled a 13 with Fear!”


STEP 5: RESOLVE THE OUTCOME

The active player and the GM work together, along with the suggestions and support of the rest of the table, to resolve the outcome of the action.

GM MOVES AND ADVERSARY ACTIONS

GMs also make moves. They should consider making a move when a player does one of the following things:

  • Rolls with Fear on an action roll.

  • Fails an action roll.

  • Does something that would have consequences.

  • Gives them a golden opportunity.

  • Looks to them for what happens next.

After the GM turn is done, the spotlight goes back to the PCs.

Many adversaries and environments have Fear Features, especially powerful or consequential moves that the GM must spend Fear to activate.


Note: This Fear is in addition to any Fear the GM has previously spent to seize the spotlight or activate another action or ability.


ADVERSARY ACTIONS

When play passes to the GM, the GM can make a GM move to spotlight an adversary. A spotlighted adversary can:

  • Move within Close range and make a standard attack

  • Move within Close range and use an adversary action

  • Clear a condition

  • Sprint within Far or Very Far range on the battlefield

  • Do anything else the fiction demands or the GM deems appropriate

The GM can spend additional Fear to spotlight additional adversaries. Once the GM has finished, the spotlight swings back to the PCs.

SPECIAL ROLLS

Some rolls have unique specifications or otherwise modify the action roll procedure: trait rolls, Spellcast Rolls, attack rolls, and damage rolls. Unless otherwise noted, you can apply any bonus, modifier, or effect to a special roll as if it were a standard action roll.

TRAIT ROLLS

An action roll that specifies which character trait applies to it is called a trait roll. In the text of a feature or effect, a trait roll is referenced with the format β€œ[Trait] Roll (Difficulty)” (e.g., β€œAgility Roll (12)”). If the text of an effect doesn’t specify a trait roll’s Difficulty, the GM sets the Difficulty based on the circumstances.

Features and effects that affect a trait roll also affect any action roll that uses the same trait, including attack rolls, Spellcast rolls, and standard action rolls.


Example: The katari’s ancestry feature β€œFeline Instincts,” which allows the katari to reroll an Agility Roll, can also be used on a standard action roll using Agility to traverse dangerous terrain or on an attack roll made with a weapon that uses Agility.


SPELLCAST ROLLS

Spellcast Rolls are trait rolls that require you to use your Spellcast trait. Your Spellcast trait, if you have one, is determined by your subclass.

Spellcast Rolls are only made when a character uses a feature that requires one. A successful Spellcast Roll activates the effect as described by the feature.


Notes: A Spellcast Roll that can damage a target is also considered an attack roll.

When you cast a spell, the text tells you when the effect ends. The GM can spend a Fear to end a temporary effect. If your spell doesn’t specify when it ends, it ends when you choose or at a natural moment of the story. You can choose to end your spell early.

You can cast and maintain the effects of more than one spell at the same time.


REACTION ROLLS

A reaction roll is made in response to an attack or a hazard, representing a character’s attempt to avoid or withstand an imminent effect.

Reaction rolls work like action rolls, except they don’t generate Hope or Fear, don’t trigger additional GM moves, and other characters can’t aid you with Help an Ally.

If you critically succeed on a reaction roll, you don’t clear a Stress or gain a Hope, but you do ignore any effects that would have impacted you on a success, such as taking damage or marking Stress.

GROUP ACTION ROLLS

When multiple PCs take action together, the party chooses one PC to lead the action. Each other player then describes how their character collaborates on the task. The leader makes an action roll as usual, while the other players make reaction rolls using whichever traits they and the GM decide fit best.

The lead character gains a +1 bonus to their lead action roll for each of these reaction rolls that succeeded and a βˆ’1 penalty for each these reaction rolls that failed.

TAG TEAM ROLLS

Each player can, once per session, initiate a Tag Team Roll between their character and another PC by spending 3 Hope. The players work with one another to describe how they combine their actions in a unique and exciting way. Both players make separate action rolls; before resolving the roll’s outcome, choose one of the rolls to apply to both actions. On a roll with Hope, all PCs involved gain a Hope. On a roll with Fear, the GM gains a Fear token for each PC involved.

On a successful Tag Team attack roll, both players roll damage and add the totals together to determine the damage dealt, which is then treated as if it came from a single source. If the attacks deal different types of damage, the players choose which type to deal.


Notes:

A Tag Team Roll counts as a single action roll for the purposes of any countdowns or features that track action rolls.

Though each player may only initiate one Tag Team Roll per session, one PC can be involved in multiple Tag Team Rolls.


ADVANTAGE & DISADVANTAGE

Some features and effects let you roll with advantage or disadvantage on an action or reaction roll:

  • Advantage represents an opportunity that you seize to increase your chances of success. When you roll with advantage, you roll a d6 advantage die with your dice pool and add its result to your total.

  • Disadvantage represents an additional difficulty, hardship, or challenge you face when attempting an action. When you roll with disadvantage, you roll a d6 disadvantage die with your dice pool and subtract its result from your total.

Advantage or disadvantage can be granted or imposed by mechanical triggers or at the GM’s discretion. When a PC aids you with Help an Ally, they roll their own advantage die and you add it to your total.

Advantage and disadvantage dice cancel each out, one-for-one, when they would be added to the same dice pool, so you’ll never roll both at the same time. If you have advantage or disadvantage from other sources that don’t affect your own dice pool, such as another player’s Help an Ally move, their effects stack with your rolled results.

HOPE & FEAR

Hope and Fear are metacurrencies representing the cosmic forces that shape the events of your table’s story. Hope powers PC abilities and features, while Fear powers the abilities of the GM and the adversaries and environments they control.

HOPE

Every PC starts with 2 Hope at character creation and gains more throughout play. A PC can have a maximum of 6 Hope at one time, and Hope carries over between sessions.

Players can spend Hope to:

  • Help an Ally

    When you Help an Ally who is making an action roll, describe how you do so and roll an advantage die. Multiple players can spend Hope to help the same acting player, but that player only adds the highest result to their final total.

  • Utilize an Experience

    When you Utilize an Experience on a relevant roll, add its modifier to the result. You can spend multiple Hope to utilize multiple Experiences.

  • Initiate a Tag Team Roll

    Spend 3 Hope to initiate a Tag Team roll, combining the actions of two PCs into one impressive act of synergy. When you make a Tag Team roll, both players roll their action rolls and then choose which set of results to apply to the outcome.

  • Activate a Hope Feature

    A Hope Feature is any effect that allows (or requires) you to spend a specified amount of Hope to activate it. Class Hope features are class-specific features, detailed on your character sheet, that cost 3 Hope to activate


Note: When using a Hope Feature, if you rolled with Hope for that action, the Hope you gain from that roll can be spent on that feature (or toward it, if it requires spending multiple Hope).


FEAR

The GM gains Fear whenever a player rolls with Fear and can spend Fear at any time to make or enhance a GM move or to use a Fear Feature. The GM can have up to 12 Fear at one time. Fear carries over between sessions.

COMBAT

Though Daggerheart relies on the same flow of collaborative storytelling in and out of combat, physical conflicts rely more heavily on several key mechanics related to attacking, maneuvering, and taking damage.

EVASION

Evasion represents a character’s ability to avoid attacks and other unwanted effects. Any roll made against a PC has a Difficulty equal to the target’s Evasion. A PC’s base Evasion is determined by their class, but can be modified by domain cards, equipment, conditions, and other effects.


Note: attacks rolled against adversaries use the target’s Difficulty instead of Evasion.


HIT POINTS & DAMAGE THRESHOLDS

Hit Points (HP) represent a character’s ability to withstand physical injury. When a character takes damage, they mark 1 to 3 HP, based on their damage thresholds:

  • If the final damage is at or above the character’s Severe damage threshold, they mark 3 HP.

  • If the final damage is at or above the character’s Major damage threshold but below their Severe damage threshold, they mark 2 HP.

  • If the final damage is below the character’s Major damage threshold, they mark 1 HP.

  • If incoming damage is ever reduced to 0 or less, no HP is marked.

A PC’s damage thresholds are calculated by adding their level to the listed damage thresholds of their equipped armor. A PC’s starting HP is based on their class, but they can gain additional Hit Points through advancements, features, and other effects.

An adversary’s Damage Thresholds and HP are listed in their stat blocks.

When a character marks their last Hit Point, they fall. If a PC falls, they make a death move.

Characters can clear Hit Points by taking downtime moves (see: Downtime) or by activating relevant special abilities or effects.


Optional Rule: Massive Damage

If a character ever takes damage equal to twice their Severe threshold, they mark 4 HP instead of 3.


STRESS

Stress represents how much mental, physical, and emotional strain a character can endure. Some special abilities or effects require the character activating them to mark Stress, and the GM can require a PC to mark Stress as a GM move or to represent the cost, complication, or consequence of an action roll.

When a character marks their last Stress, they become Vulnerable (see: Conditions) until they clear at least 1 Stress.

When a character must mark 1 or more Stress but can’t, they mark 1 HP instead. A character can’t use a move that requires them to mark Stress if all of their Stress is marked.

PCs can clear Stress by making downtime moves (see: Downtime). A PC’s maximum Stress is determined by their class, but they can increase it through advancements, abilities, and other effects.

ATTACKING

ATTACK ROLLS

An attack roll is an action roll intended to inflict harm. The trait that applies to an attack roll is specified by the weapon or spell being used. Unarmed attack rolls use either Strength or Finesse (GM’s choice). An attack roll’s Difficulty, unless otherwise noted, is equal to the Difficulty score of its target.

DAMAGE ROLLS

On a successful attack, roll damage. Damage is calculated from the damage roll listed in the attack’s description with the format β€œxdy+[modifier]” (e.g., for a spell that inflicts β€œ1d8+2” damage, you roll an eight-sided and add 2 to the result; the damage dealt is equal to the total).

Any time an effect says to deal damage using your Spellcast trait, you roll a number of dice equal to your Spellcast trait.


Note: If your Spellcast trait is +0 or lower, you don’t roll anything.


For weapons, the number of damage dice you roll is equal to your Proficiency. Note that your Proficiency multiplies the number of dice you roll, but doesn’t affect the modifier. For example, a PC with Proficiency 2 and wielding a weapon with adamage rating of β€œd8+2” deals damage equal to β€œ2d8+2” on a successful attack.

Successful unarmed attacks inflict [Proficiency]d4 damage.

CRITICAL DAMAGE

When you get a critical success (i.e., you roll matching values on your Duality Dice) on an attack roll, you deal extra damage.

Make the damage roll as usual, but add the maximum possible result of the damage dice to the final total. For instance, if an attack would normally deal 2d8+1 damage, a critical success would deal 2d8+1+16.

DAMAGE TYPES

There are two damage types: physical damage (phy) and magic damage (mag). Unless stated otherwise, mundane weapons and unarmed attacks deal physical damage, and spells deal magic damage.

RESISTANCE, IMMUNITY, AND DIRECT DAMAGE

If a target has resistance to a damage type, then they reduce incoming damage of that type by half before comparing it to their Hit Point Thresholds. If the target has additional ways of reducing incoming damage, such as marking Armor Slots, they apply the resistance effect first. The effects of multiple resistances to the same damage type do not stack.

If a target has immunity to a damage type, they ignore incoming damage of that type.

If an attack deals both physical and magic damage, a character can only benefit from resistance or immunity if they are resistant or immune to both damage types.

Direct damage is damage that can’t be reduced by marking Armor Slots.

MULTI-TARGET ATTACK ROLLS

If a spell or ability allows you to target multiple adversaries, make one attack roll and one damage roll, then apply the results to each target individually.

MULTIPLE DAMAGE SOURCES

Damage dealt simultaneously from multiple sources is always totaled before it’s compared to its target’s damage thresholds.


For example, if a PC with orc ancestry makes a successful attack against a target in Melee range and decides to spend a Hope to use their β€œTusks” feature (which gives them an extra 1d6 damage on a damage roll), they would roll their normal weapon damage and add a d6 to the result, then deal that total damage to the adversary.


MAPS, RANGE, AND MOVEMENT

You can play Daggerheart using β€œtheater of the mind” or maps and miniatures. The conversions below from abstract ranges to physical measurements assume 1 inch of map represents about 5 feet of fictional space.

Daggerheart uses the following ranges to translate fictional positioning into relative distance for the purposes of targeting, movement, and other game mechanics:

  • Melee: Close enough to touch, up to a few feet away.

  • Very Close: Close enough to see fine details, about 5–10 feet away. While in danger, a character can move, as part of their action, from Very Close range into Melee range. On a map: anything within the shortest length of a game card (2-3 inches).

  • Close: Close enough to see prominent details, about 10–30 feet away. While in danger, a character can move, as part of their action, from Close range into Melee range. On a map: anything within the length of a pencil (5-6 inches).

  • Far: Close enough to see very little detail, about 30–100 feet away. While in danger, a character must make an Agility Roll to safely move from Far range into Melee range. On a map: anything within the length of the long edge of a piece of copy paper (11–12 inches).

  • Very Far: Too far to make out any details, about 100–300 feet away. While in danger, a character must make an Agility Roll to safely move from Very Far range into Melee range. On a map: anything beyond Far range, but still within the bounds of the conflict or scene.

  • Out of Range: Anything beyond a character’s Very Far range is Out of Range and usually can’t be targeted.

Range is measured from the source of an effect, such as the attacker or spellcaster, to the target or object of an effect.

A weapon, spell, ability, item, or other effect’s stated range is a maximum range; unless otherwise noted, it can be used at closer distances.


Optional Rule: Defined Ranges

If your table would rather operate with more precise range rules, you can use a 1-inch grid battle map during combat.

If you do, use the following guidelines for play:

  • Melee: 1 square

  • Very Close: 3 squares

  • Close: 6 squares

  • Far: 12 squares

  • Very Far: 13+ squares

  • Out of Range: Off the battlemap


MOVEMENT UNDER PRESSURE

When you’re under pressure or in danger and make an action roll, you can move to a location within Close range as part of that action. If you’re not already making an action roll, or if you want to move farther than your Close range, you need to succeed on an Agility Roll to safely reposition yourself.

An adversary can move within Close range for free as part of an action, or within Very Far range as a separate action.

AREA OF EFFECT

Unless stated otherwise, all the targets of a group effect must be within Very Close range of a single origin point within your effect’s range.

LINE OF SIGHT & COVER

Unless stated otherwise, a ranged attacker must have line of sight to their intended target to make an attack roll. If a partial obstruction lies between the attacker and target, the target has cover. Attacks made through cover are rolled with disadvantage. If the obstruction is total, there is no line of sight.

CONDITIONS

Conditions are effects that grant specific benefits or drawbacks to the target they are attached to.

STANDARD CONDITIONS

Daggerheart has three standard conditions:

HIDDEN

While you’re out of sight from all enemies and they don’t otherwise know your location, you gain the Hidden condition. Any rolls against a Hidden creature have disadvantage. After an adversary moves to where they would see you, you move into their line of sight, or you make an attack, you are no longer Hidden.

RESTRAINED

Restrained characters can’t move, but you can still take actions from their current position.

VULNERABLE

When a creature is Vulnerable, all rolls targeting them have advantage.

Some features can apply special or unique conditions, which work as described in the feature text.

Unless otherwise noted, the same condition can’t be applied more than once to the same target.

TEMPORARY TAGS & SPECIAL CONDITIONS

The temporary tag denotes a condition or effect that the affected creature can clear by making a move against it. When an affected PC makes a move to clear a temporary condition or effect, it normally requires a successful action roll using an appropriate trait. When an affected adversary makes a move to clear a temporary condition or effect, the GM puts the spotlight on the adversary and describes how they do it; this doesn’t require a roll but it does use up that adversary’s spotlight.

Special conditions are only cleared when specific requirements are met, such as completing a certain action or using a particular item. The requirements for clearing these conditions are stated in the text of the effect that applies the condition.

DOWNTIME

Between conflicts, the party can take a rest to recover expended resources and deepen their bonds. During a rest, each PC can make up to two downtime moves.

When the party rests, they must choose between a short rest and a long rest. If a party takes three short rests in a row, their next rest must be a long rest.

If a short rest is interrupted, such as by an adversary's attack, the characters don’t gain its benefits. If a long rest is interrupted, the characters only gain the benefits of a short rest.

A short rest lasts enough time for the party to catch its breath, about an hour in-world. Each player can move domain cards between their loadout and vault for free, then choose twice from the following list of downtime moves (players can choose the same move twice):

  • Tend to Wounds: Clear 1d4+Tier Hit Points for yourself or an ally.

  • Clear Stress: Clear 1d4+Tier Stress.

  • Repair Armor: Clear 1d4+Tier Armor Slots from your or an ally’s armor.

  • Prepare: Describe how you prepare yourself for the path ahead, then gain a Hope. If you choose to Prepare with one or more members of your party, you each gain 2 Hope.

At the end of a short rest, any features or effects with a limited number of uses per rest refresh and any features or effects that last until your next rest expire.

A long rest is when the characters make camp and relax or sleep for several in-game hours. Each player can move domain cards between their loadout and vault for free, then choose twice from the following list of downtime moves (players can choose the same move twice):

  • Tend to All Wounds: Clear all Hit Points for yourself or an ally.

  • Clear All Stress: Clear all Stress.

  • Repair All Armor: Clear all Armor Slots from your or an ally’s armor

  • Prepare: Describe how you prepare for the next day’s adventure, then gain a Hope. If you choose to Prepare with one or more members of your party, you each gain 2 Hope.

  • Work on a Project: With GM approval, a PC may pursue a long-term project, such as deciphering an ancient text or crafting a new weapon. The first time they start a new project, assign it a countdown. Each time a PC makes the Work on a Project move, they either advance their project’s countdown automatically or make an action roll to advance it (GM’s choice).

At the end of a long rest, any features or effects with a limited number of uses per rest or per long rest refresh and any features or effects that last until your next rest or until your next long rest expire.

DOWNTIME CONSEQUENCES

On a short rest, the GM gains 1d4 Fear. On a long rest, they gain Fear equal to 1d4 + the number of PCs, and they can advance a long-term countdown of their choice.

DEATH

When a PC marks their last Hit Point, they must make a death move by choosing one of the following options:

  • Blaze of Glory: Your character embraces death and goes out in a blaze of glory. Take one final action. It automatically critically succeeds (with GM approval), and then you cross through the veil of death.

  • Avoid Death: Your character avoids death and faces the consequences. They temporarily drop unconscious, and then you work with the GM to describe how the situation worsens. While unconscious, your character can’t move or act, and they can’t be targeted by an attack. They return to consciousness when an ally clears 1 or more of their marked Hit Points or when the party finishes a long rest. After your character falls unconscious, roll your Hope Die. If its value is equal to or less than your character’s level, they gain a scar: permanently cross out a Hope slot and work with the GM to determine its lasting narrative impact and how, if possible, it can be restored. If you ever cross out your last Hope slot, your character’s journey ends.

  • Risk It All: Roll your Duality Dice. If the Hope Die is higher, your character stays on their feet and clears a number of Hit Points or Stress equal to the value of the Hope Die (you can divide the Hope Die value between Hit Points and Stress however you’d prefer). If the Fear Die is higher, your character crosses through the veil of death. If the Duality Dice show matching results, your character stays up and clears all Hit Points and Stress.

If your character dies, work with the GM before the next session to create a new character at the current level of the rest of the party.

ADDITIONAL RULES

The following rules apply to many aspects of the game.

ROUNDING UP

This game doesn’t use fractions; if you need to round to a whole number, round up unless otherwise specified. When in doubt, resolve any ambiguity in favor of the PCs.

REROLLING DICE

When a feature allows you to reroll a die, you always take the new result unless the feature specifically says otherwise.

INCOMING DAMAGE

Incoming damage means the total damage from a single attack or source, before Armor Slots are marked.

SIMULTANEOUS EFFECTS

If the resolution order of multiple effects is unclear, the person in control of the effects (player or GM) decides what order to resolve them in.

STACKING EFFECTS

Unless stated otherwise, all effects beside conditions and advantage/disadvantage can stack.

ONGOING SPELL EFFECTS

If an effect doesn’t have a listed mechanical expiration, it only ends when decided by the controlling player, the GM, or the demands of the fiction.

SPENDING RESOURCES

Unless an effect states otherwise, you can’t spend Hope or mark Stress multiple times on the same feature to increase or repeat its effects on the same roll.

USING FEATURES AFTER A ROLL

If a feature allows you to affect a roll after the result has been totaled, you can use it after the GM declares whether the roll succeeds or fails, but not after the consequences unfold or another roll is made.

LEVELING UP

Your party levels up whenever the GM decides you’ve reached a narrative milestone (usually about every 3 sessions). All party members level up at the same time.

Daggerheart has 10 PC levels divided into 4 tiers:


β†’ Tier 1 encompasses level 1 only.

β†’ Tier 2 encompasses levels 2–4.

β†’ Tier 3 encompasses levels 5–7.

β†’ Tier 4 encompasses levels 8–10.


Your tier affects your damage thresholds, tier achievements, and access to advancements.

STEP ONE: TIER ACHIEVEMENTS

Take any applicable tier achievements

  • At level 2, you gain a new Experience at +2 and permanently increase your Proficiency by 1.

  • At level 5, you gain a new Experience at +2, permanently increase your Proficiency by 1, and clear any marked traits.

  • At level 8, you gain a new Experience at +2, permanently increase your Proficiency by 1, and clear any marked traits.

STEP TWO: ADVANCEMENTS

Choose any two advancements with at least one unmarked slot from your tier or below. Options with multiple slots can be chosen more than once. When you choose an advancement, mark one of its slots.

  • When you choose to increase two unmarked character traits and mark them: Choose two unmarked character traits and gain a permanent +1 bonus to them. You can’t increase these stats again until the next tier (when your tier achievement allows you to clear those marks).

  • When you choose to permanently add 1 or more Hit Point slots: Darken the outline of the next rectangle in the Hit Point section of your character sheet in pen or permanent marker.

  • When you choose to permanently add 1 or more Stress slots: Darken the outline of the next rectangle in the Stress section of your character sheet in pen or permanent marker.

  • When you choose to increase your Experience: Choose two Experiences on your character sheet and gain a permanent +1 bonus to both.

  • When you take an additional domain card: You can choose an additional domain card at or below your level or from your class’s domains. If you’ve multiclassed, you can instead select a card at or below half your level from your chosen multiclass domain.

  • When you choose to increase your Evasion: Gain a permanent +1 bonus to your Evasion.

  • When you choose to take an upgraded subclass card: Take the next card for your subclass. If you have only the foundation card, take a specialization; if you have a specialization already, take a mastery. Then cross out this tier’s multiclass option.

  • When you choose to increase your Proficiency: Fill in one of the open circles in the β€œProficiency” section of your character sheet, then increase your weapon’s number of damage dice by 1. The black box around this advancement’s slots indicates you must spend two advancements and mark both level-up slots in order to take it as an option.

  • When you choose to multiclass: Choose an additional class, select one of its domains, and gain its class feature. Add the appropriate multiclass module to your character sheet and take the foundation card from one of its subclasses. Then cross out the β€œupgraded subclass” advancement option in this tier and all other β€œmulticlass” advancement options on your character sheet. The black box around this advancement’s slots indicates you must spend two advancements and mark both level-up slots in order to take it as an option.

STEP THREE: DAMAGE THRESHOLDS

Increase all damage thresholds by 1.

STEP FOUR: DOMAIN CARDS

Acquire a new domain card at your level or lower from one of your class’s domains and add it to your loadout or vault. If your loadout is already full, you can’t add the new card to it until you move another into your vault. You can also exchange one domain card you’ve previously acquired for a different domain card of the same level or lower.

MULTICLASSING

Starting at level 5, you can choose multiclassing as an option when leveling up. When you multiclass, you choose an additional class, gain access to one of its domains, and acquire its class feature. Take the appropriate multiclass module and add it to the right side of your character sheet, then choose a foundation card from one of its subclasses. If your foundation cards specify different Spellcast traits, you can choose which one to apply when making a Spellcast roll.

Whenever you have the option to acquire a new domain card, you can choose from cards at or below half your current level (rounded up) from the domain you chose when you selected the multiclass advancement.

EQUIPMENT

Your equipped weapons and armor are the ones listed in the β€œActive Weapons” and β€œActive Armor” sections of your character sheet. Your character can only attack with weapons, benefit from armor, and gain features from items they have equipped. You can’t equip weapons or armor with a higher tier than you.

PCs can carry up to two additional weapons in the β€œInventory Weapon” areas of the character sheet.

You can swap an Inventory Weapon with an Active Weapon at no cost during a rest or moment of calm; otherwise, you must mark a Stress to do so.

Your character can only have one Active Armor at a time.

They can’t equip armor while in danger or under pressure; otherwise, they can equip or unequip armor without cost.

Each armor has its own Armor Slots; if your character unequips their armor, track how many of its Armor Slots are marked. You can't carry armor in your inventory. When your character equips or unequips armor, recalculate your damage thresholds.

WEAPONS

All weapons have a tier, trait, range, damage die, damage type, and burden. Some weapons also have a feature.

CATEGORY

A weapon’s category specifies whether it is a Primary or Secondary weapon. Your character can only equip up to one weapon of each category at a time.

TRAIT

A weapon’s trait specifies which trait to use when making an attack roll with it.

RANGE

A weapon’s range specifies the maximum distance between the attacker and their target when attacking with it.

DAMAGE

A weapon’s damage indicates the size of the damage dice you roll on a successful attack with it; you roll a number of dice equal to your Proficiency. If the damage includes a flat modifier, this number is added to the total damage rolled, but is not altered or affected by Proficiency.

DAMAGE TYPE

A weapon’s damage type indicates whether it deals physical or magic damage. Weapons that deal magic damage can only be wielded by characters with a Spellcast trait.

BURDEN

A weapon’s burden indicates how many hands it occupies when equipped. Your character’s maximum burden is 2 hands.

FEATURE

A weapon’s feature is a special rule that stays in effect while the weapon is equipped.

You can throw an equipped weapon at a target within Very Close range, making the attack roll with Finesse. On a success, deal damage as usual for that weapon. Once thrown, the weapon is no longer considered equipped. Until you retrieve and re-equip it, you can’t attack with it or benefit from its features.

Combat Wheelchair

By Mark Thompson

The combat wheelchair is a ruleset designed to help you play a wheelchair user in Daggerheart. This section provides mechanics and narrative guidance for you to work from, but feel free to adapt the flavor text to best suit your character. Have fun with your character’s wheelchair design, and make it as unique or tailored to them as you please.

ACTION AND MOVEMENT

When describing how your character moves, you can use descriptions such as the following:

  • β€œI roll over to the door to see if it’s open.”

  • β€œI wheel myself over to the group to ask what’s going on.”

  • β€œI pull my brakes and skid to a halt, turning in my seat to level my bow at the intruder.”

CONSEQUENCES

Here are some ways you might describe complications you encounter when your character uses their wheelchair:

  • β€œI pull my brakes, but I don’t think to account for the loose gravel on the ground.”

  • β€œI hit a patch of ice awkwardly and am sent skidding out past my target.”

  • β€œI go to push off in pursuit, but one of my front caster wheels snags on a crack in the pavement, stalling me for a moment.”

GMs should avoid breaking a character's wheelchair or otherwise removing it from play as a consequence, unless everyone at the table, especially the wheelchair user’s player, gives their approval.

EVASION

Your character is assumed to be skilled in moving their wheelchair and navigating numerous situations in it. As a result, the only wheelchair that gives a penalty to a PC's Evasion is the Heavy Frame model.

BURDEN

All wheelchairs can be maneuvered using one or two hands outside of combat. However, when being used as a weapon, the chair is restricted to requiring one or two hands to perform attacks, depending on the model you’ve chosen. If you’re playing a character who has limited to no mobility in their arms, their wheelchair can be attuned to them by magical means. For example, your character might use a psychic link to guide the chair around like a pseudo-electric wheelchair. All the rules presented here can be tailored and adapted to any character's needs.

CHOOSING YOUR MODEL

All combat wheelchairs are equipped as Primary Weapons.

There are three models of wheelchair available: light, heavy, and arcane. You’re encouraged to consider the type of character you’re playing and the class they belong to, then choose the model that best matches that character concept.

ARMOR

Every armor has a name, base damage thresholds, and a base Armor Score. Some armor also has a feature.

  • An armor’s base armor score indicates how many Armor Slots it provides its wearer before additional bonuses are added to calculate their total Armor Score. A PC’s Armor Score can’t exceed 12.

  • An armor’s base thresholds determine its wearer’s major and severe damage thresholds before adding bonuses to calculate their final damage thresholds.

  • An armor’s feature is a special rule that stays in effect while the armor is equipped.

While unarmored, your character’s base Armor Score is 0, their Major threshold is equal to their level, and their Severe threshold is equal to twice their level.

REDUCING INCOMING DAMAGE

When you take damage, you can mark one Armor Slot to reduce the number of Hit Points you would mark by one. If your character has an Armor Score of 0, you can’t mark Armor Slots. If an effect temporarily increases your Armor Score,

it increases your available Armor Slots by the same amount; when the effect ends, so does the availability of these Armor Slots.

LOOT

Loot comprises any consumables or reusable items the party acquires.

Items can be used until sold, discarded, or lost.

To generate a random item, choose a rarity, roll the designated dice, and match the total to the item in the table:

  • Common: 1d12 or 2d12

  • Rare: 3d12 or 4d12

  • Uncommon: 2d12 or 3d12

  • Legendary: 4d12 or 5d12

@UUID[RollTable.KKqUrMMXPpm7uhYT]{Loot}

Consumables

Consumables are loot that can only be used once. You can hold up to five of each consumable at a time. Using a consumable doesn’t require a roll unless required by the GM or the demands of the fiction.

To generate a random consumable, choose a rarity, roll the designated dice, and match the total to the item in the table:

  • Common: 1d12 or 2d12

  • Rare: 3d12 or 4d12

  • Uncommon: 2d12 or 3d12

  • Legendary: 4d12 or 5d12

@UUID[RollTable.wZXyi343PSVVwWB3]{Consumables}

GOLD

Gold is an abstract measurement of how much wealth a character has, and is measured in handfuls, bags, and chests, with 10 handfuls to 1 bag, and 10 bags to 1 chest. When you have marked all of the slots in a category and you gain another gold reward in that category, mark a slot in the following category and clear all the slots in the current one.

For example, if you have 9 handfuls and gain another, you instead mark 1 bag and erase all handfuls. If you have 9 bags and gain another, you mark 1 chest and erase all bags.

You can’t have more than 1 chest, so if all your Gold slots are marked, you’ll need to spend some of your gold or store it somewhere else before you can acquire more.


Optional Rule: Gold Coins

If your group wants to track gold with more granularity, you can add coins as your lowest denomination. Following the established pattern, 10 coins equal 1 handful.


" + "content": "

FLOW OF THE GAME

Daggerheart is a conversation. The GM describes fictional scenarios involving the PCs, and the players take turns describing how their characters react. The goal of every person at the table is to build upon everyone else’s ideas and collaboratively tell a satisfying story. The system facilitates this collaborative process by providing structure to the conversation and mechanics for resolving moments of tension where fate or fortune determine the outcome of events.

PLAYER PRINCIPLES & BEST PRACTICES

To get the most out of Daggerheart, we recommend players keep the following principles and practices in mind throughout each session:

PRINCIPLES

  • Be a fan of your character and their journey.

  • Spotlight your friends.

  • Address the characters and address the players.

  • Build the world together.

  • Play to find out what happens.

  • Hold on gently.

BEST PRACTICES

  • Embrace danger.

  • Use your resources.

  • Tell the story.

  • Discover your character.

For more information, see the Daggerheart Core Rulebook, pages 9 and 108.

CORE GAMEPLAY LOOP

The core gameplay loop is the procedure that drives every scene, both in and out of combat:

STEP 1: SET THE SCENE

The GM describes a scenario, establishing the PCs’ surroundings and any dangers, NPCs, or other important details the characters would notice.

STEP 2: ASK AND ANSWER QUESTIONS

The players ask clarifying questions to explore the scene more deeply and gather information that could inform their characters’ actions. The GM responds to these questions by giving the players information their characters could easily obtain, or by asking questions of their own to the players. The players also respond to any questions the GM poses to them.

In this way, the table builds out the fiction collaboratively.

STEP 3: BUILD ON THE FICTION

As the scene develops, the players find opportunities to take actionβ€”problems to solve, obstacles to overcome, mysteries to investigate, and so on. The players describe how their characters proceed; if their proposed actions carry no chance of failure (or if failure would be boring), they automatically succeed. But if the outcome of their action is unknown, the GM calls for an action roll. Either way, the table works the outcome into the story and moves the fiction forward, narrating how the PC’s actions have changed things.

STEP 4: GO BACK TO STEP 1

The process repeats from the beginning, with the GM relaying any updated details or material changes to the players. This process continues until the end of the scene is triggered by a mechanic or arrives organically.

THE SPOTLIGHT

The spotlight is a symbol that represents the table’s attentionβ€”and therefore the immediate focus of both the narrative and the game mechanics. Any time a character or player becomes the focus of a scene, they β€œare in the spotlight” or β€œhave the spotlight.”

The spotlight moves around the table organically as scenes unfold unless a mechanical trigger determines where the spotlight goes next. For example, when a player fails an action roll, the mechanics prompt the GM to seize the spotlight and make a GM move.

TURN ORDER & ACTION ECONOMY

Daggerheart’s turns don’t follow a traditional, rigid format:
there is no explicit initiative mechanic and characters don’t have a set number of actions they can take or things they can do before the spotlight passes to someone else. A player with the spotlight describes what their character does and the spotlight simply swings to whoever:

  1. the fiction would naturally turn it toward

  2. hasn’t had the focus in a while, or

  3. a triggered mechanic puts it on


Optional: Spotlight Tracker Tool

If your group prefers a more traditional action economy, you can use tokens to track how many times a player has had the spotlight: At the start of a session or scene, each player adds a certain number of tokens (we recommend 3) to their character sheet and removes a token each time they take an action. If the spotlight would swing to someone without any tokens, it swings to someone else instead. Once every player has used all their available tokens, players refill their character sheet with the same number of tokens as before, then continue playing.


MAKING MOVES & TAKING ACTION

Any time a character does something to advance the story, such as speaking with another character, interacting with the environment, making an attack, casting a spell, or using a class feature, they are making a move.

ACTION ROLLS

Any move where success would be trivial or failure would be boring automatically succeeds, but any move that’s difficult to accomplish or risky to attempt triggers an action roll.

OVERVIEW

All action rolls require a pair of d12s called Duality Dice.

These are two visually distinct twelve-sided dice, with one die representing Hope and the other representing Fear.

To make an action roll, you roll the Duality Dice, sum the results, apply any relevant modifiers, and compare the total to a Difficulty number to determine the outcome:

  • Success with Hope: If your total meets or beats the difficulty AND your Hope Die shows a higher result than your Fear Die, you rolled a β€œSuccess with Hope.” You succeed and gain a Hope.

  • Success with Fear: If your total meets or beats the Difficulty AND your Fear Die shows a higher result than your Hope Die, you rolled a β€œSuccess with Fear.” You succeed with a cost or complication, but the GM gains a Fear.

  • Failure with Hope: If your total is less than the Difficulty AND your Hope Die shows a higher result than your Fear Die, you rolled a β€œFailure with Hope.” You fail with a minor consequence and gain a Hope, then the spotlight swings to the GM.

  • Failure with Fear: If your total is less than the Difficulty AND your Fear Die shows a higher result than your Hope Die, you rolled a β€œFailure with Fear.” You fail with a major consequence and the GM gains a Fear, then the spotlight swings to the GM.

  • Critical Success: If the Duality Dice show matching results, you rolled a β€œCritical Success” (β€œCrit”). You automatically succeed with a bonus, gain a Hope, and clear a Stress. If this was an attack roll, you deal critical damage.

Note: A Critical Success counts as a roll β€œwith Hope.”

After resolving the action roll, the table works together to weave the outcome into the narrative and play continues.

FAILING FORWARD

In Daggerheart, every time you roll the dice, the scene changes in some way. There is no such thing as a roll where β€œnothing happens,” because the fiction constantly evolves based on the successes and failures of the characters.

PROCEDURE

The following steps describe in more detail the procedure that all action rolls utilize:

STEP 1: PICK AN APPROPRIATE TRAIT

Some actions and effects specify in their description which trait applies to the roll; otherwise, the GM tells the acting player which character trait best applies to the action being attempted. If more than one trait could apply to the roll, the GM chooses or lets the acting player decide.

STEP 2: DETERMINE THE DIFFICULTY

Some actions and features say in their description what the Difficulty is. Otherwise, the GM determines the Difficulty based on the scenario. The GM can choose whether to share the Difficulty with the table. In either case, the GM should communicate the potential consequences of failure to the acting player.

STEP 3: APPLY EXTRA DICE AND MODIFIERS

The acting player decides whether to Utilize an Experience or activate other effects, then, if applicable, adds the appropriate tokens and dice (such as advantage or Rally dice) to their dice pool.


Note: Unless an action, ability, or feature specifically allows for it, a player must declare the use of any Experiences, extra dice, or other modifiers before they roll.


STEP 4: ROLL THE DICE

The acting player rolls their entire dice pool and announces the results in the format of β€œ[total result] with [Hope/Fear]”— or β€œCritical Success!” in the case of matching Duality Dice.


Example: A player is making an action roll with a +1 in the relevant trait and no other modifiers; they roll the Duality Dice and get a result of 5 on their Hope Die and 7 on their Fear Die, then announce β€œI rolled a 13 with Fear!”


STEP 5: RESOLVE THE OUTCOME

The active player and the GM work together, along with the suggestions and support of the rest of the table, to resolve the outcome of the action.

GM MOVES AND ADVERSARY ACTIONS

GMs also make moves. They should consider making a move when a player does one of the following things:

  • Rolls with Fear on an action roll.

  • Fails an action roll.

  • Does something that would have consequences.

  • Gives them a golden opportunity.

  • Looks to them for what happens next.

After the GM turn is done, the spotlight goes back to the PCs.

Many adversaries and environments have Fear Features, especially powerful or consequential moves that the GM must spend Fear to activate.


Note: This Fear is in addition to any Fear the GM has previously spent to seize the spotlight or activate another action or ability.


ADVERSARY ACTIONS

When play passes to the GM, the GM can make a GM move to spotlight an adversary. A spotlighted adversary can:

  • Move within Close range and make a standard attack

  • Move within Close range and use an adversary action

  • Clear a condition

  • Sprint within Far or Very Far range on the battlefield

  • Do anything else the fiction demands or the GM deems appropriate

The GM can spend additional Fear to spotlight additional adversaries. Once the GM has finished, the spotlight swings back to the PCs.

SPECIAL ROLLS

Some rolls have unique specifications or otherwise modify the action roll procedure: trait rolls, Spellcast Rolls, attack rolls, and damage rolls. Unless otherwise noted, you can apply any bonus, modifier, or effect to a special roll as if it were a standard action roll.

TRAIT ROLLS

An action roll that specifies which character trait applies to it is called a trait roll. In the text of a feature or effect, a trait roll is referenced with the format β€œ[Trait] Roll (Difficulty)” (e.g., β€œAgility Roll (12)”). If the text of an effect doesn’t specify a trait roll’s Difficulty, the GM sets the Difficulty based on the circumstances.

Features and effects that affect a trait roll also affect any action roll that uses the same trait, including attack rolls, Spellcast rolls, and standard action rolls.


Example: The katari’s ancestry feature β€œFeline Instincts,” which allows the katari to reroll an Agility Roll, can also be used on a standard action roll using Agility to traverse dangerous terrain or on an attack roll made with a weapon that uses Agility.


SPELLCAST ROLLS

Spellcast Rolls are trait rolls that require you to use your Spellcast trait. Your Spellcast trait, if you have one, is determined by your subclass.

Spellcast Rolls are only made when a character uses a feature that requires one. A successful Spellcast Roll activates the effect as described by the feature.


Notes: A Spellcast Roll that can damage a target is also considered an attack roll.

When you cast a spell, the text tells you when the effect ends. The GM can spend a Fear to end a temporary effect. If your spell doesn’t specify when it ends, it ends when you choose or at a natural moment of the story. You can choose to end your spell early.

You can cast and maintain the effects of more than one spell at the same time.


REACTION ROLLS

A reaction roll is made in response to an attack or a hazard, representing a character’s attempt to avoid or withstand an imminent effect.

Reaction rolls work like action rolls, except they don’t generate Hope or Fear, don’t trigger additional GM moves, and other characters can’t aid you with Help an Ally.

If you critically succeed on a reaction roll, you don’t clear a Stress or gain a Hope, but you do ignore any effects that would have impacted you on a success, such as taking damage or marking Stress.

GROUP ACTION ROLLS

When multiple PCs take action together, the party chooses one PC to lead the action. Each other player then describes how their character collaborates on the task. The leader makes an action roll as usual, while the other players make reaction rolls using whichever traits they and the GM decide fit best.

The lead character gains a +1 bonus to their lead action roll for each of these reaction rolls that succeeded and a βˆ’1 penalty for each these reaction rolls that failed.

TAG TEAM ROLLS

Each player can, once per session, initiate a Tag Team Roll between their character and another PC by spending 3 Hope. The players work with one another to describe how they combine their actions in a unique and exciting way. Both players make separate action rolls; before resolving the roll’s outcome, choose one of the rolls to apply to both actions. On a roll with Hope, all PCs involved gain a Hope. On a roll with Fear, the GM gains a Fear token for each PC involved.

On a successful Tag Team attack roll, both players roll damage and add the totals together to determine the damage dealt, which is then treated as if it came from a single source. If the attacks deal different types of damage, the players choose which type to deal.


Notes:

A Tag Team Roll counts as a single action roll for the purposes of any countdowns or features that track action rolls.

Though each player may only initiate one Tag Team Roll per session, one PC can be involved in multiple Tag Team Rolls.


ADVANTAGE & DISADVANTAGE

Some features and effects let you roll with advantage or disadvantage on an action or reaction roll:

  • Advantage represents an opportunity that you seize to increase your chances of success. When you roll with advantage, you roll a d6 advantage die with your dice pool and add its result to your total.

  • Disadvantage represents an additional difficulty, hardship, or challenge you face when attempting an action. When you roll with disadvantage, you roll a d6 disadvantage die with your dice pool and subtract its result from your total.

Advantage or disadvantage can be granted or imposed by mechanical triggers or at the GM’s discretion. When a PC aids you with Help an Ally, they roll their own advantage die and you add it to your total.

Advantage and disadvantage dice cancel each out, one-for-one, when they would be added to the same dice pool, so you’ll never roll both at the same time. If you have advantage or disadvantage from other sources that don’t affect your own dice pool, such as another player’s Help an Ally move, their effects stack with your rolled results.

HOPE & FEAR

Hope and Fear are metacurrencies representing the cosmic forces that shape the events of your table’s story. Hope powers PC abilities and features, while Fear powers the abilities of the GM and the adversaries and environments they control.

HOPE

Every PC starts with 2 Hope at character creation and gains more throughout play. A PC can have a maximum of 6 Hope at one time, and Hope carries over between sessions.

Players can spend Hope to:

  • Help an Ally

    When you Help an Ally who is making an action roll, describe how you do so and roll an advantage die. Multiple players can spend Hope to help the same acting player, but that player only adds the highest result to their final total.

  • Utilize an Experience

    When you Utilize an Experience on a relevant roll, add its modifier to the result. You can spend multiple Hope to utilize multiple Experiences.

  • Initiate a Tag Team Roll

    Spend 3 Hope to initiate a Tag Team roll, combining the actions of two PCs into one impressive act of synergy. When you make a Tag Team roll, both players roll their action rolls and then choose which set of results to apply to the outcome.

  • Activate a Hope Feature

    A Hope Feature is any effect that allows (or requires) you to spend a specified amount of Hope to activate it. Class Hope features are class-specific features, detailed on your character sheet, that cost 3 Hope to activate


Note: When using a Hope Feature, if you rolled with Hope for that action, the Hope you gain from that roll can be spent on that feature (or toward it, if it requires spending multiple Hope).


FEAR

The GM gains Fear whenever a player rolls with Fear and can spend Fear at any time to make or enhance a GM move or to use a Fear Feature. The GM can have up to 12 Fear at one time. Fear carries over between sessions.

COMBAT

Though Daggerheart relies on the same flow of collaborative storytelling in and out of combat, physical conflicts rely more heavily on several key mechanics related to attacking, maneuvering, and taking damage.

EVASION

Evasion represents a character’s ability to avoid attacks and other unwanted effects. Any roll made against a PC has a Difficulty equal to the target’s Evasion. A PC’s base Evasion is determined by their class, but can be modified by domain cards, equipment, conditions, and other effects.


Note: attacks rolled against adversaries use the target’s Difficulty instead of Evasion.


HIT POINTS & DAMAGE THRESHOLDS

Hit Points (HP) represent a character’s ability to withstand physical injury. When a character takes damage, they mark 1 to 3 HP, based on their damage thresholds:

  • If the final damage is at or above the character’s Severe damage threshold, they mark 3 HP.

  • If the final damage is at or above the character’s Major damage threshold but below their Severe damage threshold, they mark 2 HP.

  • If the final damage is below the character’s Major damage threshold, they mark 1 HP.

  • If incoming damage is ever reduced to 0 or less, no HP is marked.

A PC’s damage thresholds are calculated by adding their level to the listed damage thresholds of their equipped armor. A PC’s starting HP is based on their class, but they can gain additional Hit Points through advancements, features, and other effects.

An adversary’s Damage Thresholds and HP are listed in their stat blocks.

When a character marks their last Hit Point, they fall. If a PC falls, they make a death move.

Characters can clear Hit Points by taking downtime moves (see: Downtime) or by activating relevant special abilities or effects.


Optional Rule: Massive Damage

If a character ever takes damage equal to twice their Severe threshold, they mark 4 HP instead of 3.


STRESS

Stress represents how much mental, physical, and emotional strain a character can endure. Some special abilities or effects require the character activating them to mark Stress, and the GM can require a PC to mark Stress as a GM move or to represent the cost, complication, or consequence of an action roll.

When a character marks their last Stress, they become Vulnerable (see: Conditions) until they clear at least 1 Stress.

When a character must mark 1 or more Stress but can’t, they mark 1 HP instead. A character can’t use a move that requires them to mark Stress if all of their Stress is marked.

PCs can clear Stress by making downtime moves (see: Downtime). A PC’s maximum Stress is determined by their class, but they can increase it through advancements, abilities, and other effects.

ATTACKING

ATTACK ROLLS

An attack roll is an action roll intended to inflict harm. The trait that applies to an attack roll is specified by the weapon or spell being used. Unarmed attack rolls use either Strength or Finesse (GM’s choice). An attack roll’s Difficulty, unless otherwise noted, is equal to the Difficulty score of its target.

DAMAGE ROLLS

On a successful attack, roll damage. Damage is calculated from the damage roll listed in the attack’s description with the format β€œxdy+[modifier]” (e.g., for a spell that inflicts β€œ1d8+2” damage, you roll an eight-sided and add 2 to the result; the damage dealt is equal to the total).

Any time an effect says to deal damage using your Spellcast trait, you roll a number of dice equal to your Spellcast trait.


Note: If your Spellcast trait is +0 or lower, you don’t roll anything.


For weapons, the number of damage dice you roll is equal to your Proficiency. Note that your Proficiency multiplies the number of dice you roll, but doesn’t affect the modifier. For example, a PC with Proficiency 2 and wielding a weapon with adamage rating of β€œd8+2” deals damage equal to β€œ2d8+2” on a successful attack.

Successful unarmed attacks inflict [Proficiency]d4 damage.

CRITICAL DAMAGE

When you get a critical success (i.e., you roll matching values on your Duality Dice) on an attack roll, you deal extra damage.

Make the damage roll as usual, but add the maximum possible result of the damage dice to the final total. For instance, if an attack would normally deal 2d8+1 damage, a critical success would deal 2d8+1+16.

DAMAGE TYPES

There are two damage types: physical damage (phy) and magic damage (mag). Unless stated otherwise, mundane weapons and unarmed attacks deal physical damage, and spells deal magic damage.

RESISTANCE, IMMUNITY, AND DIRECT DAMAGE

If a target has resistance to a damage type, then they reduce incoming damage of that type by half before comparing it to their Hit Point Thresholds. If the target has additional ways of reducing incoming damage, such as marking Armor Slots, they apply the resistance effect first. The effects of multiple resistances to the same damage type do not stack.

If a target has immunity to a damage type, they ignore incoming damage of that type.

If an attack deals both physical and magic damage, a character can only benefit from resistance or immunity if they are resistant or immune to both damage types.

Direct damage is damage that can’t be reduced by marking Armor Slots.

MULTI-TARGET ATTACK ROLLS

If a spell or ability allows you to target multiple adversaries, make one attack roll and one damage roll, then apply the results to each target individually.

MULTIPLE DAMAGE SOURCES

Damage dealt simultaneously from multiple sources is always totaled before it’s compared to its target’s damage thresholds.


For example, if a PC with orc ancestry makes a successful attack against a target in Melee range and decides to spend a Hope to use their β€œTusks” feature (which gives them an extra 1d6 damage on a damage roll), they would roll their normal weapon damage and add a d6 to the result, then deal that total damage to the adversary.


MAPS, RANGE, AND MOVEMENT

You can play Daggerheart using β€œtheater of the mind” or maps and miniatures. The conversions below from abstract ranges to physical measurements assume 1 inch of map represents about 5 feet of fictional space.

Daggerheart uses the following ranges to translate fictional positioning into relative distance for the purposes of targeting, movement, and other game mechanics:

  • Melee: Close enough to touch, up to a few feet away.

  • Very Close: Close enough to see fine details, about 5–10 feet away. While in danger, a character can move, as part of their action, from Very Close range into Melee range. On a map: anything within the shortest length of a game card (2-3 inches).

  • Close: Close enough to see prominent details, about 10–30 feet away. While in danger, a character can move, as part of their action, from Close range into Melee range. On a map: anything within the length of a pencil (5-6 inches).

  • Far: Close enough to see very little detail, about 30–100 feet away. While in danger, a character must make an Agility Roll to safely move from Far range into Melee range. On a map: anything within the length of the long edge of a piece of copy paper (11–12 inches).

  • Very Far: Too far to make out any details, about 100–300 feet away. While in danger, a character must make an Agility Roll to safely move from Very Far range into Melee range. On a map: anything beyond Far range, but still within the bounds of the conflict or scene.

  • Out of Range: Anything beyond a character’s Very Far range is Out of Range and usually can’t be targeted.

Range is measured from the source of an effect, such as the attacker or spellcaster, to the target or object of an effect.

A weapon, spell, ability, item, or other effect’s stated range is a maximum range; unless otherwise noted, it can be used at closer distances.


Optional Rule: Defined Ranges

If your table would rather operate with more precise range rules, you can use a 1-inch grid battle map during combat.

If you do, use the following guidelines for play:

  • Melee: 1 square

  • Very Close: 3 squares

  • Close: 6 squares

  • Far: 12 squares

  • Very Far: 13+ squares

  • Out of Range: Off the battlemap


MOVEMENT UNDER PRESSURE

When you’re under pressure or in danger and make an action roll, you can move to a location within Close range as part of that action. If you’re not already making an action roll, or if you want to move farther than your Close range, you need to succeed on an Agility Roll to safely reposition yourself.

An adversary can move within Close range for free as part of an action, or within Very Far range as a separate action.

AREA OF EFFECT

Unless stated otherwise, all the targets of a group effect must be within Very Close range of a single origin point within your effect’s range.

LINE OF SIGHT & COVER

Unless stated otherwise, a ranged attacker must have line of sight to their intended target to make an attack roll. If a partial obstruction lies between the attacker and target, the target has cover. Attacks made through cover are rolled with disadvantage. If the obstruction is total, there is no line of sight.

CONDITIONS

Conditions are effects that grant specific benefits or drawbacks to the target they are attached to.

STANDARD CONDITIONS

Daggerheart has three standard conditions:

HIDDEN

While you’re out of sight from all enemies and they don’t otherwise know your location, you gain the Hidden condition. Any rolls against a Hidden creature have disadvantage. After an adversary moves to where they would see you, you move into their line of sight, or you make an attack, you are no longer Hidden.

RESTRAINED

Restrained characters can’t move, but you can still take actions from their current position.

VULNERABLE

When a creature is Vulnerable, all rolls targeting them have advantage.

Some features can apply special or unique conditions, which work as described in the feature text.

Unless otherwise noted, the same condition can’t be applied more than once to the same target.

TEMPORARY TAGS & SPECIAL CONDITIONS

The temporary tag denotes a condition or effect that the affected creature can clear by making a move against it. When an affected PC makes a move to clear a temporary condition or effect, it normally requires a successful action roll using an appropriate trait. When an affected adversary makes a move to clear a temporary condition or effect, the GM puts the spotlight on the adversary and describes how they do it; this doesn’t require a roll but it does use up that adversary’s spotlight.

Special conditions are only cleared when specific requirements are met, such as completing a certain action or using a particular item. The requirements for clearing these conditions are stated in the text of the effect that applies the condition.

DOWNTIME

Between conflicts, the party can take a rest to recover expended resources and deepen their bonds. During a rest, each PC can make up to two downtime moves.

When the party rests, they must choose between a short rest and a long rest. If a party takes three short rests in a row, their next rest must be a long rest.

If a short rest is interrupted, such as by an adversary's attack, the characters don’t gain its benefits. If a long rest is interrupted, the characters only gain the benefits of a short rest.

A short rest lasts enough time for the party to catch its breath, about an hour in-world. Each player can move domain cards between their loadout and vault for free, then choose twice from the following list of downtime moves (players can choose the same move twice):

  • Tend to Wounds: Clear 1d4+Tier Hit Points for yourself or an ally.

  • Clear Stress: Clear 1d4+Tier Stress.

  • Repair Armor: Clear 1d4+Tier Armor Slots from your or an ally’s armor.

  • Prepare: Describe how you prepare yourself for the path ahead, then gain a Hope. If you choose to Prepare with one or more members of your party, you each gain 2 Hope.

At the end of a short rest, any features or effects with a limited number of uses per rest refresh and any features or effects that last until your next rest expire.

A long rest is when the characters make camp and relax or sleep for several in-game hours. Each player can move domain cards between their loadout and vault for free, then choose twice from the following list of downtime moves (players can choose the same move twice):

  • Tend to All Wounds: Clear all Hit Points for yourself or an ally.

  • Clear All Stress: Clear all Stress.

  • Repair All Armor: Clear all Armor Slots from your or an ally’s armor

  • Prepare: Describe how you prepare for the next day’s adventure, then gain a Hope. If you choose to Prepare with one or more members of your party, you each gain 2 Hope.

  • Work on a Project: With GM approval, a PC may pursue a long-term project, such as deciphering an ancient text or crafting a new weapon. The first time they start a new project, assign it a countdown. Each time a PC makes the Work on a Project move, they either advance their project’s countdown automatically or make an action roll to advance it (GM’s choice).

At the end of a long rest, any features or effects with a limited number of uses per rest or per long rest refresh and any features or effects that last until your next rest or until your next long rest expire.

DOWNTIME CONSEQUENCES

On a short rest, the GM gains 1d4 Fear. On a long rest, they gain Fear equal to 1d4 + the number of PCs, and they can advance a long-term countdown of their choice.

DEATH

When a PC marks their last Hit Point, they must make a death move by choosing one of the following options:

  • Blaze of Glory: Your character embraces death and goes out in a blaze of glory. Take one final action. It automatically critically succeeds (with GM approval), and then you cross through the veil of death.

  • Avoid Death: Your character avoids death and faces the consequences. They temporarily drop unconscious, and then you work with the GM to describe how the situation worsens. While unconscious, your character can’t move or act, and they can’t be targeted by an attack. They return to consciousness when an ally clears 1 or more of their marked Hit Points or when the party finishes a long rest. After your character falls unconscious, roll your Hope Die. If its value is equal to or less than your character’s level, they gain a scar: permanently cross out a Hope slot and work with the GM to determine its lasting narrative impact and how, if possible, it can be restored. If you ever cross out your last Hope slot, your character’s journey ends.

  • Risk It All: Roll your Duality Dice. If the Hope Die is higher, your character stays on their feet and clears a number of Hit Points or Stress equal to the value of the Hope Die (you can divide the Hope Die value between Hit Points and Stress however you’d prefer). If the Fear Die is higher, your character crosses through the veil of death. If the Duality Dice show matching results, your character stays up and clears all Hit Points and Stress.

If your character dies, work with the GM before the next session to create a new character at the current level of the rest of the party.

ADDITIONAL RULES

The following rules apply to many aspects of the game.

ROUNDING UP

This game doesn’t use fractions; if you need to round to a whole number, round up unless otherwise specified. When in doubt, resolve any ambiguity in favor of the PCs.

REROLLING DICE

When a feature allows you to reroll a die, you always take the new result unless the feature specifically says otherwise.

INCOMING DAMAGE

Incoming damage means the total damage from a single attack or source, before Armor Slots are marked.

SIMULTANEOUS EFFECTS

If the resolution order of multiple effects is unclear, the person in control of the effects (player or GM) decides what order to resolve them in.

STACKING EFFECTS

Unless stated otherwise, all effects beside conditions and advantage/disadvantage can stack.

ONGOING SPELL EFFECTS

If an effect doesn’t have a listed mechanical expiration, it only ends when decided by the controlling player, the GM, or the demands of the fiction.

SPENDING RESOURCES

Unless an effect states otherwise, you can’t spend Hope or mark Stress multiple times on the same feature to increase or repeat its effects on the same roll.

USING FEATURES AFTER A ROLL

If a feature allows you to affect a roll after the result has been totaled, you can use it after the GM declares whether the roll succeeds or fails, but not after the consequences unfold or another roll is made.

LEVELING UP

Your party levels up whenever the GM decides you’ve reached a narrative milestone (usually about every 3 sessions). All party members level up at the same time.

Daggerheart has 10 PC levels divided into 4 tiers:


β†’ Tier 1 encompasses level 1 only.

β†’ Tier 2 encompasses levels 2–4.

β†’ Tier 3 encompasses levels 5–7.

β†’ Tier 4 encompasses levels 8–10.


Your tier affects your damage thresholds, tier achievements, and access to advancements.

STEP ONE: TIER ACHIEVEMENTS

Take any applicable tier achievements

  • At level 2, you gain a new Experience at +2 and permanently increase your Proficiency by 1.

  • At level 5, you gain a new Experience at +2, permanently increase your Proficiency by 1, and clear any marked traits.

  • At level 8, you gain a new Experience at +2, permanently increase your Proficiency by 1, and clear any marked traits.

STEP TWO: ADVANCEMENTS

Choose any two advancements with at least one unmarked slot from your tier or below. Options with multiple slots can be chosen more than once. When you choose an advancement, mark one of its slots.

  • When you choose to increase two unmarked character traits and mark them: Choose two unmarked character traits and gain a permanent +1 bonus to them. You can’t increase these stats again until the next tier (when your tier achievement allows you to clear those marks).

  • When you choose to permanently add 1 or more Hit Point slots: Darken the outline of the next rectangle in the Hit Point section of your character sheet in pen or permanent marker.

  • When you choose to permanently add 1 or more Stress slots: Darken the outline of the next rectangle in the Stress section of your character sheet in pen or permanent marker.

  • When you choose to increase your Experience: Choose two Experiences on your character sheet and gain a permanent +1 bonus to both.

  • When you take an additional domain card: You can choose an additional domain card at or below your level or from your class’s domains. If you’ve multiclassed, you can instead select a card at or below half your level from your chosen multiclass domain.

  • When you choose to increase your Evasion: Gain a permanent +1 bonus to your Evasion.

  • When you choose to take an upgraded subclass card: Take the next card for your subclass. If you have only the foundation card, take a specialization; if you have a specialization already, take a mastery. Then cross out this tier’s multiclass option.

  • When you choose to increase your Proficiency: Fill in one of the open circles in the β€œProficiency” section of your character sheet, then increase your weapon’s number of damage dice by 1. The black box around this advancement’s slots indicates you must spend two advancements and mark both level-up slots in order to take it as an option.

  • When you choose to multiclass: Choose an additional class, select one of its domains, and gain its class feature. Add the appropriate multiclass module to your character sheet and take the foundation card from one of its subclasses. Then cross out the β€œupgraded subclass” advancement option in this tier and all other β€œmulticlass” advancement options on your character sheet. The black box around this advancement’s slots indicates you must spend two advancements and mark both level-up slots in order to take it as an option.

STEP THREE: DAMAGE THRESHOLDS

Increase all damage thresholds by 1.

STEP FOUR: DOMAIN CARDS

Acquire a new domain card at your level or lower from one of your class’s domains and add it to your loadout or vault. If your loadout is already full, you can’t add the new card to it until you move another into your vault. You can also exchange one domain card you’ve previously acquired for a different domain card of the same level or lower.

MULTICLASSING

Starting at level 5, you can choose multiclassing as an option when leveling up. When you multiclass, you choose an additional class, gain access to one of its domains, and acquire its class feature. Take the appropriate multiclass module and add it to the right side of your character sheet, then choose a foundation card from one of its subclasses. If your foundation cards specify different Spellcast traits, you can choose which one to apply when making a Spellcast roll.

Whenever you have the option to acquire a new domain card, you can choose from cards at or below half your current level (rounded up) from the domain you chose when you selected the multiclass advancement.

EQUIPMENT

Your equipped weapons and armor are the ones listed in the β€œActive Weapons” and β€œActive Armor” sections of your character sheet. Your character can only attack with weapons, benefit from armor, and gain features from items they have equipped. You can’t equip weapons or armor with a higher tier than you.

PCs can carry up to two additional weapons in the β€œInventory Weapon” areas of the character sheet.

You can swap an Inventory Weapon with an Active Weapon at no cost during a rest or moment of calm; otherwise, you must mark a Stress to do so.

Your character can only have one Active Armor at a time.

They can’t equip armor while in danger or under pressure; otherwise, they can equip or unequip armor without cost.

Each armor has its own Armor Slots; if your character unequips their armor, track how many of its Armor Slots are marked. You can't carry armor in your inventory. When your character equips or unequips armor, recalculate your damage thresholds.

WEAPONS

All weapons have a tier, trait, range, damage die, damage type, and burden. Some weapons also have a feature.

CATEGORY

A weapon’s category specifies whether it is a Primary or Secondary weapon. Your character can only equip up to one weapon of each category at a time.

TRAIT

A weapon’s trait specifies which trait to use when making an attack roll with it.

RANGE

A weapon’s range specifies the maximum distance between the attacker and their target when attacking with it.

DAMAGE

A weapon’s damage indicates the size of the damage dice you roll on a successful attack with it; you roll a number of dice equal to your Proficiency. If the damage includes a flat modifier, this number is added to the total damage rolled, but is not altered or affected by Proficiency.

DAMAGE TYPE

A weapon’s damage type indicates whether it deals physical or magic damage. Weapons that deal magic damage can only be wielded by characters with a Spellcast trait.

BURDEN

A weapon’s burden indicates how many hands it occupies when equipped. Your character’s maximum burden is 2 hands.

FEATURE

A weapon’s feature is a special rule that stays in effect while the weapon is equipped.

You can throw an equipped weapon at a target within Very Close range, making the attack roll with Finesse. On a success, deal damage as usual for that weapon. Once thrown, the weapon is no longer considered equipped. Until you retrieve and re-equip it, you can’t attack with it or benefit from its features.

Combat Wheelchair

By Mark Thompson

The combat wheelchair is a ruleset designed to help you play a wheelchair user in Daggerheart. This section provides mechanics and narrative guidance for you to work from, but feel free to adapt the flavor text to best suit your character. Have fun with your character’s wheelchair design, and make it as unique or tailored to them as you please.

ACTION AND MOVEMENT

When describing how your character moves, you can use descriptions such as the following:

  • β€œI roll over to the door to see if it’s open.”

  • β€œI wheel myself over to the group to ask what’s going on.”

  • β€œI pull my brakes and skid to a halt, turning in my seat to level my bow at the intruder.”

CONSEQUENCES

Here are some ways you might describe complications you encounter when your character uses their wheelchair:

  • β€œI pull my brakes, but I don’t think to account for the loose gravel on the ground.”

  • β€œI hit a patch of ice awkwardly and am sent skidding out past my target.”

  • β€œI go to push off in pursuit, but one of my front caster wheels snags on a crack in the pavement, stalling me for a moment.”

GMs should avoid breaking a character's wheelchair or otherwise removing it from play as a consequence, unless everyone at the table, especially the wheelchair user’s player, gives their approval.

EVASION

Your character is assumed to be skilled in moving their wheelchair and navigating numerous situations in it. As a result, the only wheelchair that gives a penalty to a PC's Evasion is the Heavy Frame model.

BURDEN

All wheelchairs can be maneuvered using one or two hands outside of combat. However, when being used as a weapon, the chair is restricted to requiring one or two hands to perform attacks, depending on the model you’ve chosen. If you’re playing a character who has limited to no mobility in their arms, their wheelchair can be attuned to them by magical means. For example, your character might use a psychic link to guide the chair around like a pseudo-electric wheelchair. All the rules presented here can be tailored and adapted to any character's needs.

CHOOSING YOUR MODEL

All combat wheelchairs are equipped as Primary Weapons.

There are three models of wheelchair available: light, heavy, and arcane. You’re encouraged to consider the type of character you’re playing and the class they belong to, then choose the model that best matches that character concept.

ARMOR

Every armor has a name, base damage thresholds, and a base Armor Score. Some armor also has a feature.

  • An armor’s base armor score indicates how many Armor Slots it provides its wearer before additional bonuses are added to calculate their total Armor Score. A PC’s Armor Score can’t exceed 12.

  • An armor’s base thresholds determine its wearer’s major and severe damage thresholds before adding bonuses to calculate their final damage thresholds.

  • An armor’s feature is a special rule that stays in effect while the armor is equipped.

While unarmored, your character’s base Armor Score is 0, their Major threshold is equal to their level, and their Severe threshold is equal to twice their level.

REDUCING INCOMING DAMAGE

When you take damage, you can mark one Armor Slot to reduce the number of Hit Points you would mark by one. If your character has an Armor Score of 0, you can’t mark Armor Slots. If an effect temporarily increases your Armor Score,

it increases your available Armor Slots by the same amount; when the effect ends, so does the availability of these Armor Slots.

LOOT

Loot comprises any consumables or reusable items the party acquires.

Items can be used until sold, discarded, or lost.

To generate a random item, choose a rarity, roll the designated dice, and match the total to the item in the table:

  • Common: 1d12 or 2d12

  • Rare: 3d12 or 4d12

  • Uncommon: 2d12 or 3d12

  • Legendary: 4d12 or 5d12

@UUID[RollTable.KKqUrMMXPpm7uhYT]{Loot}

Consumables

Consumables are loot that can only be used once. You can hold up to five of each consumable at a time. Using a consumable doesn’t require a roll unless required by the GM or the demands of the fiction.

To generate a random consumable, choose a rarity, roll the designated dice, and match the total to the item in the table:

  • Common: 1d12 or 2d12

  • Rare: 3d12 or 4d12

  • Uncommon: 2d12 or 3d12

  • Legendary: 4d12 or 5d12

@UUID[RollTable.wZXyi343PSVVwWB3]{Consumables}

GOLD

Gold is an abstract measurement of how much wealth a character has, and is measured in handfuls, bags, and chests, with 10 handfuls to 1 bag, and 10 bags to 1 chest. When you have marked all of the slots in a category and you gain another gold reward in that category, mark a slot in the following category and clear all the slots in the current one.

For example, if you have 9 handfuls and gain another, you instead mark 1 bag and erase all handfuls. If you have 9 bags and gain another, you mark 1 chest and erase all bags.

You can’t have more than 1 chest, so if all your Gold slots are marked, you’ll need to spend some of your gold or store it somewhere else before you can acquire more.


Optional Rule: Gold Coins

If your group wants to track gold with more granularity, you can add coins as your lowest denomination. Following the established pattern, 10 coins equal 1 handful.


" }, "video": { "controls": true, diff --git a/src/packs/subclasses/feature_Accomplished_0wCctRupJAv5hTuE.json b/src/packs/subclasses/feature_Accomplished_0wCctRupJAv5hTuE.json index 2e23c31c..02a98035 100644 --- a/src/packs/subclasses/feature_Accomplished_0wCctRupJAv5hTuE.json +++ b/src/packs/subclasses/feature_Accomplished_0wCctRupJAv5hTuE.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754253943924, - "modifiedTime": 1754253975014, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392523853, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!0wCctRupJAv5hTuE" } diff --git a/src/packs/subclasses/feature_Act_of_Reprisal_k7vvMJtEcxMWUUrW.json b/src/packs/subclasses/feature_Act_of_Reprisal_k7vvMJtEcxMWUUrW.json index 6b505c86..a73eb3d7 100644 --- a/src/packs/subclasses/feature_Act_of_Reprisal_k7vvMJtEcxMWUUrW.json +++ b/src/packs/subclasses/feature_Act_of_Reprisal_k7vvMJtEcxMWUUrW.json @@ -29,7 +29,7 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Mark Adversary", @@ -38,7 +38,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [ { @@ -91,12 +96,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754243143650, - "modifiedTime": 1754351612905, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756035614382, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!k7vvMJtEcxMWUUrW" } diff --git a/src/packs/subclasses/feature_Adept_v511C6GMShsBblah.json b/src/packs/subclasses/feature_Adept_v511C6GMShsBblah.json index a19ae5c9..3cfe1052 100644 --- a/src/packs/subclasses/feature_Adept_v511C6GMShsBblah.json +++ b/src/packs/subclasses/feature_Adept_v511C6GMShsBblah.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,7 +41,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 0, @@ -55,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754253694438, - "modifiedTime": 1754253772703, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392496269, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!v511C6GMShsBblah" } diff --git a/src/packs/subclasses/feature_Adrenaline_uByM34yQlw38yf1V.json b/src/packs/subclasses/feature_Adrenaline_uByM34yQlw38yf1V.json index ef5d4c56..e15129b0 100644 --- a/src/packs/subclasses/feature_Adrenaline_uByM34yQlw38yf1V.json +++ b/src/packs/subclasses/feature_Adrenaline_uByM34yQlw38yf1V.json @@ -7,38 +7,14 @@ "system": { "description": "

While you're Vulnerable, add your level to your damage rolls.

", "resource": null, - "actions": { - "UgffABhuobRDP7MQ": { - "type": "effect", - "_id": "UgffABhuobRDP7MQ", - "systemPath": "actions", - "description": "

While you're Vulnerable, add your level to your damage rolls.

", - "chatDisplay": true, - "actionType": "action", - "cost": [], - "uses": { - "value": null, - "max": "", - "recovery": null, - "consumeOnSuccess": false - }, - "effects": [ - { - "_id": "HMx9uZ54mvMiH95x", - "onSave": false - } - ], - "target": { - "type": "self", - "amount": null - }, - "name": "Apply", - "img": "icons/magic/unholy/hand-marked-pink.webp", - "range": "" - } - }, + "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 19, + "artist": "" + } }, "effects": [ { @@ -109,12 +85,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754319984350, - "modifiedTime": 1754351983791, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756035779655, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!uByM34yQlw38yf1V" } diff --git a/src/packs/subclasses/feature_Advanced_Training_uGcs785h94RMtueH.json b/src/packs/subclasses/feature_Advanced_Training_uGcs785h94RMtueH.json index 7cbad7d7..3b7f55d9 100644 --- a/src/packs/subclasses/feature_Advanced_Training_uGcs785h94RMtueH.json +++ b/src/packs/subclasses/feature_Advanced_Training_uGcs785h94RMtueH.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754267928272, - "modifiedTime": 1754267942465, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391976441, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!uGcs785h94RMtueH" } diff --git a/src/packs/subclasses/feature_Apex_Predator_lwH3E0Zyf4gbVOd0.json b/src/packs/subclasses/feature_Apex_Predator_lwH3E0Zyf4gbVOd0.json index b435ffad..545f2116 100644 --- a/src/packs/subclasses/feature_Apex_Predator_lwH3E0Zyf4gbVOd0.json +++ b/src/packs/subclasses/feature_Apex_Predator_lwH3E0Zyf4gbVOd0.json @@ -17,7 +17,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -40,7 +39,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + } }, "effects": [], "sort": 0, @@ -53,12 +57,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754268013491, - "modifiedTime": 1754268190654, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391968894, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!lwH3E0Zyf4gbVOd0" } diff --git a/src/packs/subclasses/feature_Arcane_Charge_yA4MKQ1tbKFiJoDB.json b/src/packs/subclasses/feature_Arcane_Charge_yA4MKQ1tbKFiJoDB.json index 59dfea8f..8ebe8a5b 100644 --- a/src/packs/subclasses/feature_Arcane_Charge_yA4MKQ1tbKFiJoDB.json +++ b/src/packs/subclasses/feature_Arcane_Charge_yA4MKQ1tbKFiJoDB.json @@ -17,7 +17,12 @@ }, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 23, + "artist": "" + } }, "effects": [ { @@ -80,12 +85,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754349515898, - "modifiedTime": 1754349515898, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392345960, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!yA4MKQ1tbKFiJoDB" } diff --git a/src/packs/subclasses/feature_Ascendant_fefLgx6kcYWusjBb.json b/src/packs/subclasses/feature_Ascendant_fefLgx6kcYWusjBb.json index efb31ac4..4caed074 100644 --- a/src/packs/subclasses/feature_Ascendant_fefLgx6kcYWusjBb.json +++ b/src/packs/subclasses/feature_Ascendant_fefLgx6kcYWusjBb.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 21, + "artist": "" + } }, "effects": [ { @@ -43,7 +48,7 @@ "startRound": null, "startTurn": null }, - "description": "

Gain a permanent +4 bonus to your Severe damage threshold.

", + "description": "

Gain a permanent +4 bonus to your Severe damage threshold.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -74,12 +79,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754355721228, - "modifiedTime": 1754355738718, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392230926, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!fefLgx6kcYWusjBb" } diff --git a/src/packs/subclasses/feature_At_Ease_xPWFvGvtUjIcqgJq.json b/src/packs/subclasses/feature_At_Ease_xPWFvGvtUjIcqgJq.json index 4cccb077..d7212244 100644 --- a/src/packs/subclasses/feature_At_Ease_xPWFvGvtUjIcqgJq.json +++ b/src/packs/subclasses/feature_At_Ease_xPWFvGvtUjIcqgJq.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [ { @@ -74,12 +79,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754237891794, - "modifiedTime": 1754245935236, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391823600, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!xPWFvGvtUjIcqgJq" } diff --git a/src/packs/subclasses/feature_Battle_Bonded_hWsKyed1vfILg0I8.json b/src/packs/subclasses/feature_Battle_Bonded_hWsKyed1vfILg0I8.json index d56edfa1..1efb24e2 100644 --- a/src/packs/subclasses/feature_Battle_Bonded_hWsKyed1vfILg0I8.json +++ b/src/packs/subclasses/feature_Battle_Bonded_hWsKyed1vfILg0I8.json @@ -9,9 +9,66 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + } }, - "effects": [], + "effects": [ + { + "name": "Battle Bonded", + "type": "base", + "system": { + "rangeDependence": { + "enabled": false, + "type": "withinRange", + "target": "hostile", + "range": "melee" + } + }, + "_id": "IZhakv6EuG8DO4a3", + "img": "icons/creatures/mammals/humanoid-wolf-dog-blue.webp", + "changes": [ + { + "key": "system.evasion", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": true, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "

When an adversary attacks you while they’re within your companion’s Melee range, you gain a +2 bonus to your Evasion against the attack.

", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.347", + "systemId": "daggerheart", + "systemVersion": "1.1.0", + "createdTime": 1756035661033, + "modifiedTime": 1756035696385, + "lastModifiedBy": "vUIbuan0U50nfKBE" + }, + "_key": "!items.effects!hWsKyed1vfILg0I8.IZhakv6EuG8DO4a3" + } + ], "sort": 0, "ownership": { "default": 0, @@ -22,12 +79,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754267290791, - "modifiedTime": 1754267339284, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391947493, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!hWsKyed1vfILg0I8" } diff --git a/src/packs/subclasses/feature_Battle_Ritual_qqb5acyUSl1sCpWW.json b/src/packs/subclasses/feature_Battle_Ritual_qqb5acyUSl1sCpWW.json index 1ebf58ca..df550dff 100644 --- a/src/packs/subclasses/feature_Battle_Ritual_qqb5acyUSl1sCpWW.json +++ b/src/packs/subclasses/feature_Battle_Ritual_qqb5acyUSl1sCpWW.json @@ -103,7 +103,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 24, + "artist": "" + } }, "effects": [], "sort": 0, @@ -116,12 +121,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754256232412, - "modifiedTime": 1754256309647, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392388947, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!qqb5acyUSl1sCpWW" } diff --git a/src/packs/subclasses/feature_Battlemage_Y9eGMewnFZgPvX0M.json b/src/packs/subclasses/feature_Battlemage_Y9eGMewnFZgPvX0M.json index b6be75f0..ab44a170 100644 --- a/src/packs/subclasses/feature_Battlemage_Y9eGMewnFZgPvX0M.json +++ b/src/packs/subclasses/feature_Battlemage_Y9eGMewnFZgPvX0M.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [ { @@ -74,12 +79,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754253784757, - "modifiedTime": 1754253819240, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392505769, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Y9eGMewnFZgPvX0M" } diff --git a/src/packs/subclasses/feature_Brilliant_2A0HBDxGc4gEARou.json b/src/packs/subclasses/feature_Brilliant_2A0HBDxGc4gEARou.json index 0c05fbf6..77bf5d74 100644 --- a/src/packs/subclasses/feature_Brilliant_2A0HBDxGc4gEARou.json +++ b/src/packs/subclasses/feature_Brilliant_2A0HBDxGc4gEARou.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 100000, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754254253864, - "modifiedTime": 1754254310242, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392562593, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!2A0HBDxGc4gEARou" } diff --git a/src/packs/subclasses/feature_Clarity_of_Nature_etaQ01yGJhBLDUqZ.json b/src/packs/subclasses/feature_Clarity_of_Nature_etaQ01yGJhBLDUqZ.json index 752fee05..ff56a435 100644 --- a/src/packs/subclasses/feature_Clarity_of_Nature_etaQ01yGJhBLDUqZ.json +++ b/src/packs/subclasses/feature_Clarity_of_Nature_etaQ01yGJhBLDUqZ.json @@ -17,11 +17,12 @@ "actionType": "action", "cost": [ { - "scalable": false, - "key": "etaQ01yGJhBLDUqZ", + "key": "resource", + "itemId": "etaQ01yGJhBLDUqZ", "value": 1, - "keyIsID": true, - "step": null + "scalable": false, + "step": null, + "consumeOnSuccess": false } ], "uses": { @@ -85,7 +86,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 11, + "artist": "" + } }, "effects": [], "sort": 200000, @@ -98,12 +104,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1754179740310, - "modifiedTime": 1754496518048, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756325575203, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_key": "!items!etaQ01yGJhBLDUqZ" } diff --git a/src/packs/subclasses/feature_Comaraderie_dArl2cxKIEGTicXU.json b/src/packs/subclasses/feature_Comaraderie_dArl2cxKIEGTicXU.json index 61ce367d..2b30206e 100644 --- a/src/packs/subclasses/feature_Comaraderie_dArl2cxKIEGTicXU.json +++ b/src/packs/subclasses/feature_Comaraderie_dArl2cxKIEGTicXU.json @@ -33,7 +33,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 24, + "artist": "" + } }, "effects": [], "sort": 0, @@ -46,12 +51,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754256748303, - "modifiedTime": 1754256845527, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392438216, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!dArl2cxKIEGTicXU" } diff --git a/src/packs/subclasses/feature_Companion_MBFXxIEwc0Dl4kJg.json b/src/packs/subclasses/feature_Companion_MBFXxIEwc0Dl4kJg.json index e13065b7..8028eec2 100644 --- a/src/packs/subclasses/feature_Companion_MBFXxIEwc0Dl4kJg.json +++ b/src/packs/subclasses/feature_Companion_MBFXxIEwc0Dl4kJg.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754266772170, - "modifiedTime": 1754266905966, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391922354, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!MBFXxIEwc0Dl4kJg" } diff --git a/src/packs/subclasses/feature_Conjure_Shield_oirsCnN66GOlK3Fa.json b/src/packs/subclasses/feature_Conjure_Shield_oirsCnN66GOlK3Fa.json index 8fc72db2..88a739d0 100644 --- a/src/packs/subclasses/feature_Conjure_Shield_oirsCnN66GOlK3Fa.json +++ b/src/packs/subclasses/feature_Conjure_Shield_oirsCnN66GOlK3Fa.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [ { @@ -74,12 +79,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754254077810, - "modifiedTime": 1754254095589, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392539956, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!oirsCnN66GOlK3Fa" } diff --git a/src/packs/subclasses/feature_Contacts_Everywhere_cXbRm744mW6UXGam.json b/src/packs/subclasses/feature_Contacts_Everywhere_cXbRm744mW6UXGam.json index 3c8fa5b5..75a5f905 100644 --- a/src/packs/subclasses/feature_Contacts_Everywhere_cXbRm744mW6UXGam.json +++ b/src/packs/subclasses/feature_Contacts_Everywhere_cXbRm744mW6UXGam.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hitPoints", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -41,7 +40,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 20, + "artist": "" + } }, "effects": [], "sort": 0, @@ -54,12 +58,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754320389008, - "modifiedTime": 1754496752362, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392080713, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!cXbRm744mW6UXGam" } diff --git a/src/packs/subclasses/feature_Courage_o5j2vjXU8NicYlXx.json b/src/packs/subclasses/feature_Courage_o5j2vjXU8NicYlXx.json index 108f4571..5b2fdcdf 100644 --- a/src/packs/subclasses/feature_Courage_o5j2vjXU8NicYlXx.json +++ b/src/packs/subclasses/feature_Courage_o5j2vjXU8NicYlXx.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 24, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754256184552, - "modifiedTime": 1754256222832, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392395130, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!o5j2vjXU8NicYlXx" } diff --git a/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json b/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json index 2de13f94..c31aa7d2 100644 --- a/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json +++ b/src/packs/subclasses/feature_Dark_Cloud_frBTtNMX9Y2gkuPz.json @@ -56,7 +56,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 19, + "artist": "" + } }, "effects": [], "sort": 0, @@ -69,12 +74,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754319411878, - "modifiedTime": 1754351939150, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392060813, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!frBTtNMX9Y2gkuPz" } diff --git a/src/packs/subclasses/feature_Defender_Jdktv5p1K2PfgxrT.json b/src/packs/subclasses/feature_Defender_Jdktv5p1K2PfgxrT.json index 37e5fa11..017a0752 100644 --- a/src/packs/subclasses/feature_Defender_Jdktv5p1K2PfgxrT.json +++ b/src/packs/subclasses/feature_Defender_Jdktv5p1K2PfgxrT.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -40,7 +39,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 11, + "artist": "" + } }, "effects": [], "sort": 400000, @@ -53,12 +57,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754220872809, - "modifiedTime": 1754353606220, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391765479, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Jdktv5p1K2PfgxrT" } diff --git a/src/packs/subclasses/feature_Devout_J3A7ycmj65hlhWnI.json b/src/packs/subclasses/feature_Devout_J3A7ycmj65hlhWnI.json index b7568b2c..1fd3d016 100644 --- a/src/packs/subclasses/feature_Devout_J3A7ycmj65hlhWnI.json +++ b/src/packs/subclasses/feature_Devout_J3A7ycmj65hlhWnI.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 21, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754353798475, - "modifiedTime": 1754353830966, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392196286, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!J3A7ycmj65hlhWnI" } diff --git a/src/packs/subclasses/feature_Elemental_Aura_2JH9NaOh69yN80Gw.json b/src/packs/subclasses/feature_Elemental_Aura_2JH9NaOh69yN80Gw.json index 286f651d..6e65294e 100644 --- a/src/packs/subclasses/feature_Elemental_Aura_2JH9NaOh69yN80Gw.json +++ b/src/packs/subclasses/feature_Elemental_Aura_2JH9NaOh69yN80Gw.json @@ -173,7 +173,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 11, + "artist": "" + } }, "effects": [ { @@ -370,12 +375,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754180638227, - "modifiedTime": 1754353118771, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391729977, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!2JH9NaOh69yN80Gw" } diff --git a/src/packs/subclasses/feature_Elemental_Dominion_EFUJHrkTuyv8uA9l.json b/src/packs/subclasses/feature_Elemental_Dominion_EFUJHrkTuyv8uA9l.json index 30d3928f..5cad10d1 100644 --- a/src/packs/subclasses/feature_Elemental_Dominion_EFUJHrkTuyv8uA9l.json +++ b/src/packs/subclasses/feature_Elemental_Dominion_EFUJHrkTuyv8uA9l.json @@ -74,7 +74,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -126,7 +125,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 11, + "artist": "" + } }, "effects": [ { @@ -332,12 +336,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754219959517, - "modifiedTime": 1754353189971, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391758846, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!EFUJHrkTuyv8uA9l" } diff --git a/src/packs/subclasses/feature_Elemental_Incarnation_f37TTgCc0Q3Ih1A1.json b/src/packs/subclasses/feature_Elemental_Incarnation_f37TTgCc0Q3Ih1A1.json index 855d34aa..02af8c17 100644 --- a/src/packs/subclasses/feature_Elemental_Incarnation_f37TTgCc0Q3Ih1A1.json +++ b/src/packs/subclasses/feature_Elemental_Incarnation_f37TTgCc0Q3Ih1A1.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -106,7 +105,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -141,7 +139,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -206,7 +203,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -231,7 +227,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 11, + "artist": "" + } }, "effects": [ { @@ -441,12 +442,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754176169510, - "modifiedTime": 1754352293609, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391716994, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!f37TTgCc0Q3Ih1A1" } diff --git a/src/packs/subclasses/feature_Elementalist_dPcqKN5NeDkjB1HW.json b/src/packs/subclasses/feature_Elementalist_dPcqKN5NeDkjB1HW.json index b282d4fb..fbea1985 100644 --- a/src/packs/subclasses/feature_Elementalist_dPcqKN5NeDkjB1HW.json +++ b/src/packs/subclasses/feature_Elementalist_dPcqKN5NeDkjB1HW.json @@ -17,7 +17,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -38,12 +37,12 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Bonus to Roll", "img": "icons/sundries/gaming/dice-runed-tan.webp", - "range": "" + "range": "self" }, "S7HvFD3qIR3ifJRL": { "type": "effect", @@ -54,7 +53,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -75,16 +73,21 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Bonus to Damage", "img": "icons/sundries/gaming/dice-runed-tan.webp", - "range": "" + "range": "self" } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + } }, "effects": [ { @@ -98,8 +101,8 @@ "rangeDependence": { "enabled": false, "type": "withinRange", - "target": "hostile", - "range": "melee" + "target": "any", + "range": "self" } }, "changes": [ @@ -110,7 +113,7 @@ "priority": null } ], - "disabled": true, + "disabled": false, "duration": { "startTime": null, "combat": null, @@ -129,10 +132,11 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", - "lastModifiedBy": null + "systemVersion": "1.1.2", + "lastModifiedBy": "fBcTgyTzoARBvohY", + "modifiedTime": 1761503576186 }, "_key": "!items.effects!dPcqKN5NeDkjB1HW.EY87mY6ULfIt3XC8" }, @@ -147,8 +151,8 @@ "rangeDependence": { "enabled": false, "type": "withinRange", - "target": "hostile", - "range": "melee" + "target": "any", + "range": "self" } }, "changes": [ @@ -165,7 +169,7 @@ "priority": null } ], - "disabled": true, + "disabled": false, "duration": { "startTime": null, "combat": null, @@ -184,10 +188,11 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.350", "systemId": "daggerheart", - "systemVersion": "0.0.1", - "lastModifiedBy": null + "systemVersion": "1.1.2", + "lastModifiedBy": "fBcTgyTzoARBvohY", + "modifiedTime": 1761503563924 }, "_key": "!items.effects!dPcqKN5NeDkjB1HW.WwibpgaO6Kkks7aZ" } @@ -202,12 +207,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754349507020, - "modifiedTime": 1754349507020, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756035526712, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!dPcqKN5NeDkjB1HW" } diff --git a/src/packs/subclasses/feature_Eloquent_5bmB1YcxiJVNVXDM.json b/src/packs/subclasses/feature_Eloquent_5bmB1YcxiJVNVXDM.json index daca1154..be3ae3d6 100644 --- a/src/packs/subclasses/feature_Eloquent_5bmB1YcxiJVNVXDM.json +++ b/src/packs/subclasses/feature_Eloquent_5bmB1YcxiJVNVXDM.json @@ -31,7 +31,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 10, + "artist": "" + } }, "effects": [], "flags": {}, @@ -39,12 +44,12 @@ "compendiumSource": "Compendium.daggerheart.subclasses.Item.QaEinpTu6c1Tj859", "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754174646194, - "modifiedTime": 1754494786779, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391624722, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { "default": 0, diff --git a/src/packs/subclasses/feature_Elusive_Predator_Cjtc43V3IzAmfIFG.json b/src/packs/subclasses/feature_Elusive_Predator_Cjtc43V3IzAmfIFG.json index 74f5a35e..d0787ec3 100644 --- a/src/packs/subclasses/feature_Elusive_Predator_Cjtc43V3IzAmfIFG.json +++ b/src/packs/subclasses/feature_Elusive_Predator_Cjtc43V3IzAmfIFG.json @@ -9,9 +9,66 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + } }, - "effects": [], + "effects": [ + { + "name": "Elusive Predator", + "type": "base", + "system": { + "rangeDependence": { + "enabled": false, + "type": "withinRange", + "target": "hostile", + "range": "melee" + } + }, + "_id": "X4llFOcAcdJLbear", + "img": "icons/creatures/mammals/beast-horned-scaled-glowing-orange.webp", + "changes": [ + { + "key": "system.evasion", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": true, + "duration": { + "startTime": null, + "combat": null, + "seconds": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "description": "

When your Focus makes an attack against you, you gain a +2 bonus to your Evasion against the attack.

", + "origin": null, + "tint": "#ffffff", + "transfer": true, + "statuses": [], + "sort": 0, + "flags": {}, + "_stats": { + "compendiumSource": null, + "duplicateSource": null, + "exportSource": null, + "coreVersion": "13.347", + "systemId": "daggerheart", + "systemVersion": "1.1.0", + "createdTime": 1756035709943, + "modifiedTime": 1756035734622, + "lastModifiedBy": "vUIbuan0U50nfKBE" + }, + "_key": "!items.effects!Cjtc43V3IzAmfIFG.X4llFOcAcdJLbear" + } + ], "sort": 0, "ownership": { "default": 0, @@ -22,12 +79,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754267748776, - "modifiedTime": 1754267799813, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391941589, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Cjtc43V3IzAmfIFG" } diff --git a/src/packs/subclasses/feature_Enchanted_Aid_4pVBN8cuKePI423V.json b/src/packs/subclasses/feature_Enchanted_Aid_4pVBN8cuKePI423V.json index 756a21cc..4a3dd229 100644 --- a/src/packs/subclasses/feature_Enchanted_Aid_4pVBN8cuKePI423V.json +++ b/src/packs/subclasses/feature_Enchanted_Aid_4pVBN8cuKePI423V.json @@ -33,7 +33,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 23, + "artist": "" + } }, "effects": [], "sort": 0, @@ -46,12 +51,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754349511084, - "modifiedTime": 1754349511084, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392324026, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!4pVBN8cuKePI423V" } diff --git a/src/packs/subclasses/feature_Epic_Poetry_eCoEWkWuZPMZ9C6a.json b/src/packs/subclasses/feature_Epic_Poetry_eCoEWkWuZPMZ9C6a.json index f80c05e3..23864dbe 100644 --- a/src/packs/subclasses/feature_Epic_Poetry_eCoEWkWuZPMZ9C6a.json +++ b/src/packs/subclasses/feature_Epic_Poetry_eCoEWkWuZPMZ9C6a.json @@ -8,7 +8,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 10, + "artist": "" + } }, "effects": [ { @@ -67,12 +72,12 @@ "compendiumSource": "Compendium.daggerheart.subclasses.Item.4dVLpWQ5SpAGnc5A", "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754174646194, - "modifiedTime": 1754236502610, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391644691, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { "default": 0, diff --git a/src/packs/subclasses/feature_Ethereal_Visage_tyGB6wRKjYdIBK1i.json b/src/packs/subclasses/feature_Ethereal_Visage_tyGB6wRKjYdIBK1i.json index c434eae9..59e2cfaa 100644 --- a/src/packs/subclasses/feature_Ethereal_Visage_tyGB6wRKjYdIBK1i.json +++ b/src/packs/subclasses/feature_Ethereal_Visage_tyGB6wRKjYdIBK1i.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 21, + "artist": "" + } }, "effects": [ { @@ -43,7 +48,7 @@ "startRound": null, "startTurn": null }, - "description": "

While flying, you have advantage on Presence Rolls.

", + "description": "

While flying, you have advantage on Presence Rolls.

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -74,12 +79,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754355219220, - "modifiedTime": 1754355252528, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392202970, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!tyGB6wRKjYdIBK1i" } diff --git a/src/packs/subclasses/feature_Expert_Training_iCXtOWBKv1FdKdWz.json b/src/packs/subclasses/feature_Expert_Training_iCXtOWBKv1FdKdWz.json index e6b18e5a..2ef5b31f 100644 --- a/src/packs/subclasses/feature_Expert_Training_iCXtOWBKv1FdKdWz.json +++ b/src/packs/subclasses/feature_Expert_Training_iCXtOWBKv1FdKdWz.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754267251789, - "modifiedTime": 1754267277163, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391953639, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!iCXtOWBKv1FdKdWz" } diff --git a/src/packs/subclasses/feature_Face_Your_Fear_D3ffFWSXCza4WGcM.json b/src/packs/subclasses/feature_Face_Your_Fear_D3ffFWSXCza4WGcM.json index 2e0d5a05..056e3bc8 100644 --- a/src/packs/subclasses/feature_Face_Your_Fear_D3ffFWSXCza4WGcM.json +++ b/src/packs/subclasses/feature_Face_Your_Fear_D3ffFWSXCza4WGcM.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754253863023, - "modifiedTime": 1754253898944, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392512687, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!D3ffFWSXCza4WGcM" } diff --git a/src/packs/subclasses/feature_Fleeting_Shadow_EY7Eo6hNGppVL3dR.json b/src/packs/subclasses/feature_Fleeting_Shadow_EY7Eo6hNGppVL3dR.json index 5c8e344a..ed1d1569 100644 --- a/src/packs/subclasses/feature_Fleeting_Shadow_EY7Eo6hNGppVL3dR.json +++ b/src/packs/subclasses/feature_Fleeting_Shadow_EY7Eo6hNGppVL3dR.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 19, + "artist": "" + } }, "effects": [ { @@ -74,12 +79,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754320756015, - "modifiedTime": 1754320791763, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755392093113, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!EY7Eo6hNGppVL3dR" } diff --git a/src/packs/subclasses/feature_Fueled_by_Fear_hNqLf3zEfKRzSbvq.json b/src/packs/subclasses/feature_Fueled_by_Fear_hNqLf3zEfKRzSbvq.json index a96a7324..bfef6ea3 100644 --- a/src/packs/subclasses/feature_Fueled_by_Fear_hNqLf3zEfKRzSbvq.json +++ b/src/packs/subclasses/feature_Fueled_by_Fear_hNqLf3zEfKRzSbvq.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754254160964, - "modifiedTime": 1754254207526, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392548972, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!hNqLf3zEfKRzSbvq" } diff --git a/src/packs/subclasses/feature_Gifted_Performer_99U7YWNCxFZHCiT0.json b/src/packs/subclasses/feature_Gifted_Performer_99U7YWNCxFZHCiT0.json index 57cbdc0c..81730014 100644 --- a/src/packs/subclasses/feature_Gifted_Performer_99U7YWNCxFZHCiT0.json +++ b/src/packs/subclasses/feature_Gifted_Performer_99U7YWNCxFZHCiT0.json @@ -170,7 +170,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + } }, "effects": [ { @@ -224,12 +229,12 @@ "compendiumSource": "Compendium.daggerheart.subclasses.Item.6j1RP4fz3BwSfoli", "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754174646194, - "modifiedTime": 1754475491670, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391572653, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { "default": 0, diff --git a/src/packs/subclasses/feature_Have_No_Fear_8TH6h6a36h09mf6d.json b/src/packs/subclasses/feature_Have_No_Fear_8TH6h6a36h09mf6d.json index f4423761..90855e04 100644 --- a/src/packs/subclasses/feature_Have_No_Fear_8TH6h6a36h09mf6d.json +++ b/src/packs/subclasses/feature_Have_No_Fear_8TH6h6a36h09mf6d.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 26, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754254675541, - "modifiedTime": 1754254712265, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392573261, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!8TH6h6a36h09mf6d" } diff --git a/src/packs/subclasses/feature_Heart_of_a_Poet_Ce0sn0kqAw3PFe0k.json b/src/packs/subclasses/feature_Heart_of_a_Poet_Ce0sn0kqAw3PFe0k.json index b057717a..0b5b61f5 100644 --- a/src/packs/subclasses/feature_Heart_of_a_Poet_Ce0sn0kqAw3PFe0k.json +++ b/src/packs/subclasses/feature_Heart_of_a_Poet_Ce0sn0kqAw3PFe0k.json @@ -16,7 +16,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -39,7 +38,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + } }, "effects": [], "flags": {}, @@ -47,12 +51,12 @@ "compendiumSource": "Compendium.daggerheart.subclasses.Item.3YIVugLcucLNtLSZ", "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754174646194, - "modifiedTime": 1754240308015, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391585771, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { "default": 0, diff --git a/src/packs/subclasses/feature_Honed_Expertise_w1BwNKxbQOSizLmZ.json b/src/packs/subclasses/feature_Honed_Expertise_w1BwNKxbQOSizLmZ.json index 9f2e7e19..e0e21482 100644 --- a/src/packs/subclasses/feature_Honed_Expertise_w1BwNKxbQOSizLmZ.json +++ b/src/packs/subclasses/feature_Honed_Expertise_w1BwNKxbQOSizLmZ.json @@ -57,7 +57,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 200000, @@ -70,12 +75,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754253988597, - "modifiedTime": 1754254310242, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392579823, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!w1BwNKxbQOSizLmZ" } diff --git a/src/packs/subclasses/feature_Iron_Will_7AVRNyBcd1Nffjtn.json b/src/packs/subclasses/feature_Iron_Will_7AVRNyBcd1Nffjtn.json index 5b300ade..26e04708 100644 --- a/src/packs/subclasses/feature_Iron_Will_7AVRNyBcd1Nffjtn.json +++ b/src/packs/subclasses/feature_Iron_Will_7AVRNyBcd1Nffjtn.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [ { @@ -74,12 +79,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754237297894, - "modifiedTime": 1754350175771, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391817317, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!7AVRNyBcd1Nffjtn" } diff --git a/src/packs/subclasses/feature_Loyal_Friend_xjZHD5Yo3Tu26rLm.json b/src/packs/subclasses/feature_Loyal_Friend_xjZHD5Yo3Tu26rLm.json index 5f8c3ed7..4f464e6b 100644 --- a/src/packs/subclasses/feature_Loyal_Friend_xjZHD5Yo3Tu26rLm.json +++ b/src/packs/subclasses/feature_Loyal_Friend_xjZHD5Yo3Tu26rLm.json @@ -33,7 +33,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + } }, "effects": [], "sort": 0, @@ -46,12 +51,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754267956703, - "modifiedTime": 1754496703770, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391982191, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!xjZHD5Yo3Tu26rLm" } diff --git a/src/packs/subclasses/feature_Loyal_Protector_hd7UeBPr86Mz21Pe.json b/src/packs/subclasses/feature_Loyal_Protector_hd7UeBPr86Mz21Pe.json index 9b7372ee..e7f060d5 100644 --- a/src/packs/subclasses/feature_Loyal_Protector_hd7UeBPr86Mz21Pe.json +++ b/src/packs/subclasses/feature_Loyal_Protector_hd7UeBPr86Mz21Pe.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -40,7 +39,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [], "sort": 300000, @@ -53,12 +57,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754244826486, - "modifiedTime": 1754350266486, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391872035, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!hd7UeBPr86Mz21Pe" } diff --git a/src/packs/subclasses/feature_Maestro_ZFkCz8XV1EtMoJ1w.json b/src/packs/subclasses/feature_Maestro_ZFkCz8XV1EtMoJ1w.json index 1dbc1ae6..59b05ae6 100644 --- a/src/packs/subclasses/feature_Maestro_ZFkCz8XV1EtMoJ1w.json +++ b/src/packs/subclasses/feature_Maestro_ZFkCz8XV1EtMoJ1w.json @@ -8,7 +8,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + } }, "effects": [], "flags": {}, @@ -16,12 +21,12 @@ "compendiumSource": "Compendium.daggerheart.subclasses.Item.c6kz0r85oQ6G7eaZ", "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754174646194, - "modifiedTime": 1754236475709, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391614339, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { "default": 0, diff --git a/src/packs/subclasses/feature_Manipulate_Magic_UNg4eyNfEQrMdD7G.json b/src/packs/subclasses/feature_Manipulate_Magic_UNg4eyNfEQrMdD7G.json index df35ffdf..46ac1a9d 100644 --- a/src/packs/subclasses/feature_Manipulate_Magic_UNg4eyNfEQrMdD7G.json +++ b/src/packs/subclasses/feature_Manipulate_Magic_UNg4eyNfEQrMdD7G.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,7 +41,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + } }, "effects": [], "sort": 0, @@ -55,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754349507020, - "modifiedTime": 1754349507020, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392299130, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!UNg4eyNfEQrMdD7G" } diff --git a/src/packs/subclasses/feature_Martial_Preparation_dHgAnbt9m1KsQFmp.json b/src/packs/subclasses/feature_Martial_Preparation_dHgAnbt9m1KsQFmp.json index 49117c74..c754561c 100644 --- a/src/packs/subclasses/feature_Martial_Preparation_dHgAnbt9m1KsQFmp.json +++ b/src/packs/subclasses/feature_Martial_Preparation_dHgAnbt9m1KsQFmp.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 24, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754256861952, - "modifiedTime": 1754256903587, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392449968, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!dHgAnbt9m1KsQFmp" } diff --git a/src/packs/subclasses/feature_Natural_Evasion_TnuLBtHQGbqyzn82.json b/src/packs/subclasses/feature_Natural_Evasion_TnuLBtHQGbqyzn82.json index fe491267..33804ae4 100644 --- a/src/packs/subclasses/feature_Natural_Evasion_TnuLBtHQGbqyzn82.json +++ b/src/packs/subclasses/feature_Natural_Evasion_TnuLBtHQGbqyzn82.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -66,7 +65,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + } }, "effects": [], "sort": 0, @@ -79,12 +83,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754349511084, - "modifiedTime": 1754349511084, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392316643, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!TnuLBtHQGbqyzn82" } diff --git a/src/packs/subclasses/feature_Nemesis_DPKmipNRlSAMs2Cg.json b/src/packs/subclasses/feature_Nemesis_DPKmipNRlSAMs2Cg.json index 11d8f0b0..1d8f3b8f 100644 --- a/src/packs/subclasses/feature_Nemesis_DPKmipNRlSAMs2Cg.json +++ b/src/packs/subclasses/feature_Nemesis_DPKmipNRlSAMs2Cg.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 2, - "keyIsID": false, "step": null } ], @@ -45,7 +44,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [ { @@ -103,12 +107,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754244990457, - "modifiedTime": 1754351671775, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391879536, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!DPKmipNRlSAMs2Cg" } diff --git a/src/packs/subclasses/feature_Partner_in_Arms_G54qY96XK62hgoK9.json b/src/packs/subclasses/feature_Partner_in_Arms_G54qY96XK62hgoK9.json index 6eb53b78..b0b37c6d 100644 --- a/src/packs/subclasses/feature_Partner_in_Arms_G54qY96XK62hgoK9.json +++ b/src/packs/subclasses/feature_Partner_in_Arms_G54qY96XK62hgoK9.json @@ -20,7 +20,6 @@ "scalable": false, "key": "armor", "value": 1, - "keyIsID": false, "step": null } ], @@ -40,7 +39,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [], "sort": 300000, @@ -53,12 +57,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754242808363, - "modifiedTime": 1754350282699, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391847017, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!G54qY96XK62hgoK9" } diff --git a/src/packs/subclasses/feature_Path_Forward_uPPBOpoulUmSLlzr.json b/src/packs/subclasses/feature_Path_Forward_uPPBOpoulUmSLlzr.json index 1921f2ae..72dc7dd3 100644 --- a/src/packs/subclasses/feature_Path_Forward_uPPBOpoulUmSLlzr.json +++ b/src/packs/subclasses/feature_Path_Forward_uPPBOpoulUmSLlzr.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754267110974, - "modifiedTime": 1754267209120, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391932973, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!uPPBOpoulUmSLlzr" } diff --git a/src/packs/subclasses/feature_Perfect_Recall_HzPa5U0EQhDfFTqW.json b/src/packs/subclasses/feature_Perfect_Recall_HzPa5U0EQhDfFTqW.json index 0b28959b..b1042617 100644 --- a/src/packs/subclasses/feature_Perfect_Recall_HzPa5U0EQhDfFTqW.json +++ b/src/packs/subclasses/feature_Perfect_Recall_HzPa5U0EQhDfFTqW.json @@ -33,7 +33,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 0, @@ -46,12 +51,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754254320808, - "modifiedTime": 1754254522728, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392533206, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!HzPa5U0EQhDfFTqW" } diff --git a/src/packs/subclasses/feature_Power_of_the_Gods_Yij5sNyP1Ii7BAbc.json b/src/packs/subclasses/feature_Power_of_the_Gods_Yij5sNyP1Ii7BAbc.json index ef286817..f4d1f648 100644 --- a/src/packs/subclasses/feature_Power_of_the_Gods_Yij5sNyP1Ii7BAbc.json +++ b/src/packs/subclasses/feature_Power_of_the_Gods_Yij5sNyP1Ii7BAbc.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 21, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754355875610, - "modifiedTime": 1754355895962, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392237241, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!Yij5sNyP1Ii7BAbc" } diff --git a/src/packs/subclasses/feature_Prepared_YS52ZGdce605wNVT.json b/src/packs/subclasses/feature_Prepared_YS52ZGdce605wNVT.json index fe00e41d..77250a5f 100644 --- a/src/packs/subclasses/feature_Prepared_YS52ZGdce605wNVT.json +++ b/src/packs/subclasses/feature_Prepared_YS52ZGdce605wNVT.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754253648251, - "modifiedTime": 1754253683668, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392490085, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!YS52ZGdce605wNVT" } diff --git a/src/packs/subclasses/feature_Regeneration_KRyrbSLVGreIOTZe.json b/src/packs/subclasses/feature_Regeneration_KRyrbSLVGreIOTZe.json index 91e8975c..9947cc38 100644 --- a/src/packs/subclasses/feature_Regeneration_KRyrbSLVGreIOTZe.json +++ b/src/packs/subclasses/feature_Regeneration_KRyrbSLVGreIOTZe.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hope", "value": 3, - "keyIsID": false, "step": null } ], @@ -84,7 +83,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 11, + "artist": "" + } }, "effects": [], "sort": 300000, @@ -97,12 +101,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754180232243, - "modifiedTime": 1754353321403, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391703163, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!KRyrbSLVGreIOTZe" } diff --git a/src/packs/subclasses/feature_Regenerative_Reach_oLO3VjGkMcK1uvB9.json b/src/packs/subclasses/feature_Regenerative_Reach_oLO3VjGkMcK1uvB9.json index 9ef8efdf..0ba951b1 100644 --- a/src/packs/subclasses/feature_Regenerative_Reach_oLO3VjGkMcK1uvB9.json +++ b/src/packs/subclasses/feature_Regenerative_Reach_oLO3VjGkMcK1uvB9.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 11, + "artist": "" + } }, "effects": [], "sort": 200000, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754182966287, - "modifiedTime": 1754236486774, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391738116, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!oLO3VjGkMcK1uvB9" } diff --git a/src/packs/subclasses/feature_Reliable_Backup_QYNGdH37fsGuxS7L.json b/src/packs/subclasses/feature_Reliable_Backup_QYNGdH37fsGuxS7L.json index d3a5254f..66bb65a9 100644 --- a/src/packs/subclasses/feature_Reliable_Backup_QYNGdH37fsGuxS7L.json +++ b/src/packs/subclasses/feature_Reliable_Backup_QYNGdH37fsGuxS7L.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 20, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754322198870, - "modifiedTime": 1754322328469, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755392114116, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!QYNGdH37fsGuxS7L" } diff --git a/src/packs/subclasses/feature_Revenge_oNfA5F9cKwNR7joq.json b/src/packs/subclasses/feature_Revenge_oNfA5F9cKwNR7joq.json index 1d0406bd..83113e14 100644 --- a/src/packs/subclasses/feature_Revenge_oNfA5F9cKwNR7joq.json +++ b/src/packs/subclasses/feature_Revenge_oNfA5F9cKwNR7joq.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 2, - "keyIsID": false, "step": null } ], @@ -70,7 +69,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [], "sort": 500000, @@ -83,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754238182847, - "modifiedTime": 1754246061287, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391829666, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!oNfA5F9cKwNR7joq" } diff --git a/src/packs/subclasses/feature_Rise_to_the_Challenge_dcutk8RVOJ2sEkO1.json b/src/packs/subclasses/feature_Rise_to_the_Challenge_dcutk8RVOJ2sEkO1.json index 7e4ef685..c28c0e20 100644 --- a/src/packs/subclasses/feature_Rise_to_the_Challenge_dcutk8RVOJ2sEkO1.json +++ b/src/packs/subclasses/feature_Rise_to_the_Challenge_dcutk8RVOJ2sEkO1.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 24, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754256466148, - "modifiedTime": 1754256510431, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392416615, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!dcutk8RVOJ2sEkO1" } diff --git a/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json b/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json index 312e055b..799717c8 100644 --- a/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json +++ b/src/packs/subclasses/feature_Rousing_Speech_PCmYTX02JLzBpgml.json @@ -11,7 +11,7 @@ "type": "healing", "_id": "WNtHiko4DRGbxKnm", "systemPath": "actions", - "description": "

Once per long rest, you can give a heartfelt, inspiring speech. All allies within Far range clear 2 Stress.

", + "description": "

Once per long rest, you can give a heartfelt, inspiring speech. All allies within Far range clear 2 Stress.

", "chatDisplay": false, "actionType": "action", "cost": [ @@ -19,7 +19,6 @@ "scalable": false, "key": "hitPoints", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -85,7 +84,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + } }, "effects": [], "flags": {}, @@ -93,12 +97,12 @@ "compendiumSource": "Compendium.daggerheart.subclasses.Item.iLytX899psvrPRnG", "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754174646194, - "modifiedTime": 1754494763682, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391592956, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { "default": 0, diff --git a/src/packs/subclasses/feature_Ruthless_Predator_Qny2J3R35bvC0Cey.json b/src/packs/subclasses/feature_Ruthless_Predator_Qny2J3R35bvC0Cey.json index ac907b99..f53d7b4a 100644 --- a/src/packs/subclasses/feature_Ruthless_Predator_Qny2J3R35bvC0Cey.json +++ b/src/packs/subclasses/feature_Ruthless_Predator_Qny2J3R35bvC0Cey.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -36,16 +35,21 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Mark Stress", "img": "icons/creatures/mammals/wolf-shadow-black.webp", - "range": "" + "range": "self" } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + } }, "effects": [ { @@ -110,12 +114,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754266926055, - "modifiedTime": 1754267089385, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1756035422344, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!Qny2J3R35bvC0Cey" } diff --git a/src/packs/subclasses/feature_Sacred_Resonance_DxOAkDBfIMpXxAUD.json b/src/packs/subclasses/feature_Sacred_Resonance_DxOAkDBfIMpXxAUD.json index a610db7e..0ebbecc2 100644 --- a/src/packs/subclasses/feature_Sacred_Resonance_DxOAkDBfIMpXxAUD.json +++ b/src/packs/subclasses/feature_Sacred_Resonance_DxOAkDBfIMpXxAUD.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 21, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754353916777, - "modifiedTime": 1754354052548, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392223655, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!DxOAkDBfIMpXxAUD" } diff --git a/src/packs/subclasses/feature_Shadow_Stepper_hAwTXjhyphiE3aeW.json b/src/packs/subclasses/feature_Shadow_Stepper_hAwTXjhyphiE3aeW.json index 77e3504d..fe624444 100644 --- a/src/packs/subclasses/feature_Shadow_Stepper_hAwTXjhyphiE3aeW.json +++ b/src/packs/subclasses/feature_Shadow_Stepper_hAwTXjhyphiE3aeW.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -36,16 +35,21 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Mark Stress", "img": "icons/magic/unholy/projectile-smoke-trail-pink.webp", - "range": "" + "range": "far" } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 19, + "artist": "" + } }, "effects": [ { @@ -103,12 +107,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754318976447, - "modifiedTime": 1754323456453, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1756035450401, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!hAwTXjhyphiE3aeW" } diff --git a/src/packs/subclasses/feature_Slayer_1hF5KGKQc2VKT5O8.json b/src/packs/subclasses/feature_Slayer_1hF5KGKQc2VKT5O8.json index ef813ae1..ce038aef 100644 --- a/src/packs/subclasses/feature_Slayer_1hF5KGKQc2VKT5O8.json +++ b/src/packs/subclasses/feature_Slayer_1hF5KGKQc2VKT5O8.json @@ -14,7 +14,12 @@ }, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 24, + "artist": "" + } }, "effects": [], "sort": 0, @@ -27,12 +32,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754256326320, - "modifiedTime": 1754256425506, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392403783, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!1hF5KGKQc2VKT5O8" } diff --git a/src/packs/subclasses/feature_Sparing_Touch_GfOSgVJW8bS1OjNq.json b/src/packs/subclasses/feature_Sparing_Touch_GfOSgVJW8bS1OjNq.json index cf0a8f93..f5847708 100644 --- a/src/packs/subclasses/feature_Sparing_Touch_GfOSgVJW8bS1OjNq.json +++ b/src/packs/subclasses/feature_Sparing_Touch_GfOSgVJW8bS1OjNq.json @@ -19,15 +19,15 @@ "type": "healing", "_id": "aanLNQkeO2ZTIqBl", "systemPath": "actions", - "description": "

Once per long rest, touch a creature and clear 2 Hit Points or 2 Stress from them.

", + "description": "

Once per long rest, touch a creature and clear 2 Hit Points or 2 Stress from them.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": false, - "key": "GfOSgVJW8bS1OjNq", + "key": "resource", + "itemId": "GfOSgVJW8bS1OjNq", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -96,15 +96,15 @@ "type": "healing", "_id": "cWdzCQJv8RFfi2NR", "systemPath": "actions", - "description": "

Once per long rest, touch a creature and clear 2 Hit Points or 2 Stress from them.

", + "description": "

Once per long rest, touch a creature and clear 2 Hit Points or 2 Stress from them.

", "chatDisplay": true, "actionType": "action", "cost": [ { - "scalable": false, - "key": "GfOSgVJW8bS1OjNq", + "key": "resource", + "itemId": "GfOSgVJW8bS1OjNq", "value": 1, - "keyIsID": true, + "scalable": false, "step": null, "consumeOnSuccess": false } @@ -171,7 +171,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 21, + "artist": "" + } }, "effects": [], "sort": 0, @@ -184,12 +189,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.2.0", "createdTime": 1754353243691, - "modifiedTime": 1754500973073, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1756325575182, + "lastModifiedBy": "bjJtdJOhqWr47GhC" }, "_key": "!items!GfOSgVJW8bS1OjNq" } diff --git a/src/packs/subclasses/feature_Spirit_Weapon_McoS0RxNLOg3SfSt.json b/src/packs/subclasses/feature_Spirit_Weapon_McoS0RxNLOg3SfSt.json index ca08ad1f..09bfce1e 100644 --- a/src/packs/subclasses/feature_Spirit_Weapon_McoS0RxNLOg3SfSt.json +++ b/src/packs/subclasses/feature_Spirit_Weapon_McoS0RxNLOg3SfSt.json @@ -12,7 +12,7 @@ "type": "effect", "_id": "TDvWFqAxu7V33UIC", "systemPath": "actions", - "description": "

You can mark a Stress to target an additional adversary within range with the same attack roll.

", + "description": "

You can mark a Stress to target an additional adversary within range with the same attack roll.

", "chatDisplay": true, "actionType": "action", "cost": [ @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,7 +41,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 21, + "artist": "" + } }, "effects": [], "sort": 0, @@ -55,12 +59,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754353023665, - "modifiedTime": 1754353132278, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392178319, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!McoS0RxNLOg3SfSt" } diff --git a/src/packs/subclasses/feature_Thrive_in_Chaos_1nmFmkNXY6OYyyju.json b/src/packs/subclasses/feature_Thrive_in_Chaos_1nmFmkNXY6OYyyju.json index 9563a324..953802de 100644 --- a/src/packs/subclasses/feature_Thrive_in_Chaos_1nmFmkNXY6OYyyju.json +++ b/src/packs/subclasses/feature_Thrive_in_Chaos_1nmFmkNXY6OYyyju.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -46,7 +45,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 26, + "artist": "" + } }, "effects": [], "sort": 0, @@ -59,12 +63,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754254574860, - "modifiedTime": 1754254657593, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392589991, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!1nmFmkNXY6OYyyju" } diff --git a/src/packs/subclasses/feature_Transcendence_th6HZwEFnVBjUtqm.json b/src/packs/subclasses/feature_Transcendence_th6HZwEFnVBjUtqm.json index cf2c658d..44ea1104 100644 --- a/src/packs/subclasses/feature_Transcendence_th6HZwEFnVBjUtqm.json +++ b/src/packs/subclasses/feature_Transcendence_th6HZwEFnVBjUtqm.json @@ -20,7 +20,6 @@ "scalable": false, "key": "hitPoints", "value": 1, - "keyIsID": false, "step": null, "consumeOnSuccess": false } @@ -42,7 +41,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + } }, "effects": [ { @@ -76,7 +80,7 @@ "startRound": null, "startTurn": null }, - "description": "

+4 bonus to your Severe threshold

", + "description": "

+4 bonus to your Severe threshold

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -118,7 +122,7 @@ "startRound": null, "startTurn": null }, - "description": "

+1 bonus to a character trait of your choice

", + "description": "

+1 bonus to a character trait of your choice

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -167,7 +171,7 @@ "startRound": null, "startTurn": null }, - "description": "

+1 bonus to your Proficiency

", + "description": "

+1 bonus to your Proficiency

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -209,7 +213,7 @@ "startRound": null, "startTurn": null }, - "description": "

+2 bonus to your Evasion

", + "description": "

+2 bonus to your Evasion

", "origin": null, "tint": "#ffffff", "transfer": true, @@ -238,12 +242,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754349515898, - "modifiedTime": 1754497438787, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392338476, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!th6HZwEFnVBjUtqm" } diff --git a/src/packs/subclasses/feature_Undaunted_866b2jjyzXP8nPRQ.json b/src/packs/subclasses/feature_Undaunted_866b2jjyzXP8nPRQ.json index 48feb948..16bcf7d9 100644 --- a/src/packs/subclasses/feature_Undaunted_866b2jjyzXP8nPRQ.json +++ b/src/packs/subclasses/feature_Undaunted_866b2jjyzXP8nPRQ.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [ { @@ -80,12 +85,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754243538688, - "modifiedTime": 1754244861863, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391864452, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!866b2jjyzXP8nPRQ" } diff --git a/src/packs/subclasses/feature_Unrelenting_4qP7bNyxVHBmr4Rb.json b/src/packs/subclasses/feature_Unrelenting_4qP7bNyxVHBmr4Rb.json index 14420491..da75c64e 100644 --- a/src/packs/subclasses/feature_Unrelenting_4qP7bNyxVHBmr4Rb.json +++ b/src/packs/subclasses/feature_Unrelenting_4qP7bNyxVHBmr4Rb.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [ { @@ -80,12 +85,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754242120515, - "modifiedTime": 1754242888502, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391840785, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!4qP7bNyxVHBmr4Rb" } diff --git a/src/packs/subclasses/feature_Unwavering_WBiFZaYNoQNhysmN.json b/src/packs/subclasses/feature_Unwavering_WBiFZaYNoQNhysmN.json index 0675d2c3..5a9f6cf6 100644 --- a/src/packs/subclasses/feature_Unwavering_WBiFZaYNoQNhysmN.json +++ b/src/packs/subclasses/feature_Unwavering_WBiFZaYNoQNhysmN.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + } }, "effects": [ { @@ -80,12 +85,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754236984012, - "modifiedTime": 1754245935236, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391809567, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!WBiFZaYNoQNhysmN" } diff --git a/src/packs/subclasses/feature_Vanishing_Act_iyIg1VLwO8C6jvFZ.json b/src/packs/subclasses/feature_Vanishing_Act_iyIg1VLwO8C6jvFZ.json index 5eda8565..c8065dbb 100644 --- a/src/packs/subclasses/feature_Vanishing_Act_iyIg1VLwO8C6jvFZ.json +++ b/src/packs/subclasses/feature_Vanishing_Act_iyIg1VLwO8C6jvFZ.json @@ -20,7 +20,6 @@ "scalable": false, "key": "stress", "value": 1, - "keyIsID": false, "step": null } ], @@ -36,23 +35,28 @@ } ], "target": { - "type": "any", + "type": "self", "amount": null }, "name": "Mark Stress", "img": "icons/magic/unholy/strike-hand-glow-pink.webp", - "range": "" + "range": "self" } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 19, + "artist": "" + } }, "effects": [ { "name": "Vanishing Act: Cloaked", "img": "icons/magic/unholy/strike-hand-glow-pink.webp", "origin": "Compendium.daggerheart.subclasses.Item.iyIg1VLwO8C6jvFZ", - "transfer": true, + "transfer": false, "_id": "czrwqq44sEr0uJ8O", "type": "base", "system": { @@ -83,12 +87,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", "systemVersion": "0.0.1", "createdTime": 1754322584884, - "modifiedTime": 1754352062188, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1756035920880, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items.effects!iyIg1VLwO8C6jvFZ.czrwqq44sEr0uJ8O" } @@ -103,12 +107,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.1.0", "createdTime": 1754321406972, - "modifiedTime": 1754322584899, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1756035929726, + "lastModifiedBy": "vUIbuan0U50nfKBE" }, "_key": "!items!iyIg1VLwO8C6jvFZ" } diff --git a/src/packs/subclasses/feature_Virtuoso_kn2t409o0FDFQieo.json b/src/packs/subclasses/feature_Virtuoso_kn2t409o0FDFQieo.json index 1f7c6eec..26f00fb3 100644 --- a/src/packs/subclasses/feature_Virtuoso_kn2t409o0FDFQieo.json +++ b/src/packs/subclasses/feature_Virtuoso_kn2t409o0FDFQieo.json @@ -8,7 +8,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + } }, "effects": [], "flags": {}, @@ -16,12 +21,12 @@ "compendiumSource": "Compendium.daggerheart.subclasses.Item.lmUplK4FSH6EOTKJ", "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754174646194, - "modifiedTime": 1754236506280, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755391637042, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "ownership": { "default": 0, diff --git a/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json b/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json index 3d6055d2..49fa4398 100644 --- a/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json +++ b/src/packs/subclasses/feature_Warden_s_Protection_2F1bUFY80oce97C9.json @@ -78,7 +78,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 11, + "artist": "" + } }, "effects": [], "sort": 300000, @@ -91,12 +96,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754183079986, - "modifiedTime": 1754496541966, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755391744012, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!2F1bUFY80oce97C9" } diff --git a/src/packs/subclasses/feature_Weapon_Specialist_HAqtoKUTrk8Mip1n.json b/src/packs/subclasses/feature_Weapon_Specialist_HAqtoKUTrk8Mip1n.json index a4937457..4773af61 100644 --- a/src/packs/subclasses/feature_Weapon_Specialist_HAqtoKUTrk8Mip1n.json +++ b/src/packs/subclasses/feature_Weapon_Specialist_HAqtoKUTrk8Mip1n.json @@ -17,7 +17,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -65,7 +64,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 24, + "artist": "" + } }, "effects": [], "sort": 0, @@ -78,12 +82,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754256525016, - "modifiedTime": 1754256712476, - "lastModifiedBy": "MQSznptE5yLT7kj8" + "modifiedTime": 1755392424300, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!HAqtoKUTrk8Mip1n" } diff --git a/src/packs/subclasses/feature_Well_Connected_7KnSOazixXXSnspj.json b/src/packs/subclasses/feature_Well_Connected_7KnSOazixXXSnspj.json index 474dbb8a..77edd828 100644 --- a/src/packs/subclasses/feature_Well_Connected_7KnSOazixXXSnspj.json +++ b/src/packs/subclasses/feature_Well_Connected_7KnSOazixXXSnspj.json @@ -9,7 +9,12 @@ "resource": null, "actions": {}, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 20, + "artist": "" + } }, "effects": [], "sort": 0, @@ -22,12 +27,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754319141863, - "modifiedTime": 1754319354348, - "lastModifiedBy": "LgnbNMLaxandgMQq" + "modifiedTime": 1755392041962, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!7KnSOazixXXSnspj" } diff --git a/src/packs/subclasses/feature_Wings_of_Light_KkQH0tYhagIqe2MT.json b/src/packs/subclasses/feature_Wings_of_Light_KkQH0tYhagIqe2MT.json index 034ea026..c46a1ecf 100644 --- a/src/packs/subclasses/feature_Wings_of_Light_KkQH0tYhagIqe2MT.json +++ b/src/packs/subclasses/feature_Wings_of_Light_KkQH0tYhagIqe2MT.json @@ -40,7 +40,6 @@ "actionType": "action", "cost": [ { - "keyIsID": false, "key": "hope", "value": 1, "scalable": false, @@ -70,7 +69,12 @@ } }, "originItemType": null, - "originId": null + "originId": null, + "attribution": { + "source": "Daggerheart SRD", + "page": 21, + "artist": "" + } }, "effects": [ { @@ -141,12 +145,12 @@ "compendiumSource": null, "duplicateSource": null, "exportSource": null, - "coreVersion": "13.346", + "coreVersion": "13.347", "systemId": "daggerheart", - "systemVersion": "0.0.1", + "systemVersion": "1.0.5", "createdTime": 1754354510934, - "modifiedTime": 1754355070373, - "lastModifiedBy": "Q9NoTaEarn3VMS6Z" + "modifiedTime": 1755392171336, + "lastModifiedBy": "VZIeX2YDvX338Zvr" }, "_key": "!items!KkQH0tYhagIqe2MT" } diff --git a/src/packs/subclasses/subclass_Beastbound_TIUsIlTS1WkK5vr2.json b/src/packs/subclasses/subclass_Beastbound_TIUsIlTS1WkK5vr2.json index 622fb36a..fcfc2cc8 100644 --- a/src/packs/subclasses/subclass_Beastbound_TIUsIlTS1WkK5vr2.json +++ b/src/packs/subclasses/subclass_Beastbound_TIUsIlTS1WkK5vr2.json @@ -31,6 +31,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.BTyfve69LKqoOi9S" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Call_Of_The_Brave_NAFU9roaVG7f3RNJ.json b/src/packs/subclasses/subclass_Call_Of_The_Brave_NAFU9roaVG7f3RNJ.json index 46f7f2af..0ce7cd36 100644 --- a/src/packs/subclasses/subclass_Call_Of_The_Brave_NAFU9roaVG7f3RNJ.json +++ b/src/packs/subclasses/subclass_Call_Of_The_Brave_NAFU9roaVG7f3RNJ.json @@ -27,6 +27,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 24, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.xCUWwJz4WSthvLfy" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Call_Of_The_Slayer_bcNe5qP3o6CKadhK.json b/src/packs/subclasses/subclass_Call_Of_The_Slayer_bcNe5qP3o6CKadhK.json index bbcf6ca6..f14668b2 100644 --- a/src/packs/subclasses/subclass_Call_Of_The_Slayer_bcNe5qP3o6CKadhK.json +++ b/src/packs/subclasses/subclass_Call_Of_The_Slayer_bcNe5qP3o6CKadhK.json @@ -23,6 +23,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 24, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.xCUWwJz4WSthvLfy" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Divine_Wielder_M5mpGoAj8LRkylrY.json b/src/packs/subclasses/subclass_Divine_Wielder_M5mpGoAj8LRkylrY.json index 9a7b9c96..9ae4872c 100644 --- a/src/packs/subclasses/subclass_Divine_Wielder_M5mpGoAj8LRkylrY.json +++ b/src/packs/subclasses/subclass_Divine_Wielder_M5mpGoAj8LRkylrY.json @@ -27,6 +27,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 21, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.5ZnlJ5bEoyOTkUJv" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Elemental_Origin_wg1H0hROc2acHwZh.json b/src/packs/subclasses/subclass_Elemental_Origin_wg1H0hROc2acHwZh.json index f1f85e42..ac00d7ad 100644 --- a/src/packs/subclasses/subclass_Elemental_Origin_wg1H0hROc2acHwZh.json +++ b/src/packs/subclasses/subclass_Elemental_Origin_wg1H0hROc2acHwZh.json @@ -23,6 +23,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.DchOzHcWIJE9FKcR" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Nightwalker_h161OSIK24Up4qNd.json b/src/packs/subclasses/subclass_Nightwalker_h161OSIK24Up4qNd.json index 49f9a520..cf2ff2d5 100644 --- a/src/packs/subclasses/subclass_Nightwalker_h161OSIK24Up4qNd.json +++ b/src/packs/subclasses/subclass_Nightwalker_h161OSIK24Up4qNd.json @@ -31,6 +31,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 19, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.CvHlkHZfpMiCz5uT" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Primal_Origin_GLpRVxnY5E82khxH.json b/src/packs/subclasses/subclass_Primal_Origin_GLpRVxnY5E82khxH.json index 37619136..b7bb2dc6 100644 --- a/src/packs/subclasses/subclass_Primal_Origin_GLpRVxnY5E82khxH.json +++ b/src/packs/subclasses/subclass_Primal_Origin_GLpRVxnY5E82khxH.json @@ -23,6 +23,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 22, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.DchOzHcWIJE9FKcR" }, "effects": [], diff --git a/src/packs/subclasses/subclass_School_Of_Knowledge_qqQlgCqhOivUFoQn.json b/src/packs/subclasses/subclass_School_Of_Knowledge_qqQlgCqhOivUFoQn.json index 7ed07d06..eb21a9b2 100644 --- a/src/packs/subclasses/subclass_School_Of_Knowledge_qqQlgCqhOivUFoQn.json +++ b/src/packs/subclasses/subclass_School_Of_Knowledge_qqQlgCqhOivUFoQn.json @@ -35,6 +35,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.5LwX4m8ziY3F1ZGC" }, "effects": [], diff --git a/src/packs/subclasses/subclass_School_Of_War_4y9Ph7RsCIAbkwTk.json b/src/packs/subclasses/subclass_School_Of_War_4y9Ph7RsCIAbkwTk.json index 856031d8..18468eee 100644 --- a/src/packs/subclasses/subclass_School_Of_War_4y9Ph7RsCIAbkwTk.json +++ b/src/packs/subclasses/subclass_School_Of_War_4y9Ph7RsCIAbkwTk.json @@ -35,6 +35,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 25, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.5LwX4m8ziY3F1ZGC" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Stalwart_rKRxFBlkbh9cDK8K.json b/src/packs/subclasses/subclass_Stalwart_rKRxFBlkbh9cDK8K.json index b75f88d0..af30bf9c 100644 --- a/src/packs/subclasses/subclass_Stalwart_rKRxFBlkbh9cDK8K.json +++ b/src/packs/subclasses/subclass_Stalwart_rKRxFBlkbh9cDK8K.json @@ -35,6 +35,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.nRAyoC0fOzXPDa4z" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Syndicate_95QxNZwgyEm1LqdG.json b/src/packs/subclasses/subclass_Syndicate_95QxNZwgyEm1LqdG.json index 2cef9bbd..4318cf68 100644 --- a/src/packs/subclasses/subclass_Syndicate_95QxNZwgyEm1LqdG.json +++ b/src/packs/subclasses/subclass_Syndicate_95QxNZwgyEm1LqdG.json @@ -23,6 +23,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 20, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.CvHlkHZfpMiCz5uT" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Troubadour_ld8MIvk0xVJydSBz.json b/src/packs/subclasses/subclass_Troubadour_ld8MIvk0xVJydSBz.json index eb51d60e..d3ff41ce 100644 --- a/src/packs/subclasses/subclass_Troubadour_ld8MIvk0xVJydSBz.json +++ b/src/packs/subclasses/subclass_Troubadour_ld8MIvk0xVJydSBz.json @@ -22,6 +22,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.vegl3bFOq3pcFTWT" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Vengeance_SUo8NPBPO8aN193u.json b/src/packs/subclasses/subclass_Vengeance_SUo8NPBPO8aN193u.json index fedf5f1a..d8bf2b7f 100644 --- a/src/packs/subclasses/subclass_Vengeance_SUo8NPBPO8aN193u.json +++ b/src/packs/subclasses/subclass_Vengeance_SUo8NPBPO8aN193u.json @@ -27,6 +27,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 16, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.nRAyoC0fOzXPDa4z" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Warden_of_Renewal_xp0XMjYT85Q7E90o.json b/src/packs/subclasses/subclass_Warden_of_Renewal_xp0XMjYT85Q7E90o.json index abe97d5e..07606cc9 100644 --- a/src/packs/subclasses/subclass_Warden_of_Renewal_xp0XMjYT85Q7E90o.json +++ b/src/packs/subclasses/subclass_Warden_of_Renewal_xp0XMjYT85Q7E90o.json @@ -30,6 +30,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 11, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.ZNwUTCyGCEcidZFv" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Warden_of_the_Elements_W9hs5kxOWeY7eA4Q.json b/src/packs/subclasses/subclass_Warden_of_the_Elements_W9hs5kxOWeY7eA4Q.json index 43642e89..40e39611 100644 --- a/src/packs/subclasses/subclass_Warden_of_the_Elements_W9hs5kxOWeY7eA4Q.json +++ b/src/packs/subclasses/subclass_Warden_of_the_Elements_W9hs5kxOWeY7eA4Q.json @@ -22,6 +22,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 11, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.ZNwUTCyGCEcidZFv" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Wayfinder_zsUglcU4NgZ8tNgZ.json b/src/packs/subclasses/subclass_Wayfinder_zsUglcU4NgZ8tNgZ.json index a308d587..c8261fb8 100644 --- a/src/packs/subclasses/subclass_Wayfinder_zsUglcU4NgZ8tNgZ.json +++ b/src/packs/subclasses/subclass_Wayfinder_zsUglcU4NgZ8tNgZ.json @@ -27,6 +27,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 17, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.BTyfve69LKqoOi9S" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Winged_Sentinel_y7ERWRIpJsdP9Re4.json b/src/packs/subclasses/subclass_Winged_Sentinel_y7ERWRIpJsdP9Re4.json index f71a1fcb..e6089c6f 100644 --- a/src/packs/subclasses/subclass_Winged_Sentinel_y7ERWRIpJsdP9Re4.json +++ b/src/packs/subclasses/subclass_Winged_Sentinel_y7ERWRIpJsdP9Re4.json @@ -27,6 +27,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 21, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.5ZnlJ5bEoyOTkUJv" }, "effects": [], diff --git a/src/packs/subclasses/subclass_Wordsmith_XTSODVM8st75Os8M.json b/src/packs/subclasses/subclass_Wordsmith_XTSODVM8st75Os8M.json index 6c975ca6..8fdc305c 100644 --- a/src/packs/subclasses/subclass_Wordsmith_XTSODVM8st75Os8M.json +++ b/src/packs/subclasses/subclass_Wordsmith_XTSODVM8st75Os8M.json @@ -26,6 +26,11 @@ ], "featureState": 1, "isMulticlass": false, + "attribution": { + "source": "Daggerheart SRD", + "page": 9, + "artist": "" + }, "linkedClass": "Compendium.daggerheart.classes.Item.vegl3bFOq3pcFTWT" }, "effects": [], diff --git a/styles/daggerheart.less b/styles/daggerheart.less index efff7499..187402fb 100755 --- a/styles/daggerheart.less +++ b/styles/daggerheart.less @@ -15,3 +15,5 @@ @import './less/ux/index.less'; @import '../build/tagify.css'; + +@import './less/utils/mixin.less'; diff --git a/styles/less/dialog/actions/action-list.less b/styles/less/dialog/actions/action-list.less index 33b3d0bb..a0b079a7 100644 --- a/styles/less/dialog/actions/action-list.less +++ b/styles/less/dialog/actions/action-list.less @@ -32,9 +32,7 @@ width: 30px; } span { - font-family: @font-body; flex: 1; - font-weight: bold; } } } @@ -55,7 +53,6 @@ display: flex; align-items: center; gap: 10px; - font-family: @font-body; flex: 1; i { text-align: center; diff --git a/styles/less/dialog/attribution/sheet.less b/styles/less/dialog/attribution/sheet.less new file mode 100644 index 00000000..d20b094d --- /dev/null +++ b/styles/less/dialog/attribution/sheet.less @@ -0,0 +1,23 @@ +.daggerheart.dh-style.dialog.attribution { + .window-content { + padding-top: 0; + } + + .attribution-container { + display: flex; + flex-direction: column; + gap: 8px; + + h4 { + margin-bottom: 0; + } + + footer { + display: flex; + + button { + flex: 1; + } + } + } +} diff --git a/styles/less/dialog/beastform/sheet.less b/styles/less/dialog/beastform/sheet.less index 26b6072a..9e87f53b 100644 --- a/styles/less/dialog/beastform/sheet.less +++ b/styles/less/dialog/beastform/sheet.less @@ -41,7 +41,7 @@ display: flex; flex-wrap: wrap; text-align: center; - font-size: 16px; + font-size: var(--font-size-16); margin: 0 4px; border: 1px solid light-dark(@dark-blue, @golden); border-radius: 6px; @@ -135,7 +135,7 @@ align-items: center; i { - font-size: 24px; + font-size: var(--font-size-24); } } @@ -210,7 +210,6 @@ button { flex: 1; - font-family: @font-body; font-weight: bold; height: 40px; } diff --git a/styles/less/dialog/character-creation/selections-container.less b/styles/less/dialog/character-creation/selections-container.less index bc7a6987..1de3d870 100644 --- a/styles/less/dialog/character-creation/selections-container.less +++ b/styles/less/dialog/character-creation/selections-container.less @@ -75,7 +75,7 @@ label { position: absolute; - font-size: 18px; + font-size: var(--font-size-18); font-weight: bold; padding: 0 2px; background-image: url(../assets/parchments/dh-parchment-light.png); @@ -141,7 +141,7 @@ .ancestry-preview-feature { flex: 1; - font-size: 14px; + font-size: var(--font-size-14); white-space: wrap; padding: 0 2px; border: 1px solid light-dark(@golden, @dark-blue); @@ -178,7 +178,7 @@ legend { margin-left: auto; margin-right: auto; - font-size: 28px; + font-size: var(--font-size-28); font-weight: bold; padding: 0 8px; } @@ -191,7 +191,7 @@ justify-content: center; legend { - font-size: 20px; + font-size: var(--font-size-20); white-space: nowrap; } @@ -343,7 +343,7 @@ border-radius: 50%; height: 20px; width: 20px; - font-size: 14px; + font-size: var(--font-size-14); display: flex; align-items: center; justify-content: center; @@ -358,7 +358,7 @@ .descriptor { position: absolute; bottom: -8px; - font-size: 12px; + font-size: var(--font-size-12); border-radius: 8px; width: 56px; text-align: center; @@ -400,7 +400,7 @@ legend { margin-left: auto; margin-right: auto; - font-size: 28px; + font-size: var(--font-size-28); font-weight: bold; padding: 0 8px; white-space: nowrap; @@ -444,11 +444,11 @@ label { position: absolute; top: -8px; - font-size: 12px; + font-size: var(--font-size-12); white-space: nowrap; border: 1px solid light-dark(@dark-blue, @golden); border-radius: 6px; - color: light-dark(@beige, @dark); + color: @dark; background-image: url('../assets/parchments/dh-parchment-light.png'); padding: 0 2px; } @@ -472,7 +472,7 @@ legend { margin-left: auto; margin-right: auto; - font-size: 12px; + font-size: var(--font-size-12); } .suggestion-inner-container { @@ -490,7 +490,7 @@ label { position: absolute; top: -2px; - font-size: 12px; + font-size: var(--font-size-12); } img { diff --git a/styles/less/dialog/character-creation/tab-navigation.less b/styles/less/dialog/character-creation/tab-navigation.less index 709e0adc..36b89d5a 100644 --- a/styles/less/dialog/character-creation/tab-navigation.less +++ b/styles/less/dialog/character-creation/tab-navigation.less @@ -7,7 +7,6 @@ border-top: 0; a { - font-family: @font-body; color: light-dark(@dark-blue, @golden); &[disabled] { diff --git a/styles/less/dialog/damage-reduction/damage-reduction-container.less b/styles/less/dialog/damage-reduction/damage-reduction-container.less index 9e1d1472..2f343fb3 100644 --- a/styles/less/dialog/damage-reduction/damage-reduction-container.less +++ b/styles/less/dialog/damage-reduction/damage-reduction-container.less @@ -76,7 +76,7 @@ border-radius: 6px; height: 26px; padding: 0 1px; - font-size: 18px; + font-size: var(--font-size-18); display: flex; align-items: center; justify-content: center; @@ -108,7 +108,7 @@ border-radius: 6px; height: 26px; padding: 0 4px; - font-size: 18px; + font-size: var(--font-size-18); display: flex; align-items: center; justify-content: center; diff --git a/styles/less/dialog/death-move/death-move-container.less b/styles/less/dialog/death-move/death-move-container.less index d5982131..e5803d95 100644 --- a/styles/less/dialog/death-move/death-move-container.less +++ b/styles/less/dialog/death-move/death-move-container.less @@ -26,7 +26,6 @@ display: flex; align-items: center; gap: 10px; - font-family: @font-body; cursor: pointer; flex: 1; i { @@ -50,7 +49,6 @@ button { flex: 1; height: 40px; - font-family: @font-body; font-weight: 600; } } diff --git a/styles/less/dialog/dice-roll/roll-selection.less b/styles/less/dialog/dice-roll/roll-selection.less index d536ee04..0f082460 100644 --- a/styles/less/dialog/dice-roll/roll-selection.less +++ b/styles/less/dialog/dice-roll/roll-selection.less @@ -11,7 +11,14 @@ .application.daggerheart.dialog.dh-style.views.roll-selection { .dialog-header { display: flex; - justify-content: center; + flex-direction: column; + align-items: center; + gap: 4px; + + .dialog-header-inner { + display: flex; + justify-content: center; + } h1 { width: auto; @@ -23,7 +30,7 @@ width: auto; opacity: 0.3; border-radius: 50%; - font-size: 18px; + font-size: var(--font-size-18); font-weight: bold; &:hover { @@ -37,6 +44,29 @@ } } } + + .tag-team-controller { + display: flex; + align-items: center; + border-radius: 5px; + width: fit-content; + gap: 5px; + cursor: pointer; + padding: 5px; + background: light-dark(@dark-blue-10, @golden-10); + color: light-dark(@dark-blue, @golden); + + .label { + font-style: normal; + font-weight: 400; + font-size: var(--font-size-14); + line-height: 17px; + } + + &.selected { + background: light-dark(@dark-blue-40, @golden-40); + } + } } .roll-dialog-container { @@ -74,7 +104,7 @@ font-family: @font-subtitle; font-style: normal; font-weight: 700; - font-size: 16px; + font-size: var(--font-size-16); line-height: 19px; color: light-dark(@dark, @beige); @@ -100,10 +130,9 @@ color: light-dark(@dark-blue, @golden); .label { - font-family: @font-body; font-style: normal; font-weight: 400; - font-size: 14px; + font-size: var(--font-size-14); line-height: 17px; } @@ -126,10 +155,9 @@ transition: all 0.3s ease; .label { - font-family: @font-body; font-style: normal; font-weight: 400; - font-size: 14px; + font-size: var(--font-size-14); line-height: 17px; } @@ -174,7 +202,6 @@ flex: 1; height: 100%; font-weight: bold; - font-family: @font-body; } } } diff --git a/styles/less/dialog/downtime/downtime-container.less b/styles/less/dialog/downtime/downtime-container.less index fe1344cd..eb615ef0 100644 --- a/styles/less/dialog/downtime/downtime-container.less +++ b/styles/less/dialog/downtime/downtime-container.less @@ -15,8 +15,6 @@ } .daggerheart.dh-style.views.downtime { - font-family: @font-body; - .downtime-container { .activities-grouping { width: 280px; @@ -37,9 +35,9 @@ gap: 4px; .activity-marker { - font-size: 8px; + font-size: 0.5rem; flex: none; - color: light-dark(#18162e, #f3c267); + color: light-dark(@dark-blue, @golden); margin-right: 4px; } @@ -56,7 +54,7 @@ } .activity-selected-marker { - font-size: 14px; + font-size: var(--font-size-14); border: 1px solid light-dark(@dark-blue, @golden); border-radius: 6px; color: light-dark(@dark, @beige); @@ -73,7 +71,7 @@ display: grid; grid-template-columns: 1fr 1fr; gap: 4px; - font-size: 12px; + font-size: var(--font-size-12); &.wide { grid-template-columns: 1fr 1fr 1fr 1fr; @@ -93,9 +91,6 @@ .refreshable-title { font-weight: bold; } - - .refreshable-name { - } } } @@ -107,7 +102,6 @@ button { flex: 1; height: 40px; - font-family: @font-body; font-weight: 600; } } diff --git a/styles/less/dialog/group-roll/group-roll.less b/styles/less/dialog/group-roll/group-roll.less new file mode 100644 index 00000000..f2895d31 --- /dev/null +++ b/styles/less/dialog/group-roll/group-roll.less @@ -0,0 +1,50 @@ +@import '../../utils/colors.less'; + +.application.daggerheart.group-roll { + fieldset.one-column { + min-width: 500px; + margin-bottom: 10px; + } + .actor-item { + display: flex; + align-items: center; + gap: 15px; + width: 100%; + + img { + height: 40px; + width: 40px; + border-radius: 50%; + object-fit: cover; + } + + .actor-info { + display: flex; + flex-direction: column; + gap: 10px; + + .actor-check-info { + display: flex; + gap: 10px; + + .form-fields { + display: flex; + gap: 5px; + align-items: center; + + input { + max-width: 40px; + text-align: center; + } + } + } + } + + .controls { + margin-left: auto; + } + } + .tooltip-container { + width: 100%; + } +} diff --git a/styles/less/dialog/image-select/sheet.less b/styles/less/dialog/image-select/sheet.less new file mode 100644 index 00000000..1548044a --- /dev/null +++ b/styles/less/dialog/image-select/sheet.less @@ -0,0 +1,33 @@ +.daggerheart.dh-style.dialog.image-select { + display: flex; + flex-direction: column; + + .images-container { + display: flex; + flex-wrap: wrap; + gap: 8px; + + img { + width: 136px; + height: 136px; + border: 1px solid light-dark(@dark-blue, @golden); + border-radius: 6px; + opacity: 0.4; + + &.selected { + opacity: 1; + } + } + } + + .footer { + margin-top: 8px; + display: flex; + align-items: center; + gap: 8px; + + button { + flex: 1; + } + } +} diff --git a/styles/less/dialog/index.less b/styles/less/dialog/index.less index 05593d44..0f2b053b 100644 --- a/styles/less/dialog/index.less +++ b/styles/less/dialog/index.less @@ -1,3 +1,4 @@ +@import './attribution/sheet.less'; @import './level-up/navigation-container.less'; @import './level-up/selections-container.less'; @import './level-up/sheet.less'; @@ -29,3 +30,8 @@ @import './multiclass-choice/sheet.less'; @import './reroll-dialog/sheet.less'; + +@import './group-roll/group-roll.less'; +@import './tag-team-dialog/sheet.less'; + +@import './image-select/sheet.less'; diff --git a/styles/less/dialog/level-up/footer.less b/styles/less/dialog/level-up/footer.less index daf25b60..2a177102 100644 --- a/styles/less/dialog/level-up/footer.less +++ b/styles/less/dialog/level-up/footer.less @@ -10,7 +10,6 @@ gap: 10px; button { - font-family: @font-body; font-weight: bold; height: 40px; } diff --git a/styles/less/dialog/level-up/navigation-container.less b/styles/less/dialog/level-up/navigation-container.less index d8872931..282d683f 100644 --- a/styles/less/dialog/level-up/navigation-container.less +++ b/styles/less/dialog/level-up/navigation-container.less @@ -19,7 +19,6 @@ a, span { - font-family: @font-body; color: light-dark(@dark-blue, @golden); } } diff --git a/styles/less/dialog/level-up/selections-container.less b/styles/less/dialog/level-up/selections-container.less index a13c9ff3..6a551865 100644 --- a/styles/less/dialog/level-up/selections-container.less +++ b/styles/less/dialog/level-up/selections-container.less @@ -21,7 +21,7 @@ background: light-dark(@dark-blue-40, @golden-40); border-radius: 3px; padding: 5px; - font-size: 16px; + font-size: var(--font-size-16); gap: 4px; width: 100%; @@ -30,10 +30,6 @@ width: 80%; } - span { - font-family: @font-body; - } - .achievement-experience-marker { border: 1px solid; border-radius: 50%; @@ -42,7 +38,7 @@ display: flex; align-items: center; justify-content: center; - font-size: 12px; + font-size: var(--font-size-12); } } } @@ -100,7 +96,7 @@ width: 54px; border-radius: 50%; border: 2px solid; - font-size: 48px; + font-size: var(--font-size-48); display: flex; align-items: center; justify-content: center; @@ -127,7 +123,6 @@ margin-bottom: 10px; h3 { - font-family: @font-subtitle; color: light-dark(@dark, @beige); margin: 0; white-space: nowrap; @@ -138,7 +133,7 @@ .levelup-selections-title { margin-left: auto; margin-right: auto; - font-size: 22px; + font-size: 1.375rem; font-weight: bold; padding: 0 12px; } diff --git a/styles/less/dialog/level-up/summary-container.less b/styles/less/dialog/level-up/summary-container.less index eb760cde..d67abff6 100644 --- a/styles/less/dialog/level-up/summary-container.less +++ b/styles/less/dialog/level-up/summary-container.less @@ -9,7 +9,6 @@ margin-bottom: 10px; h3 { - font-family: @font-subtitle; color: light-dark(@dark, @beige); margin: 0; white-space: nowrap; @@ -42,8 +41,7 @@ display: flex; align-items: center; gap: 4px; - font-size: 14px; - font-family: @font-body; + font-size: var(--font-size-14); color: light-dark(@dark, @beige); } @@ -51,8 +49,7 @@ display: flex; align-items: center; gap: 4px; - font-size: 16px; - font-family: @font-subtitle; + font-size: var(--font-size-16); color: light-dark(@dark, @beige); margin-bottom: 5px; } @@ -65,8 +62,7 @@ border: 2px solid; border-radius: 3px; padding: 0 4px; - font-size: 14px; - font-family: @font-body; + font-size: var(--font-size-14); color: light-dark(@dark, @beige); } } diff --git a/styles/less/dialog/level-up/tiers-container.less b/styles/less/dialog/level-up/tiers-container.less index 225c31fb..270b9b80 100644 --- a/styles/less/dialog/level-up/tiers-container.less +++ b/styles/less/dialog/level-up/tiers-container.less @@ -21,7 +21,7 @@ legend { margin-left: auto; margin-right: auto; - font-size: 22px; + font-size: 1.375rem; font-weight: bold; padding: 0 12px; } @@ -60,8 +60,7 @@ } .checkbox-group-label { - font-family: @font-body; - font-size: 12px; + font-size: var(--font-size-12); font-style: italic; } } diff --git a/styles/less/dialog/multiclass-choice/sheet.less b/styles/less/dialog/multiclass-choice/sheet.less index 93a8540b..1f38449a 100644 --- a/styles/less/dialog/multiclass-choice/sheet.less +++ b/styles/less/dialog/multiclass-choice/sheet.less @@ -1,3 +1,5 @@ +@import '../../utils/colors.less'; + .theme-light .daggerheart.dh-style.dialog.multiclass-choice { .multiclass-container .domain-choice-container button label { background-image: url(../assets/parchments/dh-parchment-light.png); @@ -42,7 +44,6 @@ label { position: absolute; top: 4px; - font-family: @font-body; border-radius: 6px; border: 2px solid; padding: 0 2px; diff --git a/styles/less/dialog/reroll-dialog/sheet.less b/styles/less/dialog/reroll-dialog/sheet.less index f8687009..71c94d80 100644 --- a/styles/less/dialog/reroll-dialog/sheet.less +++ b/styles/less/dialog/reroll-dialog/sheet.less @@ -37,7 +37,7 @@ display: flex; align-items: center; justify-content: center; - font-size: 22px; + font-size: 1.375rem; opacity: 0.8; &.selected { @@ -99,12 +99,12 @@ &:before, &:after { line-height: 12px; - font-size: 12px; + font-size: var(--font-size-12); } } i { - font-size: 10px; + font-size: var(--font-size-10); } } } diff --git a/styles/less/dialog/tag-team-dialog/sheet.less b/styles/less/dialog/tag-team-dialog/sheet.less new file mode 100644 index 00000000..767c66ca --- /dev/null +++ b/styles/less/dialog/tag-team-dialog/sheet.less @@ -0,0 +1,178 @@ +.daggerheart.dialog.dh-style.views.tag-team-dialog { + .tag-team-container { + display: flex; + flex-direction: column; + gap: 16px; + + .tag-team-data-container { + display: flex; + align-items: center; + gap: 8px; + + .form-group { + flex: 0; + + label { + white-space: nowrap; + } + + &.flex-group { + flex: 1; + } + } + } + + .title-row { + display: flex; + align-items: center; + gap: 8px; + + h2 { + text-align: start; + } + + select { + flex: 1; + } + } + + .participants-container { + margin-top: 8px; + display: flex; + flex-direction: column; + gap: 4px; + + .participant-outer-container { + padding: 8px; + display: flex; + flex-direction: column; + gap: 4px; + cursor: pointer; + border-radius: 6px; + + &.selected, + &:hover { + background-color: light-dark(@golden-40, @golden-40); + } + + .participant-container { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + + .participant-inner-container { + flex: 1; + display: flex; + align-items: center; + gap: 4px; + + img { + height: 48px; + width: 48px; + border-radius: 50%; + } + + .participant-labels { + display: flex; + flex-direction: column; + gap: 2px; + + .participant-label-title { + font-size: 18px; + } + + .participant-label-info { + display: flex; + gap: 4px; + + .participant-label-info-part { + border: 1px solid light-dark(white, white); + border-radius: 4px; + padding: 2px 4px; + background-color: light-dark(@beige-80, @soft-white-shadow); + color: white; + } + } + } + } + } + + .participant-empty-roll-container { + border: 1px dashed white; + padding: 8px 2px; + text-align: center; + font-style: italic; + } + + .participant-roll-outer-container { + display: flex; + flex-direction: column; + gap: 2px; + color: light-dark(@dark-blue, @golden); + + h4 { + text-align: center; + color: light-dark(@dark-blue, @golden); + } + + .participant-roll-container { + display: flex; + align-items: center; + justify-content: center; + white-space: nowrap; + + .participant-roll-text-container { + padding: 0 8px; + white-space: nowrap; + display: flex; + } + } + + .damage-values-container { + display: flex; + justify-content: space-around; + gap: 8px; + + .damage-container { + border: 1px solid light-dark(white, white); + border-radius: 6px; + padding: 0 4px; + display: flex; + gap: 4px; + } + } + } + } + } + + h2 { + text-align: center; + } + + .result-container { + display: grid; + grid-template-columns: 1fr 1fr; + align-items: center; + gap: 8px; + + .result-damages-container { + display: flex; + flex-wrap: wrap; + gap: 4px; + + .result-damage-container { + border: 1px solid light-dark(white, white); + border-radius: 6px; + padding: 0 4px; + } + } + } + + .roll-leader-container { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 8px; + } + } +} diff --git a/styles/less/global/chat.less b/styles/less/global/chat.less index d7fee8e5..3f83294a 100644 --- a/styles/less/global/chat.less +++ b/styles/less/global/chat.less @@ -7,6 +7,15 @@ #chat-notifications .chat-log { .chat-message { background-image: url('../assets/parchments/dh-parchment-light.png'); + + .message-header .message-header-metadata .message-metadata, + .message-header .message-header-main .message-sub-header-container { + color: @dark; + } + + .message-header .message-header-main .message-sub-header-container h4 { + color: @dark-blue; + } } } } @@ -36,7 +45,7 @@ .message-metadata { font-family: @font-body; - color: light-dark(@dark, @beige); + color: @beige; } } @@ -52,6 +61,7 @@ width: 40px; height: 40px; object-fit: cover; + object-position: top center; } .message-sub-header-container { @@ -59,14 +69,14 @@ display: flex; flex-direction: column; justify-content: space-between; - color: light-dark(@dark, @beige); + color: @beige; h4 { - font-size: 16px; + font-size: var(--font-size-16); font-weight: bold; margin-bottom: 0; font-family: @font-subtitle; - color: light-dark(@dark-blue, @golden); + color: @golden; } } } diff --git a/styles/less/global/dialog.less b/styles/less/global/dialog.less index 701d5025..8c532c2b 100644 --- a/styles/less/global/dialog.less +++ b/styles/less/global/dialog.less @@ -48,10 +48,9 @@ } .formula-label { - font-family: @font-body; font-style: normal; font-weight: 500; - font-size: 14px; + font-size: var(--font-size-14); line-height: 17px; white-space: nowrap; color: light-dark(@dark, @beige); @@ -68,6 +67,10 @@ } } + .standard-form { + font-family: @font-body; + } + &.two-big-buttons { .window-content { padding-top: 0; @@ -81,7 +84,6 @@ button[type='submit'] { gap: 5px; flex-direction: row; - font-family: @font-body; font-weight: bold; font-size: var(--font-size-14); height: 40px; diff --git a/styles/less/global/elements.less b/styles/less/global/elements.less index c22c3bfc..79deb99d 100755 --- a/styles/less/global/elements.less +++ b/styles/less/global/elements.less @@ -76,7 +76,6 @@ textarea { color: light-dark(@dark, @beige); - font-family: @font-body; scrollbar-width: thin; scrollbar-color: light-dark(@dark-blue, @golden) transparent; } @@ -126,7 +125,6 @@ select { background: light-dark(transparent, transparent); color: light-dark(@dark, @beige); - font-family: @font-body; outline: 2px solid transparent; border: 1px solid light-dark(@dark, @beige); @@ -161,14 +159,13 @@ padding: 0.3rem 0.5rem; color: light-dark(@dark-blue, @golden); background-color: light-dark(@dark-blue-10, @golden-40); - font-family: @font-body; border-radius: 3px; transition: 0.13s ease-out; gap: 0.5rem; z-index: 1; .remove { - font-size: 10px; + font-size: var(--font-size-10); } } } @@ -180,7 +177,6 @@ } table { - font-family: @font-body; border-radius: 3px; thead { @@ -214,7 +210,13 @@ } p { - margin: 0; + &:first-child { + margin-top: 0; + } + + &:last-child { + margin-bottom: 0; + } } ul { @@ -309,7 +311,6 @@ } legend { - font-family: @font-body; font-weight: bold; color: light-dark(@dark-blue, @golden); } @@ -317,7 +318,6 @@ input[type='text'], input[type='number'] { color: light-dark(@dark, @beige); - font-family: @font-body; transition: all 0.3s ease; outline: 2px solid transparent; @@ -344,6 +344,10 @@ width: 100%; gap: 5px; + &.space-between { + justify-content: space-between; + } + .btn { padding-top: 15px; } @@ -364,7 +368,6 @@ .form-group { width: 100%; label { - font-family: @font-body; font-weight: bold; font-size: smaller; } @@ -403,8 +406,7 @@ display: flex; flex-direction: column; white-space: nowrap; - font-family: @font-body; - font-size: 14px; + font-size: var(--font-size-14); font-weight: 400; &.modifier-label { @@ -499,7 +501,6 @@ color: light-dark(@dark-blue, @dark-blue); white-space: nowrap; border: 0; - font-family: @font-body; &:hover { color: light-dark(@dark-blue, @golden); @@ -524,6 +525,17 @@ } } } + .artist-attribution { + width: 100%; + display: flex; + justify-content: left; + font-style: italic; + font-family: @font-body; + margin-top: 4px; + color: light-dark(#14142599, #efe6d850); + font-size: var(--font-size-12); + padding-left: 3px; + } } .application.setting.dh-style { @@ -535,7 +547,7 @@ text-align: center; } .title-hint { - font-size: 12px; + font-size: var(--font-size-12); font-variant: small-caps; text-align: center; } @@ -597,10 +609,12 @@ display: flex; justify-content: space-between; align-items: center; + gap: 0.25rem 0.5rem; + flex-wrap: wrap; label { - font-size: 16px; - font-family: @font-body; + font-size: var(--font-size-14); + font-weight: normal; } .form-fields { @@ -608,6 +622,21 @@ gap: 4px; align-items: center; } + + &.setting-two-values { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 0.25rem 0.5rem; + + .form-group { + justify-content: end; + flex-wrap: nowrap; + } + + .hint { + grid-column: 1 / -1; + } + } } } @@ -675,7 +704,6 @@ .tagify__dropdown { border: 1px solid light-dark(@dark, @beige) !important; - font-family: @font-body; color: light-dark(@dark, @beige); .tagify__dropdown__wrapper { @@ -770,11 +798,10 @@ } .preview-text-container { - font-family: @font-body; padding: 10px 0; text-align: center; - font-size: 16px; - color: light-dark(@beige, @dark); + font-size: var(--font-size-16); + color: @dark; background-image: url(../assets/parchments/dh-parchment-light.png); border-radius: 0 0 4px 4px; } @@ -796,19 +823,18 @@ justify-content: center; .preview-add-icon { - font-size: 40px; + font-size: var(--font-size-40); color: light-dark(@dark-blue-50, @beige-50); } .preview-empty-subtext { position: absolute; bottom: 5%; - font-size: 10px; + font-size: var(--font-size-10); font-variant: small-caps; text-align: center; - font-family: @font-body; font-style: italic; - color: light-dark(@dark-blue-60, @beige-80); + color: light-dark(@dark-blue, @beige-80); } } } @@ -819,7 +845,7 @@ width: 54px; border-radius: 50%; border: 2px solid; - font-size: 48px; + font-size: var(--font-size-48); display: flex; align-items: center; justify-content: center; diff --git a/styles/less/global/feature-section.less b/styles/less/global/feature-section.less index db1c117a..13feb92c 100644 --- a/styles/less/global/feature-section.less +++ b/styles/less/global/feature-section.less @@ -24,7 +24,6 @@ align-items: center; grid-template-columns: 1fr 4fr 1fr; h4 { - font-family: @font-body; font-weight: lighter; color: light-dark(@dark, @beige); } diff --git a/styles/less/global/filter-menu.less b/styles/less/global/filter-menu.less index 09962afb..65a184f8 100644 --- a/styles/less/global/filter-menu.less +++ b/styles/less/global/filter-menu.less @@ -12,7 +12,6 @@ padding: 5px; legend { - font-family: @font-body; font-weight: bold; color: light-dark(@dark-blue, @golden); font-size: var(--font-size-12); diff --git a/styles/less/global/global.less b/styles/less/global/global.less index 5bf32746..7e60dffc 100644 --- a/styles/less/global/global.less +++ b/styles/less/global/global.less @@ -10,3 +10,44 @@ color: light-dark(@dark-blue-50, @beige-50); font-family: @font-body; } + +.daggerheart.dh-style { + .hint { + flex: 0 0 100%; + margin: 0; + color: var(--color-form-hint); + } + + .form-group:hover { + .hint { + color: var(--color-form-hint-hover); + } + } + + .loader { + position: relative; + overflow: hidden !important; + + div { + opacity: 0.5; + } + + &:before { + font-family: 'Font Awesome 6 Pro'; + content: '\f110'; + position: absolute; + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + animation: spinner 1.5s linear infinite; + } + } + + @keyframes spinner { + to { + transform: rotate(360deg); + } + } +} diff --git a/styles/less/global/index.less b/styles/less/global/index.less index db61304a..f51140de 100644 --- a/styles/less/global/index.less +++ b/styles/less/global/index.less @@ -19,3 +19,4 @@ @import './filter-menu.less'; @import './tab-attachments.less'; @import './dice.less'; +@import './resource-bar.less'; diff --git a/styles/less/global/inventory-item.less b/styles/less/global/inventory-item.less index c4239d27..c9ed28d8 100644 --- a/styles/less/global/inventory-item.less +++ b/styles/less/global/inventory-item.less @@ -14,7 +14,7 @@ } .appTheme({}, { - .inventory-item-header .img-portait .roll-img { + .inventory-item .img-portait .roll-img { filter: invert(1); } }); @@ -25,14 +25,12 @@ list-style-type: none; &:not(.single-img) { - .inventory-item-header:hover { - .img-portait { - .roll-img { - opacity: 1; - } - .item-img { - opacity: 0; - } + .img-portait:has(.roll-img):hover { + .roll-img { + opacity: 1; + } + .item-img { + opacity: 0; } } @@ -68,18 +66,15 @@ } } - .inventory-item-header { - display: flex; - align-items: center; - gap: 10px; - cursor: pointer; - border-radius: 3px; - + .inventory-item-header, + &.inventory-item-compact { .img-portait { flex: 0 0 40px; height: 40px; - cursor: pointer; position: relative; + &:has(.roll-img) { + cursor: pointer; + } .item-img, .roll-img { @@ -92,61 +87,17 @@ &.actor-img { border-radius: 50%; + object-position: top center; } } .roll-img { + object-fit: contain; opacity: 0; + padding: 2px; } } - .item-label { - flex: 1; - font-family: @font-body; - align-self: center; - - .item-name { - font-size: 14px; - - .expanded-icon { - display: none; - } - } - - .item-tags, - .item-labels { - display: flex; - gap: 10px; - - .tag, - .label { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - font-size: 12px; - } - - .tag { - padding: 3px 5px; - background: light-dark(@dark-15, @beige-15); - border: 1px solid light-dark(@dark, @beige); - border-radius: 3px; - } - - .label { - gap: 4px; - color: @beige-80; - } - } - } - - .item-resource { - flex: 0 0 60px; - display: flex; - align-items: center; - gap: 4px; - } .controls { flex: 0 0 auto; display: flex; @@ -165,6 +116,56 @@ } } + .inventory-item-header { + align-items: center; + border-radius: 3px; + cursor: pointer; + display: flex; + gap: 10px; + + &.padded { + padding-right: 8px; + } + + .item-label { + flex: 1; + align-self: center; + + .item-name { + font-size: var(--font-size-14); + + .expanded-icon { + display: none; + } + } + + .item-tags { + display: flex; + gap: 10px; + + .tag { + align-items: center; + background: light-dark(@dark-15, @beige-15); + border-radius: 3px; + border: 1px solid light-dark(@dark, @beige); + display: flex; + flex-direction: row; + flex-wrap: wrap; + font-size: var(--font-size-12); + justify-content: start; + padding: 3px 5px; + } + } + } + + .item-resource { + flex: 0 0 60px; + display: flex; + align-items: center; + gap: 4px; + } + } + .inventory-item-content { > *:not(:last-child) { margin-bottom: 5px; @@ -180,18 +181,18 @@ overflow: hidden; h1 { - font-size: 32px; + font-size: var(--font-size-32); } h2 { - font-size: 28px; + font-size: var(--font-size-28); font-weight: 600; } h3 { - font-size: 20px; + font-size: var(--font-size-20); font-weight: 600; } h4 { - font-size: 16px; + font-size: var(--font-size-16); color: @beige; font-weight: 600; } @@ -202,7 +203,6 @@ padding: 0 0 0 1.25rem; li { - font-family: @font-body; margin-bottom: 0.25rem; } } @@ -233,7 +233,7 @@ label { color: light-dark(white, black); filter: drop-shadow(0 0 1px light-dark(@dark-blue, @golden)); - font-size: 18px; + font-size: var(--font-size-18); } img { @@ -245,11 +245,46 @@ text-shadow: 0 0 3px white; filter: drop-shadow(0 1px white); color: black; - font-size: 26px; + font-size: 1.625rem; } } } } + + &.inventory-item-compact { + display: grid; + grid-template: + 'img name controls' auto + 'img labels labels' 1fr + / 40px 1fr min-content; + column-gap: 8px; + + > .img-portait { + grid-area: img; + } + > .item-name { + align-self: end; + line-height: 1; + padding-bottom: 1px; + } + > .controls { + grid-area: controls; + align-self: start; + padding-top: 0.3125rem; + gap: 4px; + margin-bottom: -1px; + } + > .item-labels { + align-self: start; + color: light-dark(@dark-80, @beige-80); + display: flex; + flex-direction: row; + flex-wrap: wrap; + font-size: var(--font-size-12); + gap: 4px; + grid-area: labels; + } + } } .card-item { @@ -308,13 +343,14 @@ background-color: @dark-blue; bottom: 0; mask-image: linear-gradient(180deg, transparent 0%, black 20%); + border-radius: 0 0 6px 6px; .card-name { - font-family: @font-body; font-style: normal; font-weight: 400; - font-size: 12px; + font-size: var(--font-size-12); line-height: 15px; + text-align: center; color: @beige; } @@ -354,7 +390,7 @@ gap: 4px; .resource-edit { - font-size: 14px; + font-size: var(--font-size-14); } } @@ -366,7 +402,7 @@ i { flex: none; - font-size: 14px; + font-size: var(--font-size-14); } input { @@ -386,7 +422,7 @@ color: light-dark(white, black); filter: drop-shadow(0 0 1px light-dark(@dark-blue, @golden)); z-index: 2; - font-size: 18px; + font-size: var(--font-size-18); cursor: pointer; } @@ -400,7 +436,7 @@ text-shadow: 0 0 3px white; filter: drop-shadow(0 1px white); color: black; - font-size: 26px; + font-size: 1.625rem; } } } diff --git a/styles/less/global/item-header.less b/styles/less/global/item-header.less index 7b2c907f..073762e0 100755 --- a/styles/less/global/item-header.less +++ b/styles/less/global/item-header.less @@ -35,7 +35,7 @@ width: 80%; .item-name input[type='text'] { - font-size: 32px; + font-size: var(--font-size-32); height: 42px; text-align: center; width: 90%; @@ -103,7 +103,7 @@ transition: all 0.3s ease; .recall-label { - font-size: 14px; + font-size: var(--font-size-14); opacity: 0; margin-right: 0.3rem; transition: all 0.3s ease; @@ -141,7 +141,7 @@ .item-name { input[type='text'] { - font-size: 32px; + font-size: var(--font-size-32); height: 42px; text-align: center; width: 90%; diff --git a/styles/less/global/prose-mirror.less b/styles/less/global/prose-mirror.less index 5adf9d67..506fb8b7 100644 --- a/styles/less/global/prose-mirror.less +++ b/styles/less/global/prose-mirror.less @@ -12,18 +12,18 @@ scrollbar-width: thin; scrollbar-color: light-dark(@dark-blue, @golden) transparent; h1 { - font-size: 32px; + font-size: var(--font-size-32); } h2 { - font-size: 28px; + font-size: var(--font-size-28); font-weight: 600; } h3 { - font-size: 20px; + font-size: var(--font-size-20); font-weight: 600; } h4 { - font-size: 16px; + font-size: var(--font-size-16); color: @beige; font-weight: 600; } @@ -34,7 +34,6 @@ padding: 0 0 0 1.25rem; li { - font-family: @font-body; margin-bottom: 0.25rem; } } diff --git a/styles/less/global/resource-bar.less b/styles/less/global/resource-bar.less new file mode 100644 index 00000000..be9bc68b --- /dev/null +++ b/styles/less/global/resource-bar.less @@ -0,0 +1,178 @@ +// Theme sidebar backgrounds +.appTheme({ + .slot-value .slot-bar { + background: @dark-blue; + } +}, { + .slot-value .slot-bar { + background-image: url('../assets/parchments/dh-parchment-light.png'); + } +}); + +.status-bar { + display: flex; + justify-content: center; + position: relative; + width: 120px; + height: 40px; + + .status-label { + position: relative; + top: 40px; + height: 22px; + width: 79px; + clip-path: path('M0 0H79L74 16.5L39 22L4 16.5L0 0Z'); + background: light-dark(@dark-blue, @golden); + + h4 { + font-weight: bold; + text-align: center; + line-height: 18px; + color: light-dark(@beige, @dark-blue); + } + } + .slot-value { + position: absolute; + display: flex; + flex-direction: column; + padding: 0 5px; + font-size: 1.5rem; + align-items: center; + width: 140px; + height: 40px; + justify-content: center; + text-align: center; + z-index: 2; + color: @beige; + + .slot-bar { + display: flex; + flex-wrap: wrap; + gap: 5px; + padding: 5px; + border: 1px solid light-dark(@dark-blue, @golden); + border-radius: 6px; + z-index: 1; + color: light-dark(@dark-blue, @golden); + width: fit-content; + + .slot { + width: 15px; + height: 10px; + border: 1px solid light-dark(@dark-blue, @golden); + background: light-dark(@dark-blue-10, @golden-10); + border-radius: 3px; + transition: all 0.3s ease; + cursor: pointer; + + &.large { + width: 20px; + } + + &.filled { + background: light-dark(@dark-blue, @golden); + } + } + + .empty-slot { + width: 15px; + height: 10px; + } + } + .slot-label { + display: flex; + align-items: center; + color: light-dark(@beige, @dark-blue); + background: light-dark(@dark-blue, @golden); + padding: 0 5px; + width: fit-content; + font-weight: bold; + border-radius: 0px 0px 5px 5px; + font-size: var(--font-size-12); + + .label { + padding-right: 5px; + } + + .value { + padding-left: 6px; + border-left: 1px solid light-dark(@beige, @dark-golden); + } + } + } + + .status-value { + position: absolute; + display: flex; + padding: 0 5px; + font-size: 1.5rem; + align-items: center; + width: 140px; + height: 40px; + justify-content: center; + text-align: center; + z-index: 2; + color: @beige; + + input[type='number'] { + background: transparent; + font-size: 1.5rem; + width: 40px; + height: 30px; + text-align: center; + border: none; + outline: 2px solid transparent; + color: @beige; + + &.bar-input { + padding: 0; + color: @beige; + backdrop-filter: none; + background: transparent; + transition: all 0.3s ease; + + &:hover, + &:focus { + background: @semi-transparent-dark-blue; + backdrop-filter: blur(9.5px); + } + } + } + + .bar-label { + width: 40px; + } + } + .progress-bar { + position: absolute; + appearance: none; + width: 100px; + height: 40px; + border: 1px solid light-dark(@dark-blue, @golden); + border-radius: 6px; + z-index: 1; + background: @dark-blue; + + &::-webkit-progress-bar { + border: none; + background: @dark-blue; + border-radius: 6px; + } + &::-webkit-progress-value { + background: @gradient-hp; + border-radius: 6px; + } + &.stress-color::-webkit-progress-value { + background: @gradient-stress; + border-radius: 6px; + } + &::-moz-progress-bar { + background: @gradient-hp; + border-radius: 6px; + } + &.stress-color::-moz-progress-bar { + background: @gradient-stress; + border-radius: 6px; + } + } +} diff --git a/styles/less/global/sheet.less b/styles/less/global/sheet.less index 172f0113..1e7bad0a 100755 --- a/styles/less/global/sheet.less +++ b/styles/less/global/sheet.less @@ -4,12 +4,24 @@ // Theme handling .appTheme({ - background: @dark-blue-60; - backdrop-filter: blur(10px); + background: @dark-blue-90; + backdrop-filter: blur(8px); }, { background: url('../assets/parchments/dh-parchment-light.png') no-repeat center; }); +body.game:is(.performance-low, .noblur) { + .themed.theme-dark .application.daggerheart.sheet.dh-style, + .themed.theme-dark.application.daggerheart.sheet.dh-style, + &.theme-dark .application.daggerheart { + &.adversary, + &.character, + &.item { + background: @dark-blue; + } + } +} + .application.sheet.dh-style { border-radius: 10px; diff --git a/styles/less/global/tab-actions.less b/styles/less/global/tab-actions.less index 0617016d..31129c99 100644 --- a/styles/less/global/tab-actions.less +++ b/styles/less/global/tab-actions.less @@ -26,7 +26,6 @@ } h4 { - font-family: @font-body; font-weight: lighter; color: @beige; } diff --git a/styles/less/global/tab-description.less b/styles/less/global/tab-description.less index 4d81f2f2..be95ef6d 100644 --- a/styles/less/global/tab-description.less +++ b/styles/less/global/tab-description.less @@ -1,13 +1,16 @@ -@import '../utils/colors.less'; -@import '../utils/fonts.less'; - -.daggerheart.dh-style { - .tab.active.description { - overflow-y: hidden !important; - height: -webkit-fill-available !important; - - fieldset { - height: -webkit-fill-available; - } - } -} +@import '../utils/colors.less'; +@import '../utils/fonts.less'; + +.daggerheart.dh-style { + .tab.active.description { + display: flex; + flex-direction: column; + height: -webkit-fill-available !important; + overflow-y: hidden !important; + padding-top: 10px; + + prose-mirror.active + .artist-attribution { + display: none; + } + } +} diff --git a/styles/less/global/tab-effects.less b/styles/less/global/tab-effects.less index 0c34a3ea..b4540f01 100644 --- a/styles/less/global/tab-effects.less +++ b/styles/less/global/tab-effects.less @@ -19,7 +19,6 @@ cursor: pointer; h4 { - font-family: @font-body; font-weight: lighter; color: @beige; } diff --git a/styles/less/global/tab-features.less b/styles/less/global/tab-features.less index 91335fd5..c483ae88 100644 --- a/styles/less/global/tab-features.less +++ b/styles/less/global/tab-features.less @@ -26,7 +26,6 @@ } h4 { - font-family: @font-body; font-weight: lighter; color: @beige; } diff --git a/styles/less/global/tab-navigation.less b/styles/less/global/tab-navigation.less index 53295b63..3f8844f2 100755 --- a/styles/less/global/tab-navigation.less +++ b/styles/less/global/tab-navigation.less @@ -21,7 +21,6 @@ a { color: light-dark(@dark-blue, @golden); - font-family: @font-body; } } } diff --git a/styles/less/hud/token-hud/token-hud.less b/styles/less/hud/token-hud/token-hud.less index 7d231e8c..9849512b 100644 --- a/styles/less/hud/token-hud/token-hud.less +++ b/styles/less/hud/token-hud/token-hud.less @@ -1,3 +1,9 @@ +.theme-light .daggerheart.placeable-hud { + .status-effects .effect-control { + filter: none; + } +} + .daggerheart.placeable-hud { .col.right { .palette { @@ -6,5 +12,13 @@ font-weight: bold; } } + + .clown-car img { + transition: 0.5s; + + &.flipped { + transform: scaleX(-1); + } + } } } diff --git a/styles/less/sheets-settings/adversary-settings/features.less b/styles/less/sheets-settings/adversary-settings/features.less index 29c9874e..4e0f6a8f 100644 --- a/styles/less/sheets-settings/adversary-settings/features.less +++ b/styles/less/sheets-settings/adversary-settings/features.less @@ -14,11 +14,10 @@ margin-bottom: 12px; } - .feature-list, + .feature-list, .features-dragger { display: flex; width: 100%; - font-family: @font-body; } .feature-list { @@ -38,10 +37,6 @@ object-fit: cover; } - .label { - font-family: @font-body; - } - .controls { display: flex; gap: 5px; diff --git a/styles/less/sheets-settings/character-settings/sheet.less b/styles/less/sheets-settings/character-settings/sheet.less index 43103fc7..f0c7c94e 100644 --- a/styles/less/sheets-settings/character-settings/sheet.less +++ b/styles/less/sheets-settings/character-settings/sheet.less @@ -1,3 +1,5 @@ +@import '../../utils/colors.less'; + .theme-light .application.daggerheart.dh-style.dialog { .tab.details { .traits-inner-container .trait-container { @@ -31,8 +33,7 @@ div { filter: drop-shadow(0 0 3px black); text-shadow: 0 0 3px black; - font-family: @font-body; - font-size: 12px; + font-size: var(--font-size-12); } input { diff --git a/styles/less/sheets-settings/environment-settings/features.less b/styles/less/sheets-settings/environment-settings/features.less index f2a9583a..d907837a 100644 --- a/styles/less/sheets-settings/environment-settings/features.less +++ b/styles/less/sheets-settings/environment-settings/features.less @@ -32,10 +32,6 @@ border-radius: 3px; } - .label { - font-family: @font-body; - } - .controls { display: flex; gap: 5px; diff --git a/styles/less/sheets-settings/header.less b/styles/less/sheets-settings/header.less index 6ac2663f..82f3c488 100644 --- a/styles/less/sheets-settings/header.less +++ b/styles/less/sheets-settings/header.less @@ -10,7 +10,7 @@ font-family: @font-subtitle; font-style: normal; font-weight: 700; - font-size: 24px; + font-size: var(--font-size-24); margin: 0; text-align: center; color: light-dark(@dark-blue, @golden); diff --git a/styles/less/sheets/actors/actor-sheet-shared.less b/styles/less/sheets/actors/actor-sheet-shared.less index 91a2323f..f3cf74b0 100644 --- a/styles/less/sheets/actors/actor-sheet-shared.less +++ b/styles/less/sheets/actors/actor-sheet-shared.less @@ -1,8 +1,227 @@ +@import '../../utils/fonts.less'; +@import '../../utils/colors.less'; +@import '../../utils/mixin.less'; + +.appTheme({ + .limited-container { + .domains-section img { + filter: @golden-filter; + } + } +}, { + .limited-container { + + .domains-section img { + filter: brightness(0) saturate(100%); + } + } +}); .application.sheet.daggerheart.actor.dh-style { - .portrait img, .profile { + .portrait img, + .profile { width: 100%; object-fit: cover; object-position: top center; } -} \ No newline at end of file + + &.minimized { + .attribution-header-label { + display: none; + } + } + + .attribution-header-label { + font-style: italic; + font-family: @font-body; + color: light-dark(@chat-blue-bg, @beige-50); + } + + &.limited { + &.character, + &.adversary, + &.environment, + &.companion { + .window-content { + display: unset; + padding-bottom: 20px; + background-image: url('../assets/parchments/dh-parchment-dark.png'); + } + + .limited-container { + width: 100%; + padding-top: var(--header-height); + display: flex; + flex-direction: column; + gap: 8px; + + header { + position: relative; + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + top: -36px; + margin-bottom: -30px; + + .profile { + width: 100%; + max-height: 275px; + max-width: fit-content; + mask-image: linear-gradient(0deg, transparent 0%, black 10%); + } + + .title-name { + text-align: start; + font-size: var(--font-size-28); + color: light-dark(@dark-blue, @golden); + text-align: center; + } + } + + .character-details { + display: flex; + flex-direction: column; + gap: 5px; + + .basic-info, + .multiclass { + text-align: center; + padding: 0 10px; + } + } + + .domain-details, + .bio-details, + .partner-details { + margin-top: 10px; + + .domain-header, + .bio-header, + .partner-header { + display: flex; + align-items: center; + padding: 0 10px; + gap: 10px; + + h3 { + font-size: var(--font-size-20); + } + } + + .items-list { + padding: 0 20px; + } + + .partner-placeholder { + display: flex; + opacity: 0.6; + text-align: center; + font-style: italic; + justify-content: center; + padding: 10px 0; + } + + .domains-section { + position: relative; + display: flex; + gap: 10px; + background-color: light-dark(transparent, @dark-blue); + color: light-dark(@dark-blue, @golden); + padding: 5px 10px; + border: 1px solid light-dark(@dark-blue, @golden); + border-radius: 6px; + align-items: center; + width: fit-content; + height: 30px; + place-self: center; + margin-top: 10px; + + h4 { + font-size: var(--font-size-14); + font-weight: bold; + text-transform: uppercase; + color: light-dark(@dark-blue, @golden); + } + + .domain { + display: flex; + align-items: center; + gap: 5px; + + .label { + font-size: var(--font-size-14); + font-weight: bold; + text-transform: uppercase; + color: light-dark(@dark-blue, @golden); + } + + img { + height: 20px; + width: 20px; + } + } + } + + .bio-list { + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + margin-top: 10px; + + .bio-info { + display: flex; + flex-direction: column; + align-items: center; + padding: 10px; + border-radius: 5px; + min-width: 90px; + color: light-dark(@dark-blue, @golden); + background-color: light-dark(@dark-blue-10, @golden-40); + } + } + } + + .level-details { + align-self: center; + } + + .description { + font-style: italic; + text-align: center; + padding: 0 20px; + } + + .tags { + display: flex; + gap: 10px; + padding-bottom: 10px; + justify-content: center; + + .tag { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: 3px 5px; + font-size: var(--font-size-12); + font: @font-body; + + background: light-dark(@dark-15, @beige-15); + border: 1px solid light-dark(@dark, @beige); + border-radius: 3px; + } + + .label { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + font-size: var(--font-size-12); + } + } + } + } + } +} diff --git a/styles/less/sheets/actors/adversary/effects.less b/styles/less/sheets/actors/adversary/effects.less new file mode 100644 index 00000000..4afe2454 --- /dev/null +++ b/styles/less/sheets/actors/adversary/effects.less @@ -0,0 +1,17 @@ +@import '../../../utils/colors.less'; + +.application.sheet.daggerheart.actor.dh-style.adversary { + .tab.effects { + .effects-sections { + display: flex; + flex-direction: column; + gap: 10px; + overflow-y: auto; + mask-image: linear-gradient(0deg, transparent 0%, black 5%); + padding-bottom: 20px; + + scrollbar-width: thin; + scrollbar-color: light-dark(@dark-blue, @golden) transparent; + } + } +} diff --git a/styles/less/sheets/actors/adversary/header.less b/styles/less/sheets/actors/adversary/header.less index e9306af6..d4a7812e 100644 --- a/styles/less/sheets/actors/adversary/header.less +++ b/styles/less/sheets/actors/adversary/header.less @@ -18,7 +18,7 @@ flex: 1; input[type='text'] { - font-size: 32px; + font-size: var(--font-size-32); height: 42px; text-align: start; border: 1px solid transparent; @@ -42,7 +42,7 @@ justify-content: center; align-items: center; padding: 3px 5px; - font-size: 12px; + font-size: var(--font-size-12); font: @font-body; background: light-dark(@dark-15, @beige-15); @@ -55,7 +55,7 @@ flex-direction: row; justify-content: center; align-items: center; - font-size: 12px; + font-size: var(--font-size-12); } } @@ -64,11 +64,6 @@ flex-direction: column; gap: 12px; padding: 16px 0; - - .description, - .motives-and-tatics { - font-family: @font-body; - } } .adversary-navigation { diff --git a/styles/less/sheets/actors/adversary/sidebar.less b/styles/less/sheets/actors/adversary/sidebar.less index cd58ab8c..f8537525 100644 --- a/styles/less/sheets/actors/adversary/sidebar.less +++ b/styles/less/sheets/actors/adversary/sidebar.less @@ -74,7 +74,7 @@ height: 30px; h4 { - font-size: 14px; + font-size: var(--font-size-14); font-weight: bold; text-transform: uppercase; color: light-dark(@dark-blue, @golden); @@ -109,6 +109,14 @@ gap: 16px; margin-bottom: -10px; + &.pip-display { + top: -15px; + + .resources-section { + justify-content: space-around; + } + } + .resources-section { display: flex; justify-content: space-evenly; @@ -255,7 +263,7 @@ font-weight: bold; text-align: center; line-height: 18px; - font-size: 12px; + font-size: var(--font-size-12); color: light-dark(@beige, @dark-blue); } } @@ -270,7 +278,7 @@ margin-bottom: 10px; .inventory-item { - padding: 0 10px; + padding-left: 10px; } } @@ -279,10 +287,11 @@ padding-top: 10px; padding-bottom: 20px; mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%); + scrollbar-width: thin; + scrollbar-gutter: stable; &:hover { overflow-y: auto; - scrollbar-width: thin; scrollbar-color: light-dark(@dark-blue, @golden) transparent; } } @@ -294,7 +303,7 @@ align-items: center; h3 { - font-size: 20px; + font-size: var(--font-size-20); } } .items-list { @@ -314,7 +323,7 @@ align-items: center; h3 { - font-size: 20px; + font-size: var(--font-size-20); } } @@ -336,8 +345,7 @@ .experience-name { width: 180px; text-align: start; - font-size: 14px; - font-family: @font-body; + font-size: var(--font-size-14); color: light-dark(@dark, @beige); } } @@ -345,8 +353,7 @@ .experience-value { height: 25px; width: 35px; - font-size: 14px; - font-family: @font-body; + font-size: var(--font-size-14); color: light-dark(@dark, @beige); align-content: center; text-align: center; @@ -368,7 +375,6 @@ button { height: 40px; width: 100%; - font-family: @font-body; font-weight: 600; } } diff --git a/styles/less/sheets/actors/character/header.less b/styles/less/sheets/actors/character/header.less index 7bfcc7c9..80089cf7 100644 --- a/styles/less/sheets/actors/character/header.less +++ b/styles/less/sheets/actors/character/header.less @@ -41,7 +41,7 @@ flex: 1; input[type='text'] { - font-size: 32px; + font-size: var(--font-size-32); height: 42px; text-align: start; border: 1px solid transparent; @@ -72,7 +72,7 @@ .level-button { color: light-dark(@dark, @beige); - font-size: 18px; + font-size: var(--font-size-18); line-height: 1; min-height: unset; height: min-content; @@ -97,7 +97,7 @@ justify-content: space-between; padding: 5px 0; margin-bottom: 10px; - font-size: 12px; + font-size: var(--font-size-12); color: light-dark(@dark-blue, @golden); .missing-header-feature { @@ -158,7 +158,7 @@ height: 30px; h4 { - font-size: 14px; + font-size: var(--font-size-14); font-weight: bold; text-transform: uppercase; color: light-dark(@dark-blue, @golden); @@ -170,7 +170,7 @@ gap: 5px; .label { - font-size: 14px; + font-size: var(--font-size-14); font-weight: bold; text-transform: uppercase; color: light-dark(@dark-blue, @golden); @@ -205,7 +205,7 @@ align-items: center; padding-top: 5px; color: light-dark(@dark-blue, @golden); - font-size: 14px; + font-size: var(--font-size-14); font-weight: 600; align-items: center; justify-content: center; @@ -213,15 +213,14 @@ i { line-height: 17px; - font-size: 10px; + font-size: var(--font-size-10); } } .trait-value { - font-family: @font-body; font-style: normal; font-weight: 400; - font-size: 20px; + font-size: var(--font-size-20); text-align: center; } } diff --git a/styles/less/sheets/actors/character/inventory.less b/styles/less/sheets/actors/character/inventory.less index d8c225ad..5605a3d0 100644 --- a/styles/less/sheets/actors/character/inventory.less +++ b/styles/less/sheets/actors/character/inventory.less @@ -16,7 +16,6 @@ input { border-radius: 50px; - font-family: @font-body; background: light-dark(@dark-blue-10, @golden-10); border: none; outline: 2px solid transparent; @@ -38,7 +37,7 @@ height: 32px; position: absolute; right: 20px; - font-size: 16px; + font-size: var(--font-size-16); z-index: 1; color: light-dark(@dark-blue-50, @beige-50); } diff --git a/styles/less/sheets/actors/character/loadout.less b/styles/less/sheets/actors/character/loadout.less index 24a53959..eba55890 100644 --- a/styles/less/sheets/actors/character/loadout.less +++ b/styles/less/sheets/actors/character/loadout.less @@ -16,7 +16,6 @@ input { border-radius: 50px; - font-family: @font-body; background: light-dark(@dark-blue-10, @golden-10); border: none; outline: 2px solid transparent; @@ -38,7 +37,7 @@ height: 32px; position: absolute; right: 20px; - font-size: 16px; + font-size: var(--font-size-16); z-index: 1; color: light-dark(@dark-blue-50, @beige-50); } diff --git a/styles/less/sheets/actors/character/sheet.less b/styles/less/sheets/actors/character/sheet.less index 68792c99..ee6580fd 100644 --- a/styles/less/sheets/actors/character/sheet.less +++ b/styles/less/sheets/actors/character/sheet.less @@ -11,6 +11,21 @@ padding-bottom: 0; overflow-x: auto; + &.viewMode { + button:not(.btn-toggle-view), + input:not(.search), + .controls, + .character-sidebar-sheet, + .img-portait, + .name-row, + .hope-section, + .downtime-section, + .character-traits, + .card-list { + pointer-events: none; + } + } + .character-sidebar-sheet { grid-row: 1 / span 2; grid-column: 1; diff --git a/styles/less/sheets/actors/character/sidebar.less b/styles/less/sheets/actors/character/sidebar.less index b8069aef..e66cba82 100644 --- a/styles/less/sheets/actors/character/sidebar.less +++ b/styles/less/sheets/actors/character/sidebar.less @@ -6,9 +6,16 @@ .appTheme({ .character-sidebar-sheet { background-image: url('../assets/parchments/dh-parchment-dark.png'); + .experience-value { background: url(../assets/svg/experience-shield.svg) no-repeat; } + + .info-section .status-section .status-bar.armor-slots { + .slot-value .slot-bar { + background: @dark-blue; + } + } } }, { &.sheet.actor.dh-style.character .character-sidebar-sheet { @@ -21,6 +28,12 @@ .portrait.death-roll .death-roll-btn { filter: brightness(0) drop-shadow(0 0 3px @dark-blue); } + + .info-section .status-section .status-bar.armor-slots { + .slot-value .slot-bar { + background-image: url('../assets/parchments/dh-parchment-light.png'); + } + } } }); @@ -89,7 +102,7 @@ transition: all 0.3s ease; .spellcast-label { - font-size: 14px; + font-size: var(--font-size-14); opacity: 0; margin-right: 0.3rem; transition: all 0.3s ease; @@ -127,6 +140,15 @@ gap: 10px; margin-bottom: -16px; + &.pip-display { + gap: 15px; + + .resources-section { + justify-content: space-around; + margin: 8px 2px 8px 2px; + } + } + .resources-section { display: flex; justify-content: space-evenly; @@ -136,7 +158,7 @@ display: flex; justify-content: center; position: relative; - width: 100px; + width: 120px; height: 40px; .status-label { @@ -154,13 +176,14 @@ color: light-dark(@beige, @dark-blue); } } + .status-value { position: absolute; display: flex; - padding: 0 6px; + padding: 0 5px; font-size: 1.5rem; align-items: center; - width: 100px; + width: 140px; height: 40px; justify-content: center; text-align: center; @@ -237,6 +260,28 @@ gap: 5px; justify-content: center; + &.pip-display { + align-items: end; + + .status-bar.armor-slots { + width: 100px; + height: auto; + + .slot-value { + position: relative; + height: auto; + + .slot-bar { + border-radius: 6px 6px 0 0; + } + } + + .status-value { + padding: 0 5px; + } + } + } + .status-bar.armor-slots { display: flex; justify-content: center; @@ -252,13 +297,74 @@ width: 95px; border-radius: 3px; background: light-dark(@dark-blue, @golden); + clip-path: none; h4 { font-weight: bold; text-align: center; line-height: 18px; color: light-dark(@beige, @dark-blue); - font-size: 12px; + font-size: var(--font-size-12); + } + } + .slot-value { + position: absolute; + display: flex; + padding: 0 5px; + font-size: 1.2rem; + align-items: center; + width: 80px; + height: 30px; + justify-content: center; + text-align: center; + z-index: 2; + color: light-dark(@dark-blue, @beige); + flex-direction: column; + + .slot-bar { + display: flex; + flex-wrap: wrap; + gap: 4px; + padding: 5px; + border: 1px solid light-dark(@dark-blue, @golden); + border-radius: 6px; + z-index: 1; + background: @dark-blue; + justify-content: center; + color: light-dark(@dark-blue, @golden); + + .armor-slot { + cursor: pointer; + transition: all 0.3s ease; + font-size: var(--font-size-12); + + .fa-shield-halved { + color: light-dark(@dark-blue-40, @golden-40); + } + } + } + .slot-label { + display: flex; + align-items: center; + color: light-dark(@beige, @dark-blue); + background: light-dark(@dark-blue, @golden); + padding: 0 5px; + width: 120%; + font-weight: bold; + border-radius: 5px; + font-size: var(--font-size-12); + flex-wrap: wrap; + justify-content: center; + + .label { + padding-right: 1px; + border-bottom: 1px solid @dark-golden; + } + + .value { + padding-left: 6px; + border-left: 0; + } } } .status-value { @@ -292,8 +398,6 @@ color: light-dark(@dark-blue, @beige); backdrop-filter: none; background: transparent; - transition: all 0.3s ease; - &:hover, &:focus { background: @semi-transparent-dark-blue; @@ -306,7 +410,6 @@ width: 30px; } } - .progress-bar { position: absolute; appearance: none; @@ -318,7 +421,6 @@ background: light-dark(transparent, @dark-blue); border-bottom: none; border-radius: 6px 6px 0 0; - &::-webkit-progress-bar { border: none; background: light-dark(transparent, @dark-blue); @@ -402,7 +504,7 @@ font-weight: bold; text-align: center; line-height: 18px; - font-size: 12px; + font-size: var(--font-size-12); color: light-dark(@beige, @dark-blue); } } @@ -424,7 +526,7 @@ height: 30px; h4 { - font-size: 14px; + font-size: var(--font-size-14); font-weight: bold; text-transform: uppercase; color: light-dark(@dark-blue, @golden); @@ -443,7 +545,7 @@ margin-bottom: 10px; .inventory-item { - padding: 0 10px; + padding-left: 10px; } } @@ -452,10 +554,11 @@ padding-top: 10px; padding-bottom: 20px; mask-image: linear-gradient(0deg, transparent 0%, black 5%); + scrollbar-gutter: stable; + scrollbar-width: thin; &:hover { overflow-y: auto; - scrollbar-width: thin; scrollbar-color: light-dark(@dark-blue, @golden) transparent; } } @@ -489,8 +592,7 @@ .experience-value { height: 25px; width: 35px; - font-size: 14px; - font-family: @font-body; + font-size: var(--font-size-14); color: light-dark(@dark, @beige); align-content: center; text-align: center; diff --git a/styles/less/sheets/actors/companion/details.less b/styles/less/sheets/actors/companion/details.less index 47b5873d..cbdc25e6 100644 --- a/styles/less/sheets/actors/companion/details.less +++ b/styles/less/sheets/actors/companion/details.less @@ -16,7 +16,7 @@ width: 100%; h3 { - font-size: 20px; + font-size: var(--font-size-20); } } .items-list { @@ -58,8 +58,7 @@ .experience-name { width: 180px; text-align: start; - font-size: 14px; - font-family: @font-body; + font-size: var(--font-size-14); color: light-dark(@dark, @beige); } } @@ -67,8 +66,7 @@ .experience-value { height: 25px; width: 35px; - font-size: 14px; - font-family: @font-body; + font-size: var(--font-size-14); color: light-dark(@dark, @beige); align-content: center; text-align: center; @@ -79,4 +77,17 @@ } } } + + .action-section { + display: flex; + padding: 0 10px; + margin-top: 20px; + width: 100%; + + button { + height: 40px; + width: 100%; + font-weight: 600; + } + } } diff --git a/styles/less/sheets/actors/companion/effects.less b/styles/less/sheets/actors/companion/effects.less new file mode 100644 index 00000000..12e1d847 --- /dev/null +++ b/styles/less/sheets/actors/companion/effects.less @@ -0,0 +1,17 @@ +@import '../../../utils/colors.less'; + +.application.sheet.daggerheart.actor.dh-style.companion { + .tab.effects { + .effects-sections { + display: flex; + flex-direction: column; + gap: 10px; + overflow-y: auto; + mask-image: linear-gradient(0deg, transparent 0%, black 5%); + padding-bottom: 20px; + + scrollbar-width: thin; + scrollbar-color: light-dark(@dark-blue, @golden) transparent; + } + } +} diff --git a/styles/less/sheets/actors/companion/header.less b/styles/less/sheets/actors/companion/header.less index 240f9df8..3616a6b3 100644 --- a/styles/less/sheets/actors/companion/header.less +++ b/styles/less/sheets/actors/companion/header.less @@ -24,7 +24,7 @@ margin-bottom: -30px; input[type='text'] { - font-size: 24px; + font-size: var(--font-size-24); height: 32px; text-align: center; border: 1px solid transparent; @@ -37,11 +37,22 @@ } } + .resource-section { + width: 100%; + display: flex; + justify-content: center; + } + .status-section { display: flex; gap: 5px; justify-content: center; + &.pip-display { + width: 100%; + justify-content: space-around; + } + .status-number { display: flex; flex-direction: column; @@ -78,109 +89,109 @@ font-weight: bold; text-align: center; line-height: 18px; - font-size: 12px; + font-size: var(--font-size-12); color: light-dark(@beige, @dark-blue); } } } - .status-bar { - display: flex; - justify-content: center; - position: relative; - width: 100px; - height: 40px; + // .status-bar { + // display: flex; + // justify-content: center; + // position: relative; + // width: 100px; + // height: 40px; - .status-label { - position: relative; - top: 40px; - height: 22px; - width: 79px; - clip-path: path('M0 0H79L74 16.5L39 22L4 16.5L0 0Z'); - background: light-dark(@dark-blue, @golden); + // .status-label { + // position: relative; + // top: 40px; + // height: 22px; + // width: 79px; + // clip-path: path('M0 0H79L74 16.5L39 22L4 16.5L0 0Z'); + // background: light-dark(@dark-blue, @golden); - h4 { - font-weight: bold; - text-align: center; - line-height: 18px; - color: light-dark(@beige, @dark-blue); - } - } - .status-value { - position: absolute; - display: flex; - padding: 0 6px; - font-size: 1.5rem; - align-items: center; - width: 100px; - height: 40px; - justify-content: center; - text-align: center; - z-index: 2; - color: @beige; + // h4 { + // font-weight: bold; + // text-align: center; + // line-height: 18px; + // color: light-dark(@beige, @dark-blue); + // } + // } + // .status-value { + // position: absolute; + // display: flex; + // padding: 0 6px; + // font-size: 1.5rem; + // align-items: center; + // width: 100px; + // height: 40px; + // justify-content: center; + // text-align: center; + // z-index: 2; + // color: @beige; - input[type='number'] { - background: transparent; - font-size: 1.5rem; - width: 40px; - height: 30px; - text-align: center; - border: none; - outline: 2px solid transparent; - color: @beige; + // input[type='number'] { + // background: transparent; + // font-size: 1.5rem; + // width: 40px; + // height: 30px; + // text-align: center; + // border: none; + // outline: 2px solid transparent; + // color: @beige; - &.bar-input { - padding: 0; - color: @beige; - backdrop-filter: none; - background: transparent; - transition: all 0.3s ease; + // &.bar-input { + // padding: 0; + // color: @beige; + // backdrop-filter: none; + // background: transparent; + // transition: all 0.3s ease; - &:hover, - &:focus { - background: @semi-transparent-dark-blue; - backdrop-filter: blur(9.5px); - } - } - } + // &:hover, + // &:focus { + // background: @semi-transparent-dark-blue; + // backdrop-filter: blur(9.5px); + // } + // } + // } - .bar-label { - width: 40px; - } - } - .progress-bar { - position: absolute; - appearance: none; - width: 100px; - height: 40px; - border: 1px solid light-dark(@dark-blue, @golden); - border-radius: 6px; - z-index: 1; - background: @dark-blue; + // .bar-label { + // width: 40px; + // } + // } + // .progress-bar { + // position: absolute; + // appearance: none; + // width: 100px; + // height: 40px; + // border: 1px solid light-dark(@dark-blue, @golden); + // border-radius: 6px; + // z-index: 1; + // background: @dark-blue; - &::-webkit-progress-bar { - border: none; - background: @dark-blue; - border-radius: 6px; - } - &::-webkit-progress-value { - background: @gradient-hp; - border-radius: 6px; - } - &.stress-color::-webkit-progress-value { - background: @gradient-stress; - border-radius: 6px; - } - &::-moz-progress-bar { - background: @gradient-hp; - border-radius: 6px; - } - &.stress-color::-moz-progress-bar { - background: @gradient-stress; - border-radius: 6px; - } - } - } + // &::-webkit-progress-bar { + // border: none; + // background: @dark-blue; + // border-radius: 6px; + // } + // &::-webkit-progress-value { + // background: @gradient-hp; + // border-radius: 6px; + // } + // &.stress-color::-webkit-progress-value { + // background: @gradient-stress; + // border-radius: 6px; + // } + // &::-moz-progress-bar { + // background: @gradient-hp; + // border-radius: 6px; + // } + // &.stress-color::-moz-progress-bar { + // background: @gradient-stress; + // border-radius: 6px; + // } + // } + // } .level-div { white-space: nowrap; @@ -209,7 +220,7 @@ .level-button { color: light-dark(@dark, @beige); - font-size: 18px; + font-size: var(--font-size-18); line-height: 1; min-height: unset; height: min-content; diff --git a/styles/less/sheets/actors/environment/header.less b/styles/less/sheets/actors/environment/header.less index f7353b10..670f6c92 100644 --- a/styles/less/sheets/actors/environment/header.less +++ b/styles/less/sheets/actors/environment/header.less @@ -39,7 +39,7 @@ justify-content: center; align-items: center; padding: 3px 5px; - font-size: 12px; + font-size: var(--font-size-12); font: @font-body; background: light-dark(@dark-15, @beige-15); @@ -52,9 +52,16 @@ flex-direction: row; justify-content: center; align-items: center; - font-size: 12px; + font-size: var(--font-size-12); } } + + .attribution-header-label { + text-align: left; + position: relative; + top: 4px; + margin-bottom: -6px; + } } .status-number { @@ -93,7 +100,7 @@ font-weight: bold; text-align: center; line-height: 18px; - font-size: 12px; + font-size: var(--font-size-12); color: light-dark(@beige, @dark-blue); } } @@ -101,7 +108,7 @@ .item-name { input[type='text'] { - font-size: 32px; + font-size: var(--font-size-32); height: 42px; text-align: start; transition: all 0.3s ease; @@ -122,12 +129,6 @@ flex-direction: column; gap: 12px; padding: 10px 20px; - - .description, - .impulses { - text-align: start; - font-family: @font-body; - } } .environment-navigation { diff --git a/styles/less/sheets/actors/environment/potentialAdversaries.less b/styles/less/sheets/actors/environment/potentialAdversaries.less new file mode 100644 index 00000000..274362a5 --- /dev/null +++ b/styles/less/sheets/actors/environment/potentialAdversaries.less @@ -0,0 +1,17 @@ +@import '../../../utils/colors.less'; + +.application.sheet.daggerheart.actor.dh-style.environment { + .tab.potentialAdversaries { + .items-section { + display: flex; + flex-direction: column; + gap: 10px; + overflow-y: auto; + mask-image: linear-gradient(0deg, transparent 0%, black 5%); + padding-bottom: 20px; + + scrollbar-width: thin; + scrollbar-color: light-dark(@dark-blue, @golden) transparent; + } + } +} diff --git a/styles/less/sheets/actors/environment/sheet.less b/styles/less/sheets/actors/environment/sheet.less index 74cec028..f86e3d00 100644 --- a/styles/less/sheets/actors/environment/sheet.less +++ b/styles/less/sheets/actors/environment/sheet.less @@ -5,6 +5,10 @@ .appTheme({ &.environment { background-image: url('../assets/parchments/dh-parchment-dark.png'); + + .attribution-header-label { + background-image: url('../assets/parchments/dh-parchment-dark.png'); + } } }, { &.environment { @@ -18,5 +22,11 @@ overflow-y: auto; scrollbar-width: thin; scrollbar-color: light-dark(@dark-blue, @golden) transparent; + + &.active { + overflow: hidden; + display: flex; + flex-direction: column; + } } } diff --git a/styles/less/sheets/actors/party/header.less b/styles/less/sheets/actors/party/header.less new file mode 100644 index 00000000..9a2c7350 --- /dev/null +++ b/styles/less/sheets/actors/party/header.less @@ -0,0 +1,42 @@ +@import '../../../utils/colors.less'; +@import '../../../utils/fonts.less'; + +.party-header-sheet { + display: flex; + flex-direction: column; + justify-content: start; + text-align: center; + + .profile { + height: 235px; + mask-image: linear-gradient(0deg, transparent 0%, black 10%); + cursor: pointer; + } + + .item-container { + .item-name { + padding: 0 20px; + input[type='text'] { + font-size: 32px; + height: 42px; + text-align: center; + transition: all 0.3s ease; + outline: 2px solid transparent; + border: 1px solid transparent; + + &:hover[type='text'], + &:focus[type='text'] { + box-shadow: none; + outline: 2px solid light-dark(@dark-blue, @golden); + } + } + } + + .label { + font-style: normal; + font-weight: 700; + font-size: 16px; + margin: 5px 0; + } + } +} diff --git a/styles/less/sheets/actors/party/inventory.less b/styles/less/sheets/actors/party/inventory.less new file mode 100644 index 00000000..1dfc66de --- /dev/null +++ b/styles/less/sheets/actors/party/inventory.less @@ -0,0 +1,73 @@ +@import '../../../utils/colors.less'; +@import '../../../utils/fonts.less'; + +.application.sheet.daggerheart.actor.dh-style.party { + .tab.inventory { + .search-section { + display: flex; + gap: 10px; + align-items: center; + + .search-bar { + position: relative; + color: light-dark(@dark-blue-50, @beige-50); + width: 100%; + padding-top: 5px; + + input { + border-radius: 50px; + background: light-dark(@dark-blue-10, @golden-10); + border: none; + outline: 2px solid transparent; + transition: all 0.3s ease; + padding: 0 20px; + + &:hover { + outline: 2px solid light-dark(@dark, @golden); + } + + &:placeholder { + color: light-dark(@dark-blue-50, @beige-50); + } + + &::-webkit-search-cancel-button { + -webkit-appearance: none; + display: none; + } + } + + .icon { + align-content: center; + height: 32px; + position: absolute; + right: 20px; + font-size: 16px; + z-index: 1; + color: light-dark(@dark-blue-50, @beige-50); + } + } + } + + .items-section { + display: flex; + flex-direction: column; + gap: 10px; + overflow-y: auto; + mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%); + padding: 20px 0; + + scrollbar-width: thin; + scrollbar-color: light-dark(@dark-blue, @golden) transparent; + } + + .currency-section { + display: flex; + gap: 10px; + padding: 10px 10px 0; + + input { + color: light-dark(@dark, @beige); + } + } + } +} diff --git a/styles/less/sheets/actors/party/party-members.less b/styles/less/sheets/actors/party/party-members.less new file mode 100644 index 00000000..a433ae34 --- /dev/null +++ b/styles/less/sheets/actors/party/party-members.less @@ -0,0 +1,28 @@ +@import '../../../utils/colors.less'; +@import '../../../utils/fonts.less'; + +.application.sheet.daggerheart.actor.dh-style.party { + .tab.partyMembers { + max-height: 400px; + overflow: auto; + + .actors-list { + display: flex; + flex-direction: column; + gap: 10px; + align-items: center; + width: 100%; + } + .actors-dragger { + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + width: 100%; + height: 40px; + border: 1px dashed light-dark(@dark-blue-50, @beige-50); + border-radius: 3px; + color: light-dark(@dark-blue-50, @beige-50); + } + } +} diff --git a/styles/less/sheets/actors/party/resources.less b/styles/less/sheets/actors/party/resources.less new file mode 100644 index 00000000..fc7e0110 --- /dev/null +++ b/styles/less/sheets/actors/party/resources.less @@ -0,0 +1,196 @@ +@import '../../../utils/colors.less'; +@import '../../../utils/fonts.less'; +@import '../../../utils/mixin.less'; + +body.game:is(.performance-low, .noblur) { + .application.sheet.daggerheart.actor.dh-style.party .tab.resources .actors-list .actor-resources { + background: light-dark(@dark-blue, @dark-golden); + + .actor-name { + background: light-dark(@dark-blue, @dark-golden); + } + } +} + +.application.sheet.daggerheart.actor.dh-style.party { + .tab.resources { + overflow: auto; + + .actors-list { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: 10px; + align-items: center; + width: 100%; + justify-content: center; + + .actor-resources { + display: flex; + flex-direction: column; + position: relative; + background: light-dark(@dark-blue-40, @dark-golden-40); + border-radius: 6px; + border: 1px solid light-dark(@dark-blue, @golden); + max-width: 230px; + height: -webkit-fill-available; + + .actor-name { + position: absolute; + top: 0px; + background: light-dark(@dark-blue-90, @dark-golden-80); + backdrop-filter: blur(6.5px); + border-radius: 6px 6px 0px 0px; + text-align: center; + width: 100%; + z-index: 1; + font-size: var(--font-size-20); + color: light-dark(@beige, @golden); + font-weight: bold; + padding: 5px 0; + } + + .actor-img { + height: 150px; + object-fit: cover; + object-position: top center; + border-radius: 6px 6px 0px 0px; + mask-image: linear-gradient(180deg, black 88%, transparent 100%); + } + + .resources { + display: flex; + flex-direction: column; + gap: 10px; + align-items: center; + margin: 10px; + + .slot-section { + display: flex; + flex-direction: column; + align-items: center; + + .slot-bar { + display: flex; + flex-wrap: wrap; + gap: 5px; + width: 239px; + + background-color: light-dark(@dark-blue-10, @dark-blue); + color: light-dark(@dark-blue, @golden); + padding: 5px; + border: 1px solid light-dark(@dark-blue, @golden); + border-radius: 6px; + width: fit-content; + + .armor-slot { + cursor: pointer; + transition: all 0.3s ease; + font-size: var(--font-size-12); + + .fa-shield-halved { + color: light-dark(@dark-blue-40, @golden-40); + } + } + + .slot { + width: 20px; + height: 10px; + border: 1px solid light-dark(@dark-blue, @golden); + background: light-dark(@dark-blue-10, @golden-10); + border-radius: 3px; + transition: all 0.3s ease; + cursor: pointer; + + &.filled { + background: light-dark(@dark-blue, @golden); + } + } + } + .slot-label { + display: flex; + align-items: center; + color: light-dark(@beige, @dark-blue); + background: light-dark(@dark-blue, @golden); + padding: 0 5px; + width: fit-content; + font-weight: bold; + border-radius: 0px 0px 5px 5px; + font-size: var(--font-size-12); + + .label { + padding-right: 5px; + } + + .value { + padding-left: 6px; + border-left: 1px solid light-dark(@beige, @dark-golden); + } + } + } + + .hope-section { + position: relative; + display: flex; + gap: 10px; + background-color: light-dark(transparent, @dark-blue); + color: light-dark(@dark-blue, @golden); + padding: 5px 10px; + border: 1px solid light-dark(@dark-blue, @golden); + border-radius: 3px; + align-items: center; + width: fit-content; + + h4 { + font-size: var(--font-size-12); + font-weight: bold; + text-transform: uppercase; + color: light-dark(@dark-blue, @golden); + } + + .hope-value { + display: flex; + cursor: pointer; + font-size: var(--font-size-12); + } + } + + .threshold-section { + display: flex; + align-self: center; + gap: 10px; + background-color: light-dark(transparent, @dark-blue); + color: light-dark(@dark-blue, @golden); + padding: 5px 10px; + border: 1px solid light-dark(@dark-blue, @golden); + border-radius: 3px; + align-items: center; + width: fit-content; + + h4 { + font-size: var(--font-size-12); + font-weight: bold; + text-transform: uppercase; + color: light-dark(@dark-blue, @golden); + + &.threshold-value { + color: light-dark(@dark, @beige); + } + } + } + } + } + } + .actors-dragger { + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + width: 100%; + height: 40px; + border: 1px dashed light-dark(@dark-blue-50, @beige-50); + border-radius: 3px; + color: light-dark(@dark-blue-50, @beige-50); + } + } +} diff --git a/styles/less/sheets/actors/party/sheet.less b/styles/less/sheets/actors/party/sheet.less new file mode 100644 index 00000000..658d9446 --- /dev/null +++ b/styles/less/sheets/actors/party/sheet.less @@ -0,0 +1,45 @@ +@import '../../../utils/colors.less'; +@import '../../../utils/fonts.less'; +@import '../../../utils/mixin.less'; + +.appTheme({ + &.party { + background-image: url('../assets/parchments/dh-parchment-dark.png'); + } +}, { + &.party { + background: url('../assets/parchments/dh-parchment-light.png'); + } +}); + +.application.sheet.daggerheart.actor.dh-style.party { + .tab { + height: -webkit-fill-available; + max-height: 514px; + overflow-y: auto; + scrollbar-width: thin; + scrollbar-color: light-dark(@dark-blue, @golden) transparent; + + &.active { + overflow: auto; + display: flex; + flex-direction: column; + } + + .actions-section { + display: flex; + align-items: center; + justify-content: center; + padding: 10px; + margin-bottom: 10px; + gap: 20px; + background-color: light-dark(@dark-blue-10, @golden-10); + + button { + span { + font-size: 12px; + } + } + } + } +} diff --git a/styles/less/sheets/index.less b/styles/less/sheets/index.less index a8f36a63..1de1b055 100644 --- a/styles/less/sheets/index.less +++ b/styles/less/sheets/index.less @@ -4,6 +4,7 @@ @import './actors/adversary/header.less'; @import './actors/adversary/sheet.less'; @import './actors/adversary/sidebar.less'; +@import './actors/adversary/effects.less'; @import './actors/character/biography.less'; @import './actors/character/effects.less'; @@ -17,12 +18,22 @@ @import './actors/companion/details.less'; @import './actors/companion/header.less'; @import './actors/companion/sheet.less'; +@import './actors/companion/effects.less'; @import './actors/environment/actions.less'; @import './actors/environment/header.less'; +@import './actors/environment/potentialAdversaries.less'; @import './actors/environment/sheet.less'; +@import './actors/party/header.less'; +@import './actors/party/party-members.less'; +@import './actors/party/sheet.less'; +@import './actors/party/inventory.less'; +@import './actors/party/resources.less'; + @import './items/beastform.less'; @import './items/class.less'; @import './items/domain-card.less'; @import './items/feature.less'; +@import './items/heritage.less'; +@import './items/item-sheet-shared.less'; diff --git a/styles/less/sheets/items/class.less b/styles/less/sheets/items/class.less index d32f60d6..526aa77f 100644 --- a/styles/less/sheets/items/class.less +++ b/styles/less/sheets/items/class.less @@ -25,7 +25,6 @@ gap: 10px; grid-template-columns: 1fr 3fr 1fr; h4 { - font-family: @font-body; font-weight: lighter; color: light-dark(@dark, @beige); } @@ -44,4 +43,18 @@ } } } + + .tab.questions { + .questions-container { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 8px; + + .questions-section { + display: flex; + flex-direction: column; + gap: 4px; + } + } + } } diff --git a/styles/less/sheets/items/heritage.less b/styles/less/sheets/items/heritage.less new file mode 100644 index 00000000..1342f5ee --- /dev/null +++ b/styles/less/sheets/items/heritage.less @@ -0,0 +1,12 @@ +.application.sheet.daggerheart.dh-style { + &.ancestry, + &.community { + .item-card-header { + .item-info { + .item-description { + gap: 0; + } + } + } + } +} diff --git a/styles/less/sheets/items/item-sheet-shared.less b/styles/less/sheets/items/item-sheet-shared.less new file mode 100644 index 00000000..d0a8cc48 --- /dev/null +++ b/styles/less/sheets/items/item-sheet-shared.less @@ -0,0 +1,13 @@ +.application.sheet.daggerheart.dh-style.item { + &.minimized { + .attribution-header-label { + display: none; + } + } + + .attribution-header-label { + font-style: italic; + font-family: @font-body; + color: light-dark(@chat-blue-bg, @beige-50); + } +} diff --git a/styles/less/ui/chat/ability-use.less b/styles/less/ui/chat/ability-use.less index 3e747380..88302d0d 100644 --- a/styles/less/ui/chat/ability-use.less +++ b/styles/less/ui/chat/ability-use.less @@ -1,118 +1,144 @@ -@import '../../utils/colors.less'; -@import '../../utils/fonts.less'; -@import '../../utils/spacing.less'; - -.daggerheart.chat { - &.domain-card { - display: flex; - flex-direction: column; - align-items: center; - - .card-img { - width: 100%; - height: 200px; - mask-image: linear-gradient(0deg, transparent 0%, black 10%, black 90%, transparent 100%); - object-fit: cover; - } - - details[open] { - .fa-chevron-down { - transform: rotate(180deg); - transition: all 0.3s ease; - } - } - - .domain-card-move { - width: 100%; - - .fa-chevron-down { - transition: all 0.3s ease; - margin-left: auto; - } - - .domain-card-header { - display: flex; - flex-direction: row; - align-items: center; - margin: 8px; - padding-bottom: 5px; - width: -webkit-fill-available; - gap: 5px; - border-bottom: 1px solid @golden; - - &:hover { - background: light-dark(@dark-blue-10, @golden-10); - cursor: pointer; - transition: all 0.3s ease; - } - - .domain-label { - display: flex; - flex-direction: column; - width: 100%; - padding-bottom: 5px; - width: -webkit-fill-available; - gap: 5px; - - .title { - font-size: 20px; - color: @golden; - font-family: @font-subtitle; - margin: 0; - } - - .tags { - display: flex; - gap: 10px; - flex-wrap: wrap; - - .tag { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - padding: 3px 5px; - font-size: 12px; - font-family: @font-body; - - background: light-dark(@dark-15, @beige-15); - border: 1px solid light-dark(@dark, @beige); - color: light-dark(@dark, @beige); - border-radius: 3px; - } - } - } - } - } - - .description { - color: @beige; - padding: 8px; - font-family: @font-body; - } - - .ability-card-footer { - display: flex; - flex-wrap: wrap; - gap: 5px; - width: 100%; - padding: 0 8px; - - button { - font-family: @font-body; - font-weight: 600; - height: 40px; - flex: 1 1 calc(50% - 5px); - - &:nth-last-child(1):nth-child(odd) { - flex-basis: 100%; - } - } - - .ability-card-action-cost { - margin: auto; - font-size: 1.5em; - } - } - } -} +@import '../../utils/colors.less'; +@import '../../utils/fonts.less'; +@import '../../utils/spacing.less'; + +#interface.theme-light { + .daggerheart.chat.domain-card { + .domain-card-move .domain-card-header { + border-bottom: 1px solid @dark-blue; + + &:hover { + background: @dark-blue-10; + } + + .domain-label { + .title { + color: @dark-blue; + } + + .tags .tag { + background: @dark-15; + border: 1px solid @dark; + color: @dark; + } + } + + .fa-chevron-down { + color: @dark-blue; + } + } + + .description { + color: @dark; + } + } +} + +.daggerheart.chat { + &.domain-card { + display: flex; + flex-direction: column; + align-items: center; + + .card-img { + width: 100%; + height: 200px; + mask-image: linear-gradient(0deg, transparent 0%, black 10%, black 90%, transparent 100%); + object-fit: cover; + } + + details[open] { + .fa-chevron-down { + transform: rotate(180deg); + transition: all 0.3s ease; + } + } + + .domain-card-move { + width: 100%; + + .fa-chevron-down { + transition: all 0.3s ease; + margin-left: auto; + } + + .domain-card-header { + display: flex; + flex-direction: row; + align-items: center; + margin: 8px; + padding-bottom: 5px; + width: -webkit-fill-available; + gap: 5px; + border-bottom: 1px solid @golden; + + &:hover { + background: @golden-10; + cursor: pointer; + transition: all 0.3s ease; + } + + .domain-label { + display: flex; + flex-direction: column; + width: 100%; + padding-bottom: 5px; + width: -webkit-fill-available; + gap: 5px; + + .title { + font-size: var(--font-size-20); + color: @golden; + font-weight: 700; + } + + .tags { + display: flex; + gap: 10px; + flex-wrap: wrap; + + .tag { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: 3px 5px; + font-size: var(--font-size-12); + + background: @beige-15; + border: 1px solid @beige; + color: @beige; + border-radius: 3px; + } + } + } + } + } + + .description { + padding: 8px; + } + + .ability-card-footer { + display: flex; + flex-wrap: wrap; + gap: 5px; + width: 100%; + padding: 0 8px; + + button { + height: 40px; + flex: 1 1 calc(50% - 5px); + + &:nth-last-child(1):nth-child(odd) { + flex-basis: 100%; + } + } + + .ability-card-action-cost { + margin: auto; + font-size: 1.5em; + } + } + } +} diff --git a/styles/less/ui/chat/action.less b/styles/less/ui/chat/action.less index c3c51816..817b0acd 100644 --- a/styles/less/ui/chat/action.less +++ b/styles/less/ui/chat/action.less @@ -1,101 +1,125 @@ -@import '../../utils/colors.less'; -@import '../../utils/fonts.less'; -@import '../../utils/spacing.less'; - -.daggerheart.chat { - &.action { - display: flex; - flex-direction: column; - align-items: center; - - details[open] { - .fa-chevron-down { - transform: rotate(180deg); - transition: all 0.3s ease; - } - } - - .action-move { - width: 100%; - - .fa-chevron-down { - transition: all 0.3s ease; - margin-left: auto; - } - - .action-section { - display: flex; - flex-direction: row; - align-items: center; - margin: 8px 8px 0; - padding-bottom: 5px; - width: -webkit-fill-available; - gap: 5px; - border-bottom: 1px solid @golden; - - &:hover { - background: light-dark(@dark-blue-10, @golden-10); - cursor: pointer; - transition: all 0.3s ease; - } - - .action-img { - width: 40px; - height: 40px; - border-radius: 3px; - object-fit: cover; - } - - .action-header { - display: flex; - flex-direction: column; - gap: 5px; - - .title { - font-size: 20px; - color: @golden; - font-family: @font-subtitle; - margin: 0; - } - - .label { - font-size: 12px; - color: @beige; - font-family: @font-body; - margin: 0; - } - } - } - } - - .description { - color: @beige; - padding: 8px; - font-family: @font-body; - } - - .ability-card-footer { - display: flex; - flex-wrap: wrap; - gap: 5px; - width: 100%; - padding: 0 8px; - - button { - font-family: @font-body; - font-weight: 600; - height: 40px; - flex: 1 1 calc(50% - 5px); - - &:nth-last-child(1):nth-child(odd) { - flex-basis: 100%; - } - } - - .ability-card-action-cost { - margin: auto; - font-size: 1.5em; - } - } - } -} +@import '../../utils/colors.less'; +@import '../../utils/fonts.less'; +@import '../../utils/spacing.less'; + +#interface.theme-light { + .daggerheart.chat.action { + .action-move .action-section { + border-bottom: 1px solid @dark-blue; + + &:hover { + background: @dark-blue-10; + } + + .action-header { + .title { + color: @dark-blue; + } + .label { + color: @dark; + } + } + + .fa-chevron-down { + color: @dark-blue; + } + } + + .description { + color: @dark; + } + } +} + +.daggerheart.chat { + &.action { + display: flex; + flex-direction: column; + align-items: center; + + details[open] { + .fa-chevron-down { + transform: rotate(180deg); + transition: all 0.3s ease; + } + } + + .action-move { + width: 100%; + + .fa-chevron-down { + transition: all 0.3s ease; + margin-left: auto; + } + + .action-section { + display: flex; + flex-direction: row; + align-items: center; + margin: 8px 8px 0; + padding-bottom: 5px; + width: -webkit-fill-available; + gap: 5px; + border-bottom: 1px solid @golden; + + &:hover { + background: @golden-10; + cursor: pointer; + transition: all 0.3s ease; + } + + .action-img { + width: 40px; + height: 40px; + border-radius: 3px; + object-fit: cover; + } + + .action-header { + display: flex; + flex-direction: column; + gap: 5px; + color: @beige; + + .title { + font-size: var(--font-size-20); + color: @golden; + font-weight: 700; + } + + .label { + font-size: var(--font-size-12); + color: @beige; + margin: 0; + } + } + } + } + + .description { + padding: 8px; + } + + .ability-card-footer { + display: flex; + flex-wrap: wrap; + gap: 5px; + width: 100%; + padding: 0 8px; + + button { + height: 40px; + flex: 1 1 calc(50% - 5px); + + &:nth-last-child(1):nth-child(odd) { + flex-basis: 100%; + } + } + + .ability-card-action-cost { + margin: auto; + font-size: 1.5em; + } + } + } +} diff --git a/styles/less/ui/chat/chat.less b/styles/less/ui/chat/chat.less index 81af3d23..828e2774 100644 --- a/styles/less/ui/chat/chat.less +++ b/styles/less/ui/chat/chat.less @@ -2,11 +2,139 @@ @import '../../utils/fonts.less'; @import '../../utils/spacing.less'; +#interface.theme-light { + .daggerheart.chat-sidebar .chat-log, + #chat-notifications .chat-log { + --text-color: @dark-blue; + --bg-color: @dark-blue-40; + + .chat-message { + .roll-formula { + background: @dark-15; + color: @dark; + } + + &.duality { + background-image: url(../assets/parchments/dh-parchment-dark.png); + + .message-content { + color: @beige; + } + + .roll-formula { + background: @dark-15; + color: @dark; + } + + .message-header { + .message-sub-header-container { + color: @beige; + h4 { + color: @golden; + } + } + .message-header-metadata { + .message-metadata { + color: @beige; + } + } + } + + &.hope { + --text-color: @golden; + --bg-color: @golden-40; + .message-header, + .message-content { + background-color: @golden-bg; + } + .roll-formula { + background: var(--bg-color); + color: var(--text-color); + } + } + + &.fear { + --text-color: @chat-blue; + --bg-color: @chat-blue-40; + .message-header, + .message-content { + background-color: @chat-blue-bg; + } + .roll-formula { + background: var(--bg-color); + color: var(--text-color); + } + } + + &.critical { + --text-color: @chat-purple; + --bg-color: @chat-purple-40; + .message-header, + .message-content { + background-color: @chat-purple-bg; + } + .roll-formula { + background: var(--bg-color); + color: var(--text-color); + } + } + } + + &:not(.duality) { + .font-20 { + color: @dark; + } + + .roll-die { + color: @beige; + } + + fieldset { + color: @dark-blue; + border-color: @dark-blue; + + legend { + color: @dark-blue; + } + } + .chat-roll { + .roll-part-header { + color: @dark-blue; + + span::before, + span::after { + color: @dark-blue; + } + + &:before { + background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, @dark-blue 100%); + } + + &:after { + background: linear-gradient(90deg, @dark-blue 0%, rgba(0, 0, 0, 0) 100%); + } + } + + .roll-part-content { + &.dice-result { + color: @dark; + } + .roll-result-container { + color: @dark-blue; + } + } + } + } + } + } +} + .daggerheart.chat { &.resource-roll { .reroll-message { + color: @beige; text-align: center; - font-size: 18px; + font-size: var(--font-size-18); margin-bottom: 0; } } @@ -27,8 +155,8 @@ .daggerheart, #chat-notifications { .chat-message { - --text-color: light-dark(@dark-blue, @golden); - --bg-color: light-dark(@dark-blue-40, @golden-40); + --text-color: @golden; + --bg-color: @golden-40; [data-use-perm='false'] { pointer-events: none; @@ -85,7 +213,7 @@ display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; - color: light-dark(@dark, @beige); + color: @beige; margin: 10px 0; span { @@ -148,7 +276,7 @@ position: absolute; top: 0; right: 0; - font-size: 10px; + font-size: var(--font-size-10); z-index: 2; filter: drop-shadow(0 0 3px black); } @@ -427,6 +555,7 @@ gap: 5px; margin-top: 8px; button { + height: 32px; flex: 1; } } diff --git a/styles/less/ui/chat/damage-summary.less b/styles/less/ui/chat/damage-summary.less new file mode 100644 index 00000000..02fdbadf --- /dev/null +++ b/styles/less/ui/chat/damage-summary.less @@ -0,0 +1,87 @@ +@import '../../utils/colors.less'; + +#interface.theme-light { + .daggerheart.chat.damage-summary .token-target-container { + &:hover { + background: @dark-blue-10; + } + + header { + .actor-name { + color: @dark; + } + + &::after { + background: @dark-blue; + } + } + } +} + +.daggerheart.chat.damage-summary { + display: flex; + flex-direction: column; + gap: 5px; + padding: 0; + + .token-target-container { + display: flex; + flex-direction: column; + gap: 2px; + cursor: pointer; + transition: all 0.3s ease; + border-radius: 6px; + + &:hover { + background: @golden-10; + } + + header { + display: flex; + align-items: center; + gap: 5px; + pointer-events: none; + position: relative; + margin-bottom: 10px; + + img { + width: 40px; + height: 40px; + padding: 0; + border-radius: 50%; + } + + .actor-name { + margin: 0; + color: @beige; + font-size: var(--font-size-20); + padding: 8px; + } + + &::after { + content: ''; + position: absolute; + bottom: -10px; + background: @golden; + mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%); + height: 2px; + width: 100%; + } + } + + .damage-container { + display: flex; + flex-direction: column; + justify-content: center; + gap: 5px; + pointer-events: none; + margin-top: 5px; + list-style: disc; + + .damage-row { + padding: 0 2px; + gap: 4px; + } + } + } +} diff --git a/styles/less/ui/chat/downtime.less b/styles/less/ui/chat/downtime.less index bc702aeb..5496a2a3 100644 --- a/styles/less/ui/chat/downtime.less +++ b/styles/less/ui/chat/downtime.less @@ -1,87 +1,110 @@ -@import '../../utils/colors.less'; -@import '../../utils/fonts.less'; -@import '../../utils/spacing.less'; - -.daggerheart.chat { - &.downtime { - display: flex; - flex-direction: column; - align-items: center; - - details[open] { - .fa-chevron-down { - transform: rotate(180deg); - transition: all 0.3s ease; - } - } - - .downtime-moves-list { - display: flex; - flex-direction: column; - gap: 5px; - width: 100%; - - .fa-chevron-down { - transition: all 0.3s ease; - margin-left: auto; - } - - .downtime-move { - width: 100%; - - .downtime-label { - display: flex; - align-items: center; - gap: 5px; - border-bottom: 1px solid @golden; - margin: 0 8px; - padding-bottom: 5px; - width: -webkit-fill-available; - - &:hover { - background: light-dark(@dark-blue-10, @golden-10); - cursor: pointer; - transition: all 0.3s ease; - } - - .downtime-image { - width: 40px; - height: 40px; - border-radius: 3px; - } - - .header-label { - padding: 8px; - .title { - font-size: 16px; - color: @golden; - font-family: @font-subtitle; - margin: 0; - } - .label { - font-size: 12px; - color: @beige; - font-family: @font-body; - margin: 0; - } - } - } - - .description { - padding: 8px; - color: beige; - font-family: @font-body; - font-size: 14px; - } - } - - .action-use-button { - width: -webkit-fill-available; - margin: 0 8px; - font-family: @font-body; - font-weight: 600; - height: 40px; - } - } - } -} +@import '../../utils/colors.less'; +@import '../../utils/fonts.less'; +@import '../../utils/spacing.less'; + +#interface.theme-light { + .daggerheart.chat.downtime { + .downtime-moves-list .downtime-move { + &:hover { + background: @dark-blue-10; + } + + .downtime-label { + border-bottom: 1px solid @dark-blue; + + .header-label .title { + color: @dark-blue; + } + .header-label .label { + color: @dark; + } + } + + .fa-chevron-down { + color: @dark-blue; + } + } + + .description { + color: @dark; + } + } +} + +.daggerheart.chat { + &.downtime { + display: flex; + flex-direction: column; + align-items: center; + + details[open] { + .fa-chevron-down { + transform: rotate(180deg); + transition: all 0.3s ease; + } + } + + .downtime-moves-list { + display: flex; + flex-direction: column; + gap: 5px; + width: 100%; + + .fa-chevron-down { + transition: all 0.3s ease; + margin-left: auto; + } + + .downtime-move { + width: 100%; + + .downtime-label { + display: flex; + align-items: center; + gap: 5px; + border-bottom: 1px solid @golden; + margin: 0 8px; + padding-bottom: 5px; + width: -webkit-fill-available; + + &:hover { + background: light-dark(@dark-blue-10, @golden-10); + cursor: pointer; + transition: all 0.3s ease; + } + + .downtime-image { + width: 40px; + height: 40px; + border-radius: 3px; + } + + .header-label { + padding: 8px; + .title { + font-size: var(--font-size-16); + color: @golden; + font-weight: 700; + } + .label { + font-size: var(--font-size-12); + color: @beige; + margin: 0; + } + } + } + + .description { + padding: 8px; + } + } + + .action-use-button { + width: -webkit-fill-available; + margin: 0 8px; + font-weight: 600; + height: 40px; + } + } + } +} diff --git a/styles/less/ui/chat/effect-summary.less b/styles/less/ui/chat/effect-summary.less new file mode 100644 index 00000000..9bea1fd9 --- /dev/null +++ b/styles/less/ui/chat/effect-summary.less @@ -0,0 +1,166 @@ +@import '../../utils/colors.less'; + +#interface.theme-light { + .daggerheart.chat.effect-summary { + .effect-header, + .actor-header { + &::before, + &::after { + height: 2px; + background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, @dark-blue 100%); + } + + &::after { + background: linear-gradient(90deg, @dark-blue 0%, rgba(0, 0, 0, 0) 100%); + } + + span { + color: @dark; + } + } + + .token-target-container, + .effect-target-container { + .effect-label .title, + .title { + color: @dark-blue; + } + + .effect-label { + border-color: @dark-blue; + } + + &:hover { + background: @dark-blue-10; + } + } + } +} + +.daggerheart.chat.effect-summary { + display: flex; + flex-direction: column; + + .effect-header, + .actor-header { + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 5px; + + &::before, + &::after { + content: ''; + flex: 1; + height: 2px; + background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, @golden 100%); + } + + &::after { + background: linear-gradient(90deg, @golden 0%, rgba(0, 0, 0, 0) 100%); + } + + span { + color: @beige; + padding: 0 10px; + white-space: nowrap; + } + } + + .effects-container { + display: flex; + flex-wrap: wrap; + gap: 5px; + margin-bottom: 8px; + } + + .targets-container { + display: flex; + flex-direction: column; + gap: 5px; + } + + .token-target-container { + display: flex; + align-items: center; + gap: 13px; + border-radius: 6px; + padding: 0 2px; + border-radius: 6px; + background: transparent; + transition: all 0.3s ease; + padding: 5px; + cursor: pointer; + transition: all 0.3s ease; + + &:hover { + background: @golden-10; + } + + img { + width: 40px; + height: 40px; + border-radius: 50%; + pointer-events: none; + } + + .title { + font-size: var(--font-size-20); + color: @golden; + font-weight: 700; + margin: 0; + pointer-events: none; + } + } + + details[open] { + .fa-chevron-down { + transform: rotate(180deg); + transition: all 0.3s ease; + } + } + + .effect-target-container { + width: 100%; + transition: all 0.3s ease; + cursor: pointer; + + &:hover { + background: @golden-10; + } + + .fa-chevron-down { + transition: all 0.3s ease; + margin-left: auto; + } + + .effect-label { + display: flex; + flex-direction: row; + align-items: center; + margin: 8px 8px 0; + padding-bottom: 5px; + width: -webkit-fill-available; + gap: 13px; + border-bottom: 1px solid @golden; + + .effect-img { + width: 40px; + height: 40px; + border-radius: 3px; + object-fit: cover; + } + + .title { + font-size: var(--font-size-20); + color: @golden; + font-weight: 700; + margin: 0; + } + } + + .description { + padding: 8px; + } + } +} diff --git a/styles/less/ui/chat/group-roll.less b/styles/less/ui/chat/group-roll.less new file mode 100644 index 00000000..02b8e312 --- /dev/null +++ b/styles/less/ui/chat/group-roll.less @@ -0,0 +1,210 @@ +.chat-message .message-content .group-roll { + display: flex; + flex-direction: column; + gap: 8px; + padding-bottom: 8px; + + .group-roll-section { + display: flex; + flex-direction: column; + gap: 4px; + + .group-roll-header { + display: flex; + align-items: center; + font-size: 14px; + margin-bottom: 0; + font-weight: normal; + + &.first { + margin-top: 5px; + } + + .group-roll-header-expand-section { + display: flex; + align-items: center; + gap: 4px; + cursor: pointer; + + label { + cursor: pointer; + } + + i { + color: light-dark(@dark-blue, @golden); + } + } + } + + .group-roll-content { + display: flex; + flex-direction: column; + gap: 16px; + border-radius: 5px; + padding: 5px; + overflow: hidden; + height: auto; + transition: all 0.3s ease; + + &.closed { + height: 0; + padding-top: 0; + padding-bottom: 0; + } + + &.finished { + background: light-dark(@dark-blue-10, @golden-10); + } + + .group-roll-main-roll { + display: flex; + flex-direction: column; + + .divider { + font-size: 14px; + margin-bottom: 0; + font-weight: normal; + } + + .main-roll-content { + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + color: light-dark(@dark-blue, @golden); + + .main-value { + font-size: var(--font-size-24); + font-weight: bold; + } + + .main-text { + font-size: var(--font-size-16); + margin-top: 2px; + } + } + } + + .group-roll-member { + display: flex; + justify-content: space-between; + + .group-roll-data { + display: flex; + gap: 4px; + + img { + width: 42px; + height: 42px; + border-radius: 50%; + } + + .group-roll-label-container { + display: flex; + flex-direction: column; + justify-content: space-between; + + .group-roll-label-inner-container { + display: flex; + gap: 8px; + } + + .group-roll-modifier { + padding: 2px 8px; + border: 1px solid light-dark(@green, @green); + border-radius: 6px; + color: light-dark(@green, @green); + background: light-dark(@green-40, @green-40); + + &.failure { + border-color: light-dark(@red, @red); + color: light-dark(@red, @red); + background: light-dark(@red-40, @red-40); + } + } + + .group-roll-trait { + padding: 2px 8px; + border: 1px solid light-dark(white, white); + border-radius: 6px; + color: light-dark(white, white); + background: light-dark(@beige-80, @beige-80); + } + } + } + + .group-roll-rolling { + img { + width: 42px; + height: 42px; + + &:hover { + filter: drop-shadow(0 0 8px light-dark(@dark-blue, @golden)); + } + } + } + + .roll-results { + display: flex; + align-items: center; + border-radius: 5px; + width: fit-content; + gap: 16px; + cursor: pointer; + padding: 5px; + background: light-dark(@dark-blue-10, @golden-10); + color: light-dark(@dark-blue, @golden); + + &.finished { + background-color: initial; + } + + .reroll-result-container { + display: flex; + align-items: center; + gap: 16px; + + .label { + font-style: normal; + font-weight: 400; + font-size: var(--font-size-18); + line-height: 17px; + } + + i { + font-size: 16px; + } + + .success, + .success i { + color: @green; + } + + .failure, + .failure i { + color: @red; + } + } + + .group-roll-reroll { + position: relative; + display: flex; + align-items: center; + justify-content: center; + + .dice-icon { + width: 24px; + } + + .reroll-icon { + position: absolute; + font-size: 14px; + color: black; + filter: drop-shadow(0 0 3px black); + } + } + } + } + } + } +} diff --git a/styles/less/ui/chat/refresh-message.less b/styles/less/ui/chat/refresh-message.less new file mode 100644 index 00000000..2fce189b --- /dev/null +++ b/styles/less/ui/chat/refresh-message.less @@ -0,0 +1,13 @@ +.daggerheart.chat.refresh-message { + header { + display: flex; + flex-direction: column; + align-items: center; + gap: 2px; + + .subtitle { + font-size: 18; + font-weight: bold; + } + } +} diff --git a/styles/less/ui/chat/sheet.less b/styles/less/ui/chat/sheet.less index da66c12f..3d47a9b5 100644 --- a/styles/less/ui/chat/sheet.less +++ b/styles/less/ui/chat/sheet.less @@ -1,6 +1,72 @@ @import '../../utils/colors.less'; @import '../../utils/fonts.less'; +#interface.theme-light { + .chat-message:not(.duality) .message-content { + color: @dark; + + blockquote { + border-left: 5px solid @dark-blue-40; + } + + a[href] { + color: @dark-blue; + } + + a[href]:hover, + a[href].active { + font-weight: bold; + text-shadow: 0 0 8px @dark-blue; + } + + button { + background: transparent; + border: 1px solid @dark-blue; + color: @dark-blue; + + &:hover { + background: @light-black; + color: @dark-blue; + } + + &:disabled { + background: transparent; + color: @dark-blue; + + &:hover { + background: transparent; + color: @dark-blue; + } + } + + &.reverted { + background: @dark-blue-10; + color: @dark-blue; + border: 1px solid @dark; + &:hover { + background: transparent; + color: @dark-blue; + } + img { + border-radius: 3px; + } + } + } + + .roll-buttons button { + height: 40px; + font-family: @font-body; + font-weight: bold; + } + + .dice-roll .dice-formula, + .dice-roll .dice-total { + background: @dark-blue-40; + color: @dark-blue; + } + } +} + .chat-message.dh-chat-message { .message-content { padding: 0; @@ -17,7 +83,7 @@ .message-content { padding: 0 8px; font-family: @font-body; - color: light-dark(@dark, @beige); + color: @beige; blockquote { border-left: 5px solid light-dark(@dark-blue-40, @golden-40); @@ -34,15 +100,15 @@ } button { - background: light-dark(transparent, @golden); - border: 1px solid light-dark(@dark-blue, @dark-blue); - color: light-dark(@dark-blue, @dark-blue); + background: @golden; + border: 1px solid @dark-blue; + color: @dark-blue; outline: none; box-shadow: none; &:hover { - background: light-dark(@light-black, @dark-blue); - color: light-dark(@dark-blue, @golden); + background: @dark-blue; + color: @golden; } &.glow { @@ -50,24 +116,24 @@ } &:disabled { - background: light-dark(transparent, @golden); - color: light-dark(@dark-blue, @dark-blue); + background: @golden; + color: @dark-blue; opacity: 0.6; cursor: not-allowed; &:hover { - background: light-dark(transparent, @golden); - color: light-dark(@dark-blue, @dark-blue); + background: @golden; + color: @dark-blue; } } &.reverted { - background: light-dark(@dark-blue-10, @golden-10); - color: light-dark(@dark-blue, @golden); - border: 1px solid light-dark(@dark, transparent); + background: @golden-10; + color: @golden; + border: 1px solid transparent; &:hover { - background: light-dark(transparent, @golden); - color: light-dark(@dark-blue, @dark-blue); + background: @golden; + color: @dark-blue; } img { border-radius: 3px; @@ -98,8 +164,8 @@ .dice-roll .dice-total { box-shadow: none; border: none; - background: light-dark(@dark-blue-40, @golden-40); - color: light-dark(@dark-blue, @golden); + background: @golden-10; + color: @golden; font-weight: 600; align-content: center; } diff --git a/styles/less/ui/combat-sidebar/token-actions.less b/styles/less/ui/combat-sidebar/token-actions.less index 6fc84d29..41fb38ab 100644 --- a/styles/less/ui/combat-sidebar/token-actions.less +++ b/styles/less/ui/combat-sidebar/token-actions.less @@ -17,7 +17,7 @@ display: flex; align-items: center; justify-content: center; - font-size: 10px; + font-size: var(--font-size-10); padding: 8px; --button-size: 0; diff --git a/styles/less/ui/countdown/countdown-edit.less b/styles/less/ui/countdown/countdown-edit.less new file mode 100644 index 00000000..9051cccb --- /dev/null +++ b/styles/less/ui/countdown/countdown-edit.less @@ -0,0 +1,142 @@ +@import '../../utils/colors.less'; +@import '../../utils/fonts.less'; + +.theme-light .daggerheart.application.dh-style.countdown-edit { + background-image: url('../assets/parchments/dh-parchment-light.png'); +} + +.daggerheart.application.dh-style.countdown-edit { + color: light-dark(@dark, @beige); + background-image: url('../assets/parchments/dh-parchment-dark.png'); + + .edit-container { + display: flex; + flex-direction: column; + gap: 8px; + + h2 { + text-align: center; + color: light-dark(@dark, @golden); + } + + .header-tools { + display: grid; + grid-template-columns: 2fr 1fr 144px; + gap: 8px; + + .hide-tools { + white-space: nowrap; + flex-wrap: nowrap; + display: flex; + align-items: center; + + input { + position: relative; + top: 2px; + } + } + + .header-main-button { + height: 32px; + flex: 1; + } + + .default-ownership-tools { + display: flex; + align-items: center; + gap: 8px; + + select { + flex: 1; + background: light-dark(@beige, @dark-blue); + } + } + } + + .edit-content { + display: flex; + flex-direction: column; + gap: 8px; + overflow-y: auto; + overflow-x: hidden; + max-height: 500px; + scrollbar-width: thin; + scrollbar-color: light-dark(@dark-blue, @golden) transparent; + + .countdown-edit-container { + display: grid; + grid-template-columns: 48px 1fr 64px; + align-items: center; + gap: 8px; + + img { + width: 52px; + height: 52px; + border-radius: 6px; + } + + .countdown-edit-text { + display: flex; + flex-direction: column; + justify-content: center; + gap: 8px; + + .countdown-edit-subtext { + display: flex; + gap: 10px; + + .countdown-edit-sub-tag { + padding: 3px 5px; + font-size: var(--font-size-12); + font: @font-body; + + background: light-dark(@dark-15, @beige-15); + border: 1px solid light-dark(@dark, @beige); + border-radius: 3px; + } + } + } + + .countdown-edit-tools { + display: flex; + gap: 8px; + + &.same-row { + margin-top: 17.5px; + } + + a { + font-size: 16px; + } + } + } + + .countdown-edit-subrow { + display: flex; + gap: 16px; + margin: 0 72px 0 56px; + } + + .countdown-edit-input { + flex: 1; + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 2px; + + &.tiny { + flex: 0; + input { + min-width: 2.5rem; + } + } + + input, + select { + background: light-dark(@beige, @dark-blue); + color: light-dark(@dark, @beige); + } + } + } + } +} diff --git a/styles/less/ui/countdown/countdown.less b/styles/less/ui/countdown/countdown.less index ecc9f1b8..9fa42ec7 100644 --- a/styles/less/ui/countdown/countdown.less +++ b/styles/less/ui/countdown/countdown.less @@ -1,61 +1,130 @@ @import '../../utils/colors.less'; @import '../../utils/fonts.less'; -.daggerheart.dh-style.countdown { - fieldset { - align-items: center; - margin-top: 5px; - border-radius: 6px; - border-color: light-dark(@dark-blue, @golden); +.theme-dark { + .daggerheart.dh-style.countdowns { + background-image: url(../assets/parchments/dh-parchment-dark.png); - legend { - font-family: @font-body; - font-weight: bold; - color: light-dark(@dark-blue, @golden); - - a { - text-shadow: none; - } + .window-header { + background-image: url(../assets/parchments/dh-parchment-dark.png); + } + } +} + +.daggerheart.dh-style.countdowns { + z-index: var(--z-index-ui) !important; + border: 0; + border-radius: 4px; + box-shadow: none; + width: 300px; + top: 16px; + right: 64px; + transition: + right ease 250ms, + opacity var(--ui-fade-duration) ease, + opacity var(--ui-fade-duration); + + .window-title { + font-family: @font-body; + } + + &.expanded { + right: 364px; + } + + &.icon-only { + width: 180px; + min-width: 180px; + } + + .window-header { + cursor: default; + border-bottom: 0; + } + + .window-content { + padding-top: 4px; + padding-bottom: 16px; + overflow: auto; + max-height: 312px; + + .countdowns-container { + display: flex; + flex-direction: column; + gap: 8px; + + .countdown-container { + display: flex; + justify-content: space-between; + + &.icon-only { + gap: 8px; + + .countdown-main-container { + .countdown-content { + justify-content: center; + + .countdown-tools { + gap: 8px; + } + } + } + } + + .countdown-main-container { + display: flex; + align-items: center; + gap: 16px; + + img { + width: 44px; + height: 44px; + border-radius: 6px; + } + + .countdown-content { + display: flex; + flex-direction: column; + justify-content: space-between; + + .countdown-tools { + display: flex; + align-items: center; + gap: 16px; + + .progress-tag { + border: 1px solid; + border-radius: 4px; + padding: 2px 4px; + background-color: light-dark(@beige, @dark-blue); + } + } + } + } + + .countdown-access-container { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + grid-auto-rows: min-content; + width: 38px; + gap: 4px; + + .countdown-access { + height: 10px; + width: 10px; + border-radius: 50%; + border: 1px solid light-dark(@dark-blue, @beige-80); + content: ''; + } + } + + .countdown-no-access-container { + width: 38px; + display: flex; + align-items: center; + justify-content: center; + } + } } } - - .minimized-view { - display: flex; - gap: 8px; - flex-wrap: wrap; - - .mini-countdown-container { - width: fit-content; - display: flex; - align-items: center; - gap: 8px; - border: 2px solid light-dark(@dark-blue, @golden); - border-radius: 6px; - padding: 0 4px 0 0; - background-image: url('../assets/parchments/dh-parchment-light.png'); - color: light-dark(@beige, @dark); - cursor: pointer; - - &.disabled { - cursor: initial; - } - - img { - width: 30px; - height: 30px; - border-radius: 6px 0 0 6px; - } - - .mini-countdown-name { - white-space: nowrap; - } - - .mini-countdown-value { - } - } - } - - .hidden { - display: none; - } } diff --git a/styles/less/ui/countdown/sheet.less b/styles/less/ui/countdown/sheet.less index 1692773e..0ce7c4af 100644 --- a/styles/less/ui/countdown/sheet.less +++ b/styles/less/ui/countdown/sheet.less @@ -47,7 +47,7 @@ position: absolute; top: 8px; right: 8px; - font-size: 18px; + font-size: var(--font-size-18); } .countdown-container { diff --git a/styles/less/ui/index.less b/styles/less/ui/index.less index 4a93feb6..743d16ae 100644 --- a/styles/less/ui/index.less +++ b/styles/less/ui/index.less @@ -1,7 +1,11 @@ @import './chat/ability-use.less'; @import './chat/action.less'; @import './chat/chat.less'; +@import './chat/damage-summary.less'; @import './chat/downtime.less'; +@import './chat/effect-summary.less'; +@import './chat/group-roll.less'; +@import './chat/refresh-message.less'; @import './chat/sheet.less'; @import './combat-sidebar/combat-sidebar.less'; @@ -12,6 +16,7 @@ @import './item-browser/item-browser.less'; @import './countdown/countdown.less'; +@import './countdown/countdown-edit.less'; @import './countdown/sheet.less'; @import './ownership-selection/ownership-selection.less'; @@ -19,5 +24,10 @@ @import './resources/resources.less'; @import './settings/settings.less'; - @import './settings/homebrew-settings/domains.less'; +@import './settings/homebrew-settings/types.less'; + +@import './sidebar/tabs.less'; +@import './sidebar/daggerheartMenu.less'; + +@import './scene-config/scene-config.less'; diff --git a/styles/less/ui/item-browser/item-browser.less b/styles/less/ui/item-browser/item-browser.less index 7d708e1f..23844128 100644 --- a/styles/less/ui/item-browser/item-browser.less +++ b/styles/less/ui/item-browser/item-browser.less @@ -71,6 +71,7 @@ } .compendium-results { + position: relative; padding: 16px; } @@ -90,7 +91,6 @@ gap: 10px; .item-path { - font-family: @font-body; color: light-dark(@dark, @beige); &.path-link { @@ -102,10 +102,14 @@ .folder-list, .item-list-header, .item-header > div { - gap: 10px; cursor: pointer; } + .item-list-header, + .item-header > div { + gap: 10px; + } + .item-filter { display: flex; align-items: center; @@ -136,7 +140,6 @@ input { border-radius: 50px; - font-family: @font-body; background: light-dark(@dark-blue-10, @golden-10); border: none; outline: 2px solid transparent; @@ -159,7 +162,7 @@ height: 32px; position: absolute; right: 20px; - font-size: 16px; + font-size: var(--font-size-16); z-index: 1; color: light-dark(@dark-blue-50, @beige-50); } @@ -175,7 +178,6 @@ justify-content: space-between; padding: 10px; border: 1px solid transparent; - font-family: @font-body; transition: all 0.1s ease; &.expanded + .subfolder-list { @@ -227,12 +229,12 @@ grid-template-columns: 40px 400px repeat(auto-fit, minmax(100px, 1fr)); align-items: center; text-transform: capitalize; - font-family: @font-body; } } .item-list-header, - .item-list { + .item-list, + .compendium-sidebar > .folder-list { overflow-y: auto; scrollbar-gutter: stable; scrollbar-width: thin; @@ -264,7 +266,6 @@ border: 1px solid light-dark(@dark-blue, @golden); border-radius: 3px; min-height: 30px; - font-family: @font-body; font-weight: bold; > * { @@ -278,11 +279,11 @@ } &[data-sort-type='ASC']:after { - content: '\f0d7'; + content: '\f884'; } &[data-sort-type='DESC']:after { - content: '\f0d8'; + content: '\f885'; } } } @@ -291,6 +292,7 @@ display: flex; flex-direction: column; gap: 5px; + flex: 1; .item-container { &:hover { @@ -303,21 +305,20 @@ display: flex; flex-direction: column; gap: 5px; - font-family: @font-body; h1 { - font-size: 32px; + font-size: var(--font-size-32); } h2 { - font-size: 28px; + font-size: var(--font-size-28); font-weight: 600; } h3 { - font-size: 20px; + font-size: var(--font-size-20); font-weight: 600; } h4 { - font-size: 16px; + font-size: var(--font-size-16); color: @beige; font-weight: 600; } @@ -328,7 +329,6 @@ padding: 0 0 0 1.25rem; li { - font-family: @font-body; margin-bottom: 0.25rem; } } @@ -363,7 +363,6 @@ .form-group { label { flex: 1; - font-family: @font-body; } .form-fields { width: 100%; @@ -393,12 +392,12 @@ margin: 0; .title { - font-family: @font-subtitle; - margin: 0; text-align: center; + font-weight: bold; } + .hint { - font-family: @font-body; + flex: unset; } } @@ -410,6 +409,7 @@ &.lite, &.no-folder { + .compendium-sidebar, .menu-path { display: none; } diff --git a/styles/less/ui/ownership-selection/ownership-selection.less b/styles/less/ui/ownership-selection/ownership-selection.less index 56fddd4f..76ae0930 100644 --- a/styles/less/ui/ownership-selection/ownership-selection.less +++ b/styles/less/ui/ownership-selection/ownership-selection.less @@ -6,9 +6,15 @@ flex-direction: column; gap: 8px; + .ownership-list { + display: flex; + flex-direction: column; + gap: 10px; + margin-top: 10px; + } + .ownership-container { display: flex; - border: 2px solid light-dark(@dark-blue, @golden); border-radius: 6px; padding: 0 4px 0 0; align-items: center; @@ -17,12 +23,24 @@ img { height: 40px; width: 40px; - border-radius: 6px 0 0 6px; + border-radius: 50%; + } + + span { + flex: 3; } select { + flex: 1; margin: 4px 0; } } + + footer { + margin-top: 10px; + button { + height: 32px; + } + } } } diff --git a/styles/less/ui/scene-config/scene-config.less b/styles/less/ui/scene-config/scene-config.less new file mode 100644 index 00000000..fb36dd33 --- /dev/null +++ b/styles/less/ui/scene-config/scene-config.less @@ -0,0 +1,40 @@ +.theme-light .application.sheet.scene-config { + .sheet-tabs.tabs a[data-tab='dh'] { + &.active img, + &:hover img { + filter: @grey-filter drop-shadow(0 0 4px var(--color-shadow-primary)); + } + + img { + filter: @grey-filter; + } + } +} + +.application.sheet.scene-config { + .sheet-tabs.tabs { + a[data-tab='dh'] { + display: flex; + align-items: center; + gap: 4px; + + &.active, + &:hover { + img { + filter: @beige-filter drop-shadow(0 0 4px var(--color-shadow-primary)); + } + } + + img { + width: 18px; + position: relative; + top: -3px; + filter: @beige-filter; + } + } + } + + .helper-text { + font-style: italic; + } +} diff --git a/styles/less/ui/settings/homebrew-settings/domains.less b/styles/less/ui/settings/homebrew-settings/domains.less index 893f58be..da258fcd 100644 --- a/styles/less/ui/settings/homebrew-settings/domains.less +++ b/styles/less/ui/settings/homebrew-settings/domains.less @@ -33,7 +33,6 @@ h2 { display: flex; align-items: center; - font-family: @font-subtitle; position: relative; width: auto; white-space: nowrap; @@ -45,7 +44,7 @@ border-radius: 50%; width: 24px; height: 24px; - font-size: 12px; + font-size: var(--font-size-12); } } } @@ -123,7 +122,7 @@ button { border-radius: 50%; - font-size: 12px; + font-size: var(--font-size-12); height: 24px; width: 24px; margin-right: 4px; diff --git a/styles/less/ui/settings/homebrew-settings/types.less b/styles/less/ui/settings/homebrew-settings/types.less new file mode 100644 index 00000000..d09431f7 --- /dev/null +++ b/styles/less/ui/settings/homebrew-settings/types.less @@ -0,0 +1,52 @@ +.theme-light .daggerheart.dh-style.setting.homebrew-settings .types.tab { + .adversary-types-container .adversary-type-container { + background-image: url('../assets/parchments/dh-parchment-light.png'); + } +} + +.daggerheart.dh-style.setting.homebrew-settings { + .types.tab { + .adversary-types-container { + width: 100%; + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 4px; + + .adversary-type-container { + height: 2em; + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + border: 1px solid; + border-radius: 6px; + padding: 0 8px; + border: 1px solid light-dark(@dark-blue, @golden); + color: light-dark(@dark, @beige); + background-image: url('../assets/parchments/dh-parchment-dark.png'); + cursor: pointer; + opacity: 0.6; + + &:hover { + opacity: 1; + } + + &.active { + opacity: 1; + background: var(--color-warm-2); + } + } + } + + .type-edit-container { + width: 100%; + display: flex; + flex-direction: column; + gap: 8px; + + textarea { + width: 100%; + } + } + } +} diff --git a/styles/less/ui/settings/settings.less b/styles/less/ui/settings/settings.less index 8062ff73..788db394 100644 --- a/styles/less/ui/settings/settings.less +++ b/styles/less/ui/settings/settings.less @@ -4,7 +4,7 @@ fieldset { display: flex; flex-direction: column; - gap: 4px; + gap: 0.5rem; &.two-columns { display: grid; @@ -16,6 +16,12 @@ } } + &.six-columns { + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; + gap: 2px; + } + &.start-align { align-self: flex-start; } @@ -26,6 +32,7 @@ display: flex; align-items: center; gap: 8px; + flex-wrap: nowrap; } .settings-items { @@ -53,7 +60,7 @@ } i { - font-size: 18px; + font-size: var(--font-size-18); } } } @@ -80,7 +87,7 @@ width: 80%; .item-name input[type='text'] { - font-size: 32px; + font-size: var(--font-size-32); height: 42px; text-align: center; width: 90%; @@ -103,28 +110,9 @@ gap: 4px; } - .trait-array-container { - display: flex; - justify-content: space-evenly; - gap: 8px; - margin-bottom: 16px; - - .trait-array-item { - position: relative; - display: flex; - justify-content: center; - - label { - position: absolute; - top: -7px; - font-size: 12px; - font-variant: petite-caps; - z-index: 2; - } - - input { - text-align: center; - } + .trait-item { + input { + text-align: center; } } diff --git a/styles/less/ui/sidebar/daggerheartMenu.less b/styles/less/ui/sidebar/daggerheartMenu.less new file mode 100644 index 00000000..80eda9a1 --- /dev/null +++ b/styles/less/ui/sidebar/daggerheartMenu.less @@ -0,0 +1,50 @@ +.tab.sidebar-tab.daggerheartMenu-sidebar { + padding: 4px; + + div[data-application-part] { + display: flex; + flex-direction: column; + gap: 8px; + } + + h2 { + margin-top: 8px; + text-align: center; + font-weight: bold; + } + + .menu-refresh-container { + display: flex; + flex-direction: column; + gap: 8px; + + .menu-refresh-inner-container { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 8px; + + .experience-chip { + display: flex; + align-items: center; + border-radius: 5px; + width: fit-content; + gap: 5px; + cursor: pointer; + padding: 5px; + background: light-dark(@dark-blue-10, @golden-10); + color: light-dark(@dark-blue, @golden); + + .label { + font-style: normal; + font-weight: 400; + font-size: 14px; + line-height: 17px; + } + + &.selected { + background: light-dark(@dark-blue-40, @golden-40); + } + } + } + } +} diff --git a/styles/less/ui/sidebar/tabs.less b/styles/less/ui/sidebar/tabs.less new file mode 100644 index 00000000..ec4bbe9f --- /dev/null +++ b/styles/less/ui/sidebar/tabs.less @@ -0,0 +1,15 @@ +.theme-light #interface #ui-right #sidebar { + menu li button img { + filter: @grey-filter; + } +} + +#interface #ui-right #sidebar { + menu li button { + img { + width: 22px; + max-width: unset; + filter: @beige-filter; + } + } +} diff --git a/styles/less/utils/colors.less b/styles/less/utils/colors.less index 64edfc6f..6fcf6db2 100755 --- a/styles/less/utils/colors.less +++ b/styles/less/utils/colors.less @@ -4,6 +4,7 @@ @golden: #f3c267; @golden-10: #f3c26710; @golden-40: #f3c26740; +@golden-90: #f3c26790; @golden-bg: #f3c2671a; @golden-secondary: #eaaf42; @golden-filter: brightness(0) saturate(100%) invert(89%) sepia(13%) saturate(2008%) hue-rotate(332deg) brightness(99%) @@ -24,6 +25,7 @@ @medium-red-40: #d0474740; @dark-golden: #2b1d03; +@dark-golden-40: #2b1d0340; @dark-golden-80: #2b1d0380; @red: #e54e4e; @@ -47,13 +49,17 @@ @dark-blue-40: #18162e40; @dark-blue-50: #18162e50; @dark-blue-60: #18162e60; +@dark-blue-90: #18162e90; @semi-transparent-dark-blue: rgba(24, 22, 46, 0.33); @dark: #222; @dark-15: #22222215; @dark-40: #22222240; +@dark-80: #22222280; @dark-filter: brightness(0) saturate(100%); +@grey-filter: brightness(15%) saturate(20%); + @deep-black: #0e0d15; @beige: #efe6d8; diff --git a/styles/less/utils/fonts.less b/styles/less/utils/fonts.less index 2e62a0bf..61c9792c 100755 --- a/styles/less/utils/fonts.less +++ b/styles/less/utils/fonts.less @@ -1,50 +1,14 @@ @import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;700&family=Cinzel+Decorative:wght@700&family=Montserrat:wght@400;600&display=swap'); +@import './mixin.less'; @font-title: 'Cinzel Decorative', serif; @font-subtitle: 'Cinzel', serif; @font-body: 'Montserrat', sans-serif; -.application.sheet.daggerheart.dh-style { - h1 { - font-family: @font-title; - margin: 0; - border: none; - font-weight: normal; - } - - h2, - h3 { - font-family: @font-subtitle; - margin: 0; - border: none; - font-weight: normal; - } - - h4 { - font-family: @font-body; - font-size: 14px; - border: none; - font-weight: 700; - margin: 0; - text-shadow: none; - color: #f3c267; - font-weight: normal; - } - - h5 { - font-size: 14px; - color: #f3c267; - margin: 0; - font-weight: normal; - } - - p, - span { - font-family: @font-body; - } - - small { - font-family: @font-body; - opacity: 0.8; - } +.dh-style { + .dh-typography(); +} + +.dh-style fieldset { + .dh-typography(); } diff --git a/styles/less/utils/mixin.less b/styles/less/utils/mixin.less index 0e52fa82..49e97a1f 100644 --- a/styles/less/utils/mixin.less +++ b/styles/less/utils/mixin.less @@ -30,7 +30,7 @@ align-items: center; h3 { - font-size: 20px; + font-size: var(--font-size-20); } } @@ -44,3 +44,73 @@ gap: @gap; align-items: center; } + +/** + * Apply default typography styles. + */ +.dh-typography() { + h1 { + font-family: @font-title; + margin: 0; + border: none; + font-weight: normal; + } + + h1 input[type='text'] { + font-family: @font-title; + } + + h2, + h3 { + font-family: @font-subtitle; + margin: 0; + border: none; + font-weight: normal; + } + + h4 { + font-family: @font-body; + font-size: var(--font-size-14); + border: none; + font-weight: 700; + margin: 0; + text-shadow: none; + font-weight: normal; + } + + h5 { + font-family: @font-body; + font-size: var(--font-size-14); + margin: 0; + font-weight: normal; + } + + p, + span, + textarea, + label, + select, + multi-select .tags .tag, + table, + fieldset legend, + input[type='text'], + input[type='number'], + input[type='search'], + .tagify__dropdown, + li { + font-family: @font-body; + } + + button span { + font-weight: bold; + } + + small { + font-family: @font-body; + opacity: 0.8; + } + + nav a { + font-family: @font-body; + } +} diff --git a/styles/less/ux/autocomplete/autocomplete.less b/styles/less/ux/autocomplete/autocomplete.less index 868b4f43..08854a53 100644 --- a/styles/less/ux/autocomplete/autocomplete.less +++ b/styles/less/ux/autocomplete/autocomplete.less @@ -1,3 +1,6 @@ +@import '../../utils/colors.less'; +@import '../../utils/fonts.less'; + .theme-light .autocomplete { background-image: url('../assets/parchments/dh-parchment-light.png'); color: black; @@ -22,16 +25,20 @@ .group { font-weight: bold; - font-size: 14px; + font-size: var(--font-size-14); padding-left: 8px; } li[role='option'] { - font-size: 14px; - padding-left: 10px; + display: flex; + align-items: center; + gap: 10px; + font-size: var(--font-size-14); + padding: 0 10px; cursor: pointer; - &:hover { + &:hover, + &.selected { background-color: light-dark(@dark, @beige); color: light-dark(@beige, var(--color-dark-3)); } @@ -39,5 +46,16 @@ > div { white-space: nowrap; } + + img { + height: 40px; + width: 40px; + border-radius: 50%; + margin-bottom: 10px; + + &:first-child { + margin-top: 10px; + } + } } } diff --git a/styles/less/ux/tooltip/tooltip.less b/styles/less/ux/tooltip/tooltip.less index 43f47da5..1d7079ee 100644 --- a/styles/less/ux/tooltip/tooltip.less +++ b/styles/less/ux/tooltip/tooltip.less @@ -85,7 +85,7 @@ gap: 8px; .tooltip-chip { - font-size: 18px; + font-size: var(--font-size-18); padding: 2px 4px; border: 1px solid light-dark(@dark-blue, @golden); border-radius: 6px; diff --git a/system.json b/system.json index 8e5a7610..a16b3562 100644 --- a/system.json +++ b/system.json @@ -2,10 +2,10 @@ "id": "daggerheart", "title": "Daggerheart", "description": "An unofficial implementation of the Daggerheart system", - "version": "1.1.2", + "version": "1.2.0", "compatibility": { "minimum": "13", - "verified": "13.347", + "verified": "13.350", "maximum": "13" }, "authors": [ @@ -220,6 +220,9 @@ }, "environment": { "htmlFields": ["notes", "description"] + }, + "party": { + "htmlFields": ["notes"] } }, "Item": { @@ -266,7 +269,10 @@ "dualityRoll": {}, "adversaryRoll": {}, "damageRoll": {}, - "abilityUse": {} + "abilityUse": {}, + "tagTeam": {}, + "groupRoll": {}, + "systemMessage": {} } }, "background": "systems/daggerheart/assets/logos/FoundrybornBackgroundLogo.png", diff --git a/templates/actionTypes/beastform.hbs b/templates/actionTypes/beastform.hbs index b2710208..b9bea445 100644 --- a/templates/actionTypes/beastform.hbs +++ b/templates/actionTypes/beastform.hbs @@ -1,9 +1,4 @@ -
- -
{{localize "DAGGERHEART.ACTIONS.Config.beastform.label"}}
-
- -
- {{formGroup fields.tierAccess.fields.exact value=beastform.tierAccess.exact labelAttr="label" valueAttr="key" localize=true blank=""}} -
+
+ {{localize "DAGGERHEART.ACTIONS.Config.beastform.label"}} + {{formGroup fields.tierAccess.fields.exact value=source.tierAccess.exact name="beastform.tierAccess.exact" labelAttr="label" valueAttr="key" localize=true blank=""}}
\ No newline at end of file diff --git a/templates/actionTypes/cost.hbs b/templates/actionTypes/cost.hbs index a1b7de48..7a9f33d9 100644 --- a/templates/actionTypes/cost.hbs +++ b/templates/actionTypes/cost.hbs @@ -1,6 +1,6 @@
- Cost + {{localize "DAGGERHEART.GENERAL.Cost.single"}} {{#each source as |cost index|}} @@ -8,10 +8,10 @@ {{formField ../fields.consumeOnSuccess value=cost.consumeOnSuccess name=(concat "cost." index ".consumeOnSuccess") classes="checkbox" rootId=partId localize=true}} {{/if}}
- {{formField ../fields.scalable label="Scalable" value=cost.scalable name=(concat "cost." index ".scalable") classes="checkbox"}} - {{formField ../fields.key choices=(@root.disableOption index @root.costOptions ../source) label="Resource" value=cost.key name=(concat "cost." index ".key") localize=true blank=false}} - {{formField ../fields.value label="Amount" value=cost.value name=(concat "cost." index ".value")}} - {{formField ../fields.step label="Step" value=cost.step name=(concat "cost." index ".step") disabled=(not cost.scalable)}} + {{formField ../fields.scalable label="DAGGERHEART.GENERAL.scalable" value=cost.scalable name=(concat "cost." index ".scalable") classes="checkbox" localize=true}} + {{formField ../fields.key choices=(@root.disableOption index @root.costOptions ../source) label="DAGGERHEART.GENERAL.resource" value=cost.key name=(concat "cost." index ".key") localize=true blank=false}} + {{formField ../fields.value label="DAGGERHEART.GENERAL.amount" value=cost.value name=(concat "cost." index ".value") localize=true}} + {{formField ../fields.step label="DAGGERHEART.GENERAL.step" value=cost.step name=(concat "cost." index ".step") disabled=(not cost.scalable) localize=true}}
{{/each}} diff --git a/templates/actionTypes/damage.hbs b/templates/actionTypes/damage.hbs index a3abdf19..96bb361c 100644 --- a/templates/actionTypes/damage.hbs +++ b/templates/actionTypes/damage.hbs @@ -8,9 +8,14 @@ {{/if}} {{#unless (eq path 'system.attack.')}}{{/unless}} - {{#if @root.hasBaseDamage}} - {{formField @root.fields.damage.fields.includeBase value=@root.source.damage.includeBase name="damage.includeBase" classes="checkbox" localize=true }} - {{/if}} +
+ {{#if @root.hasBaseDamage}} + {{formField @root.fields.damage.fields.includeBase value=@root.source.damage.includeBase name="damage.includeBase" classes="checkbox" localize=true }} + {{/if}} + {{#unless (eq @root.source.type 'healing')}} + {{formField directField value=source.direct name=(concat path "damage.direct") localize=true classes="checkbox"}} + {{/unless}} +
{{#each source.parts as |dmg index|}} {{#if (and @root.hasBaseDamage @root.source.damage.includeBase)}} {{setVar 'realIndex' (add index -1)}} @@ -51,7 +56,7 @@
{{formField ../fields.valueAlt.fields.flatMultiplier value=dmg.valueAlt.flatMultiplier name=(concat ../path "damage.parts." realIndex ".valueAlt.flatMultiplier") label="DAGGERHEART.ACTIONS.Settings.multiplier" classes="inline-child" localize=true }} - {{formField ../fields.valueAlt.fields.dice value=dmg.valueAlt.dice name=(concat ../path "damage.parts." realIndex ".valueAlt.dice") classes="inline-child"}} + {{formField ../fields.valueAlt.fields.dice value=dmg.valueAlt.dice name=(concat ../path "damage.parts." realIndex ".valueAlt.dice") classes="inline-child" localize=true}} {{formField ../fields.valueAlt.fields.bonus value=dmg.valueAlt.bonus name=(concat ../path "damage.parts." realIndex ".valueAlt.bonus") localize=true classes="inline-child"}}
@@ -65,7 +70,7 @@ {{#*inline "formula"}} {{#unless dmg.base}} - {{formField fields.custom.fields.enabled value=source.custom.enabled name=(concat path "damage.parts." realIndex "." target ".custom.enabled") classes="checkbox"}} + {{formField fields.custom.fields.enabled value=source.custom.enabled name=(concat path "damage.parts." realIndex "." target ".custom.enabled") classes="checkbox" localize=true}} {{/unless}} {{#if source.custom.enabled}} {{formField fields.custom.fields.formula value=source.custom.formula name=(concat path "damage.parts." realIndex "." target ".custom.formula") localize=true}} @@ -74,8 +79,8 @@ {{#unless @root.isNPC}} {{formField fields.multiplier value=source.multiplier name=(concat path "damage.parts." realIndex "." target ".multiplier") localize=true}} {{/unless}} - {{#if (eq source.multiplier 'flat')}}{{formField fields.flatMultiplier value=source.flatMultiplier name=(concat path "damage.parts." realIndex "." target ".flatMultiplier") }}{{/if}} - {{formField fields.dice value=source.dice name=(concat path "damage.parts." realIndex "." target ".dice")}} + {{#if (eq source.multiplier 'flat')}}{{formField fields.flatMultiplier value=source.flatMultiplier name=(concat path "damage.parts." realIndex "." target ".flatMultiplier") localize=true }}{{/if}} + {{formField fields.dice value=source.dice name=(concat path "damage.parts." realIndex "." target ".dice") localize=true}} {{formField fields.bonus value=source.bonus name=(concat path "damage.parts." realIndex "." target ".bonus") localize=true}} {{/if}} diff --git a/templates/actionTypes/range-target.hbs b/templates/actionTypes/range-target.hbs index 3776f0c1..143acdf8 100644 --- a/templates/actionTypes/range-target.hbs +++ b/templates/actionTypes/range-target.hbs @@ -1,12 +1,12 @@
{{localize "DAGGERHEART.GENERAL.range"}}{{#if fields.target}} & {{localize "DAGGERHEART.GENERAL.Target.single"}}{{/if}} - {{formField fields.range value=source.range label="Range" name=(concat path "range") localize=true}} + {{formField fields.range value=source.range label="DAGGERHEART.GENERAL.range" name=(concat path "range") localize=true}} {{#if fields.target}}
{{#if (and source.target.type (not (eq source.target.type 'self')))}} - {{ formField fields.target.amount value=source.target.amount label="Amount" name=(concat path "target.amount") }} + {{ formField fields.target.amount value=source.target.amount label="DAGGERHEART.GENERAL.amount" name=(concat path "target.amount") localize=true}} {{/if}} - {{ formField fields.target.type value=source.target.type label="Target" name=(concat path "target.type") localize=true }} + {{ formField fields.target.type value=source.target.type label="DAGGERHEART.GENERAL.Target.single" name=(concat path "target.type") localize=true }}
{{/if}}
\ No newline at end of file diff --git a/templates/actionTypes/save.hbs b/templates/actionTypes/save.hbs index 90bc0483..85536c87 100644 --- a/templates/actionTypes/save.hbs +++ b/templates/actionTypes/save.hbs @@ -1,6 +1,9 @@ -
- {{localize "DAGGERHEART.GENERAL.save"}} - {{formField fields.trait label="Trait" name="save.trait" value=source.trait localize=true}} - {{formField fields.difficulty label="Difficulty" name="save.difficulty" value=source.difficulty disabled=(not source.trait) placeholder=@root.baseSaveDifficulty}} - {{formField fields.damageMod label="Damage on Save" name="save.damageMod" value=source.damageMod localize=true disabled=(not source.trait)}} +
+ {{localize "DAGGERHEART.GENERAL.Roll.reaction"}} +

{{localize "DAGGERHEART.ACTIONS.Settings.saveHint"}}

+
+ {{formField fields.trait label="Trait" name="save.trait" value=source.trait localize=true}} + {{formField fields.difficulty label="Difficulty" name="save.difficulty" value=source.difficulty disabled=(not source.trait) placeholder=@root.baseSaveDifficulty}} + {{formField fields.damageMod label="Damage on Save" name="save.damageMod" value=source.damageMod localize=true disabled=(not source.trait)}} +
\ No newline at end of file diff --git a/templates/actionTypes/uses.hbs b/templates/actionTypes/uses.hbs index 2c1c3cd4..7304f810 100644 --- a/templates/actionTypes/uses.hbs +++ b/templates/actionTypes/uses.hbs @@ -4,8 +4,8 @@ {{formField fields.consumeOnSuccess value=source.consumeOnSuccess name="uses.consumeOnSuccess" classes="checkbox" rootId=partId localize=true}} {{/if}}
- {{formField fields.value label="Spent" value=source.value name="uses.value" rootId=partId}} - {{formField fields.max label="Max" value=source.max name="uses.max" rootId=partId}} + {{formField fields.value label="DAGGERHEART.GENERAL.spent" value=source.value name="uses.value" rootId=partId localize=true}} + {{formField fields.max label="DAGGERHEART.GENERAL.max" value=source.max name="uses.max" rootId=partId localize=true}}
- {{formField fields.recovery label="Recovery" value=source.recovery name="uses.recovery" rootId=partId localize=true}} + {{formField fields.recovery label="DAGGERHEART.GENERAL.recovery" value=source.recovery name="uses.recovery" rootId=partId localize=true}}
\ No newline at end of file diff --git a/templates/characterCreation/tabs/experience.hbs b/templates/characterCreation/tabs/experience.hbs index 77dca6dc..3eb92834 100644 --- a/templates/characterCreation/tabs/experience.hbs +++ b/templates/characterCreation/tabs/experience.hbs @@ -11,7 +11,7 @@
-
{{numberFormat this.value sign=true}}
+ {{numberFormat this.value sign=true}}
diff --git a/templates/characterCreation/tabs/traits.hbs b/templates/characterCreation/tabs/traits.hbs index 604e3721..bf32dd16 100644 --- a/templates/characterCreation/tabs/traits.hbs +++ b/templates/characterCreation/tabs/traits.hbs @@ -19,7 +19,7 @@
{{#each traits.values}}
-
{{this.name}}
+ {{this.name}} diff --git a/templates/components/card-preview.hbs b/templates/components/card-preview.hbs index 67388b6d..0df24182 100644 --- a/templates/components/card-preview.hbs +++ b/templates/components/card-preview.hbs @@ -5,19 +5,19 @@ {{#if this.img}}
-
+ {{#if altPartialBlock}} {{> @partial-block }} {{else}} {{this.name}} {{/if}} -
+
{{else}}
-
{{> @partial-block }}
+ {{> @partial-block }}
{{/if}} diff --git a/templates/dialogs/attribution.hbs b/templates/dialogs/attribution.hbs new file mode 100644 index 00000000..20f00fb8 --- /dev/null +++ b/templates/dialogs/attribution.hbs @@ -0,0 +1,26 @@ +
+

{{item.name}}

+ +
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+ +
+
\ No newline at end of file diff --git a/templates/dialogs/beastform/footer.hbs b/templates/dialogs/beastform/footer.hbs index 8ad53964..224a0cb5 100644 --- a/templates/dialogs/beastform/footer.hbs +++ b/templates/dialogs/beastform/footer.hbs @@ -1,3 +1,5 @@
- +
\ No newline at end of file diff --git a/templates/dialogs/deathMove.hbs b/templates/dialogs/deathMove.hbs index d2307900..341659df 100644 --- a/templates/dialogs/deathMove.hbs +++ b/templates/dialogs/deathMove.hbs @@ -6,17 +6,23 @@
    {{#each this.options as |option key|}}
  • -
  • {{/each}}
- - + +
\ No newline at end of file diff --git a/templates/dialogs/dice-roll/header.hbs b/templates/dialogs/dice-roll/header.hbs index f61a86b3..b455462c 100644 --- a/templates/dialogs/dice-roll/header.hbs +++ b/templates/dialogs/dice-roll/header.hbs @@ -1,14 +1,22 @@
-

- {{#if reactionOverride}} - {{localize "DAGGERHEART.CONFIG.ActionType.reaction"}} - {{else}} - {{ifThen rollConfig.headerTitle rollConfig.headerTitle rollConfig.title}} - {{/if}} - {{#if showReaction}} - - {{/if}} -

+
+

+ {{#if reactionOverride}} + {{localize "DAGGERHEART.CONFIG.ActionType.reaction"}} + {{else}} + {{ifThen rollConfig.headerTitle rollConfig.headerTitle rollConfig.title}} + {{/if}} + {{#if showReaction}} + + {{/if}} +

+
+ {{#if (and @root.hasRoll @root.activeTagTeamRoll)}} +
+ + {{localize "Tag Team Roll"}} +
+ {{/if}}
\ No newline at end of file diff --git a/templates/dialogs/dice-roll/rollSelection.hbs b/templates/dialogs/dice-roll/rollSelection.hbs index 3aac0321..c13dc289 100644 --- a/templates/dialogs/dice-roll/rollSelection.hbs +++ b/templates/dialogs/dice-roll/rollSelection.hbs @@ -74,17 +74,9 @@ {{localize "DAGGERHEART.GENERAL.experience.plural"}} {{#each experiences}} {{#if name}} -
- {{#if (includes ../selectedExperiences id)}} - - {{else}} - - {{/if}} - {{#if (eq @root.rollType 'D20Roll')}} - {{name}} +{{modifier}} - {{else}} - {{name}} +{{value}} - {{/if}} +
+ + {{name}} +{{value}}
{{/if}} {{/each}} @@ -126,6 +118,12 @@ {{selectOptions diceOptions selected=@root.roll.dAdvantage.denomination}}
+ {{#if abilities}} + {{localize "DAGGERHEART.GENERAL.traitModifier"}} + + {{/if}} {{/unless}} {{#if @root.rallyDie.length}} {{localize "DAGGERHEART.CLASS.Feature.rallyDice"}} @@ -148,7 +146,7 @@ -
diff --git a/templates/dialogs/downtime/activities.hbs b/templates/dialogs/downtime/activities.hbs index 4eca8b50..9a3502e8 100644 --- a/templates/dialogs/downtime/activities.hbs +++ b/templates/dialogs/downtime/activities.hbs @@ -8,7 +8,7 @@
-
{{move.name}}
+ {{move.name}}
{{#if move.selected}}
{{move.selected}}
{{/if}} diff --git a/templates/dialogs/downtime/downtime.hbs b/templates/dialogs/downtime/downtime.hbs index 13c1face..9744ffea 100644 --- a/templates/dialogs/downtime/downtime.hbs +++ b/templates/dialogs/downtime/downtime.hbs @@ -14,14 +14,14 @@
{{#each this.refreshables.actionItems as | item |}}
-
{{item.title}}
-
{{item.name}}
+ {{item.title}} + {{item.name}}
{{/each}} {{#each this.refreshables.resourceItems as | item |}}
-
{{item.title}}
-
{{item.name}}
+ {{item.title}} + {{item.name}}
{{/each}}
diff --git a/templates/dialogs/group-roll/group-roll.hbs b/templates/dialogs/group-roll/group-roll.hbs new file mode 100644 index 00000000..ab655c1f --- /dev/null +++ b/templates/dialogs/group-roll/group-roll.hbs @@ -0,0 +1,84 @@ +
+
+

{{localize "DAGGERHEART.UI.Chat.groupRoll.title"}}

+
+ +
+ {{localize "DAGGERHEART.UI.Chat.groupRoll.leader"}} + {{#unless leader.actor}} + +
+ {{localize "DAGGERHEART.UI.Chat.groupRoll.selectLeader"}} +
+ {{else}} +
+ {{leader.actor.name}} +
+ {{leader.actor.name}} +
+
+ + +
+ {{!-- Not used yet --}} + {{!--
+ + +
--}} +
+
+
+ + + +
+
+ {{/unless}} +
+ +
+ {{localize "DAGGERHEART.UI.Chat.groupRoll.partyTeam"}} + + + + {{#if (gt this.members.length 0)}} + {{#each members as |member index|}} +
+ {{member.actor.name}} +
+ {{member.actor.name}} +
+
+ + +
+ {{!-- Not used yet --}} + {{!--
+ + +
--}} +
+
+
+ + + +
+
+ {{/each}} + {{/if}} + {{#unless allSelected}} +
+ {{localize "DAGGERHEART.UI.Chat.groupRoll.selectMember"}} +
+ {{/unless}} +
+ +
\ No newline at end of file diff --git a/templates/dialogs/image-select/footer.hbs b/templates/dialogs/image-select/footer.hbs new file mode 100644 index 00000000..cd7d3d1a --- /dev/null +++ b/templates/dialogs/image-select/footer.hbs @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/templates/dialogs/image-select/main.hbs b/templates/dialogs/image-select/main.hbs new file mode 100644 index 00000000..099d88c3 --- /dev/null +++ b/templates/dialogs/image-select/main.hbs @@ -0,0 +1,5 @@ +
+ {{#each images as |image|}} + + {{/each}} +
\ No newline at end of file diff --git a/templates/dialogs/ownershipSelection.hbs b/templates/dialogs/ownershipSelection.hbs index 43711c07..b16e5d75 100644 --- a/templates/dialogs/ownershipSelection.hbs +++ b/templates/dialogs/ownershipSelection.hbs @@ -2,20 +2,22 @@
- + {{selectOptions ownershipDefaultOptions selected=defaultOwnership labelAttr="label" valueAttr="value" localize=true }}
- {{#each ownership.players as |player id|}} -
- -
{{player.name}}
- -
- {{/each}} +
    + {{#each ownership as |player id|}} +
  • + + {{player.name}} + +
  • + {{/each}} +
diff --git a/templates/dialogs/tagTeamDialog.hbs b/templates/dialogs/tagTeamDialog.hbs new file mode 100644 index 00000000..3c96a573 --- /dev/null +++ b/templates/dialogs/tagTeamDialog.hbs @@ -0,0 +1,110 @@ +
+
+
+ {{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.partyTeam"}} + +
+ + +
+ +
+ +
+ {{#each members as |member|}} +
+
+
+ +
+
{{member.character.name}}
+
+ {{#if member.character.system.class.value}} +
{{member.character.system.class.value.name}}
+ {{/if}} + {{#if member.system.multiclass.value}} +
{{member.character.system.multiclass.value.name}}
+ {{/if}} +
+
+
+ +
+ {{#if member.roll}} +
+
+

+ + {{member.roll.system.title}} +

+
+
+ +
+ {{member.roll.system.roll.total}} + {{localize "DAGGERHEART.GENERAL.withThing" thing=member.roll.system.roll.result.label}} +
+ +
+ {{#if member.roll.system.hasDamage}} +

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

+
+ {{#if member.damageValues}} + {{#each member.damageValues as |damage|}} +
+
{{damage.name}}
+
{{damage.total}}
+
+ {{/each}} + {{else}} + {{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.damageNotRolled"}} + {{/if}} +
+ {{/if}} +
+ {{else}} +
+ {{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.linkMessageHint"}} +
+ {{/if}} +
+ {{/each}} +
+
+ +
+

+ {{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.initiatingCharacter"}} + +

+

+ {{localize "DAGGERHEART.GENERAL.Cost.single"}} + +

+
+ {{#if showResult}} + {{#if selectedData.result}} +
+

{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.title"}}: {{selectedData.result}}

+ {{#if usesDamage}} +
+ + {{#each selectedData.damageValues as |damage|}} +
+ {{damage.name}} + {{damage.total}} +
+ {{/each}} +
+ {{/if}} +
+ {{/if}} + {{/if}} + + +
+
\ No newline at end of file diff --git a/templates/hud/tokenHUD.hbs b/templates/hud/tokenHUD.hbs index 197b94f7..0ea047c5 100644 --- a/templates/hud/tokenHUD.hbs +++ b/templates/hud/tokenHUD.hbs @@ -40,6 +40,7 @@ {{/if}} + {{#if usesEffects}} @@ -54,6 +55,13 @@ {{/each}} {{/if}} + {{/if}} + + {{#if (eq actorType 'party')}} + + {{/if}}
diff --git a/templates/levelup/tabs/summary.hbs b/templates/levelup/tabs/summary.hbs index a57b820a..3c3cf4b7 100644 --- a/templates/levelup/tabs/summary.hbs +++ b/templates/levelup/tabs/summary.hbs @@ -19,9 +19,13 @@ {{#if this.achievements.proficiency.shown}}
- {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.proficiencyIncrease" proficiency=this.achievements.proficiency.old }} + + {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.proficiencyIncrease" proficiency=this.achievements.proficiency.old }} + - {{this.achievements.proficiency.new}} + + {{this.achievements.proficiency.new}} +
{{/if}} @@ -29,14 +33,22 @@
{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.damageThresholds"}}{{#if this.levelAchievements.damageThresholds.unarmored}}({{localize "DAGGERHEART.GENERAL.unarmored"}}){{/if}}
- {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.damageThresholdMajorIncrease" threshold=this.achievements.damageThresholds.major.old }} + + {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.damageThresholdMajorIncrease" threshold=this.achievements.damageThresholds.major.old }} + - {{this.achievements.damageThresholds.major.new}} + + {{this.achievements.damageThresholds.major.new}} +
- {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.damageThresholdSevereIncrease" threshold=this.achievements.damageThresholds.severe.old }} + + {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.damageThresholdSevereIncrease" threshold=this.achievements.damageThresholds.severe.old }} + - {{this.achievements.damageThresholds.severe.new}} + + {{this.achievements.damageThresholds.severe.new}} +
{{/if}} @@ -45,7 +57,7 @@
{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.domainCards"}}
{{#each this.achievements.domainCards.values}} -
{{this.name}}
+ {{this.name}} {{/each}}
@@ -55,7 +67,7 @@
{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.newExperiences"}}
{{#each this.achievements.experiences.values}} -
{{this.name}} {{numberFormat this.modifier sign=true}}
+ {{this.name}} {{numberFormat this.modifier sign=true}} {{/each}}
@@ -71,32 +83,48 @@
{{#if this.advancements.statistics.proficiency.shown}}
- {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.proficiencyIncrease" proficiency=this.advancements.statistics.proficiency.old }} + + {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.proficiencyIncrease" proficiency=this.advancements.statistics.proficiency.old }} + - {{this.advancements.statistics.proficiency.new}} + + {{this.advancements.statistics.proficiency.new}} +
{{/if}} {{#if this.advancements.statistics.hitPoints.shown}}
- {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.hpIncrease" hitPoints=this.advancements.statistics.hitPoints.old }} + + {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.hpIncrease" hitPoints=this.advancements.statistics.hitPoints.old }} + - {{this.advancements.statistics.hitPoints.new}} + + {{this.advancements.statistics.hitPoints.new}} +
{{/if}} {{#if this.advancements.statistics.stress.shown}}
- {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.stressIncrease" stress=this.advancements.statistics.stress.old }} + + {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.stressIncrease" stress=this.advancements.statistics.stress.old }} + - {{this.advancements.statistics.stress.new}} + + {{this.advancements.statistics.stress.new}} +
{{/if}} {{#if this.advancements.statistics.evasion.shown}}
- {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.evasionIncrease" evasion=this.advancements.statistics.evasion.old }} + + {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.evasionIncrease" evasion=this.advancements.statistics.evasion.old }} + - {{this.advancements.statistics.evasion.new}} + + {{this.advancements.statistics.evasion.new}} +
{{/if}}
@@ -108,9 +136,13 @@ {{#each this.advancements.traits}}
- {{this.label}}: {{this.old}} + + {{this.label}}: {{this.old}} + - {{this.new}} + + {{this.new}} +
{{/each}} @@ -121,7 +153,7 @@
{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.domainCards"}}
{{#each this.advancements.domainCards}} -
{{this.name}}
+ {{this.name}} {{/each}}
@@ -132,7 +164,7 @@
{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.experienceIncreases"}}
{{#each this.advancements.experiences}} -
{{this.name}} {{numberFormat this.modifier sign=true}}
+ {{this.name}} {{numberFormat this.modifier sign=true}} {{/each}}
@@ -143,7 +175,7 @@
{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.subclass"}}
{{#each this.advancements.subclass}} -
{{this.name}} - {{this.featureLabel}}
+ {{this.name}} - {{this.featureLabel}} {{/each}}
@@ -154,9 +186,9 @@
{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.multiclass"}}
-
{{this.name}}
-
{{this.domain}}
-
{{this.subclass}}
+ {{this.name}} + {{this.domain}} + {{this.subclass}}
{{/with}} @@ -164,21 +196,29 @@ {{#if this.advancements.vicious.damage}}
- {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.damageIncreased" damage=this.advancements.vicious.damage.old }} + + {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.damageIncreased" damage=this.advancements.vicious.damage.old }} + - {{this.advancements.vicious.damage.new}} + + {{this.advancements.vicious.damage.new}} +
{{/if}} {{#if this.advancements.vicious.range}}
- {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.rangeIncreased" range=this.advancements.vicious.range.old }} + + {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.rangeIncreased" range=this.advancements.vicious.range.old }} + - {{this.advancements.vicious.range.new}} + + {{this.advancements.vicious.range.new}} +
{{/if}} {{#each this.advancements.simple}}
-
{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.simpleFeature" feature=this}}
+ {{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.simpleFeature" feature=this}}
{{/each}} diff --git a/templates/levelup/tabs/viewMode.hbs b/templates/levelup/tabs/viewMode.hbs new file mode 100644 index 00000000..b41623d7 --- /dev/null +++ b/templates/levelup/tabs/viewMode.hbs @@ -0,0 +1,24 @@ +
+
+ {{#each this.tiers as |tier key|}} +
+ {{localize tier.name}} + + {{#each tier.groups}} +
+
+ {{#each this.checkboxGroups}} +
+ {{#each this.checkboxes}} + + {{/each}} +
+ {{/each}} +
+ {{this.label}} +
+ {{/each}} +
+ {{/each}} +
+
\ No newline at end of file diff --git a/templates/scene/dh-config.hbs b/templates/scene/dh-config.hbs new file mode 100644 index 00000000..1f7dcd81 --- /dev/null +++ b/templates/scene/dh-config.hbs @@ -0,0 +1,24 @@ +
+
+ {{localize "DAGGERHEART.SETTINGS.Scene.rangeMeasurement"}} + + {{#if variantRules.rangeMeasurement.enabled}} + {{formGroup data.schema.fields.rangeMeasurement.fields.setting value=data._source.rangeMeasurement.setting name="flags.daggerheart.rangeMeasurement.setting" id="rangeMeasurementSetting" localize=true blank=false}} + + {{#if (eq data.rangeMeasurement.setting "custom")}} + {{formGroup data.schema.fields.rangeMeasurement.fields.melee value=data._source.rangeMeasurement.melee name="flags.daggerheart.rangeMeasurement.melee" localize=true}} + {{formGroup data.schema.fields.rangeMeasurement.fields.veryClose value=data._source.rangeMeasurement.veryClose name="flags.daggerheart.rangeMeasurement.veryClose" localize=true}} + {{formGroup data.schema.fields.rangeMeasurement.fields.close value=data._source.rangeMeasurement.close name="flags.daggerheart.rangeMeasurement.close" localize=true}} + {{formGroup data.schema.fields.rangeMeasurement.fields.far value=data._source.rangeMeasurement.far name="flags.daggerheart.rangeMeasurement.far" localize=true}} + {{/if}} + {{#if (eq data.rangeMeasurement.setting "default")}} + {{formGroup variantRules.schema.fields.rangeMeasurement.fields.melee value=variantRules._source.rangeMeasurement.melee localize=true disabled=true}} + {{formGroup variantRules.schema.fields.rangeMeasurement.fields.veryClose value=variantRules._source.rangeMeasurement.veryClose localize=true disabled=true}} + {{formGroup variantRules.schema.fields.rangeMeasurement.fields.close value=variantRules._source.rangeMeasurement.close localize=true disabled=true}} + {{formGroup variantRules.schema.fields.rangeMeasurement.fields.far value=variantRules._source.rangeMeasurement.far localize=true disabled=true}} + {{/if}} + {{else}} + {{localize "DAGGERHEART.SETTINGS.Scene.disabledText"}} + {{/if}} +
+
\ No newline at end of file diff --git a/templates/scene/tabs.hbs b/templates/scene/tabs.hbs new file mode 100644 index 00000000..f524916e --- /dev/null +++ b/templates/scene/tabs.hbs @@ -0,0 +1,12 @@ + diff --git a/templates/settings/appearance-settings.hbs b/templates/settings/appearance-settings.hbs deleted file mode 100644 index d4d41d62..00000000 --- a/templates/settings/appearance-settings.hbs +++ /dev/null @@ -1,106 +0,0 @@ -
-
-

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

-
- -
- {{localize 'DAGGERHEART.GENERAL.fear'}} - {{formGroup settingFields.schema.fields.displayFear value=settingFields._source.displayFear localize=true}} - {{formGroup settingFields.schema.fields.showGenericStatusEffects value=settingFields._source.showGenericStatusEffects localize=true}} -
- -
- {{localize 'DAGGERHEART.SETTINGS.Appearance.FIELDS.expandedTitle'}} - {{formGroup settingFields.schema.fields.extendCharacterDescriptions value=settingFields._source.extendCharacterDescriptions localize=true}} - {{formGroup settingFields.schema.fields.extendAdversaryDescriptions value=settingFields._source.extendAdversaryDescriptions localize=true}} - {{formGroup settingFields.schema.fields.extendEnvironmentDescriptions value=settingFields._source.extendEnvironmentDescriptions localize=true}} - {{formGroup settingFields.schema.fields.extendItemDescriptions value=settingFields._source.extendItemDescriptions localize=true}} -
- - {{#if showDiceSoNice}} -
- {{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.title"}} -
{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.hint"}}
- -
- -
- -
-
- - -
- -
-
- - {{formInput diceTab.fields.foreground value=diceTab.source.foreground localize=true}} -
-
- - {{formInput diceTab.fields.background value=diceTab.source.background localize=true}} -
-
- - {{formInput diceTab.fields.outline value=diceTab.source.outline localize=true}} -
-
- - {{formInput diceTab.fields.edge value=diceTab.source.edge localize=true}} -
-
- - -
-
- - -
-
- - -
-
- -
-
-
-
- {{/if}} - -
- - -
-
- \ No newline at end of file diff --git a/templates/settings/appearance-settings/diceSoNice.hbs b/templates/settings/appearance-settings/diceSoNice.hbs new file mode 100644 index 00000000..6321332d --- /dev/null +++ b/templates/settings/appearance-settings/diceSoNice.hbs @@ -0,0 +1,67 @@ +
+
+
{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.hint"}}
+ +
+ +
+ {{#each dsnTabs as |dsnTab|}} +
+
+
+ + {{formInput fields.system value=values.system localize=true choices=@root.diceSoNiceSystems}} +
+
+
+ + {{formInput fields.foreground value=values.foreground localize=true}} +
+
+ + {{formInput fields.background value=values.background localize=true}} +
+
+ + {{formInput fields.outline value=values.outline localize=true}} +
+
+ + {{formInput fields.edge value=values.edge localize=true}} +
+
+ + {{formInput fields.colorset value=values.colorset choices=@root.diceSoNiceColorsets localize=true}} +
+
+ + {{formInput fields.texture value=values.texture choices=@root.diceSoNiceTextures localize=true}} +
+
+ + {{formInput fields.material value=values.material choices=@root.diceSoNiceMaterials localize=true}} +
+
+ +
+
+
+
+ {{/each}} +
+
\ No newline at end of file diff --git a/templates/settings/appearance-settings/header.hbs b/templates/settings/appearance-settings/header.hbs new file mode 100644 index 00000000..110fd2b0 --- /dev/null +++ b/templates/settings/appearance-settings/header.hbs @@ -0,0 +1,3 @@ +
+

{{localize 'DAGGERHEART.SETTINGS.Menu.appearance.label'}}

+
\ No newline at end of file diff --git a/templates/settings/appearance-settings/main.hbs b/templates/settings/appearance-settings/main.hbs new file mode 100644 index 00000000..fda6243b --- /dev/null +++ b/templates/settings/appearance-settings/main.hbs @@ -0,0 +1,50 @@ +
+ {{formGroup + fields.useResourcePips + value=setting.useResourcePips + localize=true}} + {{formGroup + fields.displayFear + value=setting.displayFear + localize=true}} + {{formGroup + fields.showGenericStatusEffects + value=setting.showGenericStatusEffects + localize=true}} + {{formGroup + fields.hideAttribution + value=setting.hideAttribution + localize=true}} + +
+ {{localize 'DAGGERHEART.SETTINGS.Appearance.FIELDS.expandedTitle'}} + {{formGroup + fields.extendCharacterDescriptions + value=setting.extendCharacterDescriptions + localize=true}} + {{formGroup + fields.extendAdversaryDescriptions + value=setting.extendAdversaryDescriptions + localize=true}} + {{formGroup + fields.extendEnvironmentDescriptions + value=setting.extendEnvironmentDescriptions + localize=true}} + {{formGroup + fields.extendItemDescriptions + value=setting.extendItemDescriptions + localize=true}} +
+ +
+ {{localize 'DAGGERHEART.SETTINGS.Appearance.FIELDS.expandRollMessage.title'}} + {{formGroup fields.expandRollMessage.fields.desc value=setting.expandRollMessage.desc + localize=true}} + {{formGroup fields.expandRollMessage.fields.roll value=setting.expandRollMessage.roll + localize=true}} + {{formGroup fields.expandRollMessage.fields.damage + value=setting.expandRollMessage.damage localize=true}} + {{formGroup fields.expandRollMessage.fields.target + value=setting.expandRollMessage.target localize=true}} +
+
\ No newline at end of file diff --git a/templates/settings/automation-settings/general.hbs b/templates/settings/automation-settings/general.hbs index 04d08a9f..8921ab6a 100644 --- a/templates/settings/automation-settings/general.hbs +++ b/templates/settings/automation-settings/general.hbs @@ -3,11 +3,15 @@ data-tab="{{tabs.general.id}}" data-group="{{tabs.general.group}}" > -
+
{{formGroup settingFields.schema.fields.hopeFear.fields.gm value=settingFields._source.hopeFear.gm localize=true}} {{formGroup settingFields.schema.fields.hopeFear.fields.players value=settingFields._source.hopeFear.players localize=true}} - +
+
+ + {{formGroup settingFields.schema.fields.summaryMessages.fields.damage value=settingFields._source.summaryMessages.damage localize=true}} + {{formGroup settingFields.schema.fields.summaryMessages.fields.effects value=settingFields._source.summaryMessages.effects localize=true}}
{{formGroup settingFields.schema.fields.actionPoints value=settingFields._source.actionPoints localize=true}} {{formGroup settingFields.schema.fields.hordeDamage value=settingFields._source.hordeDamage localize=true}} diff --git a/templates/settings/automation-settings/roll.hbs b/templates/settings/automation-settings/roll.hbs new file mode 100644 index 00000000..5769bf61 --- /dev/null +++ b/templates/settings/automation-settings/roll.hbs @@ -0,0 +1,22 @@ +
+
+ + {{localize "DAGGERHEART.SETTINGS.Automation.roll.title"}} + + {{#each settingFields.schema.fields.roll.fields as | field |}} + {{!-- {{formGroup field value=(lookup @root.settingFields.roll field.name) localize=true rootId="automation-roll"}} --}} +
+ + {{#with (lookup @root.settingFields.roll field.name) as | values |}} + {{formGroup field.fields.gm value=values.gm rootId=(concat "automation-roll-" field.name "-gm") localize=true}} + {{formGroup field.fields.players value=values.players rootId=(concat "automation-roll-" field.name "-players") localize=true}} + {{/with}} +

{{localize (concat "DAGGERHEART.SETTINGS.Automation.FIELDS.roll." field.name ".hint")}}

+
+ {{/each}} +
+
\ No newline at end of file diff --git a/templates/settings/automation-settings/rules.hbs b/templates/settings/automation-settings/rules.hbs index 8bbf4d93..a12c2999 100644 --- a/templates/settings/automation-settings/rules.hbs +++ b/templates/settings/automation-settings/rules.hbs @@ -13,5 +13,9 @@ {{formGroup settingFields.schema.fields.defeated.fields.characterDefault value=settingFields._source.defeated.characterDefault labelAttr="name" localize=true}} {{formGroup settingFields.schema.fields.defeated.fields.adversaryDefault value=settingFields._source.defeated.adversaryDefault labelAttr="name" localize=true}} {{formGroup settingFields.schema.fields.defeated.fields.companionDefault value=settingFields._source.defeated.companionDefault labelAttr="name" localize=true}} + + {{formGroup settingFields.schema.fields.defeated.fields.deadIcon value=settingFields._source.defeated.deadIcon localize=true}} + {{formGroup settingFields.schema.fields.defeated.fields.defeatedIcon value=settingFields._source.defeated.defeatedIcon localize=true}} + {{formGroup settingFields.schema.fields.defeated.fields.unconsciousIcon value=settingFields._source.defeated.unconsciousIcon localize=true}} \ No newline at end of file diff --git a/templates/settings/downtime-config/effects.hbs b/templates/settings/downtime-config/effects.hbs new file mode 100644 index 00000000..f09fdb05 --- /dev/null +++ b/templates/settings/downtime-config/effects.hbs @@ -0,0 +1,15 @@ +
+
+ {{localize "DAGGERHEART.GENERAL.Effect.plural"}} + +
+ {{#each move.effects}} + {{> "systems/daggerheart/templates/settings/components/settings-item-line.hbs" id=this.id type="effect" }} + {{/each}} +
+
+
\ No newline at end of file diff --git a/templates/settings/downtime-config/main.hbs b/templates/settings/downtime-config/main.hbs index f8a972c7..7f681368 100644 --- a/templates/settings/downtime-config/main.hbs +++ b/templates/settings/downtime-config/main.hbs @@ -3,11 +3,13 @@ data-tab='{{tabs.main.id}}' data-group='{{tabs.main.group}}' > -
- {{localize "Icon"}} + {{#if hasIcon}} +
+ {{localize "Icon"}} - -
+ +
+ {{/if}}
{{localize "Description"}} diff --git a/templates/settings/homebrew-settings.hbs b/templates/settings/homebrew-settings.hbs deleted file mode 100644 index 4e2c442f..00000000 --- a/templates/settings/homebrew-settings.hbs +++ /dev/null @@ -1,90 +0,0 @@ -
-
-

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

-
- {{formGroup settingFields.schema.fields.maxFear value=settingFields._source.maxFear localize=true}} - {{formGroup settingFields.schema.fields.maxDomains value=settingFields._source.maxDomains localize=true}} - {{formGroup settingFields.schema.fields.maxLoadout value=settingFields._source.maxLoadout localize=true}} -
- -

{{localize "DAGGERHEART.SETTINGS.Homebrew.FIELDS.traitArray.label"}}

-
- {{#each settingFields._source.traitArray as |trait index|}} -
- - -
- {{/each}} -
- -
- - {{localize "DAGGERHEART.SETTINGS.Homebrew.currency.title"}} - - {{formGroup settingFields.schema.fields.currency.fields.enabled value=settingFields._source.currency.enabled localize=true}} - {{formGroup settingFields.schema.fields.currency.fields.title value=settingFields._source.currency.title localize=true}} - {{formGroup settingFields.schema.fields.currency.fields.coins value=settingFields._source.currency.coins localize=true}} - {{formGroup settingFields.schema.fields.currency.fields.handfuls value=settingFields._source.currency.handfuls localize=true}} - {{formGroup settingFields.schema.fields.currency.fields.bags value=settingFields._source.currency.bags localize=true}} - {{formGroup settingFields.schema.fields.currency.fields.chests value=settingFields._source.currency.chests localize=true}} - -
- -
- {{localize "DAGGERHEART.SETTINGS.Homebrew.downtimeMoves"}} - -
- - {{localize "DAGGERHEART.APPLICATIONS.Downtime.longRest.title"}} - - - - -
- -
- -
-
- -
- {{#each settingFields._source.restMoves.longRest.moves as |move id|}} - {{> "systems/daggerheart/templates/settings/components/settings-item-line.hbs" this type="longRest" id=id }} - {{/each}} -
-
- -
- - {{localize "DAGGERHEART.APPLICATIONS.Downtime.shortRest.title"}} - - - - -
- -
- -
-
- -
- {{#each settingFields._source.restMoves.shortRest.moves as |move id|}} - {{> "systems/daggerheart/templates/settings/components/settings-item-line.hbs" this type="shortRest" id=id }} - {{/each}} -
-
-
- -
- - -
-
- \ No newline at end of file diff --git a/templates/settings/homebrew-settings/itemFeatures.hbs b/templates/settings/homebrew-settings/itemFeatures.hbs new file mode 100644 index 00000000..1f8595de --- /dev/null +++ b/templates/settings/homebrew-settings/itemFeatures.hbs @@ -0,0 +1,35 @@ +
+
+
+ + {{localize "DAGGERHEART.GENERAL.weaponFeatures"}} + + + + +
+ {{#each settingFields._source.itemFeatures.weaponFeatures as |feature id|}} + {{> "systems/daggerheart/templates/settings/components/settings-item-line.hbs" this type="weaponFeatures" id=id }} + {{/each}} +
+
+ +
+ + {{localize "DAGGERHEART.GENERAL.armorFeatures"}} + + + + +
+ {{#each settingFields._source.itemFeatures.armorFeatures as |feature id|}} + {{> "systems/daggerheart/templates/settings/components/settings-item-line.hbs" this type="armorFeatures" id=id }} + {{/each}} +
+
+
+
\ No newline at end of file diff --git a/templates/settings/homebrew-settings/settings.hbs b/templates/settings/homebrew-settings/settings.hbs index 1c7c787d..893e1bc3 100644 --- a/templates/settings/homebrew-settings/settings.hbs +++ b/templates/settings/homebrew-settings/settings.hbs @@ -12,15 +12,18 @@ {{formGroup settingFields.schema.fields.maxLoadout value=settingFields._source.maxLoadout localize=true}}
-

{{localize "DAGGERHEART.SETTINGS.Homebrew.FIELDS.traitArray.label"}}

-
+
+ + {{localize "DAGGERHEART.SETTINGS.Homebrew.FIELDS.traitArray.label"}} + + {{#each settingFields._source.traitArray as |trait index|}} -
- - -
+
+ {{localize "DAGGERHEART.GENERAL.Modifier.single"}} {{add index 1}} + +
{{/each}} -
+
diff --git a/templates/settings/homebrew-settings/types.hbs b/templates/settings/homebrew-settings/types.hbs new file mode 100644 index 00000000..f9d3bba3 --- /dev/null +++ b/templates/settings/homebrew-settings/types.hbs @@ -0,0 +1,28 @@ +
+
+ + {{localize "DAGGERHEART.SETTINGS.Homebrew.adversaryType.title"}} + + + +
+ {{#each settingFields.adversaryTypes as |type key|}} +
+ {{type.label}} +
+
+ {{/each}} +
+ + {{#if selectedAdversaryType}} +
+ {{formGroup settingFields.schema.fields.adversaryTypes.element.fields.label name=(concat "adversaryTypes." selectedAdversaryType.id ".label") value=selectedAdversaryType.label localize=true }} + +
+ {{/if}} +
+
\ No newline at end of file diff --git a/templates/sheets-settings/action-settings/effect.hbs b/templates/sheets-settings/action-settings/effect.hbs index 9cb2e6c2..51c15aae 100644 --- a/templates/sheets-settings/action-settings/effect.hbs +++ b/templates/sheets-settings/action-settings/effect.hbs @@ -5,8 +5,7 @@ > {{#if fields.roll}}{{> 'systems/daggerheart/templates/actionTypes/roll.hbs' fields=fields.roll.fields source=source.roll}}{{/if}} {{#if fields.save}}{{> 'systems/daggerheart/templates/actionTypes/save.hbs' fields=fields.save.fields source=source.save}}{{/if}} - {{#if fields.damage}}{{> 'systems/daggerheart/templates/actionTypes/damage.hbs' fields=fields.damage.fields.parts.element.fields source=source.damage}}{{/if}} - {{#if fields.resource}}{{> 'systems/daggerheart/templates/actionTypes/resource.hbs' fields=fields.resource.fields source=source.resource}}{{/if}} + {{#if fields.damage}}{{> 'systems/daggerheart/templates/actionTypes/damage.hbs' fields=fields.damage.fields.parts.element.fields source=source.damage directField=fields.damage.fields.direct }}{{/if}} {{#if fields.macro}}{{> 'systems/daggerheart/templates/actionTypes/macro.hbs' fields=fields.macro source=source.macro}}{{/if}} {{#if fields.effects}}{{> 'systems/daggerheart/templates/actionTypes/effect.hbs' fields=fields.effects.element.fields source=source.effects}}{{/if}} {{#if fields.beastform}}{{> 'systems/daggerheart/templates/actionTypes/beastform.hbs' fields=fields.beastform.fields source=source.beastform}}{{/if}} diff --git a/templates/sheets-settings/adversary-settings/attack.hbs b/templates/sheets-settings/adversary-settings/attack.hbs index f7d38f1e..12bafca8 100644 --- a/templates/sheets-settings/adversary-settings/attack.hbs +++ b/templates/sheets-settings/adversary-settings/attack.hbs @@ -19,5 +19,5 @@ {{/if}} {{/if}}
- {{> 'systems/daggerheart/templates/actionTypes/damage.hbs' fields=systemFields.attack.fields.damage.fields.parts.element.fields source=document.system.attack.damage path="system.attack." horde=(eq document._source.system.type 'horde')}} + {{> 'systems/daggerheart/templates/actionTypes/damage.hbs' fields=systemFields.attack.fields.damage.fields.parts.element.fields source=document.system.attack.damage path="system.attack." directField=systemFields.attack.fields.damage.fields.direct horde=(eq document._source.system.type 'horde')}} \ No newline at end of file diff --git a/templates/sheets-settings/adversary-settings/features.hbs b/templates/sheets-settings/adversary-settings/features.hbs index b26fa10c..ec6a9e54 100644 --- a/templates/sheets-settings/adversary-settings/features.hbs +++ b/templates/sheets-settings/adversary-settings/features.hbs @@ -23,7 +23,7 @@ {{/each}}
- {{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}} + {{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}}
\ No newline at end of file diff --git a/templates/sheets-settings/character-settings/details.hbs b/templates/sheets-settings/character-settings/details.hbs index 401f71f2..42e17a9b 100644 --- a/templates/sheets-settings/character-settings/details.hbs +++ b/templates/sheets-settings/character-settings/details.hbs @@ -10,7 +10,7 @@
{{#each document._source.system.traits as | trait key |}}
-
{{localize (concat "DAGGERHEART.CONFIG.Traits." key ".name" )}}
+ {{localize (concat "DAGGERHEART.CONFIG.Traits." key ".name" )}}
{{/each}} diff --git a/templates/sheets-settings/environment-settings/adversaries.hbs b/templates/sheets-settings/environment-settings/adversaries.hbs index 4d8b5122..bcee7320 100644 --- a/templates/sheets-settings/environment-settings/adversaries.hbs +++ b/templates/sheets-settings/environment-settings/adversaries.hbs @@ -26,7 +26,7 @@ {{/each}}
- {{localize "DAGGERHEART.GENERAL.dropActorsHere"}} + {{localize "DAGGERHEART.GENERAL.dropActorsHere"}}
{{/each}} diff --git a/templates/sheets/activeEffect/changes.hbs b/templates/sheets/activeEffect/changes.hbs index 9cf137f0..75f49e4a 100644 --- a/templates/sheets/activeEffect/changes.hbs +++ b/templates/sheets/activeEffect/changes.hbs @@ -8,24 +8,24 @@
    {{#each source.changes as |change i|}} - {{#with ../fields.changes.element.fields as |changeFields|}} -
  1. -
    - -
    -
    - {{formInput changeFields.mode name=(concat "changes." i ".mode") value=change.mode choices=@root.modes}} -
    -
    - {{formInput changeFields.value name=(concat "changes." i ".value") value=change.value}} -
    -
    - {{formInput changeFields.priority name=(concat "changes." i ".priority") value=change.priority - placeholder=(lookup ../../priorities change.mode)}} -
    -
    -
  2. - {{/with}} + {{#with ../fields.changes.element.fields as |changeFields|}} +
  3. +
    + +
    +
    + {{formInput changeFields.mode name=(concat "changes." i ".mode") value=change.mode choices=@root.modes}} +
    +
    + {{formInput changeFields.value name=(concat "changes." i ".value") value=change.value}} +
    +
    + {{formInput changeFields.priority name=(concat "changes." i ".priority") value=change.priority + placeholder=(lookup ../../priorities change.mode)}} +
    +
    +
  4. + {{/with}} {{/each}}
\ No newline at end of file diff --git a/templates/sheets/activeEffect/settings.hbs b/templates/sheets/activeEffect/settings.hbs index 33e1d1b9..cf98c786 100644 --- a/templates/sheets/activeEffect/settings.hbs +++ b/templates/sheets/activeEffect/settings.hbs @@ -2,10 +2,10 @@
{{localize "DAGGERHEART.ACTIVEEFFECT.Config.rangeDependence.title"}} - {{formGroup document.system.schema.fields.rangeDependence.fields.enabled value=source.system.rangeDependence.enabled localize=true }} - {{formGroup document.system.schema.fields.rangeDependence.fields.type value=source.system.rangeDependence.type localize=true }} - {{formGroup document.system.schema.fields.rangeDependence.fields.target value=source.system.rangeDependence.target localize=true }} - {{formGroup document.system.schema.fields.rangeDependence.fields.range value=source.system.rangeDependence.range localize=true }} + {{formGroup systemFields.rangeDependence.fields.enabled value=source.system.rangeDependence.enabled localize=true }} + {{formGroup systemFields.rangeDependence.fields.type value=source.system.rangeDependence.type localize=true }} + {{formGroup systemFields.rangeDependence.fields.target value=source.system.rangeDependence.target localize=true }} + {{formGroup systemFields.rangeDependence.fields.range value=source.system.rangeDependence.range localize=true }}
diff --git a/templates/sheets/actors/adversary/effects.hbs b/templates/sheets/actors/adversary/effects.hbs index 325610e6..cefb6e57 100644 --- a/templates/sheets/actors/adversary/effects.hbs +++ b/templates/sheets/actors/adversary/effects.hbs @@ -1,20 +1,22 @@
- {{> 'daggerheart.inventory-items' - title='DAGGERHEART.GENERAL.activeEffects' - type='effect' - isGlassy=true - collection=effects.actives - canCreate=true - hideResources=true - }} +
+ {{> 'daggerheart.inventory-items' + title='DAGGERHEART.GENERAL.activeEffects' + type='effect' + isGlassy=true + collection=effects.actives + canCreate=true + hideResources=true + }} - {{> 'daggerheart.inventory-items' - title='DAGGERHEART.GENERAL.inactiveEffects' - type='effect' - isGlassy=true - collection=effects.inactives - canCreate=true - hideResources=true - }} + {{> 'daggerheart.inventory-items' + title='DAGGERHEART.GENERAL.inactiveEffects' + type='effect' + isGlassy=true + collection=effects.inactives + canCreate=true + hideResources=true + }} +
\ No newline at end of file diff --git a/templates/sheets/actors/adversary/header.hbs b/templates/sheets/actors/adversary/header.hbs index d1c325f6..e6f829b8 100644 --- a/templates/sheets/actors/adversary/header.hbs +++ b/templates/sheets/actors/adversary/header.hbs @@ -13,9 +13,7 @@
- - {{localize (concat 'DAGGERHEART.CONFIG.AdversaryType.' source.system.type '.label')}} - + {{adversaryType}}
{{#if (eq source.system.type 'horde')}}
@@ -26,12 +24,12 @@
-
+ {{{description}}} -
-
+ + {{localize 'DAGGERHEART.ACTORS.Adversary.FIELDS.motivesAndTactics.label'}}: {{{source.system.motivesAndTactics}}} -
+
diff --git a/templates/sheets/actors/adversary/limited.hbs b/templates/sheets/actors/adversary/limited.hbs new file mode 100644 index 00000000..a9c53185 --- /dev/null +++ b/templates/sheets/actors/adversary/limited.hbs @@ -0,0 +1,23 @@ +
+
+ {{document.name}} +

{{document.name}}

+
+
+
+ + {{localize (concat 'DAGGERHEART.GENERAL.Tiers.' source.system.tier)}} + +
+
+ {{adversaryType}} +
+ {{#if (eq source.system.type 'horde')}} +
+ {{source.system.hordeHp}} + /{{localize "DAGGERHEART.GENERAL.HitPoints.short"}} +
+ {{/if}} +
+
{{{document.system.description}}}
+
\ No newline at end of file diff --git a/templates/sheets/actors/adversary/notes.hbs b/templates/sheets/actors/adversary/notes.hbs index a2378516..a5c3f706 100644 --- a/templates/sheets/actors/adversary/notes.hbs +++ b/templates/sheets/actors/adversary/notes.hbs @@ -7,4 +7,8 @@ {{localize tabs.notes.label}} {{formInput notes.field value=notes.value enriched=notes.enriched toggled=true}} + + {{#if (and showAttribution document.system.attribution.artist)}} + + {{/if}} \ No newline at end of file diff --git a/templates/sheets/actors/adversary/sidebar.hbs b/templates/sheets/actors/adversary/sidebar.hbs index 2fc106a8..38a5c11f 100644 --- a/templates/sheets/actors/adversary/sidebar.hbs +++ b/templates/sheets/actors/adversary/sidebar.hbs @@ -4,35 +4,10 @@
-
+
-
-
-

-

/

-

{{source.system.resources.hitPoints.max}}

-
- -
-

{{localize 'DAGGERHEART.GENERAL.HitPoints.short'}}

-
- -
-
-
-

-

/

-

{{source.system.resources.stress.max}}

-
- -
-

{{localize 'DAGGERHEART.GENERAL.stress'}}

-
-
+ {{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.hitPoints label="DAGGERHEART.GENERAL.HitPoints.short" key="system.resources.hitPoints.value" action="toggleHitPoints" }} + {{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.stress label="DAGGERHEART.GENERAL.stress" key="system.resources.stress.value" action="toggleStress" }}
@@ -78,13 +53,9 @@
    - {{> 'daggerheart.inventory-item' + {{> 'daggerheart.inventory-item-compact' item=document.system.attack type='action' - hideTags=true - hideDescription=true - hideResources=true - noExtensible=true noCompendiumEdit=true }}
@@ -98,9 +69,9 @@
{{#each source.system.experiences as |experience id|}}
-
+ +{{experience.value}} -
+ {{experience.name}}
diff --git a/templates/sheets/actors/character/limited.hbs b/templates/sheets/actors/character/limited.hbs new file mode 100644 index 00000000..ecf7e7b6 --- /dev/null +++ b/templates/sheets/actors/character/limited.hbs @@ -0,0 +1,97 @@ +
+
+ {{document.name}} +

{{document.name}}

+
+
+
+ {{#if document.system.class.value}} + {{document.system.class.value.name}} + {{else}} + {{localize 'TYPES.Item.class'}} + {{/if}} + β€’ + {{#if document.system.class.subclass}} + {{document.system.class.subclass.name}} + {{else}} + {{localize 'TYPES.Item.subclass'}} + {{/if}} + β€’ + {{#if document.system.community}} + {{document.system.community.name}} + {{else}} + {{localize 'TYPES.Item.community'}} + {{/if}} + β€’ + {{#if document.system.ancestry}} + {{document.system.ancestry.name}} + {{else}} + {{localize 'TYPES.Item.ancestry'}} + {{/if}} +
+ + {{#if document.system.multiclass.value}} +
+ {{#if document.system.multiclass.value}} + {{document.system.multiclass.value.name}} + {{else}} + {{localize 'DAGGERHEART.GENERAL.multiclass'}} + {{/if}} + β€’ + {{#if document.system.multiclass.subclass}} + {{document.system.multiclass.subclass.name}} + {{else}} + {{localize 'TYPES.Item.subclass'}} + {{/if}} +
+ {{/if}} +
+

+ {{localize 'DAGGERHEART.GENERAL.level'}} + {{document.system.levelData.level.changed}} +

+
+
+ +

{{localize "DAGGERHEART.GENERAL.Domain.plural"}}

+ +
+ {{#if document.system.class.value}} +
+ {{#each document.system.domainData as |data|}} +
+ + {{data.label}} +
+ {{/each}} +
+ {{/if}} +
+
+
+ +

{{localize "DAGGERHEART.GENERAL.Tabs.biography"}}

+ +
+
+ {{#if source.system.biography.characteristics.pronouns}} +
+ {{localize 'DAGGERHEART.ACTORS.Character.pronouns'}} + {{source.system.biography.characteristics.pronouns}} +
+ {{/if}} + {{#if source.system.biography.characteristics.age}} +
+ {{localize 'DAGGERHEART.ACTORS.Character.age'}} + {{source.system.biography.characteristics.age}} +
+ {{/if}} + {{#if source.system.biography.characteristics.faith}} +
+ {{localize 'DAGGERHEART.ACTORS.Character.faith'}} + {{source.system.biography.characteristics.faith}} +
+ {{/if}} +
+
+
\ No newline at end of file diff --git a/templates/sheets/actors/character/sidebar.hbs b/templates/sheets/actors/character/sidebar.hbs index 497aee7d..9ef3939a 100644 --- a/templates/sheets/actors/character/sidebar.hbs +++ b/templates/sheets/actors/character/sidebar.hbs @@ -15,44 +15,12 @@
-
+
-
-
-

-

/

-

{{document.system.resources.hitPoints.max}}

-
- -
-

{{localize "DAGGERHEART.GENERAL.HitPoints.short"}}

-
- -
-
-
-

-

/

-

{{document.system.resources.stress.max}}

-
- -
-

{{localize "DAGGERHEART.GENERAL.stress"}}

-
-
+ {{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.hitPoints label="DAGGERHEART.GENERAL.HitPoints.short" key="system.resources.hitPoints.value" action="toggleHitPoints" }} + {{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.stress label="DAGGERHEART.GENERAL.stress" key="system.resources.stress.value" action="toggleStress" }}
-
+

{{document.system.evasion}}

@@ -64,10 +32,29 @@ {{#if document.system.armor.system.marks}}
+ {{#if useResourcePips}} +
+ +
+ {{localize "DAGGERHEART.GENERAL.armorSlots"}} + {{document.system.armor.system.marks.value}} / {{document.system.armorScore}} +
+
+ {{else}}
-

-

/

-

{{document.system.armorScore}}

+ + / + {{document.system.armorScore}}

{{localize "DAGGERHEART.GENERAL.armorSlots"}}

+ {{/if}}
{{else}}
@@ -116,24 +104,16 @@
    {{#if document.system.usedUnarmed}} - {{> 'daggerheart.inventory-item' + {{> 'daggerheart.inventory-item-compact' item=document.system.usedUnarmed type='action' - hideTags=true - hideDescription=true - hideResources=true - noExtensible=true }} {{/if}} {{#each document.items as |item|}} {{#if item.system.equipped}} - {{> 'daggerheart.inventory-item' + {{> 'daggerheart.inventory-item-compact' item=item type=item.type - hideTags=true - hideDescription=true - hideResources=true - noExtensible=true }} {{/if}} {{/each}} @@ -147,13 +127,9 @@
diff --git a/templates/ui/chat/effectSummary.hbs b/templates/ui/chat/effectSummary.hbs new file mode 100644 index 00000000..1b7badb2 --- /dev/null +++ b/templates/ui/chat/effectSummary.hbs @@ -0,0 +1,33 @@ +
+
+ {{localize "DAGGERHEART.GENERAL.Effect.plural"}} +
+
+ {{#each effects}} +
+ + +

{{this.name}}

+ +
+
+ {{{this.description}}} +
+
+ {{/each}} +
+ + {{#if targets}} +
+ {{localize "DAGGERHEART.UI.Chat.appliedTo"}} +
+
+ {{#each targets}} +
+ +

{{this.name}}

+
+ {{/each}} +
+ {{/if}} +
\ No newline at end of file diff --git a/templates/ui/chat/groupRoll.hbs b/templates/ui/chat/groupRoll.hbs new file mode 100644 index 00000000..83cc4ce9 --- /dev/null +++ b/templates/ui/chat/groupRoll.hbs @@ -0,0 +1,124 @@ +
+
+

+ +

+
+
+
+ +
+
{{system.leader.actor.name}}
+
+ {{#unless (isNullish system.leader.manualSuccess)}} + + {{/unless}} +
{{localize (concat "DAGGERHEART.CONFIG.Traits." system.leader.trait ".name")}}
+
+
+
+ {{#unless system.leader.result}} +
+ +
+ {{else}} +
+ {{#if (isNullish system.leader.manualSuccess)}} +
+ + +
+ + + + + + {{else}} +
+ {{#if system.leader.manualSuccess}} + + {{else}} + + {{/if}} +
+ {{/if}} +
+ {{/unless}} +
+ {{#if system.leader.result}} +
+

+ {{localize "DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle" ability=(localize (concat "DAGGERHEART.CONFIG.Traits." system.leader.trait ".name"))}} +

+ + + {{system.leader.result.total}} + {{#unless (isNullish system.totalModifier)}} + {{#if (gte system.totalModifier 0)}}+{{else}}-{{/if}} + {{positive system.totalModifier}} = {{add system.leader.result.total system.totalModifier}} + {{/unless}} + + {{localize "DAGGERHEART.GENERAL.withThing" thing=system.leader.result.result.label}} + +
+ {{/if}} +
+
+
+

+ + + + + +

+
+ {{#each system.members as |member index|}} +
+
+ +
+
{{member.actor.name}}
+
+ {{#unless (isNullish member.manualSuccess)}} + + {{/unless}} +
{{localize (concat "DAGGERHEART.CONFIG.Traits." member.trait ".name")}}
+
+
+
+ {{#unless member.result}} +
+ +
+ {{else}} +
+ {{#if (isNullish member.manualSuccess)}} +
+ {{member.result.total}} + + + +
+ + + + + + {{else}} +
+ {{member.result.total}} + {{#if member.manualSuccess}} + + {{else}} + + {{/if}} +
+ {{/if}} +
+ {{/unless}} +
+ {{/each}} +
+
+
\ No newline at end of file diff --git a/templates/ui/chat/parts/button-part.hbs b/templates/ui/chat/parts/button-part.hbs index f83972f7..21317939 100644 --- a/templates/ui/chat/parts/button-part.hbs +++ b/templates/ui/chat/parts/button-part.hbs @@ -1,17 +1,17 @@
{{#if hasDamage}} {{#unless (empty damage)}} - {{#if canButtonApply}}{{/if}} + {{else}} {{/unless}} {{/if}} {{#if hasHealing}} {{#unless (empty damage)}} - {{#if canButtonApply}}{{/if}} + {{else}} {{/unless}} {{/if}} - {{#if (and hasEffect canButtonApply)}}{{/if}} + {{#if (and hasEffect)}}{{/if}}
\ No newline at end of file diff --git a/templates/ui/chat/parts/damage-part.hbs b/templates/ui/chat/parts/damage-part.hbs index 232b1303..97828bd2 100644 --- a/templates/ui/chat/parts/damage-part.hbs +++ b/templates/ui/chat/parts/damage-part.hbs @@ -1,9 +1,9 @@ -
+
{{localize (ifThen hasHealing "DAGGERHEART.ACTIONS.TYPES.healing.name" "DAGGERHEART.ACTIONS.TYPES.damage.name")}}
{{#each damage as | roll index | }} -
{{localize (concat 'DAGGERHEART.CONFIG.HealingType.' index '.name')}}: {{total}}
+
{{localize (concat 'DAGGERHEART.CONFIG.HealingType.' index '.inChatRoll')}}: {{total}}
{{/each}}
@@ -13,10 +13,10 @@ {{#each damage as | roll index | }}
- {{localize (concat 'DAGGERHEART.CONFIG.HealingType.' index '.name')}}
{{localize "DAGGERHEART.GENERAL.total"}}: {{roll.total}}
+ {{#if ../hasHealing}}{{localize (concat 'DAGGERHEART.CONFIG.HealingType.' index '.name')}}{{else}}{{localize (concat 'DAGGERHEART.CONFIG.HealingType.' index '.inChatRoll')}}{{/if}}
{{localize "DAGGERHEART.GENERAL.total"}}: {{roll.total}}
{{#if (and (eq index "hitPoints") ../isDirect)}}
{{localize "DAGGERHEART.CONFIG.DamageType.direct.short"}}
{{/if}}
{{#each roll.parts}} - {{#if damageTypes.length}} + {{#if (and (not @root.hasHealing) damageTypes.length)}}
- {{/if}} + {{/each}} +
\ No newline at end of file diff --git a/templates/ui/itemBrowser/filterContainer.hbs b/templates/ui/itemBrowser/filterContainer.hbs new file mode 100644 index 00000000..da8e8cfe --- /dev/null +++ b/templates/ui/itemBrowser/filterContainer.hbs @@ -0,0 +1,22 @@ +{{#each fieldFilter}} + {{#if choices }} +
+ +
+ +
+
+ {{else}} + {{#if filtered }} + {{formField field localize=true blank="" name=name choices=(@root.formatChoices this) valueAttr="value" dataset=(object key=key) value=value}} + {{else}} + {{#if field.label}} + {{formField field localize=true blank="" name=name dataset=(object key=key) value=value}} + {{else}} + {{formField field localize=true blank="" name=name dataset=(object key=key) label=label value=value}} + {{/if}} + {{/if}} + {{/if}} +{{/each}} \ No newline at end of file diff --git a/templates/ui/itemBrowser/itemBrowser.hbs b/templates/ui/itemBrowser/itemBrowser.hbs index 65c2121e..137693fc 100644 --- a/templates/ui/itemBrowser/itemBrowser.hbs +++ b/templates/ui/itemBrowser/itemBrowser.hbs @@ -1,5 +1,5 @@
- {{#if menu.data }} + {{#if menu.path.length }} - {{#if fieldFilter.length}} - - {{/if}} - + +
-
- {{#each fieldFilter}} - {{#if choices }} -
- -
- -
-
- {{else}} - {{#if filtered }} - {{formField field localize=true blank="" name=name choices=(@root.formatChoices this) valueAttr="value" dataset=(object key=key) value=value}} - {{else}} - {{#if field.label}} - {{formField field localize=true blank="" name=name dataset=(object key=key) value=value}} - {{else}} - {{formField field localize=true blank="" name=name dataset=(object key=key) label=label value=value}} - {{/if}} - {{/if}} - {{/if}} - {{/each}} -
+
- {{!--
--}} - {{#if menu.data.columns.length}} -
-
-
Name
+ {{#if menu.data.columns.length}} +
+
+
{{localize 'DAGGERHEART.UI.ItemBrowser.columnName'}}
{{#each menu.data.columns}} -
{{label}}
+
{{localize label}}
{{/each}}
- {{/if}} -
- {{#each items}} -
-
-
- -
{{name}}
- {{#each ../menu.data.columns}} -
{{#with (@root.formatLabel ../this this) as | label |}}{{{label}}}{{/with}}
- {{/each}} -
-
-
-
{{{system.description}}}
-
-
- {{/each}} -
- {{!--
--}} + {{/if}} +
{{else}}
-

Daggerheart Compendium Browser

- Select a Folder in sidebar to start browsing trought the compendium +

{{localize "DAGGERHEART.UI.ItemBrowser.title"}}

+ {{localize "DAGGERHEART.UI.ItemBrowser.hint"}}
{{/if}}
\ No newline at end of file diff --git a/templates/ui/itemBrowser/itemContainer.hbs b/templates/ui/itemBrowser/itemContainer.hbs new file mode 100644 index 00000000..f6aefa6b --- /dev/null +++ b/templates/ui/itemBrowser/itemContainer.hbs @@ -0,0 +1,16 @@ +{{#each items}} +
+
+
+ + {{name}} + {{#each ../menu.data.columns}} + {{#with (@root.formatLabel ../this this) as | label |}}{{{label}}}{{/with}} + {{/each}} +
+
+
+ {{{system.description}}} +
+
+{{/each}} \ No newline at end of file diff --git a/templates/ui/itemBrowser/sidebar.hbs b/templates/ui/itemBrowser/sidebar.hbs index 56d9db6d..28a34a22 100644 --- a/templates/ui/itemBrowser/sidebar.hbs +++ b/templates/ui/itemBrowser/sidebar.hbs @@ -1,32 +1,22 @@
- {{#each compendiums}} -
- - {{label}} - - -
- {{#each folders}} -
{{label}}
- {{!--
{{label}}
--}} - {{#if folders.length}} -
-
- {{#each folders}} -
- β€’ {{label}} -
- {{/each}} -
+
+ {{#each compendiums}} +
{{label}}
+ {{#if folders.length}} +
+
+ {{#each folders}} +
+ β€’ {{label}} +
+ {{/each}}
- {{/if}} - {{/each}} -
- -
- {{/each}} +
+ {{/if}} + {{/each}} +
diff --git a/templates/ui/tooltip/adversary.hbs b/templates/ui/tooltip/adversary.hbs index b400bd29..86c399c5 100644 --- a/templates/ui/tooltip/adversary.hbs +++ b/templates/ui/tooltip/adversary.hbs @@ -12,7 +12,7 @@
- {{#with (lookup config.ACTOR.adversaryTypes item.system.type) as | type |}} + {{#with (lookup adversaryTypes item.system.type) as | type |}}
{{localize type.label}}
{{/with}}