Hotfix 1.0.1 (#825)

* Updated the background image for the system

* Fixed so Weapon/Armor features are added again

* Fixed so fear is available as a resource to be deducted by actions (#757)

* Changed to use the config labels and src

* Updated Weapons

* Fixed so the decrease button of simple fear tracker is not visible when not hovered

* Fixed so armor preUpdate doesn't fail if no system changes are made

* Updated .gitignore and author details (#777)

* Add author details and name mapping for chrisryan10 (#773)

Co-authored-by: Chris Ryan <chrisr@blackhole>

* Add build to ignore for my linux dev (#775)

Co-authored-by: Chris Ryan <chrisr@blackhole>

---------

Co-authored-by: Chris Ryan <chrisr@blackhole>

* Corrected sneak attack active effect (#780)

* Fixed a spelling error (#779)

* Fix bardic rally showing in damage dialog when it should not (#783)

* update spelling (#786)

* Translating inventory descriptions (#782)

* updated credits for 1.0.1 release (#797)

* updated credits for 1.0.1 release

* further updated artwork credits

* Chagned handlebarhelper rollparsed to be more defensive (#794)

* Added missing scene refreshType (#790)

* Remove ability use buttons for not owned abilities (#795)

* [Fix] PrayerDice Fixed (#799)

* Fixed prayer dice, and wheelchair images

* Fixed -settings data sources

* Dragging features from one adversary to another (#788)

* [Fix] Levelup Fixes (#787)

* Fixed crash on experience selection. Fixed subclass error on multiclassing

* Fixed so multiclasses do not gain the hope feature for the class

* Fixed so Class/Subclass features are properly deleted on delevel

* Removed automatic deletion of features on delevel when not using levelup auto

* Fixed so custom domains can be selected in levelup when multiclassing

* Changed so encounter countdowns is a button (#804)

* Fixed so that dropping on class/subclass...creates the item on the character (#803)

* [BUG] - Importing All Adversaries/Environments (#814)

Fixes #774

Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com>

* Bug/671 reaction roll chat title (#809)

* Update Reaction Roll Chat Message Title

* Removed console log

---------

Co-authored-by: WBHarry <williambjrklund@gmail.com>

* Improve Trait tooltip display (#817)

Fixes #806

Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com>

* [BUG] - Combat Tracker d12 logo not found (#812)

Fixes #764

Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com>

* Compendium Browser (#821)

* Corrected timbending description localization (#816)

* [Fix] Compendium Item (#810)

* Corrected Emberwoven Armor

* Fixed subclass regression

* Fixed so character's with wildcard images don't break beastform (#815)

* Fix roll result based duality damage (#822)

---------

Co-authored-by: Chris Ryan <73275196+chrisryan10@users.noreply.github.com>
Co-authored-by: Chris Ryan <chrisr@blackhole>
Co-authored-by: Dapoulp <74197441+Dapoulp@users.noreply.github.com>
Co-authored-by: IrkTheImp <41175833+IrkTheImp@users.noreply.github.com>
Co-authored-by: CPTN_Cosmo <cptncosmo@gmail.com>
Co-authored-by: Josh Q. <jshqntnr13@gmail.com>
Co-authored-by: joaquinpereyra98 <24190917+joaquinpereyra98@users.noreply.github.com>
Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com>
This commit is contained in:
WBHarry 2025-08-11 02:02:06 +02:00 committed by GitHub
parent 300719c116
commit 4ffa690aec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
90 changed files with 918 additions and 659 deletions

1
.gitignore vendored
View file

@ -2,5 +2,6 @@
node_modules
/packs
Build
build
foundry
styles/daggerheart.css

View file

@ -14,7 +14,7 @@ This is the community repo for the Foundry VTT system _Foundryborne_ Daggerheart
## User Install
1. **recommended** Searching for _Daggerheart_ or _Foundryborne_ in the System Instalaltion dialgoe of the FoundryVTT admin settings.
1. **Recommended** Searching for _Daggerheart_ or _Foundryborne_ in the System Installation dialogue of the FoundryVTT admin settings.
2. Pasting `https://raw.githubusercontent.com/Foundryborne/daggerheart/refs/heads/main/system.json` into the Install System dialog on the Setup menu of the application.
3. Downloading one of the .zip archives from the Releases page and extracting it into your foundry Data folder, under Data/systems/daggerheart.

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View file

@ -272,7 +272,8 @@
"combatStarted": "Active",
"giveSpotlight": "Give The Spotlight",
"requestingSpotlight": "Requesting The Spotlight",
"requestSpotlight": "Request The Spotlight"
"requestSpotlight": "Request The Spotlight",
"openCountdowns": "Countdowns"
},
"ContextMenu": {
"disableEffect": "Disable Effect",
@ -823,8 +824,8 @@
"name": "Restrained",
"description": "When an effect makes a creature Restrained, it means they cannot move until this condition is cleared.\nThey can still take actions from their current position."
},
"unconcious": {
"name": "Unconcious",
"unconscious": {
"name": "Unconscious",
"description": "Your character cant move or act while unconscious, they cant be targeted by an attack."
},
"vulnerable": {
@ -1362,17 +1363,17 @@
},
"paired": {
"name": "Paired",
"description": "Add your character's Tier + 1 to primary weapon damage against targets within Melee range",
"description": "Add this Secondary Weapon's tier + 1 to your primary weapon damage against targets within Melee range",
"actions": {
"paired": {
"name": "Paired",
"description": "Add your character's Tier + 1 to primary weapon damage against targets within Melee range"
"description": "Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range"
}
},
"effects": {
"paired": {
"name": "Paired",
"description": "Add your character's Tier + 1 to primary weapon damage against targets within Melee range"
"description": "Add this Secondary Weapon's tier + 1 to your primary weapon against targets within Melee range"
}
}
},
@ -1763,6 +1764,7 @@
"weapon": "Range Increase: Weapon"
},
"RefreshType": {
"scene": "Scene",
"session": "Session",
"shortrest": "Short Rest",
"longrest": "Long Rest"
@ -1898,6 +1900,7 @@
"difficulty": "Difficulty",
"downtime": "Downtime",
"dropActorsHere": "Drop Actors here",
"dropFeaturesHere": "Drop Features here",
"duality": "Duality",
"dualityRoll": "Duality Roll",
"enabled": "Enabled",
@ -2365,7 +2368,8 @@
"compendiumBrowser": "Compendium Browser",
"rulesOn": "Rules On",
"rulesOff": "Rules Off",
"remainingUses": "Uses refresh on {type}"
"remainingUses": "Uses refresh on {type}",
"rightClickExtand": "Right-Click to extand"
}
}
}

View file

@ -359,6 +359,11 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl
context.community = { ...this.setup.community, compendium: 'communities' };
context.class = { ...this.setup.class, compendium: 'classes' };
context.subclass = { ...this.setup.subclass, compendium: 'subclasses' };
const allDomainData = CONFIG.DH.DOMAIN.allDomains();
context.classDomains = context.class.uuid
? context.class.system.domains.map(key => game.i18n.localize(allDomainData[key].label))
: [];
context.domainCards = Object.keys(this.setup.domainCards).reduce((acc, x) => {
acc[x] = { ...this.setup.domainCards[x], compendium: 'domains' };
return acc;
@ -378,7 +383,7 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl
uuid: suggestions.armor?.uuid,
taken: suggestions.armor?.uuid === this.equipment.armor?.uuid
},
compendium: 'armors'
compendium: 'armor'
};
context.primaryWeapon = {
...this.equipment.primaryWeapon,
@ -387,7 +392,7 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl
uuid: suggestions.primaryWeapon?.uuid,
taken: suggestions.primaryWeapon?.uuid === this.equipment.primaryWeapon?.uuid
},
compendium: 'weapons'
compendium: 'weapon'
};
context.secondaryWeapon = {
...this.equipment.secondaryWeapon,
@ -397,7 +402,7 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl
taken: suggestions.secondaryWeapon?.uuid === this.equipment.secondaryWeapon?.uuid
},
disabled: this.equipment.primaryWeapon?.system?.burden === burden.twoHanded.value,
compendium: 'weapons'
compendium: 'weapon'
};
context.inventory = {
take: suggestions.inventory.take,
@ -495,11 +500,12 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl
}
static async viewCompendium(event, target) {
const type = target.dataset.compendium ?? target.dataset.type;
const type = target.dataset.compendium ?? target.dataset.type,
equipment = ['armor', 'weapon'];
const presets = {
compendium: 'daggerheart',
folder: type,
folder: equipment.includes(type) ? "equipments" : type,
render: {
noFolder: true
}
@ -511,6 +517,12 @@ export default class DhCharacterCreation extends HandlebarsApplicationMixin(Appl
'system.domain': { key: 'system.domain', value: this.setup.class?.system.domains ?? null }
};
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 }));
}

View file

@ -51,7 +51,7 @@ export default class DhCharacterLevelUp extends LevelUpBase {
.filter(exp => exp.data.length > 0)
.flatMap(exp =>
exp.data.map(data => {
const experience = Object.keys(this.actor.system.experiences).find(x => x === data);
const experience = Object.keys(this.actor.system.experiences)[data];
return this.actor.system.experiences[experience].name;
})
);

View file

@ -39,7 +39,7 @@ export default class DhCompanionLevelUp extends BaseLevelUp {
.filter(exp => exp.data.length > 0)
.flatMap(exp =>
exp.data.map(data => {
const experience = Object.keys(this.actor.system.experiences).find(x => x === data);
const experience = Object.keys(this.actor.system.experiences)[data];
return this.actor.system.experiences[experience].name;
})
);

View file

@ -98,11 +98,17 @@ export default class DHAdversarySettings extends DHBaseActorSettings {
async _onDrop(event) {
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event);
if (data.fromInternal) return;
const item = await fromUuid(data.uuid);
if (item.type === 'feature') {
await this.actor.createEmbeddedDocuments('Item', [item]);
if (item?.type === 'feature') {
if (data.fromInternal && item.parent?.uuid === this.actor.uuid) {
return;
}
const itemData = item.toObject();
delete itemData._id;
await this.actor.createEmbeddedDocuments('Item', [itemData]);
}
}
}

View file

@ -129,6 +129,7 @@ export default function DHApplicationMixin(Base) {
const docs = [];
for (const docData of this.relatedDocs) {
if (!docData) continue;
const doc = await foundry.utils.fromUuid(docData.uuid);
docs.push(doc);
}
@ -419,7 +420,7 @@ export default function DHApplicationMixin(Base) {
: this.document.system.actions?.get(actionId);
if (!doc) return;
const description = doc.system?.description ?? doc.description;
const description = game.i18n.localize(doc.system?.description ?? doc.description);
const isAction = !!actionId;
descriptionElement.innerHTML = await foundry.applications.ux.TextEditor.implementation.enrichHTML(
description,

View file

@ -181,7 +181,13 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) {
static async #deleteFeature(_, element) {
const target = element.closest('[data-item-uuid]');
const feature = await getDocFromElement(target);
if (!feature) return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.featureIsMissing'));
if (!feature) {
await this.document.update({
'system.features': this.document.system.features
.filter(x => x.item)
.map(x => ({ ...x, item: x.item.uuid }))
});
} else
await this.document.update({
'system.features': this.document.system.features
.filter(x => target.dataset.type !== x.type || x.item.uuid !== feature.uuid)
@ -259,21 +265,45 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) {
if (data.fromInternal) return;
const target = event.target.closest('fieldset.drop-section');
const item = await fromUuid(data.uuid);
let item = await fromUuid(data.uuid);
if (item?.type === 'feature') {
const cls = foundry.documents.Item.implementation;
if (this.document.parent?.type === 'character') {
const itemData = item.toObject();
item = await cls.create(
{
...itemData,
system: {
...itemData.system,
originItemType: this.document.type,
originId: this.document.id,
identifier: this.document.system.isMulticlass ? 'multiclass' : null
}
},
{ parent: this.document.parent }
);
}
if (target.dataset.type) {
await this.document.update({
await this.document.update(
{
'system.features': [...this.document.system.features, { type: target.dataset.type, item }].map(
x => ({
...x,
item: x.item?.uuid
})
)
});
},
{ parent: this.document.parent?.type === 'character' ? this.document.parent : undefined }
);
} else {
await this.document.update({
await this.document.update(
{
'system.features': [...this.document.system.features, item].map(x => x.uuid)
});
},
{ parent: this.document.parent?.type === 'character' ? this.document.parent : undefined }
);
}
}
}

View file

@ -121,6 +121,16 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) {
}
}
_attachPartListeners(partId, htmlElement, options) {
super._attachPartListeners(partId, htmlElement, options);
htmlElement
.querySelectorAll('[data-action="selectFolder"]')
.forEach(element => element.addEventListener("contextmenu", (event) => {
event.target.classList.toggle('expanded');
}))
}
/* -------------------------------------------- */
/* Rendering */
/* -------------------------------------------- */
@ -179,9 +189,20 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) {
}
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 });
}
_replaceHTML(result, content, options) {
if(!options.isFirstRender) delete result.sidebar;
super._replaceHTML(result, content, options);
}
static expandContent(_, target) {
const parent = target.parentElement;
parent.classList.toggle('expanded');

View file

@ -183,11 +183,11 @@ export const conditions = {
icon: 'icons/magic/control/debuff-chains-shackle-movement-red.webp',
description: 'DAGGERHEART.CONFIG.Condition.restrained.description'
},
unconcious: {
id: 'unconcious',
name: 'DAGGERHEART.CONFIG.Condition.unconcious.name',
unconscious: {
id: 'unconscious',
name: 'DAGGERHEART.CONFIG.Condition.unconscious.name',
icon: 'icons/magic/control/sleep-bubble-purple.webp',
description: 'DAGGERHEART.CONFIG.Condition.unconcious.description'
description: 'DAGGERHEART.CONFIG.Condition.unconscious.description'
},
dead: {
id: 'dead',
@ -533,6 +533,10 @@ export const getDiceSoNicePresets = async (hopeFaces, fearFaces, advantageFaces
};
export const refreshTypes = {
scene: {
id: 'session',
label: 'DAGGERHEART.GENERAL.RefreshType.scene'
},
session: {
id: 'session',
label: 'DAGGERHEART.GENERAL.RefreshType.session'

View file

@ -325,7 +325,7 @@ export const compendiumConfig = {
"equipments": {
id: "equipments",
keys: ["armors", "weapons", "consumables", "loot"],
label: "Equipments",
label: "Equipment",
type: ["armor", "weapon", "consumable", "loot"],
listType: "items"
},

View file

@ -780,7 +780,15 @@ export const weaponFeatures = {
mode: 2,
value: '1'
}
]
],
system: {
rangeDependence: {
enabled: true,
range: 'melee',
target: 'hostile',
type: 'withinRange'
}
}
}
]
},
@ -1079,7 +1087,15 @@ export const weaponFeatures = {
mode: 2,
value: 'ITEM.@system.tier + 1'
}
]
],
system: {
rangeDependence: {
enabled: true,
range: 'melee',
target: 'hostile',
type: 'withinRange'
}
}
}
]
},
@ -1208,7 +1224,7 @@ export const weaponFeatures = {
img: 'icons/skills/melee/strike-sword-slashing-red.webp',
changes: [
{
key: 'system.bonuses.roll.primaryWeapon.attack',
key: 'system.bonuses.roll.primaryWeapon.bonus',
mode: 2,
value: 1
}
@ -1357,7 +1373,7 @@ export const weaponFeatures = {
actionType: 'action',
chatDisplay: true,
name: 'DAGGERHEART.CONFIG.WeaponFeature.timebending.actions.bendTime.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.actions.bendTime.description',
description: 'DAGGERHEART.CONFIG.WeaponFeature.timebending.actions.bendTime.description',
img: 'icons/magic/time/clock-spinning-gold-pink.webp'
}
]

View file

@ -208,7 +208,14 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
}
async consume(config, successCost = false) {
const usefulResources = foundry.utils.deepClone(this.actor.system.resources);
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
}
};
for (var cost of config.costs) {
if (cost.keyIsID) {

View file

@ -6,7 +6,8 @@ export default class DHDamageAction extends DHBaseAction {
getFormulaValue(part, data) {
let formulaValue = part.value;
if (data.hasRoll && part.resultBased && data.system.roll.result.duality === -1) return part.valueAlt;
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) {
@ -35,7 +36,7 @@ export default class DHDamageAction extends DHBaseAction {
const systemData = data.system ?? data;
let formulas = this.damage.parts.map(p => ({
formula: this.getFormulaValue(p, data).getFormula(this.actor),
formula: this.getFormulaValue(p, systemData).getFormula(this.actor),
damageTypes: p.applyTo === 'hitPoints' && !p.type.size ? new Set(['physical']) : p.type,
applyTo: p.applyTo
}));

View file

@ -32,7 +32,7 @@ export default class BeastformEffect extends BaseEffect {
if (this.parent.parent?.type === 'character') {
this.parent.parent.system.primaryWeapon?.update?.({ 'system.equipped': false });
this.parent.parent.system.secondayWeapon?.update?.({ 'system.equipped': false });
this.parent.parent.system.secondaryWeapon?.update?.({ 'system.equipped': false });
}
}

View file

@ -351,6 +351,17 @@ export default class DhCharacter extends BaseDataActor {
return [...classDomains, ...multiclassDomains];
}
get domainData() {
const allDomainData = CONFIG.DH.DOMAIN.allDomains();
return this.domains.map(key => {
const domain = allDomainData[key];
return {
...domain,
label: game.i18n.localize(domain.label)
};
});
}
get domainCards() {
const domainCards = this.parent.items.filter(x => x.type === 'domainCard');
const loadout = domainCards.filter(x => !x.system.inVault);

View file

@ -60,7 +60,7 @@ export default class DHArmor extends AttachableItem {
const allowed = await super._preUpdate(changes, options, user);
if (allowed === false) return false;
if (changes.system.armorFeatures) {
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));

View file

@ -134,6 +134,7 @@ export default class DHBeastform extends BaseDataItem {
this.parent.effects.filter(x => x.type !== 'beastform').map(x => x.toObject())
);
const tokenImages = await this.parent.parent.getTokenImages();
const beastformEffect = this.parent.effects.find(x => x.type === 'beastform');
await beastformEffect.updateSource({
changes: [
@ -148,7 +149,7 @@ export default class DHBeastform extends BaseDataItem {
],
system: {
characterTokenData: {
tokenImg: this.parent.parent.prototypeToken.texture.src,
tokenImg: tokenImages[0],
tokenRingImg: this.parent.parent.prototypeToken.ring.subject.texture,
tokenSize: {
height: this.parent.parent.prototypeToken.height,

View file

@ -33,6 +33,11 @@ export default class DHDomainCard extends BaseDataItem {
};
}
get domainLabel() {
const allDomainData = CONFIG.DH.DOMAIN.allDomains();
return game.i18n.localize(allDomainData[this.domain].label);
}
/* -------------------------------------------- */
/**@override */
@ -71,7 +76,7 @@ export default class DHDomainCard extends BaseDataItem {
_getTags() {
const tags = [
game.i18n.localize(`DAGGERHEART.CONFIG.DomainCardTypes.${this.type}`),
game.i18n.localize(`DAGGERHEART.GENERAL.Domain.${this.domain}.label`),
this.domainLabel,
`${game.i18n.localize('DAGGERHEART.ITEMS.DomainCard.recallCost')}: ${this.recallCost}`
];
@ -85,7 +90,7 @@ export default class DHDomainCard extends BaseDataItem {
_getLabels() {
const labels = [
game.i18n.localize(`DAGGERHEART.CONFIG.DomainCardTypes.${this.type}`),
game.i18n.localize(`DAGGERHEART.GENERAL.Domain.${this.domain}.label`),
this.domainLabel,
{
value: `${this.recallCost}`, //converts the number to a string
icons: ['fa-bolt']

View file

@ -21,7 +21,7 @@ export default class DHSubclass extends BaseDataItem {
integer: false,
nullable: true,
initial: null,
label: "DAGGERHEART.ITEMS.Subclass.spellcastingTrait"
label: 'DAGGERHEART.ITEMS.Subclass.spellcastingTrait'
}),
features: new ItemLinkFields(),
featureState: new fields.NumberField({ required: true, initial: 1, min: 1 }),
@ -50,7 +50,8 @@ export default class DHSubclass extends BaseDataItem {
async _preCreate(data, options, user) {
if (this.actor?.type === 'character') {
const dataUuid = data.uuid ?? data._stats?.compendiumSource ?? `Item.${data._id}`;
const dataUuid =
data.uuid ?? (data.folder ? `Compendium.daggerheart.subclasses.Item.${data._id}` : `Item.${data._id}`);
if (this.actor.system.class.subclass) {
if (this.actor.system.multiclass.subclass) {
ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.subclassesAlreadyPresent'));

View file

@ -159,13 +159,15 @@ export default class DamageRoll extends DHRoll {
if (config.data?.parent) {
if (config.data.parent.appliedEffects) {
// Bardic Rally
mods.rally = {
label: 'DAGGERHEART.CLASS.Feature.rallyDice',
values: config.data?.parent?.appliedEffects.reduce((a, c) => {
const rallyChoices = config.data?.parent?.appliedEffects.reduce((a, c) => {
const change = c.changes.find(ch => ch.key === 'system.bonuses.rally');
if (change) a.push({ value: c.id, label: change.value });
return a;
}, []),
}, [])
if(rallyChoices.length) {
mods.rally = {
label: 'DAGGERHEART.CLASS.Feature.rallyDice',
values: rallyChoices,
value: null,
beforeCrit: true,
callback: part => {
@ -179,6 +181,7 @@ export default class DamageRoll extends DHRoll {
}
};
}
}
const item = config.data.parent.items?.get(config.source.item);
if (item) {

View file

@ -238,7 +238,7 @@ export const registerRollDiceHooks = () => {
if (updates.length) {
const target = actor.system.partner ?? actor;
if (!['dead', 'unconcious'].some(x => actor.statuses.has(x))) {
if (!['dead', 'unconscious'].some(x => actor.statuses.has(x))) {
setTimeout(() => {
target.modifyResource(updates);
}, 50);

View file

@ -19,7 +19,7 @@ export default class DualityRoll extends D20Roll {
get title() {
return game.i18n.localize(
"DAGGERHEART.GENERAL.dualityRoll"
`DAGGERHEART.GENERAL.${this.options?.roll?.type === CONFIG.DH.ITEM.actionTypes.reaction.id ? 'reactionRoll' : 'dualityRoll'}`
);
}
@ -125,10 +125,7 @@ export default class DualityRoll extends D20Roll {
}
createBaseDice() {
if (
this.dice[0] instanceof foundry.dice.terms.Die &&
this.dice[1] instanceof foundry.dice.terms.Die
) {
if (this.dice[0] instanceof foundry.dice.terms.Die && this.dice[1] instanceof foundry.dice.terms.Die) {
this.terms = [this.terms[0], this.terms[1], this.terms[2]];
return;
}

View file

@ -84,6 +84,8 @@ export default class DhpActor extends Actor {
await this.update({ 'system.levelData.level.changed': Math.min(newLevel, maxLevel) });
} else {
const levelupAuto = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).levelupAuto;
const usedLevel = Math.max(newLevel, 1);
if (newLevel < 1) {
ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.tooLowLevel'));
@ -95,6 +97,7 @@ export default class DhpActor extends Actor {
return acc;
}, {});
if (levelupAuto) {
const features = [];
const domainCards = [];
const experiences = [];
@ -105,7 +108,9 @@ export default class DhpActor extends Actor {
.forEach(levelKey => {
const level = this.system.levelData.levelups[levelKey];
const achievementCards = level.achievements.domainCards.map(x => x.itemUuid);
const advancementCards = level.selections.filter(x => x.type === 'domainCard').map(x => x.itemUuid);
const advancementCards = level.selections
.filter(x => x.type === 'domainCard')
.map(x => x.itemUuid);
domainCards.push(...achievementCards, ...advancementCards);
experiences.push(...Object.keys(level.achievements.experiences));
features.push(...level.selections.flatMap(x => x.features));
@ -151,11 +156,18 @@ export default class DhpActor extends Actor {
}
if (multiclass) {
const multiclassSubclass = this.items.find(x => x.type === 'subclass' && x.system.isMulticlass);
const multiclassItem = this.items.find(x => x.uuid === multiclass.itemUuid);
const multiclassFeatures = this.items.filter(
x => x.system.originItemType === 'class' && x.system.identifier === 'multiclass'
);
const subclassFeatures = this.items.filter(
x => x.system.originItemType === 'subclass' && x.system.identifier === 'multiclass'
);
multiclassSubclass.delete();
multiclassItem.delete();
this.deleteEmbeddedDocuments(
'Item',
[multiclassItem, ...multiclassFeatures, ...subclassFeatures].map(x => x.id)
);
this.update({
'system.multiclass': {
@ -169,6 +181,7 @@ export default class DhpActor extends Actor {
const itemCard = this.items.find(x => x.uuid === domainCard);
itemCard.delete();
}
}
await this.update({
system: {
@ -315,6 +328,7 @@ export default class DhpActor extends Actor {
...multiclassData,
system: {
...multiclassData.system,
features: multiclassData.system.features.filter(x => x.type !== 'hope'),
domains: [multiclass.secondaryData.domain],
isMulticlass: true
}

View file

@ -69,6 +69,11 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage {
break;
}
}
if(!game.user.isGM && !this.isAuthor && !this.speakerActor?.isOwner) {
const buttons = html.querySelectorAll(".ability-card-footer > .ability-use-button");
buttons.forEach(b => b.remove());
}
}
addChatListeners(html) {

View file

@ -60,7 +60,7 @@ export default class RegisterHandlebarsHelpers {
static rollParsed(value, actor, item, numerical) {
const isNumerical = typeof numerical === 'boolean' ? numerical : false;
const result = itemAbleRollParse(value, actor.getRollData(), item);
const result = itemAbleRollParse(value, actor?.getRollData() ?? {}, item);
return isNumerical ? (!result ? 0 : Number(result)) : result;
}

View file

@ -85,7 +85,12 @@ export const chunkify = (array, chunkSize, mappingFunc) => {
export const tagifyElement = (element, baseOptions, onChange, tagifyOptions = {}) => {
const { maxTags } = tagifyOptions;
const options = typeof baseOptions === 'object' ? Object.values(baseOptions) : baseOptions;
const options = Array.isArray(baseOptions)
? baseOptions
: Object.keys(baseOptions).map(optionKey => ({
...baseOptions[optionKey],
id: optionKey
}));
const tagifyElement = new Tagify(element, {
tagTextProp: 'name',

View file

@ -1,5 +1,5 @@
{
"type": "Item",
"type": "Actor",
"folder": null,
"name": "Tier 1",
"color": null,
@ -14,10 +14,7 @@
"exportSource": null,
"coreVersion": "13.346",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1752684226915,
"modifiedTime": 1752684226915,
"lastModifiedBy": "k0gmQFlvrPvlTtbh"
"systemVersion": "0.0.1"
},
"_key": "!folders!sxvlEwi25uAoB2C5"
}

View file

@ -1,5 +1,5 @@
{
"type": "Item",
"type": "Actor",
"folder": null,
"name": "Tier 2",
"color": null,
@ -14,10 +14,7 @@
"exportSource": null,
"coreVersion": "13.346",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1752684230275,
"modifiedTime": 1752684230275,
"lastModifiedBy": "k0gmQFlvrPvlTtbh"
"systemVersion": "0.0.1"
},
"_key": "!folders!OgzrmfH1ZbpljX7k"
}

View file

@ -1,5 +1,5 @@
{
"type": "Item",
"type": "Actor",
"folder": null,
"name": "Tier 3",
"color": null,
@ -14,10 +14,7 @@
"exportSource": null,
"coreVersion": "13.346",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1752684233122,
"modifiedTime": 1752684233122,
"lastModifiedBy": "k0gmQFlvrPvlTtbh"
"systemVersion": "0.0.1"
},
"_key": "!folders!wTI7nZkPhKxl7Wwq"
}

View file

@ -1,5 +1,5 @@
{
"type": "Item",
"type": "Actor",
"folder": null,
"name": "Tier 4",
"color": null,
@ -14,10 +14,7 @@
"exportSource": null,
"coreVersion": "13.346",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1752684235596,
"modifiedTime": 1752684235596,
"lastModifiedBy": "k0gmQFlvrPvlTtbh"
"systemVersion": "0.0.1"
},
"_key": "!folders!7XHlANCPz18yvl5L"
}

View file

@ -9,7 +9,7 @@
"resource": {
"type": "diceValue",
"value": 0,
"max": "2",
"max": "@system.traits.strength.value",
"icon": "",
"recovery": "session"
},
@ -28,12 +28,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1754352649696,
"modifiedTime": 1754352712334,
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
"modifiedTime": 1754845640002,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_key": "!items!Xd7RYhfTxIj9aWI2"
}

View file

@ -59,13 +59,13 @@
{
"key": "system.bonuses.damage.physical.dice",
"mode": 2,
"value": "@system.tierd6",
"value": "@tierd6",
"priority": null
},
{
"key": "system.bonuses.damage.magical.dice",
"mode": 2,
"value": "@system.tierd6",
"value": "@tierd6",
"priority": null
}
],

View file

@ -63,7 +63,7 @@
"attached": [],
"tier": 4,
"equipped": false,
"baseScore": 0,
"baseScore": 6,
"armorFeatures": [
{
"value": "burning",
@ -77,8 +77,8 @@
"value": 0
},
"baseThresholds": {
"major": 0,
"severe": 0
"major": 13,
"severe": 36
}
},
"effects": [],
@ -92,12 +92,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753809470138,
"modifiedTime": 1753809633344,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754853048367,
"lastModifiedBy": "7zAk0CoP90J7ebn0"
},
"_key": "!items!bcQUh4QG3qFX0Vx6"
}

View file

@ -16,7 +16,7 @@
{
"value": "reliable",
"effectIds": [
"HrbJ0bI7lMAYUCux"
"nRNnU57i7RMJoklC"
],
"actionIds": []
}
@ -109,14 +109,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "HrbJ0bI7lMAYUCux",
"_id": "nRNnU57i7RMJoklC",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753835307838,
"modifiedTime": 1753835307838,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754815224718,
"modifiedTime": 1754815224718,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!ijodu5yNBoMxpkHV.HrbJ0bI7lMAYUCux"
"_key": "!items.effects!ijodu5yNBoMxpkHV.nRNnU57i7RMJoklC"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753835285790,
"modifiedTime": 1753835317605,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754815224721,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!ijodu5yNBoMxpkHV"
}

View file

@ -2,7 +2,7 @@
"folder": "TyqMEXhSkjOUq5SA",
"name": "Advanced Arcane-Frame Wheelchair",
"type": "weapon",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/ArcaneWheelchair.webp",
"system": {
"description": "",
"actions": {},
@ -15,7 +15,7 @@
{
"value": "reliable",
"effectIds": [
"G561ymlNGmaFAYFB"
"VnV5X9MBMabhz47b"
],
"actionIds": []
}
@ -108,14 +108,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "G561ymlNGmaFAYFB",
"_id": "VnV5X9MBMabhz47b",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -131,12 +138,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": null
"systemVersion": "1.0.0",
"createdTime": 1754815300372,
"modifiedTime": 1754815300372,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!la3sAWgnvadc4NvP.G561ymlNGmaFAYFB"
"_key": "!items.effects!la3sAWgnvadc4NvP.VnV5X9MBMabhz47b"
}
],
"ownership": {
@ -148,12 +157,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753836715885,
"modifiedTime": 1753836789197,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754845968271,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_id": "la3sAWgnvadc4NvP",
"sort": 0,

View file

@ -16,7 +16,7 @@
{
"value": "reliable",
"effectIds": [
"fRPKHzbKRz4yTHAF"
"wu2AmDvgeWI3hmRQ"
],
"actionIds": []
}
@ -109,14 +109,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "fRPKHzbKRz4yTHAF",
"_id": "wu2AmDvgeWI3hmRQ",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753831629563,
"modifiedTime": 1753831629563,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814950116,
"modifiedTime": 1754814950116,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!WtQAGz0TUgz8Xg70.fRPKHzbKRz4yTHAF"
"_key": "!items.effects!WtQAGz0TUgz8Xg70.wu2AmDvgeWI3hmRQ"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753831599435,
"modifiedTime": 1753831629573,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814950120,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!WtQAGz0TUgz8Xg70"
}

View file

@ -2,7 +2,7 @@
"folder": "TyqMEXhSkjOUq5SA",
"name": "Advanced Heavy-Frame Wheelchair",
"type": "weapon",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/HeavyWheelchair.webp",
"system": {
"description": "",
"actions": {},
@ -148,12 +148,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753836675558,
"modifiedTime": 1753836795905,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754845996869,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_id": "eT2Qwb0RdrLX2hH1",
"sort": 0,

View file

@ -2,7 +2,7 @@
"folder": "TyqMEXhSkjOUq5SA",
"name": "Advanced Light-Frame Wheelchair",
"type": "weapon",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/LightWheelchair.webp",
"system": {
"description": "",
"actions": {
@ -141,12 +141,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753836614032,
"modifiedTime": 1753836802197,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754846020904,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_id": "BuMfupnCzHbziQ8o",
"sort": 0,

View file

@ -16,7 +16,7 @@
{
"value": "paired",
"effectIds": [
"gJ7Ey9CfPZqYgxEO"
"MYgB3v3oQ5lIr3VE"
],
"actionIds": []
}
@ -114,9 +114,16 @@
"value": "ITEM.@system.tier + 1"
}
],
"_id": "gJ7Ey9CfPZqYgxEO",
"system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
}
},
"_id": "MYgB3v3oQ5lIr3VE",
"type": "base",
"system": {},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753794991410,
"modifiedTime": 1753794991410,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814673988,
"modifiedTime": 1754814673988,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!0thN0BpN05KT8Avx.gJ7Ey9CfPZqYgxEO"
"_key": "!items.effects!0thN0BpN05KT8Avx.MYgB3v3oQ5lIr3VE"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753794938643,
"modifiedTime": 1753794991413,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814673991,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!0thN0BpN05KT8Avx"
}

View file

@ -3,7 +3,7 @@
"name": "Arcane-Frame Wheelchair",
"type": "weapon",
"_id": "XRChepscgr75Uug7",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/ArcaneWheelchair.webp",
"system": {
"description": "",
"actions": {},
@ -16,7 +16,7 @@
{
"value": "reliable",
"effectIds": [
"G561ymlNGmaFAYFB"
"dXHsy9qr5FWZqsVq"
],
"actionIds": []
}
@ -109,14 +109,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "G561ymlNGmaFAYFB",
"_id": "dXHsy9qr5FWZqsVq",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753836707582,
"modifiedTime": 1753836707582,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754815278217,
"modifiedTime": 1754815278217,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!XRChepscgr75Uug7.G561ymlNGmaFAYFB"
"_key": "!items.effects!XRChepscgr75Uug7.dXHsy9qr5FWZqsVq"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753836689082,
"modifiedTime": 1753836707594,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754845945327,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_key": "!items!XRChepscgr75Uug7"
}

View file

@ -16,7 +16,7 @@
{
"value": "reliable",
"effectIds": [
"GNwIa1EAaa0T0RZi"
"mqcpj2cFAprf2AmY"
],
"actionIds": []
}
@ -109,14 +109,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "GNwIa1EAaa0T0RZi",
"_id": "mqcpj2cFAprf2AmY",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753827762112,
"modifiedTime": 1753827762112,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814769818,
"modifiedTime": 1754814769818,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!1cwWNt4sqlgA8gCT.GNwIa1EAaa0T0RZi"
"_key": "!items.effects!1cwWNt4sqlgA8gCT.mqcpj2cFAprf2AmY"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753827734892,
"modifiedTime": 1753827762118,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814769821,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!1cwWNt4sqlgA8gCT"
}

View file

@ -3,7 +3,7 @@
"name": "Heavy-Frame Wheelchair",
"type": "weapon",
"_id": "XjPQjhRCH08VUIbr",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/HeavyWheelchair.webp",
"system": {
"description": "",
"actions": {},
@ -152,12 +152,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753836652314,
"modifiedTime": 1753836667128,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754845988869,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_key": "!items!XjPQjhRCH08VUIbr"
}

View file

@ -2,7 +2,7 @@
"folder": "fFuMdvpD1F3UshmM",
"name": "Improved Arcane-Frame Wheelchair",
"type": "weapon",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/ArcaneWheelchair.webp",
"system": {
"description": "",
"actions": {},
@ -15,7 +15,7 @@
{
"value": "reliable",
"effectIds": [
"G561ymlNGmaFAYFB"
"1f6fFhOLwZrmA6e5"
],
"actionIds": []
}
@ -108,14 +108,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "G561ymlNGmaFAYFB",
"_id": "1f6fFhOLwZrmA6e5",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -131,12 +138,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": null
"systemVersion": "1.0.0",
"createdTime": 1754815290648,
"modifiedTime": 1754815290648,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!N9P695V5KKlJbAY5.G561ymlNGmaFAYFB"
"_key": "!items.effects!N9P695V5KKlJbAY5.1f6fFhOLwZrmA6e5"
}
],
"ownership": {
@ -148,12 +157,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753836714712,
"modifiedTime": 1753836748404,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754845960700,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_id": "N9P695V5KKlJbAY5",
"sort": 0,

View file

@ -16,7 +16,7 @@
{
"value": "reliable",
"effectIds": [
"xU0DD5ydbwmXMKtF"
"228lcQpohdJ3Bbga"
],
"actionIds": []
}
@ -109,14 +109,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "xU0DD5ydbwmXMKtF",
"_id": "228lcQpohdJ3Bbga",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753829126416,
"modifiedTime": 1753829126416,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814935810,
"modifiedTime": 1754814935810,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!OcKeLJxvmdT81VBc.xU0DD5ydbwmXMKtF"
"_key": "!items.effects!OcKeLJxvmdT81VBc.228lcQpohdJ3Bbga"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753829098118,
"modifiedTime": 1753829367508,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814935815,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!OcKeLJxvmdT81VBc"
}

View file

@ -2,7 +2,7 @@
"folder": "fFuMdvpD1F3UshmM",
"name": "Improved Heavy-Frame Wheelchair",
"type": "weapon",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/HeavyWheelchair.webp",
"system": {
"description": "",
"actions": {},
@ -148,12 +148,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753836674233,
"modifiedTime": 1753836769685,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754845992757,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_id": "L5KeCtrs768PmYWW",
"sort": 0,

View file

@ -2,7 +2,7 @@
"folder": "fFuMdvpD1F3UshmM",
"name": "Improved Light-Frame Wheelchair",
"type": "weapon",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/LightWheelchair.webp",
"system": {
"description": "",
"actions": {
@ -141,12 +141,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753836612291,
"modifiedTime": 1753836778961,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754846018260,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_id": "ZJsetdHKV77ygtCE",
"sort": 0,

View file

@ -16,7 +16,7 @@
{
"value": "paired",
"effectIds": [
"cSmiIOXeuw0xpjel"
"9iHHwd9BxkBsV9lY"
],
"actionIds": []
}
@ -114,9 +114,16 @@
"value": "ITEM.@system.tier + 1"
}
],
"_id": "cSmiIOXeuw0xpjel",
"system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
}
},
"_id": "9iHHwd9BxkBsV9lY",
"type": "base",
"system": {},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753794021004,
"modifiedTime": 1753794021004,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814695260,
"modifiedTime": 1754814695260,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!rSyBNRwemBVuTo3H.cSmiIOXeuw0xpjel"
"_key": "!items.effects!rSyBNRwemBVuTo3H.9iHHwd9BxkBsV9lY"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753744566951,
"modifiedTime": 1753794021010,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814695265,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!rSyBNRwemBVuTo3H"
}

View file

@ -16,7 +16,7 @@
{
"value": "paired",
"effectIds": [
"rOjtLkrnI9EZHJm8"
"JHIUGyZH5q83ODvd"
],
"actionIds": []
}
@ -114,9 +114,16 @@
"value": "ITEM.@system.tier + 1"
}
],
"_id": "rOjtLkrnI9EZHJm8",
"system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
}
},
"_id": "JHIUGyZH5q83ODvd",
"type": "base",
"system": {},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753794340876,
"modifiedTime": 1753794340876,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814703717,
"modifiedTime": 1754814703717,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!nMuF8ZDZ2aXZVTg6.rOjtLkrnI9EZHJm8"
"_key": "!items.effects!nMuF8ZDZ2aXZVTg6.JHIUGyZH5q83ODvd"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753794291887,
"modifiedTime": 1753794340879,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814703719,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!nMuF8ZDZ2aXZVTg6"
}

View file

@ -16,7 +16,7 @@
{
"value": "reliable",
"effectIds": [
"FlmOrbhYbieIAVJL"
"LvxPAfrKuRfgubGV"
],
"actionIds": []
}
@ -109,14 +109,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "FlmOrbhYbieIAVJL",
"_id": "LvxPAfrKuRfgubGV",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753831441325,
"modifiedTime": 1753831441325,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754815023490,
"modifiedTime": 1754815023490,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!q382JqMkqLaaFLIr.FlmOrbhYbieIAVJL"
"_key": "!items.effects!q382JqMkqLaaFLIr.LvxPAfrKuRfgubGV"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753831418620,
"modifiedTime": 1753831441332,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754815023493,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!q382JqMkqLaaFLIr"
}

View file

@ -7,63 +7,22 @@
"system": {
"description": "",
"actions": {
"fRKcEeShWSLkoExh": {
"B0uT1D1WRidiHxyh": {
"type": "effect",
"actionType": "action",
"chatDisplay": true,
"name": "Double Up",
"description": "When you make an attack with your primary weapon, you can deal damage to another target within Melee range.",
"img": "icons/skills/melee/strike-slashes-orange.webp",
"_id": "fRKcEeShWSLkoExh",
"_id": "B0uT1D1WRidiHxyh",
"effects": [],
"systemPath": "actions",
"cost": [],
"uses": {
"value": null,
"max": null,
"recovery": null
},
"target": {
"type": "any",
"amount": null
}
},
"lVsEmJwjYgpYL9l4": {
"type": "effect",
"actionType": "action",
"chatDisplay": true,
"name": "Double Up",
"description": "When you make an attack with your primary weapon, you can deal damage to another target within Melee range.",
"img": "icons/skills/melee/strike-slashes-orange.webp",
"_id": "lVsEmJwjYgpYL9l4",
"effects": [],
"systemPath": "actions",
"cost": [],
"uses": {
"value": null,
"max": null,
"recovery": null
},
"target": {
"type": "any",
"amount": null
}
},
"2ndqofzTHsEUMxsm": {
"type": "effect",
"actionType": "action",
"chatDisplay": true,
"name": "Double Up",
"description": "When you make an attack with your primary weapon, you can deal damage to another target within Melee range.",
"img": "icons/skills/melee/strike-slashes-orange.webp",
"_id": "2ndqofzTHsEUMxsm",
"effects": [],
"systemPath": "actions",
"cost": [],
"uses": {
"value": null,
"max": null,
"recovery": null
"recovery": null,
"consumeOnSuccess": false
},
"target": {
"type": "any",
@ -81,7 +40,7 @@
"value": "doubledUp",
"effectIds": [],
"actionIds": [
"2ndqofzTHsEUMxsm"
"B0uT1D1WRidiHxyh"
]
}
],
@ -177,12 +136,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753797258168,
"modifiedTime": 1753798882899,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814600761,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!SFqganS8Du4aEKjQ"
}

View file

@ -2,7 +2,7 @@
"folder": "beilKE5ZPAihKg3O",
"name": "Legendary Arcane-Frame Wheelchair",
"type": "weapon",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/ArcaneWheelchair.webp",
"system": {
"description": "",
"actions": {},
@ -15,7 +15,7 @@
{
"value": "reliable",
"effectIds": [
"G561ymlNGmaFAYFB"
"TvsoAiqHCwgtYat1"
],
"actionIds": []
}
@ -108,14 +108,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "G561ymlNGmaFAYFB",
"_id": "TvsoAiqHCwgtYat1",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -131,12 +138,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"lastModifiedBy": null
"systemVersion": "1.0.0",
"createdTime": 1754815308723,
"modifiedTime": 1754815308723,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!gA2tiET9VHGhwMoO.G561ymlNGmaFAYFB"
"_key": "!items.effects!gA2tiET9VHGhwMoO.TvsoAiqHCwgtYat1"
}
],
"ownership": {
@ -148,12 +157,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753836717240,
"modifiedTime": 1753836812453,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754845972571,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_id": "gA2tiET9VHGhwMoO",
"sort": 0,

View file

@ -16,7 +16,7 @@
{
"value": "reliable",
"effectIds": [
"lmUzKw6J6RW3krRT"
"ujb6VAqjyXmfnnjy"
],
"actionIds": []
}
@ -109,14 +109,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "lmUzKw6J6RW3krRT",
"_id": "ujb6VAqjyXmfnnjy",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753834461846,
"modifiedTime": 1753834461846,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814961439,
"modifiedTime": 1754814961439,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!y3hfTPfZhMognyaJ.lmUzKw6J6RW3krRT"
"_key": "!items.effects!y3hfTPfZhMognyaJ.ujb6VAqjyXmfnnjy"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753834430378,
"modifiedTime": 1753834465538,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814961454,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!y3hfTPfZhMognyaJ"
}

View file

@ -2,7 +2,7 @@
"folder": "beilKE5ZPAihKg3O",
"name": "Legendary Heavy-Frame Wheelchair",
"type": "weapon",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/HeavyWheelchair.webp",
"system": {
"description": "",
"actions": {},
@ -148,12 +148,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753836676831,
"modifiedTime": 1753836820180,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754846000470,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_id": "S6nB0CNlzdU05o5U",
"sort": 0,

View file

@ -2,7 +2,7 @@
"folder": "beilKE5ZPAihKg3O",
"name": "Legendary Light-Frame Wheelchair",
"type": "weapon",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/LightWheelchair.webp",
"system": {
"description": "",
"actions": {
@ -141,12 +141,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753836615437,
"modifiedTime": 1753836826572,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754846023338,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_id": "Xt8tVSn5Fu6ly6LF",
"sort": 0,

View file

@ -16,7 +16,7 @@
{
"value": "paired",
"effectIds": [
"DgZQSBJx9JmoOngB"
"VFt61c2Apfbli2dG"
],
"actionIds": []
}
@ -114,9 +114,16 @@
"value": "ITEM.@system.tier + 1"
}
],
"_id": "DgZQSBJx9JmoOngB",
"system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
}
},
"_id": "VFt61c2Apfbli2dG",
"type": "base",
"system": {},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753796957432,
"modifiedTime": 1753796957432,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814544486,
"modifiedTime": 1754814544486,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!dEumq3BIZBk5xYTk.DgZQSBJx9JmoOngB"
"_key": "!items.effects!dEumq3BIZBk5xYTk.VFt61c2Apfbli2dG"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753796913551,
"modifiedTime": 1753796957439,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814544510,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!dEumq3BIZBk5xYTk"
}

View file

@ -16,7 +16,7 @@
{
"value": "paired",
"effectIds": [
"Wjl3MEwNdQPeY63u"
"rnVm0jSEtdWhKGCh"
],
"actionIds": []
}
@ -114,9 +114,16 @@
"value": "ITEM.@system.tier + 1"
}
],
"_id": "Wjl3MEwNdQPeY63u",
"system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
}
},
"_id": "rnVm0jSEtdWhKGCh",
"type": "base",
"system": {},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753797088930,
"modifiedTime": 1753797088930,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814562988,
"modifiedTime": 1754814562988,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!Px3Rh3kIvAqyISxJ.Wjl3MEwNdQPeY63u"
"_key": "!items.effects!Px3Rh3kIvAqyISxJ.rnVm0jSEtdWhKGCh"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753797057472,
"modifiedTime": 1753797088933,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814562995,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!Px3Rh3kIvAqyISxJ"
}

View file

@ -3,7 +3,7 @@
"name": "Light-Frame Wheelchair",
"type": "weapon",
"_id": "iaGnlUkShBgdeMo0",
"img": "icons/svg/item-bag.svg",
"img": "systems/daggerheart/assets/icons/documents/items/LightWheelchair.webp",
"system": {
"description": "",
"actions": {
@ -143,12 +143,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753836579296,
"modifiedTime": 1753836587147,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754846015528,
"lastModifiedBy": "H02dtt2xvVJvYESk"
},
"_key": "!items!iaGnlUkShBgdeMo0"
}

View file

@ -7,21 +7,22 @@
"system": {
"description": "",
"actions": {
"KGJJgz0SMdY0f0em": {
"dNN2KOfUxGzQ2yjY": {
"type": "effect",
"actionType": "action",
"chatDisplay": true,
"name": "Lock On",
"description": "On a successful attack, your next attack against the same target with your primary weapon automatically succeeds.",
"img": "icons/skills/targeting/crosshair-arrowhead-blue.webp",
"_id": "KGJJgz0SMdY0f0em",
"_id": "dNN2KOfUxGzQ2yjY",
"effects": [],
"systemPath": "actions",
"cost": [],
"uses": {
"value": null,
"max": null,
"recovery": null
"recovery": null,
"consumeOnSuccess": false
},
"target": {
"type": "any",
@ -36,10 +37,10 @@
"burden": "oneHanded",
"weaponFeatures": [
{
"value": "lockedon",
"value": "lockedOn",
"effectIds": [],
"actionIds": [
"KGJJgz0SMdY0f0em"
"dNN2KOfUxGzQ2yjY"
]
}
],
@ -135,12 +136,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753797317938,
"modifiedTime": 1753797376548,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814518028,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!SxcblanBvqaest3A"
}

View file

@ -16,7 +16,7 @@
{
"value": "paired",
"effectIds": [
"VII5oRJrQTsSir0E"
"5RpOUFs0kDhzwltM"
],
"actionIds": []
}
@ -114,9 +114,16 @@
"value": "ITEM.@system.tier + 1"
}
],
"_id": "VII5oRJrQTsSir0E",
"system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
}
},
"_id": "5RpOUFs0kDhzwltM",
"type": "base",
"system": {},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753793980974,
"modifiedTime": 1753793980974,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814729443,
"modifiedTime": 1754814729443,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!cjGZpXCoshEqi1FI.VII5oRJrQTsSir0E"
"_key": "!items.effects!cjGZpXCoshEqi1FI.5RpOUFs0kDhzwltM"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753741549716,
"modifiedTime": 1753793980983,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814729447,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!cjGZpXCoshEqi1FI"
}

View file

@ -16,7 +16,7 @@
{
"value": "paired",
"effectIds": [
"2OLsxbZJqMgk680J"
"wK6ccFAirp9HYK5Q"
],
"actionIds": []
}
@ -114,9 +114,16 @@
"value": "ITEM.@system.tier + 1"
}
],
"_id": "2OLsxbZJqMgk680J",
"system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
}
},
"_id": "wK6ccFAirp9HYK5Q",
"type": "base",
"system": {},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753794165509,
"modifiedTime": 1753794165509,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814738851,
"modifiedTime": 1754814738851,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!wKklDxs5nkzILNp4.2OLsxbZJqMgk680J"
"_key": "!items.effects!wKklDxs5nkzILNp4.wK6ccFAirp9HYK5Q"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753744141625,
"modifiedTime": 1753794165511,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814738854,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!wKklDxs5nkzILNp4"
}

View file

@ -16,7 +16,7 @@
{
"value": "doubleDuty",
"effectIds": [
"qo4VPSV0VZha1ya2"
"d3TJtlpoHBCztbom"
],
"actionIds": []
}
@ -119,9 +119,16 @@
"value": "1"
}
],
"_id": "qo4VPSV0VZha1ya2",
"system": {
"rangeDependence": {
"enabled": true,
"range": "melee",
"target": "hostile",
"type": "withinRange"
}
},
"_id": "d3TJtlpoHBCztbom",
"type": "base",
"system": {},
"disabled": false,
"duration": {
"startTime": null,
@ -137,14 +144,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753794551639,
"modifiedTime": 1753794551639,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814481208,
"modifiedTime": 1754814481208,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!vzyzFwLUniWZV1rt.qo4VPSV0VZha1ya2"
"_key": "!items.effects!vzyzFwLUniWZV1rt.d3TJtlpoHBCztbom"
}
],
"sort": 0,
@ -157,12 +164,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753794535926,
"modifiedTime": 1753794665373,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814481212,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!vzyzFwLUniWZV1rt"
}

View file

@ -16,7 +16,7 @@
{
"value": "reliable",
"effectIds": [
"YA5tbB6XBISWsf0p"
"G9mMGxBSexwjWTYV"
],
"actionIds": []
}
@ -109,14 +109,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "YA5tbB6XBISWsf0p",
"_id": "G9mMGxBSexwjWTYV",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753836322206,
"modifiedTime": 1753836322206,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754815251133,
"modifiedTime": 1754815251133,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!I1nDGpulg29GpWOW.YA5tbB6XBISWsf0p"
"_key": "!items.effects!I1nDGpulg29GpWOW.G9mMGxBSexwjWTYV"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753836302436,
"modifiedTime": 1753836334493,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754815251135,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!I1nDGpulg29GpWOW"
}

View file

@ -12,7 +12,7 @@
"actionType": "action",
"chatDisplay": true,
"name": "Bend Time",
"description": "DAGGERHEART.CONFIG.WeaponFeature.actions.bendTime.description",
"description": "DAGGERHEART.CONFIG.WeaponFeature.timebending.actions.bendTime.description",
"img": "icons/magic/time/clock-spinning-gold-pink.webp",
"_id": "TzNsQcYm4OVNFQyD",
"effects": [],

View file

@ -16,7 +16,7 @@
{
"value": "reliable",
"effectIds": [
"Gt0tHtJDQwdSActw"
"cOYeI9TxHXpDwszu"
],
"actionIds": []
}
@ -109,14 +109,21 @@
"img": "icons/skills/melee/strike-sword-slashing-red.webp",
"changes": [
{
"key": "system.bonuses.roll.primaryWeapon.attack",
"key": "system.bonuses.roll.primaryWeapon.bonus",
"mode": 2,
"value": "1"
}
],
"_id": "Gt0tHtJDQwdSActw",
"_id": "cOYeI9TxHXpDwszu",
"type": "base",
"system": {},
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
},
"disabled": false,
"duration": {
"startTime": null,
@ -132,14 +139,14 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1753829771677,
"modifiedTime": 1753829771677,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"systemVersion": "1.0.0",
"createdTime": 1754814992368,
"modifiedTime": 1754814992368,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items.effects!z6yEdFYQJ5IzgTX3.Gt0tHtJDQwdSActw"
"_key": "!items.effects!z6yEdFYQJ5IzgTX3.cOYeI9TxHXpDwszu"
}
],
"sort": 0,
@ -152,12 +159,12 @@
"compendiumSource": null,
"duplicateSource": null,
"exportSource": null,
"coreVersion": "13.346",
"coreVersion": "13.347",
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"systemVersion": "1.0.0",
"createdTime": 1753829740082,
"modifiedTime": 1753829771680,
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
"modifiedTime": 1754814992370,
"lastModifiedBy": "MQSznptE5yLT7kj8"
},
"_key": "!items!z6yEdFYQJ5IzgTX3"
}

View file

@ -12,7 +12,7 @@
"actionType": "action",
"chatDisplay": true,
"name": "Bend Time",
"description": "DAGGERHEART.CONFIG.WeaponFeature.actions.bendTime.description",
"description": "DAGGERHEART.CONFIG.WeaponFeature.timebending.actions.bendTime.description",
"img": "icons/magic/time/clock-spinning-gold-pink.webp",
"_id": "gQFuVhPeKzNj93p6",
"effects": [],

View file

@ -132,7 +132,7 @@
"image": {},
"text": {
"format": 1,
"content": "<blockquote><p>This product includes materials from the Daggerheart System Reference Document 1.0, © Critical Role, LLC. under the terms of the Darrington Press Community Gaming (DPCGL) License. More information can be found at <a href=\"https://www.daggerheart.com/\" title=\"Daggerheart Official Website\">https://www.daggerheart.com</a>. There are no previous modifications by others.</p><p></p></blockquote><h1>The Foundryborne Team</h1><p></p><p>The Foundryborne Team consists of:</p><p></p><ul><li><p><strong>@harryfuralle</strong></p></li><li><p><strong>@cptn_cosmo</strong></p></li><li><p><strong>@molilo</strong></p></li><li><p><strong>@joaquinp98</strong></p></li><li><p><strong>@dapoulp</strong></p></li><li><p>@ikraik</p></li><li><p>@irktheimp</p></li><li><p>@jacobwojo</p></li><li><p>@vyrth</p></li><li><p>@.ontaro</p></li><li><p>@saatsin</p></li><li><p>@david.xyz</p></li><li><p>@<span style=\"color:oklab(0.988044 0.0000450313 0.0000197887);font-family:'gg sans', 'Noto Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:oklab(0.262384 0.00252247 -0.00889932);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">lazjen</span></p></li></ul><p></p><p>With Art from:</p><p></p><ul><li><p>UsernameIsInUse</p></li></ul><p></p><p>And special thanks to our hard working community testers:<br /></p><ul><li><p><span style=\"color:oklab(0.988044 0.0000450313 0.0000197887);font-family:'gg sans', 'Noto Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:oklab(0.262384 0.00252247 -0.00889932);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">@lazjen</span></p></li></ul><p></p><p>We would also like to thank the FoundryVTT team for their support in publishing this system.</p><p>And, of course, special thanks to the teams at Critical Role and Darrington Press for making such a wonderful game and updating the license to allow a FoundryVTT version of the system.</p><p></p><h1>The Foundryborne Community</h1><p></p><p>Without our amazing community this project would not have been possible.</p><p>You kept us going with both direct contributions and just endless support!</p><p>We thank you with all our hearts.</p><p><a href=\"https://foundryborne.online/\" title=\"Foundryborne official website\">Come join us!</a></p>"
"content": "<blockquote><p>This product includes materials from the Daggerheart System Reference Document 1.0, © Critical Role, LLC. under the terms of the Darrington Press Community Gaming (DPCGL) License. More information can be found at <a href=\"https://www.daggerheart.com/\" title=\"Daggerheart Official Website\">https://www.daggerheart.com</a>. There are no previous modifications by others.</p><p></p></blockquote><h1>The Foundryborne Team</h1><p></p><p>The Foundryborne Team consists of:</p><p></p><ul><li><p>@harryfuralle</p></li><li><p>@cptn_cosmo</p></li><li><p>@molilo</p></li><li><p>@joaquinp98</p></li><li><p>@dapoulp</p></li><li><p>@ikraik</p></li><li><p>@irktheimp</p></li><li><p>@jacobwojo</p></li><li><p>@vyrth</p></li><li><p>@.ontaro</p></li><li><p>@saatsin</p></li><li><p>@david.xyz</p></li><li><p>@lazjen</p></li></ul><p></p><p>With Art from:</p><p></p><ul><li><p>@molilo (Foundryborne User Interface &amp; Domain Card Placeholder Artwork)</p></li><li><p>@UsernameIsInUse (Foundryborne Logo, Website Design, Duality Roll Icon</p></li><li><p>@CyrensMaps (Combat Wheelchair Icons)</p></li></ul><p></p><p>And special thanks to our hard working community testers:<br /></p><ul><li><p>@lazjen</p></li></ul><p></p><p>We would also like to thank the FoundryVTT team for their support in publishing this system, as well as providing countless Icons to be used in many places.</p><p>And, of course, special thanks to the teams at Critical Role and Darrington Press for making such a wonderful game and updating the license to allow a FoundryVTT version of the system.</p><p></p><h1>The Foundryborne Community</h1><p></p><p>Without our amazing community this project would not have been possible.</p><p>You kept us going with both direct contributions and just endless support!</p><p>We thank you with all our hearts.</p><p><a href=\"https://foundryborne.online/\" title=\"Foundryborne official website\">Come join us!</a></p>"
},
"video": {
"controls": true,
@ -153,8 +153,8 @@
"systemId": "daggerheart",
"systemVersion": "0.0.1",
"createdTime": 1754225939902,
"modifiedTime": 1754668980876,
"lastModifiedBy": "Cf0YKwnZ1OHBZWl8"
"modifiedTime": 1754847043391,
"lastModifiedBy": "9GFCfEY8m5Co2mHo"
},
"_key": "!journal.pages!g7NhKvwltwafmMyR.dP6xSKEld4TSqHhK"
}

View file

@ -14,8 +14,14 @@
margin-bottom: 12px;
}
.feature-list {
.feature-list,
.features-dragger {
display: flex;
width: 100%;
font-family: @font-body;
}
.feature-list {
flex-direction: column;
gap: 10px;
@ -45,5 +51,16 @@
}
}
}
.features-dragger {
align-items: center;
justify-content: center;
box-sizing: border-box;
height: 40px;
margin-top: 10px;
border: 1px dashed light-dark(@dark-blue-50, @beige-50);
border-radius: 3px;
color: light-dark(@dark-blue-50, @beige-50);
}
}
}

View file

@ -10,7 +10,7 @@
}
.character-row .domains-section img {
filter: invert(88%) sepia(98%) saturate(1784%) hue-rotate(311deg) brightness(104%) contrast(91%);
filter: @golden-filter;
}
}
}, {
@ -20,7 +20,7 @@
}
.character-row .domains-section img {
filter: invert(87%) sepia(15%) saturate(343%) hue-rotate(333deg) brightness(110%) contrast(87%);
filter: brightness(0) saturate(100%);
}
}
});

View file

@ -2,43 +2,14 @@
.encounter-controls.combat {
justify-content: space-between;
.encounter-fear-controls {
.encounter-title {
text-align: left;
}
.inner-controls {
display: flex;
align-items: center;
gap: 8px;
.encounter-fear-dice-container {
display: flex;
gap: 2px;
.encounter-control-fear-container {
display: flex;
position: relative;
align-items: center;
justify-content: center;
color: black;
.dice {
height: 22px;
width: 22px;
}
.encounter-control-fear {
position: absolute;
font-size: 16px;
}
.encounter-control-counter {
position: absolute;
right: -10px;
color: var(--color-text-secondary);
}
}
}
.encounter-countdowns {
color: var(--content-link-icon-color);
}
gap: 4px;
}
.control-buttons {

View file

@ -175,12 +175,23 @@
display: flex;
flex-direction: column;
[data-folder-id] {
padding: 5px 10px;
display: flex;
justify-content: space-between;
padding: 10px;
border: 1px solid transparent;
font-family: @font-body;
transition: all 0.1s ease;
&.expanded + .subfolder-list {
grid-template-rows: 1fr;
}
&:has(+ .subfolder-list):after {
content: "+";
}
}
[data-folder-id]:has(+ .subfolder-list .is-selected),
.is-selected,
[data-folder-id]:hover {
font-weight: bold;
@ -190,9 +201,15 @@
}
.subfolder-list {
margin: 5px 0;
display: grid;
grid-template-rows: 0fr;
transition: grid-template-rows 0.3s ease-in-out;
gap: 0;
[data-folder-id] {
padding: 5px 10px;
}
.is-selected,
[data-folder-id]:hover {
font-weight: bold;
@ -200,6 +217,10 @@
background-color: light-dark(@dark-blue-10, @golden-10);
color: light-dark(@dark-blue, @golden);
}
.wrapper {
overflow: hidden;
}
}
}

View file

@ -108,7 +108,7 @@
box-shadow: unset;
border-color: transparent;
header,
.controls,
#resource-fear .controls,
.window-resize-handle {
opacity: 0;
}

View file

@ -44,6 +44,10 @@
"url": "https://github.com/joaquinpereyra98",
"email": "joaquinpereyra98@gmail.com",
"discord": "joaquinp98"
},
{
"name": "chrisryan10",
"discord": "lazjen"
}
],
"esmodules": ["build/daggerheart.js"],
@ -262,6 +266,7 @@
"abilityUse": {}
}
},
"background": "systems/daggerheart/assets/logos/FoundrybornBackgroundLogo.png",
"primaryTokenAttribute": "resources.hitPoints",
"secondaryTokenAttribute": "resources.stress",
"url": "https://your/hosted/system/repo/",

View file

@ -10,9 +10,7 @@
{{#each domainCards as |domainCard id|}}
<div class="selections-container domain-card" data-card="{{id}}">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" domainCard }}
{{#each @root.class.system.domains }}
<div>{{localize (concat "DAGGERHEART.GENERAL.Domain." this ".label")}}</div>
{{/each}}
{{#each @root.classDomains }}<div>{{this}}</div>{{/each}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
{{/each}}

View file

@ -24,7 +24,7 @@
<input type="text" value="{{extraFormula}}" name="roll.{{ @index }}.extraFormula" placeholder="Situational Bonus">
</div>
{{/each}}
{{#if @root.modifiers}}
{{#unless (empty @root.modifiers)}}
<fieldset class="modifier-container two-columns">
<legend>{{localize "DAGGERHEART.GENERAL.Modifier.plural"}}</legend>
{{#each @root.modifiers}}
@ -39,7 +39,7 @@
{{/if}}
{{/each}}
</fieldset>
{{/if}}
{{/unless}}
<div class="damage-section-controls">
{{#if directDamage}}
<select class="roll-mode-select" name="selectedRollMode">

View file

@ -5,19 +5,19 @@
>
<fieldset class="one-column">
<legend>{{localize "DAGGERHEART.GENERAL.basics"}}</legend>
{{formGroup systemFields.attack.fields.img value=document.system.attack.img label="DAGGERHEART.GENERAL.imagePath" name="system.attack.img" localize=true}}
{{formGroup systemFields.attack.fields.name value=document.system.attack.name label="DAGGERHEART.ACTIONS.Settings.attackName" name="system.attack.name" localize=true}}
{{formGroup systemFields.attack.fields.img value=document._source.system.attack.img label="DAGGERHEART.GENERAL.imagePath" name="system.attack.img" localize=true}}
{{formGroup systemFields.attack.fields.name value=document._source.system.attack.name label="DAGGERHEART.ACTIONS.Settings.attackName" name="system.attack.name" localize=true}}
</fieldset>
<fieldset class="flex">
<legend>{{localize "DAGGERHEART.GENERAL.attack"}}</legend>
{{formField systemFields.attack.fields.roll.fields.bonus value=document.system.attack.roll.bonus label="DAGGERHEART.ACTIONS.Settings.attackBonus" name="system.attack.roll.bonus" localize=true}}
{{formField systemFields.attack.fields.range value=document.system.attack.range label="DAGGERHEART.GENERAL.range" name="system.attack.range" localize=true}}
{{formField systemFields.attack.fields.roll.fields.bonus value=document._source.system.attack.roll.bonus label="DAGGERHEART.ACTIONS.Settings.attackBonus" name="system.attack.roll.bonus" localize=true}}
{{formField systemFields.attack.fields.range value=document._source.system.attack.range label="DAGGERHEART.GENERAL.range" name="system.attack.range" localize=true}}
{{#if systemFields.attack.fields.target.fields}}
{{ formField systemFields.attack.fields.target.fields.type value=document.system.attack.target.type label="DAGGERHEART.GENERAL.Target.single" name="system.attack.target.type" localize=true }}
{{#if (and document.system.attack.target.type (not (eq document.system.attack.target.type 'self')))}}
{{ formField systemFields.attack.fields.target.fields.amount value=document.system.attack.target.amount label="DAGGERHEART.GENERAL.amount" name="system.attack.target.amount" localize=true}}
{{ formField systemFields.attack.fields.target.fields.type value=document._source.system.attack.target.type label="DAGGERHEART.GENERAL.Target.single" name="system.attack.target.type" localize=true }}
{{#if (and document._source.system.attack.target.type (not (eq document._source.system.attack.target.type 'self')))}}
{{ formField systemFields.attack.fields.target.fields.amount value=document._source.system.attack.target.amount label="DAGGERHEART.GENERAL.amount" name="system.attack.target.amount" localize=true}}
{{/if}}
{{/if}}
</fieldset>
{{> '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.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." horde=(eq document._source.system.type 'horde')}}
</section>

View file

@ -6,33 +6,33 @@
<fieldset class="one-column">
<legend>{{localize 'DAGGERHEART.GENERAL.basics'}}</legend>
<div class="nest-inputs">
{{formGroup systemFields.tier value=document.system.tier localize=true}}
{{formGroup systemFields.type value=document.system.type localize=true}}
{{#if (eq document.system.type 'horde')}}
{{formGroup systemFields.hordeHp value=document.system.hordeHp label=(localize "DAGGERHEART.ACTORS.Adversary.horderHp")}}
{{formGroup systemFields.tier value=document._source.system.tier localize=true}}
{{formGroup systemFields.type value=document._source.system.type localize=true}}
{{#if (eq document._source.system.type 'horde')}}
{{formGroup systemFields.hordeHp value=document._source.system.hordeHp label=(localize "DAGGERHEART.ACTORS.Adversary.horderHp")}}
{{/if}}
{{formGroup systemFields.difficulty value=document.system.difficulty localize=true}}
{{formGroup systemFields.difficulty value=document._source.system.difficulty localize=true}}
</div>
{{formField systemFields.description value=document.system.description label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.description.label")}}
{{formField systemFields.motivesAndTactics value=document.system.motivesAndTactics label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.motivesAndTactics.label")}}
{{formField systemFields.description value=document._source.system.description label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.description.label")}}
{{formField systemFields.motivesAndTactics value=document._source.system.motivesAndTactics label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.motivesAndTactics.label")}}
</fieldset>
<div class="fieldsets-section">
<fieldset class="flex">
<legend>{{localize "DAGGERHEART.GENERAL.HitPoints.plural"}}</legend>
{{formGroup systemFields.resources.fields.hitPoints.fields.value value=document.system.resources.hitPoints.value label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.hitPoints.value.label")}}
{{formGroup systemFields.resources.fields.hitPoints.fields.max value=document.system.resources.hitPoints.max}}
{{formGroup systemFields.resources.fields.hitPoints.fields.value value=document._source.system.resources.hitPoints.value label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.hitPoints.value.label")}}
{{formGroup systemFields.resources.fields.hitPoints.fields.max value=document._source.system.resources.hitPoints.max}}
</fieldset>
<fieldset class="flex">
<legend>{{localize "DAGGERHEART.GENERAL.stress"}}</legend>
{{formGroup systemFields.resources.fields.stress.fields.value value=document.system.resources.stress.value label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.stress.value.label")}}
{{formGroup systemFields.resources.fields.stress.fields.max value=document.system.resources.stress.max}}
{{formGroup systemFields.resources.fields.stress.fields.value value=document._source.system.resources.stress.value label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.stress.value.label")}}
{{formGroup systemFields.resources.fields.stress.fields.max value=document._source.system.resources.stress.max}}
</fieldset>
</div>
<fieldset class="flex">
<legend>{{localize "DAGGERHEART.GENERAL.DamageThresholds.title"}}</legend>
{{formGroup systemFields.damageThresholds.fields.major value=document.system.damageThresholds.major label=(localize "DAGGERHEART.GENERAL.DamageThresholds.majorThreshold")}}
{{formGroup systemFields.damageThresholds.fields.severe value=document.system.damageThresholds.severe label=(localize "DAGGERHEART.GENERAL.DamageThresholds.severeThreshold")}}
{{formGroup systemFields.damageThresholds.fields.major value=document._source.system.damageThresholds.major label=(localize "DAGGERHEART.GENERAL.DamageThresholds.majorThreshold")}}
{{formGroup systemFields.damageThresholds.fields.severe value=document._source.system.damageThresholds.severe label=(localize "DAGGERHEART.GENERAL.DamageThresholds.severeThreshold")}}
</fieldset>
</section>

View file

@ -10,7 +10,7 @@
<fieldset>
<legend>{{localize tabs.experiences.label}}</legend>
<ul class="experience-list">
{{#each document.system.experiences as |experience key|}}
{{#each document._source.system.experiences as |experience key|}}
<li class="experience-item">
<div class="experience-inner-item">
<input class="name" type="text" name="system.experiences.{{key}}.name" value="{{experience.name}}" />

View file

@ -10,7 +10,7 @@
<legend>{{localize tabs.features.label}}</legend>
<ul class="feature-list">
{{#each document.system.features as |feature|}}
<li class="feature-item" id="{{feature.id}}">
<li class="feature-item" id="{{feature.id}}" draggable="true">
<img src="{{feature.img}}" alt="">
<div class="label">
<span>{{feature.name}}</span>
@ -22,5 +22,8 @@
</li>
{{/each}}
</ul>
<div class="features-dragger">
{{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}}
</div>
</fieldset>
</section>

View file

@ -5,16 +5,16 @@
>
<fieldset class="one-column">
<legend>{{localize "DAGGERHEART.GENERAL.basics"}}</legend>
{{formGroup systemFields.attack.fields.img value=document.system.attack.img label="DAGGERHEART.GENERAL.imagePath" name="system.attack.img" localize=true}}
{{formGroup systemFields.attack.fields.name value=document.system.attack.name label="DAGGERHEART.ACTIONS.Settings.attackName" name="system.attack.name" localize=true}}
{{formGroup systemFields.attack.fields.img value=document._source.system.attack.img label="DAGGERHEART.GENERAL.imagePath" name="system.attack.img" localize=true}}
{{formGroup systemFields.attack.fields.name value=document._source.system.attack.name label="DAGGERHEART.ACTIONS.Settings.attackName" name="system.attack.name" localize=true}}
</fieldset>
<fieldset class="flex">
<legend>{{localize "DAGGERHEART.GENERAL.attack"}}</legend>
{{formField systemFields.attack.fields.range value=document.system.attack.range label="DAGGERHEART.GENERAL.range" name="system.attack.range" localize=true}}
{{formField systemFields.attack.fields.range value=document._source.system.attack.range label="DAGGERHEART.GENERAL.range" name="system.attack.range" localize=true}}
{{#if systemFields.attack.fields.target.fields}}
{{ formField systemFields.attack.fields.target.fields.type value=document.system.attack.target.type label="DAGGERHEART.GENERAL.Target.single" name="system.attack.target.type" localize=true}}
{{#if (and document.system.attack.target.type (not (eq document.system.attack.target.type 'self')))}}
{{ formField systemFields.attack.fields.target.fields.amount value=document.system.attack.target.amount label="DAGGERHEART.GENERAL.amount" name="system.attack.target.amount" localize=true}}
{{ formField systemFields.attack.fields.target.fields.type value=document._source.system.attack.target.type label="DAGGERHEART.GENERAL.Target.single" name="system.attack.target.type" localize=true}}
{{#if (and document._source.system.attack.target.type (not (eq document._source.system.attack.target.type 'self')))}}
{{ formField systemFields.attack.fields.target.fields.amount value=document._source.system.attack.target.amount label="DAGGERHEART.GENERAL.amount" name="system.attack.target.amount" localize=true}}
{{/if}}
{{/if}}
</fieldset>

View file

@ -6,18 +6,18 @@
<fieldset class="one-column">
<legend>{{localize 'DAGGERHEART.GENERAL.basics'}}</legend>
<div class="nest-inputs">
{{formGroup systemFields.evasion value=document.system.evasion localize=true}}
{{formGroup systemFields.resources.fields.stress.fields.value value=document.system.resources.stress.value label='DAGGERHEART.ACTORS.Companion.FIELDS.resources.stress.currentStress.label' localize=true}}
{{formGroup systemFields.resources.fields.stress.fields.max value=document.system.resources.stress.max label='DAGGERHEART.ACTORS.Companion.FIELDS.resources.stress.maxStress.label' localize=true}}
{{formGroup systemFields.evasion value=document._source.system.evasion localize=true}}
{{formGroup systemFields.resources.fields.stress.fields.value value=document._source.system.resources.stress.value label='DAGGERHEART.ACTORS.Companion.FIELDS.resources.stress.currentStress.label' localize=true}}
{{formGroup systemFields.resources.fields.stress.fields.max value=document._source.system.resources.stress.max label='DAGGERHEART.ACTORS.Companion.FIELDS.resources.stress.maxStress.label' localize=true}}
</div>
<div class="form-group">
<div class="form-fields">
<label>{{localize "DAGGERHEART.ACTORS.Companion.FIELDS.partner.label"}}</label>
<select class="partner-value" name="system.partner">
{{selectOptions playerCharacters selected=document.system.partner.uuid labelAttr="name" valueAttr="key" blank=""}}
{{selectOptions playerCharacters selected=document._source.system.partner.uuid labelAttr="name" valueAttr="key" blank=""}}
</select>
</div>
</div>
</fieldset>
<button type="button" data-action="levelUp" {{#if (not document.system.levelData.canLevelUp)}}disabled{{/if}}>{{localize "DAGGERHEART.GENERAL.levelUp"}}</button>
<button type="button" data-action="levelUp" {{#if (not document._source.system.levelData.canLevelUp)}}disabled{{/if}}>{{localize "DAGGERHEART.GENERAL.levelUp"}}</button>
</section>

View file

@ -6,11 +6,11 @@
<fieldset class="one-column">
<legend>{{localize 'DAGGERHEART.GENERAL.basics'}}</legend>
<div class="nest-inputs">
{{formGroup systemFields.tier value=document.system.tier localize=true}}
{{formGroup systemFields.type value=document.system.type localize=true}}
{{formGroup systemFields.difficulty value=document.system.difficulty localize=true}}
{{formGroup systemFields.tier value=document._source.system.tier localize=true}}
{{formGroup systemFields.type value=document._source.system.type localize=true}}
{{formGroup systemFields.difficulty value=document._source.system.difficulty localize=true}}
</div>
{{formField systemFields.description value=document.system.description label=(localize "DAGGERHEART.ACTORS.Environment.FIELDS.description.label")}}
{{formField systemFields.impulses value=document.system.impulses label=(localize "DAGGERHEART.ACTORS.Environment.FIELDS.impulses.label")}}
{{formField systemFields.description value=document._source.system.description label=(localize "DAGGERHEART.ACTORS.Environment.FIELDS.description.label")}}
{{formField systemFields.impulses value=document._source.system.impulses label=(localize "DAGGERHEART.ACTORS.Environment.FIELDS.impulses.label")}}
</fieldset>
</section>

View file

@ -87,9 +87,9 @@
</div>
{{#if document.system.class.value}}
<div class="domains-section">
{{#each document.system.class.value.system.domains as |domain|}}
{{#each document.system.domainData as |data|}}
<div class="domain">
<img src="{{concat 'systems/daggerheart/assets/icons/domains/' domain '.svg'}}" alt="" data-tooltip="{{localize (concat 'DAGGERHEART.GENERAL.Domain.' domain '.label')}}" />
<img src="{{data.src}}" alt="" data-tooltip="{{data.label}}" />
</div>
{{/each}}
</div>
@ -106,7 +106,7 @@
<div class="character-traits">
{{#each this.attributes as |attribute key|}}
<div class="trait" data-tooltip="{{#each attribute.verbs}}{{this}}<br>{{/each}}" data-action="rollAttribute" data-attribute="{{key}}" data-value="{{attribute.value}}">
<div class="trait" data-tooltip="<b>{{localize (concat 'DAGGERHEART.CONFIG.Traits.' key '.name') }}:</b><br>{{#each attribute.verbs}}{{this}}<br>{{/each}}" data-action="rollAttribute" data-attribute="{{key}}" data-value="{{attribute.value}}">
<div class="trait-name">
<span>{{localize (concat 'DAGGERHEART.CONFIG.Traits.' key '.short')}}</span>
{{#if attribute.tierMarked}}

View file

@ -55,7 +55,7 @@
<div class="encounter-fear-controls">
<div class="encounter-fear-dice-container">
<div class="encounter-control-fear-container">
<img class="dice " src="../icons/svg/d12-grey.svg"/>
<div class="dice d12"></div>
<i class="fas fa-skull encounter-control-fear"></i>
</div>
<div>{{fear}}</div>
@ -63,7 +63,6 @@
<a class="encounter-countdowns" data-tooltip="{{localize "DAGGERHEART.APPLICATIONS.Countdown.title" type=(localize "DAGGERHEART.APPLICATIONS.Countdown.types.encounter")}}" data-action="openCountdowns"><i class="fa-solid fa-stopwatch"></i></a>
</div>
{{/if}}
{{!-- Combat Status --}}
<strong class="encounter-title">
{{#if combats.length}}
@ -78,14 +77,16 @@
</strong>
{{!-- Combat Controls --}}
<div class="inner-controls">
{{#if hasCombat}}
<button data-action="openCountdowns">{{localize "DAGGERHEART.APPLICATIONS.CombatTracker.openCountdowns"}}</button>
<div class="control-buttons right flexrow">
<div class="spacer"></div>
<button type="button" class="encounter-context-menu inline-control combat-control icon fa-solid fa-ellipsis-vertical"
{{#unless (and user.isGM hasCombat)}}disabled{{/unless}}></button>
</div>
{{/if}}
</div>
</div>
</header>

View file

@ -7,9 +7,11 @@
</summary>
<div class="folder-list">
{{#each folders}}
<div class="{{#if selected}} is-selected{{/if}}" data-action="selectFolder" data-folder-id="{{id}}">{{label}}</div>
<div class="{{#if selected}} is-selected{{/if}}" data-action="selectFolder" data-folder-id="{{id}}" {{#if folders.length}}data-tooltip="DAGGERHEART.UI.Tooltip.rightClickExtand" data-tooltip-direction="RIGHT"{{/if}}>{{label}}</div>
{{!-- <div data-action="selectFolder" data-folder-id="{{id}}">{{label}}</div> --}}
{{#if folders.length}}
<div class="subfolder-list">
<div class="wrapper">
{{#each folders}}
<div
class="subfolder-item {{#if selected}} is-selected{{/if}}"
@ -20,6 +22,8 @@
</div>
{{/each}}
</div>
</div>
{{/if}}
{{/each}}
</div>
<line-div></line-div>