[FEATURE] #149 - New style for character sheets (#172)

* new style for character sheets

* Added nowrap on level label

---------

Co-authored-by: WBHarry <williambjrklund@gmail.com>
This commit is contained in:
Murilo Brito 2025-06-24 10:59:31 -03:00 committed by GitHub
parent f133b3b966
commit 56c4a2805f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
42 changed files with 2399 additions and 110 deletions

View file

@ -0,0 +1,3 @@
<svg width="35" height="25" viewBox="0 0 35 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M32.0195 21.126C32.6293 22.7597 31.4216 24.5 29.6777 24.5L3.32226 24.5C1.57838 24.5 0.370692 22.7597 0.980468 21.126L3.74316 13.7246C4.0379 12.9351 4.0379 12.0649 3.74316 11.2754L0.980469 3.87402C0.370692 2.24027 1.57838 0.499999 3.32227 0.499999L29.6777 0.5C31.4216 0.5 32.6293 2.24027 32.0195 3.87402L29.2568 11.2754C28.9621 12.0649 28.9621 12.9351 29.2568 13.7246L32.0195 21.126Z" fill="transparent" stroke="#18162E"/>
</svg>

After

Width:  |  Height:  |  Size: 535 B

View file

@ -0,0 +1,3 @@
<svg width="35" height="25" viewBox="0 0 35 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M32.0195 21.126C32.6293 22.7597 31.4216 24.5 29.6777 24.5L3.32226 24.5C1.57838 24.5 0.370692 22.7597 0.980468 21.126L3.74316 13.7246C4.0379 12.9351 4.0379 12.0649 3.74316 11.2754L0.980469 3.87402C0.370692 2.24027 1.57838 0.499999 3.32227 0.499999L29.6777 0.5C31.4216 0.5 32.6293 2.24027 32.0195 3.87402L29.2568 11.2754C28.9621 12.0649 28.9621 12.9351 29.2568 13.7246L32.0195 21.126Z" fill="#18162E" fill-opacity="0.33" stroke="#F3C267"/>
</svg>

After

Width:  |  Height:  |  Size: 551 B

View file

@ -0,0 +1,3 @@
<svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.12012 0.5H51.8799C55.2901 0.500041 57.8779 3.57175 57.2998 6.93262L50.4639 46.6777C50.1604 48.4411 49.0179 49.9467 47.4014 50.7139L31.3584 58.3271C29.8661 59.0354 28.1339 59.0354 26.6416 58.3271L10.5986 50.7139C8.98214 49.9467 7.83959 48.4411 7.53613 46.6777L0.700195 6.93262C0.122088 3.57175 2.7099 0.500042 6.12012 0.5Z" fill="transparent" stroke="#18162e"/>
</svg>

After

Width:  |  Height:  |  Size: 476 B

View file

@ -0,0 +1,3 @@
<svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.12012 0.5H51.8799C55.2901 0.500041 57.8779 3.57175 57.2998 6.93262L50.4639 46.6777C50.1604 48.4411 49.0179 49.9467 47.4014 50.7139L31.3584 58.3271C29.8661 59.0354 28.1339 59.0354 26.6416 58.3271L10.5986 50.7139C8.98214 49.9467 7.83959 48.4411 7.53613 46.6777L0.700195 6.93262C0.122088 3.57175 2.7099 0.500042 6.12012 0.5Z" fill="#18152E" stroke="#F3C267"/>
</svg>

After

Width:  |  Height:  |  Size: 472 B

View file

