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