3 Commits

Author SHA1 Message Date
e5653a4edc Latest modifications & changes
All checks were successful
Release Creation / build (release) Successful in 1m47s
2025-08-31 11:28:52 +02:00
527e33a805 Roll D12 for monsters, with enabled fields for attacks
All checks were successful
Release Creation / build (release) Successful in 1m22s
2025-06-10 20:37:46 +02:00
b5857cb3b7 Various fixes for v13
All checks were successful
Release Creation / build (release) Successful in 53s
2025-06-05 16:14:25 +02:00
38 changed files with 618 additions and 320 deletions

View File

@@ -83,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);
@@ -95,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;
@@ -112,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);
@@ -730,6 +756,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);
@@ -1200,6 +1232,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 {
@@ -1244,6 +1283,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);
@@ -1253,10 +1313,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;
@@ -1286,6 +1342,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 {
@@ -1330,6 +1393,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);
@@ -1339,10 +1423,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;
@@ -1372,6 +1452,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 {
@@ -1416,6 +1503,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);
@@ -1425,10 +1533,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;
@@ -1450,6 +1554,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 {
@@ -1494,6 +1605,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);
@@ -1503,10 +1635,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;
@@ -1528,6 +1656,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 {
@@ -1572,6 +1707,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);
@@ -1581,10 +1737,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;
@@ -1606,6 +1758,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 {
@@ -1650,6 +1809,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);
@@ -1659,10 +1839,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;
@@ -1730,6 +1906,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 {
@@ -1774,6 +1957,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);
@@ -1783,10 +1987,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;
@@ -1808,6 +2008,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 {
@@ -1852,6 +2059,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);
@@ -1861,10 +2089,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;
@@ -1886,6 +2110,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 {
@@ -1930,6 +2161,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);
@@ -1939,10 +2191,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;
@@ -2119,8 +2367,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;
}

View File

@@ -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)
})
}

View File

@@ -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
}
}

View File