@ -272,6 +272,11 @@ Hooks.on('renderJournalDirectory', async (tab, html, _, options) => {
const preloadHandlebarsTemplates = async function () {
return foundry.applications.handlebars.loadTemplates([
'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs',
'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs',
'systems/daggerheart/templates/sheets/global/partials/domain-card-item.hbs',
'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs',
'systems/daggerheart/templates/sheets/parts/attributes.hbs',
'systems/daggerheart/templates/sheets/parts/defense.hbs',
'systems/daggerheart/templates/sheets/parts/armor.hbs',

View file

@ -274,17 +274,17 @@
"SpellcastingTrait": "Spellcasting Trait"
},
"Condition": {
"Vulnerable": {
"Name": "Vulnerable",
"Description": "While a creature is Vulnerable, all rolls targeting them have advantage.\nA creature who is already Vulnerable cant be made to take the condition again."
"vulnerable": {
"name": "Vulnerable",
"description": "While a creature is Vulnerable, all rolls targeting them have advantage.\nA creature who is already Vulnerable cant be made to take the condition again."
},
"Hidden": {
"Name": "Hidden",
"Description": "While Hidden, attacks cannot be made directly targeting them nd any rolls against them are at disadvantage.\nWhen a Hidden creature moves or attacks, they are no longer Hidden. However, if a creature is Hidden when they begin making an attack, the roll has advantage; the Hidden condition isnt cleared until after the attack is resolved."
"hidden": {
"name": "Hidden",
"description": "While Hidden, attacks cannot be made directly targeting them nd any rolls against them are at disadvantage.\nWhen a Hidden creature moves or attacks, they are no longer Hidden. However, if a creature is Hidden when they begin making an attack, the roll has advantage; the Hidden condition isnt cleared until after the attack is resolved."
},
"Restrained": {
"Name": "Restrained",
"Description": "When an effect makes a creature Restrained, it means they cannot move until this condition is cleared.\nThey can still take actions from their current position."
"restrained": {
"name": "Restrained",
"description": "When an effect makes a creature Restrained, it means they cannot move until this condition is cleared.\nThey can still take actions from their current position."
}
},
"Tiers": {
@ -1074,6 +1074,8 @@
"PC": {
"Name": "Name",
"Pronouns": "Pronouns",
"age": "Age",
"faith": "Faith",
"ShortRest": "Take a Short Rest",
"LongRest": "Take a Long Rest",
"Level": "Level",
@ -1085,7 +1087,9 @@
"Loadout": "Loadout",
"Vault": "Vault",
"Heritage": "Heritage",
"Story": "Story"
"Story": "Story",
"biography": "Biography",
"effects": "Effects"
},
"Armor": {
"Title": "Active Armor"
@ -1164,6 +1168,7 @@
"BackgroundTitle": "Background",
"AppearanceTitle": "Appearance",
"ConnectionsTitle": "Connections",
"characteristics": "Characteristics",
"Scars": {
"Title": "Scars"
}
@ -1323,7 +1328,9 @@
},
"Global": {
"Actions": "Actions",
"Effects": "Effects"
"Effects": "Effects",
"activeEffects": "Active Effects",
"inativeEffects": "Inative Effects"
},
"DomainCard": {
"Type": "Type",
@ -1414,6 +1421,10 @@
}
},
"Effects": {
"duration": {
"passive": "Passive",
"temporary": "Temporary"
},
"Types": {
"health": {
"Name": "Health"
@ -1439,7 +1450,13 @@
},
"Tooltip": {
"openItemWorld": "Open Item World",
"delete": "Delete"
"sendToChat": "Send to Chat",
"moreOptions": "More Options",
"equip": "Equip",
"unequip": "Unequip",
"delete": "Delete",
"sendToVault": "Send to Vault",
"sendToLoadout": "Send to Loadout"
},
"Actions": {
"Types": {

View file

@ -16,8 +16,8 @@ export default class CharacterSheet extends DaggerheartSheet(ActorSheetV2) {
static DEFAULT_OPTIONS = {
tag: 'form',
classes: ['daggerheart', 'sheet', 'pc'],
position: { width: 810, height: 1080 },
classes: ['daggerheart', 'sheet', 'actor', 'dh-style', 'daggerheart', 'character'],
position: { width: 850, height: 800 },
actions: {
attributeRoll: this.rollAttribute,
toggleMarks: this.toggleMarks,
@ -47,10 +47,10 @@ export default class CharacterSheet extends DaggerheartSheet(ActorSheetV2) {
useAdvancementCard: this.useAdvancementCard,
useAdvancementAbility: this.useAdvancementAbility,
toggleEquipItem: this.toggleEquipItem,
levelup: this.openLevelUp
levelup: this.openLevelUp,
editImage: this._onEditImage
},
window: {
minimizable: false,
resizable: true
},
form: {
@ -66,9 +66,76 @@ export default class CharacterSheet extends DaggerheartSheet(ActorSheetV2) {
};
static PARTS = {
form: {
id: 'character',
template: 'systems/daggerheart/templates/sheets/character/character.hbs'
sidebar: {
id: 'sidebar',
template: 'systems/daggerheart/templates/sheets/actors/character/sidebar.hbs'
},
header: {
id: 'header',
template: 'systems/daggerheart/templates/sheets/actors/character/header.hbs'
},
features: {
id: 'features',
template: 'systems/daggerheart/templates/sheets/actors/character/features.hbs'
},
loadout: {
id: 'loadout',
template: 'systems/daggerheart/templates/sheets/actors/character/loadout.hbs'
},
inventory: {
id: 'inventory',
template: 'systems/daggerheart/templates/sheets/actors/character/inventory.hbs'
},
biography: {
id: 'biography',
template: 'systems/daggerheart/templates/sheets/actors/character/biography.hbs'
},
effects: {
id: 'effects',
template: 'systems/daggerheart/templates/sheets/actors/character/effects.hbs'
}
};
static TABS = {
features: {
active: true,
cssClass: '',
group: 'primary',
id: 'features',
icon: null,
label: 'DAGGERHEART.Sheets.PC.Tabs.Features'
},
loadout: {
active: false,
cssClass: '',
group: 'primary',
id: 'loadout',
icon: null,
label: 'DAGGERHEART.Sheets.PC.Tabs.Loadout'
},
inventory: {
active: false,
cssClass: '',
group: 'primary',
id: 'inventory',
icon: null,
label: 'DAGGERHEART.Sheets.PC.Tabs.Inventory'
},
biography: {
active: false,
cssClass: '',
group: 'primary',
id: 'biography',
icon: null,
label: 'DAGGERHEART.Sheets.PC.Tabs.biography'
},
effects: {
active: false,
cssClass: '',
group: 'primary',
id: 'effects',
icon: null,
label: 'DAGGERHEART.Sheets.PC.Tabs.effects'
}
};
@ -150,17 +217,29 @@ export default class CharacterSheet extends DaggerheartSheet(ActorSheetV2) {
_attachPartListeners(partId, htmlElement, options) {
super._attachPartListeners(partId, htmlElement, options);
htmlElement.querySelector('.level-value').addEventListener('change', this.onLevelChange.bind(this));
// htmlElement.querySelector('.level-value').addEventListener('change', this.onLevelChange.bind(this));
// To Remove when ContextMenu Handler is made
htmlElement
.querySelectorAll('[data-item-id]')
.forEach(element => element.addEventListener('contextmenu', this.editItem.bind(this)));
}
static _onEditImage() {
const fp = new FilePicker({
current: this.document.img,
type: 'image',
redirectToRoot: ['icons/svg/mystery-man.svg'],
callback: async path => this._updateImage.bind(this)(path),
top: this.position.top + 40,
left: this.position.left + 10
});
return fp.browse();
}
async _prepareContext(_options) {
const context = await super._prepareContext(_options);
context.document = this.document;
context.tabs = this._getTabs();
context.tabs = super._getTabs(this.constructor.TABS);
context.config = SYSTEM;

View file

@ -83,21 +83,21 @@ export const healingTypes = {
export const conditions = {
vulnerable: {
id: 'vulnerable',
name: 'DAGGERHEART.Condition.Vulnerable.Name',
name: 'DAGGERHEART.Condition.vulnerable.name',
icon: 'icons/magic/control/silhouette-fall-slip-prone.webp',
description: 'DAGGERHEART.Condition.Vulnerable.Description'
description: 'DAGGERHEART.Condition.vulnerable.description'
},
hidden: {
id: 'hidden',
name: 'DAGGERHEART.Condition.Hidden.Name',
name: 'DAGGERHEART.Condition.hidden.name',
icon: 'icons/magic/perception/silhouette-stealth-shadow.webp',
description: 'DAGGERHEART.Condition.Hidden.Description'
description: 'DAGGERHEART.Condition.hidden.description'
},
restrained: {
id: 'restrained',
name: 'DAGGERHEART.Condition.Restrained.Name',
name: 'DAGGERHEART.Condition.restrained.name',
icon: 'icons/magic/control/debuff-chains-shackle-movement-red.webp',
description: 'DAGGERHEART.Condition.Restrained.Description'
description: 'DAGGERHEART.Condition.restrained.description'
}
};

View file

@ -62,14 +62,21 @@ export default class DhCharacter extends BaseDataActor {
bags: new fields.NumberField({ initial: 0, integer: true }),
chests: new fields.NumberField({ initial: 0, integer: true })
}),
pronouns: new fields.StringField({}),
scars: new fields.TypedObjectField(
new fields.SchemaField({
name: new fields.StringField({}),
description: new fields.HTMLField()
})
),
story: new fields.HTMLField(),
biography: new fields.SchemaField({
background: new fields.HTMLField(),
connections: new fields.HTMLField(),
characteristics: new fields.SchemaField({
pronouns: new fields.StringField({}),
age: new fields.StringField({}),
faith: new fields.StringField({})
})
}),
class: new fields.SchemaField({
value: new ForeignDocumentUUIDField({ type: 'Item', nullable: true }),
subclass: new ForeignDocumentUUIDField({ type: 'Item', nullable: true })

View file

@ -13,10 +13,43 @@ export default class RegisterHandlebarsHelpers {
signedNumber: this.signedNumber,
length: this.length,
switch: this.switch,
case: this.case
case: this.case,
eq: this.eq,
ne: this.ne,
lt: this.lt,
gt: this.gt,
lte: this.lte,
gte: this.gte,
and: this.and,
or: this.or
});
}
static eq(v1, v2) {
return v1 === v2;
}
static ne(v1, v2) {
return v1 !== v2;
}
static lt(v1, v2) {
return v1 < v2;
}
static gt(v1, v2) {
return v1 > v2;
}
static lte(v1, v2) {
return v1 <= v2;
}
static gte(v1, v2) {
return v1 >= v2;
}
static and() {
return Array.prototype.every.call(arguments, Boolean);
}
static or() {
return Array.prototype.slice.call(arguments, 0, -1).some(Boolean);
}
static times(nr, block) {
var accum = '';
for (var i = 0; i < nr; ++i) accum += block.fn(i);
@ -101,7 +134,7 @@ export default class RegisterHandlebarsHelpers {
}
static debug(a) {
console.log(JSON.stringify(a));
console.log(a);
return a;
}
}

View file

@ -404,6 +404,8 @@
flex-direction: column;
align-items: flex-start;
border-radius: 6px;
height: 100px;
width: 100px;
}
.daggerheart.sheet.pc div[data-application-part] .sheet-body .left-main-container .legend {
margin-left: auto;
@ -3442,6 +3444,553 @@ div.daggerheart.views.multiclass {
.daggerheart.dh-style.setting .trait-array-container .trait-array-item input {
text-align: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet {
padding: 0 15px;
padding-top: 36px;
width: 100%;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .name-row {
display: flex;
gap: 20px;
align-items: baseline;
justify-content: space-between;
padding: 0;
padding-top: 5px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .name-row input[type='text'] {
font-size: 32px;
height: 42px;
width: 380px;
text-align: start;
border: 1px solid transparent;
outline: 2px solid transparent;
transition: all 0.3s ease;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .name-row input[type='text']:hover {
outline: 2px solid light-dark(#222, #f3c267);
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .name-row .level-div {
white-space: nowrap;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-details {
display: flex;
justify-content: space-between;
padding: 5px 0;
margin-bottom: 10px;
font-size: 12px;
color: light-dark(#18162e, #f3c267);
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-details span {
padding: 3px;
border-radius: 3px;
transition: all 0.3s ease;
cursor: pointer;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-details span:hover {
background: light-dark(#18162e40, #f3c26740);
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-details span.dot {
background: transparent;
cursor: default;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row {
display: flex;
gap: 20px;
align-items: center;
justify-content: space-between;
padding: 0;
margin-bottom: 15px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row .hope-section,
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row .threshold-section {
position: relative;
display: flex;
gap: 10px;
background-color: light-dark(transparent, #18162e);
color: light-dark(#18162e, #f3c267);
padding: 5px 10px;
border: 1px solid light-dark(#18162e, #f3c267);
border-radius: 6px;
align-items: center;
width: fit-content;
height: 30px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row .hope-section h4,
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row .threshold-section h4 {
font-size: 14px;
font-weight: bold;
text-transform: uppercase;
color: light-dark(#18162e, #f3c267);
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row .hope-section h4.threshold-value,
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row .threshold-section h4.threshold-value {
color: light-dark(#222, #efe6d8);
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row .hope-section .threshold-legend,
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row .threshold-section .threshold-legend {
position: absolute;
bottom: -21px;
color: light-dark(#f3c267, #18162e);
background-color: light-dark(#18162e, #f3c267);
padding: 3px;
justify-self: anchor-center;
border-radius: 0 0 3px 3px;
text-transform: capitalize;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row .hope-section .hope-value,
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-row .threshold-section .hope-value {
display: flex;
cursor: pointer;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-traits {
display: flex;
justify-content: space-between;
padding: 0;
margin-bottom: 15px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-traits .trait {
height: 60px;
width: 60px;
background: url(../assets/svg/trait-shield.svg) no-repeat;
cursor: pointer;
}
.theme-light .application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-traits .trait {
background: url('../assets/svg/trait-shield-light.svg') no-repeat;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-traits .trait .trait-name {
display: flex;
padding-top: 5px;
color: light-dark(#18162e, #f3c267);
font-size: 14px;
font-weight: 600;
align-items: center;
justify-content: center;
gap: 3px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-traits .trait .trait-name i {
line-height: 17px;
font-size: 10px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet .character-traits .trait .trait-value {
font-family: 'Montserrat', sans-serif;
font-style: normal;
font-weight: 400;
font-size: 20px;
text-align: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet {
width: 275px;
min-width: 275px;
border-right: 1px solid light-dark(#18162e, #f3c267);
background-image: url('../assets/parchments/dh-parchment-dark.png');
}
.theme-light .application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet {
background: transparent;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet img {
height: 235px;
width: 275px;
border-bottom: 1px solid light-dark(#18162e, #f3c267);
cursor: pointer;
object-fit: cover;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section {
position: relative;
display: flex;
flex-direction: column;
top: -20px;
gap: 30px;
margin-bottom: -10px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section {
display: flex;
justify-content: space-evenly;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar {
position: relative;
width: 100px;
height: 40px;
justify-items: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .status-label {
position: relative;
top: 40px;
height: 22px;
width: 79px;
clip-path: path('M0 0H79L74 16.5L39 22L4 16.5L0 0Z');
background: light-dark(#18162e, #f3c267);
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .status-label h4 {
font-weight: bold;
text-align: center;
line-height: 18px;
color: light-dark(#efe6d8, #18162e);
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .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: #efe6d8;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .status-value input[type='number'] {
background: transparent;
font-size: 1.5rem;
width: 40px;
height: 30px;
text-align: center;
border: none;
outline: 2px solid transparent;
color: #efe6d8;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .status-value input[type='number'].bar-input {
padding: 0;
color: #efe6d8;
backdrop-filter: none;
background: transparent;
transition: all 0.3s ease;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .status-value input[type='number'].bar-input:hover,
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .status-value input[type='number'].bar-input:focus {
background: rgba(24, 22, 46, 0.33);
backdrop-filter: blur(9.5px);
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .status-value .bar-label {
width: 40px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar {
position: absolute;
appearance: none;
width: 100px;
height: 40px;
border: 1px solid light-dark(#18162e, #f3c267);
border-radius: 6px;
z-index: 1;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar::-webkit-progress-bar {
border: none;
background: #18162e;
border-radius: 6px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar::-webkit-progress-value {
background: linear-gradient(15deg, #46140a 0%, #be0000 42%, #fcb045 100%);
border-radius: 6px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar.stress-color::-webkit-progress-value {
background: linear-gradient(15deg, #823b01 0%, #fc8e45 65%, #be0000 100%);
border-radius: 6px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar::-moz-progress-value,
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar::-moz-progress-bar {
border-radius: 6px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar::-moz-progress-bar {
background: linear-gradient(15deg, #46140a 0%, #be0000 42%, #fcb045 100%);
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar.stress-color::-moz-progress-bar {
background: linear-gradient(15deg, #823b01 0%, #fc8e45 65%, #be0000 100%);
border-radius: 6px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .status-section {
display: flex;
flex-wrap: wrap;
gap: 5px;
justify-content: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .status-section .status-number {
justify-items: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .status-section .status-number .status-value {
position: relative;
display: flex;
width: 50px;
height: 30px;
border: 1px solid light-dark(#18162e, #f3c267);
border-bottom: none;
border-radius: 6px 6px 0 0;
padding: 0 6px;
font-size: 1.2rem;
align-items: center;
justify-content: center;
background: light-dark(transparent, #18162e);
z-index: 2;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .status-section .status-number .status-value.armor-slots {
width: 80px;
height: 30px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .status-section .status-number .status-label {
padding: 2px 10px;
width: 100%;
border-radius: 3px;
background: light-dark(#18162e, #f3c267);
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .status-section .status-number .status-label h4 {
font-weight: bold;
text-align: center;
line-height: 18px;
font-size: 12px;
color: light-dark(#efe6d8, #18162e);
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .items-sidebar-list {
display: flex;
flex-direction: column;
gap: 5px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .items-sidebar-list .inventory-item {
padding: 0 10px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .equipment-section .title {
display: flex;
gap: 15px;
align-items: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .equipment-section .title h3 {
font-size: 20px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .equipment-section .items-list {
display: flex;
flex-direction: column;
gap: 10px;
align-items: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .loadout-section .title {
display: flex;
gap: 15px;
align-items: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .loadout-section .title h3 {
font-size: 20px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .title {
display: flex;
gap: 15px;
align-items: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .title h3 {
font-size: 20px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .experience-list {
display: flex;
flex-direction: column;
gap: 5px;
width: 100%;
margin-top: 10px;
align-items: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .experience-list .experience-row {
display: flex;
gap: 5px;
width: 250px;
align-items: center;
justify-content: space-between;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .experience-list .experience-row input[type='text'] {
height: 32px;
width: 180px;
border: 1px solid transparent;
outline: 2px solid transparent;
font-size: 14px;
font-family: 'Montserrat', sans-serif;
transition: all 0.3s ease;
color: light-dark(#222, #efe6d8);
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .experience-list .experience-row input[type='text']:hover {
outline: 2px solid light-dark(#222, #efe6d8);
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .experience-list .experience-value {
height: 25px;
width: 35px;
font-size: 14px;
font-family: 'Montserrat', sans-serif;
color: light-dark(#222, #efe6d8);
align-content: center;
text-align: center;
background: url(../assets/svg/experience-shield.svg) no-repeat;
}
.theme-light .application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .experience-list .experience-value {
background: url('../assets/svg/experience-shield-light.svg') no-repeat;
}
.application.sheet.daggerheart.actor.dh-style.character .window-content {
display: grid;
grid-template-columns: 275px 1fr;
grid-template-rows: 283px 1fr;
gap: 15px 0;
height: 100%;
width: 100%;
}
.application.sheet.daggerheart.actor.dh-style.character .window-content .character-sidebar-sheet {
grid-row: 1 / span 2;
grid-column: 1;
}
.application.sheet.daggerheart.actor.dh-style.character .window-content .character-header-sheet {
grid-row: 1;
grid-column: 2;
}
.application.sheet.daggerheart.actor.dh-style.character .window-content .tab {
grid-row: 2;
grid-column: 2;
}
.application.sheet.daggerheart.actor.dh-style.character .window-content .old-sheet {
width: 500px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.inventory .search-section {
display: flex;
gap: 10px;
align-items: center;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.inventory .search-section .search-bar {
position: relative;
color: light-dark(#18162e50, #efe6d850);
width: 100%;
padding-top: 5px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.inventory .search-section .search-bar input {
border-radius: 50px;
font-family: 'Montserrat', sans-serif;
background: light-dark(#18162e10, #f3c26710);
border: none;
outline: 2px solid transparent;
transition: all 0.3s ease;
padding: 0 20px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.inventory .search-section .search-bar input:hover {
outline: 2px solid light-dark(#222, #f3c267);
}
.application.sheet.daggerheart.actor.dh-style.character .tab.inventory .search-section .search-bar input:placeholder {
color: light-dark(#18162e50, #efe6d850);
}
.application.sheet.daggerheart.actor.dh-style.character .tab.inventory .search-section .search-bar .icon {
align-content: center;
height: 32px;
position: absolute;
right: 20px;
font-size: 16px;
z-index: 1;
color: light-dark(#18162e50, #efe6d850);
}
.application.sheet.daggerheart.actor.dh-style.character .tab.inventory .items-section {
display: flex;
flex-direction: column;
gap: 10px;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%);
padding: 20px 0;
height: 80%;
scrollbar-width: thin;
scrollbar-color: light-dark(#18162e, #f3c267) transparent;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.inventory .currency-section {
display: flex;
gap: 10px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section {
display: flex;
align-items: center;
justify-content: space-between;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .search-bar {
position: relative;
color: light-dark(#18162e50, #efe6d850);
width: 80%;
padding-top: 5px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .search-bar input {
border-radius: 50px;
font-family: 'Montserrat', sans-serif;
background: light-dark(#18162e10, #f3c26710);
border: none;
outline: 2px solid transparent;
transition: all 0.3s ease;
padding: 0 20px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .search-bar input:hover {
outline: 2px solid light-dark(#222, #f3c267);
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .search-bar input:placeholder {
color: light-dark(#18162e50, #efe6d850);
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .search-bar .icon {
align-content: center;
height: 32px;
position: absolute;
right: 20px;
font-size: 16px;
z-index: 1;
color: light-dark(#18162e50, #efe6d850);
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .btn-toogle-view {
background: light-dark(#18162e10, #18162e);
border: 1px solid light-dark(#18162e, #f3c267);
border-radius: 15px;
padding: 0;
gap: 0;
width: 62px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .btn-toogle-view span {
margin: 1px;
width: 26px;
color: light-dark(#18162e, #f3c267);
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .btn-toogle-view span.list-icon i {
margin-left: 3px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .btn-toogle-view span.grid-icon i {
margin-right: 3px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .btn-toogle-view span.list-active {
border-radius: 32px 3px 3px 32px;
background-color: light-dark(#18162e, #f3c267);
color: light-dark(#efe6d8, #18162e);
padding: 2px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .search-section .btn-toogle-view span.grid-active {
border-radius: 3px 32px 32px 3px;
background-color: light-dark(#18162e, #f3c267);
color: light-dark(#efe6d8, #18162e);
padding: 2px;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.loadout .items-section {
display: flex;
flex-direction: column;
gap: 10px;
height: 100%;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 10%, black 98%, transparent 100%);
padding: 20px 0;
height: 90%;
scrollbar-width: thin;
scrollbar-color: light-dark(#18162e, #f3c267) transparent;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.biography .items-section {
display: flex;
flex-direction: column;
gap: 10px;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 10%, black 98%, transparent 100%);
padding-bottom: 40px;
height: 100%;
scrollbar-width: thin;
scrollbar-color: light-dark(#18162e, #f3c267) transparent;
}
.application.sheet.daggerheart.actor.dh-style.character .tab.features .features-sections {
display: flex;
flex-direction: column;
gap: 10px;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%);
padding: 20px 0;
padding-top: 10px;
height: 95%;
scrollbar-width: thin;
scrollbar-color: light-dark(#18162e, #f3c267) transparent;
}
.application.sheet.daggerheart.actor.dh-style.adversary .window-content {
overflow: auto;
}
@ -3521,9 +4070,6 @@ div.daggerheart.views.multiclass {
justify-content: center;
gap: 10px;
}
.application.sheet.daggerheart.dh-style.class .tab.settings .list-items .item-line .controls a {
text-shadow: none;
}
@font-face {
font-family: 'Cinzel';
font-style: normal;
@ -3622,7 +4168,6 @@ div.daggerheart.views.multiclass {
transition: opacity 0.3s ease;
}
.application.sheet.dh-style.minimized .window-content {
display: none;
opacity: 0;
transition: opacity 0.1s ease;
}
@ -3630,26 +4175,38 @@ div.daggerheart.views.multiclass {
opacity: 1;
transition: opacity 0.3s ease;
}
.application.sheet.dh-style .window-content {
overflow: initial;
backdrop-filter: none;
padding: 0;
}
.theme-dark .application.sheet.dh-style {
backdrop-filter: blur(4px);
background: rgba(24, 22, 46, 0.33);
backdrop-filter: blur(9px);
}
.theme-light .application.sheet.dh-style {
background-image: url('../assets/parchments/dh-parchment-light.png');
background-repeat: no-repeat;
background-position: center;
}
.application.sheet.daggerheart.dh-style {
border-radius: 10px;
}
.application.sheet.daggerheart.dh-style .window-content {
padding: 0;
position: relative;
top: -36px;
min-height: -webkit-fill-available;
}
.application.sheet.daggerheart.dh-style .window-content .tab {
padding: 0 10px;
}
.application.sheet.daggerheart.character.dh-style {
border-radius: 10px;
}
.application.sheet.daggerheart.character.dh-style .window-content {
position: absolute;
top: 0;
}
.application.sheet.daggerheart.character.dh-style .window-content .tab {
padding: 0 15px;
overflow-y: hidden;
}
.application.sheet.dh-style {
border: 1px solid light-dark(#18162e, #f3c267);
}
@ -3724,19 +4281,36 @@ div.daggerheart.views.multiclass {
.application.sheet.dh-style li {
margin: 0;
}
.application.sheet.dh-style a:hover,
.application.sheet.dh-style a.active {
text-shadow: 0 0 8px light-dark(#18162e, #f3c267);
}
.application.sheet.dh-style fieldset {
align-items: center;
margin-top: 5px;
border-radius: 6px;
border-color: light-dark(#18162e, #f3c267);
}
.application.sheet.dh-style fieldset.glassy {
background-color: light-dark(#18162e10, #f3c26710);
border-color: transparent;
}
.application.sheet.dh-style fieldset.glassy legend {
padding: 2px 12px;
border-radius: 3px;
background-color: light-dark(#18162e, #f3c267);
color: light-dark(#efe6d8, #18162e);
}
.application.sheet.dh-style fieldset.flex {
display: flex;
gap: 20px;
}
.application.sheet.dh-style fieldset.one-column {
display: flex;
flex-direction: column;
align-items: start;
gap: 10px;
min-height: 64px;
width: 100%;
}
.application.sheet.dh-style fieldset.two-columns {
display: grid;
@ -3754,9 +4328,6 @@ div.daggerheart.views.multiclass {
font-weight: bold;
color: light-dark(#18162e, #f3c267);
}
.application.sheet.dh-style fieldset legend a {
text-shadow: none;
}
.application.sheet.dh-style fieldset input[type='text'],
.application.sheet.dh-style fieldset input[type='number'] {
color: light-dark(#222, #efe6d8);
@ -3795,6 +4366,16 @@ div.daggerheart.views.multiclass {
border-bottom: 1px solid light-dark(#18162e, #f3c267);
mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%);
}
.application.sheet.dh-style side-line-div {
display: block;
height: 1px;
width: 100%;
border-bottom: 1px solid light-dark(#18162e, #f3c267);
mask-image: linear-gradient(270deg, transparent 0%, black 100%);
}
.application.sheet.dh-style side-line-div.invert {
mask-image: linear-gradient(270deg, black 0%, transparent 100%);
}
.application.sheet.dh-style .item-description {
opacity: 1;
transform: translateY(0);
@ -3989,11 +4570,9 @@ div.daggerheart.views.multiclass {
}
.sheet.daggerheart.dh-style .tab-navigation .feature-tab {
border: none;
gap: 5px;
}
.sheet.daggerheart.dh-style .tab-navigation .feature-tab a {
color: light-dark(#18162e, #f3c267);
text-shadow: none;
font-family: 'Montserrat', sans-serif;
}
.sheet.daggerheart.dh-style .tab-form-footer {
@ -4038,9 +4617,6 @@ div.daggerheart.views.multiclass {
justify-content: center;
gap: 10px;
}
.sheet.daggerheart.dh-style .tab.actions .actions-list .action-item .controls a {
text-shadow: none;
}
.sheet.daggerheart.dh-style .tab.effects .effects-list {
display: flex;
flex-direction: column;
@ -4073,9 +4649,6 @@ div.daggerheart.views.multiclass {
justify-content: center;
gap: 10px;
}
.sheet.daggerheart.dh-style .tab.effects .effects-list .effect-item .controls a {
text-shadow: none;
}
.application.sheet.daggerheart.dh-style .item-sheet-header {
display: flex;
}
@ -4248,12 +4821,129 @@ div.daggerheart.views.multiclass {
.sheet.daggerheart.dh-style.item .tab.features .feature-list .feature-item .feature-line .controls a {
text-shadow: none;
}
#logo {
content: url(../assets/DaggerheartLogo.webp);
height: 50px;
width: 50px;
.application.sheet.daggerheart.actor.dh-style.character .inventory-item {
display: grid;
grid-template-columns: 40px 1fr 60px;
gap: 10px;
width: 100%;
}
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .item-img {
height: 40px;
width: 40px;
border-radius: 3px;
border: none;
cursor: pointer;
object-fit: cover;
}
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .item-label {
font-family: 'Montserrat', sans-serif;
align-self: center;
}
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .item-label .item-name {
font-size: 14px;
}
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .item-label .item-tags,
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .item-label .item-labels {
display: flex;
gap: 10px;
}
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .item-label .item-tags .tag,
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .item-label .item-labels .tag {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
padding: 3px 5px;
font-size: 12px;
background: light-dark(#22222215, #efe6d815);
border: 1px solid light-dark(#222, #efe6d8);
border-radius: 3px;
}
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .item-label .item-tags .label,
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .item-label .item-labels .label {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
font-size: 12px;
}
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .controls {
display: flex;
align-items: center;
justify-content: end;
gap: 8px;
}
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .controls a {
text-align: center;
}
.application.sheet.daggerheart.actor.dh-style.character .inventory-item .controls a.unequipped {
opacity: 0.4;
}
.application.sheet.daggerheart.actor.dh-style.character .card-item {
position: relative;
left: 25px;
height: 120px;
width: 100px;
border: 1px solid light-dark(#18162e, #f3c267);
border-radius: 6px;
cursor: pointer;
}
.application.sheet.daggerheart.actor.dh-style.character .card-item:hover .card-label {
padding-top: 15px;
}
.application.sheet.daggerheart.actor.dh-style.character .card-item:hover .card-label .controls {
opacity: 1;
visibility: visible;
transition: all 0.3s ease;
max-height: 16px;
}
.application.sheet.daggerheart.actor.dh-style.character .card-item .card-img {
height: 100%;
width: 100%;
object-fit: cover;
}
.application.sheet.daggerheart.actor.dh-style.character .card-item .card-label {
display: flex;
flex-direction: column;
height: fit-content;
align-items: center;
gap: 5px;
padding-top: 5px;
padding-bottom: 5px;
width: 100%;
position: absolute;
background-color: #18162e;
bottom: 0;
mask-image: linear-gradient(180deg, transparent 0%, black 20%);
}
.application.sheet.daggerheart.actor.dh-style.character .card-item .card-label .card-name {
font-family: 'Montserrat', sans-serif;
font-style: normal;
font-weight: 400;
font-size: 12px;
line-height: 15px;
color: #efe6d8;
}
.application.sheet.daggerheart.actor.dh-style.character .card-item .card-label .controls {
display: flex;
gap: 15px;
align-items: center;
max-height: 0px;
opacity: 0;
visibility: collapse;
transition: all 0.3s ease;
color: #efe6d8;
}
.application.sheet.daggerheart.actor.dh-style.character .items-list {
display: flex;
flex-direction: column;
gap: 10px;
align-items: center;
}
.application.sheet.daggerheart.actor.dh-style.character .card-list {
display: flex;
flex-direction: row;
gap: 10px;
align-items: center;
}
.daggerheart {
/* Flex */

View file

@ -16,7 +16,14 @@
@import './settings.less';
// new styles imports
@import './less/actors/character.less';
@import './less/actors/character/header.less';
@import './less/actors/character/sidebar.less';
@import './less/actors/character/sheet.less';
@import './less/actors/character/inventory.less';
@import './less/actors/character/loadout.less';
@import './less/actors/character/biography.less';
@import './less/actors/character/features.less';
@import './less/actors/adversary.less';
@import './less/actors/environment.less';
@ -35,14 +42,8 @@
@import './less/global/tab-effects.less';
@import './less/global/item-header.less';
@import './less/global/feature-section.less';
#logo {
content: url(../assets/DaggerheartLogo.webp);
height: 50px;
width: 50px;
position: relative;
left: 25px;
}
@import './less/global/inventory-item.less';
@import './less/global/inventory-fieldset-items.less';
.daggerheart {
.vertical-separator {

View file

@ -0,0 +1,11 @@
@import '../utils/colors.less';
@import '../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
.window-content {
display: flex;
flex-direction: row;
height: 100%;
width: 100%;
}
}

View file

@ -0,0 +1,20 @@
@import '../../utils/colors.less';
@import '../../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
.tab.biography {
.items-section {
display: flex;
flex-direction: column;
gap: 10px;
height: 100%;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 10%, black 98%, transparent 100%);
padding-bottom: 40px;
height: 100%;
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;
}
}
}

View file

@ -0,0 +1,20 @@
@import '../../utils/colors.less';
@import '../../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
.tab.features {
.features-sections {
display: flex;
flex-direction: column;
gap: 10px;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%);
padding: 20px 0;
padding-top: 10px;
height: 95%;
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;
}
}
}

View file

@ -0,0 +1,157 @@
@import '../../utils/colors.less';
@import '../../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
.character-header-sheet {
padding: 0 15px;
padding-top: 36px;
width: 100%;
.name-row {
display: flex;
gap: 20px;
align-items: baseline;
justify-content: space-between;
padding: 0;
padding-top: 5px;
input[type='text'] {
font-size: 32px;
height: 42px;
width: 380px;
text-align: start;
border: 1px solid transparent;
outline: 2px solid transparent;
transition: all 0.3s ease;
&:hover {
outline: 2px solid light-dark(@dark, @golden);
}
}
.level-div {
white-space: nowrap;
}
}
.character-details {
display: flex;
justify-content: space-between;
padding: 5px 0;
margin-bottom: 10px;
font-size: 12px;
color: light-dark(@dark-blue, @golden);
span {
padding: 3px;
border-radius: 3px;
transition: all 0.3s ease;
cursor: pointer;
&:hover {
background: light-dark(@dark-blue-40, @golden-40);
}
&.dot {
background: transparent;
cursor: default;
}
}
}
.character-row {
display: flex;
gap: 20px;
align-items: center;
justify-content: space-between;
padding: 0;
margin-bottom: 15px;
.hope-section,
.threshold-section {
position: relative;
display: flex;
gap: 10px;
background-color: light-dark(transparent, @dark-blue);
color: light-dark(@dark-blue, @golden);
padding: 5px 10px;
border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px;
align-items: center;
width: fit-content;
height: 30px;
h4 {
font-size: 14px;
font-weight: bold;
text-transform: uppercase;
color: light-dark(@dark-blue, @golden);
&.threshold-value {
color: light-dark(@dark, @beige);
}
}
.threshold-legend {
position: absolute;
bottom: -21px;
color: light-dark(@golden, @dark-blue);
background-color: light-dark(@dark-blue, @golden);
padding: 3px;
justify-self: anchor-center;
border-radius: 0 0 3px 3px;
text-transform: capitalize;
}
.hope-value {
display: flex;
cursor: pointer;
}
}
}
.character-traits {
display: flex;
justify-content: space-between;
padding: 0;
margin-bottom: 15px;
.trait {
height: 60px;
width: 60px;
background: url(../assets/svg/trait-shield.svg) no-repeat;
cursor: pointer;
.theme-light & {
background: url('../assets/svg/trait-shield-light.svg') no-repeat;
}
.trait-name {
display: flex;
align-items: center;
padding-top: 5px;
color: light-dark(@dark-blue, @golden);
font-size: 14px;
font-weight: 600;
align-items: center;
justify-content: center;
gap: 3px;
i {
line-height: 17px;
font-size: 10px;
}
}
.trait-value {
font-family: @font-body;
font-style: normal;
font-weight: 400;
font-size: 20px;
text-align: center;
}
}
}
}
}

View file

@ -0,0 +1,65 @@
@import '../../utils/colors.less';
@import '../../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
.tab.inventory {
.search-section {
display: flex;
gap: 10px;
align-items: center;
.search-bar {
position: relative;
color: light-dark(@dark-blue-50, @beige-50);
width: 100%;
padding-top: 5px;
input {
border-radius: 50px;
font-family: @font-body;
background: light-dark(@dark-blue-10, @golden-10);
border: none;
outline: 2px solid transparent;
transition: all 0.3s ease;
padding: 0 20px;
&:hover {
outline: 2px solid light-dark(@dark, @golden);
}
&:placeholder {
color: light-dark(@dark-blue-50, @beige-50);
}
}
.icon {
align-content: center;
height: 32px;
position: absolute;
right: 20px;
font-size: 16px;
z-index: 1;
color: light-dark(@dark-blue-50, @beige-50);
}
}
}
.items-section {
display: flex;
flex-direction: column;
gap: 10px;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%);
padding: 20px 0;
height: 80%;
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;
}
.currency-section {
display: flex;
gap: 10px;
}
}
}

View file

@ -0,0 +1,101 @@
@import '../../utils/colors.less';
@import '../../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
.tab.loadout {
.search-section {
display: flex;
align-items: center;
justify-content: space-between;
.search-bar {
position: relative;
color: light-dark(@dark-blue-50, @beige-50);
width: 80%;
padding-top: 5px;
input {
border-radius: 50px;
font-family: @font-body;
background: light-dark(@dark-blue-10, @golden-10);
border: none;
outline: 2px solid transparent;
transition: all 0.3s ease;
padding: 0 20px;
&:hover {
outline: 2px solid light-dark(@dark, @golden);
}
&:placeholder {
color: light-dark(@dark-blue-50, @beige-50);
}
}
.icon {
align-content: center;
height: 32px;
position: absolute;
right: 20px;
font-size: 16px;
z-index: 1;
color: light-dark(@dark-blue-50, @beige-50);
}
}
.btn-toogle-view {
background: light-dark(@dark-blue-10, @dark-blue);
border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 15px;
padding: 0;
gap: 0;
width: 62px;
span {
margin: 1px;
width: 26px;
color: light-dark(@dark-blue, @golden);
&.list-icon {
i {
margin-left: 3px;
}
}
&.grid-icon {
i {
margin-right: 3px;
}
}
&.list-active {
border-radius: 32px 3px 3px 32px;
background-color: light-dark(@dark-blue, @golden);
color: light-dark(@beige, @dark-blue);
padding: 2px;
}
&.grid-active {
border-radius: 3px 32px 32px 3px;
background-color: light-dark(@dark-blue, @golden);
color: light-dark(@beige, @dark-blue);
padding: 2px;
}
}
}
}
.items-section {
display: flex;
flex-direction: column;
gap: 10px;
height: 100%;
overflow-y: auto;
mask-image: linear-gradient(0deg, transparent 0%, black 10%, black 98%, transparent 100%);
padding: 20px 0;
height: 90%;
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;
}
}
}

View file

@ -0,0 +1,32 @@
@import '../../utils/colors.less';
@import '../../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
.window-content {
display: grid;
grid-template-columns: 275px 1fr;
grid-template-rows: 283px 1fr;
gap: 15px 0;
height: 100%;
width: 100%;
.character-sidebar-sheet {
grid-row: 1 / span 2;
grid-column: 1;
}
.character-header-sheet {
grid-row: 1;
grid-column: 2;
}
.tab {
grid-row: 2;
grid-column: 2;
}
.old-sheet {
width: 500px;
}
}
}

View file

@ -0,0 +1,283 @@
@import '../../utils/colors.less';
@import '../../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
.character-sidebar-sheet {
width: 275px;
min-width: 275px;
border-right: 1px solid light-dark(@dark-blue, @golden);
background-image: url('../assets/parchments/dh-parchment-dark.png');
.theme-light & {
background: transparent;
}
img {
height: 235px;
width: 275px;
border-bottom: 1px solid light-dark(@dark-blue, @golden);
cursor: pointer;
object-fit: cover;
}
.info-section {
position: relative;
display: flex;
flex-direction: column;
top: -20px;
gap: 30px;
margin-bottom: -10px;
.resources-section {
display: flex;
justify-content: space-evenly;
.status-bar {
position: relative;
width: 100px;
height: 40px;
justify-items: center;
.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 light-dark(@dark-blue, @golden);
border-radius: 6px;
z-index: 1;
&::-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-value,
&::-moz-progress-bar {
border-radius: 6px;
}
&::-moz-progress-bar {
background: @gradient-hp;
}
&.stress-color::-moz-progress-bar {
background: @gradient-stress;
border-radius: 6px;
}
}
}
}
.status-section {
display: flex;
flex-wrap: wrap;
gap: 5px;
justify-content: center;
.status-number {
justify-items: center;
.status-value {
position: relative;
display: flex;
width: 50px;
height: 30px;
border: 1px solid light-dark(@dark-blue, @golden);
border-bottom: none;
border-radius: 6px 6px 0 0;
padding: 0 6px;
font-size: 1.2rem;
align-items: center;
justify-content: center;
background: light-dark(transparent, @dark-blue);
z-index: 2;
&.armor-slots {
width: 80px;
height: 30px;
}
}
.status-label {
padding: 2px 10px;
width: 100%;
border-radius: 3px;
background: light-dark(@dark-blue, @golden);
h4 {
font-weight: bold;
text-align: center;
line-height: 18px;
font-size: 12px;
color: light-dark(@beige, @dark-blue);
}
}
}
}
}
.items-sidebar-list {
display: flex;
flex-direction: column;
gap: 5px;
.inventory-item {
padding: 0 10px;
}
}
.equipment-section {
.title {
display: flex;
gap: 15px;
align-items: center;
h3 {
font-size: 20px;
}
}
.items-list {
display: flex;
flex-direction: column;
gap: 10px;
align-items: center;
}
}
.loadout-section {
.title {
display: flex;
gap: 15px;
align-items: center;
h3 {
font-size: 20px;
}
}
}
.experience-section {
.title {
display: flex;
gap: 15px;
align-items: center;
h3 {
font-size: 20px;
}
}
.experience-list {
display: flex;
flex-direction: column;
gap: 5px;
width: 100%;
margin-top: 10px;
align-items: center;
.experience-row {
display: flex;
gap: 5px;
width: 250px;
align-items: center;
justify-content: space-between;
input[type='text'] {
height: 32px;
width: 180px;
border: 1px solid transparent;
outline: 2px solid transparent;
font-size: 14px;
font-family: @font-body;
transition: all 0.3s ease;
color: light-dark(@dark, @beige);
&:hover {
outline: 2px solid light-dark(@dark, @beige);
}
}
}
.experience-value {
height: 25px;
width: 35px;
font-size: 14px;
font-family: @font-body;
color: light-dark(@dark, @beige);
align-content: center;
text-align: center;
background: url(../assets/svg/experience-shield.svg) no-repeat;
.theme-light & {
background: url('../assets/svg/experience-shield-light.svg') no-repeat;
}
}
}
}
}
}

View file

@ -84,19 +84,40 @@
margin: 0;
}
a:hover,
a.active {
text-shadow: 0 0 8px light-dark(@dark-blue, @golden);
}
fieldset {
align-items: center;
margin-top: 5px;
border-radius: 6px;
border-color: light-dark(@dark-blue, @golden);
&.glassy {
background-color: light-dark(@dark-blue-10, @golden-10);
border-color: transparent;
legend {
padding: 2px 12px;
border-radius: 3px;
background-color: light-dark(@dark-blue, @golden);
color: light-dark(@beige, @dark-blue);
}
}
&.flex {
display: flex;
gap: 20px;
}
&.one-column {
display: flex;
flex-direction: column;
align-items: start;
gap: 10px;
min-height: 64px;
width: 100%;
}
&.two-columns {
@ -117,10 +138,6 @@
font-family: @font-body;
font-weight: bold;
color: light-dark(@dark-blue, @golden);
a {
text-shadow: none;
}
}
input[type='text'],
@ -169,6 +186,18 @@
mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%);
}
side-line-div {
display: block;
height: 1px;
width: 100%;
border-bottom: 1px solid light-dark(@dark-blue, @golden);
mask-image: linear-gradient(270deg, transparent 0%, black 100%);
&.invert {
mask-image: linear-gradient(270deg, black 0%, transparent 100%);
}
}
.item-description {
opacity: 1;
transform: translateY(0);

View file

@ -0,0 +1,17 @@
@import '../utils/colors.less';
@import '../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
.items-list {
display: flex;
flex-direction: column;
gap: 10px;
align-items: center;
}
.card-list {
display: flex;
flex-direction: row;
gap: 10px;
align-items: center;
}
}

View file

@ -0,0 +1,133 @@
@import '../utils/colors.less';
@import '../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
.inventory-item {
display: grid;
grid-template-columns: 40px 1fr 60px;
gap: 10px;
width: 100%;
.item-img {
height: 40px;
width: 40px;
border-radius: 3px;
border: none;
cursor: pointer;
object-fit: cover;
}
.item-label {
font-family: @font-body;
align-self: center;
.item-name {
font-size: 14px;
}
.item-tags,
.item-labels {
display: flex;
gap: 10px;
.tag {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
padding: 3px 5px;
font-size: 12px;
background: light-dark(@dark-15, @beige-15);
border: 1px solid light-dark(@dark, @beige);
border-radius: 3px;
}
.label {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
font-size: 12px;
}
}
}
.controls {
display: flex;
align-items: center;
justify-content: end;
gap: 8px;
a {
text-align: center;
&.unequipped {
opacity: 0.4;
}
}
}
}
.card-item {
position: relative;
height: 120px;
width: 100px;
border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px;
cursor: pointer;
&:hover {
.card-label {
padding-top: 15px;
.controls {
opacity: 1;
visibility: visible;
transition: all 0.3s ease;
max-height: 16px;
}
}
}
.card-img {
height: 100%;
width: 100%;
object-fit: cover;
}
.card-label {
display: flex;
flex-direction: column;
height: fit-content;
align-items: center;
gap: 5px;
padding-top: 5px;
padding-bottom: 5px;
width: 100%;
position: absolute;
background-color: @dark-blue;
bottom: 0;
mask-image: linear-gradient(180deg, transparent 0%, black 20%);
.card-name {
font-family: @font-body;
font-style: normal;
font-weight: 400;
font-size: 12px;
line-height: 15px;
color: @beige;
}
.controls {
display: flex;
gap: 15px;
align-items: center;
max-height: 0px;
opacity: 0;
visibility: collapse;
transition: all 0.3s ease;
color: @beige;
}
}
}
}

View file

@ -35,7 +35,6 @@
.application.sheet.dh-style.minimized {
.window-content {
display: none;
opacity: 0;
transition: opacity 0.1s ease;
}
@ -48,15 +47,10 @@
}
}
.application.sheet.dh-style .window-content {
overflow: initial;
backdrop-filter: none;
padding: 0;
}
.theme-dark {
.application.sheet.dh-style {
backdrop-filter: blur(4px);
background: @semi-transparent-dark-blue;
backdrop-filter: blur(9px);
}
}
@ -69,12 +63,29 @@
}
.application.sheet.daggerheart.dh-style {
border-radius: 10px;
.window-content {
padding: 0;
position: relative;
top: -36px;
min-height: -webkit-fill-available;
.tab {
padding: 0 10px;
}
}
}
.application.sheet.daggerheart.character.dh-style {
border-radius: 10px;
.window-content {
position: absolute;
top: 0;
.tab {
padding: 0 15px;
overflow-y: hidden;
}
}
}

View file

@ -36,9 +36,6 @@
display: flex;
justify-content: center;
gap: 10px;
a {
text-shadow: none;
}
}
}
}

View file

@ -36,9 +36,6 @@
display: flex;
justify-content: center;
gap: 10px;
a {
text-shadow: none;
}
}
}
}

View file

@ -8,11 +8,9 @@
.feature-tab {
border: none;
gap: 5px;
a {
color: light-dark(@dark-blue, @golden);
text-shadow: none;
font-family: @font-body;
}
}

View file

@ -36,9 +36,6 @@
display: flex;
justify-content: center;
gap: 10px;
a {
text-shadow: none;
}
}
}
}

View file

@ -1,22 +1,21 @@
@primary-blue: #1488cc;
@secondary-blue: #2b32b2;
@golden: #f3c267;
@golden-40: #f3c26740;
@dark-blue-40: #18162e40;
@golden-10: #f3c26710;
@dark-blue-10: #18162e10;
@dark-blue-50: #18162e50;
@dark-blue: #18162e;
@deep-black: #0e0d15;
@beige: #efe6d8;
@beige-60-opacity: #efe6d860;
@beige-15: #efe6d815;
@beige-50: #efe6d850;
@dark-blue: rgb(24, 22, 46);
@semi-transparent-dark-blue: rgba(24, 22, 46, 0.33);
@dark: #222;
@dark-15: #22222215;
@light-black: rgba(0, 0, 0, 0.3);
@soft-shadow: rgba(0, 0, 0, 0.05);
@gradient-hp: linear-gradient(15deg, rgb(70, 20, 10) 0%, rgb(190, 0, 0) 42%, rgb(252, 176, 69) 100%);
@gradient-stress: linear-gradient(15deg, rgb(130, 59, 1) 0%, rgb(252, 142, 69) 65%, rgb(190, 0, 0) 100%);
.theme-dark {
@primary-color: @golden;
}
.theme-light {
@primary-color: @dark-blue;
}

View file

@ -1,3 +1,6 @@
@import 'variables/values.less';
@import 'variables/colors.less';
.daggerheart.sheet.pc {
width: 810px !important; // Form won't apply height for some reason
@ -457,6 +460,9 @@
align-items: flex-start;
border-radius: @normalRadius;
height: 100px;
width: 100px;
.legend {
margin-left: auto;
margin-right: auto;

View file

@ -0,0 +1,36 @@
<section
class='tab {{tabs.biography.cssClass}} {{tabs.biography.id}}'
data-tab='{{tabs.biography.id}}'
data-group='{{tabs.biography.group}}'
>
<div class="items-section">
<fieldset class="flex">
<legend>{{localize 'DAGGERHEART.Sheets.PC.Story.characteristics'}}</legend>
<div class="input">
<span>{{localize 'DAGGERHEART.Sheets.PC.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}}
</div>
<div class="input">
<span>{{localize 'DAGGERHEART.Sheets.PC.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}}
</div>
<div class="input">
<span>{{localize 'DAGGERHEART.Sheets.PC.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}}
</div>
</fieldset>
<fieldset>
<legend>{{localize 'DAGGERHEART.Sheets.PC.Story.BackgroundTitle'}}</legend>
{{formInput systemFields.biography.fields.background value=source.system.biography.background enriched=source.system.biography.background localize=true toggled=true}}
</fieldset>
<fieldset>
<legend>{{localize 'DAGGERHEART.Sheets.PC.Story.ConnectionsTitle'}}</legend>
{{formInput systemFields.biography.fields.connections value=source.system.biography.connections enriched=source.system.biography.connections localize=true toggled=true}}
</fieldset>
</div>
</section>

View file

@ -0,0 +1,8 @@
<section
class='tab {{tabs.effects.cssClass}} {{tabs.effects.id}}'
data-tab='{{tabs.effects.id}}'
data-group='{{tabs.effects.group}}'
>
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(localize 'DAGGERHEART.Sheets.Global.activeEffects') type='effect'}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(localize 'DAGGERHEART.Sheets.Global.inativeEffects') type='effect'}}
</section>

View file

@ -0,0 +1,20 @@
<section
class='tab {{tabs.features.cssClass}} {{tabs.features.id}}'
data-tab='{{tabs.features.id}}'
data-group='{{tabs.features.group}}'
>
<div class="features-sections">
{{#if document.system.class.value}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(concat (localize 'TYPES.Item.class') ' - ' document.system.class.value.name) type='class'}}
{{/if}}
{{#if document.system.class.subclass}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(concat (localize 'TYPES.Item.subclass') ' - ' document.system.class.subclass.name) type='subclass'}}
{{/if}}
{{#if document.system.community}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(concat (localize 'TYPES.Item.community') ' - ' document.system.community.name) type='community'}}
{{/if}}
{{#if document.system.ancestry}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(concat (localize 'TYPES.Item.ancestry') ' - ' document.system.ancestry.name) type='ancestry'}}
{{/if}}
</div>
</section>

View file

@ -0,0 +1,111 @@
4<header class="character-header-sheet">
<line-div></line-div>
<div class="name-row">
<h1 class='actor-name'>
<input
type='text'
name='name'
value='{{document.name}}'
placeholder='Actor Name'
/>
</h1>
<div class='level-div'>
<h3 class='label'>
{{localize 'DAGGERHEART.Sheets.PC.Level'}}
{{document.system.levelData.level.current}}
</h3>
</div>
</div>
<div class="character-details">
<div>
{{#if document.system.class.value}}
<span data-action="viewObject" data-value="{{document.system.class.value.uuid}}">{{document.system.class.value.name}}</span>
{{else}}
<span>{{localize 'TYPES.Item.class'}}</span>
{{/if}}
<span class="dot">•</span>
{{#if document.system.class.subclass}}
<span data-action="viewObject" data-value="{{document.system.class.subclass.uuid}}">{{document.system.class.subclass.name}}</span>
{{else}}
<span data-action="selectSubclass">{{localize 'TYPES.Item.subclass'}}</span>
{{/if}}
<span class="dot">•</span>
{{#if document.system.community}}
<span data-action="viewObject" data-value="{{document.system.community.uuid}}">{{document.system.community.name}}</span>
{{else}}
<span data-action="selectCommunity">{{localize 'TYPES.Item.community'}}</span>
{{/if}}
<span class="dot">•</span>
{{#if document.system.ancestry}}
<span data-action="viewObject" data-value="{{document.system.ancestry.uuid}}">{{document.system.ancestry.name}}</span>
{{else}}
<span data-action="selectAncestry">{{localize 'TYPES.Item.ancestry'}}</span>
{{/if}}
</div>
{{#if document.system.multiclass.value}}
<div class="multiclass">
{{#if document.system.multiclass.value}}
<span data-action="viewObject" data-value="{{document.system.multiclass.value.uuid}}">{{document.system.multiclass.value.name}}</span>
{{else}}
<span>{{localize 'DAGGERHEART.Sheets.PC.Heritage.Multiclass'}}</span>
{{/if}}
<span class="dot">•</span>
{{#if document.system.multiclass.subclass}}
<span data-action="viewObject" data-value="{{document.system.multiclass.subclass.uuid}}">{{document.system.multiclass.subclass.name}}</span>
{{else}}
<span data-action="selectSubclass">{{localize 'TYPES.Item.subclass'}}</span>
{{/if}}
</div>
{{/if}}
</div>
<div class="character-row">
<div class="hope-section">
<h4>{{localize "DAGGERHEART.General.Hope"}}</h4>
{{#times document.system.resources.hope.max}}
<span class='hope-value' data-action='toggleHope' data-value="{{this}}">
{{#if (gte ../document.system.resources.hope.value this)}}
<i class='fa-solid fa-diamond'></i>
{{else}}
<i class='fa-regular fa-circle'></i>
{{/if}}
</span>
{{/times}}
</div>
<div class="threshold-section">
<h4 class="threshold-label">{{localize "DAGGERHEART.Sheets.PC.Health.Minor"}}</h4>
<h4 class="threshold-value">{{document.system.damageThresholds.major}}</h4>
<h4 class="threshold-label">{{localize "DAGGERHEART.Sheets.PC.Health.Major"}}</h4>
<h4 class="threshold-value">{{document.system.damageThresholds.severe}}</h4>
<h4 class="threshold-label">{{localize "DAGGERHEART.Sheets.PC.Health.Severe"}}</h4>
</div>
</div>
<div class="character-traits">
{{#each this.attributes as |attribute key|}}
<div class="trait" data-tooltip="{{#each attribute.verbs}}{{this}}<br>{{/each}}" data-action="attributeRoll" data-attribute="{{key}}" data-value="{{attribute.total}}">
<div class="trait-name">
<span>{{localize (concat 'DAGGERHEART.Abilities.' key '.short')}}</span>
{{#if attribute.tierMarked}}
<i class='fa-solid fa-circle'></i>
{{else}}
<i class='fa-regular fa-circle'></i>
{{/if}}
</div>
<div class="trait-value">
{{#if (gt attribute.total 0)}}
<span>+{{attribute.total}}</span>
{{else}}
<span>{{attribute.total}}</span>
{{/if}}
</div>
</div>
{{/each}}
</div>
{{> 'systems/daggerheart/templates/sheets/global/tabs/tab-navigation.hbs'}}
</header>

View file

@ -0,0 +1,42 @@
<section
class='tab {{tabs.inventory.cssClass}} {{tabs.inventory.id}}'
data-tab='{{tabs.inventory.id}}'
data-group='{{tabs.inventory.group}}'
>
<div class="search-section">
<div class="search-bar">
<div class="icon">
<i class="fa-solid fa-magnifying-glass"></i>
</div>
<input type="text" name="" id="" placeholder="Search...">
</div>
<a><i class="fa-solid fa-filter"></i></a>
</div>
<div class="items-section">
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(localize 'TYPES.Item.weapon') type='weapon' isGlassy=true}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(localize 'TYPES.Item.armor') type='armor' isGlassy=true}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(localize 'TYPES.Item.consumable') type='consumable' isGlassy=true}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(localize 'TYPES.Item.miscellaneous') type='miscellaneous' isGlassy=true}}
</div>
<div class="currency-section">
<div class="input">
<span>{{localize "DAGGERHEART.Sheets.PC.Gold.Coins"}}</span>
{{formInput systemFields.gold.fields.coins value=source.system.gold.coins enriched=source.system.gold.coins localize=true toggled=true}}
</div>
<div class="input">
<span>{{localize "DAGGERHEART.Sheets.PC.Gold.Handfulls"}}</span>
{{formInput systemFields.gold.fields.handfulls value=source.system.gold.handfulls enriched=source.system.gold.handfulls localize=true toggled=true}}
</div>
<div class="input">
<span>{{localize "DAGGERHEART.Sheets.PC.Gold.Bags"}}</span>
{{formInput systemFields.gold.fields.bags value=source.system.gold.bags enriched=source.system.gold.bags localize=true toggled=true}}
</div>
<div class="input">
<span>{{localize "DAGGERHEART.Sheets.PC.Gold.Chests"}}</span>
{{formInput systemFields.gold.fields.chests value=source.system.gold.chests enriched=source.system.gold.chests localize=true toggled=true}}
</div>
</div>
</section>

View file

@ -0,0 +1,28 @@
<section
class='tab {{tabs.loadout.cssClass}} {{tabs.loadout.id}}'
data-tab='{{tabs.loadout.id}}'
data-group='{{tabs.loadout.group}}'
>
<div class="search-section">
<div class="search-bar">
<div class="icon">
<i class="fa-solid fa-magnifying-glass"></i>
</div>
<input type="text" name="" id="" placeholder="Search...">
</div>
<a><i class="fa-solid fa-filter"></i></a>
<button class="btn-toogle-view">
<span class="{{#if listView}}list-active{{/if}}list-active list-icon">
<i class="fa-solid fa-bars"></i>
</span>
<span class="{{#if gridView}}grid-active{{/if}} grid-icon">
<i class="fa-solid fa-grip"></i>
</span>
</button>
</div>
<div class="items-section">
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(localize 'DAGGERHEART.Sheets.PC.Tabs.Loadout') type='domainCard' isGlassy=true cardView='list'}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-fieldset-items.hbs' title=(localize 'DAGGERHEART.Sheets.PC.Tabs.Vault') type='domainCard' isGlassy=true cardView='list'}}
</div>
</section>

View file

@ -0,0 +1,120 @@
<aside class="character-sidebar-sheet">
<img class="portrait" src="{{document.img}}" alt="{{document.name}}" data-action='editImage' data-edit="img">
<div class="info-section">
<div class="resources-section">
<div class="status-bar">
<div class='status-value'>
<p><input class="bar-input" name="system.resources.hitPoints.value" value="{{document.system.resources.hitPoints.value}}" type="number"></p>
<p>/</p>
<p class="bar-label">{{document.system.resources.hitPoints.max}}</p>
</div>
<progress
class='progress-bar'
value='{{document.system.resources.hitPoints.value}}'
max='{{document.system.resources.hitPoints.max}}'
></progress>
<div class="status-label">
<h4>Health</h4>
</div>
</div>
<div class="status-bar">
<div class='status-value'>
<p><input class="bar-input" name="system.resources.stress.value" value="{{document.system.resources.stress.value}}" type="number"></p>
<p>/</p>
<p class="bar-label">{{document.system.resources.stress.max}}</p>
</div>
<progress
class='progress-bar stress-color'
value='{{document.system.resources.stress.value}}'
max='{{document.system.resources.stress.max}}'
></progress>
<div class="status-label">
<h4>Stress</h4>
</div>
</div>
</div>
<div class="status-section">
<div class="status-number">
<div class='status-value'>
<p>{{document.system.proficiency.total}}</p>
</div>
<div class="status-label">
<h4>Proficiency</h4>
</div>
</div>
<div class="status-number">
<div class='status-value armor-slots'>
{{#if document.system.armor.system.marks}}
<p>{{document.system.armor.system.marks.value}}/{{document.system.armor.system.marks.max}}</p>
{{else}}
<p>-</p>
{{/if}}
</div>
<div class="status-label">
<h4>Armor Slots</h4>
</div>
</div>
<div class="status-number">
<div class='status-value'>
<p>{{document.system.evasion.total}}</p>
</div>
<div class="status-label">
<h4>Evasion</h4>
</div>
</div>
</div>
</div>
<div class="equipment-section">
<div class="title">
<side-line-div class="invert"></side-line-div>
<h3>Equipment</h3>
<side-line-div></side-line-div>
</div>
<ul class="items-sidebar-list">
{{#each document.items as |item|}}
{{#if item.system.equipped}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs' item=item type=item.type isSidebar=true}}
{{/if}}
{{/each}}
</ul>
</div>
<div class="loadout-section">
<div class="title">
<side-line-div class="invert"></side-line-div>
<h3>Loadout</h3>
<side-line-div></side-line-div>
</div>
<ul class="items-sidebar-list">
{{#each document.items as |item|}}
{{#if (eq item.type 'domainCard')}}
{{#unless item.system.inVault}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs' item=item type=item.type isSidebar=true}}
{{/unless}}
{{/if}}
{{/each}}
</ul>
</div>
<div class="experience-section">
<div class="title">
<side-line-div class="invert"></side-line-div>
<h3>Experience</h3>
<side-line-div></side-line-div>
</div>
<div class="experience-list">
{{#each document.system.experiences as |experience id|}}
<div class="experience-row">
<div class="experience-value">
+{{experience.total}}
</div>
<input name="{{concat "system.experiences." id ".description"}}" data-experience={{id}} value="{{experience.description}}" type="text" />
<div class="controls">
<a><i class="fa-regular fa-message"></i></a>
</div>
</div>
{{/each}}
</div>
</div>
</aside>

View file

@ -1,9 +1,8 @@
<div>
<div class="old-sheet">
<header>
<div class="pc-sheet-header">
<div class="class-info">
<div class="flexrow">
<img class="portrait" src="{{document.img}}" alt="{{document.name}}" data-edit="img">
{{#if document.system.class.value}}
<div class="flexcol">
<h2 class="class-title flex0" data-action="viewObject" data-value="{{document.system.class.value.uuid}}" data-tab="guide">
@ -41,12 +40,12 @@
<button data-action="takeLongRest" title="{{localize "DAGGERHEART.Sheets.PC.LongRest"}}"><i class="fa-solid fa-bed"></i></button>
</div>
</div>
<div class="level-container {{#if document.system.levelData.canLevelUp}}levelup{{/if}}">
<div class="level-container {{#if document.system.levelData.canLevelUp}}levelup{{/if}}" style="width: 30px; height: 30px;">
<div class="level-value-container">
<input class="level-value {{#if document.system.levelData.canLevelUp}}levelup{{/if}}" value="{{document.system.levelData.level.changed}}" type="text" data-dtype="Number" />
{{#if document.system.levelData.canLevelUp}}<div class="levelup-marker">*</div>{{/if}}
</div>
<img src="systems/daggerheart/assets/AttributeShield.svg" />
<img style="width: 30px; height: 30px;" src="systems/daggerheart/assets/AttributeShield.svg" />
<div data-action="levelup" class="level-title {{#if document.system.levelData.canLevelUp}}levelup{{/if}}">{{localize "DAGGERHEART.Sheets.PC.Level"}}</div>
</div>
</div>
@ -81,7 +80,6 @@
{{> "systems/daggerheart/templates/sheets/parts/defense.hbs" }}
{{> "systems/daggerheart/templates/sheets/parts/health.hbs" }}
{{> "systems/daggerheart/templates/sheets/parts/hope.hbs" }}
{{> "systems/daggerheart/templates/sheets/parts/experience.hbs" }}
{{> "systems/daggerheart/templates/sheets/parts/gold.hbs" }}
{{> "systems/daggerheart/templates/sheets/parts/features.hbs" }}
</div>

View file

@ -0,0 +1,32 @@
<li class="card-item">
<img src="{{item.img}}" data-action="viewObject" data-value="{{item.uuid}}" class="card-img" />
<div class="card-label">
<div class="controls">
{{#if (eq type 'weapon')}}
<a class="{{#unless item.system.equipped}}unequipped{{/unless}}" data-action="toggleEquipItem" id="{{item.id}}" data-tooltip="{{#unless item.system.equipped}}{{localize 'DAGGERHEART.Tooltip.equip'}}{{else}}{{localize 'DAGGERHEART.Tooltip.unequip'}}{{/unless}}">
<i class="fa-solid fa-hands"></i>
</a>
{{/if}}
{{#if (eq type 'armor')}}
<a class="{{#unless item.system.equipped}}unequipped{{/unless}}" data-action="toggleEquipItem" id="{{item.id}}" data-tooltip="{{#unless item.system.equipped}}{{localize 'DAGGERHEART.Tooltip.equip'}}{{else}}{{localize 'DAGGERHEART.Tooltip.unequip'}}{{/unless}}">
<i class="fa-solid fa-shield"></i>
</a>
{{/if}}
{{#if (eq type 'domainCard')}}
{{#unless item.system.inVault}}
<a data-action="sendToVault" data-domain="{{card.uuid}}" id="{{item.id}}" data-tooltip="{{localize 'DAGGERHEART.Tooltip.sendToVault'}}">
<i class="fa-solid fa-arrow-down"></i>
</a>
{{else}}
<a data-action="sendToLoadout" data-domain="{{card.uuid}}" id="{{item.id}}" data-tooltip="{{localize 'DAGGERHEART.Tooltip.sendToLoadout'}}">
<i class="fa-solid fa-arrow-up"></i>
</a>
{{/unless}}
{{/if}}
<a data-tooltip="{{localize 'DAGGERHEART.Tooltip.sendToChat'}}"><i class="fa-regular fa-message"></i></a>
<a data-tooltip="{{localize 'DAGGERHEART.Tooltip.moreOptions'}}"><i class="fa-solid fa-ellipsis-vertical"></i></a>
</div>
<div class="card-name">{{item.name}}</div>
</div>
</li>

View file

@ -0,0 +1,49 @@
<fieldset class="{{#if isGlassy}}glassy{{/if}}">
<legend>{{title}}</legend>
<ul class="items-list">
{{#each document.items as |item|}}
{{#if (eq item.type ../type)}}
{{#unless (or (eq ../type 'ancestry') (eq item.type 'class') (eq item.type 'subclass'))}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs' item=item type=../type}}
{{/unless}}
{{/if}}
{{/each}}
{{#each document.system.ancestry.system.actions as |action|}}
{{#if (or (eq ../type 'ancestry'))}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs' item=action type=../type}}
{{/if}}
{{/each}}
{{#each document.system.ancestry.system.actions as |action|}}
{{#if (or (eq ../type 'ancestry'))}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs' item=action type=../type}}
{{/if}}
{{/each}}
{{#each document.system.class.value.system.classFeatures as |classFeature|}}
{{#if (or (eq ../type 'class'))}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs' item=classFeature type=../type}}
{{/if}}
{{/each}}
{{#each document.system.class.value.system.classFeatures as |classFeature|}}
{{#if (or (eq ../type 'class'))}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs' item=classFeature type=../type}}
{{/if}}
{{/each}}
{{#each document.appliedEffects as |effect|}}
{{#if (or (eq ../type 'effect'))}}
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs' item=effect type=../type}}
{{/if}}
{{/each}}
</ul>
<ul class="card-list">
{{#each document.items as |item|}}
{{#if (eq item.type ../type)}}
{{#if (eq item.type 'domainCard')}}
{{#unless (eq ../cardView 'list')}}
{{> 'systems/daggerheart/templates/sheets/global/partials/domain-card-item.hbs' item=item type=../type}}
{{/unless}}
{{/if}}
{{/if}}
{{/each}}
</ul>
</fieldset>

View file

@ -0,0 +1,130 @@
<li class="inventory-item">
<img src="{{item.img}}" data-action="viewObject" data-value="{{item.uuid}}" class="item-img" />
<div class="item-label">
<div class="item-name">{{item.name}}</div>
{{#if (eq type 'weapon')}}
<div class="item-tags">
{{#if isSidebar}}
<div class="item-labels">
<div class="label">
{{localize (concat 'DAGGERHEART.Abilities.' item.system.trait '.name')}}
{{localize (concat 'DAGGERHEART.Range.' item.system.range '.name')}}
<span> - </span>
{{item.system.damage.value}}
({{localize (concat 'DAGGERHEART.DamageType.' item.system.damage.type '.abbreviation')}})
</div>
</div>
{{else}}
<div class="tag">
{{localize (concat 'DAGGERHEART.Abilities.' item.system.trait '.name')}}
{{localize (concat 'DAGGERHEART.Range.' item.system.range '.name')}}
</div>
<div class="tag">
{{item.system.damage.value}}
({{localize (concat 'DAGGERHEART.DamageType.' item.system.damage.type '.abbreviation')}})
</div>
<div class="tag">
{{localize (concat 'DAGGERHEART.Burden.' item.system.burden)}}
</div>
{{/if}}
</div>
{{/if}}
{{#if (eq type 'armor')}}
{{#if isSidebar}}
<div class="item-labels">
<div class="label">
{{localize "DAGGERHEART.Sheets.Armor.baseScore"}}:
{{item.system.baseScore}}
</div>
</div>
{{else}}
<div class="item-tags">
<div class="tag">
{{localize "DAGGERHEART.Sheets.Armor.baseScore"}}:
{{item.system.baseScore}}
</div>
<div class="tag">
{{localize "DAGGERHEART.Sheets.Armor.baseThresholds.base"}}:
{{item.system.baseThresholds.major}}
<span>/</span>
{{item.system.baseThresholds.severe}}
</div>
</div>
{{/if}}
{{/if}}
{{#if (eq type 'domainCard')}}
{{#if isSidebar}}
<div class="item-labels">
<div class="label">
{{localize (concat 'DAGGERHEART.Domain.CardTypes.' item.system.type)}}
<span> - </span>
{{localize (concat 'DAGGERHEART.Domains.' item.system.domain '.label')}}
<span> - </span>
<span class="recall-value">{{item.system.recallCost}}</span>
<i class="fa-solid fa-bolt"></i>
</div>
</div>
{{else}}
<div class="item-tags">
<div class="tag">
{{localize (concat 'DAGGERHEART.Domain.CardTypes.' item.system.type)}}
</div>
<div class="tag">
{{localize (concat 'DAGGERHEART.Domains.' item.system.domain '.label')}}
</div>
<div class="tag">
<span class="recall-label">{{localize "DAGGERHEART.Sheets.DomainCard.RecallCost"}}: </span>
<span class="recall-value">{{item.system.recallCost}}</span>
</div>
</div>
{{/if}}
{{/if}}
{{#if (eq type 'effect')}}
<div class="item-tags">
<div class="tag">
{{localize (concat 'TYPES.Item.' item.parent.type)}}
<span>: </span>
{{item.parent.name}}
</div>
<div class="tag">
{{#if item.duration.duration}}
{{localize 'DAGGERHEART.Effects.duration.temporary'}}
{{else}}
{{localize 'DAGGERHEART.Effects.duration.passive'}}
{{/if}}
</div>
{{#each item.statuses as |status|}}
<div class="tag">
{{localize (concat 'DAGGERHEART.Condition.' status '.name')}}
</div>
{{/each}}
</div>
{{/if}}
</div>
<div class="controls">
{{#if (eq type 'weapon')}}
<a class="{{#unless item.system.equipped}}unequipped{{/unless}}" data-action="toggleEquipItem" id="{{item.id}}" data-tooltip="{{#unless item.system.equipped}}{{localize 'DAGGERHEART.Tooltip.equip'}}{{else}}{{localize 'DAGGERHEART.Tooltip.unequip'}}{{/unless}}">
<i class="fa-solid fa-hands"></i>
</a>
{{/if}}
{{#if (eq type 'armor')}}
<a class="{{#unless item.system.equipped}}unequipped{{/unless}}" data-action="toggleEquipItem" id="{{item.id}}" data-tooltip="{{#unless item.system.equipped}}{{localize 'DAGGERHEART.Tooltip.equip'}}{{else}}{{localize 'DAGGERHEART.Tooltip.unequip'}}{{/unless}}">
<i class="fa-solid fa-shield"></i>
</a>
{{/if}}
{{#if (eq type 'domainCard')}}
{{#unless item.system.inVault}}
<a data-action="sendToVault" data-domain="{{card.uuid}}" id="{{item.id}}" data-tooltip="{{localize 'DAGGERHEART.Tooltip.sendToVault'}}">
<i class="fa-solid fa-arrow-down"></i>
</a>
{{else}}
<a data-action="sendToLoadout" data-domain="{{card.uuid}}" id="{{item.id}}" data-tooltip="{{localize 'DAGGERHEART.Tooltip.sendToLoadout'}}">
<i class="fa-solid fa-arrow-up"></i>
</a>
{{/unless}}
{{/if}}
<a data-tooltip="{{localize 'DAGGERHEART.Tooltip.sendToChat'}}"><i class="fa-regular fa-message"></i></a>
<a data-tooltip="{{localize 'DAGGERHEART.Tooltip.moreOptions'}}"><i class="fa-solid fa-ellipsis-vertical"></i></a>
</div>
</li>

View file

@ -14,12 +14,10 @@
<h3>
{{localize (concat 'DAGGERHEART.Domain.CardTypes.' source.system.type)}}
<span>-</span>
{{source.system.domain}}
{{localize (concat 'DAGGERHEART.Domains.' source.system.domain '.label')}}
<span>-</span>
<span>
{{localize "DAGGERHEART.Sheets.DomainCard.Level"}}:
{{source.system.level}}
</span>
{{localize "DAGGERHEART.Sheets.DomainCard.Level"}}:
{{source.system.level}}
</h3>
</div>
</div>