diff --git a/assets/icons/deal.webp b/assets/icons/deal.webp
new file mode 100644
index 0000000..2902ab4
Binary files /dev/null and b/assets/icons/deal.webp differ
diff --git a/assets/icons/tarot.webp b/assets/icons/tarot.webp
new file mode 100644
index 0000000..4c8078f
Binary files /dev/null and b/assets/icons/tarot.webp differ
diff --git a/assets/ui/sheet_background_01.webp b/assets/ui/sheet_background_01.webp
new file mode 100644
index 0000000..6cc0daa
Binary files /dev/null and b/assets/ui/sheet_background_01.webp differ
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 @@