@@ -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: "Halflings", 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 = `

View File

@@ -124,6 +124,8 @@ export default class LethalFantasyRoll extends Roll {
let hasFavor = false
let hasMaxValue = true
let hasGrantedDice = false
let pointBlank = false
let beyondSkill = false
let hasStaticModifier = false
let hasExplode = true
@@ -132,13 +134,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 +148,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 +157,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 +170,26 @@ 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
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 +211,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 +228,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 +264,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 +274,6 @@ export default class LethalFantasyRoll extends Roll {
dice = options.rollTarget.damageDice
dice = dice.replace("E", "")
baseFormula = dice
maxValue = 20
}
@@ -317,6 +308,7 @@ export default class LethalFantasyRoll extends Roll {
hasModifier,
hasFavor,
hasChangeDice,
pointBlank,
baseValue: options.rollTarget.value,
changeDice: `${dice}`,
fieldRollMode,
@@ -359,7 +351,13 @@ 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
},
"gotoToken": (event, button, dialog) => {
let tokenId = $(button).data("tokenId")
let token = canvas.tokens?.get(tokenId)
if (token) {
@@ -387,12 +385,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 +409,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
@@ -769,7 +771,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 +915,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 +937,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 +970,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 +981,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

View File

@@ -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))
@@ -245,11 +247,11 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
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 }) })
}
}
}

View File

@@ -1 +1 @@
MANIFEST-000348
MANIFEST-000380

View File

@@ -1,8 +1,8 @@
2025/05/29-16:36:11.138560 7f53e4df86c0 Recovering log #346
2025/05/29-16:36:11.150394 7f53e4df86c0 Delete type=3 #344
2025/05/29-16:36:11.150472 7f53e4df86c0 Delete type=0 #346
2025/05/29-18:48:12.764595 7f53df3ff6c0 Level-0 table #351: started
2025/05/29-18:48:12.764652 7f53df3ff6c0 Level-0 table #351: 0 bytes OK
2025/05/29-18:48:12.777058 7f53df3ff6c0 Delete type=0 #349
2025/05/29-18:48:12.800778 7f53df3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/05/29-18:48:12.800877 7f53df3ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/08/31-11:02:02.192092 7facb3fff6c0 Recovering log #378
2025/08/31-11:02:02.202398 7facb3fff6c0 Delete type=3 #376
2025/08/31-11:02:02.202444 7facb3fff6c0 Delete type=0 #378
2025/08/31-11:28:03.032642 7facb27ff6c0 Level-0 table #383: started
2025/08/31-11:28:03.032856 7facb27ff6c0 Level-0 table #383: 0 bytes OK
2025/08/31-11:28:03.039646 7facb27ff6c0 Delete type=0 #381
2025/08/31-11:28:03.047372 7facb27ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/08/31-11:28:03.047539 7facb27ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/05/22-18:45:28.754313 7f53737fe6c0 Recovering log #342
2025/05/22-18:45:28.804653 7f53737fe6c0 Delete type=3 #340
2025/05/22-18:45:28.804783 7f53737fe6c0 Delete type=0 #342
2025/05/22-19:43:04.046497 7f53723ff6c0 Level-0 table #347: started
2025/05/22-19:43:04.046522 7f53723ff6c0 Level-0 table #347: 0 bytes OK
2025/05/22-19:43:04.084205 7f53723ff6c0 Delete type=0 #345
2025/05/22-19:43:04.153359 7f53723ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/05/22-19:43:04.153400 7f53723ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/08/30-18:23:53.067582 7facb3fff6c0 Recovering log #374
2025/08/30-18:23:53.077306 7facb3fff6c0 Delete type=3 #372
2025/08/30-18:23:53.077503 7facb3fff6c0 Delete type=0 #374
2025/08/30-18:45:52.226055 7facb27ff6c0 Level-0 table #379: started
2025/08/30-18:45:52.226081 7facb27ff6c0 Level-0 table #379: 0 bytes OK
2025/08/30-18:45:52.233470 7facb27ff6c0 Delete type=0 #377
2025/08/30-18:45:52.233679 7facb27ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/08/30-18:45:52.233706 7facb27ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000347
MANIFEST-000379

View File

@@ -1,8 +1,8 @@
2025/05/29-16:36:11.158130 7f53e5dfa6c0 Recovering log #345
2025/05/29-16:36:11.168794 7f53e5dfa6c0 Delete type=3 #343
2025/05/29-16:36:11.168968 7f53e5dfa6c0 Delete type=0 #345
2025/05/29-18:48:12.777345 7f53df3ff6c0 Level-0 table #350: started
2025/05/29-18:48:12.777387 7f53df3ff6c0 Level-0 table #350: 0 bytes OK
2025/05/29-18:48:12.788225 7f53df3ff6c0 Delete type=0 #348
2025/05/29-18:48:12.800802 7f53df3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/05/29-18:48:12.800914 7f53df3ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/08/31-11:02:02.206543 7facb37fe6c0 Recovering log #377
2025/08/31-11:02:02.215835 7facb37fe6c0 Delete type=3 #375
2025/08/31-11:02:02.215878 7facb37fe6c0 Delete type=0 #377
2025/08/31-11:28:03.017058 7facb27ff6c0 Level-0 table #382: started
2025/08/31-11:28:03.017435 7facb27ff6c0 Level-0 table #382: 0 bytes OK
2025/08/31-11:28:03.023891 7facb27ff6c0 Delete type=0 #380
2025/08/31-11:28:03.047213 7facb27ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/08/31-11:28:03.047451 7facb27ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/05/22-18:45:28.835173 7f5373fff6c0 Recovering log #341
2025/05/22-18:45:28.894795 7f5373fff6c0 Delete type=3 #339
2025/05/22-18:45:28.894867 7f5373fff6c0 Delete type=0 #341
2025/05/22-19:43:04.009442 7f53723ff6c0 Level-0 table #346: started
2025/05/22-19:43:04.009522 7f53723ff6c0 Level-0 table #346: 0 bytes OK
2025/05/22-19:43:04.046375 7f53723ff6c0 Delete type=0 #344
2025/05/22-19:43:04.153344 7f53723ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/05/22-19:43:04.153392 7f53723ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/08/30-18:23:53.081675 7facb91fa6c0 Recovering log #373
2025/08/30-18:23:53.092658 7facb91fa6c0 Delete type=3 #371
2025/08/30-18:23:53.092710 7facb91fa6c0 Delete type=0 #373
2025/08/30-18:45:52.213593 7facb27ff6c0 Level-0 table #378: started
2025/08/30-18:45:52.213631 7facb27ff6c0 Level-0 table #378: 0 bytes OK
2025/08/30-18:45:52.219786 7facb27ff6c0 Delete type=0 #376
2025/08/30-18:45:52.233655 7facb27ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/08/30-18:45:52.233694 7facb27ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000347
MANIFEST-000379

View File

@@ -1,8 +1,8 @@
2025/05/29-16:36:11.123463 7f53e55f96c0 Recovering log #345
2025/05/29-16:36:11.133586 7f53e55f96c0 Delete type=3 #343
2025/05/29-16:36:11.133663 7f53e55f96c0 Delete type=0 #345
2025/05/29-18:48:12.753680 7f53df3ff6c0 Level-0 table #350: started
2025/05/29-18:48:12.753732 7f53df3ff6c0 Level-0 table #350: 0 bytes OK
2025/05/29-18:48:12.764334 7f53df3ff6c0 Delete type=0 #348
2025/05/29-18:48:12.800724 7f53df3ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/05/29-18:48:12.800854 7f53df3ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/08/31-11:02:02.179303 7facb91fa6c0 Recovering log #377
2025/08/31-11:02:02.189376 7facb91fa6c0 Delete type=3 #375
2025/08/31-11:02:02.189457 7facb91fa6c0 Delete type=0 #377
2025/08/31-11:28:03.039915 7facb27ff6c0 Level-0 table #382: started
2025/08/31-11:28:03.039961 7facb27ff6c0 Level-0 table #382: 0 bytes OK
2025/08/31-11:28:03.046598 7facb27ff6c0 Delete type=0 #380
2025/08/31-11:28:03.047412 7facb27ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/08/31-11:28:03.047575 7facb27ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/05/22-18:45:28.668409 7f5378bfa6c0 Recovering log #341
2025/05/22-18:45:28.725273 7f5378bfa6c0 Delete type=3 #339
2025/05/22-18:45:28.725349 7f5378bfa6c0 Delete type=0 #341
2025/05/22-19:43:04.084321 7f53723ff6c0 Level-0 table #346: started
2025/05/22-19:43:04.084343 7f53723ff6c0 Level-0 table #346: 0 bytes OK
2025/05/22-19:43:04.122081 7f53723ff6c0 Delete type=0 #344
2025/05/22-19:43:04.153372 7f53723ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/05/22-19:43:04.153416 7f53723ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/08/30-18:23:53.054593 7facb89f96c0 Recovering log #373
2025/08/30-18:23:53.065011 7facb89f96c0 Delete type=3 #371
2025/08/30-18:23:53.065091 7facb89f96c0 Delete type=0 #373
2025/08/30-18:45:52.219947 7facb27ff6c0 Level-0 table #378: started
2025/08/30-18:45:52.219975 7facb27ff6c0 Level-0 table #378: 0 bytes OK
2025/08/30-18:45:52.225942 7facb27ff6c0 Delete type=0 #376
2025/08/30-18:45:52.233667 7facb27ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/08/30-18:45:52.233700 7facb27ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000047
MANIFEST-000079

View File

@@ -1,8 +1,8 @@
2025/05/29-16:36:11.187985 7f53e4df86c0 Recovering log #45
2025/05/29-16:36:11.199498 7f53e4df86c0 Delete type=3 #43
2025/05/29-16:36:11.199566 7f53e4df86c0 Delete type=0 #45
2025/05/29-18:48:12.801134 7f53df3ff6c0 Level-0 table #50: started
2025/05/29-18:48:12.801185 7f53df3ff6c0 Level-0 table #50: 0 bytes OK
2025/05/29-18:48:12.810101 7f53df3ff6c0 Delete type=0 #48
2025/05/29-18:48:12.859825 7f53df3ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/05/29-18:48:12.859922 7f53df3ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/08/31-11:02:02.230091 7facb3fff6c0 Recovering log #77
2025/08/31-11:02:02.240519 7facb3fff6c0 Delete type=3 #75
2025/08/31-11:02:02.240600 7facb3fff6c0 Delete type=0 #77
2025/08/31-11:28:03.047734 7facb27ff6c0 Level-0 table #82: started
2025/08/31-11:28:03.047973 7facb27ff6c0 Level-0 table #82: 0 bytes OK
2025/08/31-11:28:03.055122 7facb27ff6c0 Delete type=0 #80
2025/08/31-11:28:03.086906 7facb27ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/08/31-11:28:03.086956 7facb27ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/05/22-18:45:28.985810 7f5372ffd6c0 Recovering log #41
2025/05/22-18:45:29.040662 7f5372ffd6c0 Delete type=3 #39
2025/05/22-18:45:29.040742 7f5372ffd6c0 Delete type=0 #41
2025/05/22-19:43:04.281148 7f53723ff6c0 Level-0 table #46: started
2025/05/22-19:43:04.281205 7f53723ff6c0 Level-0 table #46: 0 bytes OK
2025/05/22-19:43:04.315875 7f53723ff6c0 Delete type=0 #44
2025/05/22-19:43:04.316126 7f53723ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/05/22-19:43:04.366588 7f53723ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/08/30-18:23:53.106927 7facb3fff6c0 Recovering log #73
2025/08/30-18:23:53.116922 7facb3fff6c0 Delete type=3 #71
2025/08/30-18:23:53.116996 7facb3fff6c0 Delete type=0 #73
2025/08/30-18:45:52.206763 7facb27ff6c0 Level-0 table #78: started
2025/08/30-18:45:52.206840 7facb27ff6c0 Level-0 table #78: 0 bytes OK
2025/08/30-18:45:52.213448 7facb27ff6c0 Delete type=0 #76
2025/08/30-18:45:52.233641 7facb27ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/08/30-18:45:52.233688 7facb27ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000347
MANIFEST-000379

View File

@@ -1,8 +1,8 @@
2025/05/29-16:36:11.172412 7f53e55f96c0 Recovering log #345
2025/05/29-16:36:11.183464 7f53e55f96c0 Delete type=3 #343
2025/05/29-16:36:11.183540 7f53e55f96c0 Delete type=0 #345
2025/05/29-18:48:12.788378 7f53df3ff6c0 Level-0 table #350: started
2025/05/29-18:48:12.788406 7f53df3ff6c0 Level-0 table #350: 0 bytes OK
2025/05/29-18:48:12.800425 7f53df3ff6c0 Delete type=0 #348
2025/05/29-18:48:12.800827 7f53df3ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/05/29-18:48:12.800943 7f53df3ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/08/31-11:02:02.217898 7facb91fa6c0 Recovering log #377
2025/08/31-11:02:02.227818 7facb91fa6c0 Delete type=3 #375
2025/08/31-11:02:02.227879 7facb91fa6c0 Delete type=0 #377
2025/08/31-11:28:03.024048 7facb27ff6c0 Level-0 table #382: started
2025/08/31-11:28:03.024094 7facb27ff6c0 Level-0 table #382: 0 bytes OK
2025/08/31-11:28:03.032021 7facb27ff6c0 Delete type=0 #380
2025/08/31-11:28:03.047310 7facb27ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/08/31-11:28:03.047492 7facb27ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/05/22-18:45:28.912541 7f5378bfa6c0 Recovering log #341
2025/05/22-18:45:28.969080 7f5378bfa6c0 Delete type=3 #339
2025/05/22-18:45:28.969151 7f5378bfa6c0 Delete type=0 #341
2025/05/22-19:43:04.122198 7f53723ff6c0 Level-0 table #346: started
2025/05/22-19:43:04.122219 7f53723ff6c0 Level-0 table #346: 0 bytes OK
2025/05/22-19:43:04.153184 7f53723ff6c0 Delete type=0 #344
2025/05/22-19:43:04.153383 7f53723ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/05/22-19:43:04.153407 7f53723ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/08/30-18:23:53.094395 7facb89f96c0 Recovering log #373
2025/08/30-18:23:53.104578 7facb89f96c0 Delete type=3 #371
2025/08/30-18:23:53.104646 7facb89f96c0 Delete type=0 #373
2025/08/30-18:45:52.233837 7facb27ff6c0 Level-0 table #378: started
2025/08/30-18:45:52.233866 7facb27ff6c0 Level-0 table #378: 0 bytes OK
2025/08/30-18:45:52.239911 7facb27ff6c0 Delete type=0 #376
2025/08/30-18:45:52.263164 7facb27ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/08/30-18:45:52.263199 7facb27ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)

View File

@@ -4,6 +4,7 @@
overflow: scroll;
}
.character-main {
display: flex;

View File

@@ -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;
}

View File

@@ -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;
}
}
}

View File

@@ -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"}}
&nbsp;/&nbsp;
{{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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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,23 @@
{{#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">Beyon Skill Range Attack
<input type="checkbox" data-action="selectBeyondSkill" name="beyondSkill">
</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}}