From ef9c0111866b5d8bb1878f0fa775f753630f41af Mon Sep 17 00:00:00 2001 From: LeRatierBretonnien Date: Fri, 23 May 2025 00:26:00 +0200 Subject: [PATCH] Actor sheet, step 1 --- assets/icons/deal.webp | Bin 0 -> 7138 bytes assets/icons/tarot.webp | Bin 0 -> 8172 bytes assets/ui/sheet_background_01.webp | Bin 0 -> 20574 bytes css/fvtt-hellborn.css | 721 +++++++++--------- fvtt-hellborn.mjs | 4 + lang/en.json | 55 +- module/applications/_module.mjs | 2 + .../applications/sheets/base-actor-sheet.mjs | 5 +- .../applications/sheets/character-sheet.mjs | 96 ++- module/applications/sheets/deal-sheet.mjs | 28 + module/applications/sheets/tarot-sheet.mjs | 30 + module/config/system.mjs | 84 +- module/documents/item.mjs | 2 + module/models/_module.mjs | 2 + module/models/character.mjs | 109 ++- module/models/deal.mjs | 16 + module/models/tarot.mjs | 22 + styles/character.less | 429 +++-------- styles/deal.less | 39 + styles/fvtt-hellborn.less | 2 + styles/global.less | 22 +- styles/ritual.less | 2 - styles/species-trait.less | 17 + styles/tarot.less | 39 + system.json | 6 +- templates/character-biography.hbs | 19 +- templates/character-equipment.hbs | 48 +- templates/character-main.hbs | 92 +-- templates/character-maleficas.hbs | 56 ++ templates/character-status.hbs | 60 ++ templates/character-talents.hbs | 106 --- templates/deal.hbs | 17 + templates/tarot.hbs | 28 + 33 files changed, 1052 insertions(+), 1106 deletions(-) create mode 100644 assets/icons/deal.webp create mode 100644 assets/icons/tarot.webp create mode 100644 assets/ui/sheet_background_01.webp create mode 100644 module/applications/sheets/deal-sheet.mjs create mode 100644 module/applications/sheets/tarot-sheet.mjs create mode 100644 module/models/deal.mjs create mode 100644 module/models/tarot.mjs create mode 100644 styles/deal.less create mode 100644 styles/tarot.less create mode 100644 templates/character-maleficas.hbs create mode 100644 templates/character-status.hbs delete mode 100644 templates/character-talents.hbs create mode 100644 templates/deal.hbs create mode 100644 templates/tarot.hbs diff --git a/assets/icons/deal.webp b/assets/icons/deal.webp new file mode 100644 index 0000000000000000000000000000000000000000..2902ab43a5f53bd78da67374767e7eb7c42232c0 GIT binary patch literal 7138 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 YSV=|>0000@O#mtY000O80000001BbicK`qY literal 0 HcmV?d00001 diff --git a/assets/icons/tarot.webp b/assets/icons/tarot.webp new file mode 100644 index 0000000000000000000000000000000000000000..4c8078f954987ad11384ab7a223efd70447b6492 GIT binary patch literal 8172 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 literal 0 HcmV?d00001 diff --git a/css/fvtt-hellborn.css b/css/fvtt-hellborn.css index 6990823..9d7bfdc 100644 --- a/css/fvtt-hellborn.css +++ b/css/fvtt-hellborn.css @@ -9,7 +9,7 @@ :root { --font-size-standard: 0.9rem; --font-size-result: 1.4rem; - --background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/ftl_nomad_background_01.webp"); + --background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/sheet_background_01.webp"); --font-primary: "MinionProRegular"; --font-secondary: "MinionProRegular"; --font-title: "SupernaturalKnight"; @@ -22,26 +22,23 @@ --color-critical-success: #1527cc; --color-critical-failure: #8d20e7; } -.d100 { - width: 18px; - height: 18px; - color: black; - border-width: 0px; -} #logo { content: var(--logo-standard); width: 100px; height: 50px; margin-left: 15px; } +nav.tabs [data-tab] { + color: var(--title-color); +} #pause > img { content: var(--logo-standard); - height: 192px; + height: 256px; width: 256px; top: -45px; left: calc(50% - 96px); } -i.fvtt-ftl-nomad { +i.fvtt-hellborn { width: 36px; height: 36px; background-image: var(--logo-standard); @@ -53,15 +50,15 @@ i.fvtt-ftl-nomad { filter: grayscale(1); transition: 0.3s; } -.application.dialog.fvtt-ftl-nomad { +.application.dialog.fvtt-hellborn { font-family: var(--font-primary); font-size: calc(var(--font-size-standard) * 1); background-image: var(--background-image-base); } -.application.dialog.fvtt-ftl-nomad button:hover { +.application.dialog.fvtt-hellborn button:hover { background: var(--color-dark-6); } -.application.dialog.fvtt-ftl-nomad .legend { +.application.dialog.fvtt-hellborn .legend { font-family: var(--font-primary); } .chat-message, @@ -169,17 +166,6 @@ i.fvtt-ftl-nomad { min-width: 180px; display: flex; flex-direction: column; - /*.character-dmax-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; - } - }*/ } .fvtt-hellborn .character-main .character-pc .character-left .character-left-image { display: flex; @@ -217,16 +203,18 @@ i.fvtt-ftl-nomad { flex-direction: column; gap: 5px; } -.fvtt-hellborn .character-main .character-pc .character-right .character-spec label { - max-width: 6rem; +.fvtt-hellborn .character-main .character-pc .character-right .character-definition .form-group { + display: flex; + align-items: center; + margin-bottom: 4px; } -.fvtt-hellborn .character-main .character-pc .character-right .character-spec .hero-armor { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; +.fvtt-hellborn .character-main .character-pc .character-right .character-definition label { + max-width: 4rem; } -.fvtt-hellborn .character-main .character-pc .character-right .character-spec .hero-armor input { - max-width: 3rem; +.fvtt-hellborn .character-main .character-pc .character-right .character-definition input { + min-width: 16rem; + max-width: 16rem; + margin-bottom: auto; } .fvtt-hellborn .character-main .character-pc .character-right .character-name { display: flex; @@ -245,125 +233,89 @@ i.fvtt-ftl-nomad { .fvtt-hellborn .character-main .character-pc-edit { min-width: 500px; } -.fvtt-hellborn .character-main .character-skills { +.fvtt-hellborn .character-main .character-stats { background-color: var(--color-light-1); display: flex; flex-direction: column; gap: 5px; flex: 1; } -.fvtt-hellborn .character-main .character-skills .character-skill { +.fvtt-hellborn .character-main .character-stats .character-stat { display: flex; align-items: center; } -.fvtt-hellborn .character-main .character-skills .character-skill .icon-skill { +.fvtt-hellborn .character-main .character-stats .character-stat .icon-stat { width: 24px; height: 24px; margin-right: 4px; } -.fvtt-hellborn .character-main .character-skills .character-skill .rollable:hover, -.fvtt-hellborn .character-main .character-skills .character-skill .rollable:focus { +.fvtt-hellborn .character-main .character-stats .character-stat .rollable:hover, +.fvtt-hellborn .character-main .character-stats .character-stat .rollable:focus { text-shadow: 0 0 8px var(--color-shadow-primary); cursor: pointer; } -.fvtt-hellborn .character-main .character-skills .character-skill .rollable { - min-width: 4.5rem; - max-width: 4.5rem; +.fvtt-hellborn .character-main .character-stats .character-stat .rollable { + min-width: 3.5rem; + max-width: 3.5rem; } -.fvtt-hellborn .character-main .character-skills .character-skill .char-text { - margin-left: 0.5rem; +.fvtt-hellborn .character-main .character-stats .character-stat input { + min-width: 2.5rem; + max-width: 2.5rem; } -.fvtt-hellborn .character-main .character-skills .character-skill .d100 { - flex: 0; - max-width: 0.6rem; +.fvtt-hellborn .character-main .character-stats-play { + min-width: 120px; } -.fvtt-hellborn .character-main .character-skills .character-skill .form-group { - flex: 0; - padding-left: 5px; +.fvtt-hellborn .character-main .character-stats-edit { + min-width: 120px; } -.fvtt-hellborn .character-main .character-skills .character-skill .form-group .form-fields { - font-size: 1.1rem; - flex: none; - width: 40px; -} -.fvtt-hellborn .character-main .character-skill-play { - min-width: 225px; -} -.fvtt-hellborn .character-main .character-skill-edit { - min-width: 225px; -} -.fvtt-hellborn .character-biography { - background-color: var(--color-light-1); -} -.fvtt-hellborn .character-biography prose-mirror.inactive { - min-height: 40px; -} -.fvtt-hellborn .character-biography prose-mirror.active { - min-height: 150px; -} -.fvtt-hellborn .character-biography .field-label { - margin-left: 8px; -} -.fvtt-hellborn .character-biography .rank { - display: grid; - grid-template-columns: repeat(5, 1fr); - gap: 8px; -} -.fvtt-hellborn .character-biography .rank label { - min-width: 6rem; -} -.fvtt-hellborn .character-biography .rank input { - max-width: 4rem; -} -.fvtt-hellborn .character-biography .biodata { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 8px; -} -.fvtt-hellborn .character-biography .biodata label { - min-width: 12rem; -} -.fvtt-hellborn .character-biography .resources { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 8px; -} -.fvtt-hellborn .character-biography .resources label { - min-width: 8rem; -} -.fvtt-hellborn .character-biography .features, -.fvtt-hellborn .character-biography .biodata { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 8px; -} -.fvtt-hellborn .character-biography .features label, -.fvtt-hellborn .character-biography .biodata label { - min-width: 3rem; -} -.fvtt-hellborn .character-biography .features .feature, -.fvtt-hellborn .character-biography .biodata .feature { - display: flex; - align-items: center; - gap: 4px; - min-width: 18rem; - max-width: 18rem; -} -.fvtt-hellborn .tab.character-skills { +.fvtt-hellborn .tab.character-status .main-div { background-color: var(--color-light-1); display: grid; grid-template-columns: 1fr; } -.fvtt-hellborn .tab.character-skills legend a { +.fvtt-hellborn .tab.character-status .main-div legend a { font-size: calc(var(--font-size-standard) * 1.4); padding-left: 5px; } -.fvtt-hellborn .tab.character-skills .skills { +.fvtt-hellborn .tab.character-status .main-div .counters { + display: flex; + direction: column; + align-items: center; + gap: 4px; + margin-left: 4px; +} +.fvtt-hellborn .tab.character-status .main-div .counters input { + min-width: 2.5rem; + max-width: 2.5rem; +} +.fvtt-hellborn .tab.character-status .main-div .ailments { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 4px; +} +.fvtt-hellborn .tab.character-status .main-div .ailments .ailment { + display: flex; + align-items: center; + gap: 4px; + margin-left: 4px; + min-width: 8rem; + max-width: 8rem; +} +.fvtt-hellborn .tab.character-status .main-div .ailments .ailment label { + min-width: 5rem; + max-width: 5rem; +} +.fvtt-hellborn .tab.character-status .main-div .ailments .ailment .item-img { + width: 24px; + height: 24px; + margin: 4px 0 0 0; +} +.fvtt-hellborn .tab.character-status .main-div .perks { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; } -.fvtt-hellborn .tab.character-skills .skills .skill { +.fvtt-hellborn .tab.character-status .main-div .perks .perk { display: flex; align-items: center; gap: 4px; @@ -371,424 +323,222 @@ i.fvtt-ftl-nomad { min-width: 12.3rem; max-width: 12.3rem; } -.fvtt-hellborn .tab.character-skills .skills .skill .rollable:hover, -.fvtt-hellborn .tab.character-skills .skills .skill .rollable:focus { +.fvtt-hellborn .tab.character-status .main-div .perks .perk .rollable:hover, +.fvtt-hellborn .tab.character-status .main-div .perks .perk .rollable:focus { text-shadow: 0 0 8px var(--color-shadow-primary); cursor: pointer; } -.fvtt-hellborn .tab.character-skills .skills .skill .controls { +.fvtt-hellborn .tab.character-status .main-div .perks .perk .controls { font-size: 0.7rem; min-width: 1.8rem; max-width: 1.8rem; } -.fvtt-hellborn .tab.character-skills .skills .skill .score { +.fvtt-hellborn .tab.character-status .main-div .perks .perk .score { min-width: 1.2rem; max-width: 1.2rem; } -.fvtt-hellborn .tab.character-skills .skills .skill .name { +.fvtt-hellborn .tab.character-status .main-div .perks .perk .name { min-width: 10rem; max-width: 10rem; } -.fvtt-hellborn .tab.character-skills .skills .skill .item-img { +.fvtt-hellborn .tab.character-status .main-div .perks .perk .item-img { width: 24px; height: 24px; margin: 4px 0 0 0; } -.fvtt-hellborn .tab.character-status { +.fvtt-hellborn .tab.character-maleficas .main-div { background-color: var(--color-light-1); display: grid; grid-template-columns: 1fr; } -.fvtt-hellborn .tab.character-status legend a { +.fvtt-hellborn .tab.character-maleficas .main-div legend a { font-size: calc(var(--font-size-standard) * 1.4); padding-left: 5px; } -.fvtt-hellborn .tab.character-status .bonds { +.fvtt-hellborn .tab.character-maleficas .main-div .maleficas { display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px; } -.fvtt-hellborn .tab.character-status .bonds .bond { +.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica { display: flex; align-items: center; gap: 4px; min-width: 18rem; max-width: 18rem; } -.fvtt-hellborn .tab.character-status .bonds .bond .controls { +.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .controls { font-size: 0.7rem; min-width: 1.8rem; max-width: 1.8rem; } -.fvtt-hellborn .tab.character-status .bonds .bond .name { +.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .name { min-width: 12rem; max-width: 12rem; } -.fvtt-hellborn .tab.character-status .bonds .bond .type { +.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .type { min-width: 6rem; max-width: 6rem; } -.fvtt-hellborn .tab.character-status .bonds .bond .level { +.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .level { min-width: 2rem; max-width: 2rem; } -.fvtt-hellborn .tab.character-status .bonds .bond .item-img { +.fvtt-hellborn .tab.character-maleficas .main-div .maleficas .malefica .item-img { width: 24px; height: 24px; margin: 4px 0 0 0; } -.fvtt-hellborn .tab.character-status .motivations { +.fvtt-hellborn .tab.character-maleficas .main-div .rituals { display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px; } -.fvtt-hellborn .tab.character-status .motivations .motivation { +.fvtt-hellborn .tab.character-maleficas .main-div .rituals .ritual { display: flex; align-items: center; gap: 4px; min-width: 14rem; max-width: 14rem; } -.fvtt-hellborn .tab.character-status .motivations .motivation .controls { +.fvtt-hellborn .tab.character-maleficas .main-div .rituals .ritual .controls { font-size: 0.7rem; min-width: 1.8rem; max-width: 1.8rem; } -.fvtt-hellborn .tab.character-status .motivations .motivation .name { +.fvtt-hellborn .tab.character-maleficas .main-div .rituals .ritual .name { min-width: 12rem; max-width: 12rem; } -.fvtt-hellborn .tab.character-status .motivations .motivation .item-img { +.fvtt-hellborn .tab.character-maleficas .main-div .rituals .ritual .item-img { width: 24px; height: 24px; margin: 4px 0 0 0; } -.fvtt-hellborn .tab.character-status .mentaldisorders { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; -} -.fvtt-hellborn .tab.character-status .mentaldisorders .mentaldisorder { - display: flex; - align-items: center; - gap: 4px; - min-width: 18rem; - max-width: 18rem; -} -.fvtt-hellborn .tab.character-status .mentaldisorders .mentaldisorder .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; -} -.fvtt-hellborn .tab.character-status .mentaldisorders .mentaldisorder .name { - min-width: 14rem; - max-width: 14rem; -} -.fvtt-hellborn .tab.character-status .mentaldisorders .mentaldisorder .cured { - min-width: 5rem; - max-width: 5rem; -} -.fvtt-hellborn .tab.character-status .mentaldisorders .mentaldisorder .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; -} -.fvtt-hellborn .tab.character-status .injuries { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; -} -.fvtt-hellborn .tab.character-status .injuries .injury { - display: flex; - align-items: center; - gap: 4px; - min-width: 16rem; - max-width: 16rem; -} -.fvtt-hellborn .tab.character-status .injuries .injury .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; -} -.fvtt-hellborn .tab.character-status .injuries .injury .name { - min-width: 14rem; - max-width: 14rem; -} -.fvtt-hellborn .tab.character-status .injuries .injury .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; -} -.fvtt-hellborn .tab.character-talents { +.fvtt-hellborn .tab.character-equipment .main-div { background-color: var(--color-light-1); display: grid; grid-template-columns: 1fr; } -.fvtt-hellborn .tab.character-talents legend a { +.fvtt-hellborn .tab.character-equipment .main-div legend a { font-size: calc(var(--font-size-standard) * 1.4); padding-left: 5px; } -.fvtt-hellborn .tab.character-talents .talents { +.fvtt-hellborn .tab.character-equipment .main-div .weapons { display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px; } -.fvtt-hellborn .tab.character-talents .talents .talent { +.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon { display: flex; align-items: center; gap: 4px; min-width: 13rem; max-width: 13rem; } -.fvtt-hellborn .tab.character-talents .talents .talent .rollable:hover, -.fvtt-hellborn .tab.character-talents .talents .talent .rollable:focus { +.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .rollable:hover, +.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .rollable:focus { text-shadow: 0 0 8px var(--color-shadow-primary); cursor: pointer; } -.fvtt-hellborn .tab.character-talents .talents .talent .controls { +.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .controls { font-size: 0.7rem; min-width: 1.8rem; max-width: 1.8rem; } -.fvtt-hellborn .tab.character-talents .talents .talent .damage { +.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .damage { min-width: 6rem; max-width: 6rem; } -.fvtt-hellborn .tab.character-talents .talents .talent .name { +.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .name { min-width: 10rem; max-width: 10rem; } -.fvtt-hellborn .tab.character-talents .talents .talent .item-img { +.fvtt-hellborn .tab.character-equipment .main-div .weapons .weapon .item-img { width: 24px; height: 24px; margin: 4px 0 0 0; } -.fvtt-hellborn .tab.character-talents .languages { +.fvtt-hellborn .tab.character-equipment .main-div .armors { display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px; } -.fvtt-hellborn .tab.character-talents .languages .language { +.fvtt-hellborn .tab.character-equipment .main-div .armors .armor { display: flex; align-items: center; gap: 4px; min-width: 13rem; max-width: 13rem; } -.fvtt-hellborn .tab.character-talents .languages .language .rollable:hover, -.fvtt-hellborn .tab.character-talents .languages .language .rollable:focus { - text-shadow: 0 0 8px var(--color-shadow-primary); - cursor: pointer; -} -.fvtt-hellborn .tab.character-talents .languages .language .controls { +.fvtt-hellborn .tab.character-equipment .main-div .armors .armor .controls { font-size: 0.7rem; min-width: 1.8rem; max-width: 1.8rem; } -.fvtt-hellborn .tab.character-talents .languages .language .damage { +.fvtt-hellborn .tab.character-equipment .main-div .armors .armor .protection { min-width: 6rem; max-width: 6rem; } -.fvtt-hellborn .tab.character-talents .languages .language .name { +.fvtt-hellborn .tab.character-equipment .main-div .armors .armor .name { min-width: 10rem; max-width: 10rem; } -.fvtt-hellborn .tab.character-talents .languages .language .item-img { +.fvtt-hellborn .tab.character-equipment .main-div .armors .armor .item-img { width: 24px; height: 24px; margin: 4px 0 0 0; } -.fvtt-hellborn .tab.character-talents .psionics { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; -} -.fvtt-hellborn .tab.character-talents .psionics .psionic { - display: flex; - align-items: center; - gap: 4px; - min-width: 13rem; - max-width: 13rem; -} -.fvtt-hellborn .tab.character-talents .psionics .psionic .rollable:hover, -.fvtt-hellborn .tab.character-talents .psionics .psionic .rollable:focus { - text-shadow: 0 0 8px var(--color-shadow-primary); - cursor: pointer; -} -.fvtt-hellborn .tab.character-talents .psionics .psionic .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; -} -.fvtt-hellborn .tab.character-talents .psionics .psionic .damage { - min-width: 6rem; - max-width: 6rem; -} -.fvtt-hellborn .tab.character-talents .psionics .psionic .name { - min-width: 10rem; - max-width: 10rem; -} -.fvtt-hellborn .tab.character-talents .psionics .psionic .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; -} -.fvtt-hellborn .tab.character-equipment { - background-color: var(--color-light-1); - display: grid; - grid-template-columns: 1fr; -} -.fvtt-hellborn .tab.character-equipment legend a { - font-size: calc(var(--font-size-standard) * 1.4); - padding-left: 5px; -} -.fvtt-hellborn .tab.character-equipment .encumbrance { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 4px; -} -.fvtt-hellborn .tab.character-equipment .encumbrance input { - max-width: 4rem; -} -.fvtt-hellborn .tab.character-equipment .encumbrance .encumbered { - color: red; - font-weight: bold; -} -.fvtt-hellborn .tab.character-equipment .implants { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; -} -.fvtt-hellborn .tab.character-equipment .implants .implant { - display: flex; - align-items: center; - gap: 4px; - min-width: 13rem; - max-width: 13rem; -} -.fvtt-hellborn .tab.character-equipment .implants .implant .rollable:hover, -.fvtt-hellborn .tab.character-equipment .implants .implant .rollable:focus { - text-shadow: 0 0 8px var(--color-shadow-primary); - cursor: pointer; -} -.fvtt-hellborn .tab.character-equipment .implants .implant .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; -} -.fvtt-hellborn .tab.character-equipment .implants .implant .damage { - min-width: 6rem; - max-width: 6rem; -} -.fvtt-hellborn .tab.character-equipment .implants .implant .name { - min-width: 10rem; - max-width: 10rem; -} -.fvtt-hellborn .tab.character-equipment .implants .implant .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; -} -.fvtt-hellborn .tab.character-equipment .weapons { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; -} -.fvtt-hellborn .tab.character-equipment .weapons .weapon { - display: flex; - align-items: center; - gap: 4px; - min-width: 13rem; - max-width: 13rem; -} -.fvtt-hellborn .tab.character-equipment .weapons .weapon .rollable:hover, -.fvtt-hellborn .tab.character-equipment .weapons .weapon .rollable:focus { - text-shadow: 0 0 8px var(--color-shadow-primary); - cursor: pointer; -} -.fvtt-hellborn .tab.character-equipment .weapons .weapon .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; -} -.fvtt-hellborn .tab.character-equipment .weapons .weapon .damage { - min-width: 6rem; - max-width: 6rem; -} -.fvtt-hellborn .tab.character-equipment .weapons .weapon .name { - min-width: 10rem; - max-width: 10rem; -} -.fvtt-hellborn .tab.character-equipment .weapons .weapon .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; -} -.fvtt-hellborn .tab.character-equipment .armors { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; -} -.fvtt-hellborn .tab.character-equipment .armors .armor { - display: flex; - align-items: center; - gap: 4px; - min-width: 13rem; - max-width: 13rem; -} -.fvtt-hellborn .tab.character-equipment .armors .armor .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; -} -.fvtt-hellborn .tab.character-equipment .armors .armor .protection { - min-width: 6rem; - max-width: 6rem; -} -.fvtt-hellborn .tab.character-equipment .armors .armor .name { - min-width: 10rem; - max-width: 10rem; -} -.fvtt-hellborn .tab.character-equipment .armors .armor .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; -} -.fvtt-hellborn .tab.character-equipment .equipments { +.fvtt-hellborn .tab.character-equipment .main-div .equipments { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; } -.fvtt-hellborn .tab.character-equipment .equipments .equipment { +.fvtt-hellborn .tab.character-equipment .main-div .equipments .equipment { display: flex; align-items: center; gap: 4px; min-width: 13rem; max-width: 13rem; } -.fvtt-hellborn .tab.character-equipment .equipments .equipment .rollable:hover, -.fvtt-hellborn .tab.character-equipment .equipments .equipment .rollable:focus { +.fvtt-hellborn .tab.character-equipment .main-div .equipments .equipment .rollable:hover, +.fvtt-hellborn .tab.character-equipment .main-div .equipments .equipment .rollable:focus { text-shadow: 0 0 8px var(--color-shadow-primary); cursor: pointer; } -.fvtt-hellborn .tab.character-equipment .equipments .equipment .controls { +.fvtt-hellborn .tab.character-equipment .main-div .equipments .equipment .controls { font-size: 0.7rem; min-width: 1.8rem; max-width: 1.8rem; } -.fvtt-hellborn .tab.character-equipment .equipments .equipment .name { +.fvtt-hellborn .tab.character-equipment .main-div .equipments .equipment .name { min-width: 10rem; max-width: 10rem; } -.fvtt-hellborn .tab.character-equipment .equipments .equipment .item-img { +.fvtt-hellborn .tab.character-equipment .main-div .equipments .equipment .item-img { width: 24px; height: 24px; margin: 4px 0 0 0; } -.fvtt-hellborn .tab.character-equipment prose-mirror.inactive { +.fvtt-hellborn .tab.character-equipment .main-div prose-mirror.inactive { min-height: 40px; } -.fvtt-hellborn .tab.character-equipment prose-mirror.active { +.fvtt-hellborn .tab.character-equipment .main-div prose-mirror.active { + min-height: 150px; +} +.fvtt-hellborn .tab.character-biography .main-div { + background-color: var(--color-light-1); + display: grid; + grid-template-columns: 1fr; +} +.fvtt-hellborn .tab.character-biography .main-div legend a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; +} +.fvtt-hellborn .tab.character-biography .main-div prose-mirror.inactive { + min-height: 40px; +} +.fvtt-hellborn .tab.character-biography .main-div prose-mirror.active { min-height: 150px; } .fvtt-hellborn .vehicle-content { @@ -2021,6 +1771,198 @@ i.fvtt-ftl-nomad { .fvtt-hellborn .armor-content label { flex: 10%; } +.fvtt-hellborn .deal-content { + font-family: var(--font-primary); + font-size: calc(var(--font-size-standard) * 1); + color: var(--color-dark-1); + background-image: var(--background-image-base); + background-repeat: no-repeat; + background-size: 100% 100%; +} +.fvtt-hellborn .deal-content input:disabled, +.fvtt-hellborn .deal-content select:disabled { + background-color: rgba(0, 0, 0, 0.2); + border-color: transparent; + color: var(--color-dark-3); +} +.fvtt-hellborn .deal-content input, +.fvtt-hellborn .deal-content select { + background-color: rgba(0, 0, 0, 0.1); + border-color: var(--color-dark-6); + color: var(--color-dark-2); +} +.fvtt-hellborn .deal-content input[name="name"] { + height: 40px; + margin-right: 10px; + font-family: var(--font-title); + font-size: calc(var(--font-size-standard) * 1.2); + font-weight: bold; + border: none; + margin-top: 4px; +} +.fvtt-hellborn .deal-content fieldset { + margin-bottom: 4px; + border-radius: 4px; +} +.fvtt-hellborn .deal-content .form-fields input, +.fvtt-hellborn .deal-content .form-fields select { + text-align: center; + font-size: calc(var(--font-size-standard) * 1); +} +.fvtt-hellborn .deal-content .form-fields select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1); +} +.fvtt-hellborn .deal-content legend { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.2); + font-weight: bold; + letter-spacing: 1px; +} +.fvtt-hellborn .deal-content .form-fields { + padding-top: 4px; +} +.fvtt-hellborn .deal-content label { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1); + flex: 50%; +} +.fvtt-hellborn .deal-content .align-top { + align-self: flex-start; + padding: 0.1rem; + margin-right: 0.2rem; +} +.fvtt-hellborn .deal-content .shift-right { + margin-left: 2rem; +} +.fvtt-hellborn .deal-content fieldset { + margin-top: 8px; + background-color: var(--color-light-1); +} +.fvtt-hellborn .deal-content fieldset .form-group { + display: flex; + align-items: center; +} +.fvtt-hellborn .deal-content fieldset .form-group.long-input input { + min-width: 24rem; + max-width: 24rem; + text-align: left; +} +.fvtt-hellborn .deal-content fieldset .form-group input { + min-width: 12rem; + max-width: 12rem; +} +.fvtt-hellborn .deal-content fieldset .form-group select { + min-width: 12rem; + max-width: 12rem; +} +.fvtt-hellborn .deal-content .header { + background-color: var(--color-light-1); + display: flex; +} +.fvtt-hellborn .deal-content .header img { + width: 50px; + height: 50px; +} +.fvtt-hellborn .deal-content label { + flex: 10%; +} +.fvtt-hellborn .tarot-content { + font-family: var(--font-primary); + font-size: calc(var(--font-size-standard) * 1); + color: var(--color-dark-1); + background-image: var(--background-image-base); + background-repeat: no-repeat; + background-size: 100% 100%; +} +.fvtt-hellborn .tarot-content input:disabled, +.fvtt-hellborn .tarot-content select:disabled { + background-color: rgba(0, 0, 0, 0.2); + border-color: transparent; + color: var(--color-dark-3); +} +.fvtt-hellborn .tarot-content input, +.fvtt-hellborn .tarot-content select { + background-color: rgba(0, 0, 0, 0.1); + border-color: var(--color-dark-6); + color: var(--color-dark-2); +} +.fvtt-hellborn .tarot-content input[name="name"] { + height: 40px; + margin-right: 10px; + font-family: var(--font-title); + font-size: calc(var(--font-size-standard) * 1.2); + font-weight: bold; + border: none; + margin-top: 4px; +} +.fvtt-hellborn .tarot-content fieldset { + margin-bottom: 4px; + border-radius: 4px; +} +.fvtt-hellborn .tarot-content .form-fields input, +.fvtt-hellborn .tarot-content .form-fields select { + text-align: center; + font-size: calc(var(--font-size-standard) * 1); +} +.fvtt-hellborn .tarot-content .form-fields select { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1); +} +.fvtt-hellborn .tarot-content legend { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1.2); + font-weight: bold; + letter-spacing: 1px; +} +.fvtt-hellborn .tarot-content .form-fields { + padding-top: 4px; +} +.fvtt-hellborn .tarot-content label { + font-family: var(--font-secondary); + font-size: calc(var(--font-size-standard) * 1); + flex: 50%; +} +.fvtt-hellborn .tarot-content .align-top { + align-self: flex-start; + padding: 0.1rem; + margin-right: 0.2rem; +} +.fvtt-hellborn .tarot-content .shift-right { + margin-left: 2rem; +} +.fvtt-hellborn .tarot-content fieldset { + margin-top: 8px; + background-color: var(--color-light-1); +} +.fvtt-hellborn .tarot-content fieldset .form-group { + display: flex; + align-items: center; +} +.fvtt-hellborn .tarot-content fieldset .form-group.long-input input { + min-width: 24rem; + max-width: 24rem; + text-align: left; +} +.fvtt-hellborn .tarot-content fieldset .form-group input { + min-width: 12rem; + max-width: 12rem; +} +.fvtt-hellborn .tarot-content fieldset .form-group select { + min-width: 12rem; + max-width: 12rem; +} +.fvtt-hellborn .tarot-content .header { + background-color: var(--color-light-1); + display: flex; +} +.fvtt-hellborn .tarot-content .header img { + width: 50px; + height: 50px; +} +.fvtt-hellborn .tarot-content label { + flex: 10%; +} .fvtt-hellborn .ritual-content { font-family: var(--font-primary); font-size: calc(var(--font-size-standard) * 1); @@ -2376,6 +2318,23 @@ i.fvtt-ftl-nomad { margin-top: 8px; background-color: var(--color-light-1); } +.fvtt-hellborn .species-trait-content fieldset .form-group { + display: flex; + align-items: center; +} +.fvtt-hellborn .species-trait-content fieldset .form-group.long-input input { + min-width: 24rem; + max-width: 24rem; + text-align: left; +} +.fvtt-hellborn .species-trait-content fieldset .form-group input { + min-width: 12rem; + max-width: 12rem; +} +.fvtt-hellborn .species-trait-content fieldset .form-group select { + min-width: 12rem; + max-width: 12rem; +} .fvtt-hellborn .species-trait-content .header { background-color: var(--color-light-1); display: flex; diff --git a/fvtt-hellborn.mjs b/fvtt-hellborn.mjs index 5a1c797..161281c 100644 --- a/fvtt-hellborn.mjs +++ b/fvtt-hellborn.mjs @@ -45,6 +45,8 @@ Hooks.once("init", function () { malefica: models.HellbornMalefica, equipment: models.HellbornEquipment, armor: models.HellbornArmor, + deal: models.HellbornDeal, + tarot: models.HellbornTarot, "species-trait": models.HellbornSpeciesTrait } @@ -62,6 +64,8 @@ Hooks.once("init", function () { foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornMaleficaSheet, { types: ["malefica"], makeDefault: true }) foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornSpeciesTraitSheet, { types: ["species-trait"], makeDefault: true }) foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornArmorSheet, { types: ["armor"], makeDefault: true }) + foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornTarotSheet, { types: ["tarot"], makeDefault: true }) + foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornDealSheet, { types: ["deal"], makeDefault: true }) // Other Document Configuration CONFIG.ChatMessage.documentClass = documents.HellbornChatMessage diff --git a/lang/en.json b/lang/en.json index 78cf050..ef3e469 100644 --- a/lang/en.json +++ b/lang/en.json @@ -7,8 +7,11 @@ "label": "Protection" } }, - "heroPoints": { - "label": "Hero Points" + "pronouns": { + "label": "Pronouns" + }, + "trait": { + "label": "Trait" }, "credits": { "label": "Credits" @@ -289,6 +292,29 @@ } } }, + "Tarot": { + "FIELDS": { + "description": { + "label": "Description" + }, + "bonus": { + "label": "Bonus" + }, + "orientation": { + "label": "Orientation" + } + } + }, + "Deal": { + "FIELDS": { + "description": { + "label": "Description" + }, + "promisor": { + "label": "Promisor" + } + } + }, "Ritual": { "FIELDS": { "cost": { @@ -315,6 +341,23 @@ } }, "Label": { + "trauma": "Trauma", + "stats": "Stats", + "appearance": "Appearance", + "flesh": "Flesh", + "skin": "Skin", + "heart": "Heart", + "mind": "Mind", + "soul": "Soul", + "Counters": "Counters", + "perks": "Perks", + "maleficas": "Maleficas", + "rituals": "Rituals", + "speciesTraits": "Species Traits", + "species": "Species", + "ailments": "Ailments", + "positiveEffect": "Positive Effect", + "negativeEffect": "Negative Effect", "damages": "Damages", "modifications": "Modifications", "abilities": "Abilities", @@ -568,11 +611,9 @@ "malefica": "Malefica", "perk": "Perk", "weapon": "Weapon", - "armor": "Armor" - - - - + "armor": "Armor", + "tarot": "Tarot", + "deal": "Deal" } } } \ No newline at end of file diff --git a/module/applications/_module.mjs b/module/applications/_module.mjs index 8bd1717..cec277c 100644 --- a/module/applications/_module.mjs +++ b/module/applications/_module.mjs @@ -9,3 +9,5 @@ export { default as HellbornSpeciesTraitSheet } from "./sheets/species-trait-she export { default as HellbornPerkSheet } from "./sheets/perk-sheet.mjs" export { default as HellbornMaleficaSheet } from "./sheets/malefica-sheet.mjs" export { default as HellbornArmorSheet } from "./sheets/armor-sheet.mjs" +export { default as HellbornTarotSheet } from "./sheets/tarot-sheet.mjs" +export { default as HellbornDealSheet } from "./sheets/deal-sheet.mjs" diff --git a/module/applications/sheets/base-actor-sheet.mjs b/module/applications/sheets/base-actor-sheet.mjs index 7099edc..9ebfcd3 100644 --- a/module/applications/sheets/base-actor-sheet.mjs +++ b/module/applications/sheets/base-actor-sheet.mjs @@ -66,8 +66,7 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found actor: this.document, system: this.document.system, source: this.document.toObject(), - isEncumbered: this.document.system.isEncumbered(), - enrichedDescription: await TextEditor.enrichHTML(this.document.system.description, { async: true }), + enrichedBackstory: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.backstory, { async: true }), isEditMode: this.isEditMode, isPlayMode: this.isPlayMode, isEditable: this.isEditable, @@ -99,7 +98,7 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found dragover: this._onDragOver.bind(this), drop: this._onDrop.bind(this), } - return new DragDrop(d) + return new foundry.applications.ux.DragDrop.implementation(d) }) } diff --git a/module/applications/sheets/character-sheet.mjs b/module/applications/sheets/character-sheet.mjs index 3083ee4..0ae8e75 100644 --- a/module/applications/sheets/character-sheet.mjs +++ b/module/applications/sheets/character-sheet.mjs @@ -15,11 +15,9 @@ export default class HellbornCharacterSheet extends HellbornActorSheet { createEquipment: HellbornCharacterSheet.#onCreateEquipment, createArmor: HellbornCharacterSheet.#onCreateArmor, createWeapon: HellbornCharacterSheet.#onCreateWeapon, - createTalent: HellbornCharacterSheet.#onCreateTalent, - createImplant: HellbornCharacterSheet.#onCreateImplant, - createPsionic: HellbornCharacterSheet.#onCreatePsionic, - createLanguage: HellbornCharacterSheet.#onCreateLanguage - + createDeal: HellbornCharacterSheet.#onCreateDeal, + createMalefica: HellbornCharacterSheet.#onCreateMalefica, + createRitual: HellbornCharacterSheet.#onCreateRitual, }, } @@ -31,8 +29,11 @@ export default class HellbornCharacterSheet extends HellbornActorSheet { tabs: { template: "templates/generic/tab-navigation.hbs", }, - talents: { - template: "systems/fvtt-hellborn/templates/character-talents.hbs", + status: { + template: "systems/fvtt-hellborn/templates/character-status.hbs", + }, + maleficas: { + template: "systems/fvtt-hellborn/templates/character-maleficas.hbs", }, equipment: { template: "systems/fvtt-hellborn/templates/character-equipment.hbs", @@ -44,7 +45,7 @@ export default class HellbornCharacterSheet extends HellbornActorSheet { /** @override */ tabGroups = { - sheet: "talents", + sheet: "status", } /** @@ -53,7 +54,8 @@ export default class HellbornCharacterSheet extends HellbornActorSheet { */ #getTabs() { const tabs = { - talents: { id: "talents", group: "sheet", icon: "fa-solid fa-compass", label: "HELLBORN.Label.talents" }, + status: { id: "status", group: "sheet", icon: "fa-solid fa-compass", label: "HELLBORN.Label.status" }, + maleficas: { id: "maleficas", group: "sheet", icon: "fa-solid fa-compass", label: "HELLBORN.Label.maleficas" }, equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "HELLBORN.Label.equipment" }, biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "HELLBORN.Label.biography" }, } @@ -69,28 +71,27 @@ export default class HellbornCharacterSheet extends HellbornActorSheet { const context = await super._prepareContext() context.tabs = this.#getTabs() - context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) - context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true }) - return context } /** @override */ async _preparePartContext(partId, context) { const doc = this.document + context.systemFields = this.document.system.schema.fields switch (partId) { case "main": break - case "talents": - context.tab = context.tabs.talents - context.talents = doc.itemTypes.talent - context.talents.sort((a, b) => a.name.localeCompare(b.name)) - context.implants = doc.itemTypes.implant - context.implants.sort((a, b) => a.name.localeCompare(b.name)) - context.psionics = doc.itemTypes.psionic - context.psionics.sort((a, b) => a.name.localeCompare(b.name)) - context.languages = doc.itemTypes.language - context.languages.sort((a, b) => a.name.localeCompare(b.name)) + case "status": + context.tab = context.tabs.status + context.perks = doc.itemTypes.perk + context.perks.sort((a, b) => a.name.localeCompare(b.name)) + break; + case "maleficas": + context.tab = context.tabs.maleficas + context.maleficas = doc.itemTypes.malefica + context.maleficas.sort((a, b) => a.name.localeCompare(b.name)) + context.rituals = doc.itemTypes.ritual + context.rituals.sort((a, b) => a.name.localeCompare(b.name)) break case "equipment": context.tab = context.tabs.equipment @@ -103,8 +104,21 @@ export default class HellbornCharacterSheet extends HellbornActorSheet { break case "biography": context.tab = context.tabs.biography - context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true }) - context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true }) + context.deals = doc.itemTypes.deal + context.deals.sort((a, b) => a.name.localeCompare(b.name)) + context.tarot = doc.itemTypes.tarot + context.enrichedBackstory = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.backstory, { async: true }) + context.enrichedAppearance = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.appearance, { async: true }) + context.enrichedScars = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.scars, { async: true }) + context.enrichedLikes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.likes, { async: true }) + context.enrichedDislikes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.dislikes, { async: true }) + context.enrichedFears = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.fears, { async: true }) + context.enrichedVices = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.vices, { async: true }) + context.enrichedGoals = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.goals, { async: true }) + context.enrichedAmbitions = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.ambitions, { async: true }) + context.enrichedValues = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.values, { async: true }) + context.enrichedBonds = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.bonds, { async: true }) + context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.notes, { async: true }) break } return context @@ -115,6 +129,18 @@ export default class HellbornCharacterSheet extends HellbornActorSheet { this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newEquipment"), type: "equipment" }]) } + static #onCreateDeal(event, target) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newDeal"), type: "deal" }]) + } + + static #onCreateMalefica(event, target) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newMalefica"), type: "malefica" }]) + } + + static #onCreateRitual(event, target) { + this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newRitual"), type: "ritual" }]) + } + static #onCreateWeapon(event, target) { this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newWeapon"), type: "weapon" }]) } @@ -123,21 +149,6 @@ export default class HellbornCharacterSheet extends HellbornActorSheet { this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newArmor"), type: "armor" }]) } - static #onCreateTalent(event, target) { - this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newTalent"), type: "talent" }]) - } - - static #onCreateImplant(event, target) { - this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newImplant"), type: "implant" }]) - } - - static #onCreatePsionic(event, target) { - this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newPsionic"), type: "psionic" }]) - } - - static #onCreateLanguage(event, target) { - this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newLanguage"), type: "language" }]) - } /** @@ -158,10 +169,11 @@ export default class HellbornCharacterSheet extends HellbornActorSheet { const rollType = $(event.currentTarget).data("roll-type") let item let li + let statKey switch (rollType) { - case "skill": - let skillId = $(event.currentTarget).data("skill-id"); - item = this.actor.system.skills[skillId]; + case "stat": + statKey = $(event.currentTarget).data("stat-id"); + item = this.actor.system.stats[statKey]; break case "weapon": case "damage": diff --git a/module/applications/sheets/deal-sheet.mjs b/module/applications/sheets/deal-sheet.mjs new file mode 100644 index 0000000..0e948d7 --- /dev/null +++ b/module/applications/sheets/deal-sheet.mjs @@ -0,0 +1,28 @@ +import HellbornItemSheet from "./base-item-sheet.mjs" + +export default class HellbornDealSheet extends HellbornItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["deal"], + position: { + width: 600, + }, + window: { + contentClasses: ["deal-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-hellborn/templates/deal.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true }) + return context + } +} diff --git a/module/applications/sheets/tarot-sheet.mjs b/module/applications/sheets/tarot-sheet.mjs new file mode 100644 index 0000000..8dbc2f6 --- /dev/null +++ b/module/applications/sheets/tarot-sheet.mjs @@ -0,0 +1,30 @@ +import HellbornItemSheet from "./base-item-sheet.mjs" + +export default class HellbornTarotSheet extends HellbornItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["tarot"], + position: { + width: 800, + height: 640 + }, + window: { + contentClasses: ["tarot-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-hellborn/templates/tarot.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.enrichedPositiveEffect = await TextEditor.enrichHTML(this.document.system.positiveEffect, { async: true }) + context.enrichedNegativeEffect = await TextEditor.enrichHTML(this.document.system.negativeEffect, { async: true }) + return context + } +} diff --git a/module/config/system.mjs b/module/config/system.mjs index 49e4241..ddb82a3 100644 --- a/module/config/system.mjs +++ b/module/config/system.mjs @@ -7,6 +7,30 @@ export const ASCII = ` ` +export const AILMENTS = { + "bleeding": { id: "bleeding", label: "Bleeding" }, + "blinded": { id: "blinded", label: "Blinded" }, + "burning": { id: "burning", label: "Burning" }, + "dazed": { id: "dazed", label: "Dazed" }, + "deafened": { id: "deafened", label: "Deafened" }, + "exposes": { id: "exposed", label: "Exposed" }, + "mortally": { id: "mortal", label: "Mortal" }, + "muted": { id: "muted", label: "Muted" }, + "prone": { id: "prone", label: "Prone" }, + "immobilized": { id: "immobilized", label: "Immobile" }, + "shaken": { id: "shaken", label: "Shaken" }, + "stunned": { id: "stunned", label: "Stunned" }, + "winded": { id: "winded", label: "Winded" } +} + +export const STATS = { + "flesh": { id: "flesh", label: "Flesh" }, + "skin": { id: "skin", label: "Skin" }, + "heart": { id: "heart", label: "Heart" }, + "mind": { id: "mind", label: "Mind" }, + "soul": { id: "soul", label: "Soul" } +} + export const PERK_ROLES = { "abbetor": { id: "abbetor", label: "Abbetor" }, "blade": { id: "blade", label: "Blade" }, @@ -68,47 +92,6 @@ export const ATTACK_MODIFIERS = { "aware": -1 } -export const TRIAGE_RESULTS = { - "none": { id: "none", dice:0, label: "HELLBORN.TriageResults.None" }, - "death": { id: "death", dice:3, label: "HELLBORN.TriageResults.Death" }, - "critical": { id: "critical", dice:4, label: "HELLBORN.TriageResults.Critical" }, - "severe": { id: "severe", dice:7, label: "HELLBORN.TriageResults.Severe" }, - "moderate": { id: "moderate", dice:10, label: "HELLBORN.TriageResults.Moderate" }, - "fleshwound": { id: "fleshwound", dice:12, label: "HELLBORN.TriageResults.FleshWound" } -} - -export const CREATURE_TERRAIN_TYPES = { - "cave": { id: "cave", label: "HELLBORN.Creature.Terrain.Cave", niche:0, size: 0 }, - "coast": { id: "coast", label: "HELLBORN.Creature.Terrain.Coast", niche:1, size: 0 }, - "desert": { id: "desert", label: "HELLBORN.Creature.Terrain.Desert", niche:-1, size: -1 }, - "forest": { id: "forest", label: "HELLBORN.Creature.Terrain.Forest", niche:1, size: 1 }, - "jungle": { id: "jungle", label: "HELLBORN.Creature.Terrain.Jungle", niche:1, size: 1 }, - "mixed": { id: "mixed", label: "HELLBORN.Creature.Terrain.Mixed", niche:0, size: 0 }, - "mountain": { id: "mountain", label: "HELLBORN.Creature.Terrain.Mountain", niche:-1, size: -1 }, - "ocean": { id: "ocean", label: "HELLBORN.Creature.Terrain.Ocean", niche:-1, size: 1 }, - "river": { id: "river", label: "HELLBORN.Creature.Terrain.River", niche:1, size: 0 }, - "ruins": { id: "ruins", label: "HELLBORN.Creature.Terrain.Ruins", niche:0, size: 1 }, - "savannah": { id: "savannah", label: "HELLBORN.Creature.Terrain.Savannah", niche:0, size: 1 }, - "shallows": { id: "shallows", label: "HELLBORN.Creature.Terrain.Shallows", niche:1, size: 0 }, - "swamp": { id: "swamp", label: "HELLBORN.Creature.Terrain.Swamp", niche:1, size: 1 } -} - -export const CREATURE_NICHES = { - "prey": { id: "prey", label: "HELLBORN.Creature.Niche.Prey" }, - "opportunist": { id: "opportunist", label: "HELLBORN.Creature.Niche.Opportunist" }, - "herbivore": { id: "herbivore", label: "HELLBORN.Creature.Niche.Herbivore" }, - "predator": { id: "predator", label: "HELLBORN.Creature.Niche.Predator" } -} - -export const CREATURE_SIZES = { - "tiny": { id: "tiny", label: "HELLBORN.Creature.Size.Tiny" }, - "small": { id: "small", label: "HELLBORN.Creature.Size.Small" }, - "medium": { id: "medium", label: "HELLBORN.Creature.Size.Medium" }, - "large": { id: "large", label: "HELLBORN.Creature.Size.Large" }, - "giant": { id: "giant", label: "HELLBORN.Creature.Size.Giant" }, - "titanic": { id: "titanic", label: "HELLBORN.Creature.Size.Titanic" } -} - export const MODIFIER_CHOICES = { "easy": { id: "easy", label: "HELLBORN.Label.Easy", value :"1" }, "moderate": { id: "moderate", label: "HELLBORN.Label.Moderate", value: "0" }, @@ -117,24 +100,14 @@ export const MODIFIER_CHOICES = { "impossible": { id: "impossible", label: "HELLBORN.Label.Impossible", value: "-4" } } -export const STARSHIP_HULL = { - "pod": { id: "pod", label: "HELLBORN.Starship.Hull.Pod" }, - "micro": { id: "micro", label: "HELLBORN.Starship.Hull.Micro" }, - "small": { id: "small", label: "HELLBORN.Starship.Hull.Small" }, - "scout": { id: "scout", label: "HELLBORN.Starship.Hull.Scout" }, - "picket": { id: "picket", label: "HELLBORN.Starship.Hull.Picket" }, - "destroyer": { id: "destroyer", label: "HELLBORN.Starship.Hull.Destroyer" }, - "cruiser": { id: "cruiser", label: "HELLBORN.Starship.Hull.Cruiser" }, - "battleship": { id: "battleship", label: "HELLBORN.Starship.Hull.Battleship" }, - "carrier": { id: "carrier", label: "HELLBORN.Starship.Hull.Carrier" } -} - /** * Include all constant definitions within the SYSTEM global export * @type {Object} */ export const SYSTEM = { id: SYSTEM_ID, + AILMENTS, + STATS, PERK_ROLES, PERK_LEVELS, MALEFICA_LEVELS, @@ -143,10 +116,5 @@ export const SYSTEM = { ATTACK_MODIFIERS, WEAPON_TYPES, RANGED_SUBTYPES, - TRIAGE_RESULTS, - CREATURE_TERRAIN_TYPES, - CREATURE_SIZES, - CREATURE_NICHES, - STARSHIP_HULL, ASCII } diff --git a/module/documents/item.mjs b/module/documents/item.mjs index e8a2d23..bef80fe 100644 --- a/module/documents/item.mjs +++ b/module/documents/item.mjs @@ -6,6 +6,8 @@ export const defaultItemImg = { perk: "systems/fvtt-hellborn/assets/icons/perk.webp", "species-trait": "systems/fvtt-hellborn/assets/icons/species-trait.webp", armor: "systems/fvtt-hellborn/assets/icons/armor.webp", + deal: "systems/fvtt-hellborn/assets/icons/deal.webp", + tarot: "systems/fvtt-hellborn/assets/icons/tarot.webp", } export default class HellbornItem extends Item { diff --git a/module/models/_module.mjs b/module/models/_module.mjs index b0e7716..7036bcd 100644 --- a/module/models/_module.mjs +++ b/module/models/_module.mjs @@ -8,3 +8,5 @@ export { default as HellbornMalefica } from "./malefica.mjs" export { default as HellbornSpeciesTrait } from "./species-trait.mjs" export { default as HellbornWeapon } from "./weapon.mjs" export { default as HellbornArmor } from "./armor.mjs" +export { default as HellbornTarot } from "./tarot.mjs" +export { default as HellbornDeal } from "./deal.mjs" diff --git a/module/models/character.mjs b/module/models/character.mjs index 511b95d..415c766 100644 --- a/module/models/character.mjs +++ b/module/models/character.mjs @@ -7,51 +7,100 @@ export default class HellbornActor extends foundry.abstract.TypeDataModel { const requiredInteger = { required: true, nullable: false, integer: true } const schema = {} - schema.description = new fields.HTMLField({ required: true, textSearch: true }) + + // Ailments + const ailmentField = (label) => { + const schema = { + enabled: new fields.BooleanField({ required: true, initial: false }), + label: new fields.StringField({ required: true, initial: label }) + } + return new fields.SchemaField(schema, { label }) + } + schema.ailments = new fields.SchemaField( + Object.values(SYSTEM.AILMENTS).reduce((obj, ailment) => { + obj[ailment.id] = ailmentField(ailment.label) + return obj + }, {}), + ) + + // Stats + const statField = (label) => { + const schema = { + label: new fields.StringField({ required: true, initial: label }), + value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + + } + return new fields.SchemaField(schema, { label }) + } + schema.stats = new fields.SchemaField( + Object.values(SYSTEM.STATS).reduce((obj, stat) => { + obj[stat.id] = statField(stat.label) + return obj + }, {}), + ) + + schema.backstory = new fields.HTMLField({ required: true, textSearch: true }) + schema.appearance = new fields.HTMLField({ required: true, textSearch: true }) + schema.scars = new fields.HTMLField({ required: true, textSearch: true }) + schema.likes = new fields.HTMLField({ required: true, textSearch: true }) + schema.dislikes = new fields.HTMLField({ required: true, textSearch: true }) + schema.fears = new fields.HTMLField({ required: true, textSearch: true }) + schema.vices = new fields.HTMLField({ required: true, textSearch: true }) + schema.goals = new fields.HTMLField({ required: true, textSearch: true }) + schema.ambitions = new fields.HTMLField({ required: true, textSearch: true }) + schema.values = new fields.HTMLField({ required: true, textSearch: true }) + schema.bonds = new fields.HTMLField({ required: true, textSearch: true }) schema.notes = new fields.HTMLField({ required: true, textSearch: true }) - schema.name = new fields.StringField({ required: true, nullable: false, initial: "" }) + schema.pronouns = new fields.StringField({ required: true, nullable: false, initial: "" }) schema.species = new fields.StringField({ required: true, nullable: false, initial: "" }) schema.trait = new fields.StringField({ required: true, nullable: false, initial: "" }) - schema.upright = new fields.StringField({ required: true, nullable: false, initial: "" }) - schema.reversed = new fields.StringField({ required: true, nullable: false, initial: "" }) - schema.heroPoints = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) - - schema.health = new fields.SchemaField({ - staminaValue: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), - staminaMax: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), - wounds: new fields.NumberField({ ...requiredInteger, initial:0, min: 0 }), - triageResults: new fields.StringField({ required: true, nullable: false, initial: "none", choices: SYSTEM.TRIAGE_RESULTS }) + schema.mortality = new fields.SchemaField({ + current: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), }) - schema.enc = new fields.SchemaField({ - value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), - max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + schema.trauma = new fields.SchemaField({ + current: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), }) - schema.armor = new fields.SchemaField({ - value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) + schema.darkness = new fields.SchemaField({ + current: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), + max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), + value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }), }) - schema.credits = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) - schema.rank = new fields.SchemaField({ - experienced: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }), - expert: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }), - veteran: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }), - elite: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }), - legend: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }) + schema.defense = new fields.SchemaField({ + base: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + resistance: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.movement = new fields.SchemaField({ + base: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + reduce: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + }) + + schema.experience = new fields.SchemaField({ + training: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), + total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) }) schema.biodata = new fields.SchemaField({ age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }), height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }), - weight: new fields.NumberField({ ...requiredInteger, initial: 70, min: 1 }), - gender: new fields.StringField({ required: true, nullable: false, initial: "" }), - home: new fields.StringField({ required: true, nullable: false, initial: "" }), birthplace: new fields.StringField({ required: true, nullable: false, initial: "" }), - eyes: new fields.StringField({ required: true, nullable: false, initial: "" }), - hair: new fields.StringField({ required: true, nullable: false, initial: "" }) + home: new fields.StringField({ required: true, nullable: false, initial: "" }), + weight: new fields.NumberField({ ...requiredInteger, initial: 70, min: 1 }), + apparentAge: new fields.NumberField({ ...requiredInteger, initial: 20, min: 1 }), + chronologicalAge: new fields.NumberField({ ...requiredInteger, initial: 20, min: 1 }), + dod: new fields.StringField({ required: true, nullable: false, initial: "" }), + soul: new fields.StringField({ required: true, nullable: false, initial: "" }), + aliases: new fields.StringField({ required: true, nullable: false, initial: "" }) }) return schema @@ -65,10 +114,6 @@ export default class HellbornActor extends foundry.abstract.TypeDataModel { } - isEncumbered() { - return this.enc.value > this.enc.max - } - /** */ /** * Rolls a dice for a character. diff --git a/module/models/deal.mjs b/module/models/deal.mjs new file mode 100644 index 0000000..9f4c7f5 --- /dev/null +++ b/module/models/deal.mjs @@ -0,0 +1,16 @@ +import { SYSTEM } from "../config/system.mjs"; + +export default class HellbornDeal extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields; + const schema = {}; + + schema.promisor = new fields.StringField({ required: true, initial: "" }); + schema.description = new fields.HTMLField({ required: true, textSearch: true }) + + return schema; + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["HELLBORN.Deal"]; +} \ No newline at end of file diff --git a/module/models/tarot.mjs b/module/models/tarot.mjs new file mode 100644 index 0000000..682ffbd --- /dev/null +++ b/module/models/tarot.mjs @@ -0,0 +1,22 @@ +import { SYSTEM } from "../config/system.mjs"; + +export default class HellbornTarot extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields; + const schema = {}; + + schema.orientation = new fields.StringField({ required: true, initial: "Upright", choices: {"Upright": {label: "Upright"}, "Reversed": {label: "Reversed"}} }); + schema.positiveEffect = new fields.HTMLField({ required: true, textSearch: true }) + schema.negativeEffect = new fields.HTMLField({ required: true, textSearch: true }) + schema.image = new fields.FilePathField({ + required: false, + categories: ["IMAGE"], + default: "icons/svg/treasure.svg", + }) + + return schema; + } + + /** @override */ + static LOCALIZATION_PREFIXES = ["HELLBORN.Tarot"]; +} \ No newline at end of file diff --git a/styles/character.less b/styles/character.less index 3bc8268..b95f933 100644 --- a/styles/character.less +++ b/styles/character.less @@ -57,17 +57,6 @@ flex: none; } } - /*.character-dmax-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; - } - }*/ } .character-right { @@ -75,17 +64,19 @@ flex-direction: column; gap: 5px; - .character-spec { - label { - max-width: 6rem; + .character-definition { + .form-group { + display: flex; + align-items: center; + margin-bottom: 4px; } - .hero-armor { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; - input { - max-width: 3rem; - } + label { + max-width: 4rem; + } + input { + min-width: 16rem; + max-width: 16rem; + margin-bottom: auto; } } .character-name { @@ -110,17 +101,17 @@ min-width: 500px; } - .character-skills { + .character-stats { background-color: var(--color-light-1); display: flex; flex-direction: column; gap: 5px; flex: 1; - .character-skill { + .character-stat { display: flex; align-items: center; - .icon-skill { + .icon-stat { width: 24px; height: 24px; margin-right: 4px; @@ -131,98 +122,26 @@ cursor: pointer; } .rollable { - min-width: 4.5rem; - max-width: 4.5rem; + min-width: 3.5rem; + max-width: 3.5rem; } - .char-text { - margin-left: 0.5rem; - } - .d100 { - flex: 0; - max-width: 0.6rem; - } - .form-group { - flex: 0; - padding-left: 5px; - .form-fields { - font-size: 1.1rem; - flex: none; - width: 40px; - } + input { + min-width: 2.5rem; + max-width: 2.5rem; } } } - .character-skill-play { - min-width: 225px; + .character-stats-play { + min-width:120px; } - .character-skill-edit { - min-width: 225px; + .character-stats-edit { + min-width: 120px; } } -.character-biography { - background-color: var(--color-light-1); - prose-mirror.inactive { - min-height: 40px; - } - prose-mirror.active { - min-height: 150px; - } - .field-label { - margin-left: 8px; - } - - .rank { - display: grid; - grid-template-columns: repeat(5, 1fr); - gap: 8px; - label { - min-width: 6rem; - } - input { - max-width: 4rem; - } - } - - .biodata { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 8px; - label { - min-width: 12rem; - } - } - - .resources { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 8px; - label { - min-width: 8rem; - } - } - - .features, - .biodata { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 8px; - label { - min-width: 3rem; - } - .feature { - display: flex; - align-items: center; - gap: 4px; - min-width: 18rem; - max-width: 18rem; - } - } -} - -.tab.character-skills { +.tab.character-status .main-div { background-color: var(--color-light-1); display: grid; grid-template-columns: 1fr; @@ -232,11 +151,44 @@ padding-left: 5px; } } - .skills { + .counters { + display: flex; + direction: column; + align-items: center; + gap: 4px; + margin-left: 4px; + input { + min-width: 2.5rem; + max-width: 2.5rem; + } + } + .ailments { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 4px; + .ailment { + display: flex; + align-items: center; + gap: 4px; + margin-left: 4px; + min-width: 8rem; + max-width: 8rem; + label { + min-width: 5rem; + max-width: 5rem; + } + .item-img { + width: 24px; + height: 24px; + margin: 4px 0 0 0; + } + } + } + .perks { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; - .skill { + .perk { display: flex; align-items: center; gap: 4px; @@ -270,7 +222,7 @@ } } -.tab.character-status { +.tab.character-maleficas .main-div { background-color: var(--color-light-1); display: grid; grid-template-columns: 1fr; @@ -281,11 +233,11 @@ } } - .bonds { + .maleficas { display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px; - .bond { + .malefica { display: flex; align-items: center; gap: 4px; @@ -316,11 +268,11 @@ } } - .motivations { + .rituals { display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px; - .motivation { + .ritual { display: flex; align-items: center; gap: 4px; @@ -343,66 +295,10 @@ } } - .mentaldisorders { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; - .mentaldisorder { - display: flex; - align-items: center; - gap: 4px; - min-width: 18rem; - max-width: 18rem; - .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; - } - .name { - min-width: 14rem; - max-width: 14rem; - } - .cured { - min-width: 5rem; - max-width: 5rem; - } - .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; - } - } - } - - .injuries { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; - .injury { - display: flex; - align-items: center; - gap: 4px; - min-width: 16rem; - max-width: 16rem; - .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; - } - .name { - min-width: 14rem; - max-width: 14rem; - } - .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; - } - } - } } -.tab.character-talents { + +.tab.character-equipment .main-div { background-color: var(--color-light-1); display: grid; grid-template-columns: 1fr; @@ -413,176 +309,6 @@ } } - .talents { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; - .talent { - display: flex; - align-items: center; - gap: 4px; - min-width: 13rem; - max-width: 13rem; - .rollable:hover, - .rollable:focus { - text-shadow: 0 0 8px var(--color-shadow-primary); - cursor: pointer; - } - .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; - } - .damage { - min-width: 6rem; - max-width: 6rem; - } - .name { - min-width: 10rem; - max-width: 10rem; - } - .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; - } - } - } - - .languages { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; - .language { - display: flex; - align-items: center; - gap: 4px; - min-width: 13rem; - max-width: 13rem; - .rollable:hover, - .rollable:focus { - text-shadow: 0 0 8px var(--color-shadow-primary); - cursor: pointer; - } - .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; - } - .damage { - min-width: 6rem; - max-width: 6rem; - } - .name { - min-width: 10rem; - max-width: 10rem; - } - .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; - } - } - } - - .psionics { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; - .psionic { - display: flex; - align-items: center; - gap: 4px; - min-width: 13rem; - max-width: 13rem; - .rollable:hover, - .rollable:focus { - text-shadow: 0 0 8px var(--color-shadow-primary); - cursor: pointer; - } - .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; - } - .damage { - min-width: 6rem; - max-width: 6rem; - } - .name { - min-width: 10rem; - max-width: 10rem; - } - .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; - } - } - } - -} - -.tab.character-equipment { - background-color: var(--color-light-1); - display: grid; - grid-template-columns: 1fr; - legend { - a { - font-size: calc(var(--font-size-standard) * 1.4); - padding-left: 5px; - } - } - .encumbrance { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 4px; - input { - max-width: 4rem; - } - .encumbered { - color: red; - font-weight: bold; - } - } - - .implants { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 4px; - .implant { - display: flex; - align-items: center; - gap: 4px; - min-width: 13rem; - max-width: 13rem; - .rollable:hover, - .rollable:focus { - text-shadow: 0 0 8px var(--color-shadow-primary); - cursor: pointer; - } - .controls { - font-size: 0.7rem; - min-width: 1.8rem; - max-width: 1.8rem; - } - .damage { - min-width: 6rem; - max-width: 6rem; - } - .name { - min-width: 10rem; - max-width: 10rem; - } - .item-img { - width: 24px; - height: 24px; - margin: 4px 0 0 0; - } - } - } - - .weapons { display: grid; grid-template-columns: repeat(2, 1fr); @@ -618,7 +344,7 @@ } } } - + .armors { display: grid; grid-template-columns: repeat(2, 1fr); @@ -689,3 +415,22 @@ min-height: 150px; } } + +.tab.character-biography .main-div { + background-color: var(--color-light-1); + display: grid; + grid-template-columns: 1fr; + legend { + a { + font-size: calc(var(--font-size-standard) * 1.4); + padding-left: 5px; + } + } + + prose-mirror.inactive { + min-height: 40px; + } + prose-mirror.active { + min-height: 150px; + } +} diff --git a/styles/deal.less b/styles/deal.less new file mode 100644 index 0000000..1e84861 --- /dev/null +++ b/styles/deal.less @@ -0,0 +1,39 @@ +.deal-content { + .sheet-common(); + .item-sheet-common(); + + fieldset { + margin-top: 8px; + background-color: var(--color-light-1); + .form-group { + display: flex; + align-items: center; + } + .form-group.long-input input { + min-width: 24rem; + max-width: 24rem; + text-align: left; + } + .form-group input { + min-width: 12rem; + max-width: 12rem; + } + .form-group select { + min-width: 12rem; + max-width: 12rem; + } + } + + .header { + background-color: var(--color-light-1); + display: flex; + img { + width: 50px; + height: 50px; + } + } + + label { + flex: 10%; + } +} diff --git a/styles/fvtt-hellborn.less b/styles/fvtt-hellborn.less index 35bfeab..35e9e4b 100644 --- a/styles/fvtt-hellborn.less +++ b/styles/fvtt-hellborn.less @@ -9,6 +9,8 @@ @import "weapon.less"; @import "equipment.less"; @import "armor.less"; + @import "deal.less"; + @import "tarot.less"; @import "ritual.less"; @import "perk.less"; @import "malefica.less"; diff --git a/styles/global.less b/styles/global.less index c9bacbc..1fe579f 100644 --- a/styles/global.less +++ b/styles/global.less @@ -2,7 +2,7 @@ --font-size-standard: 0.9rem; --font-size-result: 1.4rem; --background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), - url("../assets/ui/ftl_nomad_background_01.webp"); + url("../assets/ui/sheet_background_01.webp"); --font-primary: "MinionProRegular"; --font-secondary: "MinionProRegular"; --font-title: "SupernaturalKnight"; @@ -16,16 +16,6 @@ --color-critical-failure: rgb(141, 32, 231); } -.d100 { - width: 18px; - height: 18px; - color: black; - border-width: 0px; -} - -.item .thumbnail, -.item-img { -} #logo { content: var(--logo-standard); @@ -34,15 +24,19 @@ margin-left: 15px; } +nav.tabs [data-tab] { + color: var(--title-color); +} + #pause > img { content: var(--logo-standard); - height: 192px; + height: 256px; width: 256px; top: -45px; left: calc(50% - 96px); } -i.fvtt-ftl-nomad { +i.fvtt-hellborn { width: 36px; height: 36px; background-image: var(--logo-standard); @@ -55,7 +49,7 @@ i.fvtt-ftl-nomad { transition: 0.3s; } -.application.dialog.fvtt-ftl-nomad { +.application.dialog.fvtt-hellborn { font-family: var(--font-primary); font-size: calc(var(--font-size-standard) * 1.0); background-image: var(--background-image-base); diff --git a/styles/ritual.less b/styles/ritual.less index 30d39c8..47d1394 100644 --- a/styles/ritual.less +++ b/styles/ritual.less @@ -9,8 +9,6 @@ display: flex; align-items: center; } - .form-group label { - } .form-group.long-input input { min-width: 24rem; max-width: 24rem; diff --git a/styles/species-trait.less b/styles/species-trait.less index 391886d..0570798 100644 --- a/styles/species-trait.less +++ b/styles/species-trait.less @@ -5,6 +5,23 @@ fieldset { margin-top: 8px; background-color: var(--color-light-1); + .form-group { + display: flex; + align-items: center; + } + .form-group.long-input input { + min-width: 24rem; + max-width: 24rem; + text-align: left; + } + .form-group input { + min-width: 12rem; + max-width: 12rem; + } + .form-group select { + min-width: 12rem; + max-width: 12rem; + } } .header { diff --git a/styles/tarot.less b/styles/tarot.less new file mode 100644 index 0000000..a38d2a5 --- /dev/null +++ b/styles/tarot.less @@ -0,0 +1,39 @@ +.tarot-content { + .sheet-common(); + .item-sheet-common(); + + fieldset { + margin-top: 8px; + background-color: var(--color-light-1); + .form-group { + display: flex; + align-items: center; + } + .form-group.long-input input { + min-width: 24rem; + max-width: 24rem; + text-align: left; + } + .form-group input { + min-width: 12rem; + max-width: 12rem; + } + .form-group select { + min-width: 12rem; + max-width: 12rem; + } + } + + .header { + background-color: var(--color-light-1); + display: flex; + img { + width: 50px; + height: 50px; + } + } + + label { + flex: 10%; + } +} diff --git a/system.json b/system.json index 0ff006f..40409be 100644 --- a/system.json +++ b/system.json @@ -33,7 +33,7 @@ ], "documentTypes": { "Actor": { - "character": { "htmlFields": ["description", "notes"] }, + "character": { "htmlFields": ["backstory", "notes", "appearance", "scars", "likes", "dislikes", "fears", "vices", "goals", "ammbitions", "values", "bonds"] }, "monster": { "htmlFields": ["description", "notes"] }, "vehicle": { "htmlFields": ["description", "notes"] } }, @@ -44,7 +44,9 @@ "equipment": { "htmlFields": ["description"] }, "malefica": { "htmlFields": ["description"] }, "species-trait": { "htmlFields": ["description"] }, - "ritual": { "htmlFields": ["description"] } + "ritual": { "htmlFields": ["description"] }, + "tarot": { "htmlFields": ["description"] }, + "deal": { "htmlFields": ["description"] } } }, "packs": [ diff --git a/templates/character-biography.hbs b/templates/character-biography.hbs index 0706a52..06df6e7 100644 --- a/templates/character-biography.hbs +++ b/templates/character-biography.hbs @@ -1,12 +1,9 @@
- +
- Rank - {{formField systemFields.rank.fields.experienced value=system.rank.experienced type="number" rootId=partId disabled=isPlayMode}} - {{formField systemFields.rank.fields.expert value=system.rank.expert type="number" rootId=partId disabled=isPlayMode}} - {{formField systemFields.rank.fields.veteran value=system.rank.veteran type="number" rootId=partId disabled=isPlayMode}} - {{formField systemFields.rank.fields.elite value=system.rank.elite type="number" rootId=partId disabled=isPlayMode}} - {{formField systemFields.rank.fields.legend value=system.rank.legend type="number" rootId=partId disabled=isPlayMode}} + Experience + {{formField systemFields.experience.fields.current value=system.experience.current type="number" rootId=partId disabled=isPlayMode}} + {{formField systemFields.experience.fields.max value=system.experience.max type="number" rootId=partId disabled=isPlayMode}}
@@ -23,12 +20,12 @@
{{localize "HELLBORN.Label.description"}} - {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} + {{formInput systemFields.backstory enriched=enrichedBackstory value=system.backstory name="system.backstory" toggled=true}}
- {{localize "HELLBORN.Label.notes"}} - {{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}} + {{localize "HELLBORN.Label.appearance"}} + {{formInput systemFields.appearance enriched=enrichedAppearance value=system.appearance name="system.appearance" toggled=true}}
- +
\ No newline at end of file diff --git a/templates/character-equipment.hbs b/templates/character-equipment.hbs index dcd49b8..f9e3d38 100644 --- a/templates/character-equipment.hbs +++ b/templates/character-equipment.hbs @@ -1,15 +1,5 @@
- -
- {{#if isEncumbered}} - {{formField systemFields.enc.fields.value value=system.enc.value rootId=partId disabled=true classes="encumbered"}} - {{else }} - {{formField systemFields.enc.fields.value value=system.enc.value rootId=partId disabled=true}} - {{/if}} - {{formField systemFields.enc.fields.max value=system.enc.max rootId=partId disabled=isPlayMode}} - {{formField systemFields.credits value=system.credits rootId=partId }} -
- +
{{localize "HELLBORN.Label.weapons"}}{{#if isEditMode}}
-
- {{localize "HELLBORN.Label.implants"}}{{#if isEditMode}} - {{/if}} - -
- {{#each implants as |item|}} - {{!log 'weapon' this}} - - {{/each}} -
-
-
{{localize "HELLBORN.Label.equipments"}}{{#if isEditMode}}
- +
\ No newline at end of file diff --git a/templates/character-main.hbs b/templates/character-main.hbs index 26f60c8..67b7702 100644 --- a/templates/character-main.hbs +++ b/templates/character-main.hbs @@ -9,13 +9,8 @@ data-tooltip="{{actor.name}}" />
- {{localize "HELLBORN.Label.Stamina"}} + {{localize "HELLBORN.Label.trauma"}}
- {{formField systemFields.health.fields.staminaValue value=system.health.staminaValue}} - {{formField systemFields.health.fields.staminaMax value=system.health.staminaMax rootId=partId disabled=true}} -
-
- {{formField systemFields.health.fields.wounds value=system.health.wounds }}
@@ -28,13 +23,15 @@
-
- {{formField systemFields.concept value=system.concept rootId=partId disabled=isPlayMode}} - {{formField systemFields.species value=system.species rootId=partId disabled=isPlayMode}} - {{formField systemFields.archetype value=system.archetype rootId=partId disabled=isPlayMode}} -
- {{formField systemFields.heroPoints value=system.heroPoints rootId=partId }} - {{formField systemFields.armor.fields.value value=system.armor.value rootId=partId disabled=isPlayMode}} +
+
+ {{formField systemFields.pronouns value=system.pronouns rootId=partId disabled=isPlayMode}} +
+
+ {{formField systemFields.species value=system.species rootId=partId disabled=isPlayMode}} +
+
+ {{formField systemFields.trait value=system.trait rootId=partId disabled=isPlayMode}}
@@ -42,58 +39,33 @@
-
- {{localize "HELLBORN.Label.skills"}} -
- - - {{formInput systemFields.skills.fields.combat.fields.value value=system.skills.combat.value rootId=partId disabled=isPlayMode type="number" }} +
+ {{localize "HELLBORN.Label.stats"}} +
+ + {{formInput systemFields.stats.fields.flesh.fields.value value=system.stats.flesh.value rootId=partId disabled=isPlayMode type="number" }}
-
- - - {{formInput systemFields.skills.fields.knowledge.fields.value value=system.skills.knowledge.value - rootId=partId disabled=isPlayMode type="number"}} +
+ + {{formInput systemFields.stats.fields.skin.fields.value value=system.stats.skin.value rootId=partId disabled=isPlayMode type="number" }}
-
- - - {{formInput systemFields.skills.fields.social.fields.value value=system.skills.social.value - rootId=partId disabled=isPlayMode type="number"}} +
+ + {{formInput systemFields.stats.fields.heart.fields.value value=system.stats.heart.value rootId=partId disabled=isPlayMode type="number" }}
-
- - - {{formInput systemFields.skills.fields.physical.fields.value value=system.skills.physical.value - rootId=partId disabled=isPlayMode type="number"}} +
+ + {{formInput systemFields.stats.fields.mind.fields.value value=system.stats.mind.value rootId=partId disabled=isPlayMode type="number" }}
-
- - - {{formInput systemFields.skills.fields.stealth.fields.value value=system.skills.stealth.value - rootId=partId disabled=isPlayMode type="number"}} -
-
- - - {{formInput systemFields.skills.fields.vehicles.fields.value value=system.skills.vehicles.value - rootId=partId disabled=isPlayMode type="number"}} -
-
- - - {{formInput systemFields.skills.fields.technology.fields.value value=system.skills.technology.value - rootId=partId disabled=isPlayMode type="number"}} +
+ + {{formInput systemFields.stats.fields.soul.fields.value value=system.stats.soul.value rootId=partId disabled=isPlayMode type="number" }}
- - \ No newline at end of file diff --git a/templates/character-maleficas.hbs b/templates/character-maleficas.hbs new file mode 100644 index 0000000..012c3a4 --- /dev/null +++ b/templates/character-maleficas.hbs @@ -0,0 +1,56 @@ +
+
+
+ {{localize "HELLBORN.Label.maleficas"}}{{#if isEditMode}} + {{/if}} + +
+ {{#each maleficas as |item|}} + {{!log 'weapon' this}} +
+ + + +
+ {{item.name}} +
+ +
+ + +
+
+ {{/each}} +
+
+ +
+ {{localize "HELLBORN.Label.rituals"}}{{#if isEditMode}} + {{/if}} + +
+ {{#each rituals as |item|}} +
+ + + +
+ {{item.name}} +
+ +
+ + +
+
+ {{/each}} +
+
+
+
\ No newline at end of file diff --git a/templates/character-status.hbs b/templates/character-status.hbs new file mode 100644 index 0000000..20ecaa6 --- /dev/null +++ b/templates/character-status.hbs @@ -0,0 +1,60 @@ +
+
+ +
+ {{localize "HELLBORN.Label.Counters"}} +
+ {{formInput systemFields.trauma.fields.current value=system.trauma.current}} / + {{formInput systemFields.trauma.fields.max value=system.trauma.max}} + {{formInput systemFields.darkness.fields.current value=system.darkness.current}} / + {{formInput systemFields.darkness.fields.max value=system.darkness.max}} + {{formInput systemFields.darkness.fields.value value=system.darkness.value}} + {{formInput systemFields.defense.fields.base value=system.defense.base}} + {{formInput systemFields.defense.fields.bonus value=system.defense.bonus }} + {{formInput systemFields.defense.fields.total value=system.defense.total}} + {{formInput systemFields.defense.fields.resistance value=system.defense.resistance}} + {{formInput systemFields.movement.fields.base value=system.movement.base}} + {{formInput systemFields.movement.fields.reduce value=system.defense.reduce }} +
+
+ +
+ {{localize "HELLBORN.Label.ailments"}} +
+ {{#each system.ailments as |item id|}} +
+ +
+ {{/each}} +
+
+ +
+ {{localize "HELLBORN.Label.perks"}}{{#if isEditMode}} + {{/if}} + +
+ {{#each perks as |item|}} +
+ + + +
+ {{item.name}} +
+ +
+ + +
+
+ {{/each}} +
+
+ + +
+
\ No newline at end of file diff --git a/templates/character-talents.hbs b/templates/character-talents.hbs deleted file mode 100644 index 3982d8d..0000000 --- a/templates/character-talents.hbs +++ /dev/null @@ -1,106 +0,0 @@ -
- -
- {{localize "HELLBORN.Label.talents"}}{{#if isEditMode}} - {{/if}} - -
- {{#each talents as |item|}} - {{!log 'weapon' this}} - - {{/each}} -
-
- -
- {{localize "HELLBORN.Label.psionics"}}{{#if isEditMode}} - {{/if}} - -
- {{#each psionics as |item|}} - {{!log 'weapon' this}} - - {{/each}} -
-
- -
- {{localize "HELLBORN.Label.languages"}}{{#if isEditMode}} - {{/if}} - -
- {{#each languages as |item|}} - {{!log 'weapon' this}} - - {{/each}} -
-
- - -
\ No newline at end of file diff --git a/templates/deal.hbs b/templates/deal.hbs new file mode 100644 index 0000000..c4ba23f --- /dev/null +++ b/templates/deal.hbs @@ -0,0 +1,17 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+ {{formField systemFields.promisor value=system.promisor localize=true }} +
+ +
+ {{localize "HELLBORN.Label.description"}} + {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" + toggled=true}} +
+ +
\ No newline at end of file diff --git a/templates/tarot.hbs b/templates/tarot.hbs new file mode 100644 index 0000000..53c8b24 --- /dev/null +++ b/templates/tarot.hbs @@ -0,0 +1,28 @@ +
+
+ + {{formInput fields.name value=source.name}} +
+ +
+ {{formField systemFields.orientation value=system.orientation localize=true }} +
+ +
+
+
+ {{localize "HELLBORN.Label.positiveEffect"}} + {{formInput systemFields.positiveEffect enriched=enrichedPositiveEffect value=system.positiveEffect name="system.positiveEffect" + toggled=true}} + {{localize "HELLBORN.Label.negativeEffect"}} + {{formInput systemFields.negativeEffect enriched=enrichedNegativeEffect value=system.negativeEffect name="system.negativeEffect" + toggled=true}} +
+
+ + {{formField systemFields.image value=system.image localize=true }} +
+
+
+ +
\ No newline at end of file