Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c7727076bf | |||
| d0411f9ec9 | |||
| e5653a4edc | |||
| 527e33a805 | |||
| b5857cb3b7 | |||
| 7a06e8a5c9 |
@@ -13,6 +13,16 @@
|
||||
--font-secondary: "BaskervilleBold", serif;
|
||||
--logo-standard: url("../assets/ui/lf_logo_small_02.webp");
|
||||
}
|
||||
.initiative-area {
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
.initiative-area input {
|
||||
min-width: 3rem;
|
||||
max-width: 3rem;
|
||||
}
|
||||
#logo {
|
||||
content: var(--logo-standard);
|
||||
width: 50px;
|
||||
@@ -73,9 +83,33 @@ i.lethalfantasy {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
}
|
||||
.lethalfantasy .item-sheet-common {
|
||||
overflow: auto;
|
||||
}
|
||||
.lethalfantasy .item-sheet-common .form-fields {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.lethalfantasy .item-sheet-common .form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
.lethalfantasy .item-sheet-common .form-group label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.lethalfantasy .item-sheet-common .form-group select,
|
||||
.lethalfantasy .item-sheet-common .form-group input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .item-sheet-common .form-group input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.lethalfantasy .item-sheet-common label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
@@ -85,10 +119,6 @@ i.lethalfantasy {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
.lethalfantasy .item-sheet-common .shift-right {
|
||||
margin-left: 2rem;
|
||||
@@ -102,6 +132,12 @@ i.lethalfantasy {
|
||||
background-size: 100% 100%;
|
||||
overflow: scroll;
|
||||
}
|
||||
.lethalfantasy .character-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .character-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .character-content input:disabled,
|
||||
.lethalfantasy .character-content select:disabled {
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
@@ -646,7 +682,8 @@ i.lethalfantasy {
|
||||
gap: 4px;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells .main-div .spells .spell .item-img {
|
||||
width: 24px;
|
||||
min-width: 24px;
|
||||
max-width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells .main-div .spells .spell .name {
|
||||
@@ -720,6 +757,12 @@ i.lethalfantasy {
|
||||
background-size: 100% 100%;
|
||||
overflow: scroll;
|
||||
}
|
||||
.lethalfantasy .monster-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .monster-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .monster-content input:disabled,
|
||||
.lethalfantasy .monster-content select:disabled {
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
@@ -1190,6 +1233,13 @@ i.lethalfantasy {
|
||||
background-image: var(--background-image-base);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.lethalfantasy .skill-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .skill-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .skill-content input:disabled,
|
||||
.lethalfantasy .skill-content select:disabled {
|
||||
@@ -1234,6 +1284,27 @@ i.lethalfantasy {
|
||||
.lethalfantasy .skill-content .form-fields {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.lethalfantasy .skill-content .form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
.lethalfantasy .skill-content .form-group label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.lethalfantasy .skill-content .form-group select,
|
||||
.lethalfantasy .skill-content .form-group input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .skill-content .form-group input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.lethalfantasy .skill-content label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
@@ -1243,10 +1314,6 @@ i.lethalfantasy {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
.lethalfantasy .skill-content .shift-right {
|
||||
margin-left: 2rem;
|
||||
@@ -1276,6 +1343,13 @@ i.lethalfantasy {
|
||||
background-image: var(--background-image-base);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.lethalfantasy .gift-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .gift-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .gift-content input:disabled,
|
||||
.lethalfantasy .gift-content select:disabled {
|
||||
@@ -1320,6 +1394,27 @@ i.lethalfantasy {
|
||||
.lethalfantasy .gift-content .form-fields {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.lethalfantasy .gift-content .form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
.lethalfantasy .gift-content .form-group label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.lethalfantasy .gift-content .form-group select,
|
||||
.lethalfantasy .gift-content .form-group input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .gift-content .form-group input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.lethalfantasy .gift-content label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
@@ -1329,10 +1424,6 @@ i.lethalfantasy {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
.lethalfantasy .gift-content .shift-right {
|
||||
margin-left: 2rem;
|
||||
@@ -1362,6 +1453,13 @@ i.lethalfantasy {
|
||||
background-image: var(--background-image-base);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.lethalfantasy .weapon-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .weapon-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .weapon-content input:disabled,
|
||||
.lethalfantasy .weapon-content select:disabled {
|
||||
@@ -1406,6 +1504,27 @@ i.lethalfantasy {
|
||||
.lethalfantasy .weapon-content .form-fields {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.lethalfantasy .weapon-content .form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
.lethalfantasy .weapon-content .form-group label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.lethalfantasy .weapon-content .form-group select,
|
||||
.lethalfantasy .weapon-content .form-group input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .weapon-content .form-group input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.lethalfantasy .weapon-content label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
@@ -1415,10 +1534,6 @@ i.lethalfantasy {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
.lethalfantasy .weapon-content .shift-right {
|
||||
margin-left: 2rem;
|
||||
@@ -1440,6 +1555,13 @@ i.lethalfantasy {
|
||||
background-image: var(--background-image-base);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.lethalfantasy .armor-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .armor-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .armor-content input:disabled,
|
||||
.lethalfantasy .armor-content select:disabled {
|
||||
@@ -1484,6 +1606,27 @@ i.lethalfantasy {
|
||||
.lethalfantasy .armor-content .form-fields {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.lethalfantasy .armor-content .form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
.lethalfantasy .armor-content .form-group label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.lethalfantasy .armor-content .form-group select,
|
||||
.lethalfantasy .armor-content .form-group input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .armor-content .form-group input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.lethalfantasy .armor-content label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
@@ -1493,10 +1636,6 @@ i.lethalfantasy {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
.lethalfantasy .armor-content .shift-right {
|
||||
margin-left: 2rem;
|
||||
@@ -1518,6 +1657,13 @@ i.lethalfantasy {
|
||||
background-image: var(--background-image-base);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.lethalfantasy .spell-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .spell-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .spell-content input:disabled,
|
||||
.lethalfantasy .spell-content select:disabled {
|
||||
@@ -1562,6 +1708,27 @@ i.lethalfantasy {
|
||||
.lethalfantasy .spell-content .form-fields {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.lethalfantasy .spell-content .form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
.lethalfantasy .spell-content .form-group label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.lethalfantasy .spell-content .form-group select,
|
||||
.lethalfantasy .spell-content .form-group input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .spell-content .form-group input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.lethalfantasy .spell-content label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
@@ -1571,10 +1738,6 @@ i.lethalfantasy {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
.lethalfantasy .spell-content .shift-right {
|
||||
margin-left: 2rem;
|
||||
@@ -1596,6 +1759,13 @@ i.lethalfantasy {
|
||||
background-image: var(--background-image-base);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.lethalfantasy .vulnerability-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .vulnerability-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .vulnerability-content input:disabled,
|
||||
.lethalfantasy .vulnerability-content select:disabled {
|
||||
@@ -1640,6 +1810,27 @@ i.lethalfantasy {
|
||||
.lethalfantasy .vulnerability-content .form-fields {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.lethalfantasy .vulnerability-content .form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
.lethalfantasy .vulnerability-content .form-group label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.lethalfantasy .vulnerability-content .form-group select,
|
||||
.lethalfantasy .vulnerability-content .form-group input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .vulnerability-content .form-group input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.lethalfantasy .vulnerability-content label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
@@ -1649,10 +1840,6 @@ i.lethalfantasy {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
.lethalfantasy .vulnerability-content .shift-right {
|
||||
margin-left: 2rem;
|
||||
@@ -1720,6 +1907,13 @@ i.lethalfantasy {
|
||||
background-image: var(--background-image-base);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.lethalfantasy .equipment-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .equipment-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .equipment-content input:disabled,
|
||||
.lethalfantasy .equipment-content select:disabled {
|
||||
@@ -1764,6 +1958,27 @@ i.lethalfantasy {
|
||||
.lethalfantasy .equipment-content .form-fields {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.lethalfantasy .equipment-content .form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
.lethalfantasy .equipment-content .form-group label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.lethalfantasy .equipment-content .form-group select,
|
||||
.lethalfantasy .equipment-content .form-group input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .equipment-content .form-group input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.lethalfantasy .equipment-content label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
@@ -1773,10 +1988,6 @@ i.lethalfantasy {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
.lethalfantasy .equipment-content .shift-right {
|
||||
margin-left: 2rem;
|
||||
@@ -1798,6 +2009,13 @@ i.lethalfantasy {
|
||||
background-image: var(--background-image-base);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.lethalfantasy .shield-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .shield-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .shield-content input:disabled,
|
||||
.lethalfantasy .shield-content select:disabled {
|
||||
@@ -1842,6 +2060,27 @@ i.lethalfantasy {
|
||||
.lethalfantasy .shield-content .form-fields {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.lethalfantasy .shield-content .form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
.lethalfantasy .shield-content .form-group label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.lethalfantasy .shield-content .form-group select,
|
||||
.lethalfantasy .shield-content .form-group input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .shield-content .form-group input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.lethalfantasy .shield-content label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
@@ -1851,10 +2090,6 @@ i.lethalfantasy {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
.lethalfantasy .shield-content .shift-right {
|
||||
margin-left: 2rem;
|
||||
@@ -1876,6 +2111,13 @@ i.lethalfantasy {
|
||||
background-image: var(--background-image-base);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.lethalfantasy .miracle-content nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
.lethalfantasy .miracle-content nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
.lethalfantasy .miracle-content input:disabled,
|
||||
.lethalfantasy .miracle-content select:disabled {
|
||||
@@ -1920,6 +2162,27 @@ i.lethalfantasy {
|
||||
.lethalfantasy .miracle-content .form-fields {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.lethalfantasy .miracle-content .form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
}
|
||||
.lethalfantasy .miracle-content .form-group label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.lethalfantasy .miracle-content .form-group select,
|
||||
.lethalfantasy .miracle-content .form-group input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .miracle-content .form-group input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.lethalfantasy .miracle-content label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
@@ -1929,10 +2192,6 @@ i.lethalfantasy {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
.lethalfantasy .miracle-content .shift-right {
|
||||
margin-left: 2rem;
|
||||
@@ -2109,8 +2368,9 @@ i.lethalfantasy {
|
||||
padding-bottom: 0;
|
||||
width: max-content;
|
||||
margin: 0;
|
||||
color: #252424;
|
||||
}
|
||||
#token-hud .hp-loss-wrap .hud-loss-hp-button-select {
|
||||
padding-left: 8px;
|
||||
font-size: 0.7rem;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"COMBAT": {
|
||||
"Round": "Second",
|
||||
"Round": "Second {round}",
|
||||
"Rounds": "Seconds",
|
||||
"RoundNext": "Next second"
|
||||
},
|
||||
@@ -83,7 +83,7 @@
|
||||
},
|
||||
"challenges": {
|
||||
"agility": {
|
||||
"label": "Agility"
|
||||
"label": "Dexterity"
|
||||
},
|
||||
"dying": {
|
||||
"label": "Dying"
|
||||
@@ -181,7 +181,7 @@
|
||||
},
|
||||
"challenges": {
|
||||
"agility": {
|
||||
"label": "Agility"
|
||||
"label": "Dexterity"
|
||||
},
|
||||
"dying": {
|
||||
"label": "Dying"
|
||||
@@ -281,6 +281,7 @@
|
||||
}
|
||||
},
|
||||
"Label": {
|
||||
"agility": "Dexterity",
|
||||
"gotoToken": "Go to token",
|
||||
"combatAction": "Combat action",
|
||||
"currentAction": "Current ongoing action",
|
||||
@@ -348,7 +349,7 @@
|
||||
"cha": "CHA",
|
||||
"challenge": "Challenge",
|
||||
"challenges": {
|
||||
"agility": "Agility",
|
||||
"agility": "Dexterity",
|
||||
"dying": "Dying",
|
||||
"strength": "Strength"
|
||||
},
|
||||
|
||||
@@ -2,17 +2,53 @@
|
||||
/* -------------------------------------------- */
|
||||
export class LethalFantasyCombatTracker extends foundry.applications.sidebar.tabs.CombatTracker {
|
||||
|
||||
async getData(options) {
|
||||
let data = await super.getData(options);
|
||||
for (let u of data.turns) {
|
||||
static PARTS = {
|
||||
"header": {
|
||||
"template": "systems/fvtt-lethal-fantasy/templates/combat-tracker-header-v2.hbs"
|
||||
},
|
||||
"tracker": {
|
||||
"template": "systems/fvtt-lethal-fantasy/templates/combat-tracker-v2.hbs"
|
||||
},
|
||||
"footer": {
|
||||
"template": "systems/fvtt-lethal-fantasy/templates/combat-tracker-footer-v2.hbs"
|
||||
}
|
||||
}
|
||||
|
||||
static DEFAULT_OPTIONS = foundry.utils.mergeObject(super.DEFAULT_OPTIONS, {
|
||||
actions: {
|
||||
initiativePlus: LethalFantasyCombatTracker.#initiativePlus,
|
||||
initiativeMinus: LethalFantasyCombatTracker.#initiativeMinus,
|
||||
},
|
||||
});
|
||||
|
||||
async _prepareContext(options) {
|
||||
let data = await super._prepareContext(options);
|
||||
console?.log("Combat Tracker Data", data);
|
||||
/*for (let u of data.turns) {
|
||||
let c = game.combat.combatants.get(u.id);
|
||||
u.progressionCount = c.system.progressionCount
|
||||
u.isMonster = c.actor.type === "monster"
|
||||
}
|
||||
console.log("Combat Data", data);
|
||||
console.log("Combat Data", data);*/
|
||||
return data;
|
||||
}
|
||||
|
||||
static #initiativePlus(ev) {
|
||||
ev.preventDefault();
|
||||
let cId = ev.target.closest(".combatant").dataset.combatantId;
|
||||
let c = game.combat.combatants.get(cId);
|
||||
c.update({ 'initiative': c.initiative + 1 });
|
||||
console.log("Initiative Plus");
|
||||
}
|
||||
|
||||
static #initiativeMinus(ev) {
|
||||
ev.preventDefault();
|
||||
let cId = ev.target.closest(".combatant").dataset.combatantId;
|
||||
let c = game.combat.combatants.get(cId);
|
||||
let newInit = Math.max(c.initiative - 1, 0);
|
||||
c.update({ 'initiative': newInit });
|
||||
}
|
||||
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
// Display Combat settings
|
||||
@@ -21,7 +57,6 @@ export class LethalFantasyCombatTracker extends foundry.applications.sidebar.tab
|
||||
let cId = ev.currentTarget.closest(".combatant").dataset.combatantId;
|
||||
let c = game.combat.combatants.get(cId);
|
||||
c.update({ 'initiative': c.initiative + 1 });
|
||||
console.log("Initiative Plus");
|
||||
});
|
||||
|
||||
html.find(".initiative-minus").click(ev => {
|
||||
@@ -160,10 +195,10 @@ export class LethalFantasyCombat extends Combat {
|
||||
}
|
||||
|
||||
for (let c of this.combatants) {
|
||||
if ( nextRound >= c.initiative) {
|
||||
if (nextRound >= c.initiative) {
|
||||
let user = game.users.find(u => u.active && u.character && u.character.id === c.actor.id);
|
||||
if (user?.hasPlayerOwner) {
|
||||
game.socket.emit(`system.${SYSTEM.id}`, { type: "rollProgressionDice", progressionCount: c.system.progressionCount+1, actorId: c.actor.id, combatId: this.id, combatantId: c.id });
|
||||
game.socket.emit(`system.${SYSTEM.id}`, { type: "rollProgressionDice", progressionCount: c.system.progressionCount + 1, actorId: c.actor.id, combatId: this.id, combatantId: c.id });
|
||||
} else {
|
||||
user = game.users.find(u => u.active && u.isGM);
|
||||
c.actor.system.rollProgressionDice(this.id, c.id);
|
||||
|
||||
@@ -59,18 +59,15 @@ export default class LethalFantasyItemSheet extends HandlebarsApplicationMixin(f
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
let context = await super._prepareContext()
|
||||
const contextLocal = {
|
||||
fields: this.document.schema.fields,
|
||||
systemFields: this.document.system.schema.fields,
|
||||
item: this.document,
|
||||
system: this.document.system,
|
||||
source: this.document.toObject(),
|
||||
enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true }),
|
||||
isEditMode: this.isEditMode,
|
||||
isPlayMode: this.isPlayMode,
|
||||
isEditable: this.isEditable,
|
||||
}
|
||||
context = mergeObject(context, contextLocal)
|
||||
context.fields = this.document.schema.fields
|
||||
context.systemFields = this.document.system.schema.fields
|
||||
context.item = this.document
|
||||
context.system = this.document.system
|
||||
context.source = this.document.toObject()
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
context.isEditMode = this.isEditMode
|
||||
context.isPlayMode = this.isPlayMode
|
||||
context.isEditable = this.isEditable
|
||||
return context
|
||||
}
|
||||
|
||||
@@ -97,7 +94,7 @@ export default class LethalFantasyItemSheet extends HandlebarsApplicationMixin(f
|
||||
dragover: this._onDragOver.bind(this),
|
||||
drop: this._onDrop.bind(this),
|
||||
}
|
||||
return new DragDrop(d)
|
||||
return new foundry.applications.ux.DragDrop.implementation(d)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -19,10 +19,4 @@ export default class LethalFantasyGiftSheet extends LethalFantasyItemSheet {
|
||||
},
|
||||
}
|
||||
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,64 +44,64 @@ export const MONEY = {
|
||||
}
|
||||
|
||||
export const MORTAL_CHOICES = {
|
||||
"mankind": {label: "Mankind", id: "mankind", defenseBonus: 0},
|
||||
"elf": {label: "Elf", id: "elf", defenseBonus: 0},
|
||||
"dwarf": {label: "Dwarf", id: "dwarf", defenseBonus: 0},
|
||||
"halfelf": {label: "Half-Elf", id: "halfelf", defenseBonus: 0},
|
||||
"halforc": {label: "Half-Orc", id: "halforc", defenseBonus: 0},
|
||||
"gnome": {label: "Gnome", id: "gnome", defenseBonus: 2},
|
||||
"halflings": {label: "Halflings", id: "halflings", defenseBonus: 2}
|
||||
"mankind": { label: "Mankind", id: "mankind", defenseBonus: 0 },
|
||||
"elf": { label: "Elf", id: "elf", defenseBonus: 0 },
|
||||
"dwarf": { label: "Dwarf", id: "dwarf", defenseBonus: 0 },
|
||||
"halfelf": { label: "Half-Elf", id: "halfelf", defenseBonus: 0 },
|
||||
"halforc": { label: "Half-Orc", id: "halforc", defenseBonus: 0 },
|
||||
"gnome": { label: "Gnome", id: "gnome", defenseBonus: 2 },
|
||||
"halflings": { label: "Halfling", id: "halflings", defenseBonus: 2 }
|
||||
}
|
||||
|
||||
export const FAVOR_CHOICES = {
|
||||
"none": {label: "None", value: "none"},
|
||||
"favor": {label: "Favor", value: "favor"},
|
||||
"disfavor": {label: "Disfavor", value: "disfavor"}
|
||||
"none": { label: "None", value: "none" },
|
||||
"favor": { label: "Favor", value: "favor" },
|
||||
"disfavor": { label: "Disfavor", value: "disfavor" }
|
||||
}
|
||||
|
||||
export const MOVEMENT_CHOICES = {
|
||||
"none": {label: "None (D8E)", value: "D8"},
|
||||
"walk": {label: "Walk (D10E)", value: "D10"},
|
||||
"jog": {label: "Jog (D12E)", value: "D12"},
|
||||
"run": {label: "Run (D20E)", value: "D20"},
|
||||
"incombat": {label: "In Combat (D12E)", value: "D12"}
|
||||
"none": { label: "None (D20E Disfavor)", disfavor: true, value: "2D20kl" },
|
||||
"walk": { label: "Walk (D20E)", disfavor: true, value: "D20" },
|
||||
"incombat": { label: "In Combat (D20E)", favor: false, value: "D20" },
|
||||
"run": { label: "Jog/Run/Sprint (D20E Favor)", favor: true, value: "2D20kh" }
|
||||
}
|
||||
|
||||
export const MOVE_DIRECTION_CHOICES = {
|
||||
"none": {label: "None (+0)", value: "0"},
|
||||
"away": {label: "Away (+4)", value: "+4"},
|
||||
"toward": {label: "Toward (+0)", value: "0"},
|
||||
"lateral": {label: "Lateral (+10)", value: "+10"}
|
||||
"away": { label: "Away (+0)", value: "+0" },
|
||||
"toward": { label: "Toward (0)", value: "0" },
|
||||
"lateral": { label: "Lateral (Red +5)", value: "+5" },
|
||||
"none": { label: "None (+0)", value: "0" },
|
||||
}
|
||||
|
||||
export const SIZE_CHOICES = {
|
||||
"tiny": {label: "Tiny (+10)", value: "+10"},
|
||||
"small": {label: "Small (+5)", value: "+5"},
|
||||
"medium": {label: "Medium (+0)", value: "0"},
|
||||
"huge": {label: "Huge (-10)", value: "-10"}
|
||||
"tiny": { label: "Tiny (Blue +11)", value: "+11" },
|
||||
"small": { label: "Small (Purple +7)", value: "+7" },
|
||||
"medium": { label: "Medium (Red +5)", value: "+5" },
|
||||
"large": { label: "Large (Yellow +1)", value: "+1" },
|
||||
"huge": { label: "Huge (0)", value: "0" }
|
||||
}
|
||||
|
||||
export const RANGE_CHOICES = {
|
||||
"pointblank": {label: "Point Blank (-5)", value: "-5"},
|
||||
"short": {label: "Short (+0)", value: "0"},
|
||||
"medium": {label: "Medium (+8)", value: "+8"},
|
||||
"long": {label: "Long (+15)", value: "+15"},
|
||||
"extreme": {label: "Extreme (+20)", value: "+20"},
|
||||
"beyondskill": {label: "Beyond Skill (+25)", value: "+25"}
|
||||
"pointblank": { label: "Point Blank (Special)", value: "pointblank" },
|
||||
"short": { label: "Short (+0)", value: "0" },
|
||||
"medium": { label: "Medium (Red +5)", value: "+5" },
|
||||
"long": { label: "Long (Purle +7)", value: "+7" },
|
||||
"extreme": { label: "Extreme (Grey +9)", value: "+9" },
|
||||
"beyondskill": { label: "Beyond Skill (Blue +11)", value: "beyondskill" }
|
||||
}
|
||||
|
||||
export const ATTACKER_AIM_CHOICES = {
|
||||
"simple": {label: "Simple (+0)", value: "0"},
|
||||
"careful": {label: "Careful (-4)", value: "-4"},
|
||||
"focused": {label: "Focused (-8)", value: "-8"}
|
||||
"simple": { label: "Simple (+0)", value: "0" },
|
||||
"careful": { label: "Careful (Red -5)", value: "-4" },
|
||||
"focused": { label: "Focused (Grey -9)", value: "-9" }
|
||||
}
|
||||
|
||||
export const SPELL_LETHARGY_DICE = [
|
||||
{dice: "D6", level: "1-5", value: "6", maxLevel: 5},
|
||||
{dice: "D8", level: "6-10", value: "8", maxLevel: 10},
|
||||
{dice: "D10", value: "10", level: "11-15", maxLevel: 15},
|
||||
{dice: "D12", value: "12", level: "16-20", maxLevel: 20},
|
||||
{dice: "D20", value: "20", level: "21-25", maxLevel: 25}
|
||||
{ dice: "D6", level: "1-5", value: "6", maxLevel: 5 },
|
||||
{ dice: "D8", level: "6-10", value: "8", maxLevel: 10 },
|
||||
{ dice: "D10", value: "10", level: "11-15", maxLevel: 15 },
|
||||
{ dice: "D12", value: "12", level: "16-20", maxLevel: 20 },
|
||||
{ dice: "D20", value: "20", level: "21-25", maxLevel: 25 }
|
||||
]
|
||||
|
||||
export const INITIATIVE_DICE_CHOICES_PER_CLASS = {
|
||||
@@ -109,44 +109,44 @@ export const INITIATIVE_DICE_CHOICES_PER_CLASS = {
|
||||
{ "name": "Asleep or totally distracted (2D12)", "value": "2D12" },
|
||||
{ "name": "Awake but unsuspecting (2D8)", "value": "2D8" },
|
||||
{ "name": "Declared Ready on Alert (2D6)", "value": "2D6" },
|
||||
{ "name": "Aware of the enemy, can hear them but not see (2D4)", "value": "2D4" },
|
||||
{ "name": "Aware and know exactly where the enemy is (2D3)", "value": "2D3" }
|
||||
/*{ "name": "Aware of the enemy, can hear them but not see (2D4)", "value": "2D4" },
|
||||
{ "name": "Aware and know exactly where the enemy is (2D3)", "value": "2D3" }*/
|
||||
],
|
||||
"fighter": [
|
||||
{ "name": "Asleep or totally distracted (1D12)", "value": "1D12" },
|
||||
{ "name": "Awake but unsuspecting (1D8)", "value": "1D8" },
|
||||
{ "name": "Declared Ready on Alert (1D6)", "value": "1D6" },
|
||||
{ "name": "Aware of the enemy, can hear them but not see (1D4)", "value": "1D4" },
|
||||
{ "name": "Aware and know exactly where the enemy is (1D3)", "value": "1D3" }
|
||||
{ "name": "Declared Ready on Alert (1)", "value": "1" },
|
||||
/*{ "name": "Aware of the enemy, can hear them but not see (1D4)", "value": "1D4" },
|
||||
{ "name": "Aware and know exactly where the enemy is (1D3)", "value": "1D3" }*/
|
||||
],
|
||||
"rogue": [
|
||||
{ "name": "Asleep or totally distracted (1D10)", "value": "1D10" },
|
||||
{ "name": "Awake but unsuspecting (1D8)", "value": "1D8" },
|
||||
{ "name": "Declared Ready on Alert (1D6)", "value": "1D6" },
|
||||
{ "name": "Aware of the enemy, can hear them but not see (1D3)", "value": "1D3" },
|
||||
{ "name": "Aware and know exactly where the enemy is (1D2)", "value": "1D2" }
|
||||
{ "name": "Declared Ready on Alert (1)", "value": "1" },
|
||||
/*{ "name": "Aware of the enemy, can hear them but not see (1D3)", "value": "1D3" },
|
||||
{ "name": "Aware and know exactly where the enemy is (1D2)", "value": "1D2" }*/
|
||||
],
|
||||
"ranger": [
|
||||
{ "name": "Asleep or totally distracted (1D10)", "value": "1D10" },
|
||||
{ "name": "Awake but unsuspecting (1D8)", "value": "1D8" },
|
||||
{ "name": "Declared Ready on Alert (1D6)", "value": "1D6" },
|
||||
{ "name": "Aware of the enemy, can hear them but not see (1D4)", "value": "1D4" },
|
||||
{ "name": "Aware and know exactly where the enemy is (1D3)", "value": "1D3"}
|
||||
{ "name": "Declared Ready on Alert (1)", "value": "1" },
|
||||
/*{ "name": "Aware of the enemy, can hear them but not see (1D4)", "value": "1D4" },
|
||||
{ "name": "Aware and know exactly where the enemy is (1D3)", "value": "1D3" }*/
|
||||
],
|
||||
"cleric": [
|
||||
{ "name": "Asleep or totally distracted (1D12)", "value": "1D12" },
|
||||
{ "name": "Awake but unsuspecting (1D10)", "value": "1D10" },
|
||||
{ "name": "Declared Ready on Alert (1D8)", "value": "1D8" },
|
||||
{ "name": "Aware of the enemy, can hear them but not see (1D6)", "value": "1D6" },
|
||||
{ "name": "Aware and know exactly where the enemy is (1D4)", "value": "1D4" }
|
||||
{ "name": "Declared Ready on Alert (1D)", "value": "1D" },
|
||||
/*{ "name": "Aware of the enemy, can hear them but not see (1D6)", "value": "1D6" },
|
||||
{ "name": "Aware and know exactly where the enemy is (1D4)", "value": "1D4" }*/
|
||||
],
|
||||
"magicuser": [
|
||||
{ "name": "Sleeping to recover Aether Points (2D20)", "value": "2D20" },
|
||||
{ "name": "Asleep or totally distracted (1D20)", "value": "1D20" },
|
||||
{ "name": "Awake but unsuspecting (1D12)", "value": "1D12" },
|
||||
{ "name": "Declared Ready on Alert (1D10)", "value": "1D10" },
|
||||
{ "name": "Aware of the enemy, can hear them but not see (1D8)", "value": "1D8" },
|
||||
{ "name": "Aware and know exactly where the enemy is (1D6)", "value": "1D6" }
|
||||
{ "name": "Declared Ready on Alert (1)", "value": "1" },
|
||||
/*{ "name": "Aware of the enemy, can hear them but not see (1D8)", "value": "1D8" },
|
||||
{ "name": "Aware and know exactly where the enemy is (1D6)", "value": "1D6" }*/
|
||||
]
|
||||
}
|
||||
|
||||
@@ -160,12 +160,12 @@ export const CHAR_CLASSES = {
|
||||
}
|
||||
|
||||
export const CHAR_CLASSES_DEFINES = {
|
||||
"untrained": {id: "untrained", label: "Untrained"},
|
||||
"fighter": {id: "fighter", label: "Fighter"},
|
||||
"rogue": {id: "rogue", label: "Rogue"},
|
||||
"ranger": {id: "ranger", label: "Ranger"},
|
||||
"cleric": {id: "cleric", label: "Cleric"},
|
||||
"magicuser": {id: "magicuser", label: "Magic User"}
|
||||
"untrained": { id: "untrained", label: "Untrained" },
|
||||
"fighter": { id: "fighter", label: "Fighter" },
|
||||
"rogue": { id: "rogue", label: "Rogue" },
|
||||
"ranger": { id: "ranger", label: "Ranger" },
|
||||
"cleric": { id: "cleric", label: "Cleric" },
|
||||
"magicuser": { id: "magicuser", label: "Magic User" }
|
||||
}
|
||||
|
||||
export const DICE_VALUES = {
|
||||
@@ -178,10 +178,10 @@ export const DICE_VALUES = {
|
||||
"d20": "D20"
|
||||
}
|
||||
|
||||
export const CHARACTERISTIC_ATTACK = [ "str", "int", "wis", "dex"]
|
||||
export const CHARACTERISTIC_RANGED_ATTACK = [ "int", "wis", "dex"]
|
||||
export const CHARACTERISTIC_DEFENSE = [ "int", "wis", "dex" ]
|
||||
export const CHARACTERISTIC_DAMAGE = [ "str" ]
|
||||
export const CHARACTERISTIC_ATTACK = ["str", "int", "wis", "dex"]
|
||||
export const CHARACTERISTIC_RANGED_ATTACK = ["int", "wis", "dex"]
|
||||
export const CHARACTERISTIC_DEFENSE = ["int", "wis", "dex"]
|
||||
export const CHARACTERISTIC_DAMAGE = ["str"]
|
||||
|
||||
export const DEFENSE_DICE_VALUES = {
|
||||
"0": "0",
|
||||
@@ -217,41 +217,41 @@ export const SPELL_CRITICAL = {
|
||||
}
|
||||
|
||||
export const CHOICE_MODIFIERS = {
|
||||
"-9": "-9",
|
||||
"-8": "-8",
|
||||
"-7": "-7",
|
||||
"-6": "-6",
|
||||
"-5": "-5",
|
||||
"-4": "-4",
|
||||
"-3": "-3",
|
||||
"-2": "-2",
|
||||
"-1": "-1",
|
||||
"+0": "0",
|
||||
"+1": "+1",
|
||||
"+2": "+2",
|
||||
"+3": "+3",
|
||||
"+4": "+4",
|
||||
"+5": "+5",
|
||||
"+6": "+6",
|
||||
"+7": "+7",
|
||||
"+8": "+8",
|
||||
"+9": "+9",
|
||||
"+10": "+10",
|
||||
"+11": "+11",
|
||||
"+12": "+12",
|
||||
"+13": "+13",
|
||||
"+14": "+14",
|
||||
"+15": "+15",
|
||||
"+16": "+16",
|
||||
"+17": "+17",
|
||||
"+18": "+18",
|
||||
"+19": "+19",
|
||||
"+20": "+20",
|
||||
"+21": "+21",
|
||||
"+22": "+22",
|
||||
"+23": "+23",
|
||||
"+24": "+24",
|
||||
"+25": "+25"
|
||||
"-9": "-9",
|
||||
"-8": "-8",
|
||||
"-7": "-7",
|
||||
"-6": "-6",
|
||||
"-5": "-5",
|
||||
"-4": "-4",
|
||||
"-3": "-3",
|
||||
"-2": "-2",
|
||||
"-1": "-1",
|
||||
"+0": "0",
|
||||
"+1": "+1",
|
||||
"+2": "+2",
|
||||
"+3": "+3",
|
||||
"+4": "+4",
|
||||
"+5": "+5",
|
||||
"+6": "+6",
|
||||
"+7": "+7",
|
||||
"+8": "+8",
|
||||
"+9": "+9",
|
||||
"+10": "+10",
|
||||
"+11": "+11",
|
||||
"+12": "+12",
|
||||
"+13": "+13",
|
||||
"+14": "+14",
|
||||
"+15": "+15",
|
||||
"+16": "+16",
|
||||
"+17": "+17",
|
||||
"+18": "+18",
|
||||
"+19": "+19",
|
||||
"+20": "+20",
|
||||
"+21": "+21",
|
||||
"+22": "+22",
|
||||
"+23": "+23",
|
||||
"+24": "+24",
|
||||
"+25": "+25"
|
||||
}
|
||||
|
||||
export const ASCII = `
|
||||
|
||||
@@ -124,6 +124,9 @@ export default class LethalFantasyRoll extends Roll {
|
||||
let hasFavor = false
|
||||
let hasMaxValue = true
|
||||
let hasGrantedDice = false
|
||||
let pointBlank = false
|
||||
let letItFly = false
|
||||
let beyondSkill = false
|
||||
let hasStaticModifier = false
|
||||
let hasExplode = true
|
||||
|
||||
@@ -132,13 +135,11 @@ export default class LethalFantasyRoll extends Roll {
|
||||
hasD30 = options.rollType === "save"
|
||||
if (options.rollTarget.rollKey === "dying") {
|
||||
dice = options.rollTarget.value
|
||||
maxValue = Number(options.rollTarget.value.match(/\d+/)[0])
|
||||
hasModifier = false
|
||||
hasChangeDice = true
|
||||
hasFavor = true
|
||||
} else {
|
||||
dice = "1D20"
|
||||
maxValue = 20
|
||||
hasFavor = true
|
||||
}
|
||||
|
||||
@@ -148,7 +149,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
dice = options.rollTarget.formula
|
||||
baseFormula = options.rollTarget.formula
|
||||
hasModifier = false
|
||||
maxValue = 100
|
||||
hasMaxValue = false
|
||||
hasChangeDice = false
|
||||
hasFavor = false
|
||||
@@ -158,7 +158,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
options.rollName = options.rollTarget.name
|
||||
dice = "1D20"
|
||||
baseFormula = "D20"
|
||||
maxValue = 20
|
||||
hasModifier = true
|
||||
hasChangeDice = false
|
||||
hasFavor = true
|
||||
@@ -172,29 +171,27 @@ export default class LethalFantasyRoll extends Roll {
|
||||
|
||||
} else if (options.rollType === "monster-skill") {
|
||||
options.rollName = game.i18n.localize(`LETHALFANTASY.Label.${options.rollTarget.rollKey}`)
|
||||
dice = "1D100"
|
||||
baseFormula = "D100"
|
||||
maxValue = 100
|
||||
dice = "1D20"
|
||||
baseFormula = "D20"
|
||||
hasModifier = true
|
||||
hasFavor = true
|
||||
hasChangeDice = false
|
||||
|
||||
} else if (options.rollType === "skill") {
|
||||
options.rollName = options.rollTarget.name
|
||||
dice = "1D100"
|
||||
baseFormula = "D100"
|
||||
maxValue = 100
|
||||
hasD30 = true
|
||||
dice = "1D20"
|
||||
baseFormula = "D20"
|
||||
hasModifier = true
|
||||
hasFavor = true
|
||||
hasChangeDice = false
|
||||
options.rollTarget.value = options.rollTarget.system.skillTotal
|
||||
options.rollTarget.value = Math.floor(options.rollTarget.system.skillTotal / 10)
|
||||
|
||||
} else if (options.rollType === "weapon-attack" || options.rollType === "weapon-defense") {
|
||||
hasD30 = true
|
||||
options.rollName = options.rollTarget.name
|
||||
dice = "1D20"
|
||||
baseFormula = "D20"
|
||||
maxValue = 20
|
||||
hasModifier = true
|
||||
hasChangeDice = false
|
||||
hasFavor = true
|
||||
@@ -216,7 +213,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
options.rollName = options.rollTarget.name
|
||||
dice = "1D20"
|
||||
baseFormula = "D20"
|
||||
maxValue = 20
|
||||
hasModifier = true
|
||||
hasChangeDice = false
|
||||
options.rollTarget.value = options.rollTarget.actorModifiers.levelSpellModifier + options.rollTarget.actorModifiers.intSpellModifier
|
||||
@@ -234,7 +230,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
options.rollName = options.rollTarget.name
|
||||
dice = "1D20"
|
||||
baseFormula = "D20"
|
||||
maxValue = 20
|
||||
hasChangeDice = false
|
||||
options.rollTarget.value = options.rollTarget.actorModifiers.levelMiracleModifier + options.rollTarget.actorModifiers.chaMiracleModifier
|
||||
options.rollTarget.charModifier = options.rollTarget.actorModifiers.chaMiracleModifier
|
||||
@@ -271,7 +266,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
}
|
||||
dice = dice.replace("E", "")
|
||||
baseFormula = dice
|
||||
maxValue = 20
|
||||
|
||||
} else if (options.rollType.includes("monster-damage")) {
|
||||
options.rollName = options.rollTarget.name
|
||||
@@ -282,7 +276,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
dice = options.rollTarget.damageDice
|
||||
dice = dice.replace("E", "")
|
||||
baseFormula = dice
|
||||
maxValue = 20
|
||||
}
|
||||
|
||||
|
||||
@@ -317,6 +310,7 @@ export default class LethalFantasyRoll extends Roll {
|
||||
hasModifier,
|
||||
hasFavor,
|
||||
hasChangeDice,
|
||||
pointBlank,
|
||||
baseValue: options.rollTarget.value,
|
||||
changeDice: `${dice}`,
|
||||
fieldRollMode,
|
||||
@@ -359,7 +353,16 @@ export default class LethalFantasyRoll extends Roll {
|
||||
"selectGranted": (event, button, dialog) => {
|
||||
hasGrantedDice = true
|
||||
},
|
||||
"gotoToken" : (event, button, dialog) => {
|
||||
"selectBeyondSkill": (event, button, dialog) => {
|
||||
beyondSkill = button.checked
|
||||
},
|
||||
"selectPointBlank": (event, button, dialog) => {
|
||||
pointBlank = button.checked
|
||||
},
|
||||
"selectLetItFly": (event, button, dialog) => {
|
||||
letItFly = button.checked
|
||||
},
|
||||
"gotoToken": (event, button, dialog) => {
|
||||
let tokenId = $(button).data("tokenId")
|
||||
let token = canvas.tokens?.get(tokenId)
|
||||
if (token) {
|
||||
@@ -387,12 +390,8 @@ export default class LethalFantasyRoll extends Roll {
|
||||
if (fullModifier === 0) {
|
||||
modifierFormula = "0"
|
||||
} else {
|
||||
if (options.rollType === "skill" || options.rollType === "monster-skill") {
|
||||
modifierFormula = `${fullModifier}`
|
||||
} else {
|
||||
let modAbs = Math.abs(fullModifier)
|
||||
modifierFormula = `D${modAbs + 1} - 1`
|
||||
}
|
||||
let modAbs = Math.abs(fullModifier)
|
||||
modifierFormula = `D${modAbs + 1} - 1`
|
||||
}
|
||||
if (hasStaticModifier) {
|
||||
modifierFormula += ` + ${options.rollTarget.staticModifier}`
|
||||
@@ -415,6 +414,14 @@ export default class LethalFantasyRoll extends Roll {
|
||||
}
|
||||
}
|
||||
|
||||
// Latest addition : favor choice at point blank range
|
||||
if (pointBlank) {
|
||||
rollContext.favor = "favor"
|
||||
}
|
||||
if (beyondSkill) {
|
||||
rollContext.favor = "disfavor"
|
||||
}
|
||||
|
||||
// Specific pain case
|
||||
if (options.rollType === "save" && options.rollTarget.rollKey === "pain" || options.rollTarget.rollKey === "paincourage") {
|
||||
baseFormula = options.rollTarget.rollDice
|
||||
@@ -428,6 +435,16 @@ export default class LethalFantasyRoll extends Roll {
|
||||
hasD30 = false
|
||||
}
|
||||
|
||||
if (letItFly) {
|
||||
baseFormula = "1D20"
|
||||
titleFormula = `1D20E`
|
||||
modifierFormula = "0"
|
||||
fullModifier = 0
|
||||
hasFavor = false
|
||||
hasExplode = true
|
||||
rollContext.favor = "none"
|
||||
}
|
||||
|
||||
maxValue = Number(baseFormula.match(/\d+$/)[0]) // Update the max value agains
|
||||
|
||||
const rollData = {
|
||||
@@ -769,7 +786,7 @@ export default class LethalFantasyRoll extends Roll {
|
||||
await combatant.setFlag(SYSTEM.id, "currentAction", actionItem)
|
||||
let message = `${combatant.name} action : ${selectedItem.name}, start rolling progression dice or casting time`
|
||||
ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: combatant.actor }) })
|
||||
rollContext = (actionItem.type == "weapon") ? "rollProgressionDice" : "rollLethargyDice" // Set the roll context to rollProgressionDice
|
||||
rollContext = (actionItem.type === "weapon") ? "rollProgressionDice" : "rollLethargyDice" // Set the roll context to rollProgressionDice
|
||||
currentAction = actionItem
|
||||
}
|
||||
|
||||
@@ -913,7 +930,7 @@ export default class LethalFantasyRoll extends Roll {
|
||||
}
|
||||
console.log("CTX", dialogContext)
|
||||
|
||||
const content = await renderTemplate("systems/fvtt-lethal-fantasy/templates/range-defense-dialog.hbs", dialogContext)
|
||||
const content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-lethal-fantasy/templates/range-defense-dialog.hbs", dialogContext)
|
||||
|
||||
const label = game.i18n.localize("LETHALFANTASY.Label.rangeDefenseRoll")
|
||||
const rollContext = await foundry.applications.api.DialogV2.wait({
|
||||
@@ -935,7 +952,24 @@ export default class LethalFantasyRoll extends Roll {
|
||||
rejectClose: false // Click on Close button will not launch an error
|
||||
})
|
||||
|
||||
// If the user cancels the dialog, exit
|
||||
if (rollContext === null) return
|
||||
|
||||
console.log("RollContext", rollContext)
|
||||
// Add disfavor/favor option if point blank range
|
||||
if (rollContext.range === "pointblank") {
|
||||
rollContext.movement = rollContext.movement.replace("kh", "")
|
||||
rollContext.movement = rollContext.movement.replace("kl", "")
|
||||
rollContext.movement += "kl" // Add the kl to the movement (disfavor for point blank range)
|
||||
rollContext.range = "0"
|
||||
}
|
||||
if (rollContext.range === "beyondskill") {
|
||||
rollContext.movement = rollContext.movement.replace("kh", "")
|
||||
rollContext.movement = rollContext.movement.replace("kl", "")
|
||||
rollContext.movement += "kh" // Add the kl to the movement (disfavor for point blank range)
|
||||
rollContext.range = "+11"
|
||||
}
|
||||
|
||||
// Build the final modifier
|
||||
let fullModifier = Number(rollContext.moveDirection) +
|
||||
Number(rollContext.size) +
|
||||
@@ -951,9 +985,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
modifierFormula = `${modAbs}`
|
||||
}
|
||||
|
||||
// If the user cancels the dialog, exit
|
||||
if (rollContext === null) return
|
||||
|
||||
let rollData = { ...rollContext }
|
||||
let options = { ...rollContext }
|
||||
options.rollName = "Ranged Defense"
|
||||
@@ -965,8 +996,9 @@ export default class LethalFantasyRoll extends Roll {
|
||||
let rollD30 = await new Roll("1D30").evaluate()
|
||||
options.D30result = rollD30.total
|
||||
|
||||
|
||||
let dice = rollContext.movement
|
||||
let maxValue = Number(dice.match(/\d+$/)[0]) // Update the max value agains
|
||||
let maxValue = 20 // As per latest changes (was : Number(dice.match(/\d+$/)[0])
|
||||
let rollTotal = -1
|
||||
let diceResults = []
|
||||
let resultType
|
||||
|
||||
@@ -73,6 +73,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
||||
defenseModifier: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
damageDice: new fields.StringField({ required: true, nullable: false, initial: "1D6" }),
|
||||
damageModifier: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
enabled: new fields.BooleanField({ initial: true, required: true, nullable: false }),
|
||||
}
|
||||
return new fields.SchemaField(schema, { label })
|
||||
}
|
||||
@@ -108,9 +109,9 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
||||
schema.biodata = new fields.SchemaField({
|
||||
alignment: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
vision: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
height: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
height: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
length: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
weight: new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||
weight: new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||
})
|
||||
schema.combat = new fields.SchemaField({
|
||||
attackModifier: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
@@ -170,7 +171,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
||||
case "weapon-damage-small":
|
||||
case "weapon-damage-medium":
|
||||
case "weapon-attack":
|
||||
case "weapon-defense":
|
||||
case "weapon-defense": {
|
||||
let weapon = this.actor.items.find((i) => i.type === "weapon" && i.id === rollKey)
|
||||
let skill
|
||||
let skills = this.actor.items.filter((i) => i.type === "skill" && i.name.toLowerCase() === weapon.name.toLowerCase())
|
||||
@@ -205,6 +206,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
||||
rollTarget.weaponSkillModifier = skill.weaponSkillModifier
|
||||
rollTarget.rollKey = rollKey
|
||||
rollTarget.combat = foundry.utils.duplicate(this.combat)
|
||||
}
|
||||
break
|
||||
default:
|
||||
ui.notifications.error(game.i18n.localize("LETHALFANTASY.Notifications.rollTypeNotFound") + String(rollType))
|
||||
@@ -238,18 +240,18 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
||||
|
||||
async rollProgressionDice(combatId, combatantId) {
|
||||
|
||||
const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)]))
|
||||
const rollModes = foundry.utils.duplicate(CONFIG.Dice.rollModes)
|
||||
const fieldRollMode = new foundry.data.fields.StringField({
|
||||
choices: rollModes,
|
||||
blank: false,
|
||||
default: "public",
|
||||
})
|
||||
|
||||
let roll = new Roll("1D8")
|
||||
let roll = new Roll("1D12")
|
||||
await roll.evaluate()
|
||||
let combatant = game.combats.get(combatId)?.combatants?.get(combatantId)
|
||||
|
||||
let msg = await roll.toMessage({ flavor: `Progression Roll for ${this.parent.name}` } )
|
||||
let msg = await roll.toMessage({ flavor: `Progression Roll for ${this.parent.name}` })
|
||||
if (game?.dice3d) {
|
||||
await game.dice3d.waitFor3DAnimationByMessageID(msg.id)
|
||||
}
|
||||
@@ -257,14 +259,14 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
||||
let hasAttack = false
|
||||
for (let key in this.attacks) {
|
||||
let attack = this.attacks[key]
|
||||
if (attack.attackScore > 0 && attack.attackScore === roll.total) {
|
||||
if (attack.enabled && attack.attackScore > 0 && attack.attackScore === roll.total) {
|
||||
hasAttack = true
|
||||
let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionOKMonster", { isMonster: true, name: this.parent.name, weapon: attack.name, roll: roll.total })
|
||||
ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: this.parent }) })
|
||||
let token = combatant?.token
|
||||
this.prepareMonsterRoll("monster-attack", key, undefined, token?.id)
|
||||
if ( token?.object ) {
|
||||
token.object?.control({releaseOthers: true});
|
||||
if (token?.object) {
|
||||
token.object?.control({ releaseOthers: true });
|
||||
return canvas.animatePan(token.object.center);
|
||||
}
|
||||
}
|
||||
@@ -272,7 +274,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
||||
if (!hasAttack) {
|
||||
let message = game.i18n.format("LETHALFANTASY.Notifications.messageProgressionKOMonster", { isMonster: true, name: this.parent.name, roll: roll.total })
|
||||
ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: this.parent }) })
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
MANIFEST-000336
|
||||
MANIFEST-000388
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2025/05/14-09:18:06.447327 7f5ccd7fa6c0 Recovering log #334
|
||||
2025/05/14-09:18:06.457498 7f5ccd7fa6c0 Delete type=3 #332
|
||||
2025/05/14-09:18:06.457555 7f5ccd7fa6c0 Delete type=0 #334
|
||||
2025/05/14-10:01:12.490342 7f5ccb7ff6c0 Level-0 table #339: started
|
||||
2025/05/14-10:01:12.490385 7f5ccb7ff6c0 Level-0 table #339: 0 bytes OK
|
||||
2025/05/14-10:01:12.496360 7f5ccb7ff6c0 Delete type=0 #337
|
||||
2025/05/14-10:01:12.515162 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-10:01:12.515209 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-20:50:59.720888 7ff574df96c0 Recovering log #386
|
||||
2025/09/02-20:50:59.731821 7ff574df96c0 Delete type=3 #384
|
||||
2025/09/02-20:50:59.731882 7ff574df96c0 Delete type=0 #386
|
||||
2025/09/02-21:05:27.811892 7ff56e3ff6c0 Level-0 table #391: started
|
||||
2025/09/02-21:05:27.811921 7ff56e3ff6c0 Level-0 table #391: 0 bytes OK
|
||||
2025/09/02-21:05:27.818375 7ff56e3ff6c0 Delete type=0 #389
|
||||
2025/09/02-21:05:27.831362 7ff56e3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-21:05:27.831417 7ff56e3ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2025/05/14-07:47:09.475124 7f5ccd7fa6c0 Recovering log #330
|
||||
2025/05/14-07:47:09.486681 7f5ccd7fa6c0 Delete type=3 #328
|
||||
2025/05/14-07:47:09.486812 7f5ccd7fa6c0 Delete type=0 #330
|
||||
2025/05/14-08:06:15.866972 7f5ccb7ff6c0 Level-0 table #335: started
|
||||
2025/05/14-08:06:15.867049 7f5ccb7ff6c0 Level-0 table #335: 0 bytes OK
|
||||
2025/05/14-08:06:15.873425 7f5ccb7ff6c0 Delete type=0 #333
|
||||
2025/05/14-08:06:15.893680 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-08:06:15.893803 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-17:50:28.149562 7ff56f7fe6c0 Recovering log #382
|
||||
2025/09/02-17:50:28.159074 7ff56f7fe6c0 Delete type=3 #380
|
||||
2025/09/02-17:50:28.159158 7ff56f7fe6c0 Delete type=0 #382
|
||||
2025/09/02-18:10:48.127187 7ff56e3ff6c0 Level-0 table #387: started
|
||||
2025/09/02-18:10:48.127226 7ff56e3ff6c0 Level-0 table #387: 0 bytes OK
|
||||
2025/09/02-18:10:48.133926 7ff56e3ff6c0 Delete type=0 #385
|
||||
2025/09/02-18:10:48.134163 7ff56e3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-18:10:48.134189 7ff56e3ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000335
|
||||
MANIFEST-000387
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2025/05/14-09:18:06.461139 7f5ccdffb6c0 Recovering log #333
|
||||
2025/05/14-09:18:06.471748 7f5ccdffb6c0 Delete type=3 #331
|
||||
2025/05/14-09:18:06.471810 7f5ccdffb6c0 Delete type=0 #333
|
||||
2025/05/14-10:01:12.509221 7f5ccb7ff6c0 Level-0 table #338: started
|
||||
2025/05/14-10:01:12.509244 7f5ccb7ff6c0 Level-0 table #338: 0 bytes OK
|
||||
2025/05/14-10:01:12.515073 7f5ccb7ff6c0 Delete type=0 #336
|
||||
2025/05/14-10:01:12.515202 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-10:01:12.515252 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-20:50:59.736702 7ff56ffff6c0 Recovering log #385
|
||||
2025/09/02-20:50:59.746286 7ff56ffff6c0 Delete type=3 #383
|
||||
2025/09/02-20:50:59.746360 7ff56ffff6c0 Delete type=0 #385
|
||||
2025/09/02-21:05:27.804767 7ff56e3ff6c0 Level-0 table #390: started
|
||||
2025/09/02-21:05:27.804810 7ff56e3ff6c0 Level-0 table #390: 0 bytes OK
|
||||
2025/09/02-21:05:27.811774 7ff56e3ff6c0 Delete type=0 #388
|
||||
2025/09/02-21:05:27.831354 7ff56e3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-21:05:27.831403 7ff56e3ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2025/05/14-07:47:09.493325 7f5ccc7f86c0 Recovering log #329
|
||||
2025/05/14-07:47:09.503988 7f5ccc7f86c0 Delete type=3 #327
|
||||
2025/05/14-07:47:09.504090 7f5ccc7f86c0 Delete type=0 #329
|
||||
2025/05/14-08:06:15.873602 7f5ccb7ff6c0 Level-0 table #334: started
|
||||
2025/05/14-08:06:15.873653 7f5ccb7ff6c0 Level-0 table #334: 0 bytes OK
|
||||
2025/05/14-08:06:15.879920 7f5ccb7ff6c0 Delete type=0 #332
|
||||
2025/05/14-08:06:15.893720 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-08:06:15.893853 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-17:50:28.163914 7ff574df96c0 Recovering log #381
|
||||
2025/09/02-17:50:28.174205 7ff574df96c0 Delete type=3 #379
|
||||
2025/09/02-17:50:28.174262 7ff574df96c0 Delete type=0 #381
|
||||
2025/09/02-18:10:48.106359 7ff56e3ff6c0 Level-0 table #386: started
|
||||
2025/09/02-18:10:48.106436 7ff56e3ff6c0 Level-0 table #386: 0 bytes OK
|
||||
2025/09/02-18:10:48.112780 7ff56e3ff6c0 Delete type=0 #384
|
||||
2025/09/02-18:10:48.134105 7ff56e3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-18:10:48.134170 7ff56e3ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000335
|
||||
MANIFEST-000387
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2025/05/14-09:18:06.433768 7f5ccc7f86c0 Recovering log #333
|
||||
2025/05/14-09:18:06.444450 7f5ccc7f86c0 Delete type=3 #331
|
||||
2025/05/14-09:18:06.444513 7f5ccc7f86c0 Delete type=0 #333
|
||||
2025/05/14-10:01:12.502915 7f5ccb7ff6c0 Level-0 table #338: started
|
||||
2025/05/14-10:01:12.502947 7f5ccb7ff6c0 Level-0 table #338: 0 bytes OK
|
||||
2025/05/14-10:01:12.509102 7f5ccb7ff6c0 Delete type=0 #336
|
||||
2025/05/14-10:01:12.515190 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-10:01:12.515243 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-20:50:59.705310 7ff5755fa6c0 Recovering log #385
|
||||
2025/09/02-20:50:59.715661 7ff5755fa6c0 Delete type=3 #383
|
||||
2025/09/02-20:50:59.715730 7ff5755fa6c0 Delete type=0 #385
|
||||
2025/09/02-21:05:27.824904 7ff56e3ff6c0 Level-0 table #390: started
|
||||
2025/09/02-21:05:27.824936 7ff56e3ff6c0 Level-0 table #390: 0 bytes OK
|
||||
2025/09/02-21:05:27.831287 7ff56e3ff6c0 Delete type=0 #388
|
||||
2025/09/02-21:05:27.831394 7ff56e3ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-21:05:27.831425 7ff56e3ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2025/05/14-07:47:09.459336 7f5ccdffb6c0 Recovering log #329
|
||||
2025/05/14-07:47:09.470303 7f5ccdffb6c0 Delete type=3 #327
|
||||
2025/05/14-07:47:09.470418 7f5ccdffb6c0 Delete type=0 #329
|
||||
2025/05/14-08:06:15.886675 7f5ccb7ff6c0 Level-0 table #334: started
|
||||
2025/05/14-08:06:15.886731 7f5ccb7ff6c0 Level-0 table #334: 0 bytes OK
|
||||
2025/05/14-08:06:15.893424 7f5ccb7ff6c0 Delete type=0 #332
|
||||
2025/05/14-08:06:15.893775 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-08:06:15.893909 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-17:50:28.134841 7ff5755fa6c0 Recovering log #381
|
||||
2025/09/02-17:50:28.144832 7ff5755fa6c0 Delete type=3 #379
|
||||
2025/09/02-17:50:28.144888 7ff5755fa6c0 Delete type=0 #381
|
||||
2025/09/02-18:10:48.112960 7ff56e3ff6c0 Level-0 table #386: started
|
||||
2025/09/02-18:10:48.113011 7ff56e3ff6c0 Level-0 table #386: 0 bytes OK
|
||||
2025/09/02-18:10:48.119926 7ff56e3ff6c0 Delete type=0 #384
|
||||
2025/09/02-18:10:48.134120 7ff56e3ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-18:10:48.134176 7ff56e3ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000035
|
||||
MANIFEST-000087
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2025/05/14-09:18:06.487926 7f5ccc7f86c0 Recovering log #33
|
||||
2025/05/14-09:18:06.497838 7f5ccc7f86c0 Delete type=3 #31
|
||||
2025/05/14-09:18:06.497894 7f5ccc7f86c0 Delete type=0 #33
|
||||
2025/05/14-10:01:12.535301 7f5ccb7ff6c0 Level-0 table #38: started
|
||||
2025/05/14-10:01:12.535349 7f5ccb7ff6c0 Level-0 table #38: 0 bytes OK
|
||||
2025/05/14-10:01:12.541664 7f5ccb7ff6c0 Delete type=0 #36
|
||||
2025/05/14-10:01:12.541942 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-10:01:12.541971 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-20:50:59.760810 7ff56f7fe6c0 Recovering log #85
|
||||
2025/09/02-20:50:59.771723 7ff56f7fe6c0 Delete type=3 #83
|
||||
2025/09/02-20:50:59.771778 7ff56f7fe6c0 Delete type=0 #85
|
||||
2025/09/02-21:05:27.831562 7ff56e3ff6c0 Level-0 table #90: started
|
||||
2025/09/02-21:05:27.831585 7ff56e3ff6c0 Level-0 table #90: 0 bytes OK
|
||||
2025/09/02-21:05:27.838459 7ff56e3ff6c0 Delete type=0 #88
|
||||
2025/09/02-21:05:27.861348 7ff56e3ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-21:05:27.861400 7ff56e3ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2025/05/14-07:47:09.521604 7f5ccd7fa6c0 Recovering log #29
|
||||
2025/05/14-07:47:09.533204 7f5ccd7fa6c0 Delete type=3 #27
|
||||
2025/05/14-07:47:09.533353 7f5ccd7fa6c0 Delete type=0 #29
|
||||
2025/05/14-08:06:15.894136 7f5ccb7ff6c0 Level-0 table #34: started
|
||||
2025/05/14-08:06:15.894209 7f5ccb7ff6c0 Level-0 table #34: 0 bytes OK
|
||||
2025/05/14-08:06:15.900873 7f5ccb7ff6c0 Delete type=0 #32
|
||||
2025/05/14-08:06:15.921517 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-08:06:15.921613 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-17:50:28.191160 7ff56f7fe6c0 Recovering log #81
|
||||
2025/09/02-17:50:28.200755 7ff56f7fe6c0 Delete type=3 #79
|
||||
2025/09/02-17:50:28.200807 7ff56f7fe6c0 Delete type=0 #81
|
||||
2025/09/02-18:10:48.162879 7ff56e3ff6c0 Level-0 table #86: started
|
||||
2025/09/02-18:10:48.162935 7ff56e3ff6c0 Level-0 table #86: 0 bytes OK
|
||||
2025/09/02-18:10:48.169774 7ff56e3ff6c0 Delete type=0 #84
|
||||
2025/09/02-18:10:48.169974 7ff56e3ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-18:10:48.194063 7ff56e3ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000335
|
||||
MANIFEST-000387
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2025/05/14-09:18:06.475503 7f5cccff96c0 Recovering log #333
|
||||
2025/05/14-09:18:06.485731 7f5cccff96c0 Delete type=3 #331
|
||||
2025/05/14-09:18:06.485791 7f5cccff96c0 Delete type=0 #333
|
||||
2025/05/14-10:01:12.496479 7f5ccb7ff6c0 Level-0 table #338: started
|
||||
2025/05/14-10:01:12.496503 7f5ccb7ff6c0 Level-0 table #338: 0 bytes OK
|
||||
2025/05/14-10:01:12.502768 7f5ccb7ff6c0 Delete type=0 #336
|
||||
2025/05/14-10:01:12.515177 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-10:01:12.515216 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-20:50:59.748635 7ff5755fa6c0 Recovering log #385
|
||||
2025/09/02-20:50:59.758609 7ff5755fa6c0 Delete type=3 #383
|
||||
2025/09/02-20:50:59.758674 7ff5755fa6c0 Delete type=0 #385
|
||||
2025/09/02-21:05:27.818496 7ff56e3ff6c0 Level-0 table #390: started
|
||||
2025/09/02-21:05:27.818520 7ff56e3ff6c0 Level-0 table #390: 0 bytes OK
|
||||
2025/09/02-21:05:27.824803 7ff56e3ff6c0 Delete type=0 #388
|
||||
2025/09/02-21:05:27.831371 7ff56e3ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-21:05:27.831411 7ff56e3ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2025/05/14-07:47:09.507023 7f5ccdffb6c0 Recovering log #329
|
||||
2025/05/14-07:47:09.517849 7f5ccdffb6c0 Delete type=3 #327
|
||||
2025/05/14-07:47:09.517975 7f5ccdffb6c0 Delete type=0 #329
|
||||
2025/05/14-08:06:15.880220 7f5ccb7ff6c0 Level-0 table #334: started
|
||||
2025/05/14-08:06:15.880293 7f5ccb7ff6c0 Level-0 table #334: 0 bytes OK
|
||||
2025/05/14-08:06:15.886487 7f5ccb7ff6c0 Delete type=0 #332
|
||||
2025/05/14-08:06:15.893747 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||
2025/05/14-08:06:15.893881 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-17:50:28.177587 7ff5755fa6c0 Recovering log #381
|
||||
2025/09/02-17:50:28.187400 7ff5755fa6c0 Delete type=3 #379
|
||||
2025/09/02-17:50:28.187471 7ff5755fa6c0 Delete type=0 #381
|
||||
2025/09/02-18:10:48.120046 7ff56e3ff6c0 Level-0 table #386: started
|
||||
2025/09/02-18:10:48.120069 7ff56e3ff6c0 Level-0 table #386: 0 bytes OK
|
||||
2025/09/02-18:10:48.127045 7ff56e3ff6c0 Delete type=0 #384
|
||||
2025/09/02-18:10:48.134134 7ff56e3ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||
2025/09/02-18:10:48.134182 7ff56e3ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -45,7 +45,7 @@
|
||||
min-width: 2.2rem;
|
||||
max-width: 2.2rem;
|
||||
margin-left: 4px;
|
||||
font-size: calc(var(--font-size-standard) * 1.0);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
}
|
||||
.character-hp-max {
|
||||
clear: both;
|
||||
@@ -57,7 +57,7 @@
|
||||
input {
|
||||
width: 3.2rem;
|
||||
text-align: center;
|
||||
font-size: calc(var(--font-size-standard) * 1.0);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -222,7 +222,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.character-biography .main-div{
|
||||
.tab.character-biography .main-div {
|
||||
.biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
@@ -252,7 +252,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.character-skills .main-div{
|
||||
.tab.character-skills .main-div {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
@@ -473,7 +473,7 @@
|
||||
min-width: 12rem;
|
||||
}
|
||||
.item-detail {
|
||||
min-width:2rem;
|
||||
min-width: 2rem;
|
||||
}
|
||||
}
|
||||
.shields {
|
||||
@@ -492,13 +492,12 @@
|
||||
}
|
||||
}
|
||||
.item-detail {
|
||||
min-width:2.5rem;
|
||||
min-width: 2.5rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 12rem;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.tab.character-spells .main-div {
|
||||
@@ -534,7 +533,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.spells {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
@@ -545,7 +543,8 @@
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
.item-img {
|
||||
width: 24px;
|
||||
min-width: 24px;
|
||||
max-width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
.name {
|
||||
|
||||
@@ -6,6 +6,17 @@
|
||||
--logo-standard: url("../assets/ui/lf_logo_small_02.webp");
|
||||
}
|
||||
|
||||
.initiative-area {
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
input {
|
||||
min-width: 3rem;
|
||||
max-width: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
#logo {
|
||||
content: var(--logo-standard);
|
||||
width: 50px;
|
||||
|
||||
@@ -35,9 +35,10 @@
|
||||
padding-bottom: 0;
|
||||
width: max-content;
|
||||
margin: 0;
|
||||
color:#252424;
|
||||
}
|
||||
|
||||
#token-hud .hp-loss-wrap .hud-loss-hp-button-select {
|
||||
padding-left: 8px;
|
||||
font-size: 0.7rem;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,14 @@
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
|
||||
nav.tabs [data-tab] {
|
||||
color: #636060;
|
||||
}
|
||||
|
||||
nav.tabs [data-tab].active {
|
||||
color: #252424;
|
||||
}
|
||||
|
||||
input:disabled,
|
||||
select:disabled {
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
@@ -39,11 +47,11 @@
|
||||
input,
|
||||
select {
|
||||
text-align: center;
|
||||
font-size: calc(var(--font-size-standard) * 1.0);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
}
|
||||
select {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1.0);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,23 +75,43 @@
|
||||
padding-top: 4px;
|
||||
}
|
||||
|
||||
overflow: auto;
|
||||
|
||||
.form-group {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
label {
|
||||
align-content: center;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
select,
|
||||
input {
|
||||
text-align: left;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
input[type="checkbox"] {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1.0);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
flex: 50%;
|
||||
}
|
||||
|
||||
|
||||
.align-top {
|
||||
align-self: flex-start;
|
||||
padding: 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
/*border-color: black;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2%;*/
|
||||
}
|
||||
|
||||
.shift-right {
|
||||
margin-left: 2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,9 +13,11 @@
|
||||
<fieldset class="">
|
||||
<div class="flexrow character-hp">
|
||||
<span class="name">{{localize "LETHALFANTASY.Label.HP"}}</span>
|
||||
{{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode classes="character-hp-value"}}
|
||||
{{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode
|
||||
classes="character-hp-value"}}
|
||||
/
|
||||
{{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode classes="character-hp-value"}}
|
||||
{{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode
|
||||
classes="character-hp-value"}}
|
||||
</div>
|
||||
<div class="flexrow character-hp">
|
||||
<span class="name">{{localize "LETHALFANTASY.Label.grit"}}</span>
|
||||
@@ -36,7 +38,8 @@
|
||||
|
||||
<div class="flexrow ">
|
||||
<span class="">{{localize "LETHALFANTASY.Label.damageResistanceShort"}}</span>
|
||||
{{formInput systemFields.hp.fields.damageResistance value=system.hp.fields.damageResistance disabled=isPlayMode classes="character-hp"}}
|
||||
{{formInput systemFields.hp.fields.damageResistance value=system.hp.fields.damageResistance
|
||||
disabled=isPlayMode classes="character-hp"}}
|
||||
</div>
|
||||
|
||||
|
||||
@@ -84,36 +87,40 @@
|
||||
class="lf-roll-small fa-solid fa-dice-d20"></i>
|
||||
{{localize "LETHALFANTASY.Label.saves.contagion"}}
|
||||
</a>
|
||||
</span>
|
||||
</span>
|
||||
{{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value
|
||||
disabled=true}}
|
||||
|
||||
<span class="name">
|
||||
<a class="rollable" data-roll-type="save" data-roll-key="poison"><i
|
||||
class="lf-roll-small fa-solid fa-dice-d20"></i>
|
||||
{{localize "LETHALFANTASY.Label.saves.poison"}}
|
||||
{{localize "LETHALFANTASY.Label.saves.poison"}}
|
||||
</a>
|
||||
</span>
|
||||
{{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value
|
||||
</span>
|
||||
{{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value
|
||||
disabled=true }}
|
||||
|
||||
<!--
|
||||
<span class="name-pain">
|
||||
<a class="rollable" data-roll-type="save" data-roll-key="pain" data-roll-dice="D12"><i
|
||||
<a class="rollable" data-roll-type="save" data-roll-key="pain" data-roll-dice="D12"><i
|
||||
class="lf-roll-small fa-solid fa-dice-d12"></i>
|
||||
{{localize "LETHALFANTASY.Label.saves.pain"}}
|
||||
{{localize "LETHALFANTASY.Label.saves.pain"}}
|
||||
</a>
|
||||
</span>
|
||||
<span class="name-pain">
|
||||
<a class="rollable" data-roll-type="save" data-roll-key="pain" data-roll-dice="D20"><i
|
||||
<a class="rollable" data-roll-type="save" data-roll-key="pain" data-roll-dice="D20"><i
|
||||
class="lf-roll-small fa-solid fa-dice-d20"></i>
|
||||
{{localize "LETHALFANTASY.Label.saves.pain"}}
|
||||
{{localize "LETHALFANTASY.Label.saves.pain"}}
|
||||
</a>
|
||||
</span>
|
||||
</span>
|
||||
{{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=true}}
|
||||
|
||||
<span data-tooltip="Pain save if wound exceeds">
|
||||
{{formField systemFields.hp.fields.painDamage value=system.hp.painDamage disabled=isPlayMode tooltip="Pain Damage"}}
|
||||
{{formField systemFields.hp.fields.painDamage value=system.hp.painDamage disabled=isPlayMode
|
||||
tooltip="Pain Damage"}}
|
||||
</span>
|
||||
-->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
@@ -132,7 +139,7 @@
|
||||
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
||||
"LETHALFANTASY.Label.challenges.agility"}}</a></span>
|
||||
{{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value
|
||||
disabled=true
|
||||
disabled=true
|
||||
}}
|
||||
<span class="name"><a class="rollable" data-roll-type="challenge" data-roll-key="dying"><i
|
||||
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
|
||||
@@ -228,14 +235,6 @@
|
||||
{{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent
|
||||
disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="character-characteristic">
|
||||
<span>{{localize "LETHALFANTASY.Label.app"}}</span>
|
||||
{{formField systemFields.characteristics.fields.app.fields.value value=system.characteristics.app.value
|
||||
disabled=isPlayMode data-char-id="app" }}
|
||||
|
||||
{{formField systemFields.characteristics.fields.app.fields.percent value=system.characteristics.app.percent
|
||||
disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</section>
|
||||
@@ -1,52 +1,52 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
<div class="main-div">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.divinityPoints"}}</legend>
|
||||
<div class="miracle-details">
|
||||
<div class="miracle-detail">
|
||||
<span >Current</span>
|
||||
{{formField systemFields.divinityPoints.fields.value value=system.divinityPoints.value localize=true}}
|
||||
<a data-action="divinityPointsPlus"><i class="fa-solid fa-hexagon-plus"></i></a>
|
||||
<a data-action="divinityPointsMinus"><i class="fa-solid fa-hexagon-minus"></i></a>
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.divinityPoints"}}</legend>
|
||||
<div class="miracle-details">
|
||||
<div class="miracle-detail">
|
||||
<span>Current</span>
|
||||
{{formField systemFields.divinityPoints.fields.value value=system.divinityPoints.value localize=true}}
|
||||
<a data-action="divinityPointsPlus"><i class="fa-solid fa-hexagon-plus"></i></a>
|
||||
<a data-action="divinityPointsMinus"><i class="fa-solid fa-hexagon-minus"></i></a>
|
||||
|
||||
<span >Max</span>
|
||||
{{formField systemFields.divinityPoints.fields.max value=system.divinityPoints.max localize=true disabled=isPlayMode}}
|
||||
<span>Max</span>
|
||||
{{formField systemFields.divinityPoints.fields.max value=system.divinityPoints.max localize=true
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.miracles"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "
|
||||
LETHALFANTASY.Tooltip.addMiracle"}}" data-tooltip-direction="UP"><i class="fas fa-plus"
|
||||
data-action="createMiracle"></i></a>{{/if}}</legend>
|
||||
<div class="miracles">
|
||||
{{#each miracles as |item|}}
|
||||
<div class="miracle" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true" >
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" >
|
||||
{{item.name}}
|
||||
</div>
|
||||
|
||||
<a class="rollable" data-roll-type="miracle-attack" data-roll-key="{{item.id}}" data-tooltip="Miracle Attack">
|
||||
<i class="lf-roll-small fa-solid fa-swords" data-roll-type="miracle-attack" data-roll-key="{{item.id}}"></i>
|
||||
</a>
|
||||
|
||||
<a class="rollable" data-roll-type="miracle-power" data-roll-key="{{item.id}}" data-tooltip="Miracle Power">
|
||||
<i class="fa-duotone fa-solid fa-stars" data-roll-type="miracle-power" data-roll-key="{{item.id}}"></i>
|
||||
</a>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.miracles"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "
|
||||
LETHALFANTASY.Tooltip.addMiracle"}}" data-tooltip-direction="UP"><i class="fas fa-plus"
|
||||
data-action="createMiracle"></i></a>{{/if}}</legend>
|
||||
<div class="miracles">
|
||||
{{#each miracles as |item|}}
|
||||
<div class="miracle" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name">
|
||||
{{item.name}}
|
||||
</div>
|
||||
|
||||
<a class="rollable" data-roll-type="miracle-attack" data-roll-key="{{item.id}}" data-tooltip="Miracle Attack">
|
||||
<i class="lf-roll-small fa-solid fa-swords" data-roll-type="miracle-attack" data-roll-key="{{item.id}}"></i>
|
||||
</a>
|
||||
|
||||
<a class="rollable" data-roll-type="miracle-power" data-roll-key="{{item.id}}" data-tooltip="Miracle Power">
|
||||
<i class="fa-duotone fa-solid fa-stars" data-roll-type="miracle-power" data-roll-key="{{item.id}}"></i>
|
||||
</a>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
@@ -15,38 +15,37 @@
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.spells"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "
|
||||
LETHALFANTASY.Tooltip.addSpell"}}" data-tooltip-direction="UP"><i class="fas fa-plus"
|
||||
data-action="createSpell"></i></a>{{/if}}</legend>
|
||||
<div class="spells">
|
||||
{{#each spells as |item|}}
|
||||
<div class="spell" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name">
|
||||
{{item.name}}
|
||||
</div>
|
||||
|
||||
<a class="rollable" data-roll-type="spell-attack" data-roll-key="{{item.id}}" data-tooltip="Spell Attack">
|
||||
<i class="lf-roll-small fa-solid fa-swords" data-roll-type="spell-attack" data-roll-key="{{item.id}}"></i>
|
||||
</a>
|
||||
|
||||
<a class="rollable" data-roll-type="spell-power" data-roll-key="{{item.id}}" data-tooltip="Spell Power">
|
||||
<i class="fa-duotone fa-solid fa-stars" data-roll-type="spell-power" data-roll-key="{{item.id}}"></i>
|
||||
</a>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.spells"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "
|
||||
LETHALFANTASY.Tooltip.addSpell"}}" data-tooltip-direction="UP"><i class="fas fa-plus"
|
||||
data-action="createSpell"></i></a>{{/if}}</legend>
|
||||
<div class="spells">
|
||||
{{#each spells as |item|}}
|
||||
<div class="spell" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name">
|
||||
{{item.name}}
|
||||
</div>
|
||||
|
||||
<a class="rollable" data-roll-type="spell-attack" data-roll-key="{{item.id}}" data-tooltip="Spell Attack">
|
||||
<i class="lf-roll-small fa-solid fa-swords" data-roll-type="spell-attack" data-roll-key="{{item.id}}"></i>
|
||||
</a>
|
||||
|
||||
<a class="rollable" data-roll-type="spell-power" data-roll-key="{{item.id}}" data-tooltip="Spell Power">
|
||||
<i class="fa-duotone fa-solid fa-stars" data-roll-type="spell-power" data-roll-key="{{item.id}}"></i>
|
||||
</a>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
</div>
|
||||
</section>
|
||||
@@ -6,7 +6,7 @@
|
||||
</div>
|
||||
|
||||
<div class="intro-right">
|
||||
<span>{{upperFirst rollName}}</span>
|
||||
<span>{{actingCharName}} - {{upperFirst rollName}}</span>
|
||||
|
||||
{{#if (match rollType "attack")}}
|
||||
<span>Attack roll !</span>
|
||||
|
||||
39
templates/combat-tracker-footer-v2.hbs
Normal file
39
templates/combat-tracker-footer-v2.hbs
Normal file
@@ -0,0 +1,39 @@
|
||||
<nav class="combat-controls" data-tooltip-direction="UP">
|
||||
{{~#if hasCombat~}}
|
||||
|
||||
{{!-- GM Controls --}}
|
||||
{{#if user.isGM}}
|
||||
{{#if combat.round}}
|
||||
<!-- <button type="button" class="inline-control combat-control icon fa-solid fa-backward-step"
|
||||
data-action="previousRound" data-tooltip aria-label="{{ localize "COMBAT.RoundPrev" }}"></button>
|
||||
<button type="button" class="inline-control combat-control icon fa-solid fa-arrow-left" data-action="previousTurn"
|
||||
data-tooltip aria-label="{{ localize "COMBAT.TurnPrev" }}"></button> -->
|
||||
<button type="button" class="combat-control combat-control-lg" data-action="endCombat">
|
||||
<i class="fa-solid fa-xmark" inert></i>
|
||||
<span>{{ localize "COMBAT.End" }}</span>
|
||||
</button>
|
||||
|
||||
<!-- <button type="button" class="inline-control combat-control icon fa-solid fa-arrow-right" data-action="nextTurn"
|
||||
data-tooltip aria-label="{{ localize "COMBAT.TurnNext" }}"></button> -->
|
||||
<button type="button" class="inline-control combat-control icon fa-solid fa-forward-step" data-action="nextRound"
|
||||
data-tooltip aria-label="{{ localize "COMBAT.RoundNext" }}"></button>
|
||||
{{else}}
|
||||
<button type="button" class="combat-control combat-control-lg" data-action="startCombat">
|
||||
<i class="fa-solid fa-swords" inert></i>
|
||||
<span>{{ localize "COMBAT.Begin" }}</span>
|
||||
</button>
|
||||
{{/if}}
|
||||
|
||||
{{!-- Active Player Controls --}}
|
||||
{{else if control}}
|
||||
<!-- <button type="button" class="inline-control combat-control icon fa-solid fa-arrow-left" data-action="previousTurn"
|
||||
data-tooltip aria-label="{{ localize "COMBAT.TurnPrev" }}"></button>
|
||||
<button type="button" class="combat-control combat-control-lg" data-action="nextTurn">
|
||||
<i class="fa-solid fa-check"></i>
|
||||
<span>{{ localize "COMBAT.TurnEnd" }}</span>
|
||||
</button>
|
||||
<button type="button" class="inline-control combat-control icon fa-solid fa-arrow-right" data-action="nextTurn"
|
||||
data-tooltip aria-label="{{ localize "COMBAT.TurnNext" }}"></button> -->
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</nav>
|
||||
92
templates/combat-tracker-header-v2.hbs
Normal file
92
templates/combat-tracker-header-v2.hbs
Normal file
@@ -0,0 +1,92 @@
|
||||
<header class="combat-tracker-header">
|
||||
|
||||
{{!-- Encounter Controls --}}
|
||||
{{#if user.isGM}}
|
||||
<nav class="encounters {{ css }}" aria-label="{{ localize "COMBAT.NavLabel" }}">
|
||||
|
||||
{{!-- Cycle Display --}}
|
||||
{{#if displayCycle}}
|
||||
<button type="button" class="inline-control icon fa-solid fa-plus" data-action="createCombat"
|
||||
data-tooltip aria-label="{{ localize "COMBAT.Create" }}"></button>
|
||||
|
||||
<div class="cycle-combats">
|
||||
<button type="button" class="inline-control icon fa-solid fa-caret-left" data-action="cycleCombat"
|
||||
{{#if previousId}}data-combat-id="{{ previousId }}" {{else}}disabled{{/if}}
|
||||
data-tooltip aria-label="{{ localize "COMBAT.EncounterPrevious" }}"></button>
|
||||
<div class="encounter-count">
|
||||
<span class="value">{{ currentIndex }}</span>
|
||||
<span class="separator">/</span>
|
||||
<span class="max">{{ combats.length }}</span>
|
||||
</div>
|
||||
<button type="button" class="inline-control icon fa-solid fa-caret-right" data-action="cycleCombat"
|
||||
{{#if nextId}}data-combat-id="{{ nextId }}" {{else}}disabled{{/if}}
|
||||
data-tooltip aria-label="{{ localize "COMBAT.EncounterNext" }}"></button>
|
||||
</div>
|
||||
|
||||
<button type="button" class="inline-control icon fa-solid fa-gear" data-action="trackerSettings"
|
||||
data-tooltip aria-label="{{ localize "COMBAT.Settings" }}"></button>
|
||||
|
||||
{{!-- Tabbed Display --}}
|
||||
{{else if combats.length}}
|
||||
<button type="button" class="inline-control icon fa-solid fa-plus" data-action="createCombat"
|
||||
data-tooltip aria-label="{{ localize "COMBAT.Create" }}"></button>
|
||||
{{#each combats}}
|
||||
<button type="button" class="inline-control {{#if active}}active{{/if}}" data-action="cycleCombat"
|
||||
data-combat-id="{{ id }}">
|
||||
{{ label }}
|
||||
</button>
|
||||
{{/each}}
|
||||
<button type="button" class="inline-control icon fa-solid fa-gear" data-action="trackerSettings"
|
||||
data-tooltip aria-label="{{ localize "COMBAT.Settings" }}"></button>
|
||||
|
||||
{{!-- No Combats --}}
|
||||
{{else}}
|
||||
<button type="button" class="combat-control-lg" data-action="createCombat">
|
||||
<i class="fa-solid fa-plus" inert></i>
|
||||
<span>{{ localize "COMBAT.Create" }}</span>
|
||||
</button>
|
||||
|
||||
{{/if}}
|
||||
</nav>
|
||||
{{/if}}
|
||||
|
||||
<div class="encounter-controls {{#if hasCombat}}combat{{/if}}">
|
||||
|
||||
{{!-- Bulk Rolls --}}
|
||||
<div class="control-buttons left flexrow">
|
||||
{{#if user.isGM}}
|
||||
<button type="button" class="inline-control combat-control icon fa-solid fa-users" data-action="rollAll"
|
||||
{{#unless combat.turns.length}}disabled{{/unless}} data-tooltip="COMBAT.RollAll"
|
||||
aria-label="{{ localize "COMBAT.RollAll" }}"></button>
|
||||
<button type="button" class="inline-control combat-control icon fa-solid fa-users-cog" data-action="rollNPC"
|
||||
{{#unless combat.turns.length}}disabled{{/unless}} data-tooltip="COMBAT.RollNPC"
|
||||
aria-label="{{ localize "COMBAT.RollNPC" }}"></button>
|
||||
{{else}}
|
||||
<div class="spacer"></div>
|
||||
<div class="spacer"></div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{!-- Combat Status --}}
|
||||
<strong class="encounter-title">
|
||||
{{#if combats.length}}
|
||||
{{#if combat.round}}
|
||||
{{ localize "COMBAT.Round" round=combat.round }}
|
||||
{{else}}
|
||||
{{ localize "COMBAT.NotStarted" }}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{ localize "COMBAT.None" }}
|
||||
{{/if}}
|
||||
</strong>
|
||||
|
||||
{{!-- Combat Controls --}}
|
||||
<div class="control-buttons right flexrow">
|
||||
<div class="spacer"></div>
|
||||
<button type="button" class="encounter-context-menu inline-control combat-control icon fa-solid fa-ellipsis-vertical"
|
||||
{{#unless (and user.isGM hasCombat)}}disabled{{/unless}}></button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
81
templates/combat-tracker-v2.hbs
Normal file
81
templates/combat-tracker-v2.hbs
Normal file
@@ -0,0 +1,81 @@
|
||||
<ol class="combat-tracker plain">
|
||||
{{#each turns}}
|
||||
<li class="combatant {{ css }}" data-combatant-id="{{ id }}" data-action="activateCombatant">
|
||||
{{!-- TODO: Targets --}}
|
||||
|
||||
{{!-- Image --}}
|
||||
<img class="token-image" src="{{ img }}" alt="{{ name }}" loading="lazy">
|
||||
|
||||
{{!-- Name & Controls --}}
|
||||
<div class="token-name">
|
||||
<strong class="name">{{ name }}</strong>
|
||||
<div class="combatant-controls">
|
||||
{{#if @root.user.isGM}}
|
||||
<button type="button" class="inline-control combatant-control icon fa-solid fa-eye-slash {{#if hidden}}active{{/if}}"
|
||||
data-action="toggleHidden" data-tooltip aria-label="{{ localize "COMBAT.ToggleVis" }}"></button>
|
||||
<button type="button" class="inline-control combatant-control icon fa-solid fa-skull {{#if isDefeated}}active{{/if}}"
|
||||
data-action="toggleDefeated" data-tooltip
|
||||
aria-label="{{ localize "COMBAT.ToggleDead" }}"></button>
|
||||
{{/if}}
|
||||
{{#if canPing}}
|
||||
<button type="button" class="inline-control combatant-control icon fa-solid fa-bullseye-arrow"
|
||||
data-action="pingCombatant" data-tooltip
|
||||
aria-label="{{ localize "COMBAT.PingCombatant" }}"></button>
|
||||
{{/if}}
|
||||
{{#unless @root.user.isGM}}
|
||||
<button type="button" class="inline-control combatant-control icon fa-solid fa-arrows-to-eye"
|
||||
data-action="panToCombatant" data-tooltip
|
||||
aria-label="{{ localize "COMBAT.PanToCombatant" }}"></button>
|
||||
{{/unless}}
|
||||
{{!-- TODO: Target Control --}}
|
||||
<div class="token-effects" data-tooltip-html="{{ effects.tooltip }}">
|
||||
{{#each effects.icons}}
|
||||
<img class="token-effect" src="{{ img }}" alt="{{ name }}">
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{!-- Resource --}}
|
||||
{{#if resource includeZero=true}}
|
||||
<div class="token-resource">
|
||||
<span class="resource">{{ resource }}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{!-- Initiative --}}
|
||||
<div class="token-initiative initiative-area">
|
||||
{{#if initiative includeZero=true}}
|
||||
|
||||
{{!-- Decimal Initiative --}}
|
||||
{{#if @root.hasDecimals}}
|
||||
<span>{{ initiative }}</span>
|
||||
|
||||
{{!-- Simple Initiative --}}
|
||||
{{else}}
|
||||
<input type="text" class="initiative-input" inputmode="numeric" pattern="^[+=\-]?\d*" value="{{ initiative }}"
|
||||
aria-label="{{ localize "COMBAT.InitiativeScore" }}" {{#unless @root.user.isGM}}readonly{{/unless}}>
|
||||
|
||||
{{/if}}
|
||||
|
||||
{{#if isOwner}}
|
||||
<a data-action="initiativePlus" class="initiative-plus" data-combatant-id="{{this.id}}"><i class="fa-solid fa-hexagon-plus"></i></a>
|
||||
<a data-action="initiativeMinus" class="initiative-minus" data-combatant-id="{{this.id}}"><i class="fa-solid fa-hexagon-minus"></i></a>
|
||||
{{/if}}
|
||||
|
||||
{{#if isMonster}}
|
||||
<span class="initiative">-</span>
|
||||
{{else}}
|
||||
<span class="initiative" data-tooltip="Current max. progression counter">{{progressionCount}}</span>
|
||||
{{/if}}
|
||||
|
||||
{{!-- Roll Initiative --}}
|
||||
{{else if isOwner}}
|
||||
<button type="button" class="combatant-control roll" data-action="rollInitiative" data-tooltip
|
||||
aria-label="{{ localize "COMBAT.InitiativeRoll" }}"
|
||||
style="--initiative-icon: url('{{ @root.initiativeIcon.icon }}'); --initiative-icon-hover: url('{{ @root.initiativeIcon.hover }}');"></button>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
@@ -4,7 +4,7 @@
|
||||
<legend>{{localize "LETHALFANTASY.Label.combatDetails"}}</legend>
|
||||
<div class="combat-details">
|
||||
<div class="combat-detail">
|
||||
|
||||
|
||||
<button class="action" data-action="rangedAttackDefense">
|
||||
{{localize "LETHALFANTASY.Label.rangedAttackDefense"}}
|
||||
</button>
|
||||
@@ -21,6 +21,9 @@
|
||||
<div class="attacks">
|
||||
{{#each system.attacks as |item key|}}
|
||||
<div class="attack" data-attack-key="{{key}}" >
|
||||
<div class="">
|
||||
<input type="checkbox" name="system.attacks.{{item.key}}.enabled" value="{{item.enabled}}" data-tooltip="Attack enabled/disabled" />
|
||||
</div>
|
||||
<div class="name">
|
||||
<input type="text" name="system.attacks.{{item.key}}.name" value="{{item.name}}" data-tooltip="Attack name" />
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
|
||||
{{#if rollTarget.tokenId}}
|
||||
<div class="dialog-save">
|
||||
<a class="goto-token-button" data-action="gotoToken" data-token-id="{{rollTarget.tokenId}}">{{localize "LETHALFANTASY.Label.gotoToken"}} </a>
|
||||
<a class="goto-token-button" data-action="gotoToken" data-token-id="{{rollTarget.tokenId}}">{{localize
|
||||
"LETHALFANTASY.Label.gotoToken"}} </a>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
@@ -30,17 +31,26 @@
|
||||
|
||||
{{#if (match rollType "attack")}}
|
||||
<div class="dialog-save">Add Granted Attack Dice
|
||||
<input type="checkbox" data-action="selectGranted" name="granted" >
|
||||
<input type="checkbox" data-action="selectGranted" name="granted">
|
||||
</div>
|
||||
<div class="dialog-save">Point Blank Range Attack
|
||||
<input type="checkbox" data-action="selectPointBlank" name="pointBlank">
|
||||
</div>
|
||||
<div class="dialog-save">Beyond Skill Range Attack
|
||||
<input type="checkbox" data-action="selectBeyondSkill" name="beyondSkill">
|
||||
</div>
|
||||
<div class="dialog-save">Let it Fly (Pure D20E)
|
||||
<input type="checkbox" data-action="selectLetItFly" name="letItFly">
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if (match rollType "defense")}}
|
||||
<div class="dialog-save">Add Granted Defense Dice
|
||||
<input type="checkbox" data-action="selectGranted" name="granted" >
|
||||
<input type="checkbox" data-action="selectGranted" name="granted">
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if (match rollType "damage")}}
|
||||
<div class="dialog-save">Add Granted Damage Dice
|
||||
<input type="checkbox" data-action="selectGranted" name="granted" >
|
||||
<input type="checkbox" data-action="selectGranted" name="granted">
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
</div>
|
||||
|
||||
<div class="align-top">
|
||||
<label>Destruction</label>
|
||||
<!-- <label>Destruction</label>
|
||||
<div class="shift-right">
|
||||
{{formField systemFields.destruction.fields.bashing value=system.destruction.bashing}}
|
||||
{{formField systemFields.destruction.fields.slashing value=system.destruction.slashing}}
|
||||
@@ -41,7 +41,7 @@
|
||||
{{formField systemFields.autodestruction.fields.bashing value=system.autodestruction.bashing}}
|
||||
{{formField systemFields.autodestruction.fields.slashing value=system.autodestruction.slashing}}
|
||||
{{formField systemFields.autodestruction.fields.piercing value=system.autodestruction.piercing}}
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
{{formField systemFields.equipped value=system.equipped}}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user