diff --git a/css/fvtt-lethal-fantasy.css b/css/fvtt-lethal-fantasy.css index 150f81c..e7d0f25 100644 --- a/css/fvtt-lethal-fantasy.css +++ b/css/fvtt-lethal-fantasy.css @@ -8,7 +8,7 @@ } :root { --font-primary: "TimesNewRoman", serif; - --font-size-standard: 0.9rem; + --font-size-standard: 0.8rem; --background-image-base: url("../assets/ui/lethal_fantasy_background.webp"); --font-secondary: "BaskervilleBold", serif; --logo-standard: url("../assets/ui/lf_logo_small_02.webp"); @@ -65,7 +65,7 @@ i.lethalfantasy { font-size: calc(var(--font-size-standard) * 1.2); } .lethalfantasy .item-sheet-common .form-fields { - padding-top: 5px; + padding-top: 4px; } .lethalfantasy .item-sheet-common label { font-family: var(--font-secondary); @@ -101,21 +101,22 @@ i.lethalfantasy { } .lethalfantasy .character-content input, .lethalfantasy .character-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .character-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .character-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .character-content .form-fields input, .lethalfantasy .character-content .form-fields select { @@ -145,7 +146,8 @@ i.lethalfantasy { flex: 1; } .lethalfantasy .character-main .character-pc .character-left { - min-width: 180px; + min-width: 220px; + max-width: 220px; display: flex; flex-direction: column; } @@ -153,53 +155,27 @@ i.lethalfantasy { display: flex; justify-content: center; align-items: center; - padding-bottom: 20px; + padding-bottom: 8px; } .lethalfantasy .character-main .character-pc .character-left .character-left-image .character-img { height: 140px; + width: 140px; width: auto; border: none; } -.lethalfantasy .character-main .character-pc .character-left .character-hp-edit input { - display: flex; - width: 60px; - font-size: calc(var(--font-size-standard) * 1.4); - align-items: center; - justify-content: center; - padding: 0 5px 0 5px; - text-align: center; -} -.lethalfantasy .character-main .character-pc .character-right { - display: flex; - flex-direction: column; - gap: 5px; -} -.lethalfantasy .character-main .character-pc .character-right .character-name { - display: flex; -} -.lethalfantasy .character-main .character-pc .character-right .character-name input { - width: 400px; -} -.lethalfantasy .character-main .character-pc .character-right .character-infos { - display: flex; - flex-direction: column; - gap: 10px; -} -.lethalfantasy .character-main .character-pc .character-right .character-infos label { - min-width: 120px; -} -.lethalfantasy .character-main .character-pc .character-right .character-infos .character-hp { +.lethalfantasy .character-main .character-pc .character-left .character-hp { display: flex; gap: 2px; align-items: center; } -.lethalfantasy .character-main .character-pc .character-right .character-infos .character-hp .character-hp-value .form-fields input { +.lethalfantasy .character-main .character-pc .character-left .character-hp .character-hp-value .form-fields input { flex: none; - width: 50px; + min-width: 3rem; + max-width: 3rem; margin-left: 10px; font-size: calc(var(--font-size-standard) * 1.4); } -.lethalfantasy .character-main .character-pc .character-right .character-infos .character-hp .character-hp-max { +.lethalfantasy .character-main .character-pc .character-left .character-hp .character-hp-max { clear: both; display: flex; flex-direction: row; @@ -207,27 +183,32 @@ i.lethalfantasy { margin: 3px 0; align-items: center; } -.lethalfantasy .character-main .character-pc .character-right .character-infos .character-hp .character-hp-max input { +.lethalfantasy .character-main .character-pc .character-left .character-hp .character-hp-max input { width: 50px; text-align: center; font-size: calc(var(--font-size-standard) * 1.4); } -.lethalfantasy .character-main .character-pc .character-right .character-infos .character-hp .hp-separator { - font-size: calc(var(--font-size-standard) * 1.2); +.lethalfantasy .character-main .character-pc .character-right { display: flex; - align-items: center; - justify-content: center; + flex-direction: column; + gap: 4px; +} +.lethalfantasy .character-main .character-pc .character-right .character-name { + display: flex; +} +.lethalfantasy .character-main .character-pc .character-right .character-name input { + width: 400px; } .lethalfantasy .character-main .character-pc-play { - min-width: 500px; + min-width: 400px; } .lethalfantasy .character-main .character-pc-edit { - min-width: 650px; + min-width: 400px; } .lethalfantasy .character-main .character-characteristics { display: flex; flex-direction: column; - gap: 5px; + gap: 4px; flex: 1; } .lethalfantasy .character-main .character-characteristics .character-characteristic { @@ -241,22 +222,22 @@ i.lethalfantasy { } .lethalfantasy .character-main .character-characteristics .character-characteristic .form-group { flex: 1; - padding-left: 5px; + padding-left: 4px; } .lethalfantasy .character-main .character-characteristics .character-characteristic .form-group .form-fields { flex: none; - width: 70px; + width: 3rem; } .lethalfantasy .character-main .character-challenges { display: flex; flex-direction: column; - gap: 5px; + gap: 4px; flex: 1; } .lethalfantasy .character-main .character-challenges .character-challenge { display: flex; align-items: center; - margin-right: 1rem; + margin-right: 0.5rem; } .lethalfantasy .character-main .character-challenges .character-challenge .rollable:hover, .lethalfantasy .character-main .character-challenges .character-challenge .rollable:focus { @@ -270,7 +251,7 @@ i.lethalfantasy { } .lethalfantasy .character-main .character-challenges .character-challenge .form-group { flex: 1; - padding-left: 5px; + padding-left: 4px; } .lethalfantasy .character-main .character-challenges .character-challenge .form-group .form-fields { flex: none; @@ -279,13 +260,13 @@ i.lethalfantasy { .lethalfantasy .character-main .character-movements { display: flex; flex-direction: column; - gap: 5px; + gap: 4px; flex: 1; } .lethalfantasy .character-main .character-movements .character-movement { display: flex; align-items: center; - margin-right: 1rem; + margin-right: 0.5rem; } .lethalfantasy .character-main .character-movements .character-movement .rollable:hover, .lethalfantasy .character-main .character-movements .character-movement .rollable:focus { @@ -299,7 +280,7 @@ i.lethalfantasy { } .lethalfantasy .character-main .character-movements .character-movement .form-group { flex: 1; - padding-left: 5px; + padding-left: 4px; } .lethalfantasy .character-main .character-movements .character-movement .form-group .form-fields { flex: none; @@ -308,13 +289,13 @@ i.lethalfantasy { .lethalfantasy .character-main .character-saves { display: flex; flex-direction: column; - gap: 5px; + gap: 4px; flex: 1; } .lethalfantasy .character-main .character-saves .character-save { display: flex; align-items: center; - margin-right: 0.2rem; + margin-right: 0.5rem; } .lethalfantasy .character-main .character-saves .character-save .rollable:hover, .lethalfantasy .character-main .character-saves .character-save .rollable:focus { @@ -325,17 +306,17 @@ i.lethalfantasy { flex: 0; min-width: 5rem; max-width: 5rem; - margin-left: 0.7rem; + margin-left: 0.5rem; } .lethalfantasy .character-main .character-saves .character-save .name-pain { flex: 0; min-width: 3rem; max-width: 3rem; - margin-left: 0.7rem; + margin-left: 0.5rem; } .lethalfantasy .character-main .character-saves .character-save .form-group { flex: 0; - padding-left: 5px; + padding-left: 4px; } .lethalfantasy .character-main .character-saves .character-save .form-group .form-fields { flex: none; @@ -347,72 +328,20 @@ i.lethalfantasy { .lethalfantasy .character-main .character-characteristic-edit { min-width: 400px; } -.lethalfantasy .character-main .character-resources { - display: flex; - flex-direction: column; - gap: 5px; - flex: 1; -} -.lethalfantasy .character-main .character-resources .character-resource { - display: flex; - align-items: center; -} -.lethalfantasy .character-main .character-resources .character-resource .rollable:hover, -.lethalfantasy .character-main .character-resources .character-resource .rollable:focus { - text-shadow: 0 0 8px var(--color-shadow-primary); - cursor: pointer; -} -.lethalfantasy .character-main .character-resources .character-resource .form-group { - flex: 1; - padding-left: 5px; -} -.lethalfantasy .character-main .character-resources .character-resource .form-group .form-fields { - flex: none; - width: 70px; -} -.lethalfantasy .character-main .character-resources .character-resource .character-resource-edit { - display: flex; - align-items: center; - gap: 10px; - margin-left: 10px; -} -.lethalfantasy .character-main .character-resources .character-resource .character-resource-edit input { - display: flex; - width: 70px; - font-size: calc(var(--font-size-standard) * 1.4); - align-items: center; - justify-content: center; - padding: 0 5px 0 5px; -} -.lethalfantasy .character-main .character-resources .character-resource .character-resource-edit input[type="number"] { - text-align: center; -} -.lethalfantasy .character-main .character-resources .character-resource .character-resource-edit select { - font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1.5); - text-align: center; - width: 75px; -} -.lethalfantasy .character-main .character-resources-play { - min-width: 235px; -} -.lethalfantasy .character-main .character-resources-edit { - min-width: 400px; -} .lethalfantasy .tab.character-biography .biodata { display: grid; grid-template-columns: repeat(4, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-biography .biodata .biodata-elem { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-biography .biodata .biodata-elem .item-img { - width: 32px; - height: 32px; - margin: 5px 0 0 0; + width: 24px; + height: 24px; + margin: 4px 0 0 0; } .lethalfantasy .tab.character-biography .biodata .biodata-elem .name { min-width: 8rem; @@ -429,21 +358,21 @@ i.lethalfantasy { } .lethalfantasy .tab.character-skills legend a { font-size: calc(var(--font-size-standard) * 1); - padding-left: 5px; + padding-left: 4px; } .lethalfantasy .tab.character-skills .skills { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-skills .skills .skill { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-skills .skills .skill .item-img { - width: 32px; - height: 32px; + width: 24px; + height: 24px; } .lethalfantasy .tab.character-skills .skills .skill .name { min-width: 12rem; @@ -451,16 +380,16 @@ i.lethalfantasy { .lethalfantasy .tab.character-skills .gifts { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-skills .gifts .gift { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-skills .gifts .gift .item-img { - width: 32px; - height: 32px; + width: 24px; + height: 24px; } .lethalfantasy .tab.character-skills .gifts .gift .name { min-width: 12rem; @@ -468,16 +397,16 @@ i.lethalfantasy { .lethalfantasy .tab.character-skills .vulnerabilities { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-skills .vulnerabilities .vulnerability { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-skills .vulnerabilities .vulnerability .item-img { - width: 32px; - height: 32px; + width: 24px; + height: 24px; } .lethalfantasy .tab.character-skills .vulnerabilities .vulnerability .name { min-width: 12rem; @@ -488,27 +417,27 @@ i.lethalfantasy { } .lethalfantasy .tab.character-equipment legend a { font-size: calc(var(--font-size-standard) * 1.4); - padding-left: 5px; + padding-left: 4px; } .lethalfantasy .tab.character-equipment .moneys { display: grid; grid-template-columns: repeat(5, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-equipment .equipments { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-equipment .equipments .equipment { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-equipment .equipments .equipment .item-img { - width: 32px; - height: 32px; - margin: 5px 0 0 0; + width: 24px; + height: 24px; + margin: 4px 0 0 0; } .lethalfantasy .tab.character-equipment .equipments .equipment .name { min-width: 12rem; @@ -522,17 +451,20 @@ i.lethalfantasy { } .lethalfantasy .tab.character-combat legend a { font-size: calc(var(--font-size-standard) * 1.4); - padding-left: 5px; + padding-left: 4px; } .lethalfantasy .tab.character-combat .combat-details { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-combat .combat-details .combat-detail { display: flex; align-items: center; - gap: 10px; + gap: 4px; +} +.lethalfantasy .tab.character-combat .combat-details .combat-detail button { + min-width: 10rem; } .lethalfantasy .tab.character-combat .combat-details .combat-detail .armor-hp { min-width: 20rem; @@ -545,12 +477,12 @@ i.lethalfantasy { .lethalfantasy .tab.character-combat .wounds { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-combat .wounds .wound { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-combat .wounds .wound .wound-description { min-width: 16rem; @@ -565,9 +497,9 @@ i.lethalfantasy { max-width: 3rem; } .lethalfantasy .tab.character-combat .wounds .wound .item-img { - width: 32px; - height: 32px; - margin: 5px 0 0 0; + width: 24px; + height: 24px; + margin: 4px 0 0 0; } .lethalfantasy .tab.character-combat .wounds .wound .name { min-width: 12rem; @@ -575,17 +507,17 @@ i.lethalfantasy { .lethalfantasy .tab.character-combat .weapons { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-combat .weapons .weapon { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-combat .weapons .weapon .item-img { - width: 32px; - height: 32px; - margin: 5px 0 0 0; + width: 24px; + height: 24px; + margin: 4px 0 0 0; } .lethalfantasy .tab.character-combat .weapons .weapon .name { min-width: 12rem; @@ -597,17 +529,17 @@ i.lethalfantasy { .lethalfantasy .tab.character-combat .armors { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-combat .armors .armor { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-combat .armors .armor .item-img { - width: 32px; - height: 32px; - margin: 5px 0 0 0; + width: 24px; + height: 24px; + margin: 4px 0 0 0; } .lethalfantasy .tab.character-combat .armors .name { min-width: 12rem; @@ -618,21 +550,21 @@ i.lethalfantasy { } .lethalfantasy .tab.character-spells legend a { font-size: calc(var(--font-size-standard) * 1.4); - padding-left: 5px; + padding-left: 4px; } .lethalfantasy .tab.character-spells .spells { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-spells .spells .spell { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-spells .spells .spell .item-img { - width: 32px; - height: 32px; + width: 24px; + height: 24px; } .lethalfantasy .tab.character-spells .spells .spell .name { min-width: 12rem; @@ -649,21 +581,21 @@ i.lethalfantasy { } .lethalfantasy .tab.character-miracles legend a { font-size: calc(var(--font-size-standard) * 1.4); - padding-left: 5px; + padding-left: 4px; } .lethalfantasy .tab.character-miracles .miracles { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-miracles .miracles .miracle { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .lethalfantasy .tab.character-miracles .miracles .miracle .item-img { - width: 32px; - height: 32px; + width: 24px; + height: 24px; } .lethalfantasy .tab.character-miracles .miracles .miracle .name { min-width: 12rem; @@ -691,21 +623,22 @@ i.lethalfantasy { } .lethalfantasy .opponent-content input, .lethalfantasy .opponent-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .opponent-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .opponent-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .opponent-content .form-fields input, .lethalfantasy .opponent-content .form-fields select { @@ -805,21 +738,22 @@ i.lethalfantasy { } .lethalfantasy .skill-content input, .lethalfantasy .skill-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .skill-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .skill-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .skill-content .form-fields input, .lethalfantasy .skill-content .form-fields select { @@ -837,7 +771,7 @@ i.lethalfantasy { letter-spacing: 1px; } .lethalfantasy .skill-content .form-fields { - padding-top: 5px; + padding-top: 4px; } .lethalfantasy .skill-content label { font-family: var(--font-secondary); @@ -890,21 +824,22 @@ i.lethalfantasy { } .lethalfantasy .gift-content input, .lethalfantasy .gift-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .gift-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .gift-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .gift-content .form-fields input, .lethalfantasy .gift-content .form-fields select { @@ -922,7 +857,7 @@ i.lethalfantasy { letter-spacing: 1px; } .lethalfantasy .gift-content .form-fields { - padding-top: 5px; + padding-top: 4px; } .lethalfantasy .gift-content label { font-family: var(--font-secondary); @@ -975,21 +910,22 @@ i.lethalfantasy { } .lethalfantasy .weapon-content input, .lethalfantasy .weapon-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .weapon-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .weapon-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .weapon-content .form-fields input, .lethalfantasy .weapon-content .form-fields select { @@ -1007,7 +943,7 @@ i.lethalfantasy { letter-spacing: 1px; } .lethalfantasy .weapon-content .form-fields { - padding-top: 5px; + padding-top: 4px; } .lethalfantasy .weapon-content label { font-family: var(--font-secondary); @@ -1052,21 +988,22 @@ i.lethalfantasy { } .lethalfantasy .armor-content input, .lethalfantasy .armor-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .armor-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .armor-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .armor-content .form-fields input, .lethalfantasy .armor-content .form-fields select { @@ -1084,7 +1021,7 @@ i.lethalfantasy { letter-spacing: 1px; } .lethalfantasy .armor-content .form-fields { - padding-top: 5px; + padding-top: 4px; } .lethalfantasy .armor-content label { font-family: var(--font-secondary); @@ -1129,21 +1066,22 @@ i.lethalfantasy { } .lethalfantasy .spell-content input, .lethalfantasy .spell-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .spell-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .spell-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .spell-content .form-fields input, .lethalfantasy .spell-content .form-fields select { @@ -1161,7 +1099,7 @@ i.lethalfantasy { letter-spacing: 1px; } .lethalfantasy .spell-content .form-fields { - padding-top: 5px; + padding-top: 4px; } .lethalfantasy .spell-content label { font-family: var(--font-secondary); @@ -1206,21 +1144,22 @@ i.lethalfantasy { } .lethalfantasy .vulnerability-content input, .lethalfantasy .vulnerability-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .vulnerability-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .vulnerability-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .vulnerability-content .form-fields input, .lethalfantasy .vulnerability-content .form-fields select { @@ -1238,7 +1177,7 @@ i.lethalfantasy { letter-spacing: 1px; } .lethalfantasy .vulnerability-content .form-fields { - padding-top: 5px; + padding-top: 4px; } .lethalfantasy .vulnerability-content label { font-family: var(--font-secondary); @@ -1329,21 +1268,22 @@ i.lethalfantasy { } .lethalfantasy .equipment-content input, .lethalfantasy .equipment-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .equipment-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .equipment-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .equipment-content .form-fields input, .lethalfantasy .equipment-content .form-fields select { @@ -1361,7 +1301,7 @@ i.lethalfantasy { letter-spacing: 1px; } .lethalfantasy .equipment-content .form-fields { - padding-top: 5px; + padding-top: 4px; } .lethalfantasy .equipment-content label { font-family: var(--font-secondary); @@ -1406,21 +1346,22 @@ i.lethalfantasy { } .lethalfantasy .shield-content input, .lethalfantasy .shield-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .shield-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .shield-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .shield-content .form-fields input, .lethalfantasy .shield-content .form-fields select { @@ -1438,7 +1379,7 @@ i.lethalfantasy { letter-spacing: 1px; } .lethalfantasy .shield-content .form-fields { - padding-top: 5px; + padding-top: 4px; } .lethalfantasy .shield-content label { font-family: var(--font-secondary); @@ -1483,21 +1424,22 @@ i.lethalfantasy { } .lethalfantasy .miracle-content input, .lethalfantasy .miracle-content select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } .lethalfantasy .miracle-content input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } .lethalfantasy .miracle-content fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .lethalfantasy .miracle-content .form-fields input, .lethalfantasy .miracle-content .form-fields select { @@ -1515,7 +1457,7 @@ i.lethalfantasy { letter-spacing: 1px; } .lethalfantasy .miracle-content .form-fields { - padding-top: 5px; + padding-top: 4px; } .lethalfantasy .miracle-content label { font-family: var(--font-secondary); diff --git a/lang/en.json b/lang/en.json index 0260a18..327203d 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1,4 +1,9 @@ { + "COMBAT": { + "Round": "Second", + "Rounds": "Seconds", + "RoundNext": "Next second" + }, "LETHALFANTASY": { "Armor": { "Category": { @@ -178,7 +183,10 @@ } }, "Label": { + "initiative": "Initiative", + "maxInitiativeWisdom": "Max initiative (from wisdom)", "combat": "Combat", + "rollInitiative": "Roll initiative", "money": "Money", "favorResult": "Favor result", "disfavorResult": "Disfavor result", @@ -233,7 +241,10 @@ "jog": "Jog", "run": "Run", "sprint": "Sprint", - "walk": "Walk" + "walk": "Walk", + "jumpBroad": "Broad jump", + "jumpRunning": "Running jump", + "jumpVertical": "Vertical jump" }, "newArmor": "New armor", "newWeapon": "New weapon", diff --git a/lethal-fantasy.mjs b/lethal-fantasy.mjs index 025f692..d7412f2 100644 --- a/lethal-fantasy.mjs +++ b/lethal-fantasy.mjs @@ -11,6 +11,7 @@ import * as models from "./module/models/_module.mjs" import * as documents from "./module/documents/_module.mjs" import * as applications from "./module/applications/_module.mjs" +import { LethalFantasyCombatTracker, LethalFantasyCombat} from "./module/applications/combat.mjs" import { handleSocketEvent } from "./module/socket.mjs" import { Macros } from "./module/macros.mjs" import { initControlButtons } from "./module/control-buttons.mjs" @@ -33,6 +34,9 @@ Hooks.once("init", function () { documents, } + CONFIG.ui.combat = LethalFantasyCombatTracker + CONFIG.Combat.documentClass = LethalFantasyCombat; + CONFIG.Actor.documentClass = documents.LethalFantasyActor CONFIG.Actor.dataModels = { character: models.LethalFantasyCharacter, diff --git a/module/applications/combat.mjs b/module/applications/combat.mjs new file mode 100644 index 0000000..74c0427 --- /dev/null +++ b/module/applications/combat.mjs @@ -0,0 +1,191 @@ + +/* -------------------------------------------- */ +export class LethalFantasyCombatTracker extends CombatTracker { + + /* -------------------------------------------- */ + static get defaultOptions() { + let path = "systems/fvtt-lethal-fantasy/templates/combat-tracker.hbs"; + return foundry.utils.mergeObject(super.defaultOptions, { + template: path, + }); + } +} + +export class LethalFantasyCombat extends Combat { + + /** + * Return the Array of combatants sorted into initiative order, breaking ties alphabetically by name. + * @returns {Combatant[]} + */ + setupTurns() { + console?.log("Setup Turns...."); + this.turns ||= []; + + // Determine the turn order and the current turn + const turns = this.combatants.contents.sort(this.sortCombatantsLF); + if (this.turn !== null) this.turn = Math.clamp(this.turn, 0, turns.length - 1); + + // Update state tracking + let c = turns[this.turn]; + this.current = this._getCurrentState(c); + if (!this.previous) this.previous = this.current; + + // Return the array of prepared turns + return this.turns = turns; + } + + async rollInitiative(ids, options) { + console.log("%%%%%%%%% Roll Initiative", ids, options); + await this.setFlag("acks", "lock-turns", true); + + ids = typeof ids === "string" ? [ids] : ids; + let messages = []; + let rollMode = game.settings.get("core", "rollMode"); + + // Get current groups + let groups = this.getFlag('acks', 'groups') || []; + let maxInit = { value: -1, cId: "" } + let updates = []; + for (let cId of ids) { + const c = this.combatants.get(cId); + //console.log("Init for combattant", cId, c, ids) + let id = c._id || c.id + // get the associated token + let tokenId = c.token.id; + // Check if the current token ID is in a group + let groupData = groups.find((groupData) => groupData.tokens.includes(tokenId)); + let initValue = -1; + let showMessage = true + let roll + if (groupData && groupData.initiative > 0) { + initValue = groupData.initiative; + showMessage = false + } else { + roll = c.getInitiativeRoll(); + await roll.evaluate(); + initValue = roll.total; + } + if (groupData) { + groupData.initiative = initValue + } + updates.push({ _id: id, initiative: initValue }); + if (initValue > maxInit.value) { + maxInit.value = initValue; + maxInit.cId = id; + } + + if (showMessage) { + // Determine the roll mode + if ((c.token.hidden || c.hidden) + && (rollMode === "roll")) { + rollMode = "gmroll"; + } + + // Construct chat message data + const messageData = foundry.utils.mergeObject({ + speaker: { + scene: canvas.scene._id, + actor: c.actor?.id || null, + token: c.token.id, + alias: c.token.name + }, + flavor: game.i18n.format('ACKS.roll.individualInit', { + name: c.token.name, + }), + }, {}); + + const chatData = await roll.toMessage(messageData, { + rollMode, + create: false, + }); + if (messages.length > 0) { + chatData.sound = null; + } + messages.push(chatData); + } + } + + await CONFIG.ChatMessage.documentClass.create(messages); + this.pools = AcksCombat.getCombatantsPool(); + await this.processOutNumbering(); + + await this.setFlag("acks", "lock-turns", false); + await this.updateEmbeddedDocuments("Combatant", updates); + + setTimeout(function () { + const updateData = { turn: 0 }; + game.combat.update(updateData); + }, 200); + + return this; + + } + + async startCombat() { + console.log("Start Combat 1 !") + // Send chat message to all players to roll for initiative + ChatMessage.create({ + user: game.user.id, + content: await renderTemplate(`systems/fvtt-lethal-fantasy/templates/chat-ask-initiative.hbs`, { + title: "Initiative roll requested", + text: text, + rollType: type, + }), + flags: { "fvtt-lethal-fantasy": { msg: "request-initiative-roll", content: {} } }, + }) + ChatMessage.create({ content: message, type: CONST.CHAT_MESSAGE_TYPES.GAME }); + } + + async nextTurn() { + console.log("NEXT TURN"); + + let turn = this.turn ?? -1; + let skipDefeated = this.settings.skipDefeated; + + // Determine the next turn number + let next = null; + for (let [i, t] of this.turns.entries()) { + console.log("Turn", t); + if (i <= turn) continue; + if (skipDefeated && t.isDefeated) continue; + next = i; + break; + } + + // Maybe advance to the next round + let round = this.round; + if ((this.round === 0) || (next === null) || (next >= this.turns.length)) { + return this.nextRound(); + } + + // Update the document, passing data through a hook first + const updateData = { round, turn: next }; + const updateOptions = { advanceTime: CONFIG.time.turnTime, direction: 1 }; + Hooks.callAll("combatTurn", this, updateData, updateOptions); + return this.update(updateData, updateOptions); + } + + async nextRound() { + console.log('NEXT ROUND') + this.turnsDone = false + + let turn = this.turn === null ? null : 0; // Preserve the fact that it's no-one's turn currently. + console.log("ROUND", this.round, this.turns); + + let advanceTime = Math.max(this.turns.length - this.turn, 0) * CONFIG.time.turnTime; + advanceTime += CONFIG.time.roundTime; + let nextRound = this.round + 1; + + // Update the document, passing data through a hook first + const updateData = { round: nextRound, turn }; + const updateOptions = { advanceTime, direction: 1 }; + Hooks.callAll("combatRound", this, updateData, updateOptions); + return this.update(updateData, updateOptions); + } + + + sortCombatantsLF(a, b) { + return a.initiative - b.initiative; + } +} + diff --git a/module/applications/sheets/character-sheet.mjs b/module/applications/sheets/character-sheet.mjs index c830c08..7f3bd40 100644 --- a/module/applications/sheets/character-sheet.mjs +++ b/module/applications/sheets/character-sheet.mjs @@ -6,7 +6,7 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet static DEFAULT_OPTIONS = { classes: ["character"], position: { - width: 1150, + width: 1080, height: 780, }, window: { @@ -15,6 +15,7 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet actions: { createEquipment: LethalFantasyCharacterSheet.#onCreateEquipment, rangedAttackDefense: LethalFantasyCharacterSheet.#onRangedAttackDefense, + rollInitiative: LethalFantasyCharacterSheet.#onRollInitiative, armorHitPointsPlus: LethalFantasyCharacterSheet.#onArmorHitPointsPlus, armorHitPointsMinus: LethalFantasyCharacterSheet.#onArmorHitPointsMinus, }, @@ -149,10 +150,30 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet static async #onRangedAttackDefense(event, target) { const hasTarget = false + let roll = await LethalFantasyRoll.promptRangedDefense({ actorId: this.actor.id, actorName: this.actor.name, - actorImage: this.actor.img + actorImage: this.actor.img, + }) + if (!roll) return null + + await roll.toMessage({}, { rollMode: roll.options.rollMode }) + } + + static async #onRollInitiative(event, target) { + const hasTarget = false + let actorClass = this.actor.system.biodata.class; + + let wisDef = SYSTEM.CHARACTERISTICS_TABLES.wis.find((c) => c.value === this.actor.system.characteristics.wis.value) + let maxInit = Number(wisDef.init_cap) || 1000 + + let roll = await LethalFantasyRoll.promptInitiative({ + actorId: this.actor.id, + actorName: this.actor.name, + actorImage: this.actor.img, + actorClass, + maxInit, }) if (!roll) return null diff --git a/module/config/system.mjs b/module/config/system.mjs index ac26572..af53326 100644 --- a/module/config/system.mjs +++ b/module/config/system.mjs @@ -85,6 +85,61 @@ export const ATTACKER_AIM_CHOICES = { "focused": {label: "Focused (-8)", value: "-8"} } +export const INITIATIVE_DICE_CHOICES_PER_CLASS = { + "untrained": [ + { "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" } + ], + "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" } + ], + "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" } + ], + "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"} + ], + "cleric": [ + { "name": "Asleep or totally distracted (1D2)", "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" } + ], + "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" } + ] +} + +export const CHAR_CLASSES = { + "untrained": "Untrained", + "fighter": "Fighter", + "rogue": "Rogue", + "ranger": "Ranger", + "cleric": "Cleric", + "magicuser": "Magic User" +} + export const DICE_VALUES = { "d3": "D3", "d4": "D4", @@ -189,6 +244,8 @@ export const SYSTEM = { CHARACTERISTIC_ATTACK, CHARACTERISTIC_DEFENSE, CHARACTERISTIC_DAMAGE, + INITIATIVE_DICE_CHOICES_PER_CLASS, + CHAR_CLASSES, MONEY, ASCII, CHOICE_MODIFIERS, diff --git a/module/documents/chat-message.mjs b/module/documents/chat-message.mjs index 8b1f1ec..4b900f7 100644 --- a/module/documents/chat-message.mjs +++ b/module/documents/chat-message.mjs @@ -1,6 +1,7 @@ import LethalFantasyRoll from "./roll.mjs" export default class LethalFantasyChatMessage extends ChatMessage { + async _renderRollContent(messageData) { const data = messageData.message if (this.rolls[0] instanceof LethalFantasyRoll) { diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index c2cf584..22a3810 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -131,6 +131,7 @@ export default class LethalFantasyRoll extends Roll { maxValue = Number(options.rollTarget.value.match(/\d+/)[0]) hasModifier = false hasChangeDice = true + hasFavor = true } else { dice = "1D20" maxValue = 20 @@ -302,7 +303,7 @@ export default class LethalFantasyRoll extends Roll { } // Specific pain/poison/contagion case - if (options.rollType === "save" && options.rollTarget.rollKey.includes(["pain", "poison", "contagion"])) { + if (options.rollType === "save" && (options.rollTarget.rollKey === "pain" || options.rollTarget.rollKey === "poison" || options.rollTarget.rollKey === "contagion")) { hasD30 = false } @@ -428,8 +429,60 @@ export default class LethalFantasyRoll extends Roll { return rollBase } + static async promptInitiative(options = {}) { + const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) + const fieldRollMode = new foundry.data.fields.StringField({ + choices: rollModes, + blank: false, + default: "public", + }) + + if ( SYSTEM.INITIATIVE_DICE_CHOICES_PER_CLASS[options.actorClass] ) { + options.initiativeDiceChoice = SYSTEM.INITIATIVE_DICE_CHOICES_PER_CLASS[options.actorClass] + } else { + options.initiativeDiceChoice = SYSTEM.INITIATIVE_DICE_CHOICES_PER_CLASS["untrained"] + } + + let dialogContext = { + actorClass: options.actorClass, + initiativeDiceChoice: options.initiativeDiceChoice, + initiativeDice: "1D20", + maxInit: options.maxInit, + fieldRollMode, + rollModes + } + console.log("CTX", dialogContext) + + const content = await renderTemplate("systems/fvtt-lethal-fantasy/templates/roll-initiative-dialog.hbs", dialogContext) + + const label = game.i18n.localize("LETHALFANTASY.Label.initiative") + const rollContext = await foundry.applications.api.DialogV2.wait({ + window: { title: "Initiative Roll" }, + classes: ["lethalfantasy"], + content, + buttons: [ + { + label: label, + callback: (event, button, dialog) => { + const output = Array.from(button.form.elements).reduce((obj, input) => { + if (input.name) obj[input.name] = input.value + return obj + }, {}) + return output + }, + }, + ], + rejectClose: false // Click on Close button will not launch an error + }) + + let initRoll = new Roll(`min(${rollContext.initiativeDice}, ${options.maxInit})`, options.data, rollContext) + await initRoll.evaluate() + initRoll.toMessage( {flavor: `Initiative for ${options.actorName}`}, {rollMode: rollContext.visibility} ) + } + static async promptRangedDefense(rollTarget) { + const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)])) const fieldRollMode = new foundry.data.fields.StringField({ choices: rollModes, diff --git a/module/models/character.mjs b/module/models/character.mjs index e8e4f98..5c42dd7 100644 --- a/module/models/character.mjs +++ b/module/models/character.mjs @@ -65,8 +65,8 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod } schema.hp = new fields.SchemaField({ - value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), - max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), painDamage: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), wounds: new fields.ArrayField(new fields.SchemaField(woundFieldSchema ) , { initial: [{description:"", value:0, duration:0},{description:"", value:0, duration:0}, {description:"", value:0, duration:0},{description:"", value:0, duration:0},{description:"", value:0, duration:0},{description:"", value:0, duration:0}, @@ -93,8 +93,13 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod run: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), armorAdjust: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), }) + schema.jump = new fields.SchemaField({ + broad: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + running: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + vertical: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) schema.biodata = new fields.SchemaField({ - class: new fields.StringField({ required: true, nullable: false, initial: "" }), + class: new fields.StringField({required: true, initial: "untrained", choices: SYSTEM.CHAR_CLASSES}), level: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }), mortal: new fields.StringField({ required: true, nullable: false, initial: "" }), alignment: new fields.StringField({ required: true, nullable: false, initial: "" }), diff --git a/packs-system/lf-equipment/000012.log b/packs-system/lf-equipment/000028.log similarity index 100% rename from packs-system/lf-equipment/000012.log rename to packs-system/lf-equipment/000028.log diff --git a/packs-system/lf-equipment/CURRENT b/packs-system/lf-equipment/CURRENT index 3051f81..8b15215 100644 --- a/packs-system/lf-equipment/CURRENT +++ b/packs-system/lf-equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000010 +MANIFEST-000026 diff --git a/packs-system/lf-equipment/LOG b/packs-system/lf-equipment/LOG index 165bb23..bded37b 100644 --- a/packs-system/lf-equipment/LOG +++ b/packs-system/lf-equipment/LOG @@ -1,7 +1,7 @@ -2025/01/09-22:31:28.606227 7f0abbfff6c0 Recovering log #8 -2025/01/09-22:31:28.615890 7f0abbfff6c0 Delete type=3 #6 -2025/01/09-22:31:28.615953 7f0abbfff6c0 Delete type=0 #8 -2025/01/09-22:43:31.203725 7f0ab9bff6c0 Level-0 table #13: started -2025/01/09-22:43:31.203752 7f0ab9bff6c0 Level-0 table #13: 0 bytes OK -2025/01/09-22:43:31.296594 7f0ab9bff6c0 Delete type=0 #11 -2025/01/09-22:43:31.296887 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2025/01/12-15:30:20.575853 7f0abaffd6c0 Recovering log #24 +2025/01/12-15:30:20.585410 7f0abaffd6c0 Delete type=3 #22 +2025/01/12-15:30:20.585495 7f0abaffd6c0 Delete type=0 #24 +2025/01/12-15:39:07.053127 7f0ab9bff6c0 Level-0 table #29: started +2025/01/12-15:39:07.053167 7f0ab9bff6c0 Level-0 table #29: 0 bytes OK +2025/01/12-15:39:07.059547 7f0ab9bff6c0 Delete type=0 #27 +2025/01/12-15:39:07.066140 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-equipment/LOG.old b/packs-system/lf-equipment/LOG.old index dd695b3..eeb39c2 100644 --- a/packs-system/lf-equipment/LOG.old +++ b/packs-system/lf-equipment/LOG.old @@ -1,7 +1,7 @@ -2025/01/09-22:06:01.230631 7f0abbfff6c0 Recovering log #4 -2025/01/09-22:06:01.239976 7f0abbfff6c0 Delete type=3 #2 -2025/01/09-22:06:01.240081 7f0abbfff6c0 Delete type=0 #4 -2025/01/09-22:26:22.511134 7f0ab9bff6c0 Level-0 table #9: started -2025/01/09-22:26:22.511166 7f0ab9bff6c0 Level-0 table #9: 0 bytes OK -2025/01/09-22:26:22.540103 7f0ab9bff6c0 Delete type=0 #7 -2025/01/09-22:26:22.609664 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2025/01/12-10:35:21.828083 7f0abaffd6c0 Recovering log #20 +2025/01/12-10:35:21.838218 7f0abaffd6c0 Delete type=3 #18 +2025/01/12-10:35:21.838276 7f0abaffd6c0 Delete type=0 #20 +2025/01/12-10:41:38.476442 7f0ab9bff6c0 Level-0 table #25: started +2025/01/12-10:41:38.476474 7f0ab9bff6c0 Level-0 table #25: 0 bytes OK +2025/01/12-10:41:38.511873 7f0ab9bff6c0 Delete type=0 #23 +2025/01/12-10:41:38.546259 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-equipment/MANIFEST-000010 b/packs-system/lf-equipment/MANIFEST-000010 deleted file mode 100644 index 6a72d77..0000000 Binary files a/packs-system/lf-equipment/MANIFEST-000010 and /dev/null differ diff --git a/packs-system/lf-equipment/MANIFEST-000026 b/packs-system/lf-equipment/MANIFEST-000026 new file mode 100644 index 0000000..07b73bf Binary files /dev/null and b/packs-system/lf-equipment/MANIFEST-000026 differ diff --git a/packs-system/lf-gifts/000012.log b/packs-system/lf-gifts/000028.log similarity index 100% rename from packs-system/lf-gifts/000012.log rename to packs-system/lf-gifts/000028.log diff --git a/packs-system/lf-gifts/CURRENT b/packs-system/lf-gifts/CURRENT index 3051f81..8b15215 100644 --- a/packs-system/lf-gifts/CURRENT +++ b/packs-system/lf-gifts/CURRENT @@ -1 +1 @@ -MANIFEST-000010 +MANIFEST-000026 diff --git a/packs-system/lf-gifts/LOG b/packs-system/lf-gifts/LOG index 3b1f5c0..e301696 100644 --- a/packs-system/lf-gifts/LOG +++ b/packs-system/lf-gifts/LOG @@ -1,7 +1,7 @@ -2025/01/09-22:31:28.618153 7f0abb7fe6c0 Recovering log #8 -2025/01/09-22:31:28.629092 7f0abb7fe6c0 Delete type=3 #6 -2025/01/09-22:31:28.629179 7f0abb7fe6c0 Delete type=0 #8 -2025/01/09-22:43:31.034575 7f0ab9bff6c0 Level-0 table #13: started -2025/01/09-22:43:31.034610 7f0ab9bff6c0 Level-0 table #13: 0 bytes OK -2025/01/09-22:43:31.125906 7f0ab9bff6c0 Delete type=0 #11 -2025/01/09-22:43:31.296849 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2025/01/12-15:30:20.587864 7f0abbfff6c0 Recovering log #24 +2025/01/12-15:30:20.598665 7f0abbfff6c0 Delete type=3 #22 +2025/01/12-15:30:20.598718 7f0abbfff6c0 Delete type=0 #24 +2025/01/12-15:39:07.046715 7f0ab9bff6c0 Level-0 table #29: started +2025/01/12-15:39:07.046747 7f0ab9bff6c0 Level-0 table #29: 0 bytes OK +2025/01/12-15:39:07.052973 7f0ab9bff6c0 Delete type=0 #27 +2025/01/12-15:39:07.066129 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-gifts/LOG.old b/packs-system/lf-gifts/LOG.old index a73af80..9cc59cd 100644 --- a/packs-system/lf-gifts/LOG.old +++ b/packs-system/lf-gifts/LOG.old @@ -1,7 +1,7 @@ -2025/01/09-22:06:01.242474 7f0abb7fe6c0 Recovering log #4 -2025/01/09-22:06:01.252331 7f0abb7fe6c0 Delete type=3 #2 -2025/01/09-22:06:01.252401 7f0abb7fe6c0 Delete type=0 #4 -2025/01/09-22:26:22.580727 7f0ab9bff6c0 Level-0 table #9: started -2025/01/09-22:26:22.580760 7f0ab9bff6c0 Level-0 table #9: 0 bytes OK -2025/01/09-22:26:22.609536 7f0ab9bff6c0 Delete type=0 #7 -2025/01/09-22:26:22.609684 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2025/01/12-10:35:21.840236 7f0abb7fe6c0 Recovering log #20 +2025/01/12-10:35:21.850711 7f0abb7fe6c0 Delete type=3 #18 +2025/01/12-10:35:21.850769 7f0abb7fe6c0 Delete type=0 #20 +2025/01/12-10:41:38.512028 7f0ab9bff6c0 Level-0 table #25: started +2025/01/12-10:41:38.512054 7f0ab9bff6c0 Level-0 table #25: 0 bytes OK +2025/01/12-10:41:38.546064 7f0ab9bff6c0 Delete type=0 #23 +2025/01/12-10:41:38.546272 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-gifts/MANIFEST-000010 b/packs-system/lf-gifts/MANIFEST-000010 deleted file mode 100644 index 6a72d77..0000000 Binary files a/packs-system/lf-gifts/MANIFEST-000010 and /dev/null differ diff --git a/packs-system/lf-gifts/MANIFEST-000026 b/packs-system/lf-gifts/MANIFEST-000026 new file mode 100644 index 0000000..07b73bf Binary files /dev/null and b/packs-system/lf-gifts/MANIFEST-000026 differ diff --git a/packs-system/lf-skills/000012.log b/packs-system/lf-skills/000028.log similarity index 100% rename from packs-system/lf-skills/000012.log rename to packs-system/lf-skills/000028.log diff --git a/packs-system/lf-skills/CURRENT b/packs-system/lf-skills/CURRENT index 3051f81..8b15215 100644 --- a/packs-system/lf-skills/CURRENT +++ b/packs-system/lf-skills/CURRENT @@ -1 +1 @@ -MANIFEST-000010 +MANIFEST-000026 diff --git a/packs-system/lf-skills/LOG b/packs-system/lf-skills/LOG index 10eea8c..da807fe 100644 --- a/packs-system/lf-skills/LOG +++ b/packs-system/lf-skills/LOG @@ -1,7 +1,7 @@ -2025/01/09-22:31:28.593009 7f0aba7fc6c0 Recovering log #8 -2025/01/09-22:31:28.603392 7f0aba7fc6c0 Delete type=3 #6 -2025/01/09-22:31:28.603450 7f0aba7fc6c0 Delete type=0 #8 -2025/01/09-22:43:30.943627 7f0ab9bff6c0 Level-0 table #13: started -2025/01/09-22:43:30.943704 7f0ab9bff6c0 Level-0 table #13: 0 bytes OK -2025/01/09-22:43:31.034381 7f0ab9bff6c0 Delete type=0 #11 -2025/01/09-22:43:31.296823 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2025/01/12-15:30:20.563784 7f0abb7fe6c0 Recovering log #24 +2025/01/12-15:30:20.573785 7f0abb7fe6c0 Delete type=3 #22 +2025/01/12-15:30:20.573842 7f0abb7fe6c0 Delete type=0 #24 +2025/01/12-15:39:07.059698 7f0ab9bff6c0 Level-0 table #29: started +2025/01/12-15:39:07.059727 7f0ab9bff6c0 Level-0 table #29: 0 bytes OK +2025/01/12-15:39:07.066010 7f0ab9bff6c0 Delete type=0 #27 +2025/01/12-15:39:07.066153 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-skills/LOG.old b/packs-system/lf-skills/LOG.old index f98007a..f523be5 100644 --- a/packs-system/lf-skills/LOG.old +++ b/packs-system/lf-skills/LOG.old @@ -1,7 +1,7 @@ -2025/01/09-22:06:01.218155 7f0abaffd6c0 Recovering log #4 -2025/01/09-22:06:01.228492 7f0abaffd6c0 Delete type=3 #2 -2025/01/09-22:06:01.228577 7f0abaffd6c0 Delete type=0 #4 -2025/01/09-22:26:22.540188 7f0ab9bff6c0 Level-0 table #9: started -2025/01/09-22:26:22.540210 7f0ab9bff6c0 Level-0 table #9: 0 bytes OK -2025/01/09-22:26:22.580587 7f0ab9bff6c0 Delete type=0 #7 -2025/01/09-22:26:22.609674 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2025/01/12-10:35:21.813613 7f0abbfff6c0 Recovering log #20 +2025/01/12-10:35:21.823625 7f0abbfff6c0 Delete type=3 #18 +2025/01/12-10:35:21.823728 7f0abbfff6c0 Delete type=0 #20 +2025/01/12-10:41:38.447331 7f0ab9bff6c0 Level-0 table #25: started +2025/01/12-10:41:38.447362 7f0ab9bff6c0 Level-0 table #25: 0 bytes OK +2025/01/12-10:41:38.476202 7f0ab9bff6c0 Delete type=0 #23 +2025/01/12-10:41:38.546247 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-skills/MANIFEST-000010 b/packs-system/lf-skills/MANIFEST-000010 deleted file mode 100644 index 6a72d77..0000000 Binary files a/packs-system/lf-skills/MANIFEST-000010 and /dev/null differ diff --git a/packs-system/lf-skills/MANIFEST-000026 b/packs-system/lf-skills/MANIFEST-000026 new file mode 100644 index 0000000..07b73bf Binary files /dev/null and b/packs-system/lf-skills/MANIFEST-000026 differ diff --git a/packs-system/lf-vulnerabilities/000012.log b/packs-system/lf-vulnerabilities/000028.log similarity index 100% rename from packs-system/lf-vulnerabilities/000012.log rename to packs-system/lf-vulnerabilities/000028.log diff --git a/packs-system/lf-vulnerabilities/CURRENT b/packs-system/lf-vulnerabilities/CURRENT index 3051f81..8b15215 100644 --- a/packs-system/lf-vulnerabilities/CURRENT +++ b/packs-system/lf-vulnerabilities/CURRENT @@ -1 +1 @@ -MANIFEST-000010 +MANIFEST-000026 diff --git a/packs-system/lf-vulnerabilities/LOG b/packs-system/lf-vulnerabilities/LOG index 0d8ef43..e9c9bb4 100644 --- a/packs-system/lf-vulnerabilities/LOG +++ b/packs-system/lf-vulnerabilities/LOG @@ -1,7 +1,7 @@ -2025/01/09-22:31:28.631702 7f0abaffd6c0 Recovering log #8 -2025/01/09-22:31:28.641622 7f0abaffd6c0 Delete type=3 #6 -2025/01/09-22:31:28.641694 7f0abaffd6c0 Delete type=0 #8 -2025/01/09-22:43:31.126046 7f0ab9bff6c0 Level-0 table #13: started -2025/01/09-22:43:31.126074 7f0ab9bff6c0 Level-0 table #13: 0 bytes OK -2025/01/09-22:43:31.203593 7f0ab9bff6c0 Delete type=0 #11 -2025/01/09-22:43:31.296871 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2025/01/12-15:30:20.600324 7f0aba7fc6c0 Recovering log #24 +2025/01/12-15:30:20.611083 7f0aba7fc6c0 Delete type=3 #22 +2025/01/12-15:30:20.611177 7f0aba7fc6c0 Delete type=0 #24 +2025/01/12-15:39:07.039586 7f0ab9bff6c0 Level-0 table #29: started +2025/01/12-15:39:07.039637 7f0ab9bff6c0 Level-0 table #29: 0 bytes OK +2025/01/12-15:39:07.046575 7f0ab9bff6c0 Delete type=0 #27 +2025/01/12-15:39:07.066113 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-vulnerabilities/LOG.old b/packs-system/lf-vulnerabilities/LOG.old index 4f9a734..b677d48 100644 --- a/packs-system/lf-vulnerabilities/LOG.old +++ b/packs-system/lf-vulnerabilities/LOG.old @@ -1,7 +1,7 @@ -2025/01/09-22:06:01.254140 7f0aba7fc6c0 Recovering log #4 -2025/01/09-22:06:01.264214 7f0aba7fc6c0 Delete type=3 #2 -2025/01/09-22:06:01.264273 7f0aba7fc6c0 Delete type=0 #4 -2025/01/09-22:26:22.480492 7f0ab9bff6c0 Level-0 table #9: started -2025/01/09-22:26:22.480548 7f0ab9bff6c0 Level-0 table #9: 0 bytes OK -2025/01/09-22:26:22.511014 7f0ab9bff6c0 Delete type=0 #7 -2025/01/09-22:26:22.609652 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) +2025/01/12-10:35:21.852854 7f0aba7fc6c0 Recovering log #20 +2025/01/12-10:35:21.862623 7f0aba7fc6c0 Delete type=3 #18 +2025/01/12-10:35:21.862679 7f0aba7fc6c0 Delete type=0 #20 +2025/01/12-10:41:38.411505 7f0ab9bff6c0 Level-0 table #25: started +2025/01/12-10:41:38.411560 7f0ab9bff6c0 Level-0 table #25: 0 bytes OK +2025/01/12-10:41:38.447140 7f0ab9bff6c0 Delete type=0 #23 +2025/01/12-10:41:38.546228 7f0ab9bff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs-system/lf-vulnerabilities/MANIFEST-000010 b/packs-system/lf-vulnerabilities/MANIFEST-000010 deleted file mode 100644 index 6a72d77..0000000 Binary files a/packs-system/lf-vulnerabilities/MANIFEST-000010 and /dev/null differ diff --git a/packs-system/lf-vulnerabilities/MANIFEST-000026 b/packs-system/lf-vulnerabilities/MANIFEST-000026 new file mode 100644 index 0000000..07b73bf Binary files /dev/null and b/packs-system/lf-vulnerabilities/MANIFEST-000026 differ diff --git a/styles/character.less b/styles/character.less index 1cb21d0..2923d87 100644 --- a/styles/character.less +++ b/styles/character.less @@ -6,14 +6,15 @@ .character-main { display: flex; - + .character-pc { display: flex; gap: 10px; flex: 1; .character-left { - min-width: 180px; + min-width: 220px; + max-width: 220px; display: flex; flex-direction: column; @@ -21,23 +22,39 @@ display: flex; justify-content: center; align-items: center; - padding-bottom: 20px; + padding-bottom: 8px; .character-img { height: 140px; + width: 140px; width: auto; border: none; } } - - .character-hp-edit { - input { + .character-hp { + display: flex; + gap: 2px; + align-items: center; + .character-hp-value { + .form-fields input { + flex: none; + min-width: 3rem; + max-width: 3rem; + margin-left: 10px; + font-size: calc(var(--font-size-standard) * 1.4); + } + } + .character-hp-max { + clear: both; display: flex; - width: 60px; - font-size: calc(var(--font-size-standard) * 1.4); + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; align-items: center; - justify-content: center; - padding: 0 5px 0 5px; - text-align: center; + input { + width: 50px; + text-align: center; + font-size: calc(var(--font-size-standard) * 1.4); + } } } } @@ -45,7 +62,7 @@ .character-right { display: flex; flex-direction: column; - gap: 5px; + gap: 4px; .character-name { display: flex; @@ -53,63 +70,21 @@ width: 400px; } } - - .character-infos { - display: flex; - flex-direction: column; - gap: 10px; - - label { - min-width: 120px; - } - .character-hp { - display: flex; - gap: 2px; - align-items: center; - .character-hp-value { - .form-fields input { - flex: none; - width: 50px; - margin-left: 10px; - font-size: calc(var(--font-size-standard) * 1.4); - } - } - .character-hp-max { - clear: both; - display: flex; - flex-direction: row; - flex-wrap: wrap; - margin: 3px 0; - align-items: center; - input { - width: 50px; - text-align: center; - font-size: calc(var(--font-size-standard) * 1.4); - } - } - .hp-separator { - font-size: calc(var(--font-size-standard) * 1.2); - display: flex; - align-items: center; - justify-content: center; - } - } - } } } .character-pc-play { - min-width: 500px; + min-width: 400px; } .character-pc-edit { - min-width: 650px; + min-width: 400px; } .character-characteristics { display: flex; flex-direction: column; - gap: 5px; + gap: 4px; flex: 1; .character-characteristic { @@ -122,10 +97,10 @@ } .form-group { flex: 1; - padding-left: 5px; + padding-left: 4px; .form-fields { flex: none; - width: 70px; + width: 3rem; } } } @@ -133,13 +108,13 @@ .character-challenges { display: flex; flex-direction: column; - gap: 5px; + gap: 4px; flex: 1; .character-challenge { display: flex; align-items: center; - margin-right: 1rem; + margin-right: 0.5rem; .rollable:hover, .rollable:focus { text-shadow: 0 0 8px var(--color-shadow-primary); @@ -152,7 +127,7 @@ } .form-group { flex: 1; - padding-left: 5px; + padding-left: 4px; .form-fields { flex: none; width: 50px; @@ -164,13 +139,13 @@ .character-movements { display: flex; flex-direction: column; - gap: 5px; + gap: 4px; flex: 1; .character-movement { display: flex; align-items: center; - margin-right: 1rem; + margin-right: 0.5rem; .rollable:hover, .rollable:focus { text-shadow: 0 0 8px var(--color-shadow-primary); @@ -183,7 +158,7 @@ } .form-group { flex: 1; - padding-left: 5px; + padding-left: 4px; .form-fields { flex: none; width: 50px; @@ -195,13 +170,13 @@ .character-saves { display: flex; flex-direction: column; - gap: 5px; + gap: 4px; flex: 1; .character-save { display: flex; align-items: center; - margin-right: 0.2rem; + margin-right: 0.5rem; .rollable:hover, .rollable:focus { text-shadow: 0 0 8px var(--color-shadow-primary); @@ -211,17 +186,17 @@ flex: 0; min-width: 5rem; max-width: 5rem; - margin-left: 0.7rem; - } + margin-left: 0.5rem; + } .name-pain { flex: 0; min-width: 3rem; max-width: 3rem; - margin-left: 0.7rem; + margin-left: 0.5rem; } .form-group { flex: 0; - padding-left: 5px; + padding-left: 4px; .form-fields { flex: none; width: 50px; @@ -237,78 +212,21 @@ .character-characteristic-edit { min-width: 400px; } - - .character-resources { - display: flex; - flex-direction: column; - gap: 5px; - flex: 1; - - .character-resource { - display: flex; - align-items: center; - .rollable:hover, - .rollable:focus { - text-shadow: 0 0 8px var(--color-shadow-primary); - cursor: - pointer; - } - .form-group { - flex: 1; - padding-left: 5px; - .form-fields { - flex: none; - width: 70px; - } - } - .character-resource-edit { - display: flex; - align-items: center; - gap: 10px; - margin-left: 10px; - input { - display: flex; - width: 70px; - font-size: calc(var(--font-size-standard) * 1.4); - align-items: center; - justify-content: center; - padding: 0 5px 0 5px; - } - input[type="number"] { - text-align: center; - } - select { - font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1.5); - text-align: center; - width: 75px; - } - } - } - } - - .character-resources-play { - min-width: 235px; - } - - .character-resources-edit { - min-width: 400px; - } } .tab.character-biography { .biodata { display: grid; grid-template-columns: repeat(4, 1fr); - gap: 10px; + gap: 4px; .biodata-elem { display: flex; align-items: center; - gap: 10px; + gap: 4px; .item-img { - width: 32px; - height: 32px; - margin: 5px 0 0 0; + width: 24px; + height: 24px; + margin: 4px 0 0 0; } .name { min-width: 8rem; @@ -331,21 +249,21 @@ grid-template-columns: 1fr; legend { a { - font-size: calc(var(--font-size-standard) * 1.0); - padding-left: 5px; + font-size: calc(var(--font-size-standard) * 1); + padding-left: 4px; } } .skills { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; .skill { display: flex; align-items: center; - gap: 10px; + gap: 4px; .item-img { - width: 32px; - height: 32px; + width: 24px; + height: 24px; } .name { min-width: 12rem; @@ -355,14 +273,14 @@ .gifts { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; .gift { display: flex; align-items: center; - gap: 10px; + gap: 4px; .item-img { - width: 32px; - height: 32px; + width: 24px; + height: 24px; } .name { min-width: 12rem; @@ -372,14 +290,14 @@ .vulnerabilities { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; .vulnerability { display: flex; align-items: center; - gap: 10px; + gap: 4px; .item-img { - width: 32px; - height: 32px; + width: 24px; + height: 24px; } .name { min-width: 12rem; @@ -394,28 +312,28 @@ legend { a { font-size: calc(var(--font-size-standard) * 1.4); - padding-left: 5px; + padding-left: 4px; } } .moneys { display: grid; grid-template-columns: repeat(5, 1fr); - gap: 10px; + gap: 4px; } .equipments { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; - .equipment{ + gap: 4px; + .equipment { display: flex; align-items: center; - gap: 10px; + gap: 4px; .item-img { - width: 32px; - height: 32px; - margin: 5px 0 0 0; + width: 24px; + height: 24px; + margin: 4px 0 0 0; } .name { min-width: 12rem; @@ -428,30 +346,33 @@ } .tab.character-combat { - display: grid; - grid-template-columns: 1fr; - legend { - a { - font-size: calc(var(--font-size-standard) * 1.4); - padding-left: 5px; - } + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 4px; } + } .combat-details { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 10px; + gap: 4px; .combat-detail { display: flex; align-items: center; - gap: 10px; + gap: 4px; + button { + min-width: 10rem; + } .armor-hp { min-width: 20rem; max-width: 20rem; .input { min-width: 3rem; max-width: 3rem; - } + } } } } @@ -459,11 +380,11 @@ .wounds { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 10px; + gap: 4px; .wound { display: flex; align-items: center; - gap: 10px; + gap: 4px; .wound-description { min-width: 16rem; max-width: 16rem; @@ -477,9 +398,9 @@ max-width: 3rem; } .item-img { - width: 32px; - height: 32px; - margin: 5px 0 0 0; + width: 24px; + height: 24px; + margin: 4px 0 0 0; } .name { min-width: 12rem; @@ -490,15 +411,15 @@ .weapons { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 10px; + gap: 4px; .weapon { display: flex; align-items: center; - gap: 10px; + gap: 4px; .item-img { - width: 32px; - height: 32px; - margin: 5px 0 0 0; + width: 24px; + height: 24px; + margin: 4px 0 0 0; } .name { min-width: 12rem; @@ -512,15 +433,15 @@ .armors { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; .armor { display: flex; align-items: center; - gap: 10px; + gap: 4px; .item-img { - width: 32px; - height: 32px; - margin: 5px 0 0 0; + width: 24px; + height: 24px; + margin: 4px 0 0 0; } } .name { @@ -535,21 +456,21 @@ legend { a { font-size: calc(var(--font-size-standard) * 1.4); - padding-left: 5px; + padding-left: 4px; } } .spells { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; .spell { display: flex; align-items: center; - gap: 10px; + gap: 4px; .item-img { - width: 32px; - height: 32px; + width: 24px; + height: 24px; } .name { min-width: 12rem; @@ -557,7 +478,6 @@ } } - prose-mirror.inactive { min-height: 40px; } @@ -572,21 +492,21 @@ legend { a { font-size: calc(var(--font-size-standard) * 1.4); - padding-left: 5px; + padding-left: 4px; } } .miracles { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 10px; + gap: 4px; .miracle { display: flex; align-items: center; - gap: 10px; + gap: 4px; .item-img { - width: 32px; - height: 32px; + width: 24px; + height: 24px; } .name { min-width: 12rem; diff --git a/styles/global.less b/styles/global.less index b5fa38c..9eece97 100644 --- a/styles/global.less +++ b/styles/global.less @@ -1,6 +1,6 @@ :root { --font-primary: "TimesNewRoman", serif; - --font-size-standard: 0.9rem; + --font-size-standard: 0.8rem; --background-image-base: url("../assets/ui/lethal_fantasy_background.webp"); --font-secondary: "BaskervilleBold", serif; --logo-standard: url("../assets/ui/lf_logo_small_02.webp"); diff --git a/styles/mixins.less b/styles/mixins.less index c9d4ed1..6f32e63 100644 --- a/styles/mixins.less +++ b/styles/mixins.less @@ -15,23 +15,24 @@ input, select { + height: 1.5rem; background-color: rgba(0, 0, 0, 0.1); border-color: var(--color-dark-6); color: var(--color-dark-2); } input[name="name"] { - height: 50px; - margin-right: 10px; + height: 2.5rem; + margin-right: 4px; font-family: var(--font-secondary); - font-size: calc(var(--font-size-standard) * 1); + font-size: calc(var(--font-size-standard) * 1.2); font-weight: bold; border: none; } fieldset { - margin-bottom: 5px; - border-radius: 5px; + margin-bottom: 4px; + border-radius: 4px; } .form-fields { @@ -63,7 +64,7 @@ .item-sheet-common { .form-fields { - padding-top: 5px; + padding-top: 4px; } label { diff --git a/templates/character-combat.hbs b/templates/character-combat.hbs index c037867..4643de3 100644 --- a/templates/character-combat.hbs +++ b/templates/character-combat.hbs @@ -4,8 +4,14 @@
{{localize "TENEBRIS.Manager.player"}} | -{{localize "TENEBRIS.Manager.character"}} | -{{localize "TENEBRIS.Manager.pv"}} | -{{localize "TENEBRIS.Manager.rob"}} | -{{localize "TENEBRIS.Manager.dex"}} | -{{localize "TENEBRIS.Manager.int"}} | -{{localize "TENEBRIS.Manager.per"}} | -{{localize "TENEBRIS.Manager.vol"}} | -{{localize "TENEBRIS.Manager.san"}} | -{{localize "TENEBRIS.Manager.oeil"}} | -{{localize "TENEBRIS.Manager.verbe"}} | -{{localize "TENEBRIS.Manager.bourse"}} | -{{localize "TENEBRIS.Manager.magie"}} | -
---|---|---|---|---|---|---|---|---|---|---|---|---|
{{player.name}} | -{{player.character.name}} | -{{player.character.system.pv.value}} | -{{player.character.system.caracteristiques.rob.valeur}} | -{{player.character.system.caracteristiques.dex.valeur}} | -{{player.character.system.caracteristiques.int.valeur}} | -{{player.character.system.caracteristiques.per.valeur}} | -{{player.character.system.caracteristiques.vol.valeur}} | -{{player.character.system.ressources.san.valeur}} | -{{player.character.system.ressources.oeil.valeur}} | -{{player.character.system.ressources.verbe.valeur}} | -{{player.character.system.ressources.bourse.valeur}} | -{{player.character.system.ressources.magie.valeur}} | -