Added attribution to environments

This commit is contained in:
WBHarry 2025-08-17 02:19:22 +02:00
parent 54da1e1872
commit c73f6202bd
26 changed files with 280 additions and 145 deletions

View file

@ -8,7 +8,7 @@ export default class DhpEnvironment extends DHBaseActorSheet {
classes: ['environment'], classes: ['environment'],
position: { position: {
width: 500, width: 500,
height: 725 height: 740
}, },
window: { window: {
resizable: true, resizable: true,
@ -49,6 +49,10 @@ export default class DhpEnvironment extends DHBaseActorSheet {
switch (partId) { switch (partId) {
case 'header': case 'header':
await this._prepareHeaderContext(context, options); await this._prepareHeaderContext(context, options);
const { source, page } = this.document.system.attribution;
const attribution = [source, page ? `pg ${page}.` : null].filter(x => x).join('. ');
context.attributionLabel = attribution;
break; break;
case 'notes': case 'notes':
await this._prepareNotesContext(context, options); await this._prepareNotesContext(context, options);

View file

@ -130,7 +130,8 @@ export default function DHApplicationMixin(Base) {
async _renderFrame(options) { async _renderFrame(options) {
const frame = await super._renderFrame(options); const frame = await super._renderFrame(options);
if (this.document.system.metadata.hasAttribution) { const headerAttribution = !['environment'].includes(this.document.type);
if (this.document.system.metadata.hasAttribution && headerAttribution) {
const { source, page } = this.document.system.attribution; const { source, page } = this.document.system.attribution;
const attribution = [source, page ? `pg ${page}.` : null].filter(x => x).join('. '); const attribution = [source, page ? `pg ${page}.` : null].filter(x => x).join('. ');
const element = `<label class="attribution-header-label">${attribution}</label>`; const element = `<label class="attribution-header-label">${attribution}</label>`;
@ -144,7 +145,8 @@ export default function DHApplicationMixin(Base) {
* Refresh the custom parts of the application frame * Refresh the custom parts of the application frame
*/ */
refreshFrame() { refreshFrame() {
if (this.document.system.metadata.hasAttribution) { const headerAttribution = !['environment'].includes(this.document.type);
if (this.document.system.metadata.hasAttribution && headerAttribution) {
const { source, page } = this.document.system.attribution; const { source, page } = this.document.system.attribution;
const attribution = [source, page ? `pg ${page}.` : null].filter(x => x).join('. '); const attribution = [source, page ? `pg ${page}.` : null].filter(x => x).join('. ');

View file

@ -1,6 +1,6 @@
{ {
"name": "Abandoned Grove", "name": "Abandoned Grove",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "GQ0VnOLrKBIHR6Us", "folder": "GQ0VnOLrKBIHR6Us",
"system": { "system": {
@ -27,19 +27,24 @@
"tier": 1, "tier": 1,
"description": "<p>A former druidic grove lying fallow and fully reclaimed by nature.</p>", "description": "<p>A former druidic grove lying fallow and fully reclaimed by nature.</p>",
"type": "exploration", "type": "exploration",
"impulses": "Draw in the curious, echo the past" "impulses": "Draw in the curious, echo the past",
"attribution": {
"source": "Daggerheart SRD",
"page": 103,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784553, "createdTime": 1753922784553,
"modifiedTime": 1754208922163, "modifiedTime": 1755389890228,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "pGEdzdLkqYtBhxnG", "_id": "pGEdzdLkqYtBhxnG",
"sort": 3400000, "sort": 3400000,
@ -55,7 +60,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "AbominationVaults.webp",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Ambushed", "name": "Ambushed",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "GQ0VnOLrKBIHR6Us", "folder": "GQ0VnOLrKBIHR6Us",
"system": { "system": {
@ -10,19 +10,24 @@
"tier": 1, "tier": 1,
"description": "<p>An ambush is set to catch an unsuspecting party off-guard.</p>", "description": "<p>An ambush is set to catch an unsuspecting party off-guard.</p>",
"type": "event", "type": "event",
"impulses": "Overwhelm, scatter, surround" "impulses": "Overwhelm, scatter, surround",
"attribution": {
"source": "Daggerheart SRD",
"page": 103,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784553, "createdTime": 1753922784553,
"modifiedTime": 1754211171895, "modifiedTime": 1755389890231,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "uGEdNYERCTJBEjc5", "_id": "uGEdNYERCTJBEjc5",
"sort": 3400000, "sort": 3400000,
@ -38,7 +43,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Ambushers", "name": "Ambushers",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "GQ0VnOLrKBIHR6Us", "folder": "GQ0VnOLrKBIHR6Us",
"system": { "system": {
@ -10,19 +10,24 @@
"tier": 1, "tier": 1,
"description": "<p>An ambush is set by the PCs to catch unsuspecting adversaries off-guard.</p>", "description": "<p>An ambush is set by the PCs to catch unsuspecting adversaries off-guard.</p>",
"type": "event", "type": "event",
"impulses": "Escape, group up, protect the most vulnerable" "impulses": "Escape, group up, protect the most vulnerable",
"attribution": {
"source": "Daggerheart SRD",
"page": 103,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784554, "createdTime": 1753922784554,
"modifiedTime": 1754211550898, "modifiedTime": 1755389890234,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "uXZpebPR77YQ1oXI", "_id": "uXZpebPR77YQ1oXI",
"sort": 3400000, "sort": 3400000,
@ -38,7 +43,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Burning Heart of the Woods", "name": "Burning Heart of the Woods",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "MfrIkJK12PAEfbPL", "folder": "MfrIkJK12PAEfbPL",
"system": { "system": {
@ -32,19 +32,24 @@
"tier": 3, "tier": 3,
"description": "<p>Thick indigo ash fills the air around a towering moss-covered tree that burns eternally with flames a sickly shade of blue.</p>", "description": "<p>Thick indigo ash fills the air around a towering moss-covered tree that burns eternally with flames a sickly shade of blue.</p>",
"type": "exploration", "type": "exploration",
"impulses": "Beat out an uncanny rhythm for all to follow, corrupt the woods" "impulses": "Beat out an uncanny rhythm for all to follow, corrupt the woods",
"attribution": {
"source": "Daggerheart SRD",
"page": 108,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784554, "createdTime": 1753922784554,
"modifiedTime": 1754218065764, "modifiedTime": 1755389890258,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "oY69NN4rYxoRE4hl", "_id": "oY69NN4rYxoRE4hl",
"sort": 3400000, "sort": 3400000,
@ -60,7 +65,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Bustling Marketplace", "name": "Bustling Marketplace",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "GQ0VnOLrKBIHR6Us", "folder": "GQ0VnOLrKBIHR6Us",
"system": { "system": {
@ -25,19 +25,24 @@
"tier": 1, "tier": 1,
"description": "<p>The economic heart of the settlement, with local artisans, traveling merchants, and patrons across social classes.</p>", "description": "<p>The economic heart of the settlement, with local artisans, traveling merchants, and patrons across social classes.</p>",
"type": "social", "type": "social",
"impulses": "Buy low, and sell high, tempt and tantalize with wares from near and far" "impulses": "Buy low, and sell high, tempt and tantalize with wares from near and far",
"attribution": {
"source": "Daggerheart SRD",
"page": 104,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784554, "createdTime": 1753922784554,
"modifiedTime": 1754212085334, "modifiedTime": 1755389890236,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "HZKA7hkej7JJY503", "_id": "HZKA7hkej7JJY503",
"sort": 3400000, "sort": 3400000,
@ -53,7 +58,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Castle Siege", "name": "Castle Siege",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "MfrIkJK12PAEfbPL", "folder": "MfrIkJK12PAEfbPL",
"system": { "system": {
@ -29,19 +29,24 @@
"tier": 3, "tier": 3,
"description": "<p>An active siege with an attacking force fighting to gain entry to a fortified castle.</p>", "description": "<p>An active siege with an attacking force fighting to gain entry to a fortified castle.</p>",
"type": "event", "type": "event",
"impulses": "Bleed out the will to fi ght, breach the walls, build tension" "impulses": "Bleed out the will to fi ght, breach the walls, build tension",
"attribution": {
"source": "Daggerheart SRD",
"page": 109,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784555, "createdTime": 1753922784555,
"modifiedTime": 1754218654354, "modifiedTime": 1755389890261,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "1eZ32Esq7rfZOjlu", "_id": "1eZ32Esq7rfZOjlu",
"sort": 3400000, "sort": 3400000,
@ -57,7 +62,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Chaos Realm", "name": "Chaos Realm",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "IKumu5HTLqONLYqb", "folder": "IKumu5HTLqONLYqb",
"system": { "system": {
@ -19,19 +19,24 @@
"tier": 4, "tier": 4,
"description": "<p>An otherworldly space where the laws of reality are unstable and dangerous.</p>", "description": "<p>An otherworldly space where the laws of reality are unstable and dangerous.</p>",
"type": "traversal", "type": "traversal",
"impulses": "Annihilate certainty, consume power, defy logic" "impulses": "Annihilate certainty, consume power, defy logic",
"attribution": {
"source": "Daggerheart SRD",
"page": 110,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784556, "createdTime": 1753922784556,
"modifiedTime": 1754219630584, "modifiedTime": 1755389890266,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "2Z1mKc65LxNk2PqR", "_id": "2Z1mKc65LxNk2PqR",
"sort": 3400000, "sort": 3400000,
@ -47,7 +52,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Cliffside Ascent", "name": "Cliffside Ascent",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "GQ0VnOLrKBIHR6Us", "folder": "GQ0VnOLrKBIHR6Us",
"system": { "system": {
@ -20,19 +20,24 @@
"tier": 1, "tier": 1,
"description": "<p>A steep, rocky cliffside tall enough to make traversal dangerous.</p>", "description": "<p>A steep, rocky cliffside tall enough to make traversal dangerous.</p>",
"type": "traversal", "type": "traversal",
"impulses": "Cast the unready down to a rocky doom, draw people in with promise of what lies at the top" "impulses": "Cast the unready down to a rocky doom, draw people in with promise of what lies at the top",
"attribution": {
"source": "Daggerheart SRD",
"page": 104,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784557, "createdTime": 1753922784557,
"modifiedTime": 1754212638870, "modifiedTime": 1755389890238,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "LPpfdlNKqiZIl04w", "_id": "LPpfdlNKqiZIl04w",
"sort": 3400000, "sort": 3400000,
@ -48,7 +53,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Cult Ritual", "name": "Cult Ritual",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "XMeecO3IRvu5ck6F", "folder": "XMeecO3IRvu5ck6F",
"system": { "system": {
@ -20,19 +20,24 @@
"tier": 2, "tier": 2,
"description": "<p>A Fallen cult assembles around a sigil of the defeated gods and a bonfire that burns a sickly shade of green.</p>", "description": "<p>A Fallen cult assembles around a sigil of the defeated gods and a bonfire that burns a sickly shade of green.</p>",
"type": "event", "type": "event",
"impulses": "Profane the land, unite the Mortal Realm with the Circles Below" "impulses": "Profane the land, unite the Mortal Realm with the Circles Below",
"attribution": {
"source": "Daggerheart SRD",
"page": 106,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784557, "createdTime": 1753922784557,
"modifiedTime": 1754215595854, "modifiedTime": 1755389890248,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "QAXXiOKBDmCTauHD", "_id": "QAXXiOKBDmCTauHD",
"sort": 3400000, "sort": 3400000,
@ -48,7 +53,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Divine Usurpation", "name": "Divine Usurpation",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "IKumu5HTLqONLYqb", "folder": "IKumu5HTLqONLYqb",
"system": { "system": {
@ -21,19 +21,24 @@
"tier": 4, "tier": 4,
"description": "<p>A massive ritual designed to breach the gates of the Hallows Above and unseat the New Gods themselves.</p>", "description": "<p>A massive ritual designed to breach the gates of the Hallows Above and unseat the New Gods themselves.</p>",
"type": "event", "type": "event",
"impulses": "Collect power, overawe, silence dissent" "impulses": "Collect power, overawe, silence dissent",
"attribution": {
"source": "Daggerheart SRD",
"page": 110,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784558, "createdTime": 1753922784558,
"modifiedTime": 1754220432059, "modifiedTime": 1755389890271,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "4DLYez7VbMCFDAuZ", "_id": "4DLYez7VbMCFDAuZ",
"sort": 3400000, "sort": 3400000,
@ -49,7 +54,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Hallowed Temple", "name": "Hallowed Temple",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "XMeecO3IRvu5ck6F", "folder": "XMeecO3IRvu5ck6F",
"system": { "system": {
@ -19,19 +19,24 @@
"tier": 2, "tier": 2,
"description": "<p>A bustling but well-kept temple that provides healing and hosts regular services, overseen by a priest or seraph.</p>", "description": "<p>A bustling but well-kept temple that provides healing and hosts regular services, overseen by a priest or seraph.</p>",
"type": "social", "type": "social",
"impulses": "Connect the Mortal Realm with the Hallows Above, display the power of the divine, provide aid and succor to the faithful" "impulses": "Connect the Mortal Realm with the Hallows Above, display the power of the divine, provide aid and succor to the faithful",
"attribution": {
"source": "Daggerheart SRD",
"page": 107,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784558, "createdTime": 1753922784558,
"modifiedTime": 1754216032747, "modifiedTime": 1755389890251,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "dsA6j69AnaJhUyqH", "_id": "dsA6j69AnaJhUyqH",
"sort": 3400000, "sort": 3400000,
@ -47,7 +52,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Haunted City", "name": "Haunted City",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "XMeecO3IRvu5ck6F", "folder": "XMeecO3IRvu5ck6F",
"system": { "system": {
@ -19,19 +19,24 @@
"tier": 2, "tier": 2,
"description": "<p>An abandoned city populated by the restless spirits of eras past.</p>", "description": "<p>An abandoned city populated by the restless spirits of eras past.</p>",
"type": "exploration", "type": "exploration",
"impulses": "Misdirect and disorient, replay apocalypses both public and personal" "impulses": "Misdirect and disorient, replay apocalypses both public and personal",
"attribution": {
"source": "Daggerheart SRD",
"page": 107,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784559, "createdTime": 1753922784559,
"modifiedTime": 1754216926766, "modifiedTime": 1755389890253,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "OzYbizKraK92FDiI", "_id": "OzYbizKraK92FDiI",
"sort": 3400000, "sort": 3400000,
@ -47,7 +52,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Imperial Court", "name": "Imperial Court",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "IKumu5HTLqONLYqb", "folder": "IKumu5HTLqONLYqb",
"system": { "system": {
@ -21,19 +21,24 @@
"tier": 4, "tier": 4,
"description": "<p>The majestic domain of a powerful empire, lavishly appointed with stolen treasures.</p>", "description": "<p>The majestic domain of a powerful empire, lavishly appointed with stolen treasures.</p>",
"type": "social", "type": "social",
"impulses": "Justify and perpetuate imperial rule, seduce rivals with promises of power and comfort" "impulses": "Justify and perpetuate imperial rule, seduce rivals with promises of power and comfort",
"attribution": {
"source": "Daggerheart SRD",
"page": 111,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784559, "createdTime": 1753922784559,
"modifiedTime": 1754220962410, "modifiedTime": 1755389890268,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "jr1xAoXzVwVblzxI", "_id": "jr1xAoXzVwVblzxI",
"sort": 3400000, "sort": 3400000,
@ -49,7 +54,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Local Tavern", "name": "Local Tavern",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "GQ0VnOLrKBIHR6Us", "folder": "GQ0VnOLrKBIHR6Us",
"system": { "system": {
@ -33,19 +33,24 @@
"tier": 1, "tier": 1,
"description": "<p>A lively tavern that serves as the social hub for its town.</p>", "description": "<p>A lively tavern that serves as the social hub for its town.</p>",
"type": "social", "type": "social",
"impulses": "Provide opportunities for adventurers, nurture community" "impulses": "Provide opportunities for adventurers, nurture community",
"attribution": {
"source": "Daggerheart SRD",
"page": 105,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784561, "createdTime": 1753922784561,
"modifiedTime": 1754213299544, "modifiedTime": 1755389890240,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "cM4X81DOyvxNIi52", "_id": "cM4X81DOyvxNIi52",
"sort": 3400000, "sort": 3400000,
@ -61,7 +66,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Mountain Pass", "name": "Mountain Pass",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "XMeecO3IRvu5ck6F", "folder": "XMeecO3IRvu5ck6F",
"system": { "system": {
@ -27,19 +27,24 @@
"tier": 2, "tier": 2,
"description": "<p>Stony peaks that pierce the clouds, with a twisting path winding its way up and over through many switchbacks.</p>", "description": "<p>Stony peaks that pierce the clouds, with a twisting path winding its way up and over through many switchbacks.</p>",
"type": "traversal", "type": "traversal",
"impulses": "Exact a chilling toll in supplies and stamina, reveal magical tampering, slow down travel" "impulses": "Exact a chilling toll in supplies and stamina, reveal magical tampering, slow down travel",
"attribution": {
"source": "Daggerheart SRD",
"page": 108,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784562, "createdTime": 1753922784562,
"modifiedTime": 1754217303533, "modifiedTime": 1755389890256,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "acMu9wJrMZZzLSTJ", "_id": "acMu9wJrMZZzLSTJ",
"sort": 3400000, "sort": 3400000,
@ -55,7 +60,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Necromancers Ossuary", "name": "Necromancers Ossuary",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "IKumu5HTLqONLYqb", "folder": "IKumu5HTLqONLYqb",
"system": { "system": {
@ -18,19 +18,24 @@
"tier": 4, "tier": 4,
"description": "<p>A dusty crypt with a library, twisting corridors, and abundant sarcophagi, spattered with the blood of ill-fated invaders.</p>", "description": "<p>A dusty crypt with a library, twisting corridors, and abundant sarcophagi, spattered with the blood of ill-fated invaders.</p>",
"type": "exploration", "type": "exploration",
"impulses": "Confound intruders, delve into secrets best left buried, manifest unlife, unleash a tide of undead" "impulses": "Confound intruders, delve into secrets best left buried, manifest unlife, unleash a tide of undead",
"attribution": {
"source": "Daggerheart SRD",
"page": 111,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784563, "createdTime": 1753922784563,
"modifiedTime": 1754221404218, "modifiedTime": 1755389890275,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "h3KyRL7AshhLAmcH", "_id": "h3KyRL7AshhLAmcH",
"sort": 3400000, "sort": 3400000,
@ -46,7 +51,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Outpost Town", "name": "Outpost Town",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "GQ0VnOLrKBIHR6Us", "folder": "GQ0VnOLrKBIHR6Us",
"system": { "system": {
@ -29,19 +29,24 @@
"tier": 1, "tier": 1,
"description": "<p>A small town on the outskirts of a nation or region, close to a dungeon, tombs, or other adventuring destinations.</p>", "description": "<p>A small town on the outskirts of a nation or region, close to a dungeon, tombs, or other adventuring destinations.</p>",
"type": "social", "type": "social",
"impulses": "Drive the desperate to certain doom, profi t off of ragged hope" "impulses": "Drive the desperate to certain doom, profi t off of ragged hope",
"attribution": {
"source": "Daggerheart SRD",
"page": 105,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784564, "createdTime": 1753922784564,
"modifiedTime": 1754213845896, "modifiedTime": 1755389890243,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "YezryR32uo39xRxW", "_id": "YezryR32uo39xRxW",
"sort": 3400000, "sort": 3400000,
@ -57,7 +62,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Pitched Battle", "name": "Pitched Battle",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "MfrIkJK12PAEfbPL", "folder": "MfrIkJK12PAEfbPL",
"system": { "system": {
@ -29,19 +29,24 @@
"tier": 3, "tier": 3,
"description": "<p>A massive combat between two large groups of armed combatants.</p>", "description": "<p>A massive combat between two large groups of armed combatants.</p>",
"type": "event", "type": "event",
"impulses": "Seize people, land, and wealth, spill blood for greed and glory" "impulses": "Seize people, land, and wealth, spill blood for greed and glory",
"attribution": {
"source": "Daggerheart SRD",
"page": 109,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784565, "createdTime": 1753922784565,
"modifiedTime": 1754219040722, "modifiedTime": 1755389890264,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "EWD3ZsLoK6VMVOf7", "_id": "EWD3ZsLoK6VMVOf7",
"sort": 3400000, "sort": 3400000,
@ -57,7 +62,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -1,6 +1,6 @@
{ {
"name": "Raging River", "name": "Raging River",
"img": "icons/svg/mystery-man.svg", "img": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"type": "environment", "type": "environment",
"folder": "GQ0VnOLrKBIHR6Us", "folder": "GQ0VnOLrKBIHR6Us",
"system": { "system": {
@ -29,19 +29,24 @@
"tier": 1, "tier": 1,
"description": "<p>A swift-moving river without a bridge crossing, deep enough to sweep away most people.</p>", "description": "<p>A swift-moving river without a bridge crossing, deep enough to sweep away most people.</p>",
"type": "traversal", "type": "traversal",
"impulses": "Bar crossing, carry away the unready, divide the land" "impulses": "Bar crossing, carry away the unready, divide the land",
"attribution": {
"source": "Daggerheart SRD",
"page": 106,
"artist": ""
}
}, },
"flags": {}, "flags": {},
"_stats": { "_stats": {
"compendiumSource": null, "compendiumSource": null,
"duplicateSource": null, "duplicateSource": null,
"exportSource": null, "exportSource": null,
"coreVersion": "13.346", "coreVersion": "13.347",
"systemId": "daggerheart", "systemId": "daggerheart",
"systemVersion": "0.0.1", "systemVersion": "1.0.5",
"createdTime": 1753922784565, "createdTime": 1753922784565,
"modifiedTime": 1754214189395, "modifiedTime": 1755389890245,
"lastModifiedBy": "MQSznptE5yLT7kj8" "lastModifiedBy": "VZIeX2YDvX338Zvr"
}, },
"_id": "t4cdqTfzcqP3H1vJ", "_id": "t4cdqTfzcqP3H1vJ",
"sort": 3400000, "sort": 3400000,
@ -57,7 +62,7 @@
"width": 1, "width": 1,
"height": 1, "height": 1,
"texture": { "texture": {
"src": "icons/svg/mystery-man.svg", "src": "systems/daggerheart/assets/icons/documents/actors/forest.svg",
"anchorX": 0.5, "anchorX": 0.5,
"anchorY": 0.5, "anchorY": 0.5,
"offsetX": 0, "offsetX": 0,

View file

@ -6,6 +6,12 @@
object-position: top center; object-position: top center;
} }
&.minimized {
.attribution-header-label {
display: none;
}
}
.attribution-header-label { .attribution-header-label {
font-style: italic; font-style: italic;
font-family: @font-body; font-family: @font-body;

View file

@ -55,6 +55,13 @@
font-size: 12px; font-size: 12px;
} }
} }
.attribution-header-label {
text-align: left;
position: relative;
top: 4px;
margin-bottom: -6px;
}
} }
.status-number { .status-number {

View file

@ -5,6 +5,10 @@
.appTheme({ .appTheme({
&.environment { &.environment {
background-image: url('../assets/parchments/dh-parchment-dark.png'); background-image: url('../assets/parchments/dh-parchment-dark.png');
.attribution-header-label {
background-image: url('../assets/parchments/dh-parchment-dark.png');
}
} }
}, { }, {
&.environment { &.environment {
@ -18,5 +22,11 @@
overflow-y: auto; overflow-y: auto;
scrollbar-width: thin; scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent; scrollbar-color: light-dark(@dark-blue, @golden) transparent;
&.active {
overflow: hidden;
display: flex;
flex-direction: column;
}
} }
} }

View file

@ -1,4 +1,10 @@
.application.sheet.daggerheart.dh-style.item { .application.sheet.daggerheart.dh-style.item {
&.minimized {
.attribution-header-label {
display: none;
}
}
.attribution-header-label { .attribution-header-label {
font-style: italic; font-style: italic;
font-family: @font-body; font-family: @font-body;

View file

@ -3,6 +3,7 @@
<div class='item-container'> <div class='item-container'>
<div class="item-info"> <div class="item-info">
<h1 class='item-name'><input type='text' name='name' value='{{source.name}}' /></h1> <h1 class='item-name'><input type='text' name='name' value='{{source.name}}' /></h1>
<div class="flexcol">
<div class="tags"> <div class="tags">
<div class="tag"> <div class="tag">
<span> <span>
@ -17,6 +18,10 @@
</div> </div>
{{/if}} {{/if}}
</div> </div>
{{#if document.system.attribution.source}}
<label class="attribution-header-label">{{attributionLabel}}</label>
{{/if}}
</div>
</div> </div>
<div class="status-number"> <div class="status-number">
<div class='status-value armor-slots'> <div class='status-value armor-slots'>