Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8a5d1cc1d8 | |||
| 99d9cb435f | |||
| f57b016b46 | |||
| 09907dbbf7 | |||
| e65f0a1670 | |||
| 941db9436f | |||
| 0874507025 | |||
| 2578ea4dc1 | |||
| d80e3e4658 |
1
assets/icons/icon_robot.svg
Normal file
1
assets/icons/icon_robot.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><defs><filter id="shadow-1" height="300%" width="300%" x="-100%" y="-100%"><feFlood flood-color="rgba(255, 255, 255, 1)" result="flood"></feFlood><feComposite in="flood" in2="SourceGraphic" operator="atop" result="composite"></feComposite><feGaussianBlur in="composite" stdDeviation="15" result="blur"></feGaussianBlur><feOffset dx="0" dy="0" result="offset"></feOffset><feComposite in="SourceGraphic" in2="offset" operator="over"></feComposite></filter></defs><g class="" style="" transform="translate(0,0)"><path d="M265.344 18.563v302.863h-18.69V18.59c-61.403 3.005-115.44 34.412-149.238 81.336l35.022 60.658a46.633 46.633 0 0 1 12.11-1.598c25.747 0 46.62 20.872 46.62 46.62 0 22.556-16.02 41.37-37.3 45.687v174.084c13.712 21.43 27.6 41.98 40.712 60.754V369.01h122.838v117.117c13.11-18.773 27-39.324 40.713-60.754V251.294c-21.282-4.317-37.302-23.13-37.302-45.688 0-25.747 20.873-46.62 46.62-46.62 4.19 0 8.25.562 12.113 1.6l35.13-60.847c-33.74-47-87.758-78.375-149.346-81.175zM426.03 117.47l-29.74 51.52c10.824 8.537 17.782 21.76 17.782 36.615 0 22.54-15.995 41.343-37.254 45.68V395.38c9.833-16.237 19.31-32.676 28.014-48.927 27.3-50.976 46.564-100.37 46.564-132.36 0-35.127-9.22-68.104-25.365-96.622zm-339.973.157c-16.196 28.486-25.46 61.408-25.46 96.465 0 31.992 19.267 81.385 46.567 132.36 8.704 16.253 18.182 32.694 28.016 48.933v-144.1c-21.26-4.336-37.254-23.14-37.254-45.68 0-14.856 6.957-28.08 17.783-36.617l-29.653-51.36zm127.213 270.07V488.98h85.46V387.696h-85.46z" fill="#7ed321" fill-opacity="1" filter="url(#shadow-1)" stroke="#ffffff" stroke-opacity="1" stroke-width="8"></path></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -118,6 +118,22 @@ i.fvtt-ftl-nomad {
|
|||||||
min-width: 5rem;
|
min-width: 5rem;
|
||||||
max-width: 5rem;
|
max-width: 5rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-sheet-common label {
|
||||||
|
font-family: var(--font-secondary);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-sheet-common .form-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-sheet-common .form-group label {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 8px;
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
.fvtt-ftl-nomad .creature-sheet-common label {
|
.fvtt-ftl-nomad .creature-sheet-common label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@@ -327,24 +343,26 @@ i.fvtt-ftl-nomad {
|
|||||||
min-width: 5.2rem;
|
min-width: 5.2rem;
|
||||||
}
|
}
|
||||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .encumbrance {
|
.fvtt-ftl-nomad .character-main .character-pc .character-right .encumbrance {
|
||||||
display: grid;
|
display: flex;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .encumbrance .form-group {
|
.fvtt-ftl-nomad .character-main .character-pc .character-right .encumbrance .form-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .encumbrance label {
|
.fvtt-ftl-nomad .character-main .character-pc .character-right .encumbrance label {
|
||||||
min-width: 4rem;
|
min-width: 3rem;
|
||||||
max-width: 4rem;
|
max-width: 3rem;
|
||||||
}
|
}
|
||||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .encumbrance input {
|
.fvtt-ftl-nomad .character-main .character-pc .character-right .encumbrance input {
|
||||||
max-width: 3rem;
|
max-width: 3rem;
|
||||||
min-width: 3rem;
|
min-width: 3rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-ftl-nomad .character-main .character-pc .character-right .encumbrance .character-credit input {
|
||||||
|
max-width: 9rem;
|
||||||
|
min-width: 9rem;
|
||||||
|
}
|
||||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .character-name {
|
.fvtt-ftl-nomad .character-main .character-pc .character-right .character-name {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
@@ -413,10 +431,10 @@ i.fvtt-ftl-nomad {
|
|||||||
background-color: var(--color-light-1);
|
background-color: var(--color-light-1);
|
||||||
}
|
}
|
||||||
.fvtt-ftl-nomad .character-biography prose-mirror.inactive {
|
.fvtt-ftl-nomad .character-biography prose-mirror.inactive {
|
||||||
min-height: 40px;
|
min-height: 16rem;
|
||||||
}
|
}
|
||||||
.fvtt-ftl-nomad .character-biography prose-mirror.active {
|
.fvtt-ftl-nomad .character-biography prose-mirror.active {
|
||||||
min-height: 150px;
|
min-height: 16rem;
|
||||||
}
|
}
|
||||||
.fvtt-ftl-nomad .character-biography .field-label {
|
.fvtt-ftl-nomad .character-biography .field-label {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
@@ -1104,6 +1122,15 @@ i.fvtt-ftl-nomad {
|
|||||||
.fvtt-ftl-nomad .vehicle-description .field-label {
|
.fvtt-ftl-nomad .vehicle-description .field-label {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
.fvtt-ftl-nomad .vehicle-description .section-editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .vehicle-description .section-editor .editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .vehicle-description .section-editor .editor-content {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
.fvtt-ftl-nomad .vehicle-description .biodata {
|
.fvtt-ftl-nomad .vehicle-description .biodata {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
@@ -1202,6 +1229,374 @@ i.fvtt-ftl-nomad {
|
|||||||
.fvtt-ftl-nomad .tab.vehicle-equipment .main-div prose-mirror.active {
|
.fvtt-ftl-nomad .tab.vehicle-equipment .main-div prose-mirror.active {
|
||||||
min-height: 150px;
|
min-height: 150px;
|
||||||
}
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content {
|
||||||
|
font-family: var(--font-primary);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
|
color: var(--color-dark-1);
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
/*background-image: var(--background-image-base);*/
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content input:disabled,
|
||||||
|
.fvtt-ftl-nomad .robot-content select:disabled {
|
||||||
|
background-color: rgba(0, 0, 0, 0.2);
|
||||||
|
border-color: transparent;
|
||||||
|
color: var(--color-dark-3);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content input,
|
||||||
|
.fvtt-ftl-nomad .robot-content select {
|
||||||
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
|
border-color: var(--color-dark-6);
|
||||||
|
color: var(--color-dark-2);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content input[name="name"] {
|
||||||
|
height: 40px;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-family: var(--font-title);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
|
font-weight: bold;
|
||||||
|
border: none;
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content fieldset {
|
||||||
|
margin-bottom: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content .form-fields input,
|
||||||
|
.fvtt-ftl-nomad .robot-content .form-fields select {
|
||||||
|
text-align: center;
|
||||||
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content .form-fields select {
|
||||||
|
font-family: var(--font-secondary);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content legend {
|
||||||
|
font-family: var(--font-secondary);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
|
font-weight: bold;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content label {
|
||||||
|
font-family: var(--font-secondary);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content .form-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-content .form-group label {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 8px;
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .sheet-tabs {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc {
|
||||||
|
display: flex;
|
||||||
|
gap: 4px;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-left {
|
||||||
|
min-width: 180px;
|
||||||
|
max-width: 180px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-left .robot-left-image {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-left .robot-left-image .robot-img {
|
||||||
|
height: 140px;
|
||||||
|
width: auto;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-left .robot-cost label {
|
||||||
|
min-width: 3rem;
|
||||||
|
max-width: 3rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-left .robot-cost input {
|
||||||
|
min-width: 6rem;
|
||||||
|
max-width: 6rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 5px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-name {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-name input {
|
||||||
|
font-family: var(--font-title);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
width: 380px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-brain {
|
||||||
|
min-width: 25rem;
|
||||||
|
max-width: 25rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-brain textarea {
|
||||||
|
min-width: 23rem;
|
||||||
|
max-width: 23rem;
|
||||||
|
background-color: rgba(0, 0, 0, 0.2);
|
||||||
|
color: var(--color-dark-3);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .main-stats {
|
||||||
|
min-width: 25rem;
|
||||||
|
max-width: 25rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .main-stats .encumbered {
|
||||||
|
color: red;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .cargo label,
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .capacity label {
|
||||||
|
min-width: 4rem;
|
||||||
|
max-width: 4rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .cargo input,
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .capacity input {
|
||||||
|
max-width: 6rem;
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .cargo .cargo-content,
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .capacity .cargo-content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-infos {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-infos label {
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-infos .robot-hp {
|
||||||
|
display: flex;
|
||||||
|
gap: 2px;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-infos .robot-hp .robot-hp-value .form-fields input {
|
||||||
|
flex: none;
|
||||||
|
width: 50px;
|
||||||
|
margin-left: 4px;
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-infos .robot-hp .robot-hp-max {
|
||||||
|
clear: both;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin: 3px 0;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-infos .robot-hp .robot-hp-max input {
|
||||||
|
width: 50px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc .robot-right .robot-infos .robot-hp .hp-separator {
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skills {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 5px;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skills .robot-skill {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skills .robot-skill .icon-skill {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skills .robot-skill .rollable:hover,
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skills .robot-skill .rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skills .robot-skill .rollable {
|
||||||
|
min-width: 4.5rem;
|
||||||
|
max-width: 4.5rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skills .robot-skill .char-text {
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skills .robot-skill .d100 {
|
||||||
|
flex: 0;
|
||||||
|
max-width: 0.6rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skills .robot-skill .form-group {
|
||||||
|
flex: 0;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skills .robot-skill .form-group .form-fields {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
flex: none;
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skill-play {
|
||||||
|
min-width: 225px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-skill-edit {
|
||||||
|
min-width: 225px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc-play {
|
||||||
|
min-width: 500px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-main .robot-pc-edit {
|
||||||
|
min-width: 500px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description .text-center {
|
||||||
|
text-align: left;
|
||||||
|
align-content: center;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description prose-mirror.inactive {
|
||||||
|
min-height: 40px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description prose-mirror.active {
|
||||||
|
min-height: 150px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description .field-label {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description .robot-brain input {
|
||||||
|
min-width: 32rem;
|
||||||
|
max-width: 32rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description .section-editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description .section-editor .editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description .section-editor .editor-content {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description .biodata {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description .biodata label {
|
||||||
|
min-width: 3rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .robot-description .biodata .feature {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
min-width: 18rem;
|
||||||
|
max-width: 18rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div legend a {
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .weapons {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .weapons .weapon {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
min-width: 13rem;
|
||||||
|
max-width: 13srem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .weapons .weapon .rollable:hover,
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .weapons .weapon .rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .weapons .weapon .controls {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .weapons .weapon .damage {
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .weapons .weapon .name {
|
||||||
|
min-width: 8rem;
|
||||||
|
max-width: 8rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .weapons .weapon .item-img {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .equipments {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .equipments .equipment {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
min-width: 13rem;
|
||||||
|
max-width: 13srem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .equipments .equipment .rollable:hover,
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .equipments .equipment .rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .equipments .equipment .controls {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .equipments .equipment .damage {
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .equipments .equipment .name {
|
||||||
|
min-width: 8rem;
|
||||||
|
max-width: 8rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div .equipments .equipment .item-img {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div prose-mirror.inactive {
|
||||||
|
min-height: 40px;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .tab.robot-equipment .main-div prose-mirror.active {
|
||||||
|
min-height: 150px;
|
||||||
|
}
|
||||||
.fvtt-ftl-nomad .starship-content {
|
.fvtt-ftl-nomad .starship-content {
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
@@ -1324,6 +1719,10 @@ i.fvtt-ftl-nomad {
|
|||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
.fvtt-ftl-nomad .starship-main .starship-pc .starship-right .capacity .hull-field select {
|
||||||
|
min-width: 10rem;
|
||||||
|
max-width: 10rem;
|
||||||
|
}
|
||||||
.fvtt-ftl-nomad .starship-main .starship-pc .starship-right .capacity label {
|
.fvtt-ftl-nomad .starship-main .starship-pc .starship-right .capacity label {
|
||||||
margin-left: 0.2rem;
|
margin-left: 0.2rem;
|
||||||
max-width: 7rem;
|
max-width: 7rem;
|
||||||
@@ -1335,6 +1734,11 @@ i.fvtt-ftl-nomad {
|
|||||||
align-self: center;
|
align-self: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
}
|
}
|
||||||
|
.fvtt-ftl-nomad .starship-main .starship-pc .starship-right .capacity .flexrow-guns .starship-guns-label {
|
||||||
|
min-width: 7.4rem;
|
||||||
|
max-width: 7.4rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
.fvtt-ftl-nomad .starship-main .starship-pc .starship-right .capacity input {
|
.fvtt-ftl-nomad .starship-main .starship-pc .starship-right .capacity input {
|
||||||
max-width: 5rem;
|
max-width: 5rem;
|
||||||
}
|
}
|
||||||
@@ -1408,6 +1812,15 @@ i.fvtt-ftl-nomad {
|
|||||||
.fvtt-ftl-nomad .starship-description .field-label {
|
.fvtt-ftl-nomad .starship-description .field-label {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
.fvtt-ftl-nomad .starship-description .section-editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .starship-description .section-editor .editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .starship-description .section-editor .editor-content {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
.fvtt-ftl-nomad .starship-description .biodata {
|
.fvtt-ftl-nomad .starship-description .biodata {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
@@ -1744,6 +2157,15 @@ i.fvtt-ftl-nomad {
|
|||||||
.fvtt-ftl-nomad .creature-biography .rank input {
|
.fvtt-ftl-nomad .creature-biography .rank input {
|
||||||
max-width: 4rem;
|
max-width: 4rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-ftl-nomad .creature-biography .section-editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .creature-biography .section-editor .editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.fvtt-ftl-nomad .creature-biography .section-editor .editor-content {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
.fvtt-ftl-nomad .creature-biography .biodata {
|
.fvtt-ftl-nomad .creature-biography .biodata {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
|||||||
@@ -31,19 +31,27 @@ Hooks.once("init", function () {
|
|||||||
utils: FTLNomadUtils,
|
utils: FTLNomadUtils,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
// Set an initiative formula for the system
|
||||||
|
CONFIG.Combat.initiative = {
|
||||||
|
formula: "2d6 + @skills.combat.value",
|
||||||
|
decimals: 1
|
||||||
|
};
|
||||||
|
|
||||||
CONFIG.Actor.documentClass = documents.FTLNomadActor
|
CONFIG.Actor.documentClass = documents.FTLNomadActor
|
||||||
CONFIG.Actor.dataModels = {
|
CONFIG.Actor.dataModels = {
|
||||||
character: models.FTLNomadCharacter,
|
character: models.FTLNomadCharacter,
|
||||||
vehicle: models.FTLNomadVehicle,
|
vehicle: models.FTLNomadVehicle,
|
||||||
creature: models.FTLNomadCreature,
|
creature: models.FTLNomadCreature,
|
||||||
starship: models.FTLNomadStarship
|
starship: models.FTLNomadStarship,
|
||||||
|
robot: models.FTLNomadRobot
|
||||||
}
|
}
|
||||||
|
|
||||||
CONFIG.Item.documentClass = documents.FTLNomadItem
|
CONFIG.Item.documentClass = documents.FTLNomadItem
|
||||||
CONFIG.Item.dataModels = {
|
CONFIG.Item.dataModels = {
|
||||||
psionic: models.FTLNomadPsionic,
|
psionic: models.FTLNomadPsionic,
|
||||||
weapon: models.FTLNomadWeapon,
|
weapon: models.FTLNomadWeapon,
|
||||||
armor: models.FTLNomadArmor,
|
armor: models.FTLNomadArmor,
|
||||||
talent: models.FTLNomadTalent,
|
talent: models.FTLNomadTalent,
|
||||||
language: models.FTLNomadLanguage,
|
language: models.FTLNomadLanguage,
|
||||||
equipment: models.FTLNomadEquipment,
|
equipment: models.FTLNomadEquipment,
|
||||||
@@ -54,10 +62,11 @@ Hooks.once("init", function () {
|
|||||||
|
|
||||||
// Register sheet application classes
|
// Register sheet application classes
|
||||||
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet)
|
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet)
|
||||||
foundry.documents.collections.Actors.registerSheet("fvtt-ftl-nomad", applications.FTLNomadCharacterSheet , { types: ["character"], makeDefault: true })
|
foundry.documents.collections.Actors.registerSheet("fvtt-ftl-nomad", applications.FTLNomadCharacterSheet, { types: ["character"], makeDefault: true })
|
||||||
foundry.documents.collections.Actors.registerSheet("fvtt-ftl-nomad", applications.FTLNomadVehicleSheet, { types: ["vehicle"], makeDefault: true })
|
foundry.documents.collections.Actors.registerSheet("fvtt-ftl-nomad", applications.FTLNomadVehicleSheet, { types: ["vehicle"], makeDefault: true })
|
||||||
foundry.documents.collections.Actors.registerSheet("fvtt-ftl-nomad", applications.FTLNomadCreatureSheet, { types: ["creature"], makeDefault: true })
|
foundry.documents.collections.Actors.registerSheet("fvtt-ftl-nomad", applications.FTLNomadCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||||
foundry.documents.collections.Actors.registerSheet("fvtt-ftl-nomad", applications.FTLNomadStarshipSheet, { types: ["starship"], makeDefault: true })
|
foundry.documents.collections.Actors.registerSheet("fvtt-ftl-nomad", applications.FTLNomadStarshipSheet, { types: ["starship"], makeDefault: true })
|
||||||
|
foundry.documents.collections.Actors.registerSheet("fvtt-ftl-nomad", applications.FTLNomadRobotSheet, { types: ["robot"], makeDefault: true })
|
||||||
|
|
||||||
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet)
|
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet)
|
||||||
foundry.documents.collections.Items.registerSheet("fvtt-ftl-nomad", applications.FTLNomadPsionicSheet, { types: ["psionic"], makeDefault: true })
|
foundry.documents.collections.Items.registerSheet("fvtt-ftl-nomad", applications.FTLNomadPsionicSheet, { types: ["psionic"], makeDefault: true })
|
||||||
|
|||||||
100
lang/en.json
100
lang/en.json
@@ -292,6 +292,90 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Robot": {
|
||||||
|
"Size": {
|
||||||
|
"Tiny": "Tiny",
|
||||||
|
"Small": "Small",
|
||||||
|
"Medium": "Medium",
|
||||||
|
"Large": "Large",
|
||||||
|
"Huge": "Huge",
|
||||||
|
"Giant": "Giant",
|
||||||
|
"Titanic": "Titanic",
|
||||||
|
"Gargantuan": "Gargantuan"
|
||||||
|
},
|
||||||
|
"FIELDS": {
|
||||||
|
"enc": {
|
||||||
|
"label": "Enc",
|
||||||
|
"value": {
|
||||||
|
"label": "Enc Curr."
|
||||||
|
},
|
||||||
|
"max": {
|
||||||
|
"label": "Enc Max"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"brain": {
|
||||||
|
"label": "Brain"
|
||||||
|
},
|
||||||
|
"cost": {
|
||||||
|
"label": "Cost"
|
||||||
|
},
|
||||||
|
"techAge": {
|
||||||
|
"label": "Tech Age"
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"label": "Damage"
|
||||||
|
},
|
||||||
|
"robotSize": {
|
||||||
|
"label": "Size"
|
||||||
|
},
|
||||||
|
"speed": {
|
||||||
|
"label": "Speed"
|
||||||
|
},
|
||||||
|
"durability": {
|
||||||
|
"label": "Durability"
|
||||||
|
},
|
||||||
|
"protection": {
|
||||||
|
"label": "Protection"
|
||||||
|
},
|
||||||
|
"characteristics:": {
|
||||||
|
"char": {
|
||||||
|
"label": "Charisma"
|
||||||
|
},
|
||||||
|
"con": {
|
||||||
|
"label": "Constitution"
|
||||||
|
},
|
||||||
|
"dex": {
|
||||||
|
"label": "Dexterity"
|
||||||
|
},
|
||||||
|
"int": {
|
||||||
|
"label": "Intelligence"
|
||||||
|
},
|
||||||
|
"pow": {
|
||||||
|
"label": "Power"
|
||||||
|
},
|
||||||
|
"str": {
|
||||||
|
"label": "Strength"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"damageBonus": {
|
||||||
|
"label": "Dmg.Bonus"
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"hand": {
|
||||||
|
"label": "Hand"
|
||||||
|
},
|
||||||
|
"permanentRating": {
|
||||||
|
"label": "Permanent Rating"
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"label": "Storage"
|
||||||
|
},
|
||||||
|
"stowed": {
|
||||||
|
"label": "Stowed"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"CreatureAbility": {
|
"CreatureAbility": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
"description": {
|
"description": {
|
||||||
@@ -351,8 +435,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Label": {
|
"Label": {
|
||||||
|
"robot": "Robot",
|
||||||
|
"techAge": "Tech Age",
|
||||||
|
"mainStats": "Main Stats",
|
||||||
"formula": "Formula",
|
"formula": "Formula",
|
||||||
"damages": "Damages",
|
"damages": "Damage",
|
||||||
"modifications": "Modifications",
|
"modifications": "Modifications",
|
||||||
"abilities": "Abilities",
|
"abilities": "Abilities",
|
||||||
"Details": "Details",
|
"Details": "Details",
|
||||||
@@ -512,6 +599,9 @@
|
|||||||
"Carrier": "Carrier"
|
"Carrier": "Carrier"
|
||||||
},
|
},
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
|
"techAge": {
|
||||||
|
"label": "Tech Age"
|
||||||
|
},
|
||||||
"monthlyCost": {
|
"monthlyCost": {
|
||||||
"label": "Monthly Cost"
|
"label": "Monthly Cost"
|
||||||
},
|
},
|
||||||
@@ -590,7 +680,7 @@
|
|||||||
"addPsionic" : "Add Psionic",
|
"addPsionic" : "Add Psionic",
|
||||||
"addCreatureAbility" : "Add Creature Ability",
|
"addCreatureAbility" : "Add Creature Ability",
|
||||||
"addCreatureTrait" : "Add Creature Trait",
|
"addCreatureTrait" : "Add Creature Trait",
|
||||||
"damages": "Enter current damages suffered"
|
"damages": "Enter current damage suffered"
|
||||||
},
|
},
|
||||||
"Vehicle": {
|
"Vehicle": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
@@ -626,6 +716,9 @@
|
|||||||
},
|
},
|
||||||
"notes": {
|
"notes": {
|
||||||
"label": "Notes"
|
"label": "Notes"
|
||||||
|
},
|
||||||
|
"techAge": {
|
||||||
|
"label": "Tech Age"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -687,7 +780,8 @@
|
|||||||
"character": "Character",
|
"character": "Character",
|
||||||
"creature": "Creature",
|
"creature": "Creature",
|
||||||
"starship": "Starship",
|
"starship": "Starship",
|
||||||
"vehicle": "Vehicle"
|
"vehicle": "Vehicle",
|
||||||
|
"robot": "Robot"
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"armor": "Armor",
|
"armor": "Armor",
|
||||||
|
|||||||
@@ -11,4 +11,4 @@ export { default as FTLNomadImplantSheet } from "./sheets/implant-sheet.mjs"
|
|||||||
export { default as FTLNomadStarshipSheet } from "./sheets/starship-sheet.mjs"
|
export { default as FTLNomadStarshipSheet } from "./sheets/starship-sheet.mjs"
|
||||||
export { default as FTLNomadCreatureTraitSheet } from "./sheets/creature-trait-sheet.mjs"
|
export { default as FTLNomadCreatureTraitSheet } from "./sheets/creature-trait-sheet.mjs"
|
||||||
export { default as FTLNomadCreatureAbilitySheet } from "./sheets/creature-ability-sheet.mjs"
|
export { default as FTLNomadCreatureAbilitySheet } from "./sheets/creature-ability-sheet.mjs"
|
||||||
|
export { default as FTLNomadRobotSheet } from "./sheets/robot-sheet.mjs"
|
||||||
|
|||||||
174
module/applications/sheets/robot-sheet.mjs
Normal file
174
module/applications/sheets/robot-sheet.mjs
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
import FTLNomadActorSheet from "./base-actor-sheet.mjs"
|
||||||
|
|
||||||
|
export default class FTLNomadRobotSheet extends FTLNomadActorSheet {
|
||||||
|
/** @override */
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
classes: ["robot"],
|
||||||
|
position: {
|
||||||
|
width: 860,
|
||||||
|
height: 620,
|
||||||
|
},
|
||||||
|
window: {
|
||||||
|
contentClasses: ["robot-content"],
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
createEquipment: FTLNomadRobotSheet.#onCreateEquipment,
|
||||||
|
createArmor: FTLNomadRobotSheet.#onCreateArmor,
|
||||||
|
createWeapon: FTLNomadRobotSheet.#onCreateWeapon,
|
||||||
|
createTalent: FTLNomadRobotSheet.#onCreateTalent,
|
||||||
|
createImplant: FTLNomadRobotSheet.#onCreateImplant,
|
||||||
|
createPsionic: FTLNomadRobotSheet.#onCreatePsionic,
|
||||||
|
createLanguage: FTLNomadRobotSheet.#onCreateLanguage
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
static PARTS = {
|
||||||
|
main: {
|
||||||
|
template: "systems/fvtt-ftl-nomad/templates/robot-main.hbs",
|
||||||
|
},
|
||||||
|
tabs: {
|
||||||
|
template: "templates/generic/tab-navigation.hbs",
|
||||||
|
},
|
||||||
|
equipment: {
|
||||||
|
template: "systems/fvtt-ftl-nomad/templates/robot-equipment.hbs",
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
template: "systems/fvtt-ftl-nomad/templates/robot-description.hbs",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
tabGroups = {
|
||||||
|
sheet: "equipment",
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepare an array of form header tabs.
|
||||||
|
* @returns {Record<string, Partial<ApplicationTab>>}
|
||||||
|
*/
|
||||||
|
#getTabs() {
|
||||||
|
const tabs = {
|
||||||
|
equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "FTLNOMAD.Label.equipment" },
|
||||||
|
description: {
|
||||||
|
id: "description", group: "sheet", icon: "fa-solid fa-book", label: "FTLNOMAD.Label.description"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const v of Object.values(tabs)) {
|
||||||
|
v.active = this.tabGroups[v.group] === v.id
|
||||||
|
v.cssClass = v.active ? "active" : ""
|
||||||
|
}
|
||||||
|
return tabs
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
async _prepareContext() {
|
||||||
|
const context = await super._prepareContext()
|
||||||
|
context.tabs = this.#getTabs()
|
||||||
|
|
||||||
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||||
|
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.notes, { async: true })
|
||||||
|
|
||||||
|
return context
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
async _preparePartContext(partId, context) {
|
||||||
|
const doc = this.document
|
||||||
|
switch (partId) {
|
||||||
|
case "equipment":
|
||||||
|
context.tab = context.tabs.equipment
|
||||||
|
context.weapons = doc.itemTypes.weapon
|
||||||
|
context.weapons.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
|
context.armors = doc.itemTypes.armor
|
||||||
|
context.armors.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
|
context.equipments = doc.itemTypes.equipment
|
||||||
|
context.equipments.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
|
break
|
||||||
|
case "description":
|
||||||
|
context.tab = context.tabs.description
|
||||||
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(doc.system.description, { async: true })
|
||||||
|
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(doc.system.notes, { async: true })
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return context
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static #onCreateEquipment(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newEquipment"), type: "equipment" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
static #onCreateWeapon(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newWeapon"), type: "weapon" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
static #onCreateArmor(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newArmor"), type: "armor" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
static #onCreateTalent(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newTalent"), type: "talent" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
static #onCreateImplant(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newImplant"), type: "implant" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
static #onCreatePsionic(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newPsionic"), type: "psionic" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
static #onCreateLanguage(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newLanguage"), type: "language" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the roll action triggered by user interaction.
|
||||||
|
*
|
||||||
|
* @param {PointerEvent} event The event object representing the user interaction.
|
||||||
|
* @param {HTMLElement} target The target element that triggered the roll.
|
||||||
|
*
|
||||||
|
* @returns {Promise<void>} A promise that resolves when the roll action is complete.
|
||||||
|
*
|
||||||
|
* @throws {Error} Throws an error if the roll type is not recognized.
|
||||||
|
*
|
||||||
|
* @description This method checks the current mode (edit or not) and determines the type of roll
|
||||||
|
* (save, resource, or damage) based on the target element's data attributes. It retrieves the
|
||||||
|
* corresponding value from the document's system and performs the roll.
|
||||||
|
*/
|
||||||
|
async _onRoll(event, target) {
|
||||||
|
const rollType = $(event.currentTarget).data("roll-type")
|
||||||
|
let item
|
||||||
|
let li
|
||||||
|
switch (rollType) {
|
||||||
|
case "skill":
|
||||||
|
let skillId = $(event.currentTarget).data("skill-id");
|
||||||
|
item = this.actor.system.skills[skillId];
|
||||||
|
break
|
||||||
|
case "weapon":
|
||||||
|
case "damage":
|
||||||
|
li = $(event.currentTarget).parents(".item");
|
||||||
|
item = this.actor.items.get(li.data("item-id"));
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
throw new Error(`Unknown roll type ${rollType}`)
|
||||||
|
}
|
||||||
|
await this.document.system.roll(rollType, item)
|
||||||
|
}
|
||||||
|
|
||||||
|
async _onDrop(event) {
|
||||||
|
if (!this.isEditable || !this.isEditMode) return
|
||||||
|
const data = TextEditor.getDragEventData(event)
|
||||||
|
|
||||||
|
// Handle different data types
|
||||||
|
switch (data.type) {
|
||||||
|
case "Item":
|
||||||
|
const item = await fromUuid(data.uuid)
|
||||||
|
return super._onDropItem(item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -41,6 +41,13 @@ export const TECH_AGES = {
|
|||||||
"cosmic": { id: "cosmic", label: "FTLNOMAD.TechAge.Cosmic", level: 13 }
|
"cosmic": { id: "cosmic", label: "FTLNOMAD.TechAge.Cosmic", level: 13 }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const ROBOT_SIZES = {
|
||||||
|
"tiny": { id: "tiny", label: "FTLNOMAD.Robot.Size.Tiny" },
|
||||||
|
"small": { id: "small", label: "FTLNOMAD.Robot.Size.Small" },
|
||||||
|
"medium": { id: "medium", label: "FTLNOMAD.Robot.Size.Medium" },
|
||||||
|
"large": { id: "large", label: "FTLNOMAD.Robot.Size.Large" },
|
||||||
|
"giant": { id: "giant", label: "FTLNOMAD.Robot.Size.Giant" }
|
||||||
|
}
|
||||||
|
|
||||||
export const WEAPON_TYPES = {
|
export const WEAPON_TYPES = {
|
||||||
"melee": { id: "melee", label: "FTLNOMAD.Weapon.Types.Melee" },
|
"melee": { id: "melee", label: "FTLNOMAD.Weapon.Types.Melee" },
|
||||||
@@ -72,6 +79,16 @@ export const ATTACK_MODIFIERS = {
|
|||||||
"aware": -1
|
"aware": -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const DAMAGE_MODIFIER_CHOICES = [
|
||||||
|
{ id: "-3", label: "-3", value: "-3" },
|
||||||
|
{ id: "-2", label: "-2", value: "-2" },
|
||||||
|
{ id: "-1", label: "-1", value: "-1" },
|
||||||
|
{ id: "0", label: "0", value: "0" },
|
||||||
|
{ id: "1", label: "+1", value: "1" },
|
||||||
|
{ id: "2", label: "+2", value: "2" },
|
||||||
|
{ id: "3", label: "+3", value: "3" }
|
||||||
|
]
|
||||||
|
|
||||||
export const TRIAGE_RESULTS = {
|
export const TRIAGE_RESULTS = {
|
||||||
"none": { id: "none", dice: 0, label: "FTLNOMAD.TriageResults.None" },
|
"none": { id: "none", dice: 0, label: "FTLNOMAD.TriageResults.None" },
|
||||||
"death": { id: "death", dice: 3, label: "FTLNOMAD.TriageResults.Death" },
|
"death": { id: "death", dice: 3, label: "FTLNOMAD.TriageResults.Death" },
|
||||||
@@ -156,5 +173,7 @@ export const SYSTEM = {
|
|||||||
CREATURE_NICHES,
|
CREATURE_NICHES,
|
||||||
STARSHIP_HULL,
|
STARSHIP_HULL,
|
||||||
SKILLS,
|
SKILLS,
|
||||||
|
ROBOT_SIZES,
|
||||||
|
DAMAGE_MODIFIER_CHOICES,
|
||||||
ASCII
|
ASCII
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,10 +62,14 @@ export default class FTLNomadRoll extends Roll {
|
|||||||
|
|
||||||
static updateFullFormula(options) {
|
static updateFullFormula(options) {
|
||||||
let fullFormula
|
let fullFormula
|
||||||
let mod = options.rollItem?.value || 0
|
if (options.rollType === "damage") {
|
||||||
fullFormula = `${options.formula} + ${options.skillModifier}D + ${mod} + ${options.rangeModifier}D + ${options.numericModifier}D`
|
fullFormula = `${options.formula} + ${options.damageModifier}D6 `
|
||||||
|
} else {
|
||||||
|
let mod = options.rollItem?.value || 0
|
||||||
|
fullFormula = `${options.formula} + ${options.skillModifier}D + ${mod} + ${options.rangeModifier}D + ${options.numericModifier}D`
|
||||||
|
}
|
||||||
// Replace all the "+ -" with "-"
|
// Replace all the "+ -" with "-"
|
||||||
fullFormula = fullFormula.replace(/\+\s*-/g, "- ")
|
fullFormula = fullFormula.replace(/\+\s*\-/g, "- ")
|
||||||
$('#roll-dialog-full-formula').text(fullFormula)
|
$('#roll-dialog-full-formula').text(fullFormula)
|
||||||
options.fullFormula = fullFormula
|
options.fullFormula = fullFormula
|
||||||
}
|
}
|
||||||
@@ -93,6 +97,7 @@ export default class FTLNomadRoll extends Roll {
|
|||||||
break
|
break
|
||||||
case "damage":
|
case "damage":
|
||||||
options.weapon = foundry.utils.duplicate(options.rollItem)
|
options.weapon = foundry.utils.duplicate(options.rollItem)
|
||||||
|
formula = options.weapon.system.damage
|
||||||
break
|
break
|
||||||
case "weapon":
|
case "weapon":
|
||||||
options.weapon = foundry.utils.duplicate(options.rollItem)
|
options.weapon = foundry.utils.duplicate(options.rollItem)
|
||||||
@@ -118,16 +123,16 @@ export default class FTLNomadRoll extends Roll {
|
|||||||
let range = SYSTEM.WEAPON_RANGE[options.weapon.system.rangeType]
|
let range = SYSTEM.WEAPON_RANGE[options.weapon.system.rangeType]
|
||||||
for (let [key, value] of Object.entries(range.range)) {
|
for (let [key, value] of Object.entries(range.range)) {
|
||||||
choiceRangeModifier[key] = { label: `${key} (${value}D)`, value: value }
|
choiceRangeModifier[key] = { label: `${key} (${value}D)`, value: value }
|
||||||
if (!rangeModifier && value) {
|
|
||||||
rangeModifier = value
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const choiceDamageModifier = SYSTEM.DAMAGE_MODIFIER_CHOICES
|
||||||
|
let damageModifier = "0"
|
||||||
|
|
||||||
let modifier = "0"
|
let modifier = "0"
|
||||||
options.skillModifier = 0
|
options.skillModifier = 0
|
||||||
options.numericModifier = 0
|
options.numericModifier = 0
|
||||||
options.rangeModifier = rangeModifier
|
options.rangeModifier = rangeModifier
|
||||||
|
options.damageModifier = damageModifier
|
||||||
let fullFormula = `${formula} + ${options.rollItem.value}`
|
let fullFormula = `${formula} + ${options.rollItem.value}`
|
||||||
if (options.isEncumbered) {
|
if (options.isEncumbered) {
|
||||||
fullFormula += ` - 1D`
|
fullFormula += ` - 1D`
|
||||||
@@ -148,7 +153,9 @@ export default class FTLNomadRoll extends Roll {
|
|||||||
fieldRollMode,
|
fieldRollMode,
|
||||||
choiceModifier,
|
choiceModifier,
|
||||||
choiceRangeModifier,
|
choiceRangeModifier,
|
||||||
|
choiceDamageModifier,
|
||||||
rangeModifier,
|
rangeModifier,
|
||||||
|
damageModifier,
|
||||||
formula,
|
formula,
|
||||||
hasTarget: options.hasTarget,
|
hasTarget: options.hasTarget,
|
||||||
modifier,
|
modifier,
|
||||||
@@ -182,6 +189,10 @@ export default class FTLNomadRoll extends Roll {
|
|||||||
options.skillModifier = Number(event.target.value)
|
options.skillModifier = Number(event.target.value)
|
||||||
FTLNomadRoll.updateFullFormula(options)
|
FTLNomadRoll.updateFullFormula(options)
|
||||||
})
|
})
|
||||||
|
$(".roll-damage-modifier").change(event => {
|
||||||
|
options.damageModifier = Number(event.target.value)
|
||||||
|
FTLNomadRoll.updateFullFormula(options)
|
||||||
|
})
|
||||||
$(".roll-skill-range-modifier").change(event => {
|
$(".roll-skill-range-modifier").change(event => {
|
||||||
options.rangeModifier = Number(event.target.value)
|
options.rangeModifier = Number(event.target.value)
|
||||||
FTLNomadRoll.updateFullFormula(options)
|
FTLNomadRoll.updateFullFormula(options)
|
||||||
@@ -212,14 +223,38 @@ export default class FTLNomadRoll extends Roll {
|
|||||||
options.numericModifier = Number(rollData.numericModifier) || 0
|
options.numericModifier = Number(rollData.numericModifier) || 0
|
||||||
options.skillModifier = Number(rollData.skillModifier) || 0
|
options.skillModifier = Number(rollData.skillModifier) || 0
|
||||||
options.rangeModifier = Number(rollData.rangeModifier) || 0
|
options.rangeModifier = Number(rollData.rangeModifier) || 0
|
||||||
|
options.finalModifier = options.numericModifier + options.skillModifier + options.rangeModifier
|
||||||
let mod = options.rollItem?.value || 0
|
let mod = options.rollItem?.value || 0
|
||||||
|
|
||||||
// Build the dice formula
|
// Build the dice formula
|
||||||
let diceFormula = `${2 + Math.abs(options.skillModifier)}D6`
|
let diceFormula = "2d6"
|
||||||
if (options.skillModifier > 0) {
|
if (options.rollType === "damage") {
|
||||||
diceFormula += `kh2 + ${mod}`
|
let damageFormula = options.weapon.system.damage.toUpperCase().replace(/D/g, "d")
|
||||||
|
// Extract the mod (if present), like in 3d6+1
|
||||||
|
let match = damageFormula.match(/([+-]\d+)$/)
|
||||||
|
if (match) {
|
||||||
|
mod += Number(match[1])
|
||||||
|
damageFormula = damageFormula.replace(match[1], "")
|
||||||
|
}
|
||||||
|
// Replace the D6 by the correct number of D6
|
||||||
|
damageFormula = damageFormula.replace(/(\d*)d6/gi, (match, p1) => {
|
||||||
|
let numDice = Number(p1) || 1
|
||||||
|
let damageModifier = Number(options.damageModifier)
|
||||||
|
let postArg = ""
|
||||||
|
if (damageModifier && damageModifier !== 0) {
|
||||||
|
postArg = (damageModifier > 0) ? `kh${numDice}` : `kl${numDice}`
|
||||||
|
numDice += Math.abs(damageModifier)
|
||||||
|
}
|
||||||
|
return `${numDice}d6${postArg} + ${mod}`
|
||||||
|
})
|
||||||
|
diceFormula = damageFormula
|
||||||
} else {
|
} else {
|
||||||
diceFormula += `kl2 + ${mod}`
|
diceFormula = `${2 + Math.abs(options.finalModifier)}D6`
|
||||||
|
if (options.finalModifier > 0) {
|
||||||
|
diceFormula += `kh2 + ${mod}`
|
||||||
|
} else {
|
||||||
|
diceFormula += `kl2 + ${mod}`
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("FTLNomadRoll | Rolling ", diceFormula, options, rollData)
|
console.log("FTLNomadRoll | Rolling ", diceFormula, options, rollData)
|
||||||
|
|||||||
@@ -11,4 +11,4 @@ export { default as FTLNomadImplant } from "./implant.mjs"
|
|||||||
export { default as FTLNomadStarship } from "./starship.mjs"
|
export { default as FTLNomadStarship } from "./starship.mjs"
|
||||||
export { default as FTLNomadCreatureTrait } from "./creature-trait.mjs"
|
export { default as FTLNomadCreatureTrait } from "./creature-trait.mjs"
|
||||||
export { default as FTLNomadCreatureAbility } from "./creature-ability.mjs"
|
export { default as FTLNomadCreatureAbility } from "./creature-ability.mjs"
|
||||||
|
export { default as FTLNomadRobot } from "./robot.mjs"
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
|||||||
schema.health = new fields.SchemaField({
|
schema.health = new fields.SchemaField({
|
||||||
staminaValue: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
staminaValue: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
staminaMax: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
staminaMax: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
wounds: new fields.NumberField({ ...requiredInteger, initial:0, min: 0 }),
|
wounds: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
triageResults: new fields.StringField({ required: true, nullable: false, initial: "none", choices: SYSTEM.TRIAGE_RESULTS })
|
triageResults: new fields.StringField({ required: true, nullable: false, initial: "none", choices: SYSTEM.TRIAGE_RESULTS })
|
||||||
})
|
})
|
||||||
|
|
||||||
schema.enc = new fields.SchemaField({
|
schema.enc = new fields.SchemaField({
|
||||||
@@ -76,18 +76,18 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
|||||||
|
|
||||||
prepareDerivedData() {
|
prepareDerivedData() {
|
||||||
super.prepareDerivedData();
|
super.prepareDerivedData();
|
||||||
|
|
||||||
let encMax = 10 + (2*this.skills.physical.value)
|
let encMax = 10 + (2 * this.skills.physical.value)
|
||||||
if (encMax !== this.enc.max) {
|
if (encMax !== this.enc.max) {
|
||||||
this.enc.max = encMax
|
this.enc.max = encMax
|
||||||
}
|
}
|
||||||
let enc = 0
|
let enc = 0
|
||||||
let armor = 0
|
let armor = 0
|
||||||
for (let i of this.parent.items) {
|
for (let i of this.parent.items) {
|
||||||
if (i.system?.enc) {
|
if (i.system?.enc) {
|
||||||
enc += i.system.enc
|
enc += i.system.enc
|
||||||
}
|
}
|
||||||
if ( i.system?.protection) {
|
if (i.system?.protection) {
|
||||||
armor += i.system.protection
|
armor += i.system.protection
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -97,12 +97,12 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
|||||||
if (armor !== this.armor.value) {
|
if (armor !== this.armor.value) {
|
||||||
this.armor.value = armor
|
this.armor.value = armor
|
||||||
}
|
}
|
||||||
let staminaMax = 14 + (3*this.skills.physical.value)
|
let staminaMax = 14 + (3 * this.skills.physical.value)
|
||||||
if (staminaMax !== this.health.staminaMax) {
|
if (staminaMax !== this.health.staminaMax) {
|
||||||
this.health.staminaMax = staminaMax
|
this.health.staminaMax = staminaMax
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
isEncumbered() {
|
isEncumbered() {
|
||||||
return this.enc.value > this.enc.max
|
return this.enc.value > this.enc.max
|
||||||
}
|
}
|
||||||
|
|||||||
96
module/models/robot.mjs
Normal file
96
module/models/robot.mjs
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
import { SYSTEM } from "../config/system.mjs"
|
||||||
|
import FTLNomadRoll from "../documents/roll.mjs"
|
||||||
|
|
||||||
|
export default class FTLNomadRobot extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields
|
||||||
|
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||||
|
const schema = {}
|
||||||
|
|
||||||
|
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.name = new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||||
|
|
||||||
|
schema.techAge = new fields.StringField({ required: true, choices: SYSTEM.TECH_AGES, initial: "lateatomic" })
|
||||||
|
schema.robotSize = new fields.StringField({ required: true, choices: SYSTEM.ROBOT_SIZES, initial: "medium" })
|
||||||
|
schema.durability = new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 })
|
||||||
|
schema.protection = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||||
|
schema.brain = new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||||
|
schema.speed = new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||||
|
|
||||||
|
// Carac
|
||||||
|
const skillField = (label) => {
|
||||||
|
const schema = {
|
||||||
|
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }),
|
||||||
|
label: new fields.StringField({ required: true, nullable: false, initial: label })
|
||||||
|
}
|
||||||
|
return new fields.SchemaField(schema, { label })
|
||||||
|
}
|
||||||
|
|
||||||
|
schema.skills = new fields.SchemaField(
|
||||||
|
Object.values(SYSTEM.SKILLS).reduce((obj, characteristic) => {
|
||||||
|
obj[characteristic.id] = skillField(characteristic.label)
|
||||||
|
return obj
|
||||||
|
}, {}),
|
||||||
|
)
|
||||||
|
|
||||||
|
schema.enc = new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||||
|
})
|
||||||
|
|
||||||
|
schema.cost = new fields.StringField({ required: true, initial: "0" })
|
||||||
|
|
||||||
|
return schema
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
static LOCALIZATION_PREFIXES = ["FTLNOMAD.Robot"]
|
||||||
|
|
||||||
|
prepareDerivedData() {
|
||||||
|
super.prepareDerivedData();
|
||||||
|
let encMax = this.durability + (2 * this.skills.physical.value)
|
||||||
|
if (encMax !== this.enc.max) {
|
||||||
|
this.enc.max = encMax
|
||||||
|
}
|
||||||
|
let enc = 0
|
||||||
|
for (let i of this.parent.items) {
|
||||||
|
if (i.system?.enc) {
|
||||||
|
enc += i.system.enc
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (enc !== this.enc.value) {
|
||||||
|
this.enc.value = enc
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
isEncumbered() {
|
||||||
|
return this.enc.value > this.enc.max
|
||||||
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
|
/**
|
||||||
|
* Rolls a dice for a character.
|
||||||
|
* @param {("save"|"resource|damage")} rollType The type of the roll.
|
||||||
|
* @param {number} rollItem The target value for the roll. Which caracteristic or resource. If the roll is a damage roll, this is the id of the item.
|
||||||
|
* @returns {Promise<null>} - A promise that resolves to null if the roll is cancelled.
|
||||||
|
*/
|
||||||
|
async roll(rollType, rollItem) {
|
||||||
|
let opponentTarget
|
||||||
|
const hasTarget = opponentTarget !== undefined
|
||||||
|
|
||||||
|
let roll = await FTLNomadRoll.prompt({
|
||||||
|
rollType,
|
||||||
|
rollItem,
|
||||||
|
actorId: this.parent.id,
|
||||||
|
actorName: this.parent.name,
|
||||||
|
actorImage: this.parent.img,
|
||||||
|
isEncumbered: this.isEncumbered(),
|
||||||
|
hasTarget,
|
||||||
|
target: opponentTarget
|
||||||
|
})
|
||||||
|
if (!roll) return null
|
||||||
|
|
||||||
|
await roll.toMessage({}, { rollMode: roll.options.rollMode })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,9 +15,10 @@ export default class FTLNomadStarship extends foundry.abstract.TypeDataModel {
|
|||||||
schema.cargo = new fields.StringField({ required: true, initial: "" })
|
schema.cargo = new fields.StringField({ required: true, initial: "" })
|
||||||
schema.guns = new fields.StringField({ required: true, initial: "1d6" })
|
schema.guns = new fields.StringField({ required: true, initial: "1d6" })
|
||||||
schema.travelMultiplier = new fields.StringField({ required: true, initial: "" })
|
schema.travelMultiplier = new fields.StringField({ required: true, initial: "" })
|
||||||
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
schema.cost = new fields.StringField({ required: true, initial: "0" })
|
||||||
schema.monthlyCost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
schema.monthlyCost = new fields.StringField({ required: true, initial: "0" })
|
||||||
schema.damages = new fields.StringField({ required: true, initial: "" })
|
schema.damages = new fields.StringField({ required: true, initial: "" })
|
||||||
|
schema.techAge = new fields.StringField({ required: true, choices: SYSTEM.TECH_AGES, initial: "lateatomic" })
|
||||||
|
|
||||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
schema.modifications = new fields.HTMLField({ required: true, textSearch: true })
|
schema.modifications = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ export default class FTLNomadVehicle extends foundry.abstract.TypeDataModel {
|
|||||||
schema.force = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 })
|
schema.force = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 })
|
||||||
schema.range = new fields.StringField({ required: true, initial: "1d6" })
|
schema.range = new fields.StringField({ required: true, initial: "1d6" })
|
||||||
schema.speed = new fields.StringField({ required: true, initial: "1d6" })
|
schema.speed = new fields.StringField({ required: true, initial: "1d6" })
|
||||||
schema.techAge = new fields.StringField({ required: true, initial: "1d6" })
|
schema.techAge = new fields.StringField({ required: true, choices: SYSTEM.TECH_AGES, initial: "lateatomic" })
|
||||||
schema.tonnage = new fields.StringField({ required: true, initial: "" })
|
schema.tonnage = new fields.StringField({ required: true, initial: "" })
|
||||||
schema.damages = new fields.StringField({ required: true, initial: "" })
|
schema.damages = new fields.StringField({ required: true, initial: "" })
|
||||||
|
|
||||||
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
schema.cost = new fields.StringField({ required: true, initial: "0" })
|
||||||
|
|
||||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ export default class FTLNomadWeapon extends foundry.abstract.TypeDataModel {
|
|||||||
|
|
||||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
|
||||||
schema.techAge = new fields.StringField({ required: true, choices: SYSTEM.TECH_AGES, initial : "lateatomic" })
|
schema.techAge = new fields.StringField({ required: true, choices: SYSTEM.TECH_AGES, initial: "lateatomic" })
|
||||||
schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPES })
|
schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPES })
|
||||||
schema.rangeType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_RANGE })
|
schema.rangeType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_RANGE })
|
||||||
|
|
||||||
schema.damage = new fields.StringField({required: true, initial: "1d6"})
|
schema.damage = new fields.StringField({ required: true, initial: "1d6" })
|
||||||
schema.magazine = new fields.NumberField({ required: true, initial: 1, min: 0 })
|
schema.magazine = new fields.NumberField({ required: true, initial: 1, min: 0 })
|
||||||
|
|
||||||
schema.range = new fields.SchemaField({
|
schema.range = new fields.SchemaField({
|
||||||
close: new fields.NumberField({ ...requiredInteger, initial: 0 }),
|
close: new fields.NumberField({ ...requiredInteger, initial: 0 }),
|
||||||
near: new fields.NumberField({ ...requiredInteger, initial: 0 }),
|
near: new fields.NumberField({ ...requiredInteger, initial: 0 }),
|
||||||
far: new fields.NumberField({ ...requiredInteger, initial: 0 }),
|
far: new fields.NumberField({ ...requiredInteger, initial: 0 }),
|
||||||
@@ -23,7 +23,7 @@ export default class FTLNomadWeapon extends foundry.abstract.TypeDataModel {
|
|||||||
})
|
})
|
||||||
|
|
||||||
schema.enc = new fields.NumberField({ required: true, initial: 1, min: 0 })
|
schema.enc = new fields.NumberField({ required: true, initial: 1, min: 0 })
|
||||||
schema.aspect = new fields.StringField({ required: true, initial: ""})
|
schema.aspect = new fields.StringField({ required: true, initial: "" })
|
||||||
|
|
||||||
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||||
schema.ammoCost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
schema.ammoCost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||||
|
|||||||
Binary file not shown.
BIN
packs/ftl-nomad-items/000090.ldb
Normal file
BIN
packs/ftl-nomad-items/000090.ldb
Normal file
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000046
|
MANIFEST-000099
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
2025/08/25-21:48:36.909732 7f99c9ffb6c0 Delete type=3 #1
|
2025/10/18-17:56:08.077097 7f7b75bfa6c0 Recovering log #97
|
||||||
2025/08/25-21:56:45.440471 7f99c8ff96c0 Level-0 table #49: started
|
2025/10/18-17:56:08.086491 7f7b75bfa6c0 Delete type=3 #95
|
||||||
2025/08/25-21:56:45.440527 7f99c8ff96c0 Level-0 table #49: 0 bytes OK
|
2025/10/18-17:56:08.086541 7f7b75bfa6c0 Delete type=0 #97
|
||||||
2025/08/25-21:56:45.504826 7f99c8ff96c0 Delete type=0 #47
|
2025/10/18-18:03:15.510704 7f7b6f3ff6c0 Level-0 table #102: started
|
||||||
2025/08/25-21:56:45.558056 7f99c8ff96c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at '!items!zv9dwgL3p7ThQn7j' @ 385 : 1
|
2025/10/18-18:03:15.510749 7f7b6f3ff6c0 Level-0 table #102: 0 bytes OK
|
||||||
2025/08/25-21:56:45.558080 7f99c8ff96c0 Compacting 1@0 + 0@1 files
|
2025/10/18-18:03:15.548325 7f7b6f3ff6c0 Delete type=0 #100
|
||||||
2025/08/25-21:56:45.590210 7f99c8ff96c0 Generated table #50@0: 285 keys, 111653 bytes
|
2025/10/18-18:03:15.624002 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)
|
||||||
2025/08/25-21:56:45.590298 7f99c8ff96c0 Compacted 1@0 + 0@1 files => 111653 bytes
|
|
||||||
2025/08/25-21:56:45.648076 7f99c8ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
|
||||||
2025/08/25-21:56:45.648259 7f99c8ff96c0 Delete type=2 #44
|
|
||||||
2025/08/25-21:56:45.801444 7f99c8ff96c0 Manual compaction at level-0 from '!items!zv9dwgL3p7ThQn7j' @ 385 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)
|
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
2025/08/25-21:48:36.813932 7f99c9ffb6c0 Log #42: 0 ops saved to Table #45 OK
|
2025/10/16-19:48:48.571698 7f18a4ffa6c0 Recovering log #93
|
||||||
2025/08/25-21:48:36.814091 7f99c9ffb6c0 Archiving /home/morr/foundry/foundrydata-v13/Data/systems/fvtt-ftl-nomad/packs/ftl-nomad-items/000042.log: OK
|
2025/10/16-19:48:48.582163 7f18a4ffa6c0 Delete type=3 #91
|
||||||
2025/08/25-21:48:36.814401 7f99c9ffb6c0 Table #44: 285 entries OK
|
2025/10/16-19:48:48.582233 7f18a4ffa6c0 Delete type=0 #93
|
||||||
2025/08/25-21:48:36.843347 7f99c9ffb6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v13/Data/systems/fvtt-ftl-nomad/packs/ftl-nomad-items; recovered 1 files; 111653 bytes. Some data may have been lost. ****
|
2025/10/16-19:50:49.674486 7f189e7fc6c0 Level-0 table #98: started
|
||||||
|
2025/10/16-19:50:49.674520 7f189e7fc6c0 Level-0 table #98: 0 bytes OK
|
||||||
|
2025/10/16-19:50:49.681475 7f189e7fc6c0 Delete type=0 #96
|
||||||
|
2025/10/16-19:50:49.691929 7f189e7fc6c0 Manual compaction at level-0 from '!folders!AuBtSOj1mJmh88qx' @ 72057594037927935 : 1 .. '!items!zv9dwgL3p7ThQn7j' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
BIN
packs/ftl-nomad-items/MANIFEST-000099
Normal file
BIN
packs/ftl-nomad-items/MANIFEST-000099
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/ftl-nomad-vehicles/000068.ldb
Normal file
BIN
packs/ftl-nomad-vehicles/000068.ldb
Normal file
Binary file not shown.
0
packs/ftl-nomad-vehicles/000079.log
Normal file
0
packs/ftl-nomad-vehicles/000079.log
Normal file
@@ -1 +1 @@
|
|||||||
MANIFEST-000024
|
MANIFEST-000077
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
2025/08/25-21:48:36.994202 7f99ca7fc6c0 Delete type=3 #1
|
2025/10/18-17:56:08.089616 7f7b6ffff6c0 Recovering log #75
|
||||||
2025/08/25-21:56:45.505125 7f99c8ff96c0 Level-0 table #27: started
|
2025/10/18-17:56:08.099835 7f7b6ffff6c0 Delete type=3 #73
|
||||||
2025/08/25-21:56:45.505238 7f99c8ff96c0 Level-0 table #27: 0 bytes OK
|
2025/10/18-17:56:08.099933 7f7b6ffff6c0 Delete type=0 #75
|
||||||
2025/08/25-21:56:45.557727 7f99c8ff96c0 Delete type=0 #25
|
2025/10/18-18:03:15.586602 7f7b6f3ff6c0 Level-0 table #80: started
|
||||||
2025/08/25-21:56:45.648499 7f99c8ff96c0 Manual compaction at level-0 from '!actors!3pydTJsM73Z4o0V6' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at '!folders!vRnrOJqSMlxbSgyX' @ 92 : 1
|
2025/10/18-18:03:15.586654 7f7b6f3ff6c0 Level-0 table #80: 0 bytes OK
|
||||||
2025/08/25-21:56:45.648514 7f99c8ff96c0 Compacting 1@0 + 0@1 files
|
2025/10/18-18:03:15.623769 7f7b6f3ff6c0 Delete type=0 #78
|
||||||
2025/08/25-21:56:45.676577 7f99c8ff96c0 Generated table #28@0: 51 keys, 49087 bytes
|
2025/10/18-18:03:15.624032 7f7b6f3ff6c0 Manual compaction at level-0 from '!actors!0FQ6XaRi24OorI21' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)
|
||||||
2025/08/25-21:56:45.676616 7f99c8ff96c0 Compacted 1@0 + 0@1 files => 49087 bytes
|
|
||||||
2025/08/25-21:56:45.736809 7f99c8ff96c0 compacted to: files[ 0 1 0 0 0 0 0 ]
|
|
||||||
2025/08/25-21:56:45.736931 7f99c8ff96c0 Delete type=2 #22
|
|
||||||
2025/08/25-21:56:45.801488 7f99c8ff96c0 Manual compaction at level-0 from '!folders!vRnrOJqSMlxbSgyX' @ 92 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)
|
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
2025/08/25-21:48:36.915000 7f99ca7fc6c0 Log #20: 0 ops saved to Table #23 OK
|
2025/10/16-19:48:48.588685 7f189f7fe6c0 Recovering log #71
|
||||||
2025/08/25-21:48:36.915188 7f99ca7fc6c0 Archiving /home/morr/foundry/foundrydata-v13/Data/systems/fvtt-ftl-nomad/packs/ftl-nomad-vehicles/000020.log: OK
|
2025/10/16-19:48:48.599841 7f189f7fe6c0 Delete type=3 #69
|
||||||
2025/08/25-21:48:36.915342 7f99ca7fc6c0 Table #22: 51 entries OK
|
2025/10/16-19:48:48.599924 7f189f7fe6c0 Delete type=0 #71
|
||||||
2025/08/25-21:48:36.932577 7f99ca7fc6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-v13/Data/systems/fvtt-ftl-nomad/packs/ftl-nomad-vehicles; recovered 1 files; 49087 bytes. Some data may have been lost. ****
|
2025/10/16-19:50:49.586198 7f189e7fc6c0 Level-0 table #76: started
|
||||||
|
2025/10/16-19:50:49.586239 7f189e7fc6c0 Level-0 table #76: 0 bytes OK
|
||||||
|
2025/10/16-19:50:49.598518 7f189e7fc6c0 Delete type=0 #74
|
||||||
|
2025/10/16-19:50:49.610365 7f189e7fc6c0 Manual compaction at level-0 from '!actors!0FQ6XaRi24OorI21' @ 72057594037927935 : 1 .. '!folders!vRnrOJqSMlxbSgyX' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
BIN
packs/ftl-nomad-vehicles/MANIFEST-000077
Normal file
BIN
packs/ftl-nomad-vehicles/MANIFEST-000077
Normal file
Binary file not shown.
0
packs/ftl-nomad-vehicles/lost/000043.log
Normal file
0
packs/ftl-nomad-vehicles/lost/000043.log
Normal file
@@ -123,23 +123,27 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.encumbrance {
|
.encumbrance {
|
||||||
display: grid;
|
display: flex;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
.form-group {
|
.form-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
label {
|
label {
|
||||||
min-width: 4rem;
|
min-width: 3rem;
|
||||||
max-width: 4rem;
|
max-width: 3rem;
|
||||||
}
|
}
|
||||||
input {
|
input {
|
||||||
max-width: 3rem;
|
max-width: 3rem;
|
||||||
min-width: 3rem;
|
min-width: 3rem;
|
||||||
}
|
}
|
||||||
|
.character-credit {
|
||||||
|
input {
|
||||||
|
max-width: 9rem;
|
||||||
|
min-width: 9rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.character-name {
|
.character-name {
|
||||||
@@ -219,10 +223,10 @@
|
|||||||
.character-biography {
|
.character-biography {
|
||||||
background-color: var(--color-light-1);
|
background-color: var(--color-light-1);
|
||||||
prose-mirror.inactive {
|
prose-mirror.inactive {
|
||||||
min-height: 40px;
|
min-height: 16rem;
|
||||||
}
|
}
|
||||||
prose-mirror.active {
|
prose-mirror.active {
|
||||||
min-height: 150px;
|
min-height: 16rem;
|
||||||
}
|
}
|
||||||
.field-label {
|
.field-label {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
|
|||||||
@@ -201,6 +201,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.section-editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
.editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.editor-content {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.biodata {
|
.biodata {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
@import "mixins.less";
|
@import "mixins.less";
|
||||||
@import "character.less";
|
@import "character.less";
|
||||||
@import "vehicle.less";
|
@import "vehicle.less";
|
||||||
|
@import "robot.less";
|
||||||
@import "starship.less";
|
@import "starship.less";
|
||||||
@import "creature.less";
|
@import "creature.less";
|
||||||
@import "weapon.less";
|
@import "weapon.less";
|
||||||
|
|||||||
@@ -61,7 +61,6 @@
|
|||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.vehicle-sheet-common {
|
.vehicle-sheet-common {
|
||||||
@@ -103,6 +102,27 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.robot-sheet-common {
|
||||||
|
label {
|
||||||
|
font-family: var(--font-secondary);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
|
}
|
||||||
|
.form-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
|
||||||
|
label {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 8px;
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.creature-sheet-common {
|
.creature-sheet-common {
|
||||||
label {
|
label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
|
|||||||
339
styles/robot.less
Normal file
339
styles/robot.less
Normal file
@@ -0,0 +1,339 @@
|
|||||||
|
.robot-content {
|
||||||
|
.sheet-common();
|
||||||
|
.robot-sheet-common();
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sheet-tabs {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-main {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.robot-pc {
|
||||||
|
display: flex;
|
||||||
|
gap: 4px;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.robot-left {
|
||||||
|
min-width: 180px;
|
||||||
|
max-width: 180px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.robot-left-image {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
.robot-img {
|
||||||
|
height: 140px;
|
||||||
|
width: auto;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-cost {
|
||||||
|
label {
|
||||||
|
min-width: 3rem;
|
||||||
|
max-width: 3rem;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
min-width: 6rem;
|
||||||
|
max-width: 6rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-right {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 5px;
|
||||||
|
|
||||||
|
.robot-name {
|
||||||
|
display: flex;
|
||||||
|
input {
|
||||||
|
font-family: var(--font-title);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
width: 380px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-brain {
|
||||||
|
min-width: 25rem;
|
||||||
|
max-width: 25rem;
|
||||||
|
textarea {
|
||||||
|
min-width: 23rem;
|
||||||
|
max-width: 23rem;
|
||||||
|
background-color: rgba(0, 0, 0, 0.2);
|
||||||
|
color: var(--color-dark-3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-stats {
|
||||||
|
min-width: 25rem;
|
||||||
|
max-width: 25rem;
|
||||||
|
.encumbered {
|
||||||
|
color: red;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cargo,
|
||||||
|
.capacity {
|
||||||
|
label {
|
||||||
|
min-width: 4rem;
|
||||||
|
max-width: 4rem;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
max-width: 6rem;
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
}
|
||||||
|
.cargo-content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-infos {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 4px;
|
||||||
|
|
||||||
|
label {
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-hp {
|
||||||
|
display: flex;
|
||||||
|
gap: 2px;
|
||||||
|
align-items: center;
|
||||||
|
.robot-hp-value {
|
||||||
|
.form-fields input {
|
||||||
|
flex: none;
|
||||||
|
width: 50px;
|
||||||
|
margin-left: 4px;
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.robot-hp-max {
|
||||||
|
clear: both;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin: 3px 0;
|
||||||
|
align-items: center;
|
||||||
|
input {
|
||||||
|
width: 50px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.hp-separator {
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-skills {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 5px;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.robot-skill {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
.icon-skill {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.rollable {
|
||||||
|
min-width: 4.5rem;
|
||||||
|
max-width: 4.5rem;
|
||||||
|
}
|
||||||
|
.char-text {
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
}
|
||||||
|
.d100 {
|
||||||
|
flex: 0;
|
||||||
|
max-width: 0.6rem;
|
||||||
|
}
|
||||||
|
.form-group {
|
||||||
|
flex: 0;
|
||||||
|
padding-left: 5px;
|
||||||
|
.form-fields {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
flex: none;
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-skill-play {
|
||||||
|
min-width: 225px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-skill-edit {
|
||||||
|
min-width: 225px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-pc-play {
|
||||||
|
min-width: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-pc-edit {
|
||||||
|
min-width: 500px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.robot-description {
|
||||||
|
.text-center {
|
||||||
|
text-align: left;
|
||||||
|
align-content: center;
|
||||||
|
}
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
prose-mirror.inactive {
|
||||||
|
min-height: 40px;
|
||||||
|
}
|
||||||
|
prose-mirror.active {
|
||||||
|
min-height: 150px;
|
||||||
|
}
|
||||||
|
.field-label {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
.robot-brain {
|
||||||
|
input {
|
||||||
|
min-width: 32rem;
|
||||||
|
max-width: 32rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.section-editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
.editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.editor-content {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.biodata {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 8px;
|
||||||
|
label {
|
||||||
|
min-width: 3rem;
|
||||||
|
}
|
||||||
|
.feature {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
min-width: 18rem;
|
||||||
|
max-width: 18rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab.robot-equipment .main-div {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
legend {
|
||||||
|
a {
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.weapons {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.weapon {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
min-width: 13rem;
|
||||||
|
max-width: 13srem;
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.controls {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
|
}
|
||||||
|
.damage {
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
min-width: 8rem;
|
||||||
|
max-width: 8rem;
|
||||||
|
}
|
||||||
|
.item-img {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.equipments {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.equipment {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
min-width: 13rem;
|
||||||
|
max-width: 13srem;
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.controls {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
|
}
|
||||||
|
.damage {
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
min-width: 8rem;
|
||||||
|
max-width: 8rem;
|
||||||
|
}
|
||||||
|
.item-img {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
prose-mirror.inactive {
|
||||||
|
min-height: 40px;
|
||||||
|
}
|
||||||
|
prose-mirror.active {
|
||||||
|
min-height: 150px;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -42,7 +42,6 @@
|
|||||||
max-width: 4rem;
|
max-width: 4rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.starship-right {
|
.starship-right {
|
||||||
@@ -69,6 +68,12 @@
|
|||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
.hull-field {
|
||||||
|
select {
|
||||||
|
min-width: 10rem;
|
||||||
|
max-width: 10rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
label {
|
label {
|
||||||
margin-left: 0.2rem;
|
margin-left: 0.2rem;
|
||||||
max-width: 7rem;
|
max-width: 7rem;
|
||||||
@@ -79,6 +84,11 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
|
.starship-guns-label {
|
||||||
|
min-width: 7.4rem;
|
||||||
|
max-width: 7.4rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
input {
|
input {
|
||||||
max-width: 5rem;
|
max-width: 5rem;
|
||||||
@@ -99,10 +109,8 @@
|
|||||||
select {
|
select {
|
||||||
max-width: 5rem;
|
max-width: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.starship-infos {
|
.starship-infos {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -169,23 +177,31 @@
|
|||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.section-editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
.editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.editor-content {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.biodata {
|
.biodata {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
label {
|
label {
|
||||||
min-width: 3.0rem;
|
min-width: 3rem;
|
||||||
}
|
}
|
||||||
.feature {
|
.feature {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 18rem;
|
min-width: 18rem;
|
||||||
max-width: 18rem;
|
max-width: 18rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab.starship-equipment {
|
.tab.starship-equipment {
|
||||||
|
|||||||
@@ -33,7 +33,6 @@
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.vehicle-right {
|
.vehicle-right {
|
||||||
@@ -137,23 +136,31 @@
|
|||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.section-editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
.editor {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
.editor-content {
|
||||||
|
min-height: 10rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.biodata {
|
.biodata {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
label {
|
label {
|
||||||
min-width: 3.0rem;
|
min-width: 3rem;
|
||||||
}
|
}
|
||||||
.feature {
|
.feature {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 18rem;
|
min-width: 18rem;
|
||||||
max-width: 18rem;
|
max-width: 18rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab.vehicle-equipment .main-div {
|
.tab.vehicle-equipment .main-div {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"id": "fvtt-ftl-nomad",
|
"id": "fvtt-ftl-nomad",
|
||||||
"title": "Faster Than Light : Nomad",
|
"title": "Faster Than Light : Nomad",
|
||||||
"description": "Faster Than Light : Nomad is a system for Foundry VTT, based on the FTL system. It is a system for playing in a universe of space opera, where the players are the crew of a spaceship, traveling from planet to planet, from system to system, in search of adventure and fortune.",
|
"description": "Faster Than Light : Nomad is a system for Foundry VTT, based on the FTL system. It is a system for playing in a universe of space opera, where the players are the crew of a spaceship, traveling from planet to planet, from system to system, in search of adventure and fortune.",
|
||||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-ftl-nomad/raw/branch/main/system.json",
|
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-ftl-nomad/releases/download/latest/system.json",
|
||||||
"download": "#{DOWNLOAD}#",
|
"download": "#{DOWNLOAD}#",
|
||||||
"url": "https://www.uberwald.me/gitea/public/fvtt-ftl-nomad",
|
"url": "https://www.uberwald.me/gitea/public/fvtt-ftl-nomad",
|
||||||
"license": "LICENSE",
|
"license": "LICENSE",
|
||||||
@@ -37,7 +37,8 @@
|
|||||||
"character": { "htmlFields": ["description", "notes"] },
|
"character": { "htmlFields": ["description", "notes"] },
|
||||||
"creature": { "htmlFields": ["description", "notes"] },
|
"creature": { "htmlFields": ["description", "notes"] },
|
||||||
"vehicle": { "htmlFields": ["description", "notes"] },
|
"vehicle": { "htmlFields": ["description", "notes"] },
|
||||||
"starship": { "htmlFields": ["description", "notes"] }
|
"starship": { "htmlFields": ["description", "notes"] },
|
||||||
|
"robot": { "htmlFields": ["description", "notes"] }
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"talent": { "htmlFields": ["description"] },
|
"talent": { "htmlFields": ["description"] },
|
||||||
|
|||||||
@@ -23,12 +23,12 @@
|
|||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.description"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.description"}}</legend>
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true class="character-description"}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
||||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true class="character-notes"}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -1,109 +1,265 @@
|
|||||||
<section class="character-main character-main-{{ifThen isPlayMode 'play' 'edit'}}">
|
<section
|
||||||
|
class="character-main character-main-{{ifThen isPlayMode 'play' 'edit'}}"
|
||||||
|
>
|
||||||
{{!log "character-main" this}}
|
{{!log "character-main" this}}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.character"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.character"}}</legend>
|
||||||
<div class="character-pc character-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
<div class="character-pc character-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
<div class="character-left">
|
<div class="character-left">
|
||||||
<div class="character-left-image">
|
<div class="character-left-image">
|
||||||
<img class="character-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
<img
|
||||||
data-tooltip="{{actor.name}}" />
|
class="character-img"
|
||||||
|
src="{{actor.img}}"
|
||||||
|
data-edit="img"
|
||||||
|
data-action="editImage"
|
||||||
|
data-tooltip="{{actor.name}}"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<fieldset class="character-hp">
|
<fieldset class="character-hp">
|
||||||
<legend>{{localize "FTLNOMAD.Label.Stamina"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.Stamina"}}</legend>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
{{formField systemFields.health.fields.staminaValue value=system.health.staminaValue}}
|
{{formField
|
||||||
{{formField systemFields.health.fields.staminaMax value=system.health.staminaMax rootId=partId disabled=true}}
|
systemFields.health.fields.staminaValue
|
||||||
|
value=system.health.staminaValue
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.health.fields.staminaMax
|
||||||
|
value=system.health.staminaMax
|
||||||
|
rootId=partId
|
||||||
|
disabled=true
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
{{formField systemFields.health.fields.wounds value=system.health.wounds }}
|
{{formField
|
||||||
|
systemFields.health.fields.wounds
|
||||||
|
value=system.health.wounds
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="character-right">
|
<div class="character-right">
|
||||||
<div class="character-name">
|
<div class="character-name">
|
||||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
{{formInput
|
||||||
<a class="control" data-action="toggleSheet" data-tooltip="FTLNOMAD.ToggleSheet" data-tooltip-direction="UP">
|
fields.name
|
||||||
|
value=source.name
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
<a
|
||||||
|
class="control"
|
||||||
|
data-action="toggleSheet"
|
||||||
|
data-tooltip="FTLNOMAD.ToggleSheet"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
>
|
||||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="character-spec">
|
<fieldset class="character-spec">
|
||||||
{{formField systemFields.concept value=system.concept rootId=partId disabled=isPlayMode}}
|
{{formField
|
||||||
{{formField systemFields.species value=system.species rootId=partId disabled=isPlayMode}}
|
systemFields.concept
|
||||||
{{formField systemFields.archetype value=system.archetype rootId=partId disabled=isPlayMode}}
|
value=system.concept
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.species
|
||||||
|
value=system.species
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.archetype
|
||||||
|
value=system.archetype
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
<div class="hero-armor">
|
<div class="hero-armor">
|
||||||
{{formField systemFields.heroPoints value=system.heroPoints rootId=partId }}
|
{{formField
|
||||||
{{formField systemFields.armor.fields.value value=system.armor.value rootId=partId disabled=isPlayMode}}
|
systemFields.heroPoints
|
||||||
|
value=system.heroPoints
|
||||||
|
rootId=partId
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.armor.fields.value
|
||||||
|
value=system.armor.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="encumbrance">
|
<fieldset class="encumbrance">
|
||||||
{{#if isEncumbered}}
|
{{#if isEncumbered}}
|
||||||
{{formField systemFields.enc.fields.value value=system.enc.value rootId=partId disabled=true classes="encumbered"}}
|
{{formField
|
||||||
{{else }}
|
systemFields.enc.fields.value
|
||||||
{{formField systemFields.enc.fields.value value=system.enc.value rootId=partId disabled=true}}
|
value=system.enc.value
|
||||||
{{/if}}
|
rootId=partId
|
||||||
{{formField systemFields.enc.fields.max value=system.enc.max rootId=partId disabled=isPlayMode}}
|
disabled=true
|
||||||
{{formField systemFields.credits value=system.credits rootId=partId }}
|
classes="encumbered"
|
||||||
</fieldset>
|
}}
|
||||||
|
{{else}}
|
||||||
|
{{formField
|
||||||
|
systemFields.enc.fields.value
|
||||||
|
value=system.enc.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=true
|
||||||
|
}}
|
||||||
|
{{/if}}
|
||||||
|
{{formField
|
||||||
|
systemFields.enc.fields.max
|
||||||
|
value=system.enc.max
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
<span class="character-credit">
|
||||||
|
{{formField
|
||||||
|
systemFields.credits
|
||||||
|
value=system.credits
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="character-skills character-skills-{{ifThen isPlayMode 'play' 'edit'}}">
|
<fieldset
|
||||||
|
class="character-skills character-skills-{{ifThen
|
||||||
|
isPlayMode
|
||||||
|
'play'
|
||||||
|
'edit'
|
||||||
|
}}"
|
||||||
|
>
|
||||||
<legend>{{localize "FTLNOMAD.Label.skills"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.skills"}}</legend>
|
||||||
<div class="character-skill">
|
<div class="character-skill">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_combat.svg" class="icon-skill" />
|
<img
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="combat">{{localize
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_combat.svg"
|
||||||
"FTLNOMAD.Label.combat"}}</label>
|
class="icon-skill"
|
||||||
{{formInput systemFields.skills.fields.combat.fields.value value=system.skills.combat.value rootId=partId disabled=isPlayMode type="number" }}
|
/>
|
||||||
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="combat"
|
||||||
|
>{{localize "FTLNOMAD.Label.combat"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.combat.fields.value
|
||||||
|
value=system.skills.combat.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="character-skill">
|
<div class="character-skill">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_knowledge.svg" class="icon-skill" />
|
<img
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="knowledge">{{localize
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_knowledge.svg"
|
||||||
"FTLNOMAD.Label.knowledge"}}</label>
|
class="icon-skill"
|
||||||
{{formInput systemFields.skills.fields.knowledge.fields.value value=system.skills.knowledge.value
|
/>
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="knowledge"
|
||||||
|
>{{localize "FTLNOMAD.Label.knowledge"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.knowledge.fields.value
|
||||||
|
value=system.skills.knowledge.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="character-skill">
|
<div class="character-skill">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_social.svg" class="icon-skill" />
|
<img
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="social">{{localize
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_social.svg"
|
||||||
"FTLNOMAD.Label.social"}}</label>
|
class="icon-skill"
|
||||||
{{formInput systemFields.skills.fields.social.fields.value value=system.skills.social.value
|
/>
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="social"
|
||||||
|
>{{localize "FTLNOMAD.Label.social"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.social.fields.value
|
||||||
|
value=system.skills.social.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="character-skill">
|
<div class="character-skill">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_physical.svg" class="icon-skill" />
|
<img
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="physical">{{localize
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_physical.svg"
|
||||||
"FTLNOMAD.Label.physical"}}</label>
|
class="icon-skill"
|
||||||
{{formInput systemFields.skills.fields.physical.fields.value value=system.skills.physical.value
|
/>
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="physical"
|
||||||
|
>{{localize "FTLNOMAD.Label.physical"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.physical.fields.value
|
||||||
|
value=system.skills.physical.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="character-skill">
|
<div class="character-skill">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_stealth.svg" class="icon-skill" />
|
<img
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="stealth">{{localize
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_stealth.svg"
|
||||||
"FTLNOMAD.Label.stealth"}}</label>
|
class="icon-skill"
|
||||||
{{formInput systemFields.skills.fields.stealth.fields.value value=system.skills.stealth.value
|
/>
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="stealth"
|
||||||
|
>{{localize "FTLNOMAD.Label.stealth"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.stealth.fields.value
|
||||||
|
value=system.skills.stealth.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="character-skill">
|
<div class="character-skill">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_vehicles.svg" class="icon-skill" />
|
<img
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="vehicles">{{localize
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_vehicles.svg"
|
||||||
"FTLNOMAD.Label.vehicles"}}</label>
|
class="icon-skill"
|
||||||
{{formInput systemFields.skills.fields.vehicles.fields.value value=system.skills.vehicles.value
|
/>
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="vehicles"
|
||||||
|
>{{localize "FTLNOMAD.Label.vehicles"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.vehicles.fields.value
|
||||||
|
value=system.skills.vehicles.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="character-skill">
|
<div class="character-skill">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_technology.svg" class="icon-skill" />
|
<img
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="technology">{{localize
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_technology.svg"
|
||||||
"FTLNOMAD.Label.technology"}}</label>
|
class="icon-skill"
|
||||||
{{formInput systemFields.skills.fields.technology.fields.value value=system.skills.technology.value
|
/>
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="technology"
|
||||||
|
>{{localize "FTLNOMAD.Label.technology"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.technology.fields.value
|
||||||
|
value=system.skills.technology.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
@@ -8,43 +8,44 @@
|
|||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
{{#if (eq rollType "skill")}}
|
{{#if (eq rollType "skill")}}
|
||||||
<li><strong>{{localize "FTLNOMAD.Label.skillRoll"}}</strong></li>
|
<li><strong>{{localize "FTLNOMAD.Label.skillRoll"}}</strong></li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
|
||||||
{{#if (eq rollType "damage")}}
|
{{#if (eq rollType "damage")}}
|
||||||
<li class="result-success">Weapon Damage</li>
|
<li class="result-success">Weapon Damage</li>
|
||||||
<li><strong>{{weapon.name}}</strong></li>
|
<li><strong>{{weapon.name}}</strong></li>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#if weapon}}
|
{{#if weapon}}
|
||||||
<li><strong>Weapon : {{weapon.name}}</strong></li>
|
<li><strong>Weapon : {{weapon.name}}</strong></li>
|
||||||
{{/if}}
|
<li><strong>Aspects : {{weapon.system.aspect}}</strong></li>
|
||||||
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<li><strong>{{localize rollItem.label}} : {{fullFormula}}</strong></li>
|
<li><strong>{{localize rollItem.label}} : {{fullFormula}}</strong></li>
|
||||||
|
|
||||||
{{#if (eq rollType "damage")}}
|
{{#if (eq rollType "damage")}}{{else}}
|
||||||
{{else}}
|
{{#if isEncumbered}}
|
||||||
{{#if isEncumbered}}
|
<li class="red-warning">Encumbered : -1D</li>
|
||||||
<li class="red-warning">Encumbered : -1D</li>
|
{{/if}}
|
||||||
{{/if}}
|
<li>{{localize "FTLNOMAD.Label.modifier"}}
|
||||||
<li>{{localize "FTLNOMAD.Label.modifier"}} : {{skillModifier}}D {{rangeModifier}}D {{numericModifier}}D</li>
|
:
|
||||||
|
{{skillModifier}}D
|
||||||
|
{{rangeModifier}}D
|
||||||
|
{{numericModifier}}D</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if (eq rollType "damage")}}{{else}}
|
||||||
|
{{#if isSuccess}}
|
||||||
|
<li class="result-success">
|
||||||
|
{{localize "FTLNOMAD.Label.success"}}
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if (eq rollType "damage")}}
|
{{#if isFailure}}
|
||||||
{{else}}
|
<li class="result-failure">
|
||||||
{{#if isSuccess}}
|
{{localize "FTLNOMAD.Label.failure"}}
|
||||||
<li class="result-success">
|
</li>
|
||||||
{{localize "FTLNOMAD.Label.success"}}
|
{{/if}}
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if isFailure}}
|
|
||||||
<li class="result-failure">
|
|
||||||
{{localize "FTLNOMAD.Label.failure"}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
@@ -52,18 +53,22 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#if isDamage}}
|
{{#if isDamage}}
|
||||||
<div>
|
<div>
|
||||||
{{#if (and isGM hasTarget)}}
|
{{#if (and isGM hasTarget)}}
|
||||||
{{{localize "FTLNOMAD.Roll.displayArmor" targetName=targetName targetArmor=targetArmor
|
{{{localize
|
||||||
realDamage=realDamage}}}
|
"FTLNOMAD.Roll.displayArmor"
|
||||||
{{/if}}
|
targetName=targetName
|
||||||
</div>
|
targetArmor=targetArmor
|
||||||
|
realDamage=realDamage
|
||||||
|
}}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#unless isPrivate}}
|
{{#unless isPrivate}}
|
||||||
<div class="dice-result">
|
<div class="dice-result">
|
||||||
<h4 class="dice-total">{{total}}</h4>
|
<h4 class="dice-total">{{total}}</h4>
|
||||||
<div class="dice-formula">{{formula}}</div>
|
<div class="dice-formula">{{formula}}</div>
|
||||||
{{{tooltip}}}
|
{{{tooltip}}}
|
||||||
</div>
|
</div>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
</div>
|
</div>
|
||||||
@@ -1,18 +1,33 @@
|
|||||||
<section class="tab creature-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
<section
|
||||||
|
class="tab creature-{{tab.id}} {{tab.cssClass}}"
|
||||||
|
data-tab="{{tab.id}}"
|
||||||
|
data-group="{{tab.group}}"
|
||||||
|
>
|
||||||
|
|
||||||
<div class="main-div">
|
<div class="main-div">
|
||||||
|
|
||||||
<fieldset>
|
<fieldset class="section-editor">
|
||||||
<legend>{{localize "FTLNOMAD.Label.description"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.description"}}</legend>
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description"
|
{{formInput
|
||||||
toggled=true}}
|
systemFields.description
|
||||||
</fieldset>
|
enriched=enrichedDescription
|
||||||
|
value=system.description
|
||||||
|
name="system.description"
|
||||||
|
toggled=true
|
||||||
|
}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset class="section-editor">
|
||||||
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
||||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
{{formInput
|
||||||
</fieldset>
|
systemFields.notes
|
||||||
|
enriched=enrichedNotes
|
||||||
|
value=system.notes
|
||||||
|
name="system.notes"
|
||||||
|
toggled=true
|
||||||
|
}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
53
templates/robot-description.hbs
Normal file
53
templates/robot-description.hbs
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<section
|
||||||
|
class="tab robot-{{tab.id}} {{tab.cssClass}}"
|
||||||
|
data-tab="{{tab.id}}"
|
||||||
|
data-group="{{tab.group}}"
|
||||||
|
>
|
||||||
|
<fieldset>
|
||||||
|
<legend>Tech Age</legend>
|
||||||
|
<div class="flexrow">
|
||||||
|
{{formField
|
||||||
|
systemFields.techAge
|
||||||
|
value=system.techAge
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<!-- <fieldset>
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.damages"}}</legend>
|
||||||
|
<div class="text-center">
|
||||||
|
<textarea
|
||||||
|
class="form-control"
|
||||||
|
cols="64"
|
||||||
|
rows="5"
|
||||||
|
name="system.damages"
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Tooltip.damages'}}"
|
||||||
|
>{{system.damages}}</textarea>
|
||||||
|
</div>
|
||||||
|
</fieldset> -->
|
||||||
|
|
||||||
|
<fieldset class="section-editor">
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.description"}}</legend>
|
||||||
|
{{formInput
|
||||||
|
systemFields.description
|
||||||
|
enriched=enrichedDescription
|
||||||
|
value=system.description
|
||||||
|
name="system.description"
|
||||||
|
toggled=true
|
||||||
|
}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset class="section-editor">
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
||||||
|
{{formInput
|
||||||
|
systemFields.notes
|
||||||
|
enriched=enrichedNotes
|
||||||
|
value=system.notes
|
||||||
|
name="system.notes"
|
||||||
|
toggled=true
|
||||||
|
}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</section>
|
||||||
107
templates/robot-equipment.hbs
Normal file
107
templates/robot-equipment.hbs
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
<section
|
||||||
|
class="tab robot-{{tab.id}} {{tab.cssClass}}"
|
||||||
|
data-tab="{{tab.id}}"
|
||||||
|
data-group="{{tab.group}}"
|
||||||
|
>
|
||||||
|
<div class="main-div">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.weapons"}}{{#if isEditMode}}
|
||||||
|
<a
|
||||||
|
class="action"
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Tooltip.addWeapon'}}"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
><i class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
||||||
|
</legend>
|
||||||
|
<div class="weapons">
|
||||||
|
{{#each weapons as |item|}}
|
||||||
|
{{!log 'weapon' this}}
|
||||||
|
<div
|
||||||
|
class="weapon item"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
data-drag="true"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="item-img"
|
||||||
|
src="{{item.img}}"
|
||||||
|
data-tooltip="{{item.name}}"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="name"
|
||||||
|
data-roll-type="weapon"
|
||||||
|
data-tooltip="{{{item.system.description}}}"
|
||||||
|
>
|
||||||
|
{{item.name}}
|
||||||
|
</div>
|
||||||
|
<a
|
||||||
|
class="damage rollable"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-action="roll"
|
||||||
|
data-roll-type="damage"
|
||||||
|
data-roll-value="{{item.system.damage}}"
|
||||||
|
>{{localize "FTLNOMAD.Label.damageShort"}}
|
||||||
|
:
|
||||||
|
{{item.system.damage}}</a>
|
||||||
|
<div class="controls">
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Edit'}}"
|
||||||
|
data-action="edit"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-edit"></i></a>
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Delete'}}"
|
||||||
|
data-action="delete"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.equipment"}}{{#if isEditMode}}
|
||||||
|
<a
|
||||||
|
class="action"
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Tooltip.addEquipment'}}"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
><i class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
||||||
|
</legend>
|
||||||
|
<div class="equipments">
|
||||||
|
{{#each equipments as |item|}}
|
||||||
|
{{!log 'armor' this}}
|
||||||
|
<div
|
||||||
|
class="equipment"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="item-img"
|
||||||
|
src="{{item.img}}"
|
||||||
|
data-tooltip="{{item.name}}"
|
||||||
|
/>
|
||||||
|
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||||
|
{{item.name}}
|
||||||
|
</div>
|
||||||
|
<div class="controls">
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Edit'}}"
|
||||||
|
data-action="edit"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-edit"></i></a>
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Delete'}}"
|
||||||
|
data-action="delete"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
258
templates/robot-main.hbs
Normal file
258
templates/robot-main.hbs
Normal file
@@ -0,0 +1,258 @@
|
|||||||
|
<section class="robot-main robot-main-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.robot"}}</legend>
|
||||||
|
<div class="robot-pc robot-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
|
|
||||||
|
<div class="robot-left">
|
||||||
|
<div class="robot-left-image">
|
||||||
|
<img
|
||||||
|
class="robot-img"
|
||||||
|
src="{{actor.img}}"
|
||||||
|
data-edit="img"
|
||||||
|
data-action="editImage"
|
||||||
|
data-tooltip="{{actor.name}}"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<fieldset class="robot-cost">
|
||||||
|
<legend>Cost</legend>
|
||||||
|
<div class="flexrow">
|
||||||
|
{{formField
|
||||||
|
systemFields.cost
|
||||||
|
value=system.cost
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="robot-right">
|
||||||
|
<div class="robot-name">
|
||||||
|
{{formInput
|
||||||
|
fields.name
|
||||||
|
value=source.name
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
<a
|
||||||
|
class="control"
|
||||||
|
data-action="toggleSheet"
|
||||||
|
data-tooltip="FTLNOMAD.ToggleSheet"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
>
|
||||||
|
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<fieldset class="main-stats">
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.mainStats"}}</legend>
|
||||||
|
<div class="flexrow">
|
||||||
|
{{formField
|
||||||
|
systemFields.robotSize
|
||||||
|
value=system.robotSize
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{formField
|
||||||
|
systemFields.protection
|
||||||
|
value=system.protection
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
{{formField
|
||||||
|
systemFields.speed
|
||||||
|
value=system.speed
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{formField
|
||||||
|
systemFields.durability
|
||||||
|
value=system.durability
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
{{#if isEncumbered}}
|
||||||
|
{{formField
|
||||||
|
systemFields.enc.fields.value
|
||||||
|
value=system.enc.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=true
|
||||||
|
classes="encumbered"
|
||||||
|
}}
|
||||||
|
{{else}}
|
||||||
|
{{formField
|
||||||
|
systemFields.enc.fields.value
|
||||||
|
value=system.enc.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=true
|
||||||
|
}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{formField
|
||||||
|
systemFields.enc.fields.max
|
||||||
|
value=system.enc.max
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset class="robot-brain">
|
||||||
|
<legend>Brain</legend>
|
||||||
|
<div class="flexrow">
|
||||||
|
<textarea
|
||||||
|
cols="64"
|
||||||
|
rows="2"
|
||||||
|
name="system.brain"
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Tooltip.brain'}}"
|
||||||
|
{{#if isPlayMode}}disabled{{/if}}>{{system.brain}}</textarea>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<fieldset
|
||||||
|
class="robot-skills robot-skills-{{ifThen isPlayMode 'play' 'edit'}}"
|
||||||
|
>
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.skills"}}</legend>
|
||||||
|
<div class="robot-skill">
|
||||||
|
<img
|
||||||
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_combat.svg"
|
||||||
|
class="icon-skill"
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="combat"
|
||||||
|
>{{localize "FTLNOMAD.Label.combat"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.combat.fields.value
|
||||||
|
value=system.skills.combat.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="robot-skill">
|
||||||
|
<img
|
||||||
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_knowledge.svg"
|
||||||
|
class="icon-skill"
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="knowledge"
|
||||||
|
>{{localize "FTLNOMAD.Label.knowledge"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.knowledge.fields.value
|
||||||
|
value=system.skills.knowledge.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="robot-skill">
|
||||||
|
<img
|
||||||
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_social.svg"
|
||||||
|
class="icon-skill"
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="social"
|
||||||
|
>{{localize "FTLNOMAD.Label.social"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.social.fields.value
|
||||||
|
value=system.skills.social.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="robot-skill">
|
||||||
|
<img
|
||||||
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_physical.svg"
|
||||||
|
class="icon-skill"
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="physical"
|
||||||
|
>{{localize "FTLNOMAD.Label.physical"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.physical.fields.value
|
||||||
|
value=system.skills.physical.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="robot-skill">
|
||||||
|
<img
|
||||||
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_stealth.svg"
|
||||||
|
class="icon-skill"
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="stealth"
|
||||||
|
>{{localize "FTLNOMAD.Label.stealth"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.stealth.fields.value
|
||||||
|
value=system.skills.stealth.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="robot-skill">
|
||||||
|
<img
|
||||||
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_vehicles.svg"
|
||||||
|
class="icon-skill"
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="vehicles"
|
||||||
|
>{{localize "FTLNOMAD.Label.vehicles"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.vehicles.fields.value
|
||||||
|
value=system.skills.vehicles.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="robot-skill">
|
||||||
|
<img
|
||||||
|
src="systems/fvtt-ftl-nomad/assets/icons/icon_technology.svg"
|
||||||
|
class="icon-skill"
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
class="rollable"
|
||||||
|
data-roll-type="skill"
|
||||||
|
data-skill-id="technology"
|
||||||
|
>{{localize "FTLNOMAD.Label.technology"}}</label>
|
||||||
|
{{formInput
|
||||||
|
systemFields.skills.fields.technology.fields.value
|
||||||
|
value=system.skills.technology.value
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
type="number"
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</section>
|
||||||
@@ -3,56 +3,117 @@
|
|||||||
<fieldSet>
|
<fieldSet>
|
||||||
|
|
||||||
{{#if (eq rollType "skill")}}
|
{{#if (eq rollType "skill")}}
|
||||||
<legend>{{localize "FTLNOMAD.Label.skill"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.skill"}}</legend>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if (eq rollType "damage")}}
|
{{#if (eq rollType "damage")}}
|
||||||
<div class="dialog-skill">Damage : {{weapon.system.damage}}</div>
|
<div class="dialog-skill">Damage : {{weapon.system.damage}}</div>
|
||||||
<div class="dialog-skill">Weapon : {{weapon.name}}</div>
|
<div class="dialog-skill">Weapon : {{weapon.name}}</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="dialog-skill">{{localize rollItem.label}} : 2d6+{{rollItem.value}}</div>
|
<div class="dialog-skill">{{localize rollItem.label}}
|
||||||
|
: 2d6+{{rollItem.value}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if (eq rollType "weapon")}}
|
{{#if (eq rollType "weapon")}}
|
||||||
<div class="dialog-skill">Weapon : {{weapon.name}}</div>
|
<div class="dialog-skill">Weapon : {{weapon.name}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if isEncumbered}}
|
{{#if isEncumbered}}
|
||||||
<div class="dialog-skill red-warning">Encumbered : -1D</div>
|
<div class="dialog-skill red-warning">Encumbered : -1D</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
|
|
||||||
<fieldSet class="dialog-modifier">
|
<fieldSet class="dialog-modifier">
|
||||||
<legend>{{localize "FTLNOMAD.Label.modifier"}}</legend>
|
|
||||||
|
|
||||||
<select name="modifier" class="roll-skill-modifier">
|
{{#if (eq rollType "damage")}}
|
||||||
{{selectOptions choiceModifier selected=modifier localize=true}}
|
<legend>Damage advantages/disadvantages</legend>
|
||||||
</select>
|
<select name="damageModifier" class="roll-damage-modifier">
|
||||||
|
{{selectOptions
|
||||||
|
choiceDamageModifier
|
||||||
|
selected=damageModifier
|
||||||
|
localize=true
|
||||||
|
}}
|
||||||
|
</select>
|
||||||
|
{{else}}
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.modifier"}}</legend>
|
||||||
|
<select name="modifier" class="roll-skill-modifier">
|
||||||
|
{{selectOptions choiceModifier selected=modifier localize=true}}
|
||||||
|
</select>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if (eq rollType "weapon")}}
|
{{#if (eq rollType "weapon")}}
|
||||||
<select name="range-modifier" class="roll-skill-range-modifier">
|
<select name="range-modifier" class="roll-skill-range-modifier">
|
||||||
{{selectOptions choiceRangeModifier selected=rangeModifier}}
|
{{selectOptions choiceRangeModifier selected=rangeModifier}}
|
||||||
</select>
|
</select>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Two Attacks : <input type="checkbox" name="isAiming" data-field="two-attacks" class="select-combat-option">
|
<li>Two Attacks :
|
||||||
</li>
|
<input
|
||||||
<li>Aiming : <input type="checkbox" data-field="aiming" class="select-combat-option"></li>
|
type="checkbox"
|
||||||
<li>Dim Lightning : <input type="checkbox" data-field="dim" class="select-combat-option"></li>
|
name="isAiming"
|
||||||
<li>Darkness : <input type="checkbox" data-field="darkness" class="select-combat-option"></li>
|
data-field="two-attacks"
|
||||||
<li>Target Prone/Obscured : <input type="checkbox" data-field="prone" class="select-combat-option"></li>
|
class="select-combat-option"
|
||||||
<li>Target Cover : <input type="checkbox" data-field="cover" class="select-combat-option"></li>
|
/>
|
||||||
<li>1/2 Auto Fire Recoil : <input type="checkbox" data-field="recoil-first" class="select-combat-option"></li>
|
</li>
|
||||||
<li>2+ Auto Fire Recoil : <input type="checkbox" data-field="recoil-third" class="select-combat-option"></li>
|
<li>Aiming :
|
||||||
<li>Target Aware : <input type="checkbox" data-field="aware" class="select-combat-option"></li>
|
<input
|
||||||
</ul>
|
type="checkbox"
|
||||||
|
data-field="aiming"
|
||||||
|
class="select-combat-option"
|
||||||
|
/></li>
|
||||||
|
<li>Dim Lightning :
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
data-field="dim"
|
||||||
|
class="select-combat-option"
|
||||||
|
/></li>
|
||||||
|
<li>Darkness :
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
data-field="darkness"
|
||||||
|
class="select-combat-option"
|
||||||
|
/></li>
|
||||||
|
<li>Target Prone/Obscured :
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
data-field="prone"
|
||||||
|
class="select-combat-option"
|
||||||
|
/></li>
|
||||||
|
<li>Target Cover :
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
data-field="cover"
|
||||||
|
class="select-combat-option"
|
||||||
|
/></li>
|
||||||
|
<li>1/2 Auto Fire Recoil :
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
data-field="recoil-first"
|
||||||
|
class="select-combat-option"
|
||||||
|
/></li>
|
||||||
|
<li>2+ Auto Fire Recoil :
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
data-field="recoil-third"
|
||||||
|
class="select-combat-option"
|
||||||
|
/></li>
|
||||||
|
<li>Target Aware :
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
data-field="aware"
|
||||||
|
class="select-combat-option"
|
||||||
|
/></li>
|
||||||
|
</ul>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
|
|
||||||
<fieldSet class="dialog-formula">
|
<fieldSet class="dialog-formula">
|
||||||
<legend>{{localize "FTLNOMAD.Label.formula"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.formula"}}</legend>
|
||||||
<label name="fullFormula" id="roll-dialog-full-formula">{{fullFormula}}</label>
|
<label
|
||||||
|
name="fullFormula"
|
||||||
|
id="roll-dialog-full-formula"
|
||||||
|
>{{fullFormula}}</label>
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
|
|
||||||
<fieldSet>
|
<fieldSet>
|
||||||
|
|||||||
@@ -1,24 +1,78 @@
|
|||||||
<section class="tab starship-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
<section
|
||||||
|
class="tab starship-{{tab.id}} {{tab.cssClass}}"
|
||||||
|
data-tab="{{tab.id}}"
|
||||||
|
data-group="{{tab.group}}"
|
||||||
|
>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.techAge"}}</legend>
|
||||||
|
<div class="flexrow">
|
||||||
|
{{formField
|
||||||
|
systemFields.techAge
|
||||||
|
value=system.techAge
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{formField
|
||||||
|
systemFields.cost
|
||||||
|
value=system.cost
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{formField
|
||||||
|
systemFields.monthlyCost
|
||||||
|
value=system.monthlyCost
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.damages"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.damages"}}</legend>
|
||||||
<textarea class="form-control" cols="66" rows="5" name="system.damages"
|
<textarea
|
||||||
data-tooltip="{{localize "FTLNOMAD.Tooltip.damages"}}">{{system.damages}}</textarea>
|
class="form-control"
|
||||||
|
cols="66"
|
||||||
|
rows="5"
|
||||||
|
name="system.damages"
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Tooltip.damages'}}"
|
||||||
|
>{{system.damages}}</textarea>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset class="section-editor">
|
||||||
<legend>{{localize "FTLNOMAD.Label.description"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.description"}}</legend>
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
{{formInput
|
||||||
|
systemFields.description
|
||||||
|
enriched=enrichedDescription
|
||||||
|
value=system.description
|
||||||
|
name="system.description"
|
||||||
|
toggled=true
|
||||||
|
}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset class="section-editor">
|
||||||
<legend>{{localize "FTLNOMAD.Label.modifications"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.modifications"}}</legend>
|
||||||
{{formInput systemFields.modifications enriched=enrichedModifications value=system.modifications name="system.modifications" toggled=true}}
|
{{formInput
|
||||||
|
systemFields.modifications
|
||||||
|
enriched=enrichedModifications
|
||||||
|
value=system.modifications
|
||||||
|
name="system.modifications"
|
||||||
|
toggled=true
|
||||||
|
}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset class="section-editor">
|
||||||
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
||||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
{{formInput
|
||||||
|
systemFields.notes
|
||||||
|
enriched=enrichedNotes
|
||||||
|
value=system.notes
|
||||||
|
name="system.notes"
|
||||||
|
toggled=true
|
||||||
|
}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
@@ -1,52 +1,106 @@
|
|||||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
<section
|
||||||
|
class="tab vehicle-{{tab.id}} {{tab.cssClass}}"
|
||||||
|
data-tab="{{tab.id}}"
|
||||||
|
data-group="{{tab.group}}"
|
||||||
|
>
|
||||||
<div class="main-div">
|
<div class="main-div">
|
||||||
|
|
||||||
|
<!-- <div class="weapons">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.weapons"}}{{#if isEditMode}}
|
<legend>{{localize "FTLNOMAD.Label.weapons"}}{{#if isEditMode}}
|
||||||
<a class="action" data-tooltip="{{localize " FTLNOMAD.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
<a
|
||||||
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
class="action"
|
||||||
|
data-tooltip="{{localize ' FTLNOMAD.Tooltip.addWeapon'}}"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
><i class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
||||||
</legend>
|
</legend>
|
||||||
<div class="weapons">
|
|
||||||
{{#each weapons as |item|}}
|
{{#each weapons as |item|}}
|
||||||
{{!log 'weapon' this}}
|
{{!log 'weapon' this}}
|
||||||
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
<div
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
class="weapon item"
|
||||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
data-item-id="{{item.id}}"
|
||||||
{{item.name}}
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
data-drag="true"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="item-img"
|
||||||
|
src="{{item.img}}"
|
||||||
|
data-tooltip="{{item.name}}"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="name rollable"
|
||||||
|
data-roll-type="weapon"
|
||||||
|
data-tooltip="{{{item.system.description}}}"
|
||||||
|
>
|
||||||
|
{{item.name}}
|
||||||
|
</div>
|
||||||
|
<a
|
||||||
|
class="damage rollable"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-action="roll"
|
||||||
|
data-roll-type="damage"
|
||||||
|
data-roll-value="{{item.system.damage}}"
|
||||||
|
>{{localize "FTLNOMAD.Label.damageShort"}}
|
||||||
|
:
|
||||||
|
{{item.system.damage}}</a>
|
||||||
|
<div class="controls">
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Edit'}}"
|
||||||
|
data-action="edit"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-edit"></i></a>
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Delete'}}"
|
||||||
|
data-action="delete"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
|
||||||
data-roll-value="{{item.system.damage}}">{{localize "FTLNOMAD.Label.damageShort"}} :
|
|
||||||
{{item.system.damage}}</a>
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'FTLNOMAD.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'FTLNOMAD.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset> -->
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.equipment"}}{{#if isEditMode}}
|
<legend>{{localize "FTLNOMAD.Label.equipment"}}{{#if isEditMode}}
|
||||||
<a class="action" data-tooltip="{{localize " FTLNOMAD.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i
|
<a
|
||||||
class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
class="action"
|
||||||
|
data-tooltip="{{localize ' FTLNOMAD.Tooltip.addEquipment'}}"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
><i class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
||||||
</legend>
|
</legend>
|
||||||
<div class="equipments">
|
<div class="equipments">
|
||||||
{{#each equipments as |item|}}
|
{{#each equipments as |item|}}
|
||||||
{{!log 'armor' this}}
|
{{!log 'armor' this}}
|
||||||
<div class="equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
<div
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
class="equipment"
|
||||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
data-item-id="{{item.id}}"
|
||||||
{{item.name}}
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="item-img"
|
||||||
|
src="{{item.img}}"
|
||||||
|
data-tooltip="{{item.name}}"
|
||||||
|
/>
|
||||||
|
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||||
|
{{item.name}}
|
||||||
|
</div>
|
||||||
|
<div class="controls">
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Edit'}}"
|
||||||
|
data-action="edit"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-edit"></i></a>
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Delete'}}"
|
||||||
|
data-action="delete"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'FTLNOMAD.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'FTLNOMAD.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|||||||
@@ -1,45 +1,93 @@
|
|||||||
<section class="starship-main starship-main-{{ifThen isPlayMode 'play' 'edit'}}">
|
<section
|
||||||
|
class="starship-main starship-main-{{ifThen isPlayMode 'play' 'edit'}}"
|
||||||
|
>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.starship"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.starship"}}</legend>
|
||||||
<div class="starship-pc starship-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
<div class="starship-pc starship-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
<div class="starship-left">
|
<div class="starship-left">
|
||||||
<div class="starship-left-image">
|
<div class="starship-left-image">
|
||||||
<img class="starship-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
<img
|
||||||
data-tooltip="{{actor.name}}" />
|
class="starship-img"
|
||||||
|
src="{{actor.img}}"
|
||||||
|
data-edit="img"
|
||||||
|
data-action="editImage"
|
||||||
|
data-tooltip="{{actor.name}}"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<fieldset class="spec">
|
<fieldset class="spec">
|
||||||
{{formField systemFields.agility value=system.agility localize=true}}
|
{{formField
|
||||||
{{formField systemFields.armor value=system.armor localize=true}}
|
systemFields.agility
|
||||||
{{formField systemFields.endurance value=system.endurance localize=true}}
|
value=system.agility
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.armor
|
||||||
|
value=system.armor
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.endurance
|
||||||
|
value=system.endurance
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="starship-right">
|
<div class="starship-right">
|
||||||
<div class="starship-name">
|
<div class="starship-name">
|
||||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
{{formInput
|
||||||
<a class="control" data-action="toggleSheet" data-tooltip="FTLNOMAD.ToggleSheet"
|
fields.name
|
||||||
data-tooltip-direction="UP">
|
value=source.name
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
<a
|
||||||
|
class="control"
|
||||||
|
data-action="toggleSheet"
|
||||||
|
data-tooltip="FTLNOMAD.ToggleSheet"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
>
|
||||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="capacity ">
|
<fieldset class="capacity">
|
||||||
<legend>{{localize "FTLNOMAD.Label.capacity"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.capacity"}}</legend>
|
||||||
<div class="flexrow">
|
<div class="flexrow hull-field">
|
||||||
{{formField systemFields.hullType value=system.hullType localize=true}}
|
{{formField
|
||||||
{{formField systemFields.cost value=system.cost- localize=true}}
|
systemFields.hullType
|
||||||
|
value=system.hullType
|
||||||
</div>
|
localize=true
|
||||||
<div class="flexrow">
|
disabled=isPlayMode
|
||||||
{{formField systemFields.travelMultiplier value=system.travelMultiplier localize=true}}
|
}}
|
||||||
{{formField systemFields.monthlyCost value=system.monthlyCost localize=true}}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flexrow-guns rollable" data-roll-type="starship-guns">
|
<div class="flexrow-guns">
|
||||||
<i class="fa-regular fa-dice dice-2d6"></i>
|
<a
|
||||||
{{formField systemFields.guns value=system.guns localize=true}}
|
class="rollable starship-guns-label"
|
||||||
|
data-roll-type="starship-guns"
|
||||||
|
>
|
||||||
|
<i class="fa-regular fa-dice dice-2d6"></i>Guns
|
||||||
|
</a>
|
||||||
|
{{formInput
|
||||||
|
systemFields.guns
|
||||||
|
value=system.guns
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{formField
|
||||||
|
systemFields.travelMultiplier
|
||||||
|
value=system.travelMultiplier
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@@ -47,8 +95,18 @@
|
|||||||
<fieldset class="cargo">
|
<fieldset class="cargo">
|
||||||
<legend>{{localize "FTLNOMAD.Label.cargo"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.cargo"}}</legend>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
{{formField systemFields.crew value=system.crew localize=true}}
|
{{formField
|
||||||
{{formField systemFields.cargo value=system.cargo localize=true}}
|
systemFields.crew
|
||||||
|
value=system.crew
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.cargo
|
||||||
|
value=system.cargo
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +1,67 @@
|
|||||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
<section
|
||||||
|
class="tab vehicle-{{tab.id}} {{tab.cssClass}}"
|
||||||
|
data-tab="{{tab.id}}"
|
||||||
|
data-group="{{tab.group}}"
|
||||||
|
>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.damages"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.techAge"}}</legend>
|
||||||
<div class="text-center">
|
<div class="flexrow">
|
||||||
<textarea class="form-control " cols="64" rows="5" name="system.damages"
|
{{formField
|
||||||
data-tooltip="{{localize "FTLNOMAD.Tooltip.damages"}}">{{system.damages}}</textarea>
|
systemFields.techAge
|
||||||
|
value=system.techAge
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{formField
|
||||||
|
systemFields.cost
|
||||||
|
value=system.cost
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{formField
|
||||||
|
systemFields.monthlyCost
|
||||||
|
value=system.monthlyCost
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.description"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.damages"}}</legend>
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
<div class="text-center">
|
||||||
|
<textarea
|
||||||
|
class="form-control"
|
||||||
|
cols="64"
|
||||||
|
rows="5"
|
||||||
|
name="system.damages"
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Tooltip.damages'}}"
|
||||||
|
>{{system.damages}}</textarea>
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset class="section-editor">
|
||||||
|
<legend>{{localize "FTLNOMAD.Label.description"}}</legend>
|
||||||
|
{{formInput
|
||||||
|
systemFields.description
|
||||||
|
enriched=enrichedDescription
|
||||||
|
value=system.description
|
||||||
|
name="system.description"
|
||||||
|
toggled=true
|
||||||
|
}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset class="section-editor">
|
||||||
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
||||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
{{formInput
|
||||||
|
systemFields.notes
|
||||||
|
enriched=enrichedNotes
|
||||||
|
value=system.notes
|
||||||
|
name="system.notes"
|
||||||
|
toggled=true
|
||||||
|
}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
@@ -1,54 +1,107 @@
|
|||||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
<section
|
||||||
<div class="main-div">
|
class="tab vehicle-{{tab.id}} {{tab.cssClass}}"
|
||||||
<fieldset>
|
data-tab="{{tab.id}}"
|
||||||
<legend>{{localize "FTLNOMAD.Label.weapons"}}{{#if isEditMode}}
|
data-group="{{tab.group}}"
|
||||||
<a class="action" data-tooltip="{{localize "FTLNOMAD.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
>
|
||||||
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
<div class="main-div">
|
||||||
</legend>
|
<fieldset>
|
||||||
<div class="weapons">
|
<legend>{{localize "FTLNOMAD.Label.weapons"}}{{#if isEditMode}}
|
||||||
{{#each weapons as |item|}}
|
<a
|
||||||
{{!log 'weapon' this}}
|
class="action"
|
||||||
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
data-tooltip="{{localize 'FTLNOMAD.Tooltip.addWeapon'}}"
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
data-tooltip-direction="UP"
|
||||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
><i class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
||||||
{{item.name}}
|
</legend>
|
||||||
</div>
|
<div class="weapons">
|
||||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
{{#each weapons as |item|}}
|
||||||
data-roll-value="{{item.system.damage}}">{{localize "FTLNOMAD.Label.damageShort"}} :
|
{{!log 'weapon' this}}
|
||||||
{{item.system.damage}}</a>
|
<div
|
||||||
<div class="controls">
|
class="weapon item"
|
||||||
<a data-tooltip="{{localize 'FTLNOMAD.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
data-item-id="{{item.id}}"
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
data-item-uuid="{{item.uuid}}"
|
||||||
<a data-tooltip="{{localize 'FTLNOMAD.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
data-drag="true"
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
>
|
||||||
</div>
|
<img
|
||||||
|
class="item-img"
|
||||||
|
src="{{item.img}}"
|
||||||
|
data-tooltip="{{item.name}}"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="name"
|
||||||
|
data-roll-type="weapon"
|
||||||
|
data-tooltip="{{{item.system.description}}}"
|
||||||
|
>
|
||||||
|
{{item.name}}
|
||||||
|
</div>
|
||||||
|
<a
|
||||||
|
class="damage rollable"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-action="roll"
|
||||||
|
data-roll-type="damage"
|
||||||
|
data-roll-value="{{item.system.damage}}"
|
||||||
|
>{{localize "FTLNOMAD.Label.damageShort"}}
|
||||||
|
:
|
||||||
|
{{item.system.damage}}</a>
|
||||||
|
<div class="controls">
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Edit'}}"
|
||||||
|
data-action="edit"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-edit"></i></a>
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Delete'}}"
|
||||||
|
data-action="delete"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
</fieldset>
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.equipment"}}{{#if isEditMode}}
|
<legend>{{localize "FTLNOMAD.Label.equipment"}}{{#if isEditMode}}
|
||||||
<a class="action" data-tooltip="{{localize "FTLNOMAD.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i
|
<a
|
||||||
class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
class="action"
|
||||||
</legend>
|
data-tooltip="{{localize 'FTLNOMAD.Tooltip.addEquipment'}}"
|
||||||
<div class="equipments">
|
data-tooltip-direction="UP"
|
||||||
{{#each equipments as |item|}}
|
><i class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
||||||
{{!log 'armor' this}}
|
</legend>
|
||||||
<div class="equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
<div class="equipments">
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
{{#each equipments as |item|}}
|
||||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
{{!log 'armor' this}}
|
||||||
{{item.name}}
|
<div
|
||||||
</div>
|
class="equipment"
|
||||||
<div class="controls">
|
data-item-id="{{item.id}}"
|
||||||
<a data-tooltip="{{localize 'FTLNOMAD.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
data-item-uuid="{{item.uuid}}"
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
>
|
||||||
<a data-tooltip="{{localize 'FTLNOMAD.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
<img
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
class="item-img"
|
||||||
</div>
|
src="{{item.img}}"
|
||||||
|
data-tooltip="{{item.name}}"
|
||||||
|
/>
|
||||||
|
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||||
|
{{item.name}}
|
||||||
|
</div>
|
||||||
|
<div class="controls">
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Edit'}}"
|
||||||
|
data-action="edit"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-edit"></i></a>
|
||||||
|
<a
|
||||||
|
data-tooltip="{{localize 'FTLNOMAD.Delete'}}"
|
||||||
|
data-action="delete"
|
||||||
|
data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"
|
||||||
|
><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</section>
|
</section>
|
||||||
@@ -5,13 +5,23 @@
|
|||||||
<div class="vehicle-pc vehicle-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
<div class="vehicle-pc vehicle-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
<div class="vehicle-left">
|
<div class="vehicle-left">
|
||||||
<div class="vehicle-left-image">
|
<div class="vehicle-left-image">
|
||||||
<img class="vehicle-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
<img
|
||||||
data-tooltip="{{actor.name}}" />
|
class="vehicle-img"
|
||||||
|
src="{{actor.img}}"
|
||||||
|
data-edit="img"
|
||||||
|
data-action="editImage"
|
||||||
|
data-tooltip="{{actor.name}}"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "FTLNOMAD.Label.Agility"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.Agility"}}</legend>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
{{formField systemFields.agility value=system.agility localize=true}}
|
{{formField
|
||||||
|
systemFields.agility
|
||||||
|
value=system.agility
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
@@ -19,31 +29,75 @@
|
|||||||
|
|
||||||
<div class="vehicle-right">
|
<div class="vehicle-right">
|
||||||
<div class="vehicle-name">
|
<div class="vehicle-name">
|
||||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
{{formInput
|
||||||
<a class="control" data-action="toggleSheet" data-tooltip="FTLNOMAD.ToggleSheet"
|
fields.name
|
||||||
data-tooltip-direction="UP">
|
value=source.name
|
||||||
|
rootId=partId
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
<a
|
||||||
|
class="control"
|
||||||
|
data-action="toggleSheet"
|
||||||
|
data-tooltip="FTLNOMAD.ToggleSheet"
|
||||||
|
data-tooltip-direction="UP"
|
||||||
|
>
|
||||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="capacity ">
|
<fieldset class="capacity">
|
||||||
<legend>{{localize "FTLNOMAD.Label.capacity"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.capacity"}}</legend>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
{{formField systemFields.armor value=system.armor localize=true}}
|
{{formField
|
||||||
{{formField systemFields.force value=system.force localize=true}}
|
systemFields.armor
|
||||||
|
value=system.armor
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.force
|
||||||
|
value=system.force
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
{{formField systemFields.range value=system.range localize=true}}
|
{{formField
|
||||||
{{formField systemFields.speed value=system.speed localize=true}}
|
systemFields.range
|
||||||
|
value=system.range
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.speed
|
||||||
|
value=system.speed
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="cargo">
|
<fieldset class="cargo">
|
||||||
<legend>{{localize "FTLNOMAD.Label.cargo"}}</legend>
|
<legend>{{localize "FTLNOMAD.Label.cargo"}}</legend>
|
||||||
<div class="cargo-content">
|
<div class="cargo-content">
|
||||||
{{formField systemFields.crew value=system.crew localize=true}}
|
{{formField
|
||||||
{{formField systemFields.cargo value=system.cargo localize=true}}
|
systemFields.crew
|
||||||
{{formField systemFields.tonnage value=system.tonnage localize=true}}
|
value=system.crew
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.cargo
|
||||||
|
value=system.cargo
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
{{formField
|
||||||
|
systemFields.tonnage
|
||||||
|
value=system.tonnage
|
||||||
|
localize=true
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user