[V14] 1354 - Armor Effect (#1652)

* Initial

* progress

* Working armor application

* .

* Added a updateArmorValue function that updates armoreffects according to an auto order

* .

* Added createDialog

* .

* Updated Armor SRD

* .

* Fixed character sheet armor update

* Updated itemconfig

* Actions now use createDialog for effects

* .

* .

* Fixed ArmorEffect max being a string

* Fixed SRD armor effects

* Finally finished the migration ._.

* SRD finalization

* Added ArmoreEffect.armorInteraction option

* Added ArmorManagement menu

* Fixed DamageReductionDialog

* Fixed ArmorManagement pip syle

* feat: add style to armors tooltip, add a style to make armor slot label more clear that was a button and add a tooltip location

* .

* Removed tooltip on manageArmor

* Fixes

* Fixed Downtime armor repair

* Removed ArmorScore from character data model and instead adding it in basePrep

* [Feature] ArmorEffect reworked into ChangeType on BaseEffect (#1739)

* Initial

* .

* Single armor rework start

* More fixes

* Fixed DamageReductionDialog

* Removed last traces of ArmorEffect

* .

* Corrected the SRD to use base effects again

* Removed bare bones armor item

* [V14] Refactor ArmorChange schema and fix some bugs (#1742)

* Refactor ArmorChange schema and fix some bugs

* Add current back to schema

* Fixed so changing armor values and taking damage works again

* Fixed so that scrolltexts for armor changes work again

* Removed old marks on armor.system

* Restored damageReductionDialog armorScore.value

* Use toggle for css class addition/removal

* Fix armor change type choices

* Added ArmorChange DamageThresholds

---------

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

* [V14] Armor System ArmorScore (#1744)

* Readded so that armor items have their system defined armor instead of using an ActiveEffect

* Consolidate armor source retrieval

* Fix regression with updating armor when sources are disabled

* Simplify armor pip update

* Use helper in damage reduction dialog

* .

* Corrected SRD Armor Items

---------

Co-authored-by: Carlos Fernandez <cfern1990@gmail.com>

* Updated migrations

* Migrations are now not horrible =D

---------

Co-authored-by: Murilo Brito <dev.murilobrito@gmail.com>
Co-authored-by: Carlos Fernandez <CarlosFdez@users.noreply.github.com>
Co-authored-by: Carlos Fernandez <cfern1990@gmail.com>
This commit is contained in:
WBHarry 2026-03-22 01:57:46 +01:00 committed by GitHub
parent a3f515cf6d
commit ef53a7c561
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
94 changed files with 1961 additions and 545 deletions

View file

@ -35,7 +35,10 @@
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
&.full-width {
width: 100%;
}
}
.padded {
@ -45,6 +48,7 @@
.armor-title {
margin: 0;
white-space: nowrap;
width: 100%;
}
.resources-container {
@ -62,12 +66,17 @@
.mark-selection {
display: flex;
align-items: center;
flex-direction: column;
width: 100%;
margin: 0;
h4 {
margin: 0;
}
.mark-selection-inner {
display: flex;
justify-content: center;
gap: 8px;
.mark-container {
@ -91,6 +100,19 @@
opacity: 0.2;
}
&.spent {
::after {
position: absolute;
content: '/';
color: red;
font-weight: 700;
font-size: 1.8em;
left: -1px;
top: -7px;
rotate: 13deg;
}
}
.fa-shield {
position: relative;
right: 0.5px;

View file

@ -31,5 +31,70 @@
text-align: center;
}
}
.armor-change-container {
padding-top: 0;
padding-bottom: 4px;
row-gap: 0;
legend {
display: flex;
align-items: center;
padding-left: 3px;
}
header {
padding: 0;
left: -0.25rem; // TODO: Find why this header is offset 0.25rem to the right so this can be removed.
}
header,
ol {
grid-template-columns: 5rem 7rem 12rem 4rem;
}
.damage-thresholds-container {
width: 100%;
display: flex;
flex-direction: column;
gap: 4px;
.damage-threshold-title {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
&::before,
&::after {
content: '';
flex: 1;
height: 2px;
}
&::before {
background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, light-dark(@dark-blue, @golden) 100%);
}
&::after {
background: linear-gradient(90deg, light-dark(@dark-blue, @golden) 0%, rgba(0, 0, 0, 0) 100%);
}
span {
font-size: var(--font-size-18);
}
}
.form-group {
flex-direction: column;
gap: 0;
label {
color: inherit;
line-height: 16px;
}
}
}
}
}
}

View file

@ -276,6 +276,23 @@
}
}
.slot-label {
.slot-value-container {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
i {
position: absolute;
right: 0;
font-size: 12px;
color: light-dark(@beige, @dark-blue);
}
}
}
.status-value {
padding: 0 5px;
}
@ -298,6 +315,12 @@
border-radius: 3px;
background: light-dark(@dark-blue, @golden);
clip-path: none;
cursor: pointer;
display: flex;
align-items: center;
gap: 4px;
border: 1px solid transparent;
transition: all 0.3s ease;
h4 {
font-weight: bold;
@ -306,6 +329,20 @@
color: light-dark(@beige, @dark-blue);
font-size: var(--font-size-12);
}
i {
font-size: 12px;
color: light-dark(@beige, @dark-blue);
}
&:hover {
background: light-dark(@light-black, @dark-blue);
border: 1px solid light-dark(@dark-blue, @golden);
h4, i {
color: light-dark(@dark-blue, @golden);
}
}
}
.slot-value {
position: absolute;
@ -343,7 +380,7 @@
}
}
}
.slot-label {
.slot-label {
display: flex;
align-items: center;
color: light-dark(@beige, @dark-blue);
@ -355,6 +392,17 @@
font-size: var(--font-size-12);
flex-wrap: wrap;
justify-content: center;
border: 1px solid transparent;
transition: all 0.3s ease;
&:hover {
background: light-dark(@light-black, @dark-blue);
border: 1px solid light-dark(@dark-blue, @golden);
.label, .value, i {
color: light-dark(@dark-blue, @golden);
}
}
.label {
padding-right: 1px;

View file

@ -1,4 +1,5 @@
@import './tooltip/tooltip.less';
@import './tooltip/armorManagement.less';
@import './tooltip/battlepoints.less';
@import './tooltip/bordered-tooltip.less';
@import './tooltip/domain-cards.less';

View file

@ -1,7 +1,19 @@
@import '../../utils/fonts.less';
@import '../../utils/colors.less';
.bordered-tooltip.locked-tooltip .daggerheart.armor-management-container {
display: flex;
flex-direction: column;
gap: 16px;
gap: 10px;
padding-bottom: 10px;
h3 {
font-family: @font-subtitle;
margin: 0;
border: none;
font-weight: normal;
font-size: var(--font-size-20);
}
.armor-source-container {
display: flex;
@ -10,16 +22,16 @@
gap: 4px;
.armor-source-label {
font-size: var(--font-size-24);
font-weight: bold;
font-family: @font-body;
margin: 0;
}
.status-bar {
display: flex;
justify-content: center;
position: relative;
width: 80px;
height: 20px;
width: 100%;
height: 30px;
.status-value {
position: absolute;
@ -27,8 +39,8 @@
padding: 0 5px;
font-size: 1rem;
align-items: center;
width: 80px;
height: 20px;
width: 100%;
height: 30px;
justify-content: center;
text-align: center;
z-index: 2;
@ -36,13 +48,13 @@
input[type='number'] {
background: transparent;
font-size: 1rem;
font-size: 1.2rem;
width: 30px;
height: 15px;
text-align: center;
border: none;
outline: 2px solid transparent;
color: @beige;
font-family: @font-body;
&.bar-input {
padding: 0;
@ -50,6 +62,7 @@
backdrop-filter: none;
background: transparent;
transition: all 0.3s ease;
height: 25px;
&:hover,
&:focus {
@ -60,14 +73,16 @@
}
.bar-label {
font-family: @font-body;
width: 40px;
font-size: 1.2rem;
}
}
.progress-bar {
position: absolute;
appearance: none;
width: 80px;
height: 20px;
width: 100%;
height: 30px;
border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px;
z-index: 1;
@ -97,4 +112,30 @@
}
}
}
.slot-bar {
display: flex;
flex-wrap: wrap;
gap: 4px;
padding: 5px;
border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px;
z-index: 1;
background: @dark-blue;
align-items: center;
justify-content: center;
color: light-dark(@dark-blue, @golden);
min-height: 30px;
width: 100%;
.armor-slot {
cursor: pointer;
transition: all 0.3s ease;
font-size: var(--font-size-12);
.fa-shield-halved {
color: light-dark(@dark-blue-40, @golden-40);
}
}
}
}