diff --git a/Fading Suns 4th Edition - Pax Alexius/Fading_Suns_4th_Edition_Pax_Alexius.css b/Fading Suns 4th Edition - Pax Alexius/Fading_Suns_4th_Edition_Pax_Alexius.css
new file mode 100644
index 0000000000..ea481b62ee
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/Fading_Suns_4th_Edition_Pax_Alexius.css
@@ -0,0 +1,1229 @@
+.sheet-fs-sheet *,
+.sheet-fs-sheet *::after,
+.sheet-fs-sheet *::before {
+ box-sizing: border-box;
+}
+
+body {
+ min-height: 100vh;
+ position: relative;
+}
+
+.sheet-fs-sheet label,
+.sheet-fs-sheet input,
+.sheet-fs-sheet button[type=roll],
+.sheet-fs-sheet select,
+.sheet-fs-sheet textarea {
+ font-size: 1.25em;
+ width: 100%;
+ margin: 0;
+ color: black;
+}
+
+.sheet-fs-sheet label {
+ font-weight: normal;
+ display: inline-block;
+ margin: 0;
+ padding-right: 0px;
+ width: initial;
+ height: initial;
+ color: initial;
+}
+
+.sheet-fs-sheet select {
+ border-color: #baa894;
+}
+
+.sheet-fs-sheet textarea {
+ height: initial;
+ resize: initial;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding: 0;
+ margin: 0;
+}
+
+.sheet-fs-sheet button,
+.sheet-fs-sheet button:hover,
+.sheet-fs-sheet button:active {
+ background-image: initial;
+}
+
+.sheet-fs-sheet button[type=roll] {
+ margin-left: initial;
+ margin-right: initial;
+ text-shadow: none;
+}
+
+.sheet-fs-sheet input,
+.sheet-fs-sheet textarea,
+.sheet-fs-sheet select,
+.sheet-fs-sheet button[type=roll] {
+ background-color: rgba(255, 255, 255, 0.5);
+ border: 1px solid #baa894;
+ border-radius: 0;
+ padding: 2px;
+ height: 25px;
+}
+
+.sheet-fs-sheet input,
+.sheet-fs-sheet textarea,
+.sheet-fs-sheet select,
+.sheet-fs-sheet label {
+ vertical-align: middle;
+ align-self: center;
+}
+
+.sheet-fs-sheet input[type=number] {
+ text-align: center;
+ width: 30px;
+ min-width: 30px;
+ max-width: 30px;
+}
+
+.sheet-fs-sheet button[type=roll] {
+ width: 25px;
+}
+
+.sheet-fs-sheet input[type=number]::-webkit-inner-spin-button,
+.sheet-fs-sheet input[type=number]::-webkit-outer-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+}
+
+.sheet-fs-sheet input[type=number] {
+ -moz-appearance: textfield !important;
+}
+
+.sheet-fs-sheet button[type=roll] {
+ background-color: rgba(255, 255, 255, 0.5);
+ border: 1px solid #baa894;
+}
+
+.sheet-fs-sheet button[type=roll].sheet-fs-hidden {
+ display: none;
+}
+
+.sheet-fs-sheet button[type=roll]:before {
+ vertical-align: middle;
+ font-size: 1.2em;
+}
+
+.sheet-fs-sheet {
+ margin-top: -28px;
+ margin-left: -30px;
+ margin-right: -30px;
+ margin-bottom: -10px;
+ min-width: 890px;
+ max-width: 890px;
+ background: url(https://i.ibb.co/t3xLwhN/fs-sheet-background.jpg) top left repeat;
+ background-attachment: scroll;
+ background-size: 890px;
+ font-family: serif;
+}
+
+.sheet-fs-sheet-container {
+ padding-left: 50px;
+ padding-right: 50px;
+}
+
+.sheet-fs-sheet-section {
+ margin-top: 10px;
+ border-top: 2px solid black;
+ padding-top: 10px;
+}
+
+.sheet-fs-sheet-section-frame {
+ margin-top: 10px;
+ border: 2px solid black;
+ padding: 5px;
+ align-self: self-start;
+}
+
+label.sheet-fs-uppercase-header {
+ font-size: 1.5em;
+ line-height: 25px;
+ font-weight: bold;
+ text-transform: uppercase;
+ white-space: nowrap;
+}
+
+.sheet-fs-sheet .repcontrol_del,
+.sheet-fs-sheet .repcontrol_move,
+.sheet-fs-sheet .repcontrol_add,
+.sheet-fs-sheet .repcontrol_edit {
+ font-family: pictos;
+}
+
+.sheet-fs-sheet .repitem.repitembroken {
+ border: 0.3rem dashed #FF0044 !important;
+ margin: 0 0 0 0;
+ border-radius: 0;
+}
+
+.repcontrol_edit {
+ order: 2;
+}
+
+.repcontainer {
+ width: 100%;
+}
+
+.repcontainer.editmode .repitem .itemcontrol {
+ z-index: 3;
+ background-color: rgba(255, 255, 255, 0.5);
+}
+
+div.repcontrol {
+ display: flex;
+ flex-wrap: nowrap;
+ align-items: center;
+ justify-content: space-between;
+ flex-direction: row;
+ width: 100%;
+}
+
+.repcontrol_add::before {
+ content: "&";
+ visibility: visible;
+ font-family: pictos;
+ background-color: rgba(255, 255, 255, 0.5);
+ border: 0.1rem solid #baa894;
+ border-radius: 0.2rem;
+ font-size: 1.6rem;
+ padding: 0.3rem 0.5rem 0.3rem 0.5rem;
+ color: black;
+}
+
+.repcontrol .repcontrol_edit:after {
+ font-weight: bold;
+ content: "☰";
+ visibility: visible;
+ font-family: pictos;
+ background-color: rgba(255, 255, 255, 0.5);
+ border: 0.1rem solid #baa894;
+ border-radius: 0.2rem;
+ font-size: 1.6rem;
+ padding: 0.3rem 0.3rem 0.2rem 0.3rem;
+ color: black;
+}
+
+.editmode ~ .repcontrol .repcontrol_edit:after {
+ font-family: Pictos;
+ content: "3";
+ width: 1.6rem;
+}
+
+.repcontrol_edit:hover:before,
+.repcontrol_edit:hover:after,
+.repcontrol_add:hover:before {
+ color: red !important;
+ box-shadow: 0.1rem 0.1rem 0.2rem #baa894;
+}
+
+.repcontrol .btn {
+ border: none;
+ color: white;
+ font-size: 0;
+ padding: 0;
+ margin-top: 3px;
+ background: none;
+ box-shadow: none;
+}
+
+.repcontrol .btn:focus {
+ outline: 0;
+}
+
+.repcontrol_add,
+.repcontrol_edit {
+ display: block;
+ background: none;
+ color: transparent !important;
+ border: none;
+ box-shadow: none;
+}
+
+.repcontrol_del,
+.repcontrol_move {
+ display: block;
+ background: white;
+ color: black;
+ border: none;
+ box-shadow: none;
+ width: 2em;
+}
+
+.sheet-fs-noshow {
+ display: none;
+}
+
+.sheet-rolltemplate-fs-button {
+ text-align: center;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-container,
+.sheet-rolltemplate-fs-d6Roll .sheet-fs-container {
+ border: 1px solid;
+ padding: 2px;
+ width: 90%;
+ background: url(https://i.ibb.co/t3xLwhN/fs-sheet-background.jpg) 25% 25%;
+ background-size: 850px;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-container .sheet-fs-charactername,
+.sheet-rolltemplate-fs-d6Roll .sheet-fs-container .sheet-fs-charactername {
+ font-weight: bold;
+ font-size: 0.9em;
+ line-height: 1em;
+ border-bottom: 1px solid black;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-container h1,
+.sheet-rolltemplate-fs-d6Roll .sheet-fs-container h1 {
+ color: #4a6486;
+ font-size: 1.1em;
+ font-variant: small-caps;
+ line-height: 1.2em;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-arrow-right,
+.sheet-rolltemplate-fs-d6Roll .sheet-fs-arrow-right {
+ border-bottom: 2px solid transparent;
+ border-left: 200px solid #baa894;
+ border-top: 2px solid transparent;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .inlinerollresult,
+.sheet-rolltemplate-fs-d6Roll .inlinerollresult {
+ background-color: transparent;
+ border: none;
+ font-weight: normal;
+ padding: 0 0 0 0;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .inlinerollresult.fullcrit,
+.sheet-rolltemplate-fs-d6Roll .inlinerollresult.fullcrit,
+.sheet-rolltemplate-fs-GoalRoll .inlinerollresult.importantroll,
+.sheet-rolltemplate-fs-d6Roll .inlinerollresult.importantroll,
+.sheet-rolltemplate-fs-GoalRoll .inlinerollresult.fullfail,
+.sheet-rolltemplate-fs-GoalRoll .inlinerollresult.fullfail {
+ border: none;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-critsuccess {
+ color: #3FB315;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-success {
+ color: #205b0b;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-failure {
+ color: #5b0b0b;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-critfailure {
+ color: #B31515;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-critsuccess .inlinerollresult,
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-success .inlinerollresult,
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-failure .inlinerollresult,
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-critfailure .inlinerollresult {
+ font-weight: bold;
+}
+
+.sheet-fs-w100 {
+ width: 100%;
+}
+
+.sheet-fs-h100 {
+ height: 100%;
+}
+
+.sheet-fs-autoexpand > input,
+.sheet-fs-autoexpand > textarea {
+ width: 100%;
+}
+
+.sheet-fs-baseinfo {
+ width: 100%;
+ display: grid;
+ grid-column-gap: 30px;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+ grid-template-columns: 1fr 1fr 1fr;
+}
+
+.sheet-fs-name-grid {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template: "name_ name_" "planet-label planet-value"/max-content 1fr;
+}
+
+.sheet-fs-name {
+ grid-area: name_;
+}
+
+label.sheet-fs-planet {
+ grid-area: planet-label;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input.sheet-fs-planet {
+ grid-area: planet-value;
+}
+
+.sheet-fs-rank-grid {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template: "rank rank" "birthdate-label birthdate-value"/max-content 1fr;
+}
+
+.sheet-fs-rank {
+ grid-area: rank;
+}
+
+label.sheet-fs-birthdate {
+ grid-area: birthdate-label;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input.sheet-fs-birthdate {
+ grid-area: birthdate-value;
+}
+
+.sheet-fs-species-grid {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template: "species species species species" "size-label size-value speed-label speed-value"/max-content 1fr -webkit-max-content 1fr;
+ grid-template: "species species species species" "size-label size-value speed-label speed-value"/max-content 1fr max-content 1fr;
+}
+
+.sheet-fs-species {
+ grid-area: species;
+}
+
+label.sheet-fs-size {
+ grid-area: size-label;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input.sheet-fs-size {
+ grid-area: size-value;
+}
+
+label.sheet-fs-speed {
+ grid-area: speed-label;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input.sheet-fs-speed {
+ grid-area: speed-value;
+}
+
+.sheet-fs-lifepath {
+ width: 100%;
+ display: grid;
+ grid-column-gap: 30px;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+ grid-template-columns: 1fr 1fr 1fr;
+}
+
+.sheet-fs-class-grid {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template: "class1 levelvalue" "class2 levelvalue" "levellabel levelvalue"/1fr -webkit-max-content;
+ grid-template: "class1 levelvalue" "class2 levelvalue" "levellabel levelvalue"/1fr max-content;
+}
+
+.sheet-fs-class1 {
+ grid-area: class1;
+}
+
+.sheet-fs-class2 {
+ grid-area: class2;
+}
+
+label.sheet-fs-level {
+ grid-area: levellabel;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input[type=number].sheet-fs-level {
+ grid-area: levelvalue;
+ width: 50px;
+ max-width: 50px;
+ height: 100%;
+}
+
+.sheet-fs-faction-grid {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template: "faction faction" "blessing-label blessing-value" "curse-label curse-value"/max-content 1fr;
+}
+
+.sheet-fs-faction {
+ grid-area: faction;
+}
+
+label.sheet-fs-blessing {
+ grid-area: blessing-label;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input.sheet-fs-blessing {
+ grid-area: blessing-value;
+}
+
+label.sheet-fs-curse {
+ grid-area: curse-label;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input.sheet-fs-curse {
+ grid-area: curse-value;
+}
+
+.sheet-fs-calling-grid {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 1fr;
+}
+
+.sheet-fs-traits {
+ width: 100%;
+ display: grid;
+ grid-column-gap: 30px;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+ grid-template-columns: 1fr 1fr 1fr;
+ grid-template: "skills-header skills-header characteristics" -webkit-max-content "skills-1 skills-2 characteristics" 1fr/1fr 1fr 1fr;
+ grid-template: "skills-header skills-header characteristics" max-content "skills-1 skills-2 characteristics" 1fr/1fr 1fr 1fr;
+}
+
+.sheet-fs-skills-header {
+ grid-area: skills-header;
+}
+
+.sheet-fs-skill-col {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-rows: 25px -webkit-max-content -webkit-max-content;
+ grid-template-rows: 25px max-content max-content;
+ align-items: flex-start;
+ align-content: flex-start;
+ justify-items: flex-start;
+ justify-content: stretch;
+}
+
+.sheet-fs-skills-1 {
+ grid-area: skills-1;
+}
+
+.sheet-fs-skills-2 {
+ grid-area: skills-2;
+}
+
+.sheet-fs-characteristics {
+ grid-area: characteristics;
+ display: flex;
+ flex-wrap: nowrap;
+ flex-direction: column;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: flex-start;
+ justify-content: space-between;
+}
+
+.sheet-fs-characteristic,
+.sheet-fs-skill {
+ display: inline-flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ align-content: center;
+ align-items: center;
+ justify-content: center;
+ align-self: stretch;
+ width: 100%;
+ height: 25px;
+}
+
+.sheet-fs-characteristic-cat-grid {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 25px 1fr -webkit-max-content;
+ grid-template-columns: 25px 1fr max-content;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-nowrap-w100 {
+ width: 100%;
+ display: inline-flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ align-content: center;
+ align-items: center;
+ justify-content: flex-start;
+ align-self: stretch;
+}
+
+.sheet-fs-text-align-end {
+ width: 100%;
+ text-align: end;
+}
+
+.sheet-fs-characteristic .sheet-fs-characteristic-label,
+.sheet-fs-characteristic .sheet-fs-characteristic-label span,
+.sheet-fs-skill .sheet-fs-skill-label,
+.sheet-fs-skill .sheet-fs-skill-label span,
+.sheet-fs-skill .sheet-fs-skill-label input {
+ white-space: nowrap;
+ width: 100%;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+}
+
+.sheet-fs-skill + .sheet-fs-col {
+ width: 100%;
+}
+
+.sheet-fs-skill > div.sheet-fs-skill-normal {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 25px -webkit-max-content 1fr;
+ grid-template-columns: 25px max-content 1fr;
+ position: relative;
+ overflow: visible;
+}
+
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice {
+ display: none;
+}
+
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice,
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover {
+ position: absolute;
+ z-index: 5;
+ top: 0px;
+ left: calc(25px - 1px);
+ background-color: #ffffff;
+ border-radius: 5px;
+ border: 1px solid #baa894;
+ padding: 2px;
+ width: -webkit-max-content;
+ width: max-content;
+ background: url(https://i.ibb.co/t3xLwhN/fs-sheet-background.jpg) 25% 25%;
+ background-attachment: scroll;
+ background-size: 850px;
+ display: grid;
+ grid-auto-flow: row;
+ grid-template-rows: -webkit-max-content;
+ grid-template-rows: max-content;
+}
+
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice > input,
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover > input {
+ height: 25px;
+}
+
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice > div,
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover > div {
+ display: grid;
+ grid-auto-flow: column;
+ grid-template-rows: repeat(9, -webkit-max-content);
+ grid-template-rows: repeat(9, max-content);
+ align-items: center;
+}
+
+div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice > div:nth-child(2),
+div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover > div:nth-child(2),
+div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice > div:nth-child(5),
+div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover > div:nth-child(5),
+div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice > div:nth-child(8),
+div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover > div:nth-child(8) {
+ padding-top: 2px;
+ border-top: 1px solid black;
+ margin-top: 2px;
+}
+
+.sheet-fs-occult {
+ width: 100%;
+ display: grid;
+ grid-column-gap: 30px;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+ grid-template-columns: 1fr 1fr 1fr;
+ width: 100%;
+ display: grid;
+ grid-column-gap: 30px;
+ grid-template-columns: 1fr 1fr 1fr;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+}
+
+.sheet-fs-occult > div {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-auto-flow: column;
+ grid-auto-columns: 1fr -webkit-max-content -webkit-max-content 1fr;
+ grid-auto-columns: 1fr max-content max-content 1fr;
+}
+
+.sheet-fs-occult-left {
+ text-align: end;
+}
+
+.sheet-fs-occult-right {
+ text-align: start;
+}
+
+.sheet-fs-defenses {
+ width: 100%;
+ display: grid;
+ grid-column-gap: 30px;
+ grid-template-columns: 1fr 1fr 1fr;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+}
+
+.sheet-fs-resistances-grid {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: -webkit-max-content -webkit-max-content 1fr;
+ grid-template-columns: max-content max-content 1fr;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-resistances-grid > label {
+ padding-left: 20px;
+ text-align: end;
+}
+
+.sheet-fs-armor-and-e-shield-grid {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-armor-and-e-shield-grid-row label.sheet-fs-uppercase-header {
+ display: inline-block;
+}
+
+.sheet-fs-armor-and-e-shield-grid-row {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-auto-flow: column;
+}
+
+.sheet-fs-armor-vs {
+ justify-content: end;
+}
+
+.sheet-fs-armor-vs input[type=number]::placeholder {
+ font-size: 0.7em;
+}
+
+.sheet-fs-e-shield-props {
+ justify-content: space-between;
+}
+
+.sheet-fs-e-shield-props > label:nth-child(1),
+.sheet-fs-e-shield-props > label:nth-child(5) {
+ padding-left: 20px;
+ text-align: end;
+}
+
+.sheet-fs-vita-and-revivals-grid {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template: "vitality-header vitality-header vitality-header vitality-header" "vitality-rating-label vitality-rating-value vitality-current-label vitality-current-value" "revivals-header revivals-header revivals-header revivals-header" "revivals-rating-label revivals-rating-value revivals-number-label revivals-number-value"/1fr -webkit-max-content 1fr -webkit-max-content;
+ grid-template: "vitality-header vitality-header vitality-header vitality-header" "vitality-rating-label vitality-rating-value vitality-current-label vitality-current-value" "revivals-header revivals-header revivals-header revivals-header" "revivals-rating-label revivals-rating-value revivals-number-label revivals-number-value"/1fr max-content 1fr max-content;
+}
+
+.sheet-fs-vitality-header {
+ grid-area: vitality-header;
+}
+
+label.sheet-fs-vitality-rating {
+ grid-area: vitality-rating-label;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input.sheet-fs-vitality-rating {
+ grid-area: vitality-rating-value;
+}
+
+label.sheet-fs-vitality-current {
+ grid-area: vitality-current-label;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input.sheet-fs-vitality-current {
+ grid-area: vitality-current-value;
+}
+
+.sheet-fs-revivals-header {
+ grid-area: revivals-header;
+}
+
+label.sheet-fs-revivals-rating {
+ grid-area: revivals-rating-label;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input.sheet-fs-revivals-rating {
+ grid-area: revivals-rating-value;
+}
+
+label.sheet-fs-revivals-number {
+ grid-area: revivals-number-label;
+ padding-left: 20px;
+ text-align: end;
+}
+
+input.sheet-fs-revivals-number {
+ grid-area: revivals-number-value;
+}
+
+.sheet-fs-actions-vp-bank-and-surge {
+ width: 100%;
+ display: grid;
+ grid-template-columns: 1fr -webkit-max-content;
+ grid-template-columns: 1fr max-content;
+ grid-column-gap: 30px;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+}
+
+.sheet-fs-table {
+ display: grid;
+ grid-auto-flow: row;
+ min-width: 100%;
+ margin-bottom: 2px;
+}
+
+.sheet-fs-table fieldset,
+.sheet-fs-table .repcontainer,
+.sheet-fs-table .repitem {
+ display: contents;
+}
+
+.sheet-fs-table input[type=number] {
+ width: 100%;
+}
+
+.sheet-fs-table input {
+ min-width: 10px;
+ width: auto;
+}
+
+.sheet-fs-table-head {
+ /*background-color: #4a6486;
+ color: white;*/
+ font-weight: bold;
+ white-space: nowrap;
+ padding-left: 1px;
+ padding-right: 1px;
+}
+
+.sheet-fs-table-cell {
+ grid-column: auto/span 1;
+}
+
+.sheet-fs-table .itemcontrol {
+ height: auto !important;
+ /* TODO try without this to see if something bad happens */
+}
+
+.sheet-fs-table .repcontrol {
+ grid-column: 1/-1;
+}
+
+.sheet-fs-actions .sheet-fs-table {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 25px 1fr 98px 143px 60px;
+}
+
+.sheet-fs-actions .sheet-fs-table > input {
+ width: 100%;
+ max-width: 100%;
+}
+
+.sheet-fs-vp-and-surge-grids {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 1fr -webkit-max-content;
+ grid-template-columns: 1fr max-content;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-vp-and-surge-grids > label {
+ padding-left: 20px;
+ text-align: end;
+}
+
+.sheet-fs-perks-capabilities-and-birthrights {
+ width: 100%;
+ display: grid;
+ grid-column-gap: 30px;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+ grid-template-columns: 1fr 1fr;
+}
+
+.sheet-fs-possessions {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-possessions-header {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 1fr -webkit-max-content -webkit-max-content;
+ grid-template-columns: 1fr max-content max-content;
+ grid-auto-flow: column;
+}
+
+.sheet-fs-possessions-header > input:nth-child(3) {
+ margin-right: 52px;
+}
+
+.sheet-fs-carried-equipment {
+ width: 100%;
+ display: grid;
+ grid-column-gap: 30px;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+ grid-template-columns: 1fr 1fr;
+}
+
+.sheet-fs-carried-equipment .sheet-fs-table {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 1fr 30px 50px;
+}
+
+.sheet-fs-carried-equipment .sheet-fs-table label:nth-child(2),
+.sheet-fs-carried-equipment .sheet-fs-table input:nth-child(2),
+.sheet-fs-carried-equipment .sheet-fs-table label:nth-child(3),
+.sheet-fs-carried-equipment .sheet-fs-table input:nth-child(3) {
+ text-align: center;
+}
+
+.sheet-fs-carried-weapons .sheet-fs-table {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 1fr 30px 60px 50px 30px 60px 30px 50px 1fr;
+}
+
+.sheet-fs-carried-weapons .sheet-fs-table > input[type=number]:nth-child(8) {
+ width: 50px;
+ max-width: 50px;
+}
+
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(2),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(2),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(3),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(3),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(4),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(4),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(5),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(5),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(6),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(6),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(7),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(7),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(8),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(8) {
+ text-align: center;
+}
+
+.sheet-fs-owned {
+ width: 100%;
+ display: grid;
+ grid-column-gap: 30px;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+ grid-template-columns: 1fr 1fr;
+}
+
+.sheet-fs-owned .sheet-fs-table {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 1fr 0.5fr;
+}
+
+.sheet-fs-money {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-money-header {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 1fr -webkit-max-content 150px;
+ grid-template-columns: 1fr max-content 150px;
+ grid-auto-flow: column;
+}
+
+.sheet-fs-money-header > div {
+ display: flex;
+ flex-direction: row;
+ white-space: nowrap;
+}
+
+.sheet-fs-assets {
+ width: 100%;
+ display: grid;
+ grid-column-gap: 30px;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+ grid-template-columns: 1fr 1fr;
+}
+
+.sheet-fs-assets .sheet-fs-table {
+ display: grid;
+ width: 100%;
+ gap: 2px;
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+ grid-template-columns: 1fr 0.5fr;
+}
+
+.sheet-fs-notes {
+ grid-column: 1/-1;
+ margin-left: 15px;
+ width: calc(100% - 15px);
+ max-height: 0px;
+ position: relative;
+}
+
+.sheet-fs-notes:focus,
+.sheet-fs-notes:focus-within,
+.sheet-fs-notes:active,
+.sheet-fs-table input:active ~ .sheet-fs-notes,
+.sheet-fs-table input:focus ~ .sheet-fs-notes,
+.sheet-fs-table input:focus-within ~ .sheet-fs-notes,
+.sheet-fs-table select:active ~ .sheet-fs-notes,
+.sheet-fs-table select:focus ~ .sheet-fs-notes,
+.sheet-fs-table select:focus-within ~ .sheet-fs-notes {
+ min-height: 4em;
+ max-height: initial;
+ resize: vertical;
+ overflow: auto;
+ align-self: stretch;
+}
+
+.sheet-fs-auto-expand-textarea {
+ cursor: text;
+ word-wrap: break-word;
+}
+
+.sheet-fs-notes > .sheet-fs-auto-expand-textarea {
+ visibility: collapse;
+}
+
+.sheet-fs-notes > .sheet-fs-auto-expand-textarea {
+ -moz-transition: visibility 0s linear 1ms;
+}
+
+.sheet-fs-notes:focus > .sheet-fs-auto-expand-textarea,
+.sheet-fs-notes:focus-within > .sheet-fs-auto-expand-textarea,
+.sheet-fs-notes:active > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table input:active ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table input:focus ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table input:focus-within ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table select:active ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table select:focus ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table select:focus-within ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea {
+ visibility: visible;
+}
+
+.sheet-fs-auto-expand-textarea span {
+ visibility: hidden;
+ white-space: pre-wrap;
+ display: block;
+}
+
+.sheet-fs-auto-expand-textarea textarea {
+ position: absolute;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ margin: 0;
+ overflow: hidden;
+ height: 100%;
+ width: 100%;
+}
+
+.sheet-fs-relative {
+ position: relative;
+}
+
+.sheet-fs-supertall-textarea {
+ min-height: 300px;
+ max-height: initial;
+ resize: vertical;
+ overflow: auto;
+ align-self: stretch;
+}
+
+.sheet-fs-header,
+.sheet-fs-footer {
+ height: 10px;
+}
diff --git a/Fading Suns 4th Edition - Pax Alexius/Fading_Suns_4th_Edition_Pax_Alexius.html b/Fading Suns 4th Edition - Pax Alexius/Fading_Suns_4th_Edition_Pax_Alexius.html
new file mode 100644
index 0000000000..484bd3db88
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/Fading_Suns_4th_Edition_Pax_Alexius.html
@@ -0,0 +1,2346 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{#skillName-i18n}}
+ {{#rollGreater() bonus_penalty 0}}
+
+ {{/rollGreater() bonus_penalty 0}}
+ {{#rollTotal() bonus_penalty 0}}
+
+ {{/rollTotal() bonus_penalty 0}}
+ {{#^rollGreater() bonus_penalty -1}}
+
+ {{/^rollGreater() bonus_penalty -1}}
+ {{/skillName-i18n}}
+ {{^skillName-i18n}}
+ {{#rollGreater() bonus_penalty 0}}
+
+ {{/rollGreater() bonus_penalty 0}}
+ {{#rollTotal() bonus_penalty 0}}
+
+ {{/rollTotal() bonus_penalty 0}}
+ {{#^rollGreater() bonus_penalty -1}}
+
+ {{/^rollGreater() bonus_penalty -1}}
+ {{/skillName-i18n}}
+
+ {{#title}}{{/title}}
+
+
+
+ {{#^rollGreater() roll goal}}
+ {{#^rollGreater() roll 19}}
+ {{#rollWasCrit() roll}}
+
{{roll}} VP. Critical success!
+ {{/rollWasCrit() roll}}
+ {{#^rollWasCrit() roll}}
+
{{roll}} VP. Success!
+ {{/^rollWasCrit() roll}}
+ {{/^rollGreater() roll 19}}
+ {{/^rollGreater() roll goal}}
+
+ {{#rollGreater() roll goal}}
+ {{#rollTotal() roll 1}}
+
{{roll}} VP. Success!
+ {{/rollTotal() roll 1}}
+ {{#^rollTotal() roll 1}}
+ {{#^rollGreater() roll 19}}
+
{{roll}}. Failure!
+ {{/^rollGreater() roll 19}}
+ {{/^rollTotal() roll 1}}
+ {{/rollGreater() roll goal}}
+
+ {{#rollTotal() roll 20}}
+
{{roll}}. Critical failure!
+ {{/rollTotal() roll 20}}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Fading Suns 4th Edition - Pax Alexius/Fading_Suns_4th_Edition_Pax_Alexius.preview-en.jpg b/Fading Suns 4th Edition - Pax Alexius/Fading_Suns_4th_Edition_Pax_Alexius.preview-en.jpg
new file mode 100644
index 0000000000..e355a5203b
Binary files /dev/null and b/Fading Suns 4th Edition - Pax Alexius/Fading_Suns_4th_Edition_Pax_Alexius.preview-en.jpg differ
diff --git a/Fading Suns 4th Edition - Pax Alexius/README.md b/Fading Suns 4th Edition - Pax Alexius/README.md
new file mode 100644
index 0000000000..70529e9d22
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/README.md
@@ -0,0 +1,21 @@
+# Release notes
+
+## 1.0.0
+- First publicly available version of the sheet
+
+# TODO list
+- Add sheet preview image
+
+- temporary bonus/malus for skills and characteristics
+
+- auto-fail / prevents rolls of |R|equired skills (Alchemy, Interface, Pilot) if skill value is 0. Have to be sure no perk/capability exists to allow a roll anyway. If not sure, warn only.
+
+- check if Occult characteristic
+
+# Nice-to-have
+- replace unstylable selects with custom-made absolute-positioned list of action buttons for characteristic/skill selections
+- for Roll20 pro users:
+ - API for VP & WP management
+ - leverage this API from within the sheet
+
+ Freetext Buff/Debuff mod
diff --git a/Fading Suns 4th Edition - Pax Alexius/prepros.config b/Fading Suns 4th Edition - Pax Alexius/prepros.config
new file mode 100644
index 0000000000..aa648754f9
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/prepros.config
@@ -0,0 +1,908 @@
+{
+ "version": "7",
+ "about": "This is a Prepros (https://prepros.io) configuration file. You can commit this file to a git repo to backup and sync project configurations.",
+ "config": {
+ "proxy": {
+ "enable": false,
+ "target": "",
+ "useLocalAssets": false
+ },
+ "reload": {
+ "enable": false,
+ "delay": 0,
+ "animate": true,
+ "afterUpload": false
+ },
+ "sync": {
+ "enable": false,
+ "mouse": true,
+ "keyboard": true,
+ "form": true,
+ "scroll": true
+ },
+ "watcher": {
+ "enable": true,
+ "maxFiles": 2000,
+ "usePolling": false,
+ "pollingInterval": 500,
+ "extensions": [
+ ".html",
+ ".htm",
+ ".php"
+ ],
+ "ignore": {
+ "patterns": [
+ ".*",
+ "wp-admin",
+ "wp-includes",
+ "node_modules",
+ "Prepros Export",
+ "bower_components"
+ ],
+ "exceptions": []
+ }
+ },
+ "exporter": {
+ "ignore": {
+ "patterns": [
+ ".*",
+ "desktop.ini",
+ "prepros.cfg",
+ "node_modules",
+ "Prepros Export",
+ "prepros.config",
+ "prepros-6.config",
+ "*-original.jpg",
+ "*-original.jpeg",
+ "*-original.png",
+ "*-original.svg",
+ "*.scss",
+ "*.sass",
+ "*.less",
+ "*.pug",
+ "*.jade",
+ "*.styl",
+ "*.haml",
+ "*.slim",
+ "*.coffee",
+ "*.kit",
+ "*.turf",
+ "*.ts"
+ ],
+ "exceptions": []
+ }
+ },
+ "uploader": {
+ "remotePath": "",
+ "timeout": 20000,
+ "autoUpload": false,
+ "connectionType": "ftp",
+ "history": []
+ },
+ "packages": {
+ "createPackageLock": true
+ },
+ "tasks": {
+ "autoprefixer": {
+ "cascade": true,
+ "add": true,
+ "remove": true,
+ "supports": true,
+ "flexbox": true,
+ "grid": "false",
+ "browsers": [
+ "> 2%",
+ "not dead"
+ ],
+ "sourceMap": false
+ },
+ "babel": {
+ "sourceMap": false,
+ "presets": {
+ "@babel/preset-env": {
+ "enable": true,
+ "options": {
+ "targets": [
+ "> 2%",
+ "not dead"
+ ],
+ "preserveImports": false
+ }
+ },
+ "@babel/preset-react": true,
+ "@babel/preset-flow": false
+ },
+ "plugins": {
+ "@babel/plugin-proposal-class-properties": false,
+ "@babel/plugin-proposal-decorators": {
+ "enable": false,
+ "options": {
+ "decoratorsBeforeExport": true
+ }
+ },
+ "@babel/plugin-proposal-export-namespace-from": false,
+ "@babel/plugin-proposal-function-sent": false,
+ "@babel/plugin-proposal-nullish-coalescing-operator": false,
+ "@babel/plugin-proposal-numeric-separator": false,
+ "@babel/plugin-proposal-optional-chaining": false,
+ "@babel/plugin-proposal-private-methods": false,
+ "@babel/plugin-proposal-throw-expressions": false
+ },
+ "customPresets": [],
+ "customPlugins": []
+ },
+ "bundle-js": {
+ "sourceMap": false,
+ "exclude": [
+ "node_modules",
+ "bower_components"
+ ],
+ "devMode": true,
+ "globals": [],
+ "externals": [],
+ "babel": {
+ "enable": true,
+ "options": {
+ "sourceMap": false,
+ "presets": {
+ "@babel/preset-env": {
+ "enable": true,
+ "options": {
+ "targets": [
+ "> 2%",
+ "not dead"
+ ],
+ "preserveImports": false
+ }
+ },
+ "@babel/preset-react": true,
+ "@babel/preset-flow": false
+ },
+ "plugins": {
+ "@babel/plugin-proposal-class-properties": false,
+ "@babel/plugin-proposal-decorators": {
+ "enable": false,
+ "options": {
+ "decoratorsBeforeExport": true
+ }
+ },
+ "@babel/plugin-proposal-export-namespace-from": false,
+ "@babel/plugin-proposal-function-sent": false,
+ "@babel/plugin-proposal-nullish-coalescing-operator": false,
+ "@babel/plugin-proposal-numeric-separator": false,
+ "@babel/plugin-proposal-optional-chaining": false,
+ "@babel/plugin-proposal-private-methods": false,
+ "@babel/plugin-proposal-throw-expressions": false
+ },
+ "customPresets": [],
+ "customPlugins": []
+ }
+ },
+ "css": {
+ "enable": true
+ },
+ "fonts": {
+ "enable": true
+ }
+ },
+ "coffeescript": {
+ "header": false,
+ "bare": false,
+ "sourceMap": false
+ },
+ "command": {
+ "command": "",
+ "rootDir": ""
+ },
+ "concat-js": {
+ "sourceMap": false,
+ "rootDir": ""
+ },
+ "copy": {
+ "sourceMap": false
+ },
+ "dart-sass": {
+ "indentType": "space",
+ "indentWidth": 4,
+ "linefeed": "lf",
+ "sourceMap": false
+ },
+ "haml": {
+ "doubleQuoteAttributes": true
+ },
+ "jpg": {
+ "quality": 90
+ },
+ "less": {
+ "javascriptEnabled": false,
+ "strictImports": false,
+ "insecure": false,
+ "math": "always",
+ "strictUnits": false,
+ "dumpLineNumbers": false,
+ "sourceMap": false
+ },
+ "markdown": {
+ "githubFlavored": true,
+ "wrapWithHtml": false
+ },
+ "minify-css": {
+ "sourceMap": false
+ },
+ "minify-html": {
+ "caseSensitive": false,
+ "collapseBooleanAttributes": true,
+ "collapseInlineTagWhitespace": false,
+ "collapseWhitespace": true,
+ "conservativeCollapse": false,
+ "decodeEntities": false,
+ "html5": true,
+ "includeAutoGeneratedTags": true,
+ "keepClosingSlash": false,
+ "minifyCSS": true,
+ "minifyJS": true,
+ "preserveLineBreaks": false,
+ "preventAttributesEscaping": false,
+ "processConditionalComments": false,
+ "removeAttributeQuotes": false,
+ "removeComments": true,
+ "removeEmptyAttributes": false,
+ "removeEmptyElement": false,
+ "removeOptionalTags": false,
+ "removeRedundantAttributes": false,
+ "removeScriptTypeAttributes": false,
+ "removeStyleLinkTypeAttributes": false,
+ "removeTagWhitespace": false,
+ "sortAttributes": false,
+ "sortClassName": false,
+ "useShortDoctype": true
+ },
+ "minify-js": {
+ "parse": {
+ "bare_returns": false
+ },
+ "compress": {
+ "arrows": true,
+ "arguments": false,
+ "booleans": true,
+ "booleans_as_integers": false,
+ "collapse_vars": true,
+ "comparisons": true,
+ "computed_props": true,
+ "conditionals": true,
+ "dead_code": true,
+ "directives": true,
+ "drop_console": false,
+ "drop_debugger": true,
+ "evaluate": true,
+ "expression": false,
+ "global_defs": [],
+ "hoist_funs": false,
+ "hoist_props": true,
+ "hoist_vars": false,
+ "if_return": true,
+ "inline": 3,
+ "join_vars": true,
+ "keep_fargs": true,
+ "keep_infinity": false,
+ "loops": true,
+ "negate_iife": true,
+ "properties": true,
+ "pure_funcs": [],
+ "pure_getters": false,
+ "reduce_vars": true,
+ "sequences": true,
+ "side_effects": true,
+ "switches": true,
+ "top_retain": [],
+ "typeofs": true,
+ "unsafe": false,
+ "unsafe_arrows": false,
+ "unsafe_comps": false,
+ "unsafe_Function": false,
+ "unsafe_math": false,
+ "unsafe_proto": false,
+ "unsafe_regexp": false,
+ "unsafe_undefined": false,
+ "unused": true
+ },
+ "mangle": {
+ "eval": false,
+ "reserved": []
+ },
+ "output": {
+ "ascii_only": false,
+ "braces": false,
+ "comments": "none",
+ "inline_script": true,
+ "keep_numbers": false,
+ "keep_quoted_props": false,
+ "preamble": null,
+ "quote_keys": false,
+ "quote_style": 0,
+ "semicolons": true,
+ "shebang": true,
+ "webkit": false,
+ "wrap_iife": false,
+ "wrap_func_args": true
+ },
+ "sourceMap": false,
+ "toplevel": false,
+ "ie8": false,
+ "keep_classnames": false,
+ "keep_fnames": false,
+ "safari10": false
+ },
+ "node-sass": {
+ "indentType": "space",
+ "indentWidth": 2,
+ "linefeed": "lf",
+ "outputStyle": "expanded",
+ "precision": 10,
+ "sourceMap": false,
+ "sourceComments": false
+ },
+ "png": {
+ "quality": 90
+ },
+ "pug": {
+ "pretty": true
+ },
+ "slim": {
+ "indent": "space",
+ "indentSize": 2,
+ "pretty": true
+ },
+ "stylus": {
+ "useNib": true,
+ "sourceMap": false,
+ "linenos": false
+ },
+ "svg": {
+ "cleanupAttrs": true,
+ "removeDoctype": true,
+ "removeXMLProcInst": true,
+ "removeComments": true,
+ "removeMetadata": true,
+ "removeTitle": true,
+ "removeDesc": true,
+ "removeUselessDefs": true,
+ "removeEditorsNSData": true,
+ "removeEmptyAttrs": true,
+ "removeHiddenElems": true,
+ "removeEmptyText": true,
+ "removeEmptyContainers": true,
+ "removeViewBox": false,
+ "cleanupEnableBackground": true,
+ "convertStyleToAttrs": true,
+ "convertColors": true,
+ "convertPathData": true,
+ "convertTransform": true,
+ "removeUnknownsAndDefaults": true,
+ "removeNonInheritableGroupAttrs": true,
+ "removeUselessStrokeAndFill": true,
+ "removeUnusedNS": true,
+ "cleanupIDs": true,
+ "cleanupNumericValues": true,
+ "moveElemsAttrsToGroup": true,
+ "moveGroupAttrsToElems": true,
+ "collapseGroups": true,
+ "removeRasterImages": false,
+ "mergePaths": true,
+ "convertShapeToPath": true,
+ "sortAttrs": true,
+ "removeDimensions": true
+ },
+ "turf": {
+ "rootDir": ""
+ },
+ "typescript": {
+ "allowJs": false,
+ "allowSyntheticDefaultImports": true,
+ "allowUmdGlobalAccess": false,
+ "allowUnreachableCode": false,
+ "allowUnusedLabels": false,
+ "alwaysStrict": false,
+ "charset": "utf8",
+ "checkJs": false,
+ "declaration": false,
+ "disableSizeLimit": false,
+ "downlevelIteration": false,
+ "emitBOM": false,
+ "emitDecoratorMetadata": false,
+ "experimentalDecorators": false,
+ "forceConsistentCasingInFileNames": false,
+ "importHelpers": false,
+ "jsx": "React",
+ "keyofStringsOnly": false,
+ "lib": [],
+ "maxNodeModuleJsDepth": 0,
+ "module": "ES2015",
+ "moduleResolution": "NodeJs",
+ "newLine": "LineFeed",
+ "noFallthroughCasesInSwitch": false,
+ "noImplicitAny": false,
+ "noImplicitReturns": false,
+ "noImplicitThis": false,
+ "noStrictGenericChecks": false,
+ "noUnusedLocals": false,
+ "noUnusedParameters": false,
+ "noImplicitUseStrict": false,
+ "noLib": false,
+ "noResolve": false,
+ "preserveConstEnums": false,
+ "jsxFactory": "React.createElement",
+ "removeComments": false,
+ "skipLibCheck": false,
+ "sourceMap": false,
+ "strict": false,
+ "strictFunctionTypes": false,
+ "strictBindCallApply": false,
+ "strictNullChecks": false,
+ "strictPropertyInitialization": false,
+ "suppressExcessPropertyErrors": false,
+ "suppressImplicitAnyIndexErrors": false,
+ "target": "ES3",
+ "resolveJsonModule": false,
+ "esModuleInterop": false,
+ "useDefineForClassFields": false
+ },
+ "custom-p8o8uczp3f": {
+ "command": "more +1 < {{input}} > ./temp.css && move /Y ./temp.css {{output}}"
+ }
+ },
+ "fileTypes": {
+ "sass": {
+ "extensions": [
+ ".scss",
+ ".sass"
+ ],
+ "autoCompile": true,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "dart-sass",
+ "enable": true
+ },
+ {
+ "task": "autoprefixer",
+ "enable": true
+ },
+ {
+ "task": "minify-css",
+ "enable": false
+ },
+ {
+ "task": "custom-p8o8uczp3f",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".css",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "scss",
+ "replaceWith": "css"
+ },
+ {
+ "segment": "sass",
+ "replaceWith": "css"
+ }
+ ]
+ }
+ },
+ "less": {
+ "extensions": [
+ ".less"
+ ],
+ "autoCompile": true,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "less",
+ "enable": true
+ },
+ {
+ "task": "autoprefixer",
+ "enable": true
+ },
+ {
+ "task": "minify-css",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".css",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "less",
+ "replaceWith": "css"
+ }
+ ]
+ }
+ },
+ "pug": {
+ "extensions": [
+ ".pug",
+ ".jade"
+ ],
+ "autoCompile": true,
+ "tasks": [
+ {
+ "task": "pug",
+ "enable": true
+ },
+ {
+ "task": "minify-html",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".html",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "pug",
+ "replaceWith": "html"
+ }
+ ]
+ }
+ },
+ "css": {
+ "extensions": [
+ ".css"
+ ],
+ "autoCompile": false,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "copy",
+ "enable": true
+ },
+ {
+ "task": "autoprefixer",
+ "enable": true
+ },
+ {
+ "task": "minify-css",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".css",
+ "type": "SOURCE_RELATIVE",
+ "relativePath": "",
+ "suffix": "-dist",
+ "alwaysSuffix": false
+ }
+ },
+ "javascript": {
+ "extensions": [
+ ".js",
+ ".jsx"
+ ],
+ "autoCompile": false,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "copy",
+ "enable": true
+ },
+ {
+ "task": "concat-js",
+ "enable": false
+ },
+ {
+ "task": "babel",
+ "enable": false
+ },
+ {
+ "task": "bundle-js",
+ "enable": false
+ },
+ {
+ "task": "minify-js",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".js",
+ "type": "SOURCE_RELATIVE",
+ "relativePath": "",
+ "suffix": "-dist",
+ "alwaysSuffix": false
+ }
+ },
+ "stylus": {
+ "extensions": [
+ ".styl"
+ ],
+ "autoCompile": true,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "stylus",
+ "enable": true
+ },
+ {
+ "task": "autoprefixer",
+ "enable": true
+ },
+ {
+ "task": "minify-css",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".css",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "stylus",
+ "replaceWith": "css"
+ },
+ {
+ "segment": "styl",
+ "replaceWith": "css"
+ }
+ ]
+ }
+ },
+ "markdown": {
+ "extensions": [
+ ".md",
+ ".markdown",
+ ".mkd"
+ ],
+ "autoCompile": false,
+ "tasks": [
+ {
+ "task": "markdown",
+ "enable": true
+ },
+ {
+ "task": "minify-html",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".html",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "markdown",
+ "replaceWith": "html"
+ }
+ ]
+ }
+ },
+ "haml": {
+ "extensions": [
+ ".haml"
+ ],
+ "autoCompile": true,
+ "tasks": [
+ {
+ "task": "haml",
+ "enable": true
+ },
+ {
+ "task": "minify-html",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".html",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "haml",
+ "replaceWith": "html"
+ }
+ ]
+ }
+ },
+ "slim": {
+ "extensions": [
+ ".slim"
+ ],
+ "autoCompile": true,
+ "tasks": [
+ {
+ "task": "slim",
+ "enable": true
+ },
+ {
+ "task": "minify-html",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".html",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "slim",
+ "replaceWith": "html"
+ }
+ ]
+ }
+ },
+ "coffeescript": {
+ "extensions": [
+ ".coffee"
+ ],
+ "autoCompile": true,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "coffeescript",
+ "enable": true
+ },
+ {
+ "task": "babel",
+ "enable": false
+ },
+ {
+ "task": "bundle-js",
+ "enable": false
+ },
+ {
+ "task": "minify-js",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".js",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "coffee-script",
+ "replaceWith": "js"
+ },
+ {
+ "segment": "coffeescript",
+ "replaceWith": "js"
+ },
+ {
+ "segment": "coffee",
+ "replaceWith": "js"
+ }
+ ]
+ }
+ },
+ "turf": {
+ "extensions": [
+ ".turf",
+ ".kit"
+ ],
+ "autoCompile": true,
+ "tasks": [
+ {
+ "task": "turf",
+ "enable": true
+ },
+ {
+ "task": "minify-html",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".html",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "turf",
+ "replaceWith": "html"
+ }
+ ]
+ }
+ },
+ "typescript": {
+ "extensions": [
+ ".ts",
+ ".tsx"
+ ],
+ "autoCompile": true,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "typescript",
+ "enable": true
+ },
+ {
+ "task": "babel",
+ "enable": false
+ },
+ {
+ "task": "bundle-js",
+ "enable": false
+ },
+ {
+ "task": "minify-js",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".js",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "typescript",
+ "replaceWith": "js"
+ },
+ {
+ "segment": "ts",
+ "replaceWith": "js"
+ }
+ ]
+ }
+ },
+ "jpg": {
+ "extensions": [
+ ".jpg",
+ ".jpeg"
+ ],
+ "tasks": [
+ {
+ "task": "jpg",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".jpg",
+ "type": "SOURCE_RELATIVE",
+ "relativePath": ""
+ }
+ },
+ "png": {
+ "extensions": [
+ ".png"
+ ],
+ "tasks": [
+ {
+ "task": "png",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".png",
+ "type": "SOURCE_RELATIVE",
+ "relativePath": ""
+ }
+ },
+ "svg": {
+ "extensions": [
+ ".svg"
+ ],
+ "tasks": [
+ {
+ "task": "svg",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".svg",
+ "type": "SOURCE_RELATIVE",
+ "relativePath": ""
+ }
+ }
+ },
+ "files": [
+ {
+ "file": "src/Fading_Suns_4th_Edition_Pax_Alexius.pug",
+ "config": {
+ "customOutput": "Fading_Suns_4th_Edition_Pax_Alexius.html"
+ }
+ },
+ {
+ "file": "src/Fading_Suns_4th_Edition_Pax_Alexius.scss",
+ "config": {
+ "customOutput": "Fading_Suns_4th_Edition_Pax_Alexius.css"
+ }
+ }
+ ]
+ }
+}
diff --git a/Fading Suns 4th Edition - Pax Alexius/sheet.json b/Fading Suns 4th Edition - Pax Alexius/sheet.json
new file mode 100644
index 0000000000..1936c19201
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/sheet.json
@@ -0,0 +1,8 @@
+{
+ "html": "Fading_Suns_4th_Edition_Pax_Alexius.html",
+ "css": "Fading_Suns_4th_Edition_Pax_Alexius.css",
+ "authors": "admiralnlson",
+ "roll20userid": "2324543",
+ "preview": "Fading_Suns_4th_Edition_Pax_Alexius.preview-en.jpg",
+ "instructions": "This character sheet is for **Fading Suns, Pax Alexius (a.k.a. 4th Edition) by Ulisses Spiele**.\nPlease go to [the dedicated wiki page](https://wiki.roll20.net/Fading_Suns_Pax_Alexius) for instructions on how to use the sheet.\nYou may also wish to check out the [project's README file](https://github.com/Roll20/roll20-character-sheets/blob/master/Fading%20Suns%20Pax%20Alexius/README.md), which contains release notes and planned evolutions.\n\nIssues, Ideas & Questions can be sent to the [admiralnlson](https://app.roll20.net/users/2324543), original author and current maintainer of this character sheet."
+}
diff --git a/Fading Suns 4th Edition - Pax Alexius/src/Fading_Suns_4th_Edition_Pax_Alexius.pug b/Fading Suns 4th Edition - Pax Alexius/src/Fading_Suns_4th_Edition_Pax_Alexius.pug
new file mode 100644
index 0000000000..dfcbc48cf0
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/src/Fading_Suns_4th_Edition_Pax_Alexius.pug
@@ -0,0 +1,405 @@
+mixin label(i18n)
+ label(data-i18n=i18n )&attributes(attributes)
+
+mixin numeric_input(attr_name, default_value, min_value=false)
+ input(name=`attr_${attr_name}` type='number' title=`\${${attr_name}}` + (default_value!==false ? `. Default: ${default_value}.` : '') value=default_value min=min_value)&attributes(attributes)
+
+mixin text_input(attr_name)
+ input(name=`attr_${attr_name}` type='text' title=`\${${attr_name}}`)&attributes(attributes)
+
+-
+ const characteristics = [
+ { category: 'body', list: [ 'strength', 'dexterity', 'endurance' ] },
+ { category: 'mind', list: [ 'wits', 'perception', 'will' ] },
+ { category: 'spirit', list: [ 'presence', 'intuition', 'faith' ] }
+ ];
+
+mixin characteristic(name)
+ button.fs-d20(type='roll' name=`roll_${name}` value=`&{template:fs-GoalRoll} {{characterName=@{character_name}}} {{characteristicName-i18n=^{${name}}}} {{bonus_penalty=[[?{@{goal_bonus_penalty_rollquery_i18n}}]]}} {{goal=[[@{${name}}+[[?{@{goal_bonus_penalty_rollquery_i18n}}]]]]}} {{roll=[[1d20cs[[{@{${name}}+[[?{@{goal_bonus_penalty_rollquery_i18n}}]],19}kl1]]cf20]]}}`)
+ label.fs-characteristic-label
+ span(data-i18n=`${name}`)
+ +numeric_input(name, 3)
+-
+ const skills = [
+ { name: 'academia', default: 3 },
+ { name: 'alchemy', default: 0 },
+ { name: 'animalia', default: 3 },
+ { name: 'arts', default: 3 },
+ { name: 'charm', default: 3 },
+ { name: 'crafts', default: 3 },
+ { name: 'disguise', default: 3 },
+ { name: 'drive', default: 3 },
+ { name: 'empathy', default: 3 },
+ { name: 'fight', default: 3 },
+ { name: 'focus', default: 3 },
+ { name: 'impress', default: 3 },
+ { name: 'interface', default: 0 },
+
+ { name: 'intrusion', default: 3 },
+ { name: 'knavery', default: 3 },
+ { name: 'melee', default: 3 },
+ { name: 'observe', default: 3 },
+ { name: 'perform', default: 3 },
+ { name: 'pilot', default: 0 },
+ { name: 'remedy', default: 3 },
+ { name: 'shoot', default: 3 },
+ { name: 'sleight_of_hand', default: 3 },
+ { name: 'sneak', default: 3 },
+ { name: 'survival', default: 3 },
+ { name: 'tech_redemption', default: 3 },
+ { name: 'vigor', default: 3 }
+ ];
+
+mixin skill(name, value)
+ .fs-skill
+ .fs-skill-normal
+ button.fs-d20(type='roll' name='roll_disabledbutton' value='' disabled='')
+ .fs-skill-roll-characteristic-choice
+ label
+ span(data-i18n=`${name}`) #{name}
+ | +
+ each charac_cat in characteristics
+ each characteristicName in charac_cat.list
+ div
+ div
+ button.fs-d20(type='roll' name=`roll_${characteristicName}_${name}` value=`&{template:fs-GoalRoll} {{characterName=@{character_name}}} {{characteristicName-i18n=^{${characteristicName}}}} {{skillName-i18n=^{${name}}}} {{bonus_penalty=[[?{@{goal_bonus_penalty_rollquery_i18n}}]]}} {{goal=[[@{${characteristicName}}+@{${name}}+[[?{@{goal_bonus_penalty_rollquery_i18n}}]]]]}} {{roll=[[1d20cs[[{@{${characteristicName}}+@{${name}}+[[?{@{goal_bonus_penalty_rollquery_i18n}}]],19}kl1]]cf20]]}}`)
+ label(data-i18n=`${characteristicName}`) #{characteristicName}
+ label.fs-skill-label
+ span(data-i18n=`${name}`) #{name}
+ +numeric_input(name, value)
+
+
+// CHARACTER SHEET LAYOUT - START
+.fs-sheet
+
+ input(type='hidden' name='attr_goal_bonus_penalty_rollquery_i18n' value='')
+
+ .fs-sheet-container
+ input(type='hidden' name='attr_sheet_version' value='latest')
+
+ .fs-baseinfo
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='name')
+ .fs-name-grid
+ +text_input('character_name')(class ='fs-name')
+ label.fs-planet(data-i18n='planet')
+ +text_input('planet')(class ='fs-planet')
+
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='rank')
+ .fs-rank-grid
+ +text_input('rank')(class ='fs-rank')
+ label.fs-birthdate(data-i18n='birthdate')
+ +text_input('birthdate')(class ='fs-birthdate')
+
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='species')
+ .fs-species-grid
+ +text_input('species')(class ='fs-species')
+ label.fs-size(data-i18n='size')
+ +text_input('size')(class ='fs-size')
+ label.fs-speed(data-i18n='speed')
+ +text_input('speed')(class ='fs-speed')
+
+ .fs-lifepath
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='class')
+ .fs-class-grid
+ +text_input('class_1')(class ='fs-class1')
+ +text_input('class_2')(class ='fs-class2')
+ label.fs-level(data-i18n='level') Level
+ +numeric_input('level', 1, 1)(class='fs-level')
+
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='faction')
+ .fs-faction-grid
+ +text_input('faction')(class ='fs-faction')
+ label.fs-blessing(data-i18n='blessing')
+ +text_input('blessing')(class ='fs-blessing')
+ label.fs-curse(data-i18n='curse') Curse
+ +text_input('curse')(class ='fs-curse')
+
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='calling')
+ .fs-calling-grid
+ +text_input('calling_1')
+ +text_input('calling_2')
+ +text_input('calling_3')
+
+ .fs-traits
+ .fs-sheet-section.fs-skills-header
+ label.fs-uppercase-header(data-i18n='skills')
+
+ .fs-skill-col.fs-skills-1
+ - for (let i = 0; i < skills.length / 2; ++i)
+ +skill(skills[i].name, skills[i].default)
+
+ .fs-skill-col.fs-skills-2
+ - for (let i = skills.length / 2; i < skills.length; ++i)
+ +skill(skills[i].name, skills[i].default)
+
+ .fs-characteristics
+ each charac_cat in characteristics
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n=charac_cat.category)
+ .fs-characteristic-cat-grid
+ each charac_name in charac_cat.list
+ +characteristic(charac_name)
+
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='occult')
+ .fs-occult
+ div
+ +label('psi')(class='fs-occult-left')
+ +numeric_input('psi', false, 0)
+ +numeric_input('urge', false, 0)
+ +label('urge')(class='fs-occult-right')
+ div
+ +label('theurgy')(class='fs-occult-left')
+ +numeric_input('theurgy', false, 0)
+ +numeric_input('hubris', false, 0)
+ +label('hubris')(class='fs-occult-right')
+ div
+ +text_input('occult_3_name')(class='fs-occult-left')
+ +numeric_input('occult_3', false, 0)
+ +numeric_input('occult_3_opposite', false, 0)
+ +text_input('occult_3_opposite_name')(class='fs-occult-right')
+
+ .fs-defenses
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='resistances')
+ .fs-resistances-grid
+ each charac_cat in characteristics
+ label(data-i18n=charac_cat.category)
+ +numeric_input(`${charac_cat.category}_resistance`, 0, 0)
+ +text_input(`${charac_cat.category}_resistance_modifier`)(data-i18n-placeholder='resistance_modifier')
+
+ .fs-sheet-section
+ .fs-armor-and-e-shield-grid
+ .fs-armor-and-e-shield-grid-row
+ label.fs-uppercase-header(data-i18n='armor')
+ +text_input('armor_name')
+ .fs-armor-and-e-shield-grid-row.fs-armor-vs
+ +numeric_input('armor_vs_blaster', false, 0)(data-i18n-placeholder='blaster_s')
+ +numeric_input('armor_vs_flame', false, 0)(data-i18n-placeholder='flame_s')
+ +numeric_input('armor_vs_hard', false, 0)(data-i18n-placeholder='hard_s')
+ +numeric_input('armor_vs_laser', false, 0)(data-i18n-placeholder='laser_s')
+ +numeric_input('armor_vs_shock', false, 0)(data-i18n-placeholder='shock_s')
+ +numeric_input('armor_vs_slam', false, 0)(data-i18n-placeholder='slam_s')
+ +numeric_input('armor_vs_sonic', false, 0)(data-i18n-placeholder='sonic_s')
+ .fs-armor-and-e-shield-grid-row
+ label.fs-uppercase-header(data-i18n='e_shield')
+ +text_input('shield_name')
+ .fs-armor-and-e-shield-grid-row.fs-e-shield-props
+ label(data-i18n='e_shield_thresholds')
+ +numeric_input('shield_thresholds_min')
+ label /
+ +numeric_input('shield_thresholds_max')
+ label(data-i18n='e_shield_hits')
+ +numeric_input('shield_hits')
+
+ .fs-sheet-section
+ .fs-vita-and-revivals-grid
+ label.fs-vitality-header.fs-uppercase-header(data-i18n='vitality')
+ label.fs-vitality-rating(data-i18n='rating')
+ +numeric_input('vitality_rating', 0, 0)(class='fs-vitality-rating')
+ label.fs-vitality-current(data-i18n='current')
+ +numeric_input('vitality_current', 0, 0)(class='fs-vitality-current')
+ label.fs-revivals-header.fs-uppercase-header(data-i18n='revivals')
+ label.fs-revivals-rating(data-i18n='rating')
+ +numeric_input('revivals_rating', 0, 0)(class='fs-revivals-rating')
+ label.fs-revivals-number(data-i18n='number')
+ +numeric_input('revivals_number', 0, 0)(class='fs-revivals-number')
+
+ .fs-actions-vp-bank-and-surge
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='actions')
+
+ .fs-actions
+ .fs-table
+ label.fs-table-head
+ label.fs-table-head(data-i18n='action')
+ label.fs-table-head(data-i18n='characteristic')
+ label.fs-table-head(data-i18n='skill')
+ label.fs-table-head(data-i18n='goal_bonus_penalty')
+ fieldset.repeating_actions
+ .fs-table
+ input(type='hidden' name='attr_action_characteristic_value')
+ input(type='hidden' name='attr_action_skill_value')
+ button.fs-20(type='roll' name='roll_action_roll' value='&{template:fs-GoalRoll} {{title=@{action_name}}} {{characterName=@{character_name}}} {{characteristicName-i18n=^{@{action_characteristic}}}} {{skillName-i18n=^{@{action_skill}}}} {{bonus_penalty=[[@{action_goal_bonus_penalty}+[[?{@{goal_bonus_penalty_rollquery_i18n}}]]]]}} {{goal=[[@{action_characteristic_value}+@{action_skill_value}+@{action_goal_bonus_penalty}+[[?{@{goal_bonus_penalty_rollquery_i18n}}]]]]}} {{roll=[[1d20cs[[{@{action_characteristic_value}+@{action_skill_value}+@{action_goal_bonus_penalty}+[[?{@{goal_bonus_penalty_rollquery_i18n}}]],19}kl1]]cf20]]}}')
+ input.fs-table-cell(type='text' name='attr_action_name')
+ select.fs-table-cell(name='attr_action_characteristic')
+ option(value='' selected)
+ each charac_cat in characteristics
+ optgroup(data-i18n-label=charac_cat.category)
+ each charac_name in charac_cat.list
+ option(value=charac_name data-i18n=charac_name)
+ select.fs-table-cell(name='attr_action_skill')
+ option(value='' selected)
+ each sk in skills
+ option(value=sk.name data-i18n=sk.name)
+ input.fs-table-cell(type='number' name='attr_action_goal_bonus_penalty' value=0)
+ .fs-notes
+ .fs-auto-expand-textarea
+ span(name='attr_action_impact_notes')
+ textarea(name='attr_action_impact_notes' data-i18n-placeholder='impact_notes' spellcheck='false')
+
+ .fs-sheet-section-frame
+ label.fs-uppercase-header(data-i18n='vp_bank')
+ .fs-vp-and-surge-grids
+ label(data-i18n='vp_bank_capacity')
+ +numeric_input('vp_bank_capacity', 0, 0)
+ label(data-i18n='current_vp')
+ +numeric_input('current_vp', 0, 0)
+ label(data-i18n='current_wp')
+ +numeric_input('current_wp', 0, 0)
+ label.fs-uppercase-header(data-i18n='surge')
+ .fs-vp-and-surge-grids
+ label(data-i18n='surge_rating')
+ +numeric_input('surge_rating', 0, 0)
+ label(data-i18n='surge_number')
+ +numeric_input('surge_number', 0, 0)
+
+ .fs-perks-capabilities-and-birthrights
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='perks')
+ .fs-perks
+ fieldset.repeating_perks
+ .fs-table
+ input.fs-table-cell(type='text' name='attr_perk_name' data-i18n-placeholder='perk_name')
+ .fs-notes
+ .fs-auto-expand-textarea
+ span(name='attr_perk_notes')
+ textarea(name='attr_perk_notes' data-i18n-placeholder='perk_notes' spellcheck='false')
+ div
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='capabilities')
+ .fs-perks
+ fieldset.repeating_capabilities
+ .fs-table
+ input.fs-table-cell(type='text' name='attr_capability_name' data-i18n-placeholder='capability_name')
+ .fs-notes
+ .fs-auto-expand-textarea
+ span(name='attr_capability_notes')
+ textarea(name='attr_capability_notes' data-i18n-placeholder='capability_notes' spellcheck='false')
+
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='birthrights')
+ .fs-perks
+ fieldset.repeating_birthrights
+ .fs-table
+ input.fs-table-cell(type='text' name='attr_birthright_name' data-i18n-placeholder='birthright_name')
+ .fs-notes
+ .fs-auto-expand-textarea
+ span(name='attr_birthright_notes')
+ textarea(name='attr_birthright_notes' data-i18n-placeholder='birthright_notes' spellcheck='false')
+
+ .fs-possessions
+ .fs-sheet-section
+
+ .fs-possessions-header
+ label.fs-uppercase-header(data-i18n='possessions')
+ label(data-i18n='techgnosis')
+ +numeric_input('techgnosis', 0, 0)
+
+ .fs-carried-equipment
+ each index in [1, 2]
+ div
+ .fs-table
+ label.fs-table-head(data-i18n='carried_equipment')
+ label.fs-table-head(data-i18n='tech_level_s')
+ label.fs-table-head(data-i18n='equipment_size')
+ fieldset(class=`repeating_carriedequipment${index}`)
+ .fs-table
+ input.fs-table-cell(type='text' name=`attr_carriedequipment${index}_name`)
+ input.fs-table-cell(type='number' name=`attr_carriedequipment${index}_tech_level`)
+ input.fs-table-cell(type='text' name=`attr_carriedequipment${index}_size`)
+ .fs-notes
+ .fs-auto-expand-textarea
+ span(name=`attr_carriedequipment${index}_notes`)
+ textarea(name=`attr_carriedequipment${index}_notes` data-i18n-placeholder='notes' spellcheck='false')
+
+ .fs-carried-weapons
+ div
+ .fs-table
+ label.fs-table-head(data-i18n='carried_weapons')
+ label.fs-table-head(data-i18n='tech_level_s')
+ label.fs-table-head(data-i18n='goal_bonus_penalty')
+ label.fs-table-head(data-i18n='damage_s')
+ label.fs-table-head(data-i18n='strength_s')
+ label.fs-table-head(data-i18n='range_s')
+ label.fs-table-head(data-i18n='rate_of_fire_s')
+ label.fs-table-head(data-i18n='ammunition_s')
+ label.fs-table-head(data-i18n='weapon_features')
+ fieldset(class='repeating_weapons')
+ .fs-table
+ input.fs-table-cell(type='text' name='attr_weapon_name')
+ input.fs-table-cell(type='number' name='attr_weapon_tl')
+ input.fs-table-cell(type='text' name='attr_weapon_goal')
+ input.fs-table-cell(type='text' name='attr_weapon_dmg')
+ input.fs-table-cell(type='number' name='attr_weapon_str')
+ input.fs-table-cell(type='text' name='attr_weapon_rng')
+ input.fs-table-cell(type='number' name='attr_weapon_rof')
+ input.fs-table-cell(type='number' name='attr_weapon_ammo')
+ input.fs-table-cell(type='text' name='attr_weapon_features')
+ .fs-notes
+ .fs-auto-expand-textarea
+ span(name=`attr_weapon_notes`)
+ textarea(name=`attr_weapon_notes` data-i18n-placeholder='notes' spellcheck='false')
+
+ .fs-owned
+ each index in [1, 2]
+ div
+ .fs-table
+ label.fs-table-head(data-i18n='owned')
+ label.fs-table-head(data-i18n='location')
+ fieldset(class=`repeating_owned${index}`)
+ .fs-table
+ input.fs-table-cell(type='text' name=`attr_owned${index}_name`)
+ input.fs-table-cell(type='text' name=`attr_owned${index}_location`)
+ .fs-notes
+ .fs-auto-expand-textarea
+ span(name=`attr_owned${index}_notes`)
+ textarea(name=`attr_owned${index}_notes` data-i18n-placeholder='notes' spellcheck='false')
+
+ .fs-money
+ .fs-sheet-section
+
+ .fs-money-header
+ label.fs-uppercase-header(data-i18n='money')
+ +label('cash')
+ +text_input('cash')
+
+ .fs-assets
+ each index in [1, 2]
+ div
+ .fs-table
+ label.fs-table-head(data-i18n='asset')
+ label.fs-table-head(data-i18n='income')
+ fieldset(class=`repeating_assets${index}`)
+ .fs-table
+ input.fs-table-cell(type='text' name=`attr_asset${index}_name`)
+ input.fs-table-cell(type='text' name=`attr_asset${index}_income`)
+ .fs-notes
+ .fs-auto-expand-textarea
+ span(name=`attr_asset${index}_notes`)
+ textarea(name=`attr_asset${index}_notes` data-i18n-placeholder='notes' spellcheck='false')
+
+ .fs-sheet-section
+ label.fs-uppercase-header(data-i18n='last_notes')
+ .fs-w100.fs-relative.fs-supertall-textarea
+ .fs-auto-expand-textarea
+ span(name='attr_last_notes')
+ textarea(title='@{last_notes}' type='text' name='attr_last_notes' data-i18n-placeholder='notes' placeholder='Notes' spellcheck='false')
+
+ .fs-footer
+
+// CHARACTER SHEET LAYOUT - END
+// ROLL TEMPLATES - START
+include roll-templates.html
+// ROLL TEMPLATES - END
+// SHEET WORKERS - START
+include sheet-workers.html
+// SHEET WORKERS - END
+
+// FIN.
diff --git a/Fading Suns 4th Edition - Pax Alexius/src/Fading_Suns_4th_Edition_Pax_Alexius.scss b/Fading Suns 4th Edition - Pax Alexius/src/Fading_Suns_4th_Edition_Pax_Alexius.scss
new file mode 100644
index 0000000000..79f3bdbfe3
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/src/Fading_Suns_4th_Edition_Pax_Alexius.scss
@@ -0,0 +1,1088 @@
+$sheet-width: 890px;
+$semitransparent: rgba(255, 255, 255, 0.5);
+$bordercolor: #baa894;
+$section-column-gap: 30px;
+$localgrid-gap: 2px;
+$level-box-width: 50px;
+$rollbutton-width: 25px;
+$traitval-width: 30px;
+$equipment-size-column: 50px;
+$goal-bonus-manul-col-width: 60px;
+$ammo-col-width: 50px;
+$default-line-height: 25px;
+
+@mixin main-columns {
+ width: 100%;
+ display: grid;
+ grid-column-gap: $section-column-gap;
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+}
+
+@mixin main-2-columns {
+ @include main-columns;
+ grid-template-columns: 1fr 1fr;
+}
+
+@mixin main-3-columns {
+ @include main-columns;
+ grid-template-columns: 1fr 1fr 1fr;
+}
+
+@mixin localgrid {
+ display: grid;
+ width: 100%;
+ gap: $localgrid-gap;
+
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: stretch;
+ justify-content: stretch;
+}
+
+@mixin indented {
+ padding-left: 20px;
+ text-align: end;
+}
+
+.sheet-fs-sheet *,
+.sheet-fs-sheet *::after,
+.sheet-fs-sheet *::before {
+ box-sizing: border-box;
+}
+
+body {
+ min-height: 100vh;
+ position: relative;
+}
+
+.sheet-fs-sheet label,
+.sheet-fs-sheet input,
+.sheet-fs-sheet button[type=roll],
+.sheet-fs-sheet select,
+.sheet-fs-sheet textarea {
+ font-size: 1.25em;
+ width: 100%;
+ margin: 0;
+ color: black;
+}
+
+.sheet-fs-sheet label {
+ font-weight: normal;
+ display: inline-block;
+ margin: 0;
+ padding-right: 0px;
+ width: initial;
+ height: initial;
+ color: initial;
+}
+
+.sheet-fs-sheet select {
+ border-color: $bordercolor;
+}
+
+.sheet-fs-sheet textarea {
+ height: initial;
+ resize: initial;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding: 0;
+ margin: 0;
+}
+
+.sheet-fs-sheet button,
+.sheet-fs-sheet button:hover,
+.sheet-fs-sheet button:active {
+ background-image: initial;
+}
+
+.sheet-fs-sheet button[type=roll] {
+ margin-left: initial;
+ margin-right: initial;
+ text-shadow: none;
+}
+
+.sheet-fs-sheet input,
+.sheet-fs-sheet textarea,
+.sheet-fs-sheet select,
+.sheet-fs-sheet button[type=roll] {
+ background-color: $semitransparent;
+ border: 1px solid $bordercolor;
+ border-radius: 0;
+ padding: 2px;
+ height: $default-line-height;
+}
+
+.sheet-fs-sheet input,
+.sheet-fs-sheet textarea,
+.sheet-fs-sheet select,
+.sheet-fs-sheet label {
+ vertical-align: middle;
+ align-self: center;
+}
+
+.sheet-fs-sheet input[type=number] {
+ text-align: center;
+ width: $traitval-width;
+ min-width: $traitval-width;
+ max-width: $traitval-width;
+}
+
+.sheet-fs-sheet button[type=roll] {
+ width: $rollbutton-width;
+}
+
+// turn off spinners for all number field in Chrome
+.sheet-fs-sheet input[type=number]::-webkit-inner-spin-button,
+.sheet-fs-sheet input[type=number]::-webkit-outer-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+}
+
+// turn off spinners for all number field in Firefox
+.sheet-fs-sheet input[type=number] {
+ -moz-appearance: textfield !important;
+}
+
+.sheet-fs-sheet button[type=roll] {
+ background-color: $semitransparent;
+ border: 1px solid $bordercolor;
+}
+
+.sheet-fs-sheet button[type=roll].sheet-fs-hidden {
+ display: none;
+}
+
+.sheet-fs-sheet button[type=roll]:before {
+ vertical-align: middle;
+ font-size: 1.2em;
+}
+
+.sheet-fs-sheet {
+ // cancelling the nasty default padding
+ margin-top: -28px;
+ margin-left: -30px;
+ margin-right: -30px;
+ margin-bottom: -10px;
+
+ min-width: $sheet-width;
+ max-width: $sheet-width;
+ background: url(https://i.ibb.co/t3xLwhN/fs-sheet-background.jpg) top left repeat;
+ background-attachment: scroll;
+ background-size: $sheet-width;
+
+ font-family: serif;
+}
+
+.sheet-fs-sheet-container {
+ padding-left: 50px;
+ padding-right: 50px;
+}
+
+.sheet-fs-sheet-section {
+ margin-top: 10px;
+ border-top: 2px solid black;
+ padding-top: 10px;
+}
+
+.sheet-fs-sheet-section-frame {
+ margin-top: 10px;
+ border: 2px solid black;
+ padding: 5px;
+
+ align-self: self-start; // for a shorter VP Bank & Surge box
+}
+
+label.sheet-fs-uppercase-header {
+ font-size: 1.5em;
+ line-height: $default-line-height;
+ font-weight: bold;
+ text-transform: uppercase;
+ white-space: nowrap;
+}
+
+.sheet-fs-sheet .repcontrol_del,
+.sheet-fs-sheet .repcontrol_move,
+.sheet-fs-sheet .repcontrol_add,
+.sheet-fs-sheet .repcontrol_edit {
+ font-family: pictos;
+}
+
+.sheet-fs-sheet .repitem.repitembroken {
+ border: 0.3rem dashed #FF0044 !important;
+ margin: 0 0 0 0;
+ border-radius: 0;
+}
+
+.repcontrol_edit {
+ order: 2;
+}
+
+.repcontainer {
+ width: 100%;
+}
+
+.repcontainer.editmode .repitem .itemcontrol {
+ z-index: 3;
+ background-color: rgba(255,255,255,0.5);
+}
+
+div.repcontrol {
+ display: flex;
+ flex-wrap: nowrap;
+ align-items: center;
+ justify-content: space-between;
+ flex-direction: row;
+ width: 100%;
+}
+
+.repcontrol_add::before {
+ content: '&';
+ visibility: visible;
+ font-family: pictos;
+ background-color: $semitransparent;
+ border: 0.1rem solid $bordercolor;
+ border-radius: 0.2rem;
+ font-size: 1.6rem;
+ padding: 0.3rem 0.5rem 0.3rem 0.5rem;
+ color: black;
+}
+
+.repcontrol .repcontrol_edit:after {
+ font-weight: bold;
+ content: '☰';
+ visibility: visible;
+ font-family: pictos;
+ background-color: $semitransparent;
+ border: 0.1rem solid $bordercolor;
+ border-radius: 0.2rem;
+ font-size: 1.6rem;
+ padding: 0.3rem 0.3rem 0.2rem 0.3rem;
+ color: black;
+}
+
+.editmode ~ .repcontrol .repcontrol_edit:after {
+ font-family: Pictos;
+ content: '3';
+ width:1.6rem;
+}
+
+.repcontrol_edit:hover:before,
+.repcontrol_edit:hover:after,
+.repcontrol_add:hover:before {
+ color: red !important;
+ box-shadow: 0.1rem 0.1rem 0.2rem $bordercolor;
+}
+
+.repcontrol .btn{
+ border: none;
+ color: white;
+ font-size: 0;
+ padding: 0;
+ margin-top: 3px;
+ background: none;
+ box-shadow: none;
+}
+
+.repcontrol .btn:focus {
+ outline: 0;
+}
+
+.repcontrol_add,
+.repcontrol_edit {
+ display: block;
+ background: none;
+ color: transparent !important;
+ border: none;
+ box-shadow: none;
+}
+
+.repcontrol_del,
+.repcontrol_move {
+ display: block;
+ background: white;
+ color: black;
+ border: none;
+ box-shadow: none;
+ width: 2em;
+}
+
+.sheet-fs-noshow {
+ display:none;
+}
+
+.sheet-rolltemplate-fs-button {
+ text-align: center;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-container,
+.sheet-rolltemplate-fs-d6Roll .sheet-fs-container {
+ border: 1px solid;
+ padding: 2px;
+ width: 90%;
+ background: url(https://i.ibb.co/t3xLwhN/fs-sheet-background.jpg) 25% 25%;
+ background-size: 850px;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-container .sheet-fs-charactername,
+.sheet-rolltemplate-fs-d6Roll .sheet-fs-container .sheet-fs-charactername {
+ font-weight: bold;
+ font-size: 0.9em;
+ line-height: 1em;
+ border-bottom: 1px solid black;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-container h1,
+.sheet-rolltemplate-fs-d6Roll .sheet-fs-container h1 {
+ color: #4a6486;
+ font-size: 1.1em;
+ font-variant: small-caps;
+ line-height: 1.2em;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-arrow-right,
+.sheet-rolltemplate-fs-d6Roll .sheet-fs-arrow-right {
+ border-bottom: 2px solid transparent;
+ border-left: 200px solid $bordercolor;
+ border-top: 2px solid transparent;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .inlinerollresult,
+.sheet-rolltemplate-fs-d6Roll .inlinerollresult {
+ background-color: transparent;
+ border: none;
+ font-weight: normal;
+ padding: 0 0 0 0;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .inlinerollresult.fullcrit,
+.sheet-rolltemplate-fs-d6Roll .inlinerollresult.fullcrit,
+.sheet-rolltemplate-fs-GoalRoll .inlinerollresult.importantroll,
+.sheet-rolltemplate-fs-d6Roll .inlinerollresult.importantroll,
+.sheet-rolltemplate-fs-GoalRoll .inlinerollresult.fullfail,
+.sheet-rolltemplate-fs-GoalRoll .inlinerollresult.fullfail {
+ border: none;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-critsuccess {
+ color: #3FB315;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-success {
+ color: #205b0b;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-failure {
+ color: #5b0b0b;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-critfailure {
+ color: #B31515;
+}
+
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-critsuccess .inlinerollresult,
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-success .inlinerollresult,
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-failure .inlinerollresult,
+.sheet-rolltemplate-fs-GoalRoll .sheet-fs-critfailure .inlinerollresult {
+ font-weight: bold;
+}
+
+
+.sheet-fs-w100 {
+ width: 100%;
+}
+
+.sheet-fs-h100 {
+ height: 100%;
+}
+
+.sheet-fs-autoexpand > input,
+.sheet-fs-autoexpand > textarea {
+ width: 100%;
+}
+
+.sheet-fs-baseinfo {
+ @include main-3-columns;
+}
+
+.sheet-fs-name-grid {
+ @include localgrid;
+
+ grid-template:
+ "name_ name_"
+ "planet-label planet-value" / max-content 1fr;
+}
+
+.sheet-fs-name {
+ grid-area: name_;
+}
+
+label.sheet-fs-planet {
+ grid-area: planet-label;
+ @include indented;
+}
+
+input.sheet-fs-planet {
+ grid-area: planet-value;
+}
+
+.sheet-fs-rank-grid {
+ @include localgrid;
+
+ grid-template:
+ "rank rank"
+ "birthdate-label birthdate-value" / max-content 1fr;
+}
+
+.sheet-fs-rank {
+ grid-area: rank;
+}
+
+label.sheet-fs-birthdate {
+ grid-area: birthdate-label;
+ @include indented;
+}
+
+input.sheet-fs-birthdate {
+ grid-area: birthdate-value;
+}
+
+.sheet-fs-species-grid {
+ @include localgrid;
+
+ grid-template:
+ "species species species species"
+ "size-label size-value speed-label speed-value" / max-content 1fr max-content 1fr;
+}
+
+.sheet-fs-species {
+ grid-area: species;
+}
+
+label.sheet-fs-size {
+ grid-area: size-label;
+ @include indented;
+}
+
+input.sheet-fs-size {
+ grid-area: size-value;
+}
+
+label.sheet-fs-speed {
+ grid-area: speed-label;
+ @include indented;
+}
+
+input.sheet-fs-speed {
+ grid-area: speed-value;
+}
+
+.sheet-fs-lifepath {
+ @include main-3-columns;
+}
+
+.sheet-fs-class-grid {
+ @include localgrid;
+
+ grid-template:
+ "class1 levelvalue"
+ "class2 levelvalue"
+ "levellabel levelvalue" / 1fr max-content;
+}
+.sheet-fs-class1 {
+ grid-area: class1;
+}
+
+.sheet-fs-class2 {
+ grid-area: class2;
+}
+
+label.sheet-fs-level {
+ grid-area: levellabel;
+ @include indented;
+}
+
+input[type=number].sheet-fs-level {
+ grid-area: levelvalue;
+ width: $level-box-width;
+ max-width: $level-box-width;
+ height: 100%;
+}
+
+.sheet-fs-faction-grid {
+ @include localgrid;
+
+ grid-template:
+ "faction faction"
+ "blessing-label blessing-value"
+ "curse-label curse-value" / max-content 1fr;
+}
+
+.sheet-fs-faction {
+ grid-area: faction;
+}
+
+label.sheet-fs-blessing {
+ grid-area: blessing-label;
+ @include indented;
+}
+
+input.sheet-fs-blessing {
+ grid-area: blessing-value;
+}
+
+label.sheet-fs-curse {
+ grid-area: curse-label;
+ @include indented;
+}
+
+input.sheet-fs-curse {
+ grid-area: curse-value;
+}
+
+.sheet-fs-calling-grid {
+ @include localgrid;
+
+ grid-template-columns: 1fr;
+}
+
+
+.sheet-fs-traits {
+ @include main-3-columns;
+
+ grid-template:
+ "skills-header skills-header characteristics" max-content
+ "skills-1 skills-2 characteristics" 1fr / 1fr 1fr 1fr; // TODO review these proportions later
+}
+.sheet-fs-skills-header { grid-area: skills-header; }
+
+
+.sheet-fs-skill-col {
+ @include localgrid;
+
+ grid-template-rows: $rollbutton-width max-content max-content;
+
+ align-items: flex-start;
+ align-content: flex-start;
+ justify-items: flex-start;
+ justify-content: stretch;
+}
+
+.sheet-fs-skills-1 { grid-area: skills-1; }
+.sheet-fs-skills-2 { grid-area: skills-2; }
+
+.sheet-fs-characteristics {
+ grid-area: characteristics;
+
+ display: flex;
+ flex-wrap: nowrap;
+ flex-direction: column;
+
+ align-items: stretch;
+ align-content: flex-start;
+ justify-items: flex-start;
+ justify-content: space-between;
+}
+
+.sheet-fs-characteristic,
+.sheet-fs-skill {
+ display: inline-flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+
+ align-content: center;
+ align-items: center;
+ justify-content: center;
+ align-self: stretch;
+
+ width: 100%;
+ height: $default-line-height;
+}
+
+.sheet-fs-characteristic-cat-grid {
+ @include localgrid;
+
+ grid-template-columns: $rollbutton-width 1fr max-content;
+ grid-auto-flow: row;
+}
+
+@mixin nowrap-w100 {
+ width:100%;
+ display: inline-flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ align-content: center;
+ align-items: center;
+ justify-content: flex-start;
+ align-self: stretch;
+}
+
+.sheet-fs-nowrap-w100 {
+ @include nowrap-w100;
+}
+
+.sheet-fs-text-align-end {
+ width: 100%;
+ text-align: end;
+}
+
+.sheet-fs-characteristic .sheet-fs-characteristic-label,
+.sheet-fs-characteristic .sheet-fs-characteristic-label span,
+.sheet-fs-skill .sheet-fs-skill-label,
+.sheet-fs-skill .sheet-fs-skill-label span,
+.sheet-fs-skill .sheet-fs-skill-label input {
+ white-space: nowrap;
+ width: 100%;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+}
+.sheet-fs-skill + .sheet-fs-col {
+ width: 100%;
+}
+
+.sheet-fs-skill > div.sheet-fs-skill-normal {
+ @include localgrid;
+
+ grid-template-columns: $rollbutton-width max-content 1fr;
+
+ position: relative;
+ overflow: visible;
+}
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice {
+ display: none;
+}
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice,
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover {
+ position: absolute;
+ z-index: 5;
+ top: 0px;
+ left: calc(#{$rollbutton-width} - 1px);
+
+ background-color: #ffffff;
+ border-radius: 5px;
+ border: 1px solid $bordercolor;
+ padding: 2px;
+ width: max-content;
+ background: url(https://i.ibb.co/t3xLwhN/fs-sheet-background.jpg) 25% 25%;
+ background-attachment: scroll;
+ background-size: 850px;
+ display: grid;
+ grid-auto-flow: row;
+ grid-template-rows: max-content;
+}
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice > input,
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover > input {
+ height: $default-line-height;
+}
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice > div,
+.sheet-fs-skill > div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover > div {
+ display: grid;
+ grid-auto-flow: column;
+ grid-template-rows: repeat(9, max-content);
+ align-items: center;
+}
+div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice > div:nth-child(2),
+div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover > div:nth-child(2),
+div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice > div:nth-child(5),
+div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover > div:nth-child(5),
+div.sheet-fs-skill-normal > button.sheet-fs-d20:hover + div.sheet-fs-skill-roll-characteristic-choice > div:nth-child(8),
+div.sheet-fs-skill-normal > button.sheet-fs-d20 + div.sheet-fs-skill-roll-characteristic-choice:hover > div:nth-child(8) {
+ padding-top: 2px;
+ border-top: 1px solid black;
+ margin-top: 2px;
+}
+
+.sheet-fs-occult {
+ @include main-3-columns;
+ width: 100%;
+ display: grid;
+ grid-column-gap: $section-column-gap;
+
+ grid-template-columns: 1fr 1fr 1fr; // TODO review these proportions later
+
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+}
+
+.sheet-fs-occult > div {
+ @include localgrid;
+ grid-auto-flow: column;
+ grid-auto-columns: 1fr max-content max-content 1fr;
+}
+
+.sheet-fs-occult-left {
+ //width: calc(50% - $traitval-width);
+ text-align: end;
+}
+
+.sheet-fs-occult-right {
+ //width: calc(50% - $traitval-width);
+ text-align: start;
+}
+
+.sheet-fs-defenses {
+ width: 100%;
+ display: grid;
+ grid-column-gap: $section-column-gap;
+
+ grid-template-columns: 1fr 1fr 1fr; // TODO review these proportions later
+
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+}
+
+.sheet-fs-resistances-grid {
+ @include localgrid;
+
+ grid-template-columns: max-content max-content 1fr;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-resistances-grid > label {
+ @include indented;
+}
+
+.sheet-fs-armor-and-e-shield-grid {
+ @include localgrid;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-armor-and-e-shield-grid-row label.sheet-fs-uppercase-header {
+ display: inline-block;
+}
+
+.sheet-fs-armor-and-e-shield-grid-row {
+ @include localgrid;
+ grid-auto-flow: column;
+}
+
+.sheet-fs-armor-vs {
+ justify-content: end;
+}
+
+.sheet-fs-armor-vs input[type=number]::placeholder {
+ font-size: 0.7em;
+}
+
+.sheet-fs-e-shield-props {
+ justify-content: space-between;
+}
+
+.sheet-fs-e-shield-props > label:nth-child(1),
+.sheet-fs-e-shield-props > label:nth-child(5) {
+ @include indented;
+}
+
+.sheet-fs-vita-and-revivals-grid {
+ @include localgrid;
+
+ grid-template:
+ "vitality-header vitality-header vitality-header vitality-header"
+ "vitality-rating-label vitality-rating-value vitality-current-label vitality-current-value"
+ "revivals-header revivals-header revivals-header revivals-header"
+ "revivals-rating-label revivals-rating-value revivals-number-label revivals-number-value" / 1fr max-content 1fr max-content;
+}
+
+.sheet-fs-vitality-header {
+ grid-area: vitality-header;
+}
+
+label.sheet-fs-vitality-rating {
+ grid-area: vitality-rating-label;
+ @include indented;
+}
+
+input.sheet-fs-vitality-rating {
+ grid-area: vitality-rating-value;
+}
+
+label.sheet-fs-vitality-current {
+ grid-area: vitality-current-label;
+ @include indented;
+}
+
+input.sheet-fs-vitality-current {
+ grid-area: vitality-current-value;
+}
+
+.sheet-fs-revivals-header {
+ grid-area: revivals-header;
+}
+
+label.sheet-fs-revivals-rating {
+ grid-area: revivals-rating-label;
+ @include indented;
+}
+
+input.sheet-fs-revivals-rating {
+ grid-area: revivals-rating-value;
+}
+
+label.sheet-fs-revivals-number {
+ grid-area: revivals-number-label;
+ @include indented;
+}
+
+input.sheet-fs-revivals-number {
+ grid-area: revivals-number-value;
+}
+
+.sheet-fs-actions-vp-bank-and-surge {
+ width: 100%;
+ display: grid;
+ grid-template-columns: 1fr max-content; // TODO review these proportions later
+ grid-column-gap: $section-column-gap;
+
+ align-items: stretch;
+ align-content: stretch;
+ justify-items: stretch;
+ justify-content: space-between;
+}
+
+.sheet-fs-table {
+ display: grid;
+ grid-auto-flow: row;
+ min-width:100%;
+ margin-bottom: $localgrid-gap;
+}
+
+.sheet-fs-table fieldset,
+.sheet-fs-table .repcontainer,
+.sheet-fs-table .repitem {
+ display: contents;
+}
+
+.sheet-fs-table input[type=number] {
+ width: 100%;
+}
+
+.sheet-fs-table input {
+ min-width: 10px;
+ width: auto;
+}
+
+.sheet-fs-table-head {
+ /*background-color: #4a6486;
+ color: white;*/
+ font-weight: bold;
+ white-space: nowrap;
+ padding-left: 1px;
+ padding-right: 1px;
+}
+.sheet-fs-table-cell {
+ grid-column: auto / span 1;
+}
+
+.sheet-fs-table .itemcontrol {
+ height: auto !important; /* TODO try without this to see if something bad happens */
+}
+
+.sheet-fs-table .repcontrol { grid-column: 1 / -1 }
+
+.sheet-fs-actions .sheet-fs-table {
+ @include localgrid;
+ grid-template-columns: $rollbutton-width 1fr 98px 143px $goal-bonus-manul-col-width;
+}
+
+.sheet-fs-actions .sheet-fs-table > input {
+ width: 100%;
+ max-width: 100%;
+}
+
+.sheet-fs-vp-and-surge-grids {
+ @include localgrid;
+ grid-template-columns: 1fr max-content;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-vp-and-surge-grids > label {
+ @include indented;
+}
+
+.sheet-fs-perks-capabilities-and-birthrights {
+ @include main-2-columns;
+}
+
+.sheet-fs-possessions {
+ @include localgrid;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-possessions-header {
+ @include localgrid;
+ grid-template-columns: 1fr max-content max-content;
+ grid-auto-flow: column;
+}
+
+.sheet-fs-possessions-header > input:nth-child(3) {
+ margin-right: $equipment-size-column + $localgrid-gap;
+}
+
+.sheet-fs-carried-equipment {
+ @include main-2-columns;
+}
+
+.sheet-fs-carried-equipment .sheet-fs-table {
+ @include localgrid;
+ grid-template-columns: 1fr $traitval-width $equipment-size-column;
+}
+
+.sheet-fs-carried-equipment .sheet-fs-table label:nth-child(2),
+.sheet-fs-carried-equipment .sheet-fs-table input:nth-child(2),
+.sheet-fs-carried-equipment .sheet-fs-table label:nth-child(3),
+.sheet-fs-carried-equipment .sheet-fs-table input:nth-child(3) {
+ text-align: center;
+}
+
+.sheet-fs-carried-weapons .sheet-fs-table {
+ @include localgrid;
+ grid-template-columns: 1fr $traitval-width $goal-bonus-manul-col-width 50px $traitval-width 60px $traitval-width $ammo-col-width 1fr;
+}
+
+.sheet-fs-carried-weapons .sheet-fs-table > input[type=number]:nth-child(8) {
+ width: $ammo-col-width;
+ max-width: $ammo-col-width;
+}
+
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(2),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(2),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(3),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(3),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(4),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(4),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(5),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(5),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(6),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(6),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(7),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(7),
+.sheet-fs-carried-weapons .sheet-fs-table label:nth-child(8),
+.sheet-fs-carried-weapons .sheet-fs-table input:nth-child(8) {
+ text-align: center;
+}
+
+.sheet-fs-owned {
+ @include main-2-columns;
+}
+
+.sheet-fs-owned .sheet-fs-table {
+ @include localgrid;
+ grid-template-columns: 1fr 0.5fr;
+}
+
+.sheet-fs-money {
+ @include localgrid;
+ grid-auto-flow: row;
+}
+
+.sheet-fs-money-header {
+ @include localgrid;
+ grid-template-columns: 1fr max-content 150px;
+ grid-auto-flow: column;
+}
+
+.sheet-fs-money-header > div {
+ display: flex;
+ flex-direction: row;
+ white-space: nowrap;
+}
+
+.sheet-fs-assets {
+ @include main-2-columns;
+}
+
+.sheet-fs-assets .sheet-fs-table {
+ @include localgrid;
+ grid-template-columns: 1fr 0.5fr;
+}
+
+.sheet-fs-notes {
+ grid-column: 1 / -1;
+ margin-left: 15px;
+ width:calc(100% - 15px);
+ max-height: 0px;
+ position: relative;
+}
+
+.sheet-fs-notes:focus,
+.sheet-fs-notes:focus-within,
+.sheet-fs-notes:active,
+.sheet-fs-table input:active ~ .sheet-fs-notes,
+.sheet-fs-table input:focus ~ .sheet-fs-notes,
+.sheet-fs-table input:focus-within ~ .sheet-fs-notes,
+.sheet-fs-table select:active ~ .sheet-fs-notes,
+.sheet-fs-table select:focus ~ .sheet-fs-notes,
+.sheet-fs-table select:focus-within ~ .sheet-fs-notes {
+ min-height: 4em;
+ max-height: initial;
+ resize: vertical;
+ overflow:auto;
+ align-self: stretch;
+}
+
+.sheet-fs-auto-expand-textarea {
+ cursor: text;
+ word-wrap: break-word;
+}
+
+.sheet-fs-notes > .sheet-fs-auto-expand-textarea {
+ visibility: collapse;
+}
+
+// hack for Firefox due to focus events on invisible elements not been registered it seems.
+// We need to keep it visible for >0ms for the click to be registered.
+.sheet-fs-notes > .sheet-fs-auto-expand-textarea {
+ -moz-transition: visibility 0s linear 1ms;
+}
+
+.sheet-fs-notes:focus > .sheet-fs-auto-expand-textarea,
+.sheet-fs-notes:focus-within > .sheet-fs-auto-expand-textarea,
+.sheet-fs-notes:active > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table input:active ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table input:focus ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table input:focus-within ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table select:active ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table select:focus ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea,
+.sheet-fs-table select:focus-within ~ .sheet-fs-notes > .sheet-fs-auto-expand-textarea {
+ visibility: visible;
+}
+
+.sheet-fs-auto-expand-textarea span {
+ visibility: hidden;
+ white-space: pre-wrap;
+ display: block;
+}
+
+.sheet-fs-auto-expand-textarea textarea {
+ position: absolute;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ margin: 0;
+ overflow: hidden;
+ height: 100%;
+ width: 100%;
+}
+
+.sheet-fs-relative {
+ position: relative;
+}
+
+.sheet-fs-supertall-textarea {
+ min-height: 300px;
+ max-height: initial;
+ resize: vertical;
+ overflow:auto;
+ align-self: stretch;
+}
+
+.sheet-fs-header,
+.sheet-fs-footer {
+ height: 10px;
+}
diff --git a/Fading Suns 4th Edition - Pax Alexius/src/prepros.config b/Fading Suns 4th Edition - Pax Alexius/src/prepros.config
new file mode 100644
index 0000000000..492b2c44d3
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/src/prepros.config
@@ -0,0 +1,888 @@
+{
+ "version": "7",
+ "about": "This is a Prepros (https://prepros.io) configuration file. You can commit this file to a git repo to backup and sync project configurations.",
+ "config": {
+ "proxy": {
+ "enable": false,
+ "target": "",
+ "useLocalAssets": false
+ },
+ "reload": {
+ "enable": true,
+ "delay": 0,
+ "animate": true,
+ "afterUpload": false
+ },
+ "sync": {
+ "enable": false,
+ "mouse": true,
+ "keyboard": true,
+ "form": true,
+ "scroll": true
+ },
+ "watcher": {
+ "enable": true,
+ "maxFiles": 2000,
+ "usePolling": false,
+ "pollingInterval": 500,
+ "extensions": [
+ ".html",
+ ".htm",
+ ".php"
+ ],
+ "ignore": {
+ "patterns": [
+ ".*",
+ "wp-admin",
+ "wp-includes",
+ "node_modules",
+ "Prepros Export",
+ "bower_components"
+ ],
+ "exceptions": []
+ }
+ },
+ "exporter": {
+ "ignore": {
+ "patterns": [
+ ".*",
+ "desktop.ini",
+ "prepros.cfg",
+ "node_modules",
+ "Prepros Export",
+ "prepros.config",
+ "prepros-6.config",
+ "*-original.jpg",
+ "*-original.jpeg",
+ "*-original.png",
+ "*-original.svg",
+ "*.scss",
+ "*.sass",
+ "*.less",
+ "*.pug",
+ "*.jade",
+ "*.styl",
+ "*.haml",
+ "*.slim",
+ "*.coffee",
+ "*.kit",
+ "*.turf",
+ "*.ts"
+ ],
+ "exceptions": []
+ }
+ },
+ "uploader": {
+ "remotePath": "",
+ "timeout": 20000,
+ "autoUpload": false,
+ "connectionType": "ftp",
+ "history": []
+ },
+ "packages": {
+ "createPackageLock": true
+ },
+ "tasks": {
+ "autoprefixer": {
+ "cascade": true,
+ "add": true,
+ "remove": true,
+ "supports": true,
+ "flexbox": true,
+ "grid": "autoplace",
+ "browsers": [
+ "> 2%",
+ "not dead"
+ ],
+ "sourceMap": false
+ },
+ "babel": {
+ "sourceMap": false,
+ "presets": {
+ "@babel/preset-env": {
+ "enable": true,
+ "options": {
+ "targets": [
+ "> 2%",
+ "not dead"
+ ],
+ "preserveImports": false
+ }
+ },
+ "@babel/preset-react": true,
+ "@babel/preset-flow": false
+ },
+ "plugins": {
+ "@babel/plugin-proposal-class-properties": false,
+ "@babel/plugin-proposal-decorators": {
+ "enable": false,
+ "options": {
+ "decoratorsBeforeExport": true
+ }
+ },
+ "@babel/plugin-proposal-export-namespace-from": false,
+ "@babel/plugin-proposal-function-sent": false,
+ "@babel/plugin-proposal-nullish-coalescing-operator": false,
+ "@babel/plugin-proposal-numeric-separator": false,
+ "@babel/plugin-proposal-optional-chaining": false,
+ "@babel/plugin-proposal-private-methods": false,
+ "@babel/plugin-proposal-throw-expressions": false
+ },
+ "customPresets": [],
+ "customPlugins": []
+ },
+ "bundle-js": {
+ "sourceMap": false,
+ "exclude": [
+ "node_modules",
+ "bower_components"
+ ],
+ "devMode": true,
+ "globals": [],
+ "externals": [],
+ "babel": {
+ "enable": true,
+ "options": {
+ "sourceMap": false,
+ "presets": {
+ "@babel/preset-env": {
+ "enable": true,
+ "options": {
+ "targets": [
+ "> 2%",
+ "not dead"
+ ],
+ "preserveImports": false
+ }
+ },
+ "@babel/preset-react": true,
+ "@babel/preset-flow": false
+ },
+ "plugins": {
+ "@babel/plugin-proposal-class-properties": false,
+ "@babel/plugin-proposal-decorators": {
+ "enable": false,
+ "options": {
+ "decoratorsBeforeExport": true
+ }
+ },
+ "@babel/plugin-proposal-export-namespace-from": false,
+ "@babel/plugin-proposal-function-sent": false,
+ "@babel/plugin-proposal-nullish-coalescing-operator": false,
+ "@babel/plugin-proposal-numeric-separator": false,
+ "@babel/plugin-proposal-optional-chaining": false,
+ "@babel/plugin-proposal-private-methods": false,
+ "@babel/plugin-proposal-throw-expressions": false
+ },
+ "customPresets": [],
+ "customPlugins": []
+ }
+ },
+ "css": {
+ "enable": true
+ },
+ "fonts": {
+ "enable": true
+ }
+ },
+ "coffeescript": {
+ "header": false,
+ "bare": false,
+ "sourceMap": false
+ },
+ "command": {
+ "command": "",
+ "rootDir": ""
+ },
+ "concat-js": {
+ "sourceMap": false,
+ "rootDir": ""
+ },
+ "copy": {
+ "sourceMap": false
+ },
+ "dart-sass": {
+ "indentType": "space",
+ "indentWidth": 2,
+ "linefeed": "lf",
+ "sourceMap": false
+ },
+ "haml": {
+ "doubleQuoteAttributes": true
+ },
+ "jpg": {
+ "quality": 90
+ },
+ "less": {
+ "javascriptEnabled": false,
+ "strictImports": false,
+ "insecure": false,
+ "math": "always",
+ "strictUnits": false,
+ "dumpLineNumbers": false,
+ "sourceMap": false
+ },
+ "markdown": {
+ "githubFlavored": true,
+ "wrapWithHtml": false
+ },
+ "minify-css": {
+ "sourceMap": false
+ },
+ "minify-html": {
+ "caseSensitive": false,
+ "collapseBooleanAttributes": true,
+ "collapseInlineTagWhitespace": false,
+ "collapseWhitespace": true,
+ "conservativeCollapse": false,
+ "decodeEntities": false,
+ "html5": true,
+ "includeAutoGeneratedTags": true,
+ "keepClosingSlash": false,
+ "minifyCSS": true,
+ "minifyJS": true,
+ "preserveLineBreaks": false,
+ "preventAttributesEscaping": false,
+ "processConditionalComments": false,
+ "removeAttributeQuotes": false,
+ "removeComments": true,
+ "removeEmptyAttributes": false,
+ "removeEmptyElement": false,
+ "removeOptionalTags": false,
+ "removeRedundantAttributes": false,
+ "removeScriptTypeAttributes": false,
+ "removeStyleLinkTypeAttributes": false,
+ "removeTagWhitespace": false,
+ "sortAttributes": false,
+ "sortClassName": false,
+ "useShortDoctype": true
+ },
+ "minify-js": {
+ "parse": {
+ "bare_returns": false
+ },
+ "compress": {
+ "arrows": true,
+ "arguments": false,
+ "booleans": true,
+ "booleans_as_integers": false,
+ "collapse_vars": true,
+ "comparisons": true,
+ "computed_props": true,
+ "conditionals": true,
+ "dead_code": true,
+ "directives": true,
+ "drop_console": false,
+ "drop_debugger": true,
+ "evaluate": true,
+ "expression": false,
+ "global_defs": [],
+ "hoist_funs": false,
+ "hoist_props": true,
+ "hoist_vars": false,
+ "if_return": true,
+ "inline": 3,
+ "join_vars": true,
+ "keep_fargs": true,
+ "keep_infinity": false,
+ "loops": true,
+ "negate_iife": true,
+ "properties": true,
+ "pure_funcs": [],
+ "pure_getters": false,
+ "reduce_vars": true,
+ "sequences": true,
+ "side_effects": true,
+ "switches": true,
+ "top_retain": [],
+ "typeofs": true,
+ "unsafe": false,
+ "unsafe_arrows": false,
+ "unsafe_comps": false,
+ "unsafe_Function": false,
+ "unsafe_math": false,
+ "unsafe_proto": false,
+ "unsafe_regexp": false,
+ "unsafe_undefined": false,
+ "unused": true
+ },
+ "mangle": {
+ "eval": false,
+ "reserved": []
+ },
+ "output": {
+ "ascii_only": false,
+ "braces": false,
+ "comments": "none",
+ "inline_script": true,
+ "keep_numbers": false,
+ "keep_quoted_props": false,
+ "preamble": null,
+ "quote_keys": false,
+ "quote_style": 0,
+ "semicolons": true,
+ "shebang": true,
+ "webkit": false,
+ "wrap_iife": false,
+ "wrap_func_args": true
+ },
+ "sourceMap": false,
+ "toplevel": false,
+ "ie8": false,
+ "keep_classnames": false,
+ "keep_fnames": false,
+ "safari10": false
+ },
+ "node-sass": {
+ "indentType": "space",
+ "indentWidth": 2,
+ "linefeed": "lf",
+ "outputStyle": "expanded",
+ "precision": 10,
+ "sourceMap": false,
+ "sourceComments": false
+ },
+ "png": {
+ "quality": 90
+ },
+ "pug": {
+ "pretty": true
+ },
+ "slim": {
+ "indent": "space",
+ "indentSize": 2,
+ "pretty": true
+ },
+ "stylus": {
+ "useNib": true,
+ "sourceMap": false,
+ "linenos": false
+ },
+ "svg": {
+ "cleanupAttrs": true,
+ "removeDoctype": true,
+ "removeXMLProcInst": true,
+ "removeComments": true,
+ "removeMetadata": true,
+ "removeTitle": true,
+ "removeDesc": true,
+ "removeUselessDefs": true,
+ "removeEditorsNSData": true,
+ "removeEmptyAttrs": true,
+ "removeHiddenElems": true,
+ "removeEmptyText": true,
+ "removeEmptyContainers": true,
+ "removeViewBox": false,
+ "cleanupEnableBackground": true,
+ "convertStyleToAttrs": true,
+ "convertColors": true,
+ "convertPathData": true,
+ "convertTransform": true,
+ "removeUnknownsAndDefaults": true,
+ "removeNonInheritableGroupAttrs": true,
+ "removeUselessStrokeAndFill": true,
+ "removeUnusedNS": true,
+ "cleanupIDs": true,
+ "cleanupNumericValues": true,
+ "moveElemsAttrsToGroup": true,
+ "moveGroupAttrsToElems": true,
+ "collapseGroups": true,
+ "removeRasterImages": false,
+ "mergePaths": true,
+ "convertShapeToPath": true,
+ "sortAttrs": true,
+ "removeDimensions": true
+ },
+ "turf": {
+ "rootDir": ""
+ },
+ "typescript": {
+ "allowJs": false,
+ "allowSyntheticDefaultImports": true,
+ "allowUmdGlobalAccess": false,
+ "allowUnreachableCode": false,
+ "allowUnusedLabels": false,
+ "alwaysStrict": false,
+ "charset": "utf8",
+ "checkJs": false,
+ "declaration": false,
+ "disableSizeLimit": false,
+ "downlevelIteration": false,
+ "emitBOM": false,
+ "emitDecoratorMetadata": false,
+ "experimentalDecorators": false,
+ "forceConsistentCasingInFileNames": false,
+ "importHelpers": false,
+ "jsx": "React",
+ "keyofStringsOnly": false,
+ "lib": [],
+ "maxNodeModuleJsDepth": 0,
+ "module": "ES2015",
+ "moduleResolution": "NodeJs",
+ "newLine": "LineFeed",
+ "noFallthroughCasesInSwitch": false,
+ "noImplicitAny": false,
+ "noImplicitReturns": false,
+ "noImplicitThis": false,
+ "noStrictGenericChecks": false,
+ "noUnusedLocals": false,
+ "noUnusedParameters": false,
+ "noImplicitUseStrict": false,
+ "noLib": false,
+ "noResolve": false,
+ "preserveConstEnums": false,
+ "jsxFactory": "React.createElement",
+ "removeComments": false,
+ "skipLibCheck": false,
+ "sourceMap": false,
+ "strict": false,
+ "strictFunctionTypes": false,
+ "strictBindCallApply": false,
+ "strictNullChecks": false,
+ "strictPropertyInitialization": false,
+ "suppressExcessPropertyErrors": false,
+ "suppressImplicitAnyIndexErrors": false,
+ "target": "ES3",
+ "resolveJsonModule": false,
+ "esModuleInterop": false,
+ "useDefineForClassFields": false
+ }
+ },
+ "fileTypes": {
+ "sass": {
+ "extensions": [
+ ".scss",
+ ".sass"
+ ],
+ "autoCompile": true,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "dart-sass",
+ "enable": true
+ },
+ {
+ "task": "autoprefixer",
+ "enable": true
+ },
+ {
+ "task": "minify-css",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".css",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "scss",
+ "replaceWith": "css"
+ },
+ {
+ "segment": "sass",
+ "replaceWith": "css"
+ }
+ ]
+ }
+ },
+ "less": {
+ "extensions": [
+ ".less"
+ ],
+ "autoCompile": true,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "less",
+ "enable": true
+ },
+ {
+ "task": "autoprefixer",
+ "enable": true
+ },
+ {
+ "task": "minify-css",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".css",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "less",
+ "replaceWith": "css"
+ }
+ ]
+ }
+ },
+ "pug": {
+ "extensions": [
+ ".pug",
+ ".jade"
+ ],
+ "autoCompile": true,
+ "tasks": [
+ {
+ "task": "pug",
+ "enable": true
+ },
+ {
+ "task": "minify-html",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".html",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "pug",
+ "replaceWith": "html"
+ }
+ ]
+ }
+ },
+ "css": {
+ "extensions": [
+ ".css"
+ ],
+ "autoCompile": false,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "copy",
+ "enable": true
+ },
+ {
+ "task": "autoprefixer",
+ "enable": true
+ },
+ {
+ "task": "minify-css",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".css",
+ "type": "SOURCE_RELATIVE",
+ "relativePath": "",
+ "suffix": "-dist",
+ "alwaysSuffix": false
+ }
+ },
+ "javascript": {
+ "extensions": [
+ ".js",
+ ".jsx"
+ ],
+ "autoCompile": false,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "copy",
+ "enable": true
+ },
+ {
+ "task": "concat-js",
+ "enable": false
+ },
+ {
+ "task": "babel",
+ "enable": false
+ },
+ {
+ "task": "bundle-js",
+ "enable": false
+ },
+ {
+ "task": "minify-js",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".js",
+ "type": "SOURCE_RELATIVE",
+ "relativePath": "",
+ "suffix": "-dist",
+ "alwaysSuffix": false
+ }
+ },
+ "stylus": {
+ "extensions": [
+ ".styl"
+ ],
+ "autoCompile": true,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "stylus",
+ "enable": true
+ },
+ {
+ "task": "autoprefixer",
+ "enable": true
+ },
+ {
+ "task": "minify-css",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".css",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "stylus",
+ "replaceWith": "css"
+ },
+ {
+ "segment": "styl",
+ "replaceWith": "css"
+ }
+ ]
+ }
+ },
+ "markdown": {
+ "extensions": [
+ ".md",
+ ".markdown",
+ ".mkd"
+ ],
+ "autoCompile": false,
+ "tasks": [
+ {
+ "task": "markdown",
+ "enable": true
+ },
+ {
+ "task": "minify-html",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".html",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "markdown",
+ "replaceWith": "html"
+ }
+ ]
+ }
+ },
+ "haml": {
+ "extensions": [
+ ".haml"
+ ],
+ "autoCompile": true,
+ "tasks": [
+ {
+ "task": "haml",
+ "enable": true
+ },
+ {
+ "task": "minify-html",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".html",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "haml",
+ "replaceWith": "html"
+ }
+ ]
+ }
+ },
+ "slim": {
+ "extensions": [
+ ".slim"
+ ],
+ "autoCompile": true,
+ "tasks": [
+ {
+ "task": "slim",
+ "enable": true
+ },
+ {
+ "task": "minify-html",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".html",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "slim",
+ "replaceWith": "html"
+ }
+ ]
+ }
+ },
+ "coffeescript": {
+ "extensions": [
+ ".coffee"
+ ],
+ "autoCompile": true,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "coffeescript",
+ "enable": true
+ },
+ {
+ "task": "babel",
+ "enable": false
+ },
+ {
+ "task": "bundle-js",
+ "enable": false
+ },
+ {
+ "task": "minify-js",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".js",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "coffee-script",
+ "replaceWith": "js"
+ },
+ {
+ "segment": "coffeescript",
+ "replaceWith": "js"
+ },
+ {
+ "segment": "coffee",
+ "replaceWith": "js"
+ }
+ ]
+ }
+ },
+ "turf": {
+ "extensions": [
+ ".turf",
+ ".kit"
+ ],
+ "autoCompile": true,
+ "tasks": [
+ {
+ "task": "turf",
+ "enable": true
+ },
+ {
+ "task": "minify-html",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".html",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "turf",
+ "replaceWith": "html"
+ }
+ ]
+ }
+ },
+ "typescript": {
+ "extensions": [
+ ".ts",
+ ".tsx"
+ ],
+ "autoCompile": true,
+ "sourceMap": false,
+ "tasks": [
+ {
+ "task": "typescript",
+ "enable": true
+ },
+ {
+ "task": "babel",
+ "enable": false
+ },
+ {
+ "task": "bundle-js",
+ "enable": false
+ },
+ {
+ "task": "minify-js",
+ "enable": false
+ }
+ ],
+ "output": {
+ "extension": ".js",
+ "type": "REPLACE_SEGMENTS",
+ "segments": [
+ {
+ "segment": "typescript",
+ "replaceWith": "js"
+ },
+ {
+ "segment": "ts",
+ "replaceWith": "js"
+ }
+ ]
+ }
+ },
+ "jpg": {
+ "extensions": [
+ ".jpg",
+ ".jpeg"
+ ],
+ "tasks": [
+ {
+ "task": "jpg",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".jpg",
+ "type": "SOURCE_RELATIVE",
+ "relativePath": ""
+ }
+ },
+ "png": {
+ "extensions": [
+ ".png"
+ ],
+ "tasks": [
+ {
+ "task": "png",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".png",
+ "type": "SOURCE_RELATIVE",
+ "relativePath": ""
+ }
+ },
+ "svg": {
+ "extensions": [
+ ".svg"
+ ],
+ "tasks": [
+ {
+ "task": "svg",
+ "enable": true
+ }
+ ],
+ "output": {
+ "extension": ".svg",
+ "type": "SOURCE_RELATIVE",
+ "relativePath": ""
+ }
+ }
+ },
+ "files": []
+ }
+}
diff --git a/Fading Suns 4th Edition - Pax Alexius/src/roll-templates.html b/Fading Suns 4th Edition - Pax Alexius/src/roll-templates.html
new file mode 100644
index 0000000000..6fa428a82f
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/src/roll-templates.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+ {{#skillName-i18n}}
+ {{#rollGreater() bonus_penalty 0}}
+
+ {{/rollGreater() bonus_penalty 0}}
+ {{#rollTotal() bonus_penalty 0}}
+
+ {{/rollTotal() bonus_penalty 0}}
+ {{#^rollGreater() bonus_penalty -1}}
+
+ {{/^rollGreater() bonus_penalty -1}}
+ {{/skillName-i18n}}
+ {{^skillName-i18n}}
+ {{#rollGreater() bonus_penalty 0}}
+
+ {{/rollGreater() bonus_penalty 0}}
+ {{#rollTotal() bonus_penalty 0}}
+
+ {{/rollTotal() bonus_penalty 0}}
+ {{#^rollGreater() bonus_penalty -1}}
+
+ {{/^rollGreater() bonus_penalty -1}}
+ {{/skillName-i18n}}
+
+ {{#title}}{{/title}}
+
+
+
+ {{#^rollGreater() roll goal}}
+ {{#^rollGreater() roll 19}}
+ {{#rollWasCrit() roll}}
+
{{roll}} VP. Critical success!
+ {{/rollWasCrit() roll}}
+ {{#^rollWasCrit() roll}}
+
{{roll}} VP. Success!
+ {{/^rollWasCrit() roll}}
+ {{/^rollGreater() roll 19}}
+ {{/^rollGreater() roll goal}}
+
+ {{#rollGreater() roll goal}}
+ {{#rollTotal() roll 1}}
+
{{roll}} VP. Success!
+ {{/rollTotal() roll 1}}
+ {{#^rollTotal() roll 1}}
+ {{#^rollGreater() roll 19}}
+
{{roll}}. Failure!
+ {{/^rollGreater() roll 19}}
+ {{/^rollTotal() roll 1}}
+ {{/rollGreater() roll goal}}
+
+ {{#rollTotal() roll 20}}
+
{{roll}}. Critical failure!
+ {{/rollTotal() roll 20}}
+
+
+
+
diff --git a/Fading Suns 4th Edition - Pax Alexius/src/sheet-workers.html b/Fading Suns 4th Edition - Pax Alexius/src/sheet-workers.html
new file mode 100644
index 0000000000..c6cf6448eb
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/src/sheet-workers.html
@@ -0,0 +1,106 @@
+
diff --git a/Fading Suns 4th Edition - Pax Alexius/translation.json b/Fading Suns 4th Edition - Pax Alexius/translation.json
new file mode 100644
index 0000000000..521ec13fcb
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/translation.json
@@ -0,0 +1,132 @@
+{
+ "name": "Name",
+ "planet": "Planet",
+ "rank": "Rank",
+ "birthdate": "Birthdate",
+ "species": "Species",
+ "size": "Size",
+ "speed": "Speed",
+ "class": "Class",
+ "level": "Level",
+ "faction": "Faction",
+ "blessing": "Blessing",
+ "curse": "Curse",
+ "calling": "Calling",
+ "traits": "Traits",
+ "skills": "Skills",
+ "academia": "Academia",
+ "alchemy": "Alchemy",
+ "animalia": "Animalia",
+ "arts": "Arts",
+ "charm": "Charm",
+ "crafts": "Crafts",
+ "disguise": "Disguise",
+ "drive": "Drive",
+ "empathy": "Empathy",
+ "fight": "Fight",
+ "focus": "Focus",
+ "impress": "Impress",
+ "interface": "Interface",
+ "intrusion": "Intrusion",
+ "knavery": "Knavery",
+ "melee": "Melee",
+ "observe": "Observe",
+ "perform": "Perform",
+ "pilot": "Pilot",
+ "remedy": "Remedy",
+ "shoot": "Shoot",
+ "sleight_of_hand": "Sleight of Hand",
+ "sneak": "Sneak",
+ "survival": "Survival",
+ "tech_redemption": "Tech Redemption",
+ "vigor": "Vigor",
+ "body": "Body",
+ "strength": "Strength",
+ "dexterity": "Dexterity",
+ "endurance": "Endurance",
+ "mind": "Mind",
+ "wits": "Wits",
+ "perception": "Perception",
+ "will": "Will",
+ "spirit": "Spirit",
+ "presence": "Presence",
+ "intuition": "Intuition",
+ "faith": "Faith",
+ "occult": "Occult",
+ "psi": "Psi",
+ "urge": "Urge",
+ "theurgy": "Theurgy",
+ "hubris": "Hubris",
+ "resistances": "Resistances",
+ "resistance_modifier": "Mod.",
+ "armor": "Armor",
+ "blaster_s": "Blstr.",
+ "flame_s": "Flm.",
+ "hard_s": "Hrd.",
+ "laser_s": "Lsr.",
+ "shock_s": "Shk.",
+ "slam_s": "Slm.",
+ "sonic_s": "Son.",
+ "e_shield": "E-Shield",
+ "e_shield_thresholds": "Thresholds",
+ "e_shield_hits": "Hits",
+ "vitality": "Vitality",
+ "rating": "Rating",
+ "current": "Current",
+ "revivals": "Revivals",
+ "number": "Number",
+ "actions": "Actions",
+ "action": "Maneuver/Attack",
+ "characteristic": "Characteristic",
+ "skill": "Skill",
+ "goal_bonus_penalty": "Goal +/-",
+ "goal": "Goal",
+ "impact_notes": "Impact / Notes",
+ "vp_bank": "VP Bank",
+ "vp_bank_capacity": "Capacity",
+ "current_vp": "Current VP",
+ "current_wp": "Current WP",
+ "surge": "Surge",
+ "surge_rating": "Rating",
+ "surge_number": "Number",
+ "perks": "Perks",
+ "perk_name": "Perk",
+ "perk_notes": "Description / Notes",
+ "capabilities": "Capabilities",
+ "capability_name": "Capability",
+ "capability_notes": "Description / Notes",
+ "birthrights": "Birthrights",
+ "birthright_name": "Birthright",
+ "birthright_notes": "Description",
+ "possessions": "Possessions",
+ "techgnosis": "Techgnosis",
+ "carried_equipment": "Carried Equipment",
+ "tech_level_s": "TL",
+ "equipment_size": "Size",
+ "carried_weapons": "Carried Weapons",
+ "damage_s": "Dmg.",
+ "strength_s": "Str.",
+ "range_s": "Rng.",
+ "rate_of_fire_s": "RoF",
+ "ammunition_s": "Ammo",
+ "weapon_features": "Features",
+ "owned": "Owned",
+ "location": "Location",
+ "money": "Money",
+ "cash": "Cash",
+ "asset": "Asset",
+ "income": "Income",
+ "last_notes": "Last Notes",
+ "additional_vp": "additional VP",
+ "victory_points": "VP",
+ "the_end": "Fin.",
+ "failure": "Failure!",
+ "critical_failure_q": "Critical failure?",
+ "critical_failure": "Critical failure!",
+ "noncritical_failure": "Non-critical failure",
+ "critical_success": "Critical success!",
+ "success": "Success!",
+ "roll_again": "Reroll",
+ "confirm": "Confirm",
+ "notes": "Notes"
+}
diff --git a/Fading Suns 4th Edition - Pax Alexius/translations/en.json b/Fading Suns 4th Edition - Pax Alexius/translations/en.json
new file mode 100644
index 0000000000..079e03dd69
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/translations/en.json
@@ -0,0 +1,126 @@
+{
+ "name": "Name",
+ "planet": "Planet",
+ "rank": "Rank",
+ "birthdate": "Birthdate",
+ "species": "Species",
+ "size": "Size",
+ "speed": "Speed",
+ "class": "Class",
+ "level": "Level",
+ "faction": "Faction",
+ "blessing": "Blessing",
+ "curse": "Curse",
+ "calling": "Calling",
+ "traits": "Traits",
+ "skills": "Skills",
+ "academia": "Academia",
+ "alchemy": "Alchemy",
+ "animalia": "Animalia",
+ "arts": "Arts",
+ "charm": "Charm",
+ "crafts": "Crafts",
+ "disguise": "Disguise",
+ "drive": "Drive",
+ "empathy": "Empathy",
+ "fight": "Fight",
+ "focus": "Focus",
+ "impress": "Impress",
+ "interface": "Interface",
+ "intrusion": "Intrusion",
+ "knavery": "Knavery",
+ "melee": "Melee",
+ "observe": "Observe",
+ "perform": "Perform",
+ "pilot": "Pilot",
+ "remedy": "Remedy",
+ "shoot": "Shoot",
+ "sleight_of_hand": "Sleight of Hand",
+ "sneak": "Sneak",
+ "survival": "Survival",
+ "tech_redemption": "Tech Redemption",
+ "vigor": "Vigor",
+ "body": "Body",
+ "strength": "Strength",
+ "dexterity": "Dexterity",
+ "endurance": "Endurance",
+ "mind": "Mind",
+ "wits": "Wits",
+ "perception": "Perception",
+ "will": "Will",
+ "spirit": "Spirit",
+ "presence": "Presence",
+ "intuition": "Intuition",
+ "faith": "Faith",
+ "occult": "Occult",
+ "psi": "Psi",
+ "urge": "Urge",
+ "theurgy": "Theurgy",
+ "hubris": "Hubris",
+ "resistances": "Resistances",
+ "resistance_modifier": "Mod.",
+ "armor": "Armor",
+ "blaster_s": "Blstr.",
+ "flame_s": "Flm.",
+ "hard_s": "Hrd.",
+ "laser_s": "Lsr.",
+ "shock_s": "Shk.",
+ "slam_s": "Slm.",
+ "sonic_s": "Son.",
+ "e_shield": "E-Shield",
+ "e_shield_thresholds": "Thresholds",
+ "e_shield_hits": "Hits",
+ "vitality": "Vitality",
+ "rating": "Rating",
+ "current": "Current",
+ "revivals": "Revivals",
+ "number": "Number",
+ "actions": "Actions",
+ "action": "Maneuver/Attack",
+ "characteristic": "Characteristic",
+ "skill": "Skill",
+ "goal_bonus_penalty": "Goal +/-",
+ "goal": "Goal",
+ "impact_notes": "Impact / Notes",
+ "vp_bank": "VP Bank",
+ "vp_bank_capacity": "Capacity",
+ "current_vp": "Current VP",
+ "current_wp": "Current WP",
+ "surge": "Surge",
+ "surge_rating": "Rating",
+ "surge_number": "Number",
+ "perks": "Perks",
+ "perk_name": "Perk",
+ "perk_notes": "Description / Notes",
+ "capabilities": "Capabilities",
+ "capability_name": "Capability",
+ "capability_notes": "Description / Notes",
+ "birthrights": "Birthrights",
+ "birthright_name": "Birthright",
+ "birthright_notes": "Description",
+ "possessions": "Possessions",
+ "techgnosis": "Techgnosis",
+ "carried_equipment": "Carried Equipment",
+ "tech_level_s": "TL",
+ "equipment_size": "Size",
+ "carried_weapons": "Carried Weapons",
+ "damage_s": "Dmg.",
+ "strength_s": "Str.",
+ "range_s": "Rng.",
+ "rate_of_fire_s": "RoF",
+ "ammunition_s": "Ammo",
+ "weapon_features": "Features",
+ "owned": "Owned",
+ "location": "Location",
+ "money": "Money",
+ "cash": "Cash",
+ "asset": "Asset",
+ "income": "Income",
+ "last_notes": "Last Notes",
+ "victory_points": "VP",
+ "failure": "Failure!",
+ "critical_failure": "Critical failure!",
+ "critical_success": "Critical success!",
+ "success": "Success!",
+ "notes": "Notes"
+}
diff --git a/Fading Suns 4th Edition - Pax Alexius/translations/fr.json b/Fading Suns 4th Edition - Pax Alexius/translations/fr.json
new file mode 100644
index 0000000000..66ae4d7a81
--- /dev/null
+++ b/Fading Suns 4th Edition - Pax Alexius/translations/fr.json
@@ -0,0 +1,126 @@
+{
+ "name": "Nom",
+ "planet": "Planète",
+ "rank": "Rang",
+ "birthdate": "Né le",
+ "species": "Espèce",
+ "size": "Taille",
+ "speed": "Vitesse",
+ "class": "Classe",
+ "level": "Niveau",
+ "faction": "Faction",
+ "blessing": "Qualité",
+ "curse": "Défaut",
+ "calling": "Vocation",
+ "traits": "Traits",
+ "skills": "Compétences",
+ "academia": "Érudition",
+ "alchemy": "Alchimie",
+ "animalia": "Animaux",
+ "arts": "Arts",
+ "charm": "Charme",
+ "crafts": "Artisanat",
+ "disguise": "Déguisement",
+ "drive": "Conduite",
+ "empathy": "Empathie",
+ "fight": "Combat à mains nues",
+ "focus": "Focus",
+ "impress": "Impression",
+ "interface": "Interface",
+ "intrusion": "Intrusion",
+ "knavery": "Baratin",
+ "melee": "Mêlee",
+ "observe": "Observation",
+ "perform": "Performance",
+ "pilot": "Pilotage",
+ "remedy": "Remède",
+ "shoot": "Tir",
+ "sleight_of_hand": "Prestidigitation",
+ "sneak": "Discrétion",
+ "survival": "Survie",
+ "tech_redemption": "Rédemption Tech",
+ "vigor": "Vigueur",
+ "body": "Corps",
+ "strength": "Force",
+ "dexterity": "Dextérité",
+ "endurance": "Endurance",
+ "mind": "Intellect",
+ "wits": "Intelligence",
+ "perception": "Perception",
+ "will": "Volonté",
+ "spirit": "Esprit",
+ "presence": "Présence",
+ "intuition": "Intuition",
+ "faith": "Foi",
+ "occult": "Occulte",
+ "psi": "Psi",
+ "urge": "Pulsion",
+ "theurgy": "Théurgie",
+ "hubris": "Hubris",
+ "resistances": "Résistances",
+ "resistance_modifier": "Mod.",
+ "armor": "Armure",
+ "blaster_s": "Blstr.",
+ "flame_s": "Feu",
+ "hard_s": "Dure",
+ "laser_s": "Lsr.",
+ "shock_s": "Choc",
+ "slam_s": "Imp.",
+ "sonic_s": "Son.",
+ "e_shield": "E-Bouclier",
+ "e_shield_thresholds": "Seuils",
+ "e_shield_hits": "Charges",
+ "vitality": "Vitalité",
+ "rating": "Score",
+ "current": "Actuelle",
+ "revivals": "Rétablissement",
+ "number": "Nombre",
+ "actions": "Actions",
+ "action": "Manœuvre/Attaque",
+ "characteristic": "Caractéristique",
+ "skill": "Compétence",
+ "goal_bonus_penalty": "Seuil +/-",
+ "goal": "Seuil",
+ "impact_notes": "Impact / Notes",
+ "vp_bank": "Banque de PV",
+ "vp_bank_capacity": "Capacité",
+ "current_vp": "PV actuels",
+ "current_wp": "PA actuels",
+ "surge": "Surpassement",
+ "surge_rating": "Score",
+ "surge_number": "Nombre",
+ "perks": "Avantages",
+ "perk_name": "Avantage",
+ "perk_notes": "Description / Notes",
+ "capabilities": "Aptitudes",
+ "capability_name": "Aptitude",
+ "capability_notes": "Description / Notes",
+ "birthrights": "Héritages",
+ "birthright_name": "Héritage",
+ "birthright_notes": "Description",
+ "possessions": "Possessions",
+ "techgnosis": "Techgnose",
+ "carried_equipment": "Équipement porté",
+ "tech_level_s": "NT",
+ "equipment_size": "Taille",
+ "carried_weapons": "Armes portées",
+ "damage_s": "Dgt.",
+ "strength_s": "For.",
+ "range_s": "Por.",
+ "rate_of_fire_s": "CdT",
+ "ammunition_s": "Mun.",
+ "weapon_features": "Propriétés",
+ "owned": "Distantes",
+ "location": "Localisation",
+ "money": "Argent",
+ "cash": "Sur soi",
+ "asset": "Investissement",
+ "income": "Revenus",
+ "last_notes": "Notes",
+ "victory_points": "PV",
+ "failure": "Échec!",
+ "critical_failure": "Échec critique!",
+ "critical_success": "Succès critique!",
+ "success": "Success!",
+ "notes": "Notes"
+}