mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-07-22 02:19:54 +02:00
Compare commits
10 commits
a15b82df36
...
8f86d29569
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f86d29569 | ||
|
|
cdf6e7fdd0 | ||
|
|
d36c141d36 | ||
|
|
489f62a379 | ||
|
|
c25c4d63f7 | ||
|
|
1af86d87bb | ||
|
|
70388dbd73 | ||
|
|
2cc52fae1f | ||
|
|
8c6a470d84 | ||
|
|
9c58f7058e |
73 changed files with 1829 additions and 1949 deletions
|
|
@ -113,7 +113,8 @@
|
||||||
"area": {
|
"area": {
|
||||||
"sectionTitle": "Areas",
|
"sectionTitle": "Areas",
|
||||||
"shape": "Shape",
|
"shape": "Shape",
|
||||||
"size": "Size"
|
"size": "Size",
|
||||||
|
"hasHole": "Area Hole"
|
||||||
},
|
},
|
||||||
"displayInChat": "Display in chat",
|
"displayInChat": "Display in chat",
|
||||||
"deleteTriggerTitle": "Delete Trigger",
|
"deleteTriggerTitle": "Delete Trigger",
|
||||||
|
|
@ -870,6 +871,10 @@
|
||||||
"bruiser": "for each Bruiser adversary.",
|
"bruiser": "for each Bruiser adversary.",
|
||||||
"solo": "for each Solo adversary."
|
"solo": "for each Solo adversary."
|
||||||
},
|
},
|
||||||
|
"AreaTypes": {
|
||||||
|
"attached": { "label": "Attached To Token" },
|
||||||
|
"placed": { "label": "Placed In Scene" }
|
||||||
|
},
|
||||||
"ArmorInteraction": {
|
"ArmorInteraction": {
|
||||||
"none": { "label": "Ignores Armor" },
|
"none": { "label": "Ignores Armor" },
|
||||||
"active": { "label": "Active w/ Armor" },
|
"active": { "label": "Active w/ Armor" },
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ export default class AdversarySheet extends DHBaseActorSheet {
|
||||||
/** @inheritDoc */
|
/** @inheritDoc */
|
||||||
static DEFAULT_OPTIONS = {
|
static DEFAULT_OPTIONS = {
|
||||||
classes: ['adversary'],
|
classes: ['adversary'],
|
||||||
position: { width: 660, height: 766 },
|
position: { width: 645, height: 760 },
|
||||||
window: { resizable: true },
|
window: { resizable: true },
|
||||||
actions: {
|
actions: {
|
||||||
toggleHitPoints: AdversarySheet.#toggleHitPoints,
|
toggleHitPoints: AdversarySheet.#toggleHitPoints,
|
||||||
|
|
@ -58,12 +58,13 @@ export default class AdversarySheet extends DHBaseActorSheet {
|
||||||
template: 'systems/daggerheart/templates/sheets/actors/adversary/features.hbs',
|
template: 'systems/daggerheart/templates/sheets/actors/adversary/features.hbs',
|
||||||
scrollable: ['.feature-section']
|
scrollable: ['.feature-section']
|
||||||
},
|
},
|
||||||
notes: {
|
|
||||||
template: 'systems/daggerheart/templates/sheets/actors/adversary/notes.hbs'
|
|
||||||
},
|
|
||||||
effects: {
|
effects: {
|
||||||
template: 'systems/daggerheart/templates/sheets/actors/adversary/effects.hbs',
|
template: 'systems/daggerheart/templates/sheets/actors/adversary/effects.hbs',
|
||||||
scrollable: ['.effects-sections']
|
scrollable: ['.effects-sections']
|
||||||
|
},
|
||||||
|
notes: {
|
||||||
|
template: 'systems/daggerheart/templates/sheets/actors/adversary/notes.hbs',
|
||||||
|
scrollable: ['.editor-content']
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1057,7 +1057,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
||||||
direction: 'DOWN'
|
direction: 'DOWN'
|
||||||
});
|
});
|
||||||
|
|
||||||
html.querySelectorAll('.armor-slot').forEach(element => {
|
html.querySelectorAll('.armor .slot').forEach(element => {
|
||||||
element.addEventListener('click', CharacterSheet.armorSourcePipUpdate);
|
element.addEventListener('click', CharacterSheet.armorSourcePipUpdate);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -1072,7 +1072,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
||||||
|
|
||||||
/** Update specific armor source */
|
/** Update specific armor source */
|
||||||
static async armorSourcePipUpdate(event) {
|
static async armorSourcePipUpdate(event) {
|
||||||
const target = event.target.closest('.armor-slot');
|
const target = event.target.closest('.slot');
|
||||||
const { uuid, value } = target.dataset;
|
const { uuid, value } = target.dataset;
|
||||||
const document = await foundry.utils.fromUuid(uuid);
|
const document = await foundry.utils.fromUuid(uuid);
|
||||||
|
|
||||||
|
|
@ -1100,7 +1100,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
||||||
}
|
}
|
||||||
|
|
||||||
const container = target.closest('.slot-bar');
|
const container = target.closest('.slot-bar');
|
||||||
for (const armorSlot of container.querySelectorAll('.armor-slot i')) {
|
for (const armorSlot of container.querySelectorAll('.armor .slot i')) {
|
||||||
const index = Number.parseInt(armorSlot.dataset.index);
|
const index = Number.parseInt(armorSlot.dataset.index);
|
||||||
if (decreasing && index >= newCurrent) {
|
if (decreasing && index >= newCurrent) {
|
||||||
armorSlot.classList.remove('fa-shield');
|
armorSlot.classList.remove('fa-shield');
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ export default class DhRegionLayer extends foundry.canvas.layers.RegionLayer {
|
||||||
return inBounds.length === 1 ? inBounds[0] : null;
|
return inBounds.length === 1 ? inBounds[0] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getTemplateShape({ type, angle, range, direction } = {}) {
|
static getTemplateShape({ shapeType, angle, range, direction, hasHole } = {}) {
|
||||||
const { line, rectangle, inFront, cone, circle, emanation } = CONFIG.DH.GENERAL.templateTypes;
|
const { line, rectangle, inFront, cone, circle, emanation } = CONFIG.DH.GENERAL.templateTypes;
|
||||||
|
|
||||||
/* Length calculation */
|
/* Length calculation */
|
||||||
|
|
@ -112,11 +112,11 @@ export default class DhRegionLayer extends foundry.canvas.layers.RegionLayer {
|
||||||
|
|
||||||
const shapeData = {
|
const shapeData = {
|
||||||
...canvas.mousePosition,
|
...canvas.mousePosition,
|
||||||
type: type,
|
type: shapeType,
|
||||||
direction: direction ?? 0
|
direction: direction ?? 0
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (type) {
|
switch (shapeType) {
|
||||||
case rectangle.id:
|
case rectangle.id:
|
||||||
shapeData.width = length;
|
shapeData.width = length;
|
||||||
shapeData.height = length;
|
shapeData.height = length;
|
||||||
|
|
@ -145,7 +145,8 @@ export default class DhRegionLayer extends foundry.canvas.layers.RegionLayer {
|
||||||
y: 0,
|
y: 0,
|
||||||
width: 1,
|
width: 1,
|
||||||
height: 1,
|
height: 1,
|
||||||
shape: game.canvas.grid.isHexagonal ? CONST.TOKEN_SHAPES.ELLIPSE_1 : CONST.TOKEN_SHAPES.RECTANGLE_1
|
shape: game.canvas.grid.isHexagonal ? CONST.TOKEN_SHAPES.ELLIPSE_1 : CONST.TOKEN_SHAPES.RECTANGLE_1,
|
||||||
|
hole: hasHole
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,10 @@ export const advantageState = {
|
||||||
export const areaTypes = {
|
export const areaTypes = {
|
||||||
placed: {
|
placed: {
|
||||||
id: 'placed',
|
id: 'placed',
|
||||||
label: 'Placed Area'
|
label: 'DAGGERHEART.CONFIG.AreaTypes.placed.label'
|
||||||
|
},
|
||||||
|
attached: {
|
||||||
|
id: 'attached',
|
||||||
|
label: 'DAGGERHEART.CONFIG.AreaTypes.attached.label'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -451,7 +451,15 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
|
||||||
|
|
||||||
static migrateData(source) {
|
static migrateData(source) {
|
||||||
if (source.damage?.parts && Array.isArray(source.damage.parts)) {
|
if (source.damage?.parts && Array.isArray(source.damage.parts)) {
|
||||||
|
let hitPointsExists = source.damage.parts.some(x => x.applyTo === 'hitPoints');
|
||||||
source.damage.parts = source.damage.parts.reduce((acc, part) => {
|
source.damage.parts = source.damage.parts.reduce((acc, part) => {
|
||||||
|
if (!part.applyTo && hitPointsExists) return acc;
|
||||||
|
|
||||||
|
if (!part.applyTo) {
|
||||||
|
hitPointsExists = true;
|
||||||
|
part.applyTo = 'hitPoints';
|
||||||
|
}
|
||||||
|
|
||||||
acc[part.applyTo] = part;
|
acc[part.applyTo] = part;
|
||||||
return acc;
|
return acc;
|
||||||
}, {});
|
}, {});
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@ export default class DhpAdversary extends DhCreature {
|
||||||
parts: {
|
parts: {
|
||||||
hitPoints: {
|
hitPoints: {
|
||||||
type: ['physical'],
|
type: ['physical'],
|
||||||
|
applyTo: 'hitPoints',
|
||||||
value: {
|
value: {
|
||||||
multiplier: 'flat'
|
multiplier: 'flat'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@ export default class DhCharacter extends DhCreature {
|
||||||
parts: {
|
parts: {
|
||||||
hitPoints: {
|
hitPoints: {
|
||||||
type: ['physical'],
|
type: ['physical'],
|
||||||
|
applyTo: 'hitPoints',
|
||||||
value: {
|
value: {
|
||||||
custom: {
|
custom: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,7 @@ export default class DhCompanion extends DhCreature {
|
||||||
parts: {
|
parts: {
|
||||||
hitPoints: {
|
hitPoints: {
|
||||||
type: ['physical'],
|
type: ['physical'],
|
||||||
|
applyTo: 'hitPoints',
|
||||||
value: {
|
value: {
|
||||||
dice: 'd6',
|
dice: 'd6',
|
||||||
multiplier: 'prof'
|
multiplier: 'prof'
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,39 @@ export default class DhCountdowns extends foundry.abstract.DataModel {
|
||||||
for (const countdownKey of changedCountdowns)
|
for (const countdownKey of changedCountdowns)
|
||||||
foundry.ui.countdowns.changedCountdownsForAnimation.add(countdownKey);
|
foundry.ui.countdowns.changedCountdownsForAnimation.add(countdownKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static migrateData(source) {
|
||||||
|
const migrateOldCountdowns = (data, type) => {
|
||||||
|
for (const key of Object.keys(data.countdowns)) {
|
||||||
|
const countdown = data.countdowns[key];
|
||||||
|
source.countdowns[key] = {
|
||||||
|
...countdown,
|
||||||
|
type: type,
|
||||||
|
ownership: Object.keys(countdown.ownership.players).reduce((acc, key) => {
|
||||||
|
acc[key] =
|
||||||
|
countdown.ownership.players[key].type === 1 ? 2 : countdown.ownership.players[key].type;
|
||||||
|
return acc;
|
||||||
|
}, {}),
|
||||||
|
progress: {
|
||||||
|
...countdown.progress,
|
||||||
|
type: countdown.progress.type.value
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
source[type] = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (source.narrative) {
|
||||||
|
migrateOldCountdowns(source.narrative, 'narrative');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (source.encounter) {
|
||||||
|
migrateOldCountdowns(source.encounter, 'encounter');
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.migrateData(source);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class DhCountdown extends foundry.abstract.DataModel {
|
export class DhCountdown extends foundry.abstract.DataModel {
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,10 @@ export default class AreasField extends fields.ArrayField {
|
||||||
initial: CONFIG.DH.GENERAL.range.veryClose.id,
|
initial: CONFIG.DH.GENERAL.range.veryClose.id,
|
||||||
label: 'DAGGERHEART.ACTIONS.Config.area.size'
|
label: 'DAGGERHEART.ACTIONS.Config.area.size'
|
||||||
}),
|
}),
|
||||||
|
hasHole: new fields.BooleanField({
|
||||||
|
initial: false,
|
||||||
|
label: 'DAGGERHEART.ACTIONS.Config.area.hasHole'
|
||||||
|
}),
|
||||||
effects: new fields.ArrayField(new fields.DocumentIdField())
|
effects: new fields.ArrayField(new fields.DocumentIdField())
|
||||||
});
|
});
|
||||||
super(element, options, context);
|
super(element, options, context);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { itemAbleRollParse, triggerChatRollFx } from '../../../helpers/utils.mjs';
|
import { getWorldActor, itemAbleRollParse, triggerChatRollFx } from '../../../helpers/utils.mjs';
|
||||||
import FormulaField from '../formulaField.mjs';
|
import FormulaField from '../formulaField.mjs';
|
||||||
|
|
||||||
const fields = foundry.data.fields;
|
const fields = foundry.data.fields;
|
||||||
|
|
@ -42,7 +42,7 @@ export default class DHSummonField extends fields.ArrayField {
|
||||||
const count = roll.total;
|
const count = roll.total;
|
||||||
if (!roll.isDeterministic) rolls.push(roll);
|
if (!roll.isDeterministic) rolls.push(roll);
|
||||||
|
|
||||||
const actor = await DHSummonField.getWorldActor(await foundry.utils.fromUuid(summon.actorUUID));
|
const actor = await getWorldActor(await foundry.utils.fromUuid(summon.actorUUID));
|
||||||
/* Extending summon data in memory so it's available in actionField.toChat. Think it's harmless, but ugly. Could maybe find a better way. */
|
/* Extending summon data in memory so it's available in actionField.toChat. Think it's harmless, but ugly. Could maybe find a better way. */
|
||||||
summon.actor = actor.toObject();
|
summon.actor = actor.toObject();
|
||||||
|
|
||||||
|
|
@ -62,19 +62,6 @@ export default class DHSummonField extends fields.ArrayField {
|
||||||
DHSummonField.handleSummon(summonData, this.actor);
|
DHSummonField.handleSummon(summonData, this.actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for any available instances of the actor present in the world if we're missing artwork in the compendium. If none exists, create one. */
|
|
||||||
static async getWorldActor(baseActor) {
|
|
||||||
const dataType = game.system.api.data.actors[`Dh${baseActor.type.capitalize()}`];
|
|
||||||
if (baseActor.inCompendium && dataType && baseActor.img === dataType.DEFAULT_ICON) {
|
|
||||||
const worldActorCopy = game.actors.find(x => x.name === baseActor.name);
|
|
||||||
if (worldActorCopy) return worldActorCopy;
|
|
||||||
|
|
||||||
return await game.system.api.documents.DhpActor.create(baseActor.toObject());
|
|
||||||
}
|
|
||||||
|
|
||||||
return baseActor;
|
|
||||||
}
|
|
||||||
|
|
||||||
static async handleSummon(summonData, actionActor) {
|
static async handleSummon(summonData, actionActor) {
|
||||||
await CONFIG.ux.TokenManager.createTokensWithPreview(summonData, { elevation: actionActor.token?.elevation });
|
await CONFIG.ux.TokenManager.createTokensWithPreview(summonData, { elevation: actionActor.token?.elevation });
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -276,8 +276,12 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage {
|
||||||
async onCreateAreas(event) {
|
async onCreateAreas(event) {
|
||||||
const createArea = async selectedArea => {
|
const createArea = async selectedArea => {
|
||||||
const effects = selectedArea.effects.map(effect => this.system.action.item.effects.get(effect).uuid);
|
const effects = selectedArea.effects.map(effect => this.system.action.item.effects.get(effect).uuid);
|
||||||
const { shape: type, size: range } = selectedArea;
|
const { shape: shapeType, size: range, hasHole } = selectedArea;
|
||||||
const shapeData = CONFIG.Canvas.layers.regions.layerClass.getTemplateShape({ type, range });
|
const shapeData = CONFIG.Canvas.layers.regions.layerClass.getTemplateShape({
|
||||||
|
shapeType,
|
||||||
|
range,
|
||||||
|
hasHole
|
||||||
|
});
|
||||||
|
|
||||||
const scene = game.scenes.get(game.user.viewedScene);
|
const scene = game.scenes.get(game.user.viewedScene);
|
||||||
const level = scene.levels.find(x => x.isView);
|
const level = scene.levels.find(x => x.isView);
|
||||||
|
|
@ -305,7 +309,10 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage {
|
||||||
visibility: CONST.REGION_VISIBILITY.ALWAYS
|
visibility: CONST.REGION_VISIBILITY.ALWAYS
|
||||||
};
|
};
|
||||||
const placeRegion = data => {
|
const placeRegion = data => {
|
||||||
canvas.regions.placeRegion(data, { create: true });
|
canvas.regions.placeRegion(data, {
|
||||||
|
create: true,
|
||||||
|
attachToToken: selectedArea.type === CONFIG.DH.ACTIONS.areaTypes.attached.id
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// Regions with effects must be placed by the GM
|
// Regions with effects must be placed by the GM
|
||||||
|
|
|
||||||
|
|
@ -58,10 +58,11 @@ export const renderMeasuredTemplate = async event => {
|
||||||
if (!type || !range || !game.canvas.scene) return;
|
if (!type || !range || !game.canvas.scene) return;
|
||||||
|
|
||||||
const shapeData = CONFIG.Canvas.layers.regions.layerClass.getTemplateShape({
|
const shapeData = CONFIG.Canvas.layers.regions.layerClass.getTemplateShape({
|
||||||
type,
|
shapetype: type,
|
||||||
angle,
|
angle,
|
||||||
range,
|
range,
|
||||||
direction
|
direction,
|
||||||
|
hasHole: false
|
||||||
});
|
});
|
||||||
|
|
||||||
await canvas.regions.placeRegion(
|
await canvas.regions.placeRegion(
|
||||||
|
|
|
||||||
|
|
@ -889,4 +889,26 @@ export async function triggerChatRollFx(rolls, options = { whisper: false, blind
|
||||||
export function shouldUseHopeFearAutomation(options = { gmAsPlayer: true }) {
|
export function shouldUseHopeFearAutomation(options = { gmAsPlayer: true }) {
|
||||||
const { hopeFear } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
|
const { hopeFear } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
|
||||||
return (!game.user.isGM || options.gmAsPlayer) ? hopeFear.players : hopeFear.gm;
|
return (!game.user.isGM || options.gmAsPlayer) ? hopeFear.players : hopeFear.gm;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getWorldActor(baseActor) {
|
||||||
|
if (baseActor.inCompendium) {
|
||||||
|
const worldActorCandidates = game.actors.filter(x =>
|
||||||
|
x._stats.compendiumSource === baseActor.uuid &&
|
||||||
|
x.prototypeToken.actorLink === baseActor.prototypeToken.actorLink
|
||||||
|
);
|
||||||
|
const worldActorCopy = worldActorCandidates.find(a => a.name === baseActor.name) ?? worldActorCandidates[0];
|
||||||
|
if (worldActorCopy) return worldActorCopy;
|
||||||
|
|
||||||
|
const baseActorData = baseActor;
|
||||||
|
return await game.system.api.documents.DhpActor.create({
|
||||||
|
...baseActorData,
|
||||||
|
_stats: {
|
||||||
|
...baseActorData._stats,
|
||||||
|
compendiumSource: baseActor.uuid
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return baseActor;
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import { defaultRestOptions } from '../config/generalConfig.mjs';
|
import { defaultRestOptions } from '../config/generalConfig.mjs';
|
||||||
import { RefreshType, socketEvent } from './socket.mjs';
|
|
||||||
|
|
||||||
export async function runMigrations() {
|
export async function runMigrations() {
|
||||||
let lastMigrationVersion = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion);
|
let lastMigrationVersion = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion);
|
||||||
|
|
@ -153,61 +152,26 @@ export async function runMigrations() {
|
||||||
await pack.configure({ locked: true });
|
await pack.configure({ locked: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Migrate old countdown structure */
|
|
||||||
const countdownSettings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns);
|
|
||||||
const getCountdowns = (data, type) => {
|
|
||||||
return Object.keys(data.countdowns).reduce((acc, key) => {
|
|
||||||
const countdown = data.countdowns[key];
|
|
||||||
acc[key] = {
|
|
||||||
...countdown,
|
|
||||||
type: type,
|
|
||||||
ownership: Object.keys(countdown.ownership.players).reduce((acc, key) => {
|
|
||||||
acc[key] =
|
|
||||||
countdown.ownership.players[key].type === 1 ? 2 : countdown.ownership.players[key].type;
|
|
||||||
return acc;
|
|
||||||
}, {}),
|
|
||||||
progress: {
|
|
||||||
...countdown.progress,
|
|
||||||
type: countdown.progress.type.value
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
};
|
|
||||||
|
|
||||||
await countdownSettings.updateSource({
|
|
||||||
countdowns: {
|
|
||||||
...getCountdowns(countdownSettings.narrative, 'narrative'),
|
|
||||||
...getCountdowns(countdownSettings.encounter, 'encounter')
|
|
||||||
}
|
|
||||||
});
|
|
||||||
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Countdowns, countdownSettings);
|
|
||||||
|
|
||||||
game.socket.emit(`system.${CONFIG.DH.id}`, {
|
|
||||||
action: socketEvent.Refresh,
|
|
||||||
data: { refreshType: RefreshType.Countdown }
|
|
||||||
});
|
|
||||||
Hooks.callAll(socketEvent.Refresh, { refreshType: RefreshType.Countdown });
|
|
||||||
|
|
||||||
lastMigrationVersion = '1.2.0';
|
lastMigrationVersion = '1.2.0';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (foundry.utils.isNewerVersion('1.2.7', lastMigrationVersion)) {
|
if (foundry.utils.isNewerVersion('1.2.7', lastMigrationVersion)) {
|
||||||
const tagTeam = game.settings.get(CONFIG.DH.id, 'TagTeamRoll');
|
try {
|
||||||
const initatorMissing = tagTeam.initiator && !game.actors.some(actor => actor.id === tagTeam.initiator);
|
const tagTeam = game.settings.get(CONFIG.DH.id, 'TagTeamRoll');
|
||||||
const missingMembers = Object.keys(tagTeam.members).reduce((acc, id) => {
|
const initatorMissing = tagTeam.initiator && !game.actors.some(actor => actor.id === tagTeam.initiator);
|
||||||
if (!game.actors.some(actor => actor.id === id)) {
|
const missingMembers = Object.keys(tagTeam.members).reduce((acc, id) => {
|
||||||
acc[id] = _del;
|
if (!game.actors.some(actor => actor.id === id)) {
|
||||||
}
|
acc[id] = _del;
|
||||||
return acc;
|
}
|
||||||
}, {});
|
return acc;
|
||||||
|
}, {});
|
||||||
|
|
||||||
await tagTeam.updateSource({
|
await tagTeam.updateSource({
|
||||||
initiator: initatorMissing ? null : tagTeam.initiator,
|
initiator: initatorMissing ? null : tagTeam.initiator,
|
||||||
members: missingMembers
|
members: missingMembers
|
||||||
});
|
});
|
||||||
await game.settings.set(CONFIG.DH.id, 'TagTeamRoll', tagTeam);
|
await game.settings.set(CONFIG.DH.id, 'TagTeamRoll', tagTeam);
|
||||||
|
} catch { }
|
||||||
|
|
||||||
lastMigrationVersion = '1.2.7';
|
lastMigrationVersion = '1.2.7';
|
||||||
}
|
}
|
||||||
|
|
@ -303,6 +267,8 @@ export async function runMigrations() {
|
||||||
|
|
||||||
/* Migrate existing effects modifying armor, creating new Armor Effects instead */
|
/* Migrate existing effects modifying armor, creating new Armor Effects instead */
|
||||||
const migrateEffects = async entity => {
|
const migrateEffects = async entity => {
|
||||||
|
if (!entity?.effects) return;
|
||||||
|
|
||||||
for (const effect of entity.effects) {
|
for (const effect of entity.effects) {
|
||||||
if (effect.system.changes.every(x => x.key !== 'system.armorScore')) continue;
|
if (effect.system.changes.every(x => x.key !== 'system.armorScore')) continue;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"target": {
|
"target": {
|
||||||
"type": "hostile",
|
"type": "",
|
||||||
"amount": 1
|
"amount": 1
|
||||||
},
|
},
|
||||||
"effects": [
|
"effects": [
|
||||||
|
|
@ -63,13 +63,23 @@
|
||||||
],
|
],
|
||||||
"name": "Fire",
|
"name": "Fire",
|
||||||
"img": "icons/magic/fire/barrier-wall-explosion-orange.webp",
|
"img": "icons/magic/fire/barrier-wall-explosion-orange.webp",
|
||||||
"range": "close"
|
"range": "",
|
||||||
|
"areas": [
|
||||||
|
{
|
||||||
|
"name": "Elemental Aura: Fire",
|
||||||
|
"type": "attached",
|
||||||
|
"shape": "emanation",
|
||||||
|
"size": "close",
|
||||||
|
"hasHole": false,
|
||||||
|
"effects": []
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"xDBLH5TWidvrYF7z": {
|
"xDBLH5TWidvrYF7z": {
|
||||||
"type": "effect",
|
"type": "effect",
|
||||||
"_id": "xDBLH5TWidvrYF7z",
|
"_id": "xDBLH5TWidvrYF7z",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
"description": "<p>When an adversary marks 1 or more Hit Points, they must also mark a Stress.</p>",
|
"description": "<p>Your allies gain a +1 bonus to Strength.</p>",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
|
|
@ -78,19 +88,26 @@
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null
|
||||||
},
|
},
|
||||||
"effects": [
|
"effects": [],
|
||||||
{
|
|
||||||
"_id": "WRuijfHxmUscAa69",
|
|
||||||
"onSave": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "friendly",
|
"type": "",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
"name": "Earth",
|
"name": "Earth",
|
||||||
"img": "icons/magic/control/buff-strength-muscle-damage-red.webp",
|
"img": "icons/magic/control/buff-strength-muscle-damage-red.webp",
|
||||||
"range": "close"
|
"range": "",
|
||||||
|
"areas": [
|
||||||
|
{
|
||||||
|
"name": "Elemental Aura: Earth",
|
||||||
|
"type": "attached",
|
||||||
|
"shape": "emanation",
|
||||||
|
"size": "close",
|
||||||
|
"hasHole": true,
|
||||||
|
"effects": [
|
||||||
|
"yvpWNCNobg0LLjey"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"S4t5HlgxWlHwaBDw": {
|
"S4t5HlgxWlHwaBDw": {
|
||||||
"type": "effect",
|
"type": "effect",
|
||||||
|
|
@ -112,12 +129,22 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"target": {
|
"target": {
|
||||||
"type": "hostile",
|
"type": "self",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
"name": "Water",
|
"name": "Water",
|
||||||
"img": "icons/magic/water/vortex-water-whirlpool.webp",
|
"img": "icons/magic/water/vortex-water-whirlpool.webp",
|
||||||
"range": "close"
|
"range": "self",
|
||||||
|
"areas": [
|
||||||
|
{
|
||||||
|
"name": "Elemental Aura: Water",
|
||||||
|
"type": "attached",
|
||||||
|
"shape": "emanation",
|
||||||
|
"size": "close",
|
||||||
|
"hasHole": false,
|
||||||
|
"effects": []
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"hAsKFFewtTqd1gg9": {
|
"hAsKFFewtTqd1gg9": {
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
|
|
@ -138,15 +165,10 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"target": {
|
"target": {
|
||||||
"type": "any",
|
"type": "self",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
"effects": [
|
"effects": [],
|
||||||
{
|
|
||||||
"_id": "mJBA2QTyM9SM5NVS",
|
|
||||||
"onSave": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"roll": {
|
"roll": {
|
||||||
"type": "diceSet",
|
"type": "diceSet",
|
||||||
"trait": null,
|
"trait": null,
|
||||||
|
|
@ -169,7 +191,19 @@
|
||||||
},
|
},
|
||||||
"name": "Air",
|
"name": "Air",
|
||||||
"img": "icons/magic/air/air-burst-spiral-blue-gray.webp",
|
"img": "icons/magic/air/air-burst-spiral-blue-gray.webp",
|
||||||
"range": ""
|
"range": "self",
|
||||||
|
"areas": [
|
||||||
|
{
|
||||||
|
"name": "Elemental Aura: Air",
|
||||||
|
"type": "attached",
|
||||||
|
"shape": "emanation",
|
||||||
|
"size": "close",
|
||||||
|
"hasHole": false,
|
||||||
|
"effects": [
|
||||||
|
"vnKV5hsO4DVjURAl"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"originItemType": null,
|
"originItemType": null,
|
||||||
|
|
@ -181,49 +215,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"effects": [
|
"effects": [
|
||||||
{
|
|
||||||
"name": "Elemental Aura (Earth)",
|
|
||||||
"img": "icons/magic/control/buff-strength-muscle-damage-orange.webp",
|
|
||||||
"origin": "Compendium.daggerheart.subclasses.Item.2JH9NaOh69yN80Gw",
|
|
||||||
"transfer": false,
|
|
||||||
"_id": "WRuijfHxmUscAa69",
|
|
||||||
"type": "base",
|
|
||||||
"system": {
|
|
||||||
"rangeDependence": {
|
|
||||||
"enabled": false,
|
|
||||||
"type": "withinRange",
|
|
||||||
"target": "hostile",
|
|
||||||
"range": "melee"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"changes": [
|
|
||||||
{
|
|
||||||
"key": "system.traits.strength.value",
|
|
||||||
"mode": 2,
|
|
||||||
"value": "1",
|
|
||||||
"priority": null
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"disabled": false,
|
|
||||||
"duration": {
|
|
||||||
"startTime": null,
|
|
||||||
"combat": null,
|
|
||||||
"seconds": null,
|
|
||||||
"rounds": null,
|
|
||||||
"turns": null,
|
|
||||||
"startRound": null,
|
|
||||||
"startTurn": null
|
|
||||||
},
|
|
||||||
"description": "",
|
|
||||||
"tint": "#ffffff",
|
|
||||||
"statuses": [],
|
|
||||||
"sort": 0,
|
|
||||||
"flags": {},
|
|
||||||
"_stats": {
|
|
||||||
"compendiumSource": null
|
|
||||||
},
|
|
||||||
"_key": "!items.effects!2JH9NaOh69yN80Gw.WRuijfHxmUscAa69"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Elemental Aura (Water)",
|
"name": "Elemental Aura (Water)",
|
||||||
"img": "icons/magic/water/vortex-water-whirlpool.webp",
|
"img": "icons/magic/water/vortex-water-whirlpool.webp",
|
||||||
|
|
@ -237,18 +228,15 @@
|
||||||
"type": "withinRange",
|
"type": "withinRange",
|
||||||
"target": "hostile",
|
"target": "hostile",
|
||||||
"range": "melee"
|
"range": "melee"
|
||||||
}
|
},
|
||||||
|
"changes": []
|
||||||
},
|
},
|
||||||
"changes": [],
|
|
||||||
"disabled": false,
|
"disabled": false,
|
||||||
"duration": {
|
"duration": {
|
||||||
"startTime": null,
|
"value": null,
|
||||||
"combat": null,
|
"units": "seconds",
|
||||||
"seconds": null,
|
"expiry": null,
|
||||||
"rounds": null,
|
"expired": false
|
||||||
"turns": null,
|
|
||||||
"startRound": null,
|
|
||||||
"startTurn": null
|
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
|
|
@ -258,6 +246,9 @@
|
||||||
"_stats": {
|
"_stats": {
|
||||||
"compendiumSource": null
|
"compendiumSource": null
|
||||||
},
|
},
|
||||||
|
"start": null,
|
||||||
|
"showIcon": 1,
|
||||||
|
"folder": null,
|
||||||
"_key": "!items.effects!2JH9NaOh69yN80Gw.H7W52ps5d3UGmaFr"
|
"_key": "!items.effects!2JH9NaOh69yN80Gw.H7W52ps5d3UGmaFr"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -273,18 +264,15 @@
|
||||||
"type": "withinRange",
|
"type": "withinRange",
|
||||||
"target": "hostile",
|
"target": "hostile",
|
||||||
"range": "melee"
|
"range": "melee"
|
||||||
}
|
},
|
||||||
|
"changes": []
|
||||||
},
|
},
|
||||||
"changes": [],
|
|
||||||
"disabled": false,
|
"disabled": false,
|
||||||
"duration": {
|
"duration": {
|
||||||
"startTime": null,
|
"value": null,
|
||||||
"combat": null,
|
"units": "seconds",
|
||||||
"seconds": null,
|
"expiry": null,
|
||||||
"rounds": null,
|
"expired": false
|
||||||
"turns": null,
|
|
||||||
"startRound": null,
|
|
||||||
"startTurn": null
|
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
|
|
@ -294,43 +282,120 @@
|
||||||
"_stats": {
|
"_stats": {
|
||||||
"compendiumSource": null
|
"compendiumSource": null
|
||||||
},
|
},
|
||||||
|
"start": null,
|
||||||
|
"showIcon": 1,
|
||||||
|
"folder": null,
|
||||||
"_key": "!items.effects!2JH9NaOh69yN80Gw.WX5AMEpmUAutB9Hm"
|
"_key": "!items.effects!2JH9NaOh69yN80Gw.WX5AMEpmUAutB9Hm"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Elemental Aura (Air)",
|
"name": "Elemental Aura: Earth",
|
||||||
"img": "icons/magic/air/air-burst-spiral-blue-gray.webp",
|
"disabled": false,
|
||||||
"origin": "Compendium.daggerheart.subclasses.Item.2JH9NaOh69yN80Gw",
|
"img": "icons/magic/control/buff-strength-muscle-damage-red.webp",
|
||||||
|
"description": "<p>Your allies gain a +1 bonus to Strength.</p>",
|
||||||
"transfer": false,
|
"transfer": false,
|
||||||
"_id": "mJBA2QTyM9SM5NVS",
|
"statuses": [],
|
||||||
"type": "base",
|
|
||||||
"system": {
|
"system": {
|
||||||
"rangeDependence": {
|
"rangeDependence": {
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"type": "withinRange",
|
"type": "withinRange",
|
||||||
"target": "hostile",
|
"target": "hostile",
|
||||||
"range": "melee"
|
"range": "melee"
|
||||||
}
|
},
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"key": "system.traits.strength.value",
|
||||||
|
"type": "add",
|
||||||
|
"value": 1,
|
||||||
|
"priority": null,
|
||||||
|
"phase": "initial"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"duration": {
|
||||||
|
"description": "",
|
||||||
|
"type": ""
|
||||||
|
},
|
||||||
|
"stacking": null,
|
||||||
|
"targetDispositions": [
|
||||||
|
1
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"changes": [],
|
"_id": "yvpWNCNobg0LLjey",
|
||||||
"disabled": false,
|
"type": "base",
|
||||||
"duration": {
|
"start": {
|
||||||
"startTime": null,
|
"time": 0,
|
||||||
"combat": null,
|
"combat": null,
|
||||||
"seconds": null,
|
"combatant": null,
|
||||||
"rounds": null,
|
"initiative": null,
|
||||||
"turns": null,
|
"round": null,
|
||||||
"startRound": null,
|
"turn": null
|
||||||
"startTurn": null
|
|
||||||
},
|
},
|
||||||
"description": "",
|
"duration": {
|
||||||
|
"value": null,
|
||||||
|
"units": "seconds",
|
||||||
|
"expiry": null,
|
||||||
|
"expired": false
|
||||||
|
},
|
||||||
|
"origin": null,
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [],
|
"showIcon": 1,
|
||||||
|
"folder": null,
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"_stats": {
|
"_stats": {
|
||||||
"compendiumSource": null
|
"compendiumSource": null
|
||||||
},
|
},
|
||||||
"_key": "!items.effects!2JH9NaOh69yN80Gw.mJBA2QTyM9SM5NVS"
|
"_key": "!items.effects!2JH9NaOh69yN80Gw.yvpWNCNobg0LLjey"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Elemental Aura: Air",
|
||||||
|
"disabled": false,
|
||||||
|
"img": "icons/magic/air/air-burst-spiral-blue-gray.webp",
|
||||||
|
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, 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:rgba(24, 22, 46, 0.753);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">When you or an ally takes damage from an attack beyond Melee range, reduce the damage by 1d8.</span></p>",
|
||||||
|
"transfer": false,
|
||||||
|
"statuses": [],
|
||||||
|
"system": {
|
||||||
|
"rangeDependence": {
|
||||||
|
"enabled": false,
|
||||||
|
"type": "withinRange",
|
||||||
|
"target": "hostile",
|
||||||
|
"range": "melee"
|
||||||
|
},
|
||||||
|
"changes": [],
|
||||||
|
"duration": {
|
||||||
|
"description": "",
|
||||||
|
"type": ""
|
||||||
|
},
|
||||||
|
"stacking": null,
|
||||||
|
"targetDispositions": [
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"_id": "vnKV5hsO4DVjURAl",
|
||||||
|
"type": "base",
|
||||||
|
"start": {
|
||||||
|
"time": 0,
|
||||||
|
"combat": null,
|
||||||
|
"combatant": null,
|
||||||
|
"initiative": null,
|
||||||
|
"round": null,
|
||||||
|
"turn": null
|
||||||
|
},
|
||||||
|
"duration": {
|
||||||
|
"value": null,
|
||||||
|
"units": "seconds",
|
||||||
|
"expiry": null,
|
||||||
|
"expired": false
|
||||||
|
},
|
||||||
|
"origin": null,
|
||||||
|
"tint": "#ffffff",
|
||||||
|
"showIcon": 1,
|
||||||
|
"folder": null,
|
||||||
|
"sort": 0,
|
||||||
|
"flags": {},
|
||||||
|
"_stats": {
|
||||||
|
"compendiumSource": null
|
||||||
|
},
|
||||||
|
"_key": "!items.effects!2JH9NaOh69yN80Gw.vnKV5hsO4DVjURAl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"sort": 100000,
|
"sort": 100000,
|
||||||
|
|
|
||||||
|
|
@ -261,13 +261,15 @@
|
||||||
|
|
||||||
fieldset {
|
fieldset {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
margin: 0;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
border-color: @color-fieldset-border;
|
border-color: @color-fieldset-border;
|
||||||
|
|
||||||
&.glassy {
|
&.glassy {
|
||||||
background-color: light-dark(@dark-blue-10, @golden-10);
|
background-color: light-dark(@dark-blue-10, @golden-10);
|
||||||
border-color: transparent;
|
border: none;
|
||||||
|
padding-inline: 10px;
|
||||||
|
|
||||||
legend {
|
legend {
|
||||||
padding: 2px 12px;
|
padding: 2px 12px;
|
||||||
|
|
@ -384,6 +386,10 @@
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
}
|
}
|
||||||
|
|
@ -399,6 +405,13 @@
|
||||||
> .checkbox {
|
> .checkbox {
|
||||||
align-self: end;
|
align-self: end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.auto-sized {
|
||||||
|
width: auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-group {
|
.form-group {
|
||||||
|
|
@ -501,7 +514,7 @@
|
||||||
height: 1px;
|
height: 1px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-bottom: 1px solid @color-border;
|
border-bottom: 1px solid @color-border;
|
||||||
mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%);
|
mask-image: linear-gradient(270deg, transparent 0%, black 35%, black 50%, black 65%, transparent 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
side-line-div {
|
side-line-div {
|
||||||
|
|
@ -535,50 +548,6 @@
|
||||||
transform-origin: top;
|
transform-origin: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-buttons {
|
|
||||||
grid-column: span 3;
|
|
||||||
display: flex;
|
|
||||||
gap: 8px;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
margin-top: 2px;
|
|
||||||
|
|
||||||
.item-button {
|
|
||||||
display: flex;
|
|
||||||
border: 1px solid light-dark(#18162e, #18162e);
|
|
||||||
color: light-dark(#18162e, #18162e);
|
|
||||||
outline: none;
|
|
||||||
box-shadow: none;
|
|
||||||
border-radius: 6px;
|
|
||||||
|
|
||||||
button {
|
|
||||||
border-radius: 3px 0px 0px 3px;
|
|
||||||
color: light-dark(@dark-blue, @dark-blue);
|
|
||||||
white-space: nowrap;
|
|
||||||
border: 0;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: @color-text-emphatic;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:not(:first-child) {
|
|
||||||
padding: 6px;
|
|
||||||
background: light-dark(@dark-blue-10, @golden-secondary);
|
|
||||||
border-radius: 0px 3px 3px 0px;
|
|
||||||
color: light-dark(@dark-blue, @dark-golden);
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: light-dark(@light-black, @dark-blue);
|
|
||||||
color: light-dark(@dark-blue, @golden-secondary);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.spacer {
|
|
||||||
border-right: 1px solid black;
|
|
||||||
content: '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.artist-attribution {
|
.artist-attribution {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -586,7 +555,7 @@
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
font-family: @font-body;
|
font-family: @font-body;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
color: light-dark(#14142599, #efe6d850);
|
color: @color-text-subtle;
|
||||||
font-size: var(--font-size-12);
|
font-size: var(--font-size-12);
|
||||||
padding-left: 3px;
|
padding-left: 3px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.daggerheart.dh-style {
|
.daggerheart.dh-style {
|
||||||
|
/** Not an actual scrollbar width (it can't be configured on all browsers) but actually a compensation value for scrollbar gutter purposes */
|
||||||
|
--scrollbar-width: 10px;
|
||||||
|
|
||||||
* {
|
* {
|
||||||
scrollbar-width: thin;
|
scrollbar-width: thin;
|
||||||
scrollbar-color: light-dark(@dark-blue, @golden) transparent;
|
scrollbar-color: light-dark(@dark-blue, @golden) transparent;
|
||||||
|
|
@ -93,7 +96,7 @@
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
font-size: var(--font-size-12);
|
font-size: var(--font-size-12);
|
||||||
justify-content: start;
|
justify-content: start;
|
||||||
padding: 3px 5px;
|
padding: 2px 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,11 @@
|
||||||
|
|
||||||
.item-main {
|
.item-main {
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
|
||||||
|
// Make hover extend out of bounds.
|
||||||
|
// Because of this extra spacing, the scroll container parent needs some padding
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
margin: -2px;
|
margin: -2px -2px 0 -2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
|
@ -271,6 +274,50 @@
|
||||||
grid-area: labels;
|
grid-area: labels;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-buttons {
|
||||||
|
grid-column: span 3;
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.item-button {
|
||||||
|
display: flex;
|
||||||
|
border: 1px solid light-dark(#18162e, #18162e);
|
||||||
|
color: light-dark(#18162e, #18162e);
|
||||||
|
outline: none;
|
||||||
|
box-shadow: none;
|
||||||
|
border-radius: 6px;
|
||||||
|
|
||||||
|
button {
|
||||||
|
border-radius: 3px 0px 0px 3px;
|
||||||
|
color: light-dark(@dark-blue, @dark-blue);
|
||||||
|
white-space: nowrap;
|
||||||
|
border: 0;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: @color-text-emphatic;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(:first-child) {
|
||||||
|
padding: 6px;
|
||||||
|
background: light-dark(@dark-blue-10, @golden-secondary);
|
||||||
|
border-radius: 0px 3px 3px 0px;
|
||||||
|
color: light-dark(@dark-blue, @dark-golden);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: light-dark(@light-black, @dark-blue);
|
||||||
|
color: light-dark(@dark-blue, @golden-secondary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.spacer {
|
||||||
|
border-right: 1px solid black;
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-item {
|
.card-item {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
@import '../utils/colors.less';
|
@import '../utils/colors.less';
|
||||||
@import '../utils/fonts.less';
|
@import '../utils/fonts.less';
|
||||||
|
@import '../utils/mixin.less';
|
||||||
|
|
||||||
.application.daggerheart {
|
.application.daggerheart {
|
||||||
prose-mirror {
|
prose-mirror {
|
||||||
|
|
@ -12,6 +13,7 @@
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
.editor-content {
|
.editor-content {
|
||||||
|
.with-scroll-shadows();
|
||||||
h1 {
|
h1 {
|
||||||
font-size: var(--font-size-32);
|
font-size: var(--font-size-32);
|
||||||
}
|
}
|
||||||
|
|
@ -42,7 +44,7 @@
|
||||||
ul {
|
ul {
|
||||||
list-style: disc;
|
list-style: disc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Fixes centering and makes it not render over scrollbar
|
// Fixes centering and makes it not render over scrollbar
|
||||||
&:hover button.toggle:enabled {
|
&:hover button.toggle:enabled {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
||||||
|
|
@ -9,111 +9,108 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/** Pips styling, can exist standalone even without a slot-value */
|
||||||
|
.slot-bar {
|
||||||
|
display: flex;
|
||||||
|
gap: 4px;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid @color-border;
|
||||||
|
border-radius: 6px;
|
||||||
|
z-index: 1;
|
||||||
|
color: @color-text-emphatic;
|
||||||
|
width: fit-content;
|
||||||
|
min-height: 22px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.slot {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slot:not(:has(i)) {
|
||||||
|
width: 15px;
|
||||||
|
height: 10px;
|
||||||
|
border: 1px solid @color-border;
|
||||||
|
background: light-dark(@dark-blue-10, @golden-10);
|
||||||
|
border-radius: 3px;
|
||||||
|
|
||||||
|
&.large {
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.filled {
|
||||||
|
background: light-dark(@dark-blue, @golden);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.armor .slot {
|
||||||
|
font-size: var(--font-size-12);
|
||||||
|
.fa-shield-halved {
|
||||||
|
color: light-dark(@dark-blue-40, @golden-40);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty-slot {
|
||||||
|
width: 15px;
|
||||||
|
height: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.slot-value {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
|
z-index: 2;
|
||||||
|
color: @beige;
|
||||||
|
|
||||||
|
.slot-label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
color: light-dark(@beige, @dark-blue);
|
||||||
|
background: light-dark(@dark-blue, @golden);
|
||||||
|
padding: 0 5px;
|
||||||
|
width: fit-content;
|
||||||
|
font-weight: bold;
|
||||||
|
border-radius: 0px 0px 5px 5px;
|
||||||
|
font-size: var(--font-size-12);
|
||||||
|
|
||||||
|
.label {
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value {
|
||||||
|
padding-left: 6px;
|
||||||
|
border-left: 1px solid light-dark(@beige, @dark-golden);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.status-bar {
|
.status-bar {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 120px;
|
|
||||||
height: 40px;
|
|
||||||
|
|
||||||
.status-label {
|
|
||||||
position: relative;
|
|
||||||
top: 40px;
|
|
||||||
height: 22px;
|
|
||||||
width: 79px;
|
|
||||||
clip-path: path('M0 0H79L74 16.5L39 22L4 16.5L0 0Z');
|
|
||||||
background: light-dark(@dark-blue, @golden);
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 18px;
|
|
||||||
color: light-dark(@beige, @dark-blue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.slot-value {
|
|
||||||
position: absolute;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
padding: 0 5px;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
align-items: center;
|
|
||||||
width: 140px;
|
|
||||||
height: 40px;
|
|
||||||
justify-content: center;
|
|
||||||
text-align: center;
|
|
||||||
z-index: 2;
|
|
||||||
color: @beige;
|
|
||||||
|
|
||||||
.slot-bar {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 5px;
|
|
||||||
padding: 5px;
|
|
||||||
border: 1px solid @color-border;
|
|
||||||
border-radius: 6px;
|
|
||||||
z-index: 1;
|
|
||||||
color: @color-text-emphatic;
|
|
||||||
width: fit-content;
|
|
||||||
|
|
||||||
.slot {
|
|
||||||
width: 15px;
|
|
||||||
height: 10px;
|
|
||||||
border: 1px solid @color-border;
|
|
||||||
background: light-dark(@dark-blue-10, @golden-10);
|
|
||||||
border-radius: 3px;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&.large {
|
|
||||||
width: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.filled {
|
|
||||||
background: light-dark(@dark-blue, @golden);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.empty-slot {
|
|
||||||
width: 15px;
|
|
||||||
height: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.slot-label {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
color: light-dark(@beige, @dark-blue);
|
|
||||||
background: light-dark(@dark-blue, @golden);
|
|
||||||
padding: 0 5px;
|
|
||||||
width: fit-content;
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 0px 0px 5px 5px;
|
|
||||||
font-size: var(--font-size-12);
|
|
||||||
|
|
||||||
.label {
|
|
||||||
padding-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.value {
|
|
||||||
padding-left: 6px;
|
|
||||||
border-left: 1px solid light-dark(@beige, @dark-golden);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-value {
|
.status-value {
|
||||||
position: absolute;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
width: 140px;
|
width: 100px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
color: @beige;
|
color: @beige;
|
||||||
|
|
||||||
|
> * {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
input[type='number'] {
|
input[type='number'] {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
|
|
@ -146,11 +143,11 @@
|
||||||
.progress-bar {
|
.progress-bar {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
appearance: none;
|
appearance: none;
|
||||||
width: 100px;
|
width: 100%;
|
||||||
height: 40px;
|
height: 100%;
|
||||||
border: 1px solid @color-border;
|
border: 1px solid @color-border;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
z-index: 1;
|
z-index: 0;
|
||||||
background: @dark-blue;
|
background: @dark-blue;
|
||||||
|
|
||||||
&::-webkit-progress-bar {
|
&::-webkit-progress-bar {
|
||||||
|
|
@ -175,4 +172,29 @@
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.status-label {
|
||||||
|
position: relative;
|
||||||
|
height: 22px;
|
||||||
|
width: 79px;
|
||||||
|
background: light-dark(@dark-blue, @golden);
|
||||||
|
|
||||||
|
&.pointy {
|
||||||
|
clip-path: path('M0 0H79L74 16.5L39 22L4 16.5L0 0Z');
|
||||||
|
margin-bottom: -2px; // compensate for pointy bottom so spacing feels more "right"
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 18px;
|
||||||
|
color: light-dark(@beige, @dark-blue);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Overrides for sidebar usage.
|
||||||
|
aside[data-application-part="sidebar"] .resources-section .slot-bar {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(6, min-content);
|
||||||
|
grid-auto-flow: row;
|
||||||
|
}
|
||||||
|
|
@ -54,7 +54,7 @@ body.game:is(.performance-low, .noblur) {
|
||||||
position: relative;
|
position: relative;
|
||||||
min-height: -webkit-fill-available;
|
min-height: -webkit-fill-available;
|
||||||
transition: opacity 0.3s ease;
|
transition: opacity 0.3s ease;
|
||||||
padding-bottom: 20px;
|
padding-bottom: 16px;
|
||||||
|
|
||||||
.tab {
|
.tab {
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style {
|
.application.sheet.daggerheart.actor.dh-style {
|
||||||
|
--side-indent: 16px;
|
||||||
|
|
||||||
.portrait img,
|
.portrait img,
|
||||||
.profile {
|
.profile {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
@ -39,6 +41,33 @@
|
||||||
|
|
||||||
.window-header > .attribution-header-label {
|
.window-header > .attribution-header-label {
|
||||||
margin-right: var(--spacer-4);
|
margin-right: var(--spacer-4);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-navigation {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab {
|
||||||
|
padding: 0;
|
||||||
|
.search-section {
|
||||||
|
padding: var(--spacer-16) 12px var(--spacer-8) 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scroll-container {
|
||||||
|
scrollbar-gutter: stable;
|
||||||
|
overflow-y: auto;
|
||||||
|
.with-scroll-shadows();
|
||||||
|
|
||||||
|
padding: var(--spacer-16) calc(var(--side-indent) - var(--scrollbar-width)) 4px var(--side-indent);
|
||||||
|
|
||||||
|
> fieldset:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.scroll-container:not(:first-child) {
|
||||||
|
padding-top: var(--spacer-8); // nested have less top padding
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab.inventory {
|
.tab.inventory {
|
||||||
|
|
@ -46,7 +75,7 @@
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr 1fr 1fr;
|
grid-template-columns: 1fr 1fr 1fr 1fr;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
padding: 10px 10px 0;
|
padding: var(--spacer-8) var(--side-indent) var(--spacer-12) var(--side-indent);
|
||||||
|
|
||||||
.input {
|
.input {
|
||||||
color: light-dark(@dark, @beige);
|
color: light-dark(@dark, @beige);
|
||||||
|
|
@ -54,6 +83,37 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tab.notes.active {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
margin-top: -10px; // will be removed once tab-navigation bottom margin is removed on all actor sheets
|
||||||
|
scrollbar-gutter: unset;
|
||||||
|
|
||||||
|
// Add padding around top level level prosemirrors used for note tabs
|
||||||
|
> prose-mirror {
|
||||||
|
@right-padding: calc(16px - var(--scrollbar-width));
|
||||||
|
.editor-content {
|
||||||
|
scrollbar-gutter: stable;
|
||||||
|
padding-right: @right-padding;
|
||||||
|
}
|
||||||
|
&.inactive {
|
||||||
|
button.toggle {
|
||||||
|
top: 16px;
|
||||||
|
}
|
||||||
|
.editor-content {
|
||||||
|
padding: 16px @right-padding 4px 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.active {
|
||||||
|
padding: 8px 0 4px 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.artist-attribution {
|
||||||
|
padding-left: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.search-section {
|
.search-section {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
|
|
@ -63,7 +123,6 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
color: light-dark(@dark-blue-50, @beige-50);
|
color: light-dark(@dark-blue-50, @beige-50);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding-top: 5px;
|
|
||||||
|
|
||||||
input {
|
input {
|
||||||
border-radius: 50px;
|
border-radius: 50px;
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,6 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
overflow-y: auto;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
.with-scroll-shadows();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,6 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
overflow-y: auto;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
.with-scroll-shadows();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
> *:not(line-div, .tab-navigation) {
|
> *:not(line-div, .tab-navigation) {
|
||||||
padding-left: 15px;
|
padding-left: var(--side-indent);
|
||||||
padding-right: 15px;
|
padding-right: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
|
@import './sheet.less';
|
||||||
@import './features.less';
|
@import './features.less';
|
||||||
@import './header.less';
|
@import './header.less';
|
||||||
@import './sheet.less';
|
|
||||||
@import './sidebar.less';
|
@import './sidebar.less';
|
||||||
@import './effects.less';
|
@import './effects.less';
|
||||||
@import './notes.less';
|
@import './notes.less';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
.application.sheet.daggerheart.actor.dh-style.adversary .tab.notes.active {
|
|
||||||
padding-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
@ -2,35 +2,39 @@
|
||||||
@import '../../../utils/fonts.less';
|
@import '../../../utils/fonts.less';
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style.adversary {
|
.application.sheet.daggerheart.actor.dh-style.adversary {
|
||||||
|
--sidebar-width: 260px;
|
||||||
|
|
||||||
.window-content {
|
.window-content {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 275px 1fr;
|
grid-template-columns: var(--sidebar-width) 1fr;
|
||||||
grid-template-rows: auto 1fr;
|
grid-template-rows: auto 1fr;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.adversary-sidebar-sheet {
|
.adversary-sidebar-sheet {
|
||||||
grid-row: 1 / span 2;
|
grid-row: 1 / span 2;
|
||||||
grid-column: 1;
|
grid-column: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adversary-header-sheet {
|
||||||
|
grid-row: 1;
|
||||||
|
grid-column: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab {
|
||||||
|
grid-row: 2;
|
||||||
|
grid-column: 2;
|
||||||
|
&.active {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
margin: 0 0 10px 0;
|
||||||
|
position: relative;
|
||||||
.adversary-header-sheet {
|
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab {
|
|
||||||
grid-row: 2;
|
|
||||||
grid-column: 2;
|
|
||||||
&.active {
|
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -22,8 +22,8 @@
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style.adversary {
|
.application.sheet.daggerheart.actor.dh-style.adversary {
|
||||||
.adversary-sidebar-sheet {
|
.adversary-sidebar-sheet {
|
||||||
width: 275px;
|
width: var(--sidebar-width);
|
||||||
min-width: 275px;
|
min-width: var(--sidebar-width);
|
||||||
border-right: 1px solid light-dark(@dark-blue, @golden);
|
border-right: 1px solid light-dark(@dark-blue, @golden);
|
||||||
|
|
||||||
.portrait {
|
.portrait {
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
height: 275px;
|
height: var(--sidebar-width);
|
||||||
}
|
}
|
||||||
|
|
||||||
.death-roll-btn {
|
.death-roll-btn {
|
||||||
|
|
@ -63,7 +63,7 @@
|
||||||
.threshold-section {
|
.threshold-section {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 10px;
|
gap: 7px;
|
||||||
background-color: light-dark(transparent, @dark-blue);
|
background-color: light-dark(transparent, @dark-blue);
|
||||||
color: @color-text-emphatic;
|
color: @color-text-emphatic;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
|
|
@ -106,8 +106,8 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
top: -20px;
|
top: -20px;
|
||||||
gap: 16px;
|
gap: 10px;
|
||||||
margin-bottom: -10px;
|
margin-bottom: -16px;
|
||||||
|
|
||||||
&.pip-display {
|
&.pip-display {
|
||||||
top: -15px;
|
top: -15px;
|
||||||
|
|
@ -120,105 +120,6 @@
|
||||||
.resources-section {
|
.resources-section {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-evenly;
|
justify-content: space-evenly;
|
||||||
margin-bottom: 16px;
|
|
||||||
|
|
||||||
.status-bar {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
position: relative;
|
|
||||||
width: 100px;
|
|
||||||
height: 40px;
|
|
||||||
|
|
||||||
.status-label {
|
|
||||||
position: relative;
|
|
||||||
top: 40px;
|
|
||||||
height: 22px;
|
|
||||||
width: 79px;
|
|
||||||
clip-path: path('M0 0H79L74 16.5L39 22L4 16.5L0 0Z');
|
|
||||||
background: light-dark(@dark-blue, @golden);
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 18px;
|
|
||||||
color: light-dark(@beige, @dark-blue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.status-value {
|
|
||||||
position: absolute;
|
|
||||||
display: flex;
|
|
||||||
padding: 0 6px;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
align-items: center;
|
|
||||||
width: 100px;
|
|
||||||
height: 40px;
|
|
||||||
justify-content: center;
|
|
||||||
text-align: center;
|
|
||||||
z-index: 2;
|
|
||||||
color: @beige;
|
|
||||||
|
|
||||||
input[type='number'] {
|
|
||||||
background: transparent;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
width: 40px;
|
|
||||||
height: 30px;
|
|
||||||
text-align: center;
|
|
||||||
border: none;
|
|
||||||
outline: 2px solid transparent;
|
|
||||||
color: @beige;
|
|
||||||
|
|
||||||
&.bar-input {
|
|
||||||
padding: 0;
|
|
||||||
color: @beige;
|
|
||||||
backdrop-filter: none;
|
|
||||||
background: transparent;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
background: @semi-transparent-dark-blue;
|
|
||||||
backdrop-filter: blur(9.5px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bar-label {
|
|
||||||
width: 40px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.progress-bar {
|
|
||||||
position: absolute;
|
|
||||||
appearance: none;
|
|
||||||
width: 100px;
|
|
||||||
height: 40px;
|
|
||||||
border: 1px solid @color-border;
|
|
||||||
border-radius: 6px;
|
|
||||||
z-index: 1;
|
|
||||||
background: @dark-blue;
|
|
||||||
|
|
||||||
&::-webkit-progress-bar {
|
|
||||||
border: none;
|
|
||||||
background: @dark-blue;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
&::-webkit-progress-value {
|
|
||||||
background: @gradient-hp;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
&.stress-color::-webkit-progress-value {
|
|
||||||
background: @gradient-stress;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
&::-moz-progress-bar {
|
|
||||||
background: @gradient-hp;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
&.stress-color::-moz-progress-bar {
|
|
||||||
background: @gradient-stress;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-section {
|
.status-section {
|
||||||
|
|
@ -256,7 +157,7 @@
|
||||||
.status-label {
|
.status-label {
|
||||||
padding: 2px 10px;
|
padding: 2px 10px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-radius: 3px;
|
border-radius: 0 0 3px 3px;
|
||||||
background: light-dark(@dark-blue, @golden);
|
background: light-dark(@dark-blue, @golden);
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
|
|
@ -284,8 +185,8 @@
|
||||||
|
|
||||||
.shortcut-items-section {
|
.shortcut-items-section {
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
padding-top: 10px;
|
padding: 10px 0;
|
||||||
padding-bottom: 20px;
|
flex: 1;
|
||||||
scrollbar-gutter: stable;
|
scrollbar-gutter: stable;
|
||||||
.with-scroll-shadows();
|
.with-scroll-shadows();
|
||||||
|
|
||||||
|
|
@ -313,8 +214,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.experience-section {
|
.experience-section {
|
||||||
margin-bottom: 20px;
|
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 15px;
|
gap: 15px;
|
||||||
|
|
@ -331,21 +230,21 @@
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
align-items: center;
|
align-items: stretch;
|
||||||
|
padding: 0 4px 0 12px;
|
||||||
|
|
||||||
.experience-row {
|
.experience-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
width: 250px;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.experience-name {
|
.experience-name {
|
||||||
width: 180px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
text-align: start;
|
text-align: start;
|
||||||
font-size: var(--font-size-14);
|
font-size: var(--font-size-14);
|
||||||
|
flex: 1;
|
||||||
color: light-dark(@dark, @beige);
|
color: light-dark(@dark, @beige);
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
}
|
}
|
||||||
|
|
@ -370,9 +269,7 @@
|
||||||
|
|
||||||
.reaction-section {
|
.reaction-section {
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 0 10px;
|
margin: 10px;
|
||||||
margin-top: 20px;
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
button {
|
button {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
|
|
|
||||||
|
|
@ -8,17 +8,11 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
height: 100%;
|
flex: 1;
|
||||||
overflow-y: auto;
|
|
||||||
padding-top: 8px;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
height: 100%;
|
|
||||||
.with-scroll-shadows();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.characteristics-section {
|
.characteristics-section {
|
||||||
gap: 20px;
|
gap: 20px;
|
||||||
padding: 0 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.biography-section {
|
.biography-section {
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,6 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
overflow-y: auto;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
.with-scroll-shadows();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,6 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
overflow-y: auto;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
.with-scroll-shadows();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,16 +19,19 @@
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style.character {
|
.application.sheet.daggerheart.actor.dh-style.character {
|
||||||
.character-header-sheet {
|
.character-header-sheet {
|
||||||
padding: 0 15px;
|
|
||||||
padding-top: var(--header-height);
|
padding-top: var(--header-height);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
|
> *:not(line-div, .tab-navigation) {
|
||||||
|
margin-left: var(--side-indent);
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
.name-row {
|
.name-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 6px;
|
gap: 6px;
|
||||||
align-items: start;
|
align-items: start;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
padding: 0;
|
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
||||||
|
|
@ -100,8 +103,8 @@
|
||||||
.character-details {
|
.character-details {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
padding: 5px 0;
|
margin-top: 5px;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 10px;
|
||||||
font-size: var(--font-size-12);
|
font-size: var(--font-size-12);
|
||||||
color: @color-text-emphatic;
|
color: @color-text-emphatic;
|
||||||
|
|
||||||
|
|
@ -130,7 +133,6 @@
|
||||||
.character-row {
|
.character-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0;
|
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
|
|
||||||
.resource-section {
|
.resource-section {
|
||||||
|
|
@ -218,7 +220,6 @@
|
||||||
|
|
||||||
.character-traits {
|
.character-traits {
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 0;
|
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
max-width: 38.5rem;
|
max-width: 38.5rem;
|
||||||
|
|
@ -325,5 +326,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tab-navigation button[data-action="openSettings"] {
|
||||||
|
margin-right: 12px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
|
@import './sheet.less';
|
||||||
@import './biography.less';
|
@import './biography.less';
|
||||||
@import './effects.less';
|
@import './effects.less';
|
||||||
@import './features.less';
|
@import './features.less';
|
||||||
@import './header.less';
|
@import './header.less';
|
||||||
@import './inventory.less';
|
@import './inventory.less';
|
||||||
@import './loadout.less';
|
@import './loadout.less';
|
||||||
@import './sheet.less';
|
|
||||||
@import './sidebar.less';
|
@import './sidebar.less';
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,6 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
overflow-y: auto;
|
|
||||||
margin-top: 20px;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
.with-scroll-shadows();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,11 +50,6 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
height: 100%;
|
|
||||||
overflow-y: auto;
|
|
||||||
margin-top: 20px;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
.with-scroll-shadows();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
@import '../../../utils/fonts.less';
|
@import '../../../utils/fonts.less';
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style.character {
|
.application.sheet.daggerheart.actor.dh-style.character {
|
||||||
|
--side-indent: 16px;
|
||||||
|
|
||||||
.window-content {
|
.window-content {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 275px 1fr;
|
grid-template-columns: 275px 1fr;
|
||||||
|
|
@ -10,28 +12,34 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.character-sidebar-sheet {
|
||||||
|
grid-row: 1 / span 2;
|
||||||
|
grid-column: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
.character-sidebar-sheet {
|
.character-header-sheet {
|
||||||
grid-row: 1 / span 2;
|
position: relative;
|
||||||
grid-column: 1;
|
grid-row: 1;
|
||||||
|
grid-column: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab {
|
||||||
|
grid-row: 2;
|
||||||
|
grid-column: 2;
|
||||||
|
padding-right: 0;
|
||||||
|
margin-right: 2px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
&.active {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
overflow: hidden;
|
||||||
|
margin: 0 0 10px 0;
|
||||||
.character-header-sheet {
|
padding: 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab {
|
|
||||||
grid-row: 2;
|
|
||||||
grid-column: 2;
|
|
||||||
&.active {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -89,113 +89,13 @@
|
||||||
|
|
||||||
.resources-section {
|
.resources-section {
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
margin: 8px 2px 8px 2px;
|
margin: 8px 2px 0 2px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.resources-section {
|
.resources-section {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-evenly;
|
justify-content: space-evenly;
|
||||||
margin-bottom: 20px;
|
|
||||||
|
|
||||||
.status-bar {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
position: relative;
|
|
||||||
width: 120px;
|
|
||||||
height: 40px;
|
|
||||||
|
|
||||||
.status-label {
|
|
||||||
position: relative;
|
|
||||||
top: 40px;
|
|
||||||
height: 22px;
|
|
||||||
width: 79px;
|
|
||||||
clip-path: path('M0 0H79L74 16.5L39 22L4 16.5L0 0Z');
|
|
||||||
background: light-dark(@dark-blue, @golden);
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 18px;
|
|
||||||
color: light-dark(@beige, @dark-blue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-value {
|
|
||||||
position: absolute;
|
|
||||||
display: flex;
|
|
||||||
padding: 0 5px;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
align-items: center;
|
|
||||||
width: 140px;
|
|
||||||
height: 40px;
|
|
||||||
justify-content: center;
|
|
||||||
text-align: center;
|
|
||||||
z-index: 2;
|
|
||||||
color: @beige;
|
|
||||||
|
|
||||||
input[type='number'] {
|
|
||||||
background: transparent;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
width: 40px;
|
|
||||||
height: 30px;
|
|
||||||
text-align: center;
|
|
||||||
border: none;
|
|
||||||
outline: 2px solid transparent;
|
|
||||||
color: @beige;
|
|
||||||
|
|
||||||
&.bar-input {
|
|
||||||
padding: 0;
|
|
||||||
color: @beige;
|
|
||||||
backdrop-filter: none;
|
|
||||||
background: transparent;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
background: @semi-transparent-dark-blue;
|
|
||||||
backdrop-filter: blur(9.5px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bar-label {
|
|
||||||
width: 40px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.progress-bar {
|
|
||||||
position: absolute;
|
|
||||||
appearance: none;
|
|
||||||
width: 100px;
|
|
||||||
height: 40px;
|
|
||||||
border: 1px solid @color-border;
|
|
||||||
border-radius: 6px;
|
|
||||||
z-index: 1;
|
|
||||||
background: @dark-blue;
|
|
||||||
|
|
||||||
&::-webkit-progress-bar {
|
|
||||||
border: none;
|
|
||||||
background: @dark-blue;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
&::-webkit-progress-value {
|
|
||||||
background: @gradient-hp;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
&.stress-color::-webkit-progress-value {
|
|
||||||
background: @gradient-stress;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
&::-moz-progress-bar {
|
|
||||||
background: @gradient-hp;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
&.stress-color::-moz-progress-bar {
|
|
||||||
background: @gradient-stress;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-section {
|
.status-section {
|
||||||
|
|
@ -245,21 +145,21 @@
|
||||||
|
|
||||||
.status-bar.armor-slots {
|
.status-bar.armor-slots {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
|
||||||
position: relative;
|
|
||||||
width: 95px;
|
width: 95px;
|
||||||
height: 30px;
|
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|
||||||
|
.status-label {
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
.status-label {
|
.status-label {
|
||||||
padding: 2px 2px;
|
padding: 2px 2px;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 30px;
|
|
||||||
height: 22px;
|
height: 22px;
|
||||||
width: 95px;
|
width: 95px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
background: light-dark(@dark-blue, @golden);
|
background: light-dark(@dark-blue, @golden);
|
||||||
clip-path: none;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
@ -291,40 +191,16 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.slot-value {
|
.slot-value {
|
||||||
position: absolute;
|
|
||||||
display: flex;
|
|
||||||
padding: 0 5px;
|
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
align-items: center;
|
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
justify-content: center;
|
|
||||||
text-align: center;
|
|
||||||
z-index: 2;
|
|
||||||
color: light-dark(@dark-blue, @beige);
|
color: light-dark(@dark-blue, @beige);
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.slot-bar {
|
.slot-bar {
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 4px;
|
|
||||||
padding: 5px;
|
|
||||||
border: 1px solid @color-border;
|
|
||||||
border-radius: 6px;
|
|
||||||
z-index: 1;
|
|
||||||
background: @dark-blue;
|
background: @dark-blue;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
color: @color-text-emphatic;
|
border-bottom: none;
|
||||||
|
|
||||||
.armor-slot {
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
font-size: var(--font-size-12);
|
|
||||||
|
|
||||||
.fa-shield-halved {
|
|
||||||
color: light-dark(@dark-blue-40, @golden-40);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.slot-label {
|
.slot-label {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -364,41 +240,21 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.status-value {
|
.status-value {
|
||||||
position: absolute;
|
|
||||||
display: flex;
|
|
||||||
padding: 0 6px;
|
padding: 0 6px;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
align-items: center;
|
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
text-align: center;
|
|
||||||
z-index: 2;
|
|
||||||
color: light-dark(@dark-blue, @beige);
|
color: light-dark(@dark-blue, @beige);
|
||||||
border: 1px solid @color-border;
|
|
||||||
border-bottom: none;
|
|
||||||
border-radius: 6px 6px 0 0;
|
|
||||||
|
|
||||||
input[type='number'] {
|
input[type='number'] {
|
||||||
background: transparent;
|
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
text-align: center;
|
|
||||||
border: none;
|
|
||||||
outline: 2px solid transparent;
|
|
||||||
color: light-dark(@dark-blue, @beige);
|
color: light-dark(@dark-blue, @beige);
|
||||||
|
|
||||||
&.bar-input {
|
&.bar-input {
|
||||||
padding: 0;
|
|
||||||
color: light-dark(@dark-blue, @beige);
|
color: light-dark(@dark-blue, @beige);
|
||||||
backdrop-filter: none;
|
|
||||||
background: transparent;
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
background: @semi-transparent-dark-blue;
|
|
||||||
backdrop-filter: blur(9.5px);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -407,32 +263,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.progress-bar {
|
.progress-bar {
|
||||||
position: absolute;
|
|
||||||
appearance: none;
|
|
||||||
width: 80px;
|
|
||||||
height: 30px;
|
|
||||||
border: 1px solid @color-border;
|
|
||||||
border-radius: 6px;
|
|
||||||
z-index: 1;
|
|
||||||
background: light-dark(transparent, @dark-blue);
|
background: light-dark(transparent, @dark-blue);
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
border-radius: 6px 6px 0 0;
|
border-radius: 6px 6px 0 0;
|
||||||
&::-webkit-progress-bar {
|
|
||||||
border: none;
|
|
||||||
background: light-dark(transparent, @dark-blue);
|
|
||||||
}
|
|
||||||
&::-webkit-progress-value {
|
|
||||||
background: @gradient-stress;
|
|
||||||
}
|
|
||||||
&.stress-color::-webkit-progress-value {
|
|
||||||
background: @gradient-stress;
|
|
||||||
}
|
|
||||||
&::-moz-progress-bar {
|
|
||||||
background: @gradient-stress;
|
|
||||||
}
|
|
||||||
&.stress-color::-moz-progress-bar {
|
|
||||||
background: @gradient-stress;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,17 @@
|
||||||
@import '../../../utils/colors.less';
|
@import '../../../utils/colors.less';
|
||||||
|
@import '../../../utils/mixin.less';
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style.companion {
|
.application.sheet.daggerheart.actor.dh-style.companion {
|
||||||
.tab.effects {
|
.tab.effects {
|
||||||
|
margin-right: 2px;
|
||||||
|
padding-right: 0;
|
||||||
.effects-sections {
|
.effects-sections {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding-bottom: 20px;
|
padding-bottom: 4px;
|
||||||
|
scrollbar-gutter: stable;
|
||||||
.with-scroll-shadows();
|
.with-scroll-shadows();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,6 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
overflow-y: auto;
|
|
||||||
padding-bottom: 4px;
|
|
||||||
.with-scroll-shadows();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -138,10 +138,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.environment-navigation {
|
.environment-navigation {
|
||||||
padding: 0 20px;
|
padding-right: 20px;
|
||||||
|
|
||||||
.tab-navigation {
|
.tab-navigation {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
|
@import './sheet.less';
|
||||||
@import './features.less';
|
@import './features.less';
|
||||||
@import './header.less';
|
@import './header.less';
|
||||||
@import './potentialAdversaries.less';
|
@import './potentialAdversaries.less';
|
||||||
@import './sheet.less';
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
@import '../../../utils/colors.less';
|
@import '../../../utils/colors.less';
|
||||||
|
@import '../../../utils/mixin.less';
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style.environment {
|
.application.sheet.daggerheart.actor.dh-style.environment {
|
||||||
.tab.potentialAdversaries {
|
.tab.potentialAdversaries {
|
||||||
|
|
@ -6,9 +7,6 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
overflow-y: auto;
|
|
||||||
padding-bottom: 4px;
|
|
||||||
.with-scroll-shadows();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
|
@import './sheet.less';
|
||||||
@import './header.less';
|
@import './header.less';
|
||||||
@import './party-members.less';
|
@import './party-members.less';
|
||||||
@import './sheet.less';
|
|
||||||
@import './inventory.less';
|
@import './inventory.less';
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,6 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
overflow-y: auto;
|
|
||||||
margin-top: 20px;
|
|
||||||
padding-bottom: 4px;
|
|
||||||
.with-scroll-shadows();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,295 +1,287 @@
|
||||||
@import '../../../utils/colors.less';
|
@import '../../../utils/colors.less';
|
||||||
@import '../../../utils/fonts.less';
|
@import '../../../utils/fonts.less';
|
||||||
@import '../../../utils/mixin.less';
|
@import '../../../utils/mixin.less';
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style.party .tab.partyMembers {
|
.application.sheet.daggerheart.actor.dh-style.party .tab.partyMembers.active {
|
||||||
overflow: auto;
|
padding: var(--spacer-8) 4px 0 10px;
|
||||||
|
scrollbar-gutter: stable;
|
||||||
.actors-list {
|
.with-scroll-shadows();
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
.actions-section {
|
||||||
gap: 8px;
|
display: flex;
|
||||||
align-items: stretch;
|
align-items: center;
|
||||||
width: 100%;
|
justify-content: center;
|
||||||
|
padding: 10px;
|
||||||
.actor-resources {
|
margin-bottom: 10px;
|
||||||
display: grid;
|
gap: 20px;
|
||||||
grid-template:
|
background-color: light-dark(@dark-blue-10, @golden-10);
|
||||||
"img header" min-content
|
|
||||||
"img body" 1fr
|
button {
|
||||||
/ 7.5rem 1fr;
|
span {
|
||||||
gap: 6px;
|
font-size: 12px;
|
||||||
column-gap: 12px;
|
}
|
||||||
padding: 6px;
|
}
|
||||||
background-color: light-dark(@dark-blue-10, @golden-10);
|
|
||||||
|
.active-action {
|
||||||
.actor-img-frame {
|
animation: glow 0.75s infinite alternate;
|
||||||
grid-area: img;
|
}
|
||||||
width: 7.375rem;
|
}
|
||||||
height: 7.375rem;
|
|
||||||
position: relative;
|
.actors-list {
|
||||||
|
display: flex;
|
||||||
.actor-img {
|
flex-direction: column;
|
||||||
object-fit: cover;
|
gap: 8px;
|
||||||
object-position: top center;
|
align-items: stretch;
|
||||||
border-radius: 6px;
|
width: 100%;
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
.actor-resources {
|
||||||
}
|
display: grid;
|
||||||
|
grid-template:
|
||||||
.equipped-weapons {
|
"img header" min-content
|
||||||
position: absolute;
|
"img body" 1fr
|
||||||
top: -2px;
|
/ 7.5rem 1fr;
|
||||||
left: -3px;
|
gap: 6px;
|
||||||
display: flex;
|
column-gap: 12px;
|
||||||
flex-direction: column;
|
padding: 6px;
|
||||||
gap: 1px;
|
background-color: light-dark(@dark-blue-10, @golden-10);
|
||||||
img {
|
|
||||||
border-radius: 50%;
|
.actor-img-frame {
|
||||||
width: 24px;
|
grid-area: img;
|
||||||
height: 24px;
|
width: 7.375rem;
|
||||||
border: 1px solid @color-border;
|
height: 7.375rem;
|
||||||
object-fit: cover;
|
position: relative;
|
||||||
}
|
|
||||||
}
|
.actor-img {
|
||||||
|
object-fit: cover;
|
||||||
.evasion {
|
object-position: top center;
|
||||||
position: absolute;
|
border-radius: 6px;
|
||||||
top: 1px;
|
width: 100%;
|
||||||
right: 1px;
|
height: 100%;
|
||||||
width: 1.75rem;
|
}
|
||||||
height: 1.75rem;
|
|
||||||
background: url('../assets/svg/trait-shield.svg') no-repeat;
|
.equipped-weapons {
|
||||||
background-size: 100%;
|
position: absolute;
|
||||||
color: var(--color-light-1);
|
top: -2px;
|
||||||
font-size: var(--font-size-14);
|
left: -3px;
|
||||||
font-weight: 700;
|
display: flex;
|
||||||
display: flex;
|
flex-direction: column;
|
||||||
align-items: center;
|
gap: 1px;
|
||||||
justify-content: center;
|
img {
|
||||||
}
|
border-radius: 50%;
|
||||||
|
width: 24px;
|
||||||
.threshold-section {
|
height: 24px;
|
||||||
position: absolute;
|
border: 1px solid @color-border;
|
||||||
left: 0;
|
object-fit: cover;
|
||||||
right: 0;
|
}
|
||||||
bottom: -2px;
|
}
|
||||||
margin: auto;
|
|
||||||
|
.evasion {
|
||||||
display: flex;
|
position: absolute;
|
||||||
gap: 4px;
|
top: 1px;
|
||||||
background-color: light-dark(var(--color-light-1), @dark-blue);
|
right: 1px;
|
||||||
color: @color-text-emphatic;
|
width: 1.75rem;
|
||||||
padding: 4px 6px;
|
height: 1.75rem;
|
||||||
border: 1px solid @color-border;
|
background: url('../assets/svg/trait-shield.svg') no-repeat;
|
||||||
border-radius: 3px;
|
background-size: 100%;
|
||||||
align-items: baseline;
|
color: var(--color-light-1);
|
||||||
width: fit-content;
|
font-size: var(--font-size-14);
|
||||||
|
font-weight: 700;
|
||||||
h4 {
|
display: flex;
|
||||||
font-weight: bold;
|
align-items: center;
|
||||||
text-transform: uppercase;
|
justify-content: center;
|
||||||
white-space: nowrap;
|
}
|
||||||
|
|
||||||
&.threshold-label {
|
.threshold-section {
|
||||||
font-size: var(--font-size-10);
|
position: absolute;
|
||||||
color: @color-text-emphatic;
|
left: 0;
|
||||||
}
|
right: 0;
|
||||||
|
bottom: -2px;
|
||||||
&.threshold-value {
|
margin: auto;
|
||||||
font-size: var(--font-size-11);
|
|
||||||
color: light-dark(@dark, @beige);
|
display: flex;
|
||||||
}
|
gap: 4px;
|
||||||
}
|
background-color: light-dark(var(--color-light-1), @dark-blue);
|
||||||
}
|
color: @color-text-emphatic;
|
||||||
}
|
padding: 4px 6px;
|
||||||
|
border: 1px solid @color-border;
|
||||||
header {
|
border-radius: 3px;
|
||||||
grid-area: header;
|
align-items: baseline;
|
||||||
display: grid;
|
width: fit-content;
|
||||||
grid-template:
|
|
||||||
"name hope" min-content
|
h4 {
|
||||||
"subtitle subtitle" min-content
|
font-weight: bold;
|
||||||
/ 1fr min-content;
|
text-transform: uppercase;
|
||||||
|
white-space: nowrap;
|
||||||
.actor-name {
|
|
||||||
width: 100%;
|
&.threshold-label {
|
||||||
z-index: 1;
|
font-size: var(--font-size-10);
|
||||||
font-size: var(--font-size-20);
|
color: @color-text-emphatic;
|
||||||
color: @color-text-emphatic;
|
}
|
||||||
font-weight: bold;
|
|
||||||
}
|
&.threshold-value {
|
||||||
|
font-size: var(--font-size-11);
|
||||||
.delete-icon {
|
color: light-dark(@dark, @beige);
|
||||||
font-size: 0.75em;
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
.subtitle {
|
}
|
||||||
grid-area: subtitle;
|
|
||||||
font-size: var(--font-size-14);
|
header {
|
||||||
}
|
grid-area: header;
|
||||||
|
display: grid;
|
||||||
.hope-section {
|
grid-template:
|
||||||
display: flex;
|
"name hope" min-content
|
||||||
background-color: light-dark(transparent, @dark-blue);
|
"subtitle subtitle" min-content
|
||||||
color: @color-text-emphatic;
|
/ 1fr min-content;
|
||||||
padding: 3px 6px;
|
|
||||||
border: 1px solid @color-border;
|
.actor-name {
|
||||||
border-radius: 3px;
|
width: 100%;
|
||||||
align-items: center;
|
z-index: 1;
|
||||||
width: fit-content;
|
font-size: var(--font-size-20);
|
||||||
margin-left: auto;
|
color: @color-text-emphatic;
|
||||||
|
font-weight: bold;
|
||||||
h4 {
|
}
|
||||||
font-size: var(--font-size-12);
|
|
||||||
font-weight: bold;
|
.delete-icon {
|
||||||
text-transform: uppercase;
|
font-size: 0.75em;
|
||||||
color: @color-text-emphatic;
|
}
|
||||||
margin-right: 3px;
|
|
||||||
}
|
.subtitle {
|
||||||
|
grid-area: subtitle;
|
||||||
.hope-value {
|
font-size: var(--font-size-14);
|
||||||
display: flex;
|
}
|
||||||
cursor: pointer;
|
|
||||||
font-size: var(--font-size-12);
|
.hope-section {
|
||||||
margin-left: 1px;
|
display: flex;
|
||||||
}
|
background-color: light-dark(transparent, @dark-blue);
|
||||||
}
|
color: @color-text-emphatic;
|
||||||
}
|
padding: 3px 6px;
|
||||||
|
border: 1px solid @color-border;
|
||||||
.body {
|
border-radius: 3px;
|
||||||
grid-area: body;
|
align-items: center;
|
||||||
display: flex;
|
width: fit-content;
|
||||||
align-items: start;
|
margin-left: auto;
|
||||||
justify-content: space-between;
|
|
||||||
}
|
h4 {
|
||||||
|
font-size: var(--font-size-12);
|
||||||
.resources {
|
font-weight: bold;
|
||||||
display: flex;
|
text-transform: uppercase;
|
||||||
flex-direction: column;
|
color: @color-text-emphatic;
|
||||||
gap: 4px;
|
margin-right: 3px;
|
||||||
|
}
|
||||||
.slot-section {
|
|
||||||
display: flex;
|
.hope-value {
|
||||||
flex-direction: row;
|
display: flex;
|
||||||
align-items: stretch;
|
cursor: pointer;
|
||||||
|
font-size: var(--font-size-12);
|
||||||
.slot-label {
|
margin-left: 1px;
|
||||||
display: flex;
|
}
|
||||||
align-items: center;
|
}
|
||||||
color: light-dark(@beige, @dark-blue);
|
}
|
||||||
background: light-dark(@dark-blue, @golden);
|
|
||||||
padding: 0 4px;
|
.body {
|
||||||
width: fit-content;
|
grid-area: body;
|
||||||
font-weight: bold;
|
display: flex;
|
||||||
border-radius: 6px 0px 0px 6px;
|
align-items: start;
|
||||||
font-size: var(--font-size-12);
|
justify-content: space-between;
|
||||||
white-space: nowrap;
|
}
|
||||||
|
|
||||||
.label {
|
.resources {
|
||||||
padding-right: 2px;
|
display: flex;
|
||||||
}
|
flex-direction: column;
|
||||||
|
gap: 4px;
|
||||||
.value {
|
|
||||||
font-variant-numeric: tabular-nums;
|
.slot-section {
|
||||||
.current {
|
display: flex;
|
||||||
display: inline-block;
|
flex-direction: row;
|
||||||
text-align: end;
|
align-items: stretch;
|
||||||
width: 2ch;
|
|
||||||
}
|
.slot-label {
|
||||||
.max {
|
display: flex;
|
||||||
display: inline-block;
|
align-items: center;
|
||||||
text-align: start;
|
color: light-dark(@beige, @dark-blue);
|
||||||
width: 2ch;
|
background: light-dark(@dark-blue, @golden);
|
||||||
}
|
padding: 0 4px;
|
||||||
}
|
width: fit-content;
|
||||||
}
|
font-weight: bold;
|
||||||
|
border-radius: 6px 0px 0px 6px;
|
||||||
.slot-bar {
|
font-size: var(--font-size-12);
|
||||||
display: flex;
|
white-space: nowrap;
|
||||||
align-items: center;
|
|
||||||
flex-wrap: wrap;
|
.label {
|
||||||
gap: 4px;
|
padding-right: 2px;
|
||||||
|
}
|
||||||
background-color: light-dark(@dark-blue-10, @dark-blue);
|
|
||||||
color: @color-text-emphatic;
|
.value {
|
||||||
padding: 2px 5px;
|
font-variant-numeric: tabular-nums;
|
||||||
border: 1px solid @color-border;
|
.current {
|
||||||
border-radius: 0 6px 6px 0;
|
display: inline-block;
|
||||||
width: fit-content;
|
text-align: end;
|
||||||
min-height: 22px;
|
width: 2ch;
|
||||||
|
}
|
||||||
.armor-slot {
|
.max {
|
||||||
cursor: pointer;
|
display: inline-block;
|
||||||
transition: all 0.3s ease;
|
text-align: start;
|
||||||
font-size: var(--font-size-12);
|
width: 2ch;
|
||||||
|
}
|
||||||
.fa-shield-halved {
|
}
|
||||||
color: light-dark(@dark-blue-40, @golden-40);
|
}
|
||||||
}
|
|
||||||
}
|
.slot-bar {
|
||||||
|
align-items: center;
|
||||||
.slot {
|
flex-wrap: wrap;
|
||||||
width: 16px;
|
background-color: light-dark(@dark-blue-10, @dark-blue);
|
||||||
height: 10px;
|
padding: 2px 5px;
|
||||||
border: 1px solid @color-border;
|
border-radius: 0 6px 6px 0;
|
||||||
background: light-dark(@dark-blue-10, @golden-10);
|
width: fit-content;
|
||||||
border-radius: 3px;
|
}
|
||||||
transition: all 0.3s ease;
|
}
|
||||||
cursor: pointer;
|
}
|
||||||
|
|
||||||
&.filled {
|
.traits {
|
||||||
background: light-dark(@dark-blue, @golden);
|
background-color: light-dark(@dark-blue-10, @dark-blue);
|
||||||
}
|
border: 1px solid @color-border;
|
||||||
}
|
border-radius: 6px;
|
||||||
}
|
display: grid;
|
||||||
}
|
grid-template-columns: 1fr 1fr;
|
||||||
}
|
font-size: var(--font-size-12);
|
||||||
|
padding: 3px 4px;
|
||||||
.traits {
|
gap: 3px 7px;
|
||||||
background-color: light-dark(@dark-blue-10, @dark-blue);
|
.trait {
|
||||||
border: 1px solid @color-border;
|
display: flex;
|
||||||
border-radius: 6px;
|
justify-content: space-between;
|
||||||
display: grid;
|
gap: 3px;
|
||||||
grid-template-columns: 1fr 1fr;
|
.label {
|
||||||
font-size: var(--font-size-12);
|
color: @color-text-emphatic;
|
||||||
padding: 3px 4px;
|
}
|
||||||
gap: 3px 7px;
|
.value {
|
||||||
.trait {
|
font-weight: 600;
|
||||||
display: flex;
|
}
|
||||||
justify-content: space-between;
|
}
|
||||||
gap: 3px;
|
}
|
||||||
.label {
|
}
|
||||||
color: @color-text-emphatic;
|
}
|
||||||
}
|
|
||||||
.value {
|
.actors-list.limited {
|
||||||
font-weight: 600;
|
.actor-resources {
|
||||||
}
|
display: flex;
|
||||||
}
|
align-items: center;
|
||||||
}
|
}
|
||||||
}
|
.actor-img-frame {
|
||||||
}
|
width: 3rem;
|
||||||
|
height: 3rem;
|
||||||
.actors-list.limited {
|
}
|
||||||
.actor-resources {
|
}
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
.actors-dragger {
|
||||||
}
|
display: flex;
|
||||||
.actor-img-frame {
|
align-items: center;
|
||||||
width: 3rem;
|
justify-content: center;
|
||||||
height: 3rem;
|
box-sizing: border-box;
|
||||||
}
|
width: 100%;
|
||||||
}
|
height: 40px;
|
||||||
|
border: 1px dashed light-dark(@dark-blue-50, @beige-50);
|
||||||
.actors-dragger {
|
border-radius: 3px;
|
||||||
display: flex;
|
color: light-dark(@dark-blue-50, @beige-50);
|
||||||
align-items: center;
|
}
|
||||||
justify-content: center;
|
}
|
||||||
box-sizing: border-box;
|
|
||||||
width: 100%;
|
|
||||||
height: 40px;
|
|
||||||
border: 1px dashed light-dark(@dark-blue-50, @beige-50);
|
|
||||||
border-radius: 3px;
|
|
||||||
color: light-dark(@dark-blue-50, @beige-50);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -17,35 +17,10 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
.application.sheet.daggerheart.actor.dh-style.party {
|
.application.sheet.daggerheart.actor.dh-style.party {
|
||||||
.tab {
|
.tab.active {
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
overflow-y: auto;
|
|
||||||
scrollbar-gutter: stable;
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
overflow: auto;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.actions-section {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
gap: 20px;
|
|
||||||
background-color: light-dark(@dark-blue-10, @golden-10);
|
|
||||||
|
|
||||||
button {
|
|
||||||
span {
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.active-action {
|
|
||||||
animation: glow 0.75s infinite alternate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -174,10 +174,10 @@
|
||||||
--fade-start: 0;
|
--fade-start: 0;
|
||||||
}
|
}
|
||||||
10%, 100% {
|
10%, 100% {
|
||||||
--fade-start: 12px;
|
--fade-start: 14px;
|
||||||
}
|
}
|
||||||
0%, 90% {
|
0%, 90% {
|
||||||
--fade-end: 12px;
|
--fade-end: 14px;
|
||||||
}
|
}
|
||||||
100% {
|
100% {
|
||||||
--fade-end: 0;
|
--fade-end: 0;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "daggerheart",
|
"id": "daggerheart",
|
||||||
"title": "Daggerheart",
|
"title": "Daggerheart",
|
||||||
"description": "An unofficial implementation of the Daggerheart system",
|
"description": "An unofficial implementation of the Daggerheart system",
|
||||||
"version": "2.4.1",
|
"version": "2.4.2",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "14.364",
|
"minimum": "14.364",
|
||||||
"verified": "14.364",
|
"verified": "14.364",
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
},
|
},
|
||||||
"url": "https://github.com/Foundryborne/daggerheart",
|
"url": "https://github.com/Foundryborne/daggerheart",
|
||||||
"manifest": "https://raw.githubusercontent.com/Foundryborne/daggerheart/v14/system.json",
|
"manifest": "https://raw.githubusercontent.com/Foundryborne/daggerheart/v14/system.json",
|
||||||
"download": "https://github.com/Foundryborne/daggerheart/releases/download/2.4.1/system.zip",
|
"download": "https://github.com/Foundryborne/daggerheart/releases/download/2.4.2/system.zip",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "WBHarry"
|
"name": "WBHarry"
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,10 @@
|
||||||
<a class="btn" data-tooltip="{{localize "CONTROLS.CommonDelete"}}" data-action="removeElement" data-index="{{index}}"><i class="fas fa-trash"></i></a>
|
<a class="btn" data-tooltip="{{localize "CONTROLS.CommonDelete"}}" data-action="removeElement" data-index="{{index}}"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="nest-inputs">
|
<div class="nest-inputs">
|
||||||
{{formField ../fields.type value=area.type name=(concat "areas." index ".type") localize=true}}
|
{{formField ../fields.type value=area.type name=(concat "areas." index ".type") localize=true blank=false}}
|
||||||
{{formField ../fields.shape value=area.shape name=(concat "areas." index ".shape") localize=true}}
|
{{formField ../fields.shape value=area.shape name=(concat "areas." index ".shape") localize=true blank=false}}
|
||||||
{{formField ../fields.size value=area.size name=(concat "areas." index ".size") localize=true}}
|
{{formField ../fields.size value=area.size name=(concat "areas." index ".size") localize=true blank=false}}
|
||||||
|
{{formField ../fields.hasHole value=area.hasHole name=(concat "areas." index ".hasHole") localize=true classes="auto-sized" }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="sub-section-header">
|
<div class="sub-section-header">
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,22 @@
|
||||||
<section class='tab {{tabs.effects.cssClass}} {{tabs.effects.id}}' data-tab='{{tabs.effects.id}}'
|
<section class='tab {{tabs.effects.cssClass}} {{tabs.effects.id}}' data-tab='{{tabs.effects.id}}'
|
||||||
data-group='{{tabs.effects.group}}'>
|
data-group='{{tabs.effects.group}}'>
|
||||||
<div class="effects-sections">
|
<div class="effects-sections scroll-container">
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='DAGGERHEART.GENERAL.activeEffects'
|
title='DAGGERHEART.GENERAL.activeEffects'
|
||||||
type='effect'
|
type='effect'
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
collection=effects.actives
|
collection=effects.actives
|
||||||
canCreate=@root.editable
|
canCreate=@root.editable
|
||||||
hideResources=true
|
hideResources=true
|
||||||
}}
|
}}
|
||||||
|
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='DAGGERHEART.GENERAL.inactiveEffects'
|
title='DAGGERHEART.GENERAL.inactiveEffects'
|
||||||
type='effect'
|
type='effect'
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
collection=effects.inactives
|
collection=effects.inactives
|
||||||
canCreate=@root.editable
|
canCreate=@root.editable
|
||||||
hideResources=true
|
hideResources=true
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -1,14 +1,17 @@
|
||||||
<section class='tab {{tabs.features.cssClass}} {{tabs.features.id}}' data-tab='{{tabs.features.id}}'
|
<section
|
||||||
data-group='{{tabs.features.group}}'>
|
class="tab {{tabs.features.cssClass}} {{tabs.features.id}}"
|
||||||
<div class="feature-section">
|
data-tab="{{tabs.features.id}}"
|
||||||
{{> 'daggerheart.inventory-items'
|
data-group="{{tabs.features.group}}">
|
||||||
title=tabs.features.label
|
<div class="feature-section scroll-container">
|
||||||
type='feature'
|
{{#each @root.features as |item|}}
|
||||||
collection=@root.features
|
{{> "daggerheart.inventory-item"
|
||||||
hideContextMenu=true
|
item=item
|
||||||
hideModifyControls=true
|
type="feature"
|
||||||
canCreate=@root.editable
|
actorType=@root.document.type
|
||||||
showActions=@root.editable
|
hideContextMenu=true
|
||||||
}}
|
hideModifyControls=true
|
||||||
|
showActions=@root.editable
|
||||||
|
}}
|
||||||
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,9 @@
|
||||||
<section
|
<section
|
||||||
class='tab {{tabs.notes.cssClass}} {{tabs.notes.id}}'
|
class="tab {{tabs.notes.cssClass}} {{tabs.notes.id}}"
|
||||||
data-tab='{{tabs.notes.id}}'
|
data-tab="{{tabs.notes.id}}"
|
||||||
data-group='{{tabs.notes.group}}'
|
data-group="{{tabs.notes.group}}"
|
||||||
>
|
>
|
||||||
<fieldset class="fit-height">
|
{{formInput notes.field value=notes.value enriched=notes.enriched toggled=true}}
|
||||||
<legend>{{localize tabs.notes.label}}</legend>
|
|
||||||
{{formInput notes.field value=notes.value enriched=notes.enriched toggled=true}}
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
{{#if (and showAttribution document.system.attribution.artist)}}
|
{{#if (and showAttribution document.system.attribution.artist)}}
|
||||||
<label class="artist-attribution">{{localize "DAGGERHEART.GENERAL.artistAttribution" artist=document.system.attribution.artist}}</label>
|
<label class="artist-attribution">{{localize "DAGGERHEART.GENERAL.artistAttribution" artist=document.system.attribution.artist}}</label>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
|
||||||
|
|
@ -1,100 +1,102 @@
|
||||||
<aside class="adversary-sidebar-sheet">
|
<aside class="adversary-sidebar-sheet">
|
||||||
<div class="portrait {{#if (and source.system.resources.hitPoints.max (gte source.system.resources.hitPoints.value source.system.resources.hitPoints.max))}}death-roll{{/if}}">
|
<div class="portrait {{#if (and source.system.resources.hitPoints.max (gte source.system.resources.hitPoints.value source.system.resources.hitPoints.max))}}death-roll{{/if}}">
|
||||||
<img src="{{source.img}}" alt="{{source.name}}" data-action='editImage' data-edit="img">
|
<img src="{{source.img}}" alt="{{source.name}}" data-action='editImage' data-edit="img">
|
||||||
<a class="death-roll-btn"><i class="fa-solid fa-skull death-save"></i></a>
|
<a class="death-roll-btn"><i class="fa-solid fa-skull death-save"></i></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info-section {{#if useResourcePips}}pip-display{{/if}}">
|
<div class="info-section {{#if useResourcePips}}pip-display{{/if}}">
|
||||||
<div class="resources-section">
|
<div class="resources-section">
|
||||||
{{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.hitPoints label="DAGGERHEART.GENERAL.HitPoints.short" key="system.resources.hitPoints.value" action="toggleHitPoints" }}
|
{{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.hitPoints label="DAGGERHEART.GENERAL.HitPoints.short" key="system.resources.hitPoints.value" action="toggleHitPoints" }}
|
||||||
{{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.stress label="DAGGERHEART.GENERAL.stress" key="system.resources.stress.value" action="toggleStress" }}
|
{{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.stress label="DAGGERHEART.GENERAL.stress" key="system.resources.stress.value" action="toggleStress" }}
|
||||||
</div>
|
</div>
|
||||||
<div class="status-section">
|
<div class="status-section">
|
||||||
<div class="status-number">
|
<div class="status-number">
|
||||||
<div class='status-value armor-slots'>
|
<div class='status-value armor-slots'>
|
||||||
{{#if source.system.difficulty}}
|
{{#if source.system.difficulty}}
|
||||||
<p>{{source.system.difficulty}}</p>
|
<p>{{source.system.difficulty}}</p>
|
||||||
{{else}}
|
{{else}}
|
||||||
<p>-</p>
|
<p>-</p>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<div class="status-label">
|
<div class="status-label">
|
||||||
<h4>{{localize "DAGGERHEART.GENERAL.difficulty"}}</h4>
|
<h4>{{localize "DAGGERHEART.GENERAL.difficulty"}}</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="status-number">
|
<div class="status-number">
|
||||||
<div class='status-value armor-slots'>
|
<div class='status-value armor-slots'>
|
||||||
{{#if source.system.attack.roll.bonus includeZero=true}}
|
{{#if source.system.attack.roll.bonus includeZero=true}}
|
||||||
<p>{{numberFormat source.system.attack.roll.bonus sign=true}}</p>
|
<p>{{numberFormat source.system.attack.roll.bonus sign=true}}</p>
|
||||||
{{else}}
|
{{else}}
|
||||||
<p>-</p>
|
<p>-</p>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<div class="status-label">
|
<div class="status-label">
|
||||||
<h4>{{localize "DAGGERHEART.GENERAL.attack"}}</h4>
|
<h4>{{localize "DAGGERHEART.GENERAL.attack"}}</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{#if (lt source.system.criticalThreshold 20)}}
|
{{#if (lt source.system.criticalThreshold 20)}}
|
||||||
<div class="status-number">
|
<div class="status-number">
|
||||||
<div class='status-value armor-slots'>
|
<div class='status-value armor-slots'>
|
||||||
<p>{{source.system.criticalThreshold}}+</p>
|
<p>{{source.system.criticalThreshold}}+</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="status-label">
|
<div class="status-label">
|
||||||
<h4>{{localize "DAGGERHEART.GENERAL.criticalShort"}}</h4>
|
<h4>{{localize "DAGGERHEART.GENERAL.criticalShort"}}</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<div class="status-section">
|
<div class="status-section">
|
||||||
<div class="threshold-section">
|
<div class="threshold-section">
|
||||||
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.minor"}}</h4>
|
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.minor"}}</h4>
|
||||||
<h4 class="threshold-value">{{document.system.damageThresholds.major}}</h4>
|
<h4 class="threshold-value">{{document.system.damageThresholds.major}}</h4>
|
||||||
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.major"}}</h4>
|
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.major"}}</h4>
|
||||||
<h4 class="threshold-value">{{document.system.damageThresholds.severe}}</h4>
|
<h4 class="threshold-value">{{document.system.damageThresholds.severe}}</h4>
|
||||||
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.severe"}}</h4>
|
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.severe"}}</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="shortcut-items-section">
|
<div class="shortcut-items-section">
|
||||||
<div class="attack-section">
|
<div class="attack-section">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<side-line-div class="invert"></side-line-div>
|
<side-line-div class="invert"></side-line-div>
|
||||||
<h3>{{localize "DAGGERHEART.GENERAL.attack"}}</h3>
|
<h3>{{localize "DAGGERHEART.GENERAL.attack"}}</h3>
|
||||||
<side-line-div></side-line-div>
|
<side-line-div></side-line-div>
|
||||||
</div>
|
</div>
|
||||||
<ul class="items-sidebar-list">
|
<ul class="items-sidebar-list">
|
||||||
{{> 'daggerheart.inventory-item-compact'
|
{{> 'daggerheart.inventory-item-compact'
|
||||||
item=document.system.attack
|
item=document.system.attack
|
||||||
type='attack'
|
type='attack'
|
||||||
noCompendiumEdit=true
|
noCompendiumEdit=true
|
||||||
}}
|
}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="experience-section">
|
<div class="experience-section">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<side-line-div class="invert"></side-line-div>
|
<side-line-div class="invert"></side-line-div>
|
||||||
<h3>{{localize "DAGGERHEART.GENERAL.experience.plural"}}</h3>
|
<h3>{{localize "DAGGERHEART.GENERAL.experience.plural"}}</h3>
|
||||||
<side-line-div></side-line-div>
|
<side-line-div></side-line-div>
|
||||||
</div>
|
</div>
|
||||||
<div class="experience-list">
|
<div class="experience-list">
|
||||||
{{#each source.system.experiences as |experience id|}}
|
{{#each source.system.experiences as |experience id|}}
|
||||||
<div class="experience-row" data-tooltip-text="{{experience.description}}">
|
<div class="experience-row" data-tooltip-text="{{experience.description}}">
|
||||||
<span class="experience-value">
|
<span class="experience-value">
|
||||||
+{{experience.value}}
|
+{{experience.value}}
|
||||||
</span>
|
</span>
|
||||||
<span class="experience-name">{{experience.name}}</span>
|
<span class="experience-name">{{experience.name}}</span>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a data-action="sendExpToChat" data-id="{{id}}">
|
<a data-action="sendExpToChat" data-id="{{id}}">
|
||||||
<i class="fa-regular fa-message"></i>
|
<i class="fa-regular fa-message"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<line-div></line-div>
|
</div>
|
||||||
<div class="reaction-section">
|
<div class="reaction-section">
|
||||||
<button type="button" data-action="reactionRoll">{{localize "DAGGERHEART.GENERAL.Roll.reaction"}}</button>
|
<button type="button" data-action="reactionRoll">
|
||||||
</div>
|
<i class="fa-solid fa-dice"></i>
|
||||||
</div>
|
{{localize "DAGGERHEART.GENERAL.Roll.reaction"}}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
@ -1,34 +1,34 @@
|
||||||
<section
|
<section
|
||||||
class='tab {{tabs.biography.cssClass}} {{tabs.biography.id}}'
|
class="tab {{tabs.biography.cssClass}} {{tabs.biography.id}}"
|
||||||
data-tab='{{tabs.biography.id}}'
|
data-tab="{{tabs.biography.id}}"
|
||||||
data-group='{{tabs.biography.group}}'
|
data-group='{{tabs.biography.group}}'
|
||||||
>
|
>
|
||||||
<div class="items-section">
|
<div class="items-section scroll-container">
|
||||||
<div class="characteristics-section flexrow">
|
<div class="characteristics-section flexrow">
|
||||||
<div class="input">
|
<div class="input">
|
||||||
<span>{{localize 'DAGGERHEART.ACTORS.Character.pronouns'}}</span>
|
<span>{{localize 'DAGGERHEART.ACTORS.Character.pronouns'}}</span>
|
||||||
{{formInput systemFields.biography.fields.characteristics.fields.pronouns value=source.system.biography.characteristics.pronouns enriched=source.system.biography.characteristics.pronouns localize=true toggled=true}}
|
{{formInput systemFields.biography.fields.characteristics.fields.pronouns value=source.system.biography.characteristics.pronouns enriched=source.system.biography.characteristics.pronouns localize=true toggled=true}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="input">
|
<div class="input">
|
||||||
<span>{{localize 'DAGGERHEART.ACTORS.Character.age'}}</span>
|
<span>{{localize 'DAGGERHEART.ACTORS.Character.age'}}</span>
|
||||||
{{formInput systemFields.biography.fields.characteristics.fields.age value=source.system.biography.characteristics.age enriched=source.system.biography.characteristics.age localize=true toggled=true}}
|
{{formInput systemFields.biography.fields.characteristics.fields.age value=source.system.biography.characteristics.age enriched=source.system.biography.characteristics.age localize=true toggled=true}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="input">
|
<div class="input">
|
||||||
<span>{{localize 'DAGGERHEART.ACTORS.Character.faith'}}</span>
|
<span>{{localize 'DAGGERHEART.ACTORS.Character.faith'}}</span>
|
||||||
{{formInput systemFields.biography.fields.characteristics.fields.faith value=source.system.biography.characteristics.faith enriched=source.system.biography.characteristics.faith localize=true toggled=true}}
|
{{formInput systemFields.biography.fields.characteristics.fields.faith value=source.system.biography.characteristics.faith enriched=source.system.biography.characteristics.faith localize=true toggled=true}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="glassy biography-section">
|
<fieldset class="glassy biography-section">
|
||||||
<legend>{{localize 'DAGGERHEART.ACTORS.Character.story.backgroundTitle'}}</legend>
|
<legend>{{localize 'DAGGERHEART.ACTORS.Character.story.backgroundTitle'}}</legend>
|
||||||
{{formInput background.field value=background.value enriched=background.enriched toggled=true}}
|
{{formInput background.field value=background.value enriched=background.enriched toggled=true}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="glassy biography-section">
|
<fieldset class="glassy biography-section">
|
||||||
<legend>{{localize 'DAGGERHEART.ACTORS.Character.story.connectionsTitle'}}</legend>
|
<legend>{{localize 'DAGGERHEART.ACTORS.Character.story.connectionsTitle'}}</legend>
|
||||||
{{formInput connections.field value=connections.value enriched=connections.enriched toggled=true}}
|
{{formInput connections.field value=connections.value enriched=connections.enriched toggled=true}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -1,24 +1,24 @@
|
||||||
<section class='tab {{tabs.effects.cssClass}} {{tabs.effects.id}}' data-tab='{{tabs.effects.id}}'
|
<section class='tab {{tabs.effects.cssClass}} {{tabs.effects.id}}' data-tab='{{tabs.effects.id}}'
|
||||||
data-group='{{tabs.effects.group}}'>
|
data-group='{{tabs.effects.group}}'>
|
||||||
|
|
||||||
<div class="effects-sections">
|
<div class="effects-sections scroll-container">
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='DAGGERHEART.GENERAL.activeEffects'
|
title='DAGGERHEART.GENERAL.activeEffects'
|
||||||
type='effect'
|
type='effect'
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
collection=effects.actives
|
collection=effects.actives
|
||||||
canCreate=@root.editable
|
canCreate=@root.editable
|
||||||
hideResources=true
|
hideResources=true
|
||||||
}}
|
}}
|
||||||
|
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='DAGGERHEART.GENERAL.inactiveEffects'
|
title='DAGGERHEART.GENERAL.inactiveEffects'
|
||||||
type='effect'
|
type='effect'
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
collection=effects.inactives
|
collection=effects.inactives
|
||||||
canCreate=@root.editable
|
canCreate=@root.editable
|
||||||
hideResources=true
|
hideResources=true
|
||||||
disabled=true
|
disabled=true
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -1,26 +1,28 @@
|
||||||
<section class='tab {{tabs.features.cssClass}} {{tabs.features.id}}' data-tab='{{tabs.features.id}}'
|
<section
|
||||||
data-group='{{tabs.features.group}}'>
|
class="tab {{tabs.features.cssClass}} {{tabs.features.id}}"
|
||||||
<div class="features-sections">
|
data-tab="{{tabs.features.id}}"
|
||||||
{{#each document.system.sheetLists as |category|}}
|
data-group="{{tabs.features.group}}">
|
||||||
{{#if (eq category.type 'feature' )}}
|
<div class="features-section scroll-container">
|
||||||
{{> 'daggerheart.inventory-items'
|
{{#each document.system.sheetLists as |category|}}
|
||||||
title=category.title
|
{{#if (eq category.type "feature" )}}
|
||||||
type='feature'
|
{{> "daggerheart.inventory-items"
|
||||||
actorType='character'
|
title=category.title
|
||||||
collection=category.values
|
type="feature"
|
||||||
canCreate=@root.editable
|
actorType="character"
|
||||||
showActions=@root.editable
|
collection=category.values
|
||||||
}}
|
canCreate=@root.editable
|
||||||
{{else if category.values}}
|
showActions=@root.editable
|
||||||
{{> 'daggerheart.inventory-items'
|
}}
|
||||||
title=category.title
|
{{else if category.values}}
|
||||||
type='feature'
|
{{> "daggerheart.inventory-items"
|
||||||
actorType='character'
|
title=category.title
|
||||||
collection=category.values
|
type="feature"
|
||||||
canCreate=false
|
actorType="character"
|
||||||
showActions=@root.editable
|
collection=category.values
|
||||||
}}
|
canCreate=false
|
||||||
{{/if}}
|
showActions=@root.editable
|
||||||
{{/each}}
|
}}
|
||||||
</div>
|
{{/if}}
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -1,165 +1,163 @@
|
||||||
<header class="character-header-sheet">
|
<header class="character-header-sheet">
|
||||||
<line-div></line-div>
|
<line-div></line-div>
|
||||||
<div class="name-row">
|
<div class="name-row">
|
||||||
<h1
|
<h1
|
||||||
class="actor-name input"
|
class="actor-name input"
|
||||||
contenteditable="plaintext-only"
|
contenteditable="plaintext-only"
|
||||||
data-property="name"
|
data-property="name"
|
||||||
placeholder="{{localize "DAGGERHEART.GENERAL.actorName"}}"
|
placeholder="{{localize "DAGGERHEART.GENERAL.actorName"}}"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
spellcheck="false"
|
spellcheck="false"
|
||||||
>{{source.name}}</h1>
|
>{{source.name}}</h1>
|
||||||
<div class='level-div'>
|
<div class='level-div'>
|
||||||
<h3 class='label'>
|
<h3 class='label'>
|
||||||
{{#if @root.editable}}
|
{{#if @root.editable}}
|
||||||
{{#if document.system.needsCharacterSetup}}
|
{{#if document.system.needsCharacterSetup}}
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="level-button glow"
|
class="level-button glow"
|
||||||
data-action="levelManagement"
|
data-action="levelManagement"
|
||||||
>
|
>
|
||||||
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.buttonTitle"}}
|
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.buttonTitle"}}
|
||||||
</button>
|
</button>
|
||||||
{{else if document.system.levelData.canLevelUp}}
|
{{else if document.system.levelData.canLevelUp}}
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="level-button glow" data-tooltip="{{localize "DAGGERHEART.ACTORS.Character.levelUp"}}"
|
class="level-button glow" data-tooltip="{{localize "DAGGERHEART.ACTORS.Character.levelUp"}}"
|
||||||
data-action="levelManagement"
|
data-action="levelManagement"
|
||||||
>
|
>
|
||||||
<i class="fa-solid fa-angles-up"></i>
|
<i class="fa-solid fa-angles-up"></i>
|
||||||
</button>
|
</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#unless document.system.needsCharacterSetup}}
|
{{#unless document.system.needsCharacterSetup}}
|
||||||
{{localize 'DAGGERHEART.GENERAL.level'}}
|
{{localize 'DAGGERHEART.GENERAL.level'}}
|
||||||
<input type="text" data-dtype="Number" class="level-value" value={{#if document.system.needsCharacterSetup}}0{{else}}{{document.system.levelData.level.changed}}{{/if}} {{#if document.system.needsCharacterSetup}}disabled{{/if}} />
|
<input type="text" data-dtype="Number" class="level-value" value={{#if document.system.needsCharacterSetup}}0{{else}}{{document.system.levelData.level.changed}}{{/if}} {{#if document.system.needsCharacterSetup}}disabled{{/if}} />
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="character-details">
|
<div class="character-details">
|
||||||
<div>
|
<div>
|
||||||
{{#if document.system.class.value}}
|
{{#if document.system.class.value}}
|
||||||
<span data-action="editDoc" data-item-uuid="{{document.system.class.value.uuid}}">{{document.system.class.value.name}}</span>
|
<span data-action="editDoc" data-item-uuid="{{document.system.class.value.uuid}}">{{document.system.class.value.name}}</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="missing-header-feature" data-action="openPack" data-key="classes">{{localize 'TYPES.Item.class'}}</span>
|
<span class="missing-header-feature" data-action="openPack" data-key="classes">{{localize 'TYPES.Item.class'}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span class="dot">•</span>
|
<span class="dot">•</span>
|
||||||
{{#if document.system.class.subclass}}
|
{{#if document.system.class.subclass}}
|
||||||
<span data-action="editDoc" data-item-uuid="{{document.system.class.subclass.uuid}}">{{document.system.class.subclass.name}}</span>
|
<span data-action="editDoc" data-item-uuid="{{document.system.class.subclass.uuid}}">{{document.system.class.subclass.name}}</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="missing-header-feature" data-action="openPack" data-key="subclasses">{{localize 'TYPES.Item.subclass'}}</span>
|
<span class="missing-header-feature" data-action="openPack" data-key="subclasses">{{localize 'TYPES.Item.subclass'}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span class="dot">•</span>
|
<span class="dot">•</span>
|
||||||
{{#if document.system.community}}
|
{{#if document.system.community}}
|
||||||
<span data-action="editDoc" data-item-uuid="{{document.system.community.uuid}}">{{document.system.community.name}}</span>
|
<span data-action="editDoc" data-item-uuid="{{document.system.community.uuid}}">{{document.system.community.name}}</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="missing-header-feature" data-action="openPack" data-key="communities">{{localize 'TYPES.Item.community'}}</span>
|
<span class="missing-header-feature" data-action="openPack" data-key="communities">{{localize 'TYPES.Item.community'}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span class="dot">•</span>
|
<span class="dot">•</span>
|
||||||
{{#if document.system.ancestry}}
|
{{#if document.system.ancestry}}
|
||||||
<span data-action="editDoc" data-item-uuid="{{document.system.ancestry.uuid}}">{{document.system.ancestry.name}}</span>
|
<span data-action="editDoc" data-item-uuid="{{document.system.ancestry.uuid}}">{{document.system.ancestry.name}}</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="missing-header-feature" data-action="openPack" data-key="ancestries">{{localize 'TYPES.Item.ancestry'}}</span>
|
<span class="missing-header-feature" data-action="openPack" data-key="ancestries">{{localize 'TYPES.Item.ancestry'}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#if (or document.system.multiclass.value document.system.multiclass.subclass)}}
|
{{#if (or document.system.multiclass.value document.system.multiclass.subclass)}}
|
||||||
<div class="multiclass">
|
<div class="multiclass">
|
||||||
{{#if document.system.multiclass.value}}
|
{{#if document.system.multiclass.value}}
|
||||||
<span data-action="editDoc"data-item-uuid="{{document.system.multiclass.value.uuid}}">{{document.system.multiclass.value.name}}</span>
|
<span data-action="editDoc"data-item-uuid="{{document.system.multiclass.value.uuid}}">{{document.system.multiclass.value.name}}</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span data-action="openPack" data-key="classes">{{localize 'DAGGERHEART.GENERAL.multiclass'}}</span>
|
<span data-action="openPack" data-key="classes">{{localize 'DAGGERHEART.GENERAL.multiclass'}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span class="dot">•</span>
|
<span class="dot">•</span>
|
||||||
{{#if document.system.multiclass.subclass}}
|
{{#if document.system.multiclass.subclass}}
|
||||||
<span data-action="editDoc" data-item-uuid="{{document.system.multiclass.subclass.uuid}}">{{document.system.multiclass.subclass.name}}</span>
|
<span data-action="editDoc" data-item-uuid="{{document.system.multiclass.subclass.uuid}}">{{document.system.multiclass.subclass.name}}</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="missing-header-feature" data-action="openPack" data-key="subclasses">{{localize 'TYPES.Item.subclass'}}</span>
|
<span class="missing-header-feature" data-action="openPack" data-key="subclasses">{{localize 'TYPES.Item.subclass'}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
<div class="character-row">
|
||||||
|
<div class="resource-section">
|
||||||
<div class="character-row">
|
<div class="hope-section">
|
||||||
<div class="resource-section">
|
<h4>{{localize "DAGGERHEART.GENERAL.hope"}}</h4>
|
||||||
<div class="hope-section">
|
{{#times document.system.resources.hope.max}}
|
||||||
<h4>{{localize "DAGGERHEART.GENERAL.hope"}}</h4>
|
<span class='hope-value' data-action='toggleHope' data-value="{{add this 1}}">
|
||||||
{{#times document.system.resources.hope.max}}
|
{{#if (gte ../document.system.resources.hope.value (add this 1))}}
|
||||||
<span class='hope-value' data-action='toggleHope' data-value="{{add this 1}}">
|
<i class='fa-solid fa-diamond'></i>
|
||||||
{{#if (gte ../document.system.resources.hope.value (add this 1))}}
|
{{else}}
|
||||||
<i class='fa-solid fa-diamond'></i>
|
<i class='fa-regular fa-circle'></i>
|
||||||
{{else}}
|
{{/if}}
|
||||||
<i class='fa-regular fa-circle'></i>
|
</span>
|
||||||
{{/if}}
|
{{/times}}
|
||||||
</span>
|
{{#times document.system.scars}}
|
||||||
{{/times}}
|
<span class='hope-value scar'>
|
||||||
{{#times document.system.scars}}
|
<i class='fa-regular fa-ban'></i>
|
||||||
<span class='hope-value scar'>
|
</span>
|
||||||
<i class='fa-regular fa-ban'></i>
|
{{/times}}
|
||||||
</span>
|
{{#if hasExtraResources}}<a type="button" class="resource-manager" data-action="toggleResourceManagement"><i class="fa-solid fa-angle-down"></i></a>{{/if}}
|
||||||
{{/times}}
|
</div>
|
||||||
{{#if hasExtraResources}}<a type="button" class="resource-manager" data-action="toggleResourceManagement"><i class="fa-solid fa-angle-down"></i></a>{{/if}}
|
</div>
|
||||||
</div>
|
{{#if document.system.class.value}}
|
||||||
</div>
|
<div class="domains-section">
|
||||||
{{#if document.system.class.value}}
|
{{#each document.system.domainData as |data|}}
|
||||||
<div class="domains-section">
|
<div class="domain">
|
||||||
{{#each document.system.domainData as |data|}}
|
<img src="{{data.src}}" alt="" data-tooltip="{{data.label}}" />
|
||||||
<div class="domain">
|
</div>
|
||||||
<img src="{{data.src}}" alt="" data-tooltip="{{data.label}}" />
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/if}}
|
||||||
</div>
|
<div class="downtime-section">
|
||||||
{{/if}}
|
{{#if document.parties.size}}
|
||||||
<div class="downtime-section">
|
<button type="button" data-action="viewParty" data-tooltip="DAGGERHEART.ACTORS.Character.viewParty">
|
||||||
{{#if document.parties.size}}
|
<i class="fa-solid fa-fw fa-users"></i>
|
||||||
<button type="button" data-action="viewParty" data-tooltip="DAGGERHEART.ACTORS.Character.viewParty">
|
</button>
|
||||||
<i class="fa-solid fa-fw fa-users"></i>
|
{{/if}}
|
||||||
</button>
|
{{#if @root.editable}}
|
||||||
{{/if}}
|
<button type="button" data-action="useDowntime" data-type="shortRest" data-tooltip="DAGGERHEART.APPLICATIONS.Downtime.shortRest.title">
|
||||||
{{#if @root.editable}}
|
<i class="fa-solid fa-fw fa-utensils"></i>
|
||||||
<button type="button" data-action="useDowntime" data-type="shortRest" data-tooltip="DAGGERHEART.APPLICATIONS.Downtime.shortRest.title">
|
</button>
|
||||||
<i class="fa-solid fa-fw fa-utensils"></i>
|
<button type="button" data-action="useDowntime" data-type="longRest" data-tooltip="DAGGERHEART.APPLICATIONS.Downtime.longRest.title">
|
||||||
</button>
|
<i class="fa-solid fa-fw fa-bed"></i>
|
||||||
<button type="button" data-action="useDowntime" data-type="longRest" data-tooltip="DAGGERHEART.APPLICATIONS.Downtime.longRest.title">
|
</button>
|
||||||
<i class="fa-solid fa-fw fa-bed"></i>
|
{{/if}}
|
||||||
</button>
|
</div>
|
||||||
{{/if}}
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
<div class="character-traits">
|
||||||
|
{{#each this.attributes as |attribute key|}}
|
||||||
<div class="character-traits">
|
<div class="trait {{#if isSpellcasting}}with-spellcasting{{/if}}" data-tooltip="<b>{{attribute.label}}:</b><br>{{#each attribute.verbs}}{{this}}<br>{{/each}}" data-action="rollAttribute" data-attribute="{{key}}" data-value="{{attribute.value}}">
|
||||||
{{#each this.attributes as |attribute key|}}
|
<div class="trait-name">
|
||||||
<div class="trait {{#if isSpellcasting}}with-spellcasting{{/if}}" data-tooltip="<b>{{attribute.label}}:</b><br>{{#each attribute.verbs}}{{this}}<br>{{/each}}" data-action="rollAttribute" data-attribute="{{key}}" data-value="{{attribute.value}}">
|
<div class="tier-mark {{#if attribute.tierMarked}}marked{{/if}}"></div>
|
||||||
<div class="trait-name">
|
<span>{{attribute.label}}</span>
|
||||||
<div class="tier-mark {{#if attribute.tierMarked}}marked{{/if}}"></div>
|
</div>
|
||||||
<span>{{attribute.label}}</span>
|
<div class="trait-value-area">
|
||||||
</div>
|
<svg width="52" height="46" viewBox="0 0 52 46" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<div class="trait-value-area">
|
<path d="M 0,0 H 52 L 51.0714,18.254 48.781,24.0952 47.5745,39.9596 26,46 4.42553,39.9596 3.219,24.0952 0.928571,18.254 Z" fill="var(--color-border)"/>
|
||||||
<svg width="52" height="46" viewBox="0 0 52 46" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<path d="M 3.312,5.357 8.58596,0 H 43.414 l 5.274,5.357 -1.8797,28.846 c -0.2431,2.605 -2.1461,4.7522 -4.7031,5.3064 l -14.8343,3.2151 c -0.8375,0.1816 -1.7043,0.1816 -2.5418,0 L 9.89482,39.5094 C 7.33785,38.9552 5.43478,36.808 5.19169,34.203 Z" fill="var(--background)"/>
|
||||||
<path d="M 0,0 H 52 L 51.0714,18.254 48.781,24.0952 47.5745,39.9596 26,46 4.42553,39.9596 3.219,24.0952 0.928571,18.254 Z" fill="var(--color-border)"/>
|
</svg>
|
||||||
<path d="M 3.312,5.357 8.58596,0 H 43.414 l 5.274,5.357 -1.8797,28.846 c -0.2431,2.605 -2.1461,4.7522 -4.7031,5.3064 l -14.8343,3.2151 c -0.8375,0.1816 -1.7043,0.1816 -2.5418,0 L 9.89482,39.5094 C 7.33785,38.9552 5.43478,36.808 5.19169,34.203 Z" fill="var(--background)"/>
|
<div class="trait-value">
|
||||||
</svg>
|
{{#if (gt attribute.value 0)}}
|
||||||
<div class="trait-value">
|
<span>+{{attribute.value}}</span>
|
||||||
{{#if (gt attribute.value 0)}}
|
{{else}}
|
||||||
<span>+{{attribute.value}}</span>
|
<span>{{attribute.value}}</span>
|
||||||
{{else}}
|
{{/if}}
|
||||||
<span>{{attribute.value}}</span>
|
</div>
|
||||||
{{/if}}
|
{{#if isSpellcasting}}
|
||||||
</div>
|
<div class="spellcasting-mark" data-tooltip="DAGGERHEART.ITEMS.Subclass.spellcastingTrait">
|
||||||
{{#if isSpellcasting}}
|
<i class="fa-solid fa-wand-magic-sparkles" inert></i>
|
||||||
<div class="spellcasting-mark" data-tooltip="DAGGERHEART.ITEMS.Subclass.spellcastingTrait">
|
</div>
|
||||||
<i class="fa-solid fa-wand-magic-sparkles" inert></i>
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
</div>
|
||||||
</div>
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
|
||||||
</div>
|
{{#> 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }}
|
||||||
|
<button type="button" data-action="openSettings" data-tooltip-text="{{localize "DAGGERHEART.UI.Tooltip.openSheetSettings"}}"><i class="fa-solid fa-wrench"></i></button>
|
||||||
{{#> 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs' }}
|
{{/'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs'}}
|
||||||
<button type="button" data-action="openSettings" data-tooltip-text="{{localize "DAGGERHEART.UI.Tooltip.openSheetSettings"}}"><i class="fa-solid fa-wrench"></i></button>
|
|
||||||
{{/'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs'}}
|
|
||||||
</header>
|
</header>
|
||||||
|
|
@ -1,54 +1,54 @@
|
||||||
<section class='tab {{tabs.inventory.cssClass}} {{tabs.inventory.id}}' data-tab='{{tabs.inventory.id}}'
|
<section class='tab {{tabs.inventory.cssClass}} {{tabs.inventory.id}}' data-tab='{{tabs.inventory.id}}'
|
||||||
data-group='{{tabs.inventory.group}}'>
|
data-group='{{tabs.inventory.group}}'>
|
||||||
<div class="search-section">
|
<div class="search-section">
|
||||||
<div class="search-bar">
|
<div class="search-bar">
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="fa-solid fa-magnifying-glass"></i>
|
<i class="fa-solid fa-magnifying-glass"></i>
|
||||||
</div>
|
</div>
|
||||||
<input type="search" name="search" class="search-inventory" placeholder="{{localize "DAGGERHEART.GENERAL.searchPlaceholder"}}">
|
<input type="search" name="search" class="search-inventory" placeholder="{{localize "DAGGERHEART.GENERAL.searchPlaceholder"}}">
|
||||||
</div>
|
</div>
|
||||||
<a class="filter-button">
|
<a class="filter-button">
|
||||||
<i class="fa-solid fa-filter"></i>
|
<i class="fa-solid fa-filter"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#if this.inventory.hasCurrency}}
|
{{#if this.inventory.hasCurrency}}
|
||||||
{{> "systems/daggerheart/templates/sheets/global/partials/gold.hbs" currencies=inventory.currencies}}
|
{{> "systems/daggerheart/templates/sheets/global/partials/gold.hbs" currencies=inventory.currencies}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<div class="items-section">
|
<div class="items-section scroll-container">
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='TYPES.Item.weapon'
|
title='TYPES.Item.weapon'
|
||||||
type='weapon'
|
type='weapon'
|
||||||
collection=@root.inventory.weapons
|
collection=@root.inventory.weapons
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
canCreate=@root.editable
|
canCreate=@root.editable
|
||||||
hideResources=true
|
hideResources=true
|
||||||
}}
|
}}
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='TYPES.Item.armor'
|
title='TYPES.Item.armor'
|
||||||
type='armor'
|
type='armor'
|
||||||
collection=@root.inventory.armor
|
collection=@root.inventory.armor
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
canCreate=@root.editable
|
canCreate=@root.editable
|
||||||
hideResources=true
|
hideResources=true
|
||||||
}}
|
}}
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='TYPES.Item.consumable'
|
title='TYPES.Item.consumable'
|
||||||
type='consumable'
|
type='consumable'
|
||||||
collection=@root.inventory.consumables
|
collection=@root.inventory.consumables
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
canCreate=@root.editable
|
canCreate=@root.editable
|
||||||
isQuantifiable=true
|
isQuantifiable=true
|
||||||
}}
|
}}
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='TYPES.Item.loot'
|
title='TYPES.Item.loot'
|
||||||
type='loot'
|
type='loot'
|
||||||
collection=@root.inventory.loot
|
collection=@root.inventory.loot
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
canCreate=@root.editable
|
canCreate=@root.editable
|
||||||
showActions=@root.editable
|
showActions=@root.editable
|
||||||
isQuantifiable=true
|
isQuantifiable=true
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -1,42 +1,42 @@
|
||||||
<section class='tab {{tabs.loadout.cssClass}} {{tabs.loadout.id}}' data-tab='{{tabs.loadout.id}}'
|
<section class='tab {{tabs.loadout.cssClass}} {{tabs.loadout.id}}' data-tab='{{tabs.loadout.id}}'
|
||||||
data-group='{{tabs.loadout.group}}'>
|
data-group='{{tabs.loadout.group}}'>
|
||||||
<div class="search-section">
|
<div class="search-section">
|
||||||
<div class="search-bar">
|
<div class="search-bar">
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="fa-solid fa-magnifying-glass"></i>
|
<i class="fa-solid fa-magnifying-glass"></i>
|
||||||
</div>
|
</div>
|
||||||
<input type="search" name="search" class="search-loadout" placeholder="{{localize "DAGGERHEART.GENERAL.searchPlaceholder"}}">
|
<input type="search" name="search" class="search-loadout" placeholder="{{localize "DAGGERHEART.GENERAL.searchPlaceholder"}}">
|
||||||
</div>
|
</div>
|
||||||
<a class="filter-button">
|
<a class="filter-button">
|
||||||
<i class="fa-solid fa-filter"></i>
|
<i class="fa-solid fa-filter"></i>
|
||||||
</a>
|
</a>
|
||||||
<button type="button" class="btn-toggle-view" data-action="toggleLoadoutView" data-value="{{not cardView}}">
|
<button type="button" class="btn-toggle-view" data-action="toggleLoadoutView" data-value="{{not cardView}}">
|
||||||
<span class="{{ifThen cardView '' 'list-active'}} list-icon">
|
<span class="{{ifThen cardView '' 'list-active'}} list-icon">
|
||||||
<i class="fa-solid fa-bars"></i>
|
<i class="fa-solid fa-bars"></i>
|
||||||
</span>
|
</span>
|
||||||
<span class="{{ifThen cardView 'grid-active' ''}} grid-icon">
|
<span class="{{ifThen cardView 'grid-active' ''}} grid-icon">
|
||||||
<i class="fa-solid fa-grip"></i>
|
<i class="fa-solid fa-grip"></i>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="items-section">
|
<div class="items-section scroll-container">
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='DAGGERHEART.GENERAL.Tabs.loadout'
|
title='DAGGERHEART.GENERAL.Tabs.loadout'
|
||||||
type='domainCard'
|
type='domainCard'
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
cardView=cardView
|
cardView=cardView
|
||||||
collection=document.system.domainCards.loadout
|
collection=document.system.domainCards.loadout
|
||||||
canCreate=@root.editable
|
canCreate=@root.editable
|
||||||
}}
|
}}
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='DAGGERHEART.GENERAL.Tabs.vault'
|
title='DAGGERHEART.GENERAL.Tabs.vault'
|
||||||
type='domainCard'
|
type='domainCard'
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
cardView=cardView
|
cardView=cardView
|
||||||
collection=document.system.domainCards.vault
|
collection=document.system.domainCards.vault
|
||||||
canCreate=@root.editable
|
canCreate=@root.editable
|
||||||
inVault=true
|
inVault=true
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -1,152 +1,152 @@
|
||||||
<aside class="character-sidebar-sheet">
|
<aside class="character-sidebar-sheet">
|
||||||
<div class="portrait {{#if isDeath}}death-roll{{/if}}">
|
<div class="portrait {{#if isDeath}}death-roll{{/if}}">
|
||||||
<img src="{{document.img}}" alt="{{document.name}}" data-action='editImage' data-edit="img">
|
<img src="{{document.img}}" alt="{{document.name}}" data-action='editImage' data-edit="img">
|
||||||
<a class="death-roll-btn" data-tooltip="DAGGERHEART.UI.Tooltip.makeDeathMove" {{#if
|
<a class="death-roll-btn" data-tooltip="DAGGERHEART.UI.Tooltip.makeDeathMove" {{#if
|
||||||
isDeath}}data-action="makeDeathMove" {{/if}}><i class="fa-solid fa-skull death-save"></i></a>
|
isDeath}}data-action="makeDeathMove" {{/if}}><i class="fa-solid fa-skull death-save"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="info-section {{#if useResourcePips}}pip-display{{/if}}">
|
<div class="info-section {{#if useResourcePips}}pip-display{{/if}}">
|
||||||
<div class="resources-section">
|
<div class="resources-section">
|
||||||
{{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.hitPoints label="DAGGERHEART.GENERAL.HitPoints.short" key="system.resources.hitPoints.value" action="toggleHitPoints" }}
|
{{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.hitPoints label="DAGGERHEART.GENERAL.HitPoints.short" key="system.resources.hitPoints.value" action="toggleHitPoints" }}
|
||||||
{{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.stress label="DAGGERHEART.GENERAL.stress" key="system.resources.stress.value" action="toggleStress" }}
|
{{> "systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs" resource=resources.stress label="DAGGERHEART.GENERAL.stress" key="system.resources.stress.value" action="toggleStress" }}
|
||||||
</div>
|
</div>
|
||||||
<div class="status-section {{#if useResourcePips}}pip-display{{/if}}">
|
<div class="status-section {{#if useResourcePips}}pip-display{{/if}}">
|
||||||
<div class="status-number">
|
<div class="status-number">
|
||||||
<div class='status-value'>
|
<div class='status-value'>
|
||||||
<p>{{document.system.evasion}}</p>
|
<p>{{document.system.evasion}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="status-label">
|
<div class="status-label">
|
||||||
<h4>{{localize "DAGGERHEART.GENERAL.evasion"}}</h4>
|
<h4>{{localize "DAGGERHEART.GENERAL.evasion"}}</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#if document.system.armorScore.max}}
|
{{#if document.system.armorScore.max}}
|
||||||
<div class="status-bar armor-slots">
|
<div class="status-bar armor-slots">
|
||||||
{{#if useResourcePips}}
|
{{#if useResourcePips}}
|
||||||
<div class='slot-value'>
|
<div class='slot-value'>
|
||||||
<div class="slot-bar">
|
<div class="slot-bar armor">
|
||||||
{{#times document.system.armorScore.max}}
|
{{#times document.system.armorScore.max}}
|
||||||
<a class='armor-slot' data-action='toggleArmor' data-value="{{add this 1}}">
|
<a class="slot" data-action="toggleArmor" data-value="{{add this 1}}">
|
||||||
{{#if (gte ../document.system.armorScore.value (add this 1))}}
|
{{#if (gte ../document.system.armorScore.value (add this 1))}}
|
||||||
<i class="fa-solid fa-shield"></i>
|
<i class="fa-solid fa-shield"></i>
|
||||||
{{else}}
|
{{else}}
|
||||||
<i class="fa-solid fa-shield-halved"></i>
|
<i class="fa-solid fa-shield-halved"></i>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</a>
|
</a>
|
||||||
{{/times}}
|
{{/times}}
|
||||||
</div>
|
</div>
|
||||||
<a class="slot-label" data-action="toggleArmorMangement" {{disabled (not @root.editable)}}>
|
<a class="slot-label" data-action="toggleArmorMangement" {{disabled (not @root.editable)}}>
|
||||||
<span class="label">{{localize "DAGGERHEART.GENERAL.armorSlots"}}</span>
|
<span class="label">{{localize "DAGGERHEART.GENERAL.armorSlots"}}</span>
|
||||||
<div class="slot-value-container">
|
<div class="slot-value-container">
|
||||||
<span class="value">{{document.system.armorScore.value}} / {{document.system.armorScore.max}}</span>
|
<span class="value">{{document.system.armorScore.value}} / {{document.system.armorScore.max}}</span>
|
||||||
{{#if @root.editable}}<i class="fa-solid fa-gear" inert></i>{{/if}}
|
{{#if @root.editable}}<i class="fa-solid fa-gear" inert></i>{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class='status-value'>
|
<div class='status-value'>
|
||||||
<input class="bar-input armor-marks-input" value="{{document.system.armorScore.value}}" type="number" id="{{document.uuid}}-armor-slots">
|
<progress
|
||||||
<span>/</span>
|
class='progress-bar stress-color'
|
||||||
<span class="bar-label">{{document.system.armorScore.max}}</span>
|
value='{{document.system.armorScore.value}}'
|
||||||
</div>
|
max='{{document.system.armorScore.max}}'
|
||||||
<progress
|
></progress>
|
||||||
class='progress-bar stress-color'
|
<input class="bar-input armor-marks-input" value="{{document.system.armorScore.value}}" type="number" id="{{document.uuid}}-armor-slots">
|
||||||
value='{{document.system.armorScore.value}}'
|
<span>/</span>
|
||||||
max='{{document.system.armorScore.max}}'
|
<span class="bar-label">{{document.system.armorScore.max}}</span>
|
||||||
></progress>
|
</div>
|
||||||
<a class="status-label" data-action="toggleArmorMangement" {{disabled (not @root.editable)}}>
|
<a class="status-label" data-action="toggleArmorMangement" {{disabled (not @root.editable)}}>
|
||||||
<h4>{{localize "DAGGERHEART.GENERAL.armorSlots"}}</h4>
|
<h4>{{localize "DAGGERHEART.GENERAL.armorSlots"}}</h4>
|
||||||
{{#if @root.editable}}<i class="fa-solid fa-gear" inert></i>{{/if}}
|
{{#if @root.editable}}<i class="fa-solid fa-gear" inert></i>{{/if}}
|
||||||
</a>
|
</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="status-number armor-slots">
|
<div class="status-number armor-slots">
|
||||||
<div class='status-value'>
|
<div class='status-value'>
|
||||||
<p>-</p>
|
<p>-</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="status-label">
|
<div class="status-label">
|
||||||
<h4>{{localize "DAGGERHEART.GENERAL.armorSlots"}}</h4>
|
<h4>{{localize "DAGGERHEART.GENERAL.armorSlots"}}</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<div class="status-number">
|
<div class="status-number">
|
||||||
<div class='status-value'>
|
<div class='status-value'>
|
||||||
<p>{{document.system.proficiency}}</p>
|
<p>{{document.system.proficiency}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="status-label">
|
<div class="status-label">
|
||||||
<h4>{{localize "DAGGERHEART.GENERAL.proficiency"}}</h4>
|
<h4>{{localize "DAGGERHEART.GENERAL.proficiency"}}</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="threshold-section">
|
<div class="threshold-section">
|
||||||
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.minor"}}</h4>
|
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.minor"}}</h4>
|
||||||
<h4 class="threshold-value">{{document.system.damageThresholds.major}}</h4>
|
<h4 class="threshold-value">{{document.system.damageThresholds.major}}</h4>
|
||||||
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.major"}}</h4>
|
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.major"}}</h4>
|
||||||
<h4 class="threshold-value">{{document.system.damageThresholds.severe}}</h4>
|
<h4 class="threshold-value">{{document.system.damageThresholds.severe}}</h4>
|
||||||
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.severe"}}</h4>
|
<h4 class="threshold-label">{{localize "DAGGERHEART.GENERAL.DamageThresholds.severe"}}</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="shortcut-items-section">
|
<div class="shortcut-items-section">
|
||||||
<div class="equipment-section">
|
<div class="equipment-section">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<side-line-div class="invert"></side-line-div>
|
<side-line-div class="invert"></side-line-div>
|
||||||
<h3>{{localize "DAGGERHEART.GENERAL.equipment"}}</h3>
|
<h3>{{localize "DAGGERHEART.GENERAL.equipment"}}</h3>
|
||||||
<side-line-div></side-line-div>
|
<side-line-div></side-line-div>
|
||||||
</div>
|
</div>
|
||||||
<ul class="items-sidebar-list">
|
<ul class="items-sidebar-list">
|
||||||
{{#if document.system.usedUnarmed}}
|
{{#if document.system.usedUnarmed}}
|
||||||
{{> 'daggerheart.inventory-item-compact'
|
{{> 'daggerheart.inventory-item-compact'
|
||||||
item=document.system.usedUnarmed
|
item=document.system.usedUnarmed
|
||||||
type='attack'
|
type='attack'
|
||||||
}}
|
}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#each equippedItems as |item|}}
|
{{#each equippedItems as |item|}}
|
||||||
{{> 'daggerheart.inventory-item-compact'
|
{{> 'daggerheart.inventory-item-compact'
|
||||||
item=item
|
item=item
|
||||||
type=item.type
|
type=item.type
|
||||||
}}
|
}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="loadout-section">
|
<div class="loadout-section">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<side-line-div class="invert"></side-line-div>
|
<side-line-div class="invert"></side-line-div>
|
||||||
<h3>{{localize "DAGGERHEART.GENERAL.loadout"}}</h3>
|
<h3>{{localize "DAGGERHEART.GENERAL.loadout"}}</h3>
|
||||||
<side-line-div></side-line-div>
|
<side-line-div></side-line-div>
|
||||||
</div>
|
</div>
|
||||||
<ul class="items-sidebar-list">
|
<ul class="items-sidebar-list">
|
||||||
{{#each document.system.domainCards.loadout as |card|}}
|
{{#each document.system.domainCards.loadout as |card|}}
|
||||||
{{> 'daggerheart.inventory-item-compact'
|
{{> 'daggerheart.inventory-item-compact'
|
||||||
item=card
|
item=card
|
||||||
type='domainCard'
|
type='domainCard'
|
||||||
}}
|
}}
|
||||||
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="experience-section">
|
<div class="experience-section">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<side-line-div class="invert"></side-line-div>
|
<side-line-div class="invert"></side-line-div>
|
||||||
<h3>{{localize "DAGGERHEART.GENERAL.experience.single"}}</h3>
|
<h3>{{localize "DAGGERHEART.GENERAL.experience.single"}}</h3>
|
||||||
<side-line-div></side-line-div>
|
<side-line-div></side-line-div>
|
||||||
</div>
|
</div>
|
||||||
<div class="experience-list">
|
<div class="experience-list">
|
||||||
{{#each document.system.experiences as |experience id|}}
|
{{#each document.system.experiences as |experience id|}}
|
||||||
<div class="experience-row" data-tooltip-text="{{experience.description}}">
|
<div class="experience-row" data-tooltip-text="{{experience.description}}">
|
||||||
<span class="experience-value">
|
<span class="experience-value">
|
||||||
{{numberFormat experience.value sign=true}}
|
{{numberFormat experience.value sign=true}}
|
||||||
</span>
|
</span>
|
||||||
<span class="experience-name">{{experience.name}}</span>
|
<span class="experience-name">{{experience.name}}</span>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a data-action="sendExpToChat" data-type="experience" data-id="{{id}}">
|
<a data-action="sendExpToChat" data-type="experience" data-id="{{id}}">
|
||||||
<i class="fa-regular fa-message"></i>
|
<i class="fa-regular fa-message"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
<section
|
<section
|
||||||
class='tab {{tabs.features.cssClass}} {{tabs.features.id}}'
|
class="tab {{tabs.features.cssClass}} {{tabs.features.id}}"
|
||||||
data-tab='{{tabs.features.id}}'
|
data-tab="{{tabs.features.id}}"
|
||||||
data-group='{{tabs.features.group}}'
|
data-group="{{tabs.features.group}}"
|
||||||
>
|
>
|
||||||
<div class="feature-section">
|
<div class="feature-section scroll-container">
|
||||||
{{> 'daggerheart.inventory-items'
|
{{#each @root.features as |item|}}
|
||||||
title=tabs.features.label
|
{{> "daggerheart.inventory-item"
|
||||||
type='feature'
|
item=item
|
||||||
collection=@root.features
|
type="feature"
|
||||||
hideContextMenu=true
|
actorType=@root.document.type
|
||||||
hideModifyControls=true
|
hideContextMenu=true
|
||||||
canCreate=@root.editable
|
hideModifyControls=true
|
||||||
showActions=@root.editable
|
showActions=@root.editable
|
||||||
}}
|
}}
|
||||||
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -3,10 +3,7 @@
|
||||||
data-tab='{{tabs.notes.id}}'
|
data-tab='{{tabs.notes.id}}'
|
||||||
data-group='{{tabs.notes.group}}'
|
data-group='{{tabs.notes.group}}'
|
||||||
>
|
>
|
||||||
<fieldset class="fit-height">
|
{{formInput notes.field value=notes.value enriched=notes.value toggled=true}}
|
||||||
<legend>{{localize tabs.notes.label}}</legend>
|
|
||||||
{{formInput notes.field value=notes.value enriched=notes.value toggled=true}}
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
{{#if (and showAttribution document.system.attribution.artist)}}
|
{{#if (and showAttribution document.system.attribution.artist)}}
|
||||||
<label class="artist-attribution">{{localize "DAGGERHEART.GENERAL.artistAttribution" artist=document.system.attribution.artist}}</label>
|
<label class="artist-attribution">{{localize "DAGGERHEART.GENERAL.artistAttribution" artist=document.system.attribution.artist}}</label>
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,20 @@
|
||||||
<section
|
<section
|
||||||
class='tab {{tabs.potentialAdversaries.cssClass}} {{tabs.potentialAdversaries.id}}'
|
class='tab {{tabs.potentialAdversaries.cssClass}} {{tabs.potentialAdversaries.id}}'
|
||||||
data-tab='{{tabs.potentialAdversaries.id}}'
|
data-tab='{{tabs.potentialAdversaries.id}}'
|
||||||
data-group='{{tabs.potentialAdversaries.group}}'
|
data-group='{{tabs.potentialAdversaries.group}}'
|
||||||
>
|
>
|
||||||
<div class="items-section">
|
<div class="items-section scroll-container">
|
||||||
{{#each document.system.potentialAdversaries as |category categoryId|}}
|
{{#each document.system.potentialAdversaries as |category categoryId|}}
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title=category.label
|
title=category.label
|
||||||
type='adversary'
|
type='adversary'
|
||||||
isGlassy=true
|
isGlassy=true
|
||||||
isActor=true
|
isActor=true
|
||||||
categoryAdversary=categoryId
|
categoryAdversary=categoryId
|
||||||
hideControls=true
|
hideControls=true
|
||||||
collection=category.adversaries
|
collection=category.adversaries
|
||||||
hideResources=true
|
hideResources=true
|
||||||
}}
|
}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<section
|
<section
|
||||||
class='tab {{tabs.notes.cssClass}} {{tabs.notes.id}}'
|
class="tab {{tabs.notes.cssClass}} {{tabs.notes.id}}"
|
||||||
data-tab='{{tabs.notes.id}}'
|
data-tab="{{tabs.notes.id}}"
|
||||||
data-group='{{tabs.notes.group}}'
|
data-group="{{tabs.notes.group}}"
|
||||||
>
|
>
|
||||||
{{formInput notes.field value=notes.value enriched=notes.enriched toggled=true}}
|
{{formInput notes.field value=notes.value enriched=notes.enriched toggled=true}}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
{{> "systems/daggerheart/templates/sheets/global/partials/gold.hbs" currencies=inventory.currencies}}
|
{{> "systems/daggerheart/templates/sheets/global/partials/gold.hbs" currencies=inventory.currencies}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<div class="items-section">
|
<div class="items-section scroll-container">
|
||||||
{{> 'daggerheart.inventory-items'
|
{{> 'daggerheart.inventory-items'
|
||||||
title='TYPES.Item.weapon'
|
title='TYPES.Item.weapon'
|
||||||
type='weapon'
|
type='weapon'
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
<section
|
<section
|
||||||
class='tab {{tabs.notes.cssClass}} {{tabs.notes.id}}'
|
class="tab {{tabs.notes.cssClass}} {{tabs.notes.id}}"
|
||||||
data-tab='{{tabs.notes.id}}'
|
data-tab="{{tabs.notes.id}}"
|
||||||
data-group='{{tabs.notes.group}}'
|
data-group="{{tabs.notes.group}}"
|
||||||
>
|
>
|
||||||
<fieldset class="fit-height">
|
{{formInput notes.field value=notes.value enriched=notes.value toggled=true}}
|
||||||
<legend>{{localize tabs.notes.label}}</legend>
|
|
||||||
{{formInput notes.field value=notes.value enriched=notes.value toggled=true}}
|
|
||||||
</fieldset>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -1,191 +1,191 @@
|
||||||
<section
|
<section
|
||||||
class='tab {{tabs.partyMembers.cssClass}} {{tabs.partyMembers.id}}'
|
class='tab {{tabs.partyMembers.cssClass}} {{tabs.partyMembers.id}}'
|
||||||
data-tab='{{tabs.partyMembers.id}}'
|
data-tab='{{tabs.partyMembers.id}}'
|
||||||
data-group='{{tabs.partyMembers.group}}'
|
data-group='{{tabs.partyMembers.group}}'
|
||||||
>
|
>
|
||||||
|
|
||||||
<div class="actions-section">
|
<div class="actions-section">
|
||||||
<button data-action="tagTeamRoll" class="{{#if tagTeamActive}}active-action{{/if}}">
|
<button data-action="tagTeamRoll" class="{{#if tagTeamActive}}active-action{{/if}}">
|
||||||
<i class="fa-solid fa-user-group"></i>
|
<i class="fa-solid fa-user-group"></i>
|
||||||
<span>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.title"}}</span>
|
<span>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.title"}}</span>
|
||||||
</button>
|
</button>
|
||||||
<button data-action="groupRoll" class="{{#if groupRollActive}}active-action{{/if}}">
|
<button data-action="groupRoll" class="{{#if groupRollActive}}active-action{{/if}}">
|
||||||
<i class="fa-solid fa-users"></i>
|
<i class="fa-solid fa-users"></i>
|
||||||
<span>{{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.title"}}</span>
|
<span>{{localize "DAGGERHEART.APPLICATIONS.GroupRollSelect.title"}}</span>
|
||||||
</button>
|
</button>
|
||||||
<button data-action="triggerRest" data-action="triggerRest" data-type="shortRest">
|
<button data-action="triggerRest" data-action="triggerRest" data-type="shortRest">
|
||||||
<i class="fa-solid fa-utensils"></i>
|
<i class="fa-solid fa-utensils"></i>
|
||||||
<span>{{localize "DAGGERHEART.APPLICATIONS.Downtime.shortRest.title"}}</span>
|
<span>{{localize "DAGGERHEART.APPLICATIONS.Downtime.shortRest.title"}}</span>
|
||||||
</button>
|
</button>
|
||||||
<button data-action="triggerRest" data-type="longRest">
|
<button data-action="triggerRest" data-type="longRest">
|
||||||
<i class="fa-solid fa-bed"></i>
|
<i class="fa-solid fa-bed"></i>
|
||||||
<span>{{localize "DAGGERHEART.APPLICATIONS.Downtime.longRest.title"}}</span>
|
<span>{{localize "DAGGERHEART.APPLICATIONS.Downtime.longRest.title"}}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#if @root.showStats}}
|
{{#if @root.showStats}}
|
||||||
<ul class="actors-list">
|
<ul class="actors-list">
|
||||||
{{#each partyMembers as |member id|}}
|
{{#each partyMembers as |member id|}}
|
||||||
<li class="actor-resources">
|
<li class="actor-resources">
|
||||||
<div class="actor-img-frame">
|
<div class="actor-img-frame">
|
||||||
<img class="actor-img" src="{{member.img}}">
|
<img class="actor-img" src="{{member.img}}">
|
||||||
{{#if member.weapons}}
|
{{#if member.weapons}}
|
||||||
<div class="equipped-weapons">
|
<div class="equipped-weapons">
|
||||||
{{#each member.weapons as |weapon|}}
|
{{#each member.weapons as |weapon|}}
|
||||||
<img src="{{weapon.img}}" data-tooltip="{{weapon.name}}"/>
|
<img src="{{weapon.img}}" data-tooltip="{{weapon.name}}"/>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if member.evasion includeZero=true}}
|
{{#if member.evasion includeZero=true}}
|
||||||
<div class="evasion" data-tooltip="DAGGERHEART.GENERAL.evasion">{{member.evasion}}</div>
|
<div class="evasion" data-tooltip="DAGGERHEART.GENERAL.evasion">{{member.evasion}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if member.difficulty includeZero=true}}
|
{{#if member.difficulty includeZero=true}}
|
||||||
<div class="evasion" data-tooltip="DAGGERHEART.GENERAL.difficulty">{{member.difficulty}}</div>
|
<div class="evasion" data-tooltip="DAGGERHEART.GENERAL.difficulty">{{member.difficulty}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#unless (or (eq member.type 'companion') (eq member.type 'npc'))}}
|
{{#unless (or (eq member.type 'companion') (eq member.type 'npc'))}}
|
||||||
<div class="threshold-section">
|
<div class="threshold-section">
|
||||||
<h4 class="threshold-label">{{localize "DAGGERHEART.ACTORS.Party.Thresholds.minor"}}</h4>
|
<h4 class="threshold-label">{{localize "DAGGERHEART.ACTORS.Party.Thresholds.minor"}}</h4>
|
||||||
<h4 class="threshold-value">{{member.damageThresholds.major}}</h4>
|
<h4 class="threshold-value">{{member.damageThresholds.major}}</h4>
|
||||||
<h4 class="threshold-label">{{localize "DAGGERHEART.ACTORS.Party.Thresholds.major"}}</h4>
|
<h4 class="threshold-label">{{localize "DAGGERHEART.ACTORS.Party.Thresholds.major"}}</h4>
|
||||||
<h4 class="threshold-value">{{member.damageThresholds.severe}}</h4>
|
<h4 class="threshold-value">{{member.damageThresholds.severe}}</h4>
|
||||||
<h4 class="threshold-label">{{localize "DAGGERHEART.ACTORS.Party.Thresholds.severe"}}</h4>
|
<h4 class="threshold-label">{{localize "DAGGERHEART.ACTORS.Party.Thresholds.severe"}}</h4>
|
||||||
</div>
|
</div>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
</div>
|
</div>
|
||||||
<header>
|
<header>
|
||||||
<h2 class="actor-name">
|
<h2 class="actor-name">
|
||||||
<a data-action="openDocument" data-uuid="{{member.uuid}}">{{member.name}}</a>
|
<a data-action="openDocument" data-uuid="{{member.uuid}}">{{member.name}}</a>
|
||||||
<a class="delete-icon" data-action="deletePartyMember" data-uuid="{{member.uuid}}"><i class="fa-regular fa-times" inert></i></a>
|
<a class="delete-icon" data-action="deletePartyMember" data-uuid="{{member.uuid}}"><i class="fa-regular fa-times" inert></i></a>
|
||||||
</h2>
|
</h2>
|
||||||
<div>
|
<div>
|
||||||
{{#unless (or (eq member.type 'companion') (eq member.type 'adversary') (eq member.type 'npc')) }}
|
{{#unless (or (eq member.type 'companion') (eq member.type 'adversary') (eq member.type 'npc')) }}
|
||||||
<div class="hope-section">
|
<div class="hope-section">
|
||||||
<h4>{{localize "DAGGERHEART.GENERAL.hope"}}</h4>
|
<h4>{{localize "DAGGERHEART.GENERAL.hope"}}</h4>
|
||||||
{{#times member.resources.hope.max}}
|
{{#times member.resources.hope.max}}
|
||||||
<span class='hope-value' data-action='toggleHope' data-actor-id="{{member.uuid}}" data-value="{{add this 1}}">
|
<span class='hope-value' data-action='toggleHope' data-actor-id="{{member.uuid}}" data-value="{{add this 1}}">
|
||||||
{{#if (gte member.resources.hope.value (add this 1))}}
|
{{#if (gte member.resources.hope.value (add this 1))}}
|
||||||
<i class='fa-solid fa-diamond'></i>
|
<i class='fa-solid fa-diamond'></i>
|
||||||
{{else}}
|
{{else}}
|
||||||
<i class='fa-regular fa-circle'></i>
|
<i class='fa-regular fa-circle'></i>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</span>
|
</span>
|
||||||
{{/times}}
|
{{/times}}
|
||||||
</div>
|
</div>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
</div>
|
</div>
|
||||||
{{#if member.subtitle}}
|
{{#if member.subtitle}}
|
||||||
<span class="subtitle">{{member.subtitle}}</span>
|
<span class="subtitle">{{member.subtitle}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</header>
|
</header>
|
||||||
<section class="body">
|
<section class="body">
|
||||||
<section class="resources">
|
<section class="resources">
|
||||||
{{#unless (or (eq member.type 'companion') (eq member.type 'npc')) }}
|
{{#unless (or (eq member.type 'companion') (eq member.type 'npc')) }}
|
||||||
<div class="slot-section">
|
<div class="slot-section">
|
||||||
<div class="slot-label" data-tooltip="DAGGERHEART.GENERAL.HitPoints.plural">
|
<div class="slot-label" data-tooltip="DAGGERHEART.GENERAL.HitPoints.plural">
|
||||||
<span class="label">
|
<span class="label">
|
||||||
<i class="fa-solid fa-heart" inert></i>
|
<i class="fa-solid fa-heart" inert></i>
|
||||||
</span>
|
</span>
|
||||||
<span class="value">
|
<span class="value">
|
||||||
<span class="current">{{member.resources.hitPoints.value}}</span>
|
<span class="current">{{member.resources.hitPoints.value}}</span>
|
||||||
/
|
/
|
||||||
<span class="max">{{member.resources.hitPoints.max}}</span>
|
<span class="max">{{member.resources.hitPoints.max}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="slot-bar">
|
<div class="slot-bar">
|
||||||
{{#times member.resources.hitPoints.max}}
|
{{#times member.resources.hitPoints.max}}
|
||||||
<span class='slot {{#if (gte member.resources.hitPoints.value (add this 1))}}filled{{/if}}'
|
<span class='slot {{#if (gte member.resources.hitPoints.value (add this 1))}}filled{{/if}}'
|
||||||
data-action='toggleHitPoints' data-actor-id="{{member.uuid}}" data-value="{{add this 1}}">
|
data-action='toggleHitPoints' data-actor-id="{{member.uuid}}" data-value="{{add this 1}}">
|
||||||
</span>
|
</span>
|
||||||
{{/times}}
|
{{/times}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
|
|
||||||
{{#unless (eq member.type 'npc')}}
|
{{#unless (eq member.type 'npc')}}
|
||||||
<div class="slot-section">
|
<div class="slot-section">
|
||||||
<div class="slot-label" data-tooltip="DAGGERHEART.GENERAL.stress">
|
<div class="slot-label" data-tooltip="DAGGERHEART.GENERAL.stress">
|
||||||
<span class="label">
|
<span class="label">
|
||||||
<i class="fa-solid fa-bolt" inert></i>
|
<i class="fa-solid fa-bolt" inert></i>
|
||||||
</span>
|
</span>
|
||||||
<span class="value">
|
<span class="value">
|
||||||
<span class="current">{{member.resources.stress.value}}</span>
|
<span class="current">{{member.resources.stress.value}}</span>
|
||||||
/
|
/
|
||||||
<span class="max">{{member.resources.stress.max}}</span>
|
<span class="max">{{member.resources.stress.max}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="slot-bar">
|
<div class="slot-bar">
|
||||||
{{#times member.resources.stress.max}}
|
{{#times member.resources.stress.max}}
|
||||||
<span class='slot {{#if (gte member.resources.stress.value (add this 1))}}filled{{/if}}'
|
<span class='slot {{#if (gte member.resources.stress.value (add this 1))}}filled{{/if}}'
|
||||||
data-action='toggleStress' data-actor-id="{{member.uuid}}" data-value="{{add this 1}}">
|
data-action='toggleStress' data-actor-id="{{member.uuid}}" data-value="{{add this 1}}">
|
||||||
</span>
|
</span>
|
||||||
{{/times}}
|
{{/times}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
|
|
||||||
{{#if member.armorScore.max}}
|
{{#if member.armorScore.max}}
|
||||||
<div class="slot-section">
|
<div class="slot-section">
|
||||||
<div class="slot-label" data-tooltip="DAGGERHEART.GENERAL.armorSlots">
|
<div class="slot-label" data-tooltip="DAGGERHEART.GENERAL.armorSlots">
|
||||||
<span class="label">
|
<span class="label">
|
||||||
<i class="fa-solid fa-shield" inert></i>
|
<i class="fa-solid fa-shield" inert></i>
|
||||||
</span>
|
</span>
|
||||||
<span class="value">
|
<span class="value">
|
||||||
<span class="current">{{member.armorScore.value}}</span>
|
<span class="current">{{member.armorScore.value}}</span>
|
||||||
/
|
/
|
||||||
<span class="max">{{member.armorScore.max}}</span>
|
<span class="max">{{member.armorScore.max}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="slot-bar">
|
<div class="slot-bar armor">
|
||||||
{{#times member.armorScore.max}}
|
{{#times member.armorScore.max}}
|
||||||
<a class='armor-slot' data-action='toggleArmorSlot' data-actor-id="{{member.uuid}}" data-value="{{add this 1}}">
|
<a class="slot" data-action="toggleArmorSlot" data-actor-id="{{member.uuid}}" data-value="{{add this 1}}">
|
||||||
{{#if (gte member.armorScore.value (add this 1))}}
|
{{#if (gte member.armorScore.value (add this 1))}}
|
||||||
<i class="fa-solid fa-shield"></i>
|
<i class="fa-solid fa-shield"></i>
|
||||||
{{else}}
|
{{else}}
|
||||||
<i class="fa-solid fa-shield-halved"></i>
|
<i class="fa-solid fa-shield-halved"></i>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</a>
|
</a>
|
||||||
{{/times}}
|
{{/times}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</section>
|
</section>
|
||||||
{{#if member.traits}}
|
{{#if member.traits}}
|
||||||
<div class="traits">
|
<div class="traits">
|
||||||
{{#each member.traits as |trait|}}
|
{{#each member.traits as |trait|}}
|
||||||
<span class="trait">
|
<span class="trait">
|
||||||
<span class="label">{{trait.label}}</span>
|
<span class="label">{{trait.label}}</span>
|
||||||
<span class="value">{{trait.value}}</span>
|
<span class="value">{{trait.value}}</span>
|
||||||
</span>
|
</span>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</section>
|
</section>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
{{else}}
|
{{else}}
|
||||||
<ul class="actors-list limited">
|
<ul class="actors-list limited">
|
||||||
{{#each partyMembers as |member id|}}
|
{{#each partyMembers as |member id|}}
|
||||||
<li class="actor-resources">
|
<li class="actor-resources">
|
||||||
<div class="actor-img-frame">
|
<div class="actor-img-frame">
|
||||||
<img class="actor-img" src="{{member.img}}">
|
<img class="actor-img" src="{{member.img}}">
|
||||||
</div>
|
</div>
|
||||||
<header>
|
<header>
|
||||||
<h2 class="actor-name">
|
<h2 class="actor-name">
|
||||||
<a data-action="openDocument" data-uuid="{{member.uuid}}">{{member.name}}</a>
|
<a data-action="openDocument" data-uuid="{{member.uuid}}">{{member.name}}</a>
|
||||||
<a class="delete-icon" data-action="deletePartyMember" data-uuid="{{member.uuid}}"><i class="fa-regular fa-times" inert></i></a>
|
<a class="delete-icon" data-action="deletePartyMember" data-uuid="{{member.uuid}}"><i class="fa-regular fa-times" inert></i></a>
|
||||||
</h2>
|
</h2>
|
||||||
{{#if member.subtitle}}
|
{{#if member.subtitle}}
|
||||||
<span class="subtitle">{{member.subtitle}}</span>
|
<span class="subtitle">{{member.subtitle}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</header>
|
</header>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#unless document.system.partyMembers.length}}
|
{{#unless document.system.partyMembers.length}}
|
||||||
<div class="actors-dragger">
|
<div class="actors-dragger">
|
||||||
<span>{{localize "DAGGERHEART.GENERAL.dropActorsHere"}}</span>
|
<span>{{localize "DAGGERHEART.GENERAL.dropActorsHere"}}</span>
|
||||||
</div>
|
</div>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
|
|
@ -1,35 +1,35 @@
|
||||||
<div class="status-bar">
|
{{#if useResourcePips}}
|
||||||
{{#if useResourcePips}}
|
<div class="slot-value">
|
||||||
<div class='slot-value'>
|
<div class="slot-bar">
|
||||||
<div class="slot-bar">
|
{{#times resource.max}}
|
||||||
{{#times resource.max}}
|
<span class='slot {{#if (gte ../resource.value (add this 1))}}filled{{/if}} {{#if ../largePips}}large{{/if}}' data-action="{{../action}}" data-value="{{add this 1}}">
|
||||||
<span class='slot {{#if (gte ../resource.value (add this 1))}}filled{{/if}} {{#if ../largePips}}large{{/if}}' data-action="{{../action}}" data-value="{{add this 1}}">
|
</span>
|
||||||
</span>
|
{{/times}}
|
||||||
{{/times}}
|
|
||||||
|
{{#times resource.emptyPips}}
|
||||||
{{#times resource.emptyPips}}
|
<span class="empty-slot"></span>
|
||||||
<span class="empty-slot"></span>
|
{{/times}}
|
||||||
{{/times}}
|
|
||||||
</div>
|
|
||||||
<div class="slot-label">
|
|
||||||
<span class="label">{{localize label}}</span>
|
|
||||||
<span class="value">{{resource.value}} / {{resource.max}}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
<div class="slot-label">
|
||||||
|
<span class="label">{{localize label}}</span>
|
||||||
|
<span class="value">{{resource.value}} / {{resource.max}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="status-bar">
|
||||||
<div class='status-value'>
|
<div class='status-value'>
|
||||||
|
<progress
|
||||||
|
class='progress-bar'
|
||||||
|
max='{{resource.max}}'
|
||||||
|
value='{{resource.value}}'
|
||||||
|
></progress>
|
||||||
<input class="bar-input" name="{{key}}" min="0" max='{{resource.max}}'
|
<input class="bar-input" name="{{key}}" min="0" max='{{resource.max}}'
|
||||||
value="{{resource.value}}" type="number">
|
value="{{resource.value}}" type="number">
|
||||||
<span>/</span>
|
<span>/</span>
|
||||||
<span class="bar-label">{{resource.max}}</span>
|
<span class="bar-label">{{resource.max}}</span>
|
||||||
</div>
|
</div>
|
||||||
<progress
|
<div class="status-label pointy">
|
||||||
class='progress-bar'
|
|
||||||
max='{{resource.max}}'
|
|
||||||
value='{{resource.value}}'
|
|
||||||
></progress>
|
|
||||||
<div class="status-label">
|
|
||||||
<h4>{{localize label}}</h4>
|
<h4>{{localize label}}</h4>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
</div>
|
||||||
</div>
|
{{/if}}
|
||||||
|
|
@ -6,18 +6,13 @@
|
||||||
<div class="message-sub-header-container">
|
<div class="message-sub-header-container">
|
||||||
{{#if message.title}}
|
{{#if message.title}}
|
||||||
<h4>{{message.title}}</h4>
|
<h4>{{message.title}}</h4>
|
||||||
<div>{{actor.name}} {{#if author.isGM}}(GM){{/if}}</div>
|
<div>{{alias}} {{#if author.isGM}}(GM){{/if}}</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#unless actor.name}}
|
{{#unless actor.name}}
|
||||||
<h4>{{author.name}}</h4>
|
<h4>{{author.name}}</h4>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#if (eq message.type 'base')}}
|
<h4>{{alias}}</h4>
|
||||||
<h4>{{actor.name}}</h4>
|
<div>{{author.name}}</div>
|
||||||
<div>{{author.name}}</div>
|
|
||||||
{{else}}
|
|
||||||
<h4>{{alias}}</h4>
|
|
||||||
<div>{{actor.name}} {{#if author.isGM}}(GM){{/if}}</div>
|
|
||||||
{{/if}}
|
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
{{#each sources as |source|}}
|
{{#each sources as |source|}}
|
||||||
<div class="armor-source-container">
|
<div class="armor-source-container">
|
||||||
<p class="armor-source-label">{{source.name}}</p>
|
<p class="armor-source-label">{{source.name}}</p>
|
||||||
<div class="slot-bar">
|
<div class="slot-bar armor">
|
||||||
{{#times source.max}}
|
{{#times source.max}}
|
||||||
<a class='armor-slot' data-value="{{add this 1}}" data-uuid="{{source.uuid}}">
|
<a class="slot" data-value="{{add this 1}}" data-uuid="{{source.uuid}}">
|
||||||
{{#if (gte ../current (add this 1))}}
|
{{#if (gte ../current (add this 1))}}
|
||||||
<i class="fa-solid fa-shield" data-index="{{this}}"></i>
|
<i class="fa-solid fa-shield" data-index="{{this}}"></i>
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue