Merged with main

This commit is contained in:
WBHarry 2025-07-04 01:23:38 +02:00
commit f0e9dd75d9
17 changed files with 542 additions and 507 deletions

View file

@ -1568,7 +1568,8 @@
"Range": "Range",
"Damage": {
"Title": "Damage",
"Value": "Value",
"Die": "Die",
"Bonus": "Bonus",
"Type": "Type"
},
"Burden": "Burden",

View file

@ -39,7 +39,6 @@ export class DHRoll extends Roll {
if (config.dialog.configure !== false) {
// Open Roll Dialog
const DialogClass = config.dialog?.class ?? this.DefaultDialog;
console.log(roll, config);
const configDialog = await DialogClass.configure(roll, config, message);
if (!configDialog) return;
}
@ -124,6 +123,18 @@ export class DHRoll extends Roll {
}
return (this._formula = this.constructor.getFormula(this.terms));
}
static calculateTotalModifiers(roll, config) {
config.roll.modifierTotal = 0;
for (let i = 0; i < roll.terms.length; i++) {
if (
roll.terms[i] instanceof foundry.dice.terms.NumericTerm &&
!!roll.terms[i - 1] &&
roll.terms[i - 1] instanceof foundry.dice.terms.OperatorTerm
)
config.roll.modifierTotal += Number(`${roll.terms[i - 1].operator}${roll.terms[i].total}`);
}
}
}
export class DualityDie extends foundry.dice.terms.Die {
@ -299,15 +310,8 @@ export class D20Roll extends DHRoll {
value: d.total
};
});
config.roll.modifierTotal = 0;
for (let i = 0; i < roll.terms.length; i++) {
if (
roll.terms[i] instanceof foundry.dice.terms.NumericTerm &&
!!roll.terms[i - 1] &&
roll.terms[i - 1] instanceof foundry.dice.terms.OperatorTerm
)
config.roll.modifierTotal += Number(`${roll.terms[i - 1].operator}${roll.terms[i].total}`);
}
this.calculateTotalModifiers(roll, config);
}
resetFormula() {
@ -468,6 +472,7 @@ export class DamageRoll extends DHRoll {
static async postEvaluate(roll, config = {}) {
super.postEvaluate(roll, config);
config.roll.type = config.type;
this.calculateTotalModifiers(roll, config);
if (config.source?.message) {
const chatMessage = ui.chat.collection.get(config.source.message);
chatMessage.update({ 'system.damage': config });

View file

@ -237,6 +237,7 @@ export class DHBaseAction extends foundry.abstract.DataModel {
}
if (this.hasRoll) {
console.log(config);
const rollConfig = this.prepareRoll(config);
config.roll = rollConfig;
config = await this.actor.diceRoll(config);
@ -248,7 +249,6 @@ export class DHBaseAction extends foundry.abstract.DataModel {
if(t.hit) {
const target = game.canvas.tokens.get(t.id),
actor = target?.actor;
console.log(actor)
if(!actor) return;
actor.saveRoll({
event,
@ -635,7 +635,7 @@ export class DHAttackAction extends DHDamageAction {
return {
value: {
multiplier: 'prof',
dice: this.item?.system?.damage.value,
dice: this.item?.system?.damage.dice,
bonus: this.item?.system?.damage.bonus ?? 0
},
type: this.item?.system?.damage.type,

View file

@ -32,7 +32,8 @@ export default class DHWeapon extends BaseDataItem {
burden: new fields.StringField({ required: true, choices: SYSTEM.GENERAL.burden, initial: 'oneHanded' }),
//DAMAGE
damage: new fields.SchemaField({
value: new FormulaField({ initial: 'd6' }),
dice: new fields.StringField({ choices: SYSTEM.GENERAL.diceTypes, initial: 'd6' }),
bonus: new fields.NumberField({ nullable: true, initial: null }),
type: new fields.StringField({
required: true,
choices: SYSTEM.GENERAL.damageTypes,

View file

@ -9,7 +9,6 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
this.config.experiences = [];
if (config.source?.action) {
console.log(config);
this.item = config.data.parent.items.get(config.source.item) ?? config.data.parent;
this.action =
config.data.attack?._id == config.source.action

View file

@ -3708,6 +3708,14 @@ div.daggerheart.views.multiclass {
.daggerheart.dh-style.setting .trait-array-container .trait-array-item input {
text-align: center;
}
.themed.theme-dark .application.sheet.dh-style .character-header-sheet .trait,
.themed.theme-dark.application.sheet.dh-style .character-header-sheet .trait {
background: url(../assets/svg/trait-shield.svg) no-repeat;
}
.themed.theme-light .application.sheet.dh-style .character-header-sheet .trait,
.themed.theme-light.application.sheet.dh-style .character-header-sheet .trait {
background: url('../assets/svg/trait-shield-light.svg') no-repeat;
}
.application.sheet.daggerheart.actor.dh-style.character .character-header-sheet {
padding: 0 15px;
padding-top: 36px;
@ -3845,12 +3853,8 @@ div.daggerheart.views.multiclass {
.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;
@ -3872,32 +3876,44 @@ div.daggerheart.views.multiclass {
font-size: 20px;
text-align: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet {
.themed.theme-dark .application.sheet.dh-style .character-sidebar-sheet,
.themed.theme-dark.application.sheet.dh-style .character-sidebar-sheet {
background-image: url('../assets/parchments/dh-parchment-dark.png');
}
.themed.theme-dark .application.sheet.dh-style .character-sidebar-sheet .experience-value,
.themed.theme-dark.application.sheet.dh-style .character-sidebar-sheet .experience-value {
background: url(../assets/svg/experience-shield.svg) no-repeat;
}
.themed.theme-light .application.sheet.dh-style .character-sidebar-sheet,
.themed.theme-light.application.sheet.dh-style .character-sidebar-sheet {
background: transparent;
}
.themed.theme-light .application.sheet.dh-style .character-sidebar-sheet .experience-value,
.themed.theme-light.application.sheet.dh-style .character-sidebar-sheet .experience-value {
background: url('../assets/svg/experience-shield-light.svg') no-repeat;
}
.application.sheet.dh-style .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 .portrait {
.application.sheet.dh-style .character-sidebar-sheet .portrait {
position: relative;
border-bottom: 1px solid light-dark(#18162e, #f3c267);
cursor: pointer;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .portrait img {
.application.sheet.dh-style .character-sidebar-sheet .portrait img {
height: 235px;
width: 275px;
object-fit: cover;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .portrait .death-roll-btn {
.application.sheet.dh-style .character-sidebar-sheet .portrait .death-roll-btn {
display: none;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .portrait.death-roll {
.application.sheet.dh-style .character-sidebar-sheet .portrait.death-roll {
filter: grayscale(1);
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .portrait.death-roll .death-roll-btn {
.application.sheet.dh-style .character-sidebar-sheet .portrait.death-roll .death-roll-btn {
display: flex;
position: absolute;
top: 30%;
@ -3905,10 +3921,10 @@ div.daggerheart.views.multiclass {
font-size: 6rem;
color: #efe6d8;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .portrait.death-roll .death-roll-btn:hover {
.application.sheet.dh-style .character-sidebar-sheet .portrait.death-roll .death-roll-btn:hover {
text-shadow: 0 0 8px #efe6d8;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section {
.application.sheet.dh-style .character-sidebar-sheet .info-section {
position: relative;
display: flex;
flex-direction: column;
@ -3916,17 +3932,17 @@ div.daggerheart.views.multiclass {
gap: 30px;
margin-bottom: -10px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .character-sidebar-sheet .info-section .resources-section .status-bar .status-label {
position: relative;
top: 40px;
height: 22px;
@ -3934,13 +3950,13 @@ div.daggerheart.views.multiclass {
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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .character-sidebar-sheet .info-section .resources-section .status-bar .status-value {
position: absolute;
display: flex;
padding: 0 6px;
@ -3953,7 +3969,7 @@ div.daggerheart.views.multiclass {
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'] {
.application.sheet.dh-style .character-sidebar-sheet .info-section .resources-section .status-bar .status-value input[type='number'] {
background: transparent;
font-size: 1.5rem;
width: 40px;
@ -3963,22 +3979,22 @@ div.daggerheart.views.multiclass {
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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .character-sidebar-sheet .info-section .resources-section .status-bar .status-value input[type='number'].bar-input:hover,
.application.sheet.dh-style .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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar {
position: absolute;
appearance: none;
width: 100px;
@ -3988,37 +4004,37 @@ div.daggerheart.views.multiclass {
z-index: 1;
background: #18162e;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar::-webkit-progress-bar {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .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-bar {
.application.sheet.dh-style .character-sidebar-sheet .info-section .resources-section .status-bar .progress-bar::-moz-progress-bar {
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::-moz-progress-bar {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .character-sidebar-sheet .info-section .status-section .status-number .status-value {
position: relative;
display: flex;
width: 50px;
@ -4033,62 +4049,62 @@ div.daggerheart.views.multiclass {
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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .character-sidebar-sheet .items-sidebar-list .inventory-item {
padding: 0 10px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .equipment-section .title {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .character-sidebar-sheet .equipment-section .title h3 {
font-size: 20px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .equipment-section .items-list {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .character-sidebar-sheet .loadout-section .title h3 {
font-size: 20px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .title {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .character-sidebar-sheet .experience-section .title h3 {
font-size: 20px;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .experience-list {
.application.sheet.dh-style .character-sidebar-sheet .experience-section .experience-list {
display: flex;
flex-direction: column;
gap: 5px;
@ -4096,14 +4112,14 @@ div.daggerheart.views.multiclass {
margin-top: 10px;
align-items: center;
}
.application.sheet.daggerheart.actor.dh-style.character .character-sidebar-sheet .experience-section .experience-list .experience-row {
.application.sheet.dh-style .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'] {
.application.sheet.dh-style .character-sidebar-sheet .experience-section .experience-list .experience-row input[type='text'] {
height: 32px;
width: 180px;
border: 1px solid transparent;
@ -4113,10 +4129,10 @@ div.daggerheart.views.multiclass {
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 {
.application.sheet.dh-style .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 {
.application.sheet.dh-style .character-sidebar-sheet .experience-section .experience-list .experience-value {
height: 25px;
width: 35px;
font-size: 14px;
@ -4124,10 +4140,6 @@ div.daggerheart.views.multiclass {
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;
@ -4801,12 +4813,14 @@ div.daggerheart.views.multiclass {
align-items: center;
padding: 0 20px;
}
.theme-light .application.sheet.daggerheart.actor.dh-style.environment {
background: url('../assets/parchments/dh-parchment-light.png');
}
.theme-dark .application.sheet.daggerheart.actor.dh-style.environment {
.themed.theme-dark .application.sheet.dh-style.environment,
.themed.theme-dark.application.sheet.dh-style.environment {
background-image: url('../assets/parchments/dh-parchment-dark.png');
}
.themed.theme-light .application.sheet.dh-style.environment,
.themed.theme-light.application.sheet.dh-style.environment {
background: url('../assets/parchments/dh-parchment-light.png');
}
.application.sheet.daggerheart.actor.dh-style.environment .tab {
max-height: 300px;
overflow-y: auto;
@ -5296,12 +5310,14 @@ div.daggerheart.views.multiclass {
.theme-light .application.sheet.daggerheart.actor.dh-style.companion .experience-list .experience-value {
background: url('../assets/svg/experience-shield-light.svg') no-repeat;
}
.theme-light .application.sheet.daggerheart.actor.dh-style.companion {
background: url('../assets/parchments/dh-parchment-light.png');
}
.theme-dark .application.sheet.daggerheart.actor.dh-style.companion {
.themed.theme-dark .application.sheet.dh-style.companion,
.themed.theme-dark.application.sheet.dh-style.companion {
background-image: url('../assets/parchments/dh-parchment-dark.png');
}
.themed.theme-light .application.sheet.dh-style.companion,
.themed.theme-light.application.sheet.dh-style.companion {
background: url('../assets/parchments/dh-parchment-light.png');
}
.application.sheet.daggerheart.actor.dh-style.adversary .window-content {
overflow: auto;
}
@ -5472,6 +5488,23 @@ div.daggerheart.views.multiclass {
font-family: 'Montserrat', sans-serif;
opacity: 0.8;
}
/**
* Applies theme-specific styles.
* @param {Rules} @darkRules - Styles to apply when `.theme-dark` is present
* @param {Rules} @lightRules - Styles to apply when `.theme-light` is present
*/
.themed.theme-dark .application.sheet.dh-style,
.themed.theme-dark.application.sheet.dh-style {
background: rgba(24, 22, 46, 0.33);
backdrop-filter: blur(9px);
}
.themed.theme-light .application.sheet.dh-style,
.themed.theme-light.application.sheet.dh-style {
background: url('../assets/parchments/dh-parchment-light.png') no-repeat center;
}
.application.sheet.dh-style {
border-radius: 10px;
}
.application.sheet.dh-style .window-header {
background: transparent;
border-bottom: none;
@ -5488,65 +5521,44 @@ div.daggerheart.views.multiclass {
padding: 0;
}
.application.sheet.dh-style .window-header button:hover {
border: 1px solid light-dark(#18162e, #f3c267);
border-color: light-dark(#18162e, #f3c267);
color: light-dark(#18162e, #f3c267);
}
.application.sheet.dh-style .window-content {
padding: 0;
position: relative;
top: -36px;
min-height: -webkit-fill-available;
transition: opacity 0.3s ease;
}
.application.sheet.dh-style .window-content .tab {
padding: 0 10px;
}
.application.sheet.dh-style.minimized .window-content {
opacity: 0;
transition-duration: 0.1s;
}
.application.sheet.dh-style:not(.minimized) .window-title,
.application.sheet.dh-style:not(.minimized) .window-icon {
display: none;
opacity: 0;
transition: opacity 0.3s ease;
}
.application.sheet.dh-style.minimized .window-content {
opacity: 0;
transition: opacity 0.1s ease;
}
.application.sheet.dh-style:not(.minimized) .window-content {
opacity: 1;
transition: opacity 0.3s ease;
}
.theme-dark .application.sheet.dh-style {
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;
}
.theme-light .application.dialog.dh-style {
background-image: url('../assets/parchments/dh-parchment-light.png');
background-repeat: no-repeat;
background-position: center;
}
.theme-dark .application.dialog.dh-style {
.themed.theme-dark .application.sheet.dh-style.dialog,
.themed.theme-dark.application.sheet.dh-style.dialog {
background-image: url('../assets/parchments/dh-parchment-dark.png');
background-repeat: no-repeat;
background-position: center;
}
.themed.theme-light .application.sheet.dh-style.dialog,
.themed.theme-light.application.sheet.dh-style.dialog {
background-image: url('../assets/parchments/dh-parchment-light.png');
background-repeat: no-repeat;
background-position: center;
}
.application.dialog.dh-style {
border: none;
}

View file

@ -1,6 +1,17 @@
@import '../../utils/colors.less';
@import '../../utils/fonts.less';
// Theme header backgrounds
.appTheme({
.character-header-sheet .trait {
background: url(../assets/svg/trait-shield.svg) no-repeat;
}
}, {
.character-header-sheet .trait {
background: url('../assets/svg/trait-shield-light.svg') no-repeat;
}
});
.application.sheet.daggerheart.actor.dh-style.character {
.character-header-sheet {
padding: 0 15px;
@ -153,14 +164,8 @@
.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;

View file

@ -1,305 +1,310 @@
@import '../../utils/colors.less';
@import '../../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.character {
// Theme sidebar backgrounds
.appTheme({
.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');
.experience-value {
background: url(../assets/svg/experience-shield.svg) no-repeat;
}
}
}, {
.character-sidebar-sheet {
background: transparent;
.experience-value {
background: url('../assets/svg/experience-shield-light.svg') no-repeat;
}
}
});
.theme-light & {
background: transparent;
.application.sheet.dh-style .character-sidebar-sheet {
width: 275px;
min-width: 275px;
border-right: 1px solid light-dark(@dark-blue, @golden);
.portrait {
position: relative;
border-bottom: 1px solid light-dark(@dark-blue, @golden);
cursor: pointer;
img {
height: 235px;
width: 275px;
object-fit: cover;
}
.portrait {
position: relative;
border-bottom: 1px solid light-dark(@dark-blue, @golden);
cursor: pointer;
.death-roll-btn {
display: none;
}
img {
height: 235px;
width: 275px;
object-fit: cover;
}
&.death-roll {
filter: grayscale(1);
.death-roll-btn {
display: none;
}
display: flex;
position: absolute;
top: 30%;
right: 30%;
font-size: 6rem;
color: @beige;
&.death-roll {
filter: grayscale(1);
.death-roll-btn {
display: flex;
position: absolute;
top: 30%;
right: 30%;
font-size: 6rem;
color: @beige;
&:hover {
text-shadow: 0 0 8px @beige;
}
&:hover {
text-shadow: 0 0 8px @beige;
}
}
}
}
.info-section {
position: relative;
.info-section {
position: relative;
display: flex;
flex-direction: column;
top: -20px;
gap: 30px;
margin-bottom: -10px;
.resources-section {
display: flex;
flex-direction: column;
top: -20px;
gap: 30px;
margin-bottom: -10px;
justify-content: space-evenly;
.resources-section {
display: flex;
justify-content: space-evenly;
.status-bar {
position: relative;
width: 100px;
height: 40px;
justify-items: center;
.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(@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-items: center;
justify-content: center;
text-align: center;
z-index: 2;
color: @beige;
.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;
input[type='number'] {
background: transparent;
font-size: 1.5rem;
align-items: center;
width: 100px;
height: 40px;
justify-content: center;
width: 40px;
height: 30px;
text-align: center;
z-index: 2;
border: none;
outline: 2px solid transparent;
color: @beige;
input[type='number'] {
background: transparent;
font-size: 1.5rem;
width: 40px;
height: 30px;
text-align: center;
border: none;
outline: 2px solid transparent;
&.bar-input {
padding: 0;
color: @beige;
backdrop-filter: none;
background: transparent;
transition: all 0.3s ease;
&.bar-input {
padding: 0;
color: @beige;
backdrop-filter: none;
background: transparent;
transition: all 0.3s ease;
&:hover,
&:focus {
background: @semi-transparent-dark-blue;
backdrop-filter: blur(9.5px);
}
&:hover,
&:focus {
background: @semi-transparent-dark-blue;
backdrop-filter: blur(9.5px);
}
}
.bar-label {
width: 40px;
}
}
.progress-bar {
position: absolute;
appearance: none;
width: 100px;
height: 40px;
border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px;
z-index: 1;
.bar-label {
width: 40px;
}
}
.progress-bar {
position: absolute;
appearance: none;
width: 100px;
height: 40px;
border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px;
z-index: 1;
background: @dark-blue;
&::-webkit-progress-bar {
border: none;
background: @dark-blue;
&::-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;
}
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;
}
&::-webkit-progress-value {
background: @gradient-hp;
border-radius: 6px;
}
.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);
}
&.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;
}
}
}
}
.items-sidebar-list {
.status-section {
display: flex;
flex-direction: column;
flex-wrap: wrap;
gap: 5px;
justify-content: center;
.inventory-item {
padding: 0 10px;
}
}
.status-number {
justify-items: center;
.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 {
.status-value {
position: relative;
display: flex;
gap: 5px;
width: 250px;
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: space-between;
justify-content: center;
background: light-dark(transparent, @dark-blue);
z-index: 2;
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);
}
&.armor-slots {
width: 80px;
height: 30px;
}
}
.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;
.status-label {
padding: 2px 10px;
width: 100%;
border-radius: 3px;
background: light-dark(@dark-blue, @golden);
.theme-light & {
background: url('../assets/svg/experience-shield-light.svg') no-repeat;
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;
}
}
}
}

View file

@ -1,11 +1,16 @@
.application.sheet.daggerheart.actor.dh-style.companion {
.theme-light & {
background: url('../assets/parchments/dh-parchment-light.png');
}
.theme-dark & {
// Theme header backgrounds
.appTheme({
&.companion {
background-image: url('../assets/parchments/dh-parchment-dark.png');
}
}, {
&.companion {
background: url('../assets/parchments/dh-parchment-light.png');
}
});
.application.sheet.daggerheart.actor.dh-style.companion {
// .profile {
// height: 80px;
// width: 80px;

View file

@ -1,14 +1,17 @@
@import '../../utils/colors.less';
@import '../../utils/fonts.less';
.application.sheet.daggerheart.actor.dh-style.environment {
.theme-light & {
background: url('../assets/parchments/dh-parchment-light.png');
}
.theme-dark & {
.appTheme({
&.environment {
background-image: url('../assets/parchments/dh-parchment-dark.png');
}
}, {
&.environment {
background: url('../assets/parchments/dh-parchment-light.png');
}
});
.application.sheet.daggerheart.actor.dh-style.environment {
.tab {
max-height: 300px;
overflow-y: auto;

View file

@ -1,45 +1,43 @@
@import '../utils/colors.less';
@import '../utils/fonts.less';
.theme-light {
.application.dialog.dh-style {
background-image: url('../assets/parchments/dh-parchment-light.png');
background-repeat: no-repeat;
background-position: center;
}
}
.theme-dark {
.application.dialog.dh-style {
background-image: url('../assets/parchments/dh-parchment-dark.png');
background-repeat: no-repeat;
background-position: center;
}
}
.application.dialog.dh-style {
border: none;
.window-header {
background: transparent;
border-bottom: none;
color: light-dark(@dark-blue, @beige);
h1 {
color: light-dark(@dark-blue, @beige);
font-family: @font-body;
}
button {
color: light-dark(@dark-blue, @beige);
background: light-dark(transparent, @deep-black);
border: 1px solid light-dark(@dark-blue, transparent);
padding: 0;
&:hover {
border: 1px solid light-dark(@dark-blue, @golden);
color: light-dark(@dark-blue, @golden);
}
}
}
}
@import '../utils/colors.less';
@import '../utils/fonts.less';
.appTheme({
&.dialog {
background-image: url('../assets/parchments/dh-parchment-dark.png');
background-repeat: no-repeat;
background-position: center;
}
}, {
&.dialog {
background-image: url('../assets/parchments/dh-parchment-light.png');
background-repeat: no-repeat;
background-position: center;
}
});
.application.dialog.dh-style {
border: none;
.window-header {
background: transparent;
border-bottom: none;
color: light-dark(@dark-blue, @beige);
h1 {
color: light-dark(@dark-blue, @beige);
font-family: @font-body;
}
button {
color: light-dark(@dark-blue, @beige);
background: light-dark(transparent, @deep-black);
border: 1px solid light-dark(@dark-blue, transparent);
padding: 0;
&:hover {
border: 1px solid light-dark(@dark-blue, @golden);
color: light-dark(@dark-blue, @golden);
}
}
}
}

View file

@ -1,91 +1,70 @@
@import '../utils/colors.less';
@import '../utils/fonts.less';
@import '../utils/mixin.less';
.application.sheet.dh-style .window-header {
background: transparent;
border-bottom: none;
justify-content: end;
// Theme handling
.appTheme({
background: @semi-transparent-dark-blue;
backdrop-filter: blur(9px);
}, {
background: url('../assets/parchments/dh-parchment-light.png') no-repeat center;
});
h1 {
color: light-dark(@dark-blue, @beige);
font-family: @font-body;
}
button {
background: light-dark(transparent, @deep-black);
color: light-dark(@dark-blue, @beige);
border: 1px solid light-dark(@dark-blue, transparent);
padding: 0;
&:hover {
border: 1px solid light-dark(@dark-blue, @golden);
color: light-dark(@dark-blue, @golden);
}
}
}
.application.sheet.dh-style:not(.minimized) {
.window-title,
.window-icon {
display: none;
opacity: 0;
transition: opacity 0.3s ease;
}
}
.application.sheet.dh-style.minimized {
.window-content {
opacity: 0;
transition: opacity 0.1s ease;
}
}
.application.sheet.dh-style:not(.minimized) {
.window-content {
opacity: 1;
transition: opacity 0.3s ease;
}
}
.theme-dark {
.application.sheet.dh-style {
background: @semi-transparent-dark-blue;
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 {
.application.sheet.dh-style {
border-radius: 10px;
// Window header styles
.window-header {
background: transparent;
border-bottom: none;
justify-content: end;
h1 {
color: light-dark(@dark-blue, @beige);
font-family: @font-body;
}
button {
background: light-dark(transparent, @deep-black);
color: light-dark(@dark-blue, @beige);
border: 1px solid light-dark(@dark-blue, transparent);
padding: 0;
&:hover {
border-color: light-dark(@dark-blue, @golden);
color: light-dark(@dark-blue, @golden);
}
}
}
// Window content transitions
.window-content {
padding: 0;
position: relative;
top: -36px;
min-height: -webkit-fill-available;
transition: opacity 0.3s ease;
.tab {
padding: 0 10px;
}
}
}
.application.sheet.daggerheart.character.dh-style {
border-radius: 10px;
// Minimized states
&.minimized .window-content {
opacity: 0;
transition-duration: 0.1s;
}
.window-content {
position: absolute;
top: 0;
.tab {
padding: 0 15px;
overflow-y: hidden;
&:not(.minimized) {
.window-title,
.window-icon {
display: none;
opacity: 0;
transition: opacity 0.3s ease;
}
.window-content {
opacity: 1;
}
}
}

View file

@ -0,0 +1,18 @@
/**
* Applies theme-specific styles.
* @param {Rules} @darkRules - Styles to apply when `.theme-dark` is present
* @param {Rules} @lightRules - Styles to apply when `.theme-light` is present
*/
.appTheme(@darkRules, @lightRules) {
.themed {
&.theme-dark .application.sheet.dh-style,
&.theme-dark.application.sheet.dh-style {
@darkRules();
}
&.theme-light .application.sheet.dh-style,
&.theme-light.application.sheet.dh-style {
@lightRules();
}
}
}

View file

@ -123,7 +123,7 @@
<div class="dice-result">
<div class="dice-tooltip">
<div class="wrapper">
{{!-- {{> 'systems/daggerheart/templates/chat/parts/damage-chat.hbs' damage=damage noTitle=true}} --}}
{{> 'systems/daggerheart/templates/chat/parts/damage-chat.hbs' damage=damage noTitle=true}}
</div>
</div>
</div>

View file

@ -17,7 +17,8 @@
{{/each}}
</ol>
</div>
{{/each}}
{{/each}}
{{#if damage.roll.modifierTotal}}<div class="duality-modifier">{{#if (gt damage.roll.modifierTotal 0)}}+{{/if}}{{damage.roll.modifierTotal}}</div>{{/if}}
<div class="duality-result">Total: {{damage.roll.total}}</div>
</section>
</div>

View file

@ -14,7 +14,8 @@
<span>-</span>
{{localize (concat 'DAGGERHEART.Range.' source.system.range '.name')}}
<span>-</span>
{{source.system.damage.value}}
{{log this}}
{{source.system.damage.dice}} + {{source.system.damage.bonus}}
({{localize (concat 'DAGGERHEART.DamageType.' source.system.damage.type '.abbreviation')}})
<span>-</span>
{{localize (concat 'DAGGERHEART.Burden.' source.system.burden)}}

View file

@ -19,8 +19,10 @@
<fieldset class="two-columns">
<legend>{{localize "DAGGERHEART.Sheets.Weapon.Damage.Title"}}</legend>
<span>{{localize "DAGGERHEART.Sheets.Weapon.Damage.Value"}}</span>
{{formGroup systemFields.damage.fields.value value=source.system.damage.value}}
<span>{{localize "DAGGERHEART.Sheets.Weapon.Damage.Die"}}</span>
{{formGroup systemFields.damage.fields.dice value=source.system.damage.dice}}
<span>{{localize "DAGGERHEART.Sheets.Weapon.Damage.Bonus"}}</span>
{{formGroup systemFields.damage.fields.bonus value=source.system.damage.bonus}}
<span>{{localize "DAGGERHEART.Sheets.Weapon.Damage.Type"}}</span>
{{formGroup systemFields.damage.fields.type value=source.system.damage.type localize=true}}
</fieldset>