1
assets/icons/icon_combat.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="M221.6 28.53c-5.2.1-10.6 2.18-15.8 6.35-7.7 6.03-14.4 16.44-17.8 29.58-3.3 13.14-2.5 26.2 1.1 36.24 3.6 9.9 9.4 16.4 16.6 18.9 6 2.1 12.6 1.3 19-2.6 2.3-13.6 9.9-24.28 21.3-31.6.1-.19.1-.38.2-.58 3.3-13.15 2.5-26.2-1.1-36.2-3.6-9.95-9.4-16.46-16.6-18.97-2.3-.78-4.6-1.16-6.9-1.12zm212.5 49.31c-3.2.72-11 3.44-18.7 7.15-8.7 4.14-17.4 8.86-22.4 11.5l-.9.45-.9.25c-38.1 10.61-57.5 17.91-88.3 23.21-2.2 6.1-6 12.5-11.3 19h-.1v.1c-6.2 7.4-12.4 14.7-18.7 21.9 45.8-8.5 78.8-16.7 132.7-38l4.1-1.6 3.9 2.3c5.5 3.4 13.4 5.8 19.6 6.3 3.1.3 5.8 0 7.4-.4 1.4-.4 1.4-.7 1.4-.6 5.4-11.9 7.3-24.4 5.5-33.8-1.7-8.89-5.7-14.64-13.3-17.76zM272.2 96.08c-8.9-.1-20.1 4.32-27.6 15.62-5.9 29.5-26.7 50.1-57.2 62.6l-6.8-16.6c12.7-5.2 22.6-11.2 30.1-18.6-3.1-.2-6.3-.9-9.4-2-10.4-3.7-18.6-11.6-24.1-21.4-14.6 2.8-22.6 6.3-32.8 14.6-4.1 36.5 6.8 67.5 27.6 96.6 41.7-25.4 73.7-60.5 105.7-98.9 8.2-10.2 10-17.6 9.5-21.9-.6-4.2-2.7-6.73-7.2-8.58-2.2-.91-4.9-1.42-7.8-1.44zM131.5 185.5c-1.7 23.2-.7 48.5-1 75v3.8l-2.7 2.6C75.51 317.5 33.9 400.5 20.36 495.7h40.62c9.12-41.2 17.47-82.3 34.69-115.7 18.23-35.3 47.83-62 96.23-67.5l4.8-.6 3.1 3.7c38.2 45.7 75.3 103.9 85.9 180.1h39.6c-6.3-88.4-46.8-156.5-97.1-229-9.8-14.1-10.2-29.8-6.5-44.9.9-3.8 2.1-7.7 3.4-11.7-15.5 13.6-32.3 26-51 36.7l-6.9 3.9-4.7-6.2c-14-18.2-24.8-37.8-31-59z" fill="#21d121" fill-opacity="1" stroke="#0f0101" stroke-opacity="1" stroke-width="8" filter="url(#shadow-1)"></path></g></svg>
|
After Width: | Height: | Size: 2.0 KiB |
1
assets/icons/icon_knowledge.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="M104 37.25V215.1c3.6 9.9 10 14.1 20.9 17 11.4 2.9 27.1 3.1 43.9 3.1 16.8 0 34.6-.1 51.4 3.6 9.5 2.1 18.7 5.7 26.8 11.2V55.43c-7.2-9.9-15.9-13.69-27.3-15.09-12.2-1.49-27.3.55-42.9 2.83-15.7 2.28-31.9 4.81-47.7 2.88-8.7-1.07-17.3-3.87-25.1-8.8zm304 0c-7.8 4.93-16.4 7.73-25.1 8.8-15.8 1.93-32-.6-47.7-2.88-15.6-2.28-30.7-4.32-42.9-2.83-11.4 1.4-20.1 5.19-27.3 15.09V250c8.1-5.5 17.3-9.1 26.8-11.2 16.8-3.7 34.6-3.6 51.4-3.6 16.8 0 32.5-.2 43.9-3.1 10.9-2.9 17.3-7.1 20.9-17V37.25zM130.8 80.03h89.4v18h-89.4v-18zm161 0h89.4v18h-89.4v-18zm-161 44.47h89.4v18h-89.4v-18zm161 0h89.4v18h-89.4v-18zm-161 46.8h89.4v18h-89.4v-18zm161 0h89.4v18h-89.4v-18zM96 249c-17.3 0-29.19 7.3-37.77 18.9C49.66 279.4 45 295.7 45 312s4.66 32.6 13.23 44.1C66.81 367.7 78.7 375 96 375c22 0 35.7-7.1 44.4-14 8.6-6.9 11.5-13 11.5-13l2.5-5h203.2l2.5 5s2.9 6.1 11.5 13c8.7 6.9 22.4 14 44.4 14 17.3 0 29.2-7.3 37.8-18.9 8.5-11.5 13.2-27.8 13.2-44.1s-4.7-32.6-13.2-44.1c-8.6-11.6-20.5-18.9-37.8-18.9-22 0-35.7 7.1-44.4 14-8.6 6.9-11.5 13-11.5 13l-2.5 5H154.4l-2.5-5s-2.9-6.1-11.5-13c-8.7-6.9-22.4-14-44.4-14zm4.6 21.9c.9 0 1.9 0 2.9.1 13.5 1.2 28.2 8.9 44.1 24h216.8c15.9-15.1 30.6-22.8 44.1-24 14.2-1.2 26.6 5.8 33.1 16.2 13.1 20.9 7 53.9-20.6 72.3l-10-15c20.4-13.6 22.3-36.6 15.4-47.7-3.5-5.6-8.1-8.6-16.4-7.8-8.2.7-20.6 6.3-35.6 21.4l-2.7 2.6H140.3l-2.7-2.6c-15-15.1-27.4-20.7-35.6-21.4-8.26-.8-12.9 2.2-16.37 7.8-6.92 11.1-4.99 34.1 15.37 47.7l-9.99 15c-27.65-18.4-33.72-51.4-20.64-72.3 5.72-9.1 15.9-15.6 27.92-16.3h2.31zM169 361v126h30V361h-30zm48 0v126h30V361h-30zm48 0v126h30V361h-30zm48 0v126h30V361h-30z" fill="#21d121" fill-opacity="1" stroke="#0f0101" stroke-opacity="1" stroke-width="8" filter="url(#shadow-1)"></path></g></svg>
|
After Width: | Height: | Size: 2.3 KiB |
1
assets/icons/icon_physical.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="M165.906 18.688C15.593 59.28-42.187 198.55 92.72 245.375h-1.095c.635.086 1.274.186 1.906.28 8.985 3.077 18.83 5.733 29.532 7.94C173.36 273.35 209.74 321.22 212.69 368c-33.514 23.096-59.47 62.844-59.47 62.844L179.5 469.53 138.28 493h81.97c-40.425-40.435-11.76-85.906 36.125-85.906 48.54 0 73.945 48.112 36.156 85.906h81.126l-40.375-23.47 26.283-38.686s-26.376-40.4-60.282-63.406c3.204-46.602 39.5-94.167 89.595-113.844 10.706-2.207 20.546-4.86 29.53-7.938.633-.095 1.273-.195 1.908-.28h-1.125c134.927-46.82 77.163-186.094-73.157-226.69-40.722 39.37 6.54 101.683 43.626 56.877 36.9 69.08 8.603 127.587-72.28 83.406-11.88 24.492-34.213 41.374-60.688 41.374-26.703 0-49.168-17.167-60.97-42-81.774 45.38-110.512-13.372-73.437-82.78 37.09 44.805 84.35-17.508 43.626-56.876zm90.79 35.92c-27.388 0-51.33 27.556-51.33 63.61 0 36.056 23.942 62.995 51.33 62.995 27.387 0 51.327-26.94 51.327-62.994 0-36.058-23.94-63.61-51.328-63.61z" fill="#21d121" fill-opacity="1" stroke="#0f0101" stroke-opacity="1" stroke-width="8" filter="url(#shadow-1)"></path></g></svg>
|
After Width: | Height: | Size: 1.6 KiB |
1
assets/icons/icon_social.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="M494 61.363l-82.58 77.934 78.994 132.96 3.586-4.458V61.362zM18 62.5v225.893c4.48.582 9.863.903 15.295.96 11.87.125 21.654-.65 27.15-1.144L113.1 154.974 18 62.5zm389.154 104.86l-7.04 4.556c-.15.097-5.362 3.336-6.893 4.29l-10.605 6.42.15.09c-4.914 3.057-6.28 3.917-11.857 7.38-2.83 1.757-2.9 1.798-5.584 3.465-20.29-10.907-42.306-19.29-67.998-25.882-32.312 9.762-66.542 23.888-100.722 37.142 14.19 17.087 29.96 22.651 45.845 22.85 18.42.23 37.25-7.78 50.218-16.754l7.4-5.12 7.426 10.73 115.453 83.33 45.112-29.987-60.906-102.51zM126.477 170.1L81.11 284.887 97.76 297.69l30.795-34.905 2.467-2.795 3.72-.232c1.5-.094 2.98-.138 4.44-.13 10.212.066 19.342 2.716 26.19 8.76 5.072 4.472 8.444 10.426 10.4 17.32l2.28-.142c11.995-.75 22.802 1.725 30.63 8.63 7.827 6.907 11.63 17.323 12.38 29.32l.07 1.08c6.44 1.216 12.205 3.752 16.893 7.888 7.828 6.906 11.63 17.32 12.38 29.317l.197 3.12c.642.202 1.275.424 1.9.658l2.033-2.853 5.47-7.678 2.813-3.95 7.33 5.223 59.428 42.336c6.464-1.594 10.317-4.075 12.46-7.086 2.147-3.012 3.233-7.47 2.624-14.107l-71.258-51.03-7.318-5.24 5.19-7.246 6.67-9.365 7.33 5.223 80.335 57.226c6.464-1.593 10.32-4.074 12.463-7.085 2.144-3.01 3.23-7.457 2.625-14.082l-92.398-65.55-7.34-5.21 10.414-14.68 7.343 5.208 92.414 65.565c6.47-1.594 10.327-4.075 12.473-7.088 2.148-3.015 3.233-7.476 2.62-14.125l-110.44-79.71c-14.655 8.688-33.402 15.648-53.557 15.396-23.587-.295-48.817-11.566-67.377-40.05a9 9 0 0 1 4.343-13.327c13.014-4.945 26.163-10.17 39.343-15.354l-92.056-6.834zm12.902 107.62l-47.564 53.91c.927 6.746 3.04 10.942 5.887 13.454 2.847 2.512 7.275 4.085 14.084 4.164l47.563-53.908c-.927-6.747-3.04-10.945-5.887-13.457-2.847-2.512-7.274-4.084-14.084-4.162zm43.308 25.81l-53.713 60.88c.926 6.747 3.04 10.945 5.886 13.457 2.85 2.51 7.275 4.083 14.085 4.16l53.713-60.878c-.926-6.748-3.04-10.944-5.887-13.457-2.846-2.512-7.273-4.085-14.083-4.164zm29.34 38.286l-47.56 53.91c.927 6.746 3.04 10.943 5.887 13.456 2.848 2.512 7.275 4.083 14.084 4.162L232 359.44c-.927-6.75-3.04-10.947-5.887-13.46-2.847-2.512-7.274-4.083-14.084-4.162zm24.702 39.137l-38.794 44.28c.925 6.76 3.038 10.962 5.888 13.476 2.845 2.51 7.267 4.082 14.067 4.163l38.796-44.28c-.926-6.758-3.04-10.96-5.89-13.476-2.844-2.51-7.266-4.08-14.066-4.162zm35.342 4.79c1.694 4.62 2.673 9.74 3.014 15.192l.232 3.704-8.277 9.448 26.724 19.037c6.464-1.594 10.316-4.075 12.46-7.086 2.145-3.01 3.233-7.464 2.628-14.093l-36.78-26.2z" fill="#21d121" fill-opacity="1" stroke="#0f0101" stroke-opacity="1" stroke-width="8" filter="url(#shadow-1)"></path></g></svg>
|
After Width: | Height: | Size: 3.1 KiB |
1
assets/icons/icon_stealth.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="M254.07 19.707c-56.303 28.998-106.297 107.317-122.64 168.707 32.445 2.11 58.63 12.963 78.638 30.848l9.334-10.198c-13.336-13.056-30.596-23.9-52.994-34.707 12.68-31.542 32.01-79.29 56.598-82.07 9.62-1.088 19.92 4.722 31.13 21.068 35.08-58.334 68.394 18.705 87.727 61.002-21.94 11.897-39.132 22.82-52.63 36.024l8.68 9.76c19.68-17.732 45.72-29.358 78.55-31.673C358.24 127.335 311.515 50.14 254.07 19.707zM219.617 144.57c-8.894 0-16.103 3.952-16.103 8.826 0 4.875 7.21 8.827 16.103 8.827 8.894 0 16.106-3.95 16.106-8.827 0-4.874-7.212-8.826-16.106-8.826zm68.965 0c-8.894 0-16.105 3.952-16.105 8.826 0 4.875 7.21 8.827 16.105 8.827 8.894 0 16.106-3.95 16.106-8.827 0-4.874-7.212-8.826-16.106-8.826zm-118.894 70.88c-2.19 3.672-4.343 7.497-6.444 11.52-25.587 48.98-43.26 123.643-43.896 223.48 32.776 18.89 64.322 31.324 95.707 36.988-35.5-24.36-60.375-80.893-60.375-146.754 0-45.97 12.12-87.39 31.51-116.506-5.098-3.372-10.583-6.29-16.502-8.727zm168.933.35c-5.852 2.477-11.27 5.412-16.298 8.764 19.24 29.095 31.254 70.354 31.254 116.12 0 65.82-24.844 122.322-60.306 146.707 30.88-5.598 62.44-17.812 95.656-36.947-.638-99.57-18.31-174.163-43.9-223.177-2.088-4.002-4.228-7.81-6.405-11.467zm-97.665 23.61c7.026 22.543 9.128 45.086.98 67.63h-41.552v18.513c10.057-3.24 20.25-5.39 30.502-6.594.066 50.215 1.313 96.574 19.82 145.435l4.193 11.074 4.485-10.962c19.48-47.615 18.045-95.297 17.933-145.024 10.257 1.333 20.463 3.4 30.545 6.07v-18.515h-41.374c-6.888-22.544-5.932-45.087.803-67.63h-26.335z" fill="#21d121" fill-opacity="1" stroke="#0f0101" stroke-opacity="1" stroke-width="8" filter="url(#shadow-1)"></path></g></svg>
|
After Width: | Height: | Size: 2.2 KiB |
1
assets/icons/icon_technology.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="M228.844 32.22v114.218h17.687V32.218h-17.686zm-108.25.624c-15.507 0-28.094 12.586-28.094 28.093C92.5 76.444 105.087 89 120.594 89c12.655 0 23.34-8.372 26.844-19.875h44.937v77.313h17.688v-95H147.03c-3.888-10.837-14.262-18.593-26.436-18.593zm193.25 0c-15.507 0-28.063 12.586-28.063 28.093 0 12.124 7.677 22.45 18.44 26.376v59.124h17.655V87.844c11.596-3.452 20.063-14.193 20.063-26.906 0-15.508-12.587-28.094-28.094-28.094zM266.124 92.5v53.938h17.657V92.5h-17.655zm188.532 4.03c-15.507 0-28.094 12.588-28.094 28.095 0 13.083 8.948 24.074 21.063 27.188v27.468h-92.938v17.657h110.624v-46.342c10.223-4.192 17.407-14.233 17.407-25.97 0-15.507-12.557-28.094-28.064-28.094zM30.187 123.657v17.688H96.75v55.594h62.814V179.28h-45.126v-55.624h-84.25zm147.032 40.47v159.718h159.81v-159.72H177.22zm17.56 15.655h17.657v78.595l32.407 32.406h75.28v17.658H237.5l-2.594-2.594-10.75-10.75c-1.033 7.385-7.36 13.062-15.03 13.062-8.392 0-15.19-6.796-15.19-15.187 0-7.682 5.696-13.98 13.095-15l-9.655-9.658-2.594-2.593V179.78zm54.94.157h17.686v55.313h52.53l.002 17.688H249.72v-73zM53.124 217.375V307.344c-11.49 3.512-19.844 14.198-19.844 26.844 0 15.505 12.557 28.093 28.064 28.093s28.093-12.587 28.093-28.092c0-12.195-7.79-22.564-18.656-26.438v-72.72h88.782v-17.655H53.124zm301.563 0v17.656h53.968v-17.655h-53.97zm99.968 21.97c-10.898 0-20.342 6.21-25 15.28h-74.97l.002 17.688H427c2.325 13.168 13.824 23.187 27.656 23.187 15.507 0 28.063-12.588 28.063-28.094 0-15.507-12.557-28.062-28.064-28.062zm-349.062 15.28v17.688h53.97v-17.688h-53.97zm17.156 36.47v84.217c-11.498 3.513-19.875 14.2-19.875 26.844 0 15.506 12.587 28.094 28.094 28.094 15.506 0 28.06-12.588 28.06-28.094 0-12.194-7.766-22.564-18.624-26.437v-66.94h19.156v-17.686H122.75zm231.938 0v17.686h45.156v95.283c-11.323 3.624-19.53 14.26-19.53 26.78-.002 15.506 12.585 28.063 28.092 28.063 15.507 0 28.063-12.557 28.063-28.062 0-12.32-7.935-22.778-18.97-26.563V291.095h-62.814zM192.375 341.53v54.033h17.688V341.53h-17.688zm36.47 0v86.564c-11.013 3.794-18.94 14.233-18.94 26.53 0 15.506 12.588 28.095 28.095 28.095s28.063-12.59 28.063-28.095c0-12.53-8.203-23.14-19.532-26.75V341.53h-17.686zm37.28 0v54.033h17.688l-.032-54.032h-17.655zm38.094 0v140.064h17.655V341.53H304.22z" fill="#21d121" fill-opacity="1" stroke="#0f0101" stroke-opacity="1" stroke-width="8" filter="url(#shadow-1)"></path></g></svg>
|
After Width: | Height: | Size: 2.9 KiB |
1
assets/icons/icon_vehicles.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="M18.313 17.78v62.095L170.22 231.75 43 211.625s64.877 30.418 116.344 54.438l-47.375 23.25L279.687 355c-3.582-3.086-7.13-6.347-10.594-9.813-39.543-39.54-54.888-88.3-34.28-108.906 20.605-20.604 69.362-5.26 108.905 34.282 3.355 3.356 6.53 6.754 9.53 10.22l-64.938-167.813L265 162.187c-24.094-51.623-55.03-117.532-55.03-117.532l19.468 122.875L79.655 17.78H18.312zm425.312 243.345l-43.406 46.938-23.595 5.875-33.594-18.344-50.06 50.094 18.31 33.562-5.874 23.563-46.03 42.562 80.093 14.03 28.717 28.72 13.188-13.22-51.5-51.53L469 471.625l-48.656-140.25 52.28 52.28 13.22-13.217-27.97-27.97-14.25-81.343zM392.062 357.5c69.03 70.208 33.083 106.35-37.218 37.22l37.22-37.22z" fill="#21d121" fill-opacity="1" stroke="#0f0101" stroke-opacity="1" stroke-width="8" filter="url(#shadow-1)"></path></g></svg>
|
After Width: | Height: | Size: 1.4 KiB |
@@ -197,11 +197,9 @@ i.fvtt-ftl-nomad {
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-left .character-hp input {
|
||||
flex: none;
|
||||
width: 2rem;
|
||||
margin-left: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-left .character-hp .damage-bonus {
|
||||
font-size: calc(var(--font-size-standard) * 0.8);
|
||||
width: 2.5rem;
|
||||
margin-left: 2px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-left .character-hp .hp-separator {
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
@@ -227,6 +225,17 @@ i.fvtt-ftl-nomad {
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .character-spec label {
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .character-spec .hero-armor {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .character-spec .hero-armor input {
|
||||
max-width: 3rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .character-name {
|
||||
display: flex;
|
||||
}
|
||||
@@ -235,85 +244,6 @@ i.fvtt-ftl-nomad {
|
||||
font-size: var(--font-size-title);
|
||||
width: 400px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san {
|
||||
align-content: flex-start;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san input {
|
||||
min-width: 2.2rem;
|
||||
max-width: 2.2rem;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san select {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .rollable:hover,
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .button {
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .san-checkbox {
|
||||
min-width: 1rem;
|
||||
max-width: 1rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .label-short-field {
|
||||
font-size: 0.9rem;
|
||||
max-width: 3rem;
|
||||
min-width: 3rem;
|
||||
flex-grow: 1;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .label-recovery {
|
||||
margin-left: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .label-field {
|
||||
font-size: 0.9rem;
|
||||
max-width: 6rem;
|
||||
min-width: 6rem;
|
||||
flex-grow: 1;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .label-bp {
|
||||
flex-grow: 1;
|
||||
max-width: 3rem;
|
||||
min-width: 3rem;
|
||||
margin-left: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .label-insanity {
|
||||
flex-grow: 1;
|
||||
margin-left: 4px;
|
||||
max-width: 8rem;
|
||||
min-width: 8rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .spacing {
|
||||
margin-left: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .san .d100 {
|
||||
flex: 0;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .willpower input {
|
||||
min-width: 2.4rem;
|
||||
max-width: 2.4rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .willpower input[type="checkbox"] {
|
||||
min-width: 1rem;
|
||||
max-width: 1rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .willpower .label-field {
|
||||
flex-grow: 1;
|
||||
margin-left: 4px;
|
||||
max-width: 5rem;
|
||||
min-width: 5rem;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right .willpower .checkbox {
|
||||
flex-grow: 0;
|
||||
min-width: 1rem;
|
||||
max-width: 1rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-pc .character-right label {
|
||||
min-width: 120px;
|
||||
}
|
||||
@@ -334,6 +264,11 @@ i.fvtt-ftl-nomad {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-skills .character-skill .icon-skill {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-main .character-skills .character-skill .rollable:hover,
|
||||
.fvtt-ftl-nomad .character-main .character-skills .character-skill .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
@@ -377,13 +312,24 @@ i.fvtt-ftl-nomad {
|
||||
.fvtt-ftl-nomad .character-biography .field-label {
|
||||
margin-left: 8px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-biography .adapted {
|
||||
.fvtt-ftl-nomad .character-biography .rank {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 8px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-biography .rank label {
|
||||
min-width: 6rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-biography .rank input {
|
||||
max-width: 4rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-biography .biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 8px;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-biography .adapted label {
|
||||
min-width: 20rem;
|
||||
.fvtt-ftl-nomad .character-biography .biodata label {
|
||||
min-width: 12rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .character-biography .resources {
|
||||
display: grid;
|
||||
@@ -581,6 +527,120 @@ i.fvtt-ftl-nomad {
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .talents {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .talents .talent {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .talents .talent .rollable:hover,
|
||||
.fvtt-ftl-nomad .tab.character-talents .talents .talent .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .talents .talent .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .talents .talent .damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .talents .talent .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .talents .talent .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .languages {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .languages .language {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .languages .language .rollable:hover,
|
||||
.fvtt-ftl-nomad .tab.character-talents .languages .language .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .languages .language .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .languages .language .damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .languages .language .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .languages .language .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .psionics {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .psionics .psionic {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .psionics .psionic .rollable:hover,
|
||||
.fvtt-ftl-nomad .tab.character-talents .psionics .psionic .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .psionics .psionic .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .psionics .psionic .damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .psionics .psionic .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-talents .psionics .psionic .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
@@ -590,6 +650,53 @@ i.fvtt-ftl-nomad {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .encumbrance {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .encumbrance input {
|
||||
max-width: 4rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .encumbrance .encumbered {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .implants {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .implants .implant {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .implants .implant .rollable:hover,
|
||||
.fvtt-ftl-nomad .tab.character-equipment .implants .implant .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .implants .implant .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .implants .implant .damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .implants .implant .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .implants .implant .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
@@ -627,7 +734,7 @@ i.fvtt-ftl-nomad {
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .armors {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .armors .armor {
|
||||
@@ -637,118 +744,51 @@ i.fvtt-ftl-nomad {
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .armors .armor .rollable:hover,
|
||||
.fvtt-ftl-nomad .tab.character-equipment .armors .armor .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .armors .armor .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .armors .armor .protection {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .armors .armor .name {
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .armors .armor .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .gears {
|
||||
.fvtt-ftl-nomad .tab.character-equipment .equipments {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .gears .gear {
|
||||
.fvtt-ftl-nomad .tab.character-equipment .equipments .equipment {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .gears .gear .rollable:hover,
|
||||
.fvtt-ftl-nomad .tab.character-equipment .gears .gear .rollable:focus {
|
||||
.fvtt-ftl-nomad .tab.character-equipment .equipments .equipment .rollable:hover,
|
||||
.fvtt-ftl-nomad .tab.character-equipment .equipments .equipment .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .gears .gear .controls {
|
||||
.fvtt-ftl-nomad .tab.character-equipment .equipments .equipment .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .gears .gear .name {
|
||||
.fvtt-ftl-nomad .tab.character-equipment .equipments .equipment .name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .gears .gear .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .rituals {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .rituals .ritual {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 20rem;
|
||||
max-width: 20rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .rituals .ritual .rollable:hover,
|
||||
.fvtt-ftl-nomad .tab.character-equipment .rituals .ritual .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .rituals .ritual .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .rituals .ritual .name {
|
||||
min-width: 17rem;
|
||||
max-width: 17rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .rituals .ritual .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .tomes {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .tomes .tome {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 20rem;
|
||||
max-width: 20rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .tomes .tome .rollable:hover,
|
||||
.fvtt-ftl-nomad .tab.character-equipment .tomes .tome .rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .tomes .tome .controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .tomes .tome .name {
|
||||
min-width: 17rem;
|
||||
max-width: 17rem;
|
||||
}
|
||||
.fvtt-ftl-nomad .tab.character-equipment .tomes .tome .item-img {
|
||||
.fvtt-ftl-nomad .tab.character-equipment .equipments .equipment .item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
@@ -2687,7 +2727,7 @@ i.fvtt-ftl-nomad {
|
||||
border: none;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
color: var(--color-dark-2);
|
||||
width: 4rem;
|
||||
width: 10rem;
|
||||
text-align: center;
|
||||
}
|
||||
.red-warning {
|
||||
|
101
lang/en.json
@@ -21,6 +21,26 @@
|
||||
},
|
||||
"Character": {
|
||||
"FIELDS": {
|
||||
"armor": {
|
||||
"value": {
|
||||
"label": "Protection"
|
||||
}
|
||||
},
|
||||
"heroPoints": {
|
||||
"label": "Hero Points"
|
||||
},
|
||||
"credits": {
|
||||
"label": "Credits"
|
||||
},
|
||||
"enc": {
|
||||
"label": "Enc",
|
||||
"value": {
|
||||
"label": "Enc Curr."
|
||||
},
|
||||
"max": {
|
||||
"label": "Enc Max"
|
||||
}
|
||||
},
|
||||
"age": {
|
||||
"label": "Age"
|
||||
},
|
||||
@@ -51,9 +71,54 @@
|
||||
"home": {
|
||||
"label": "Home"
|
||||
},
|
||||
"biodata": {
|
||||
"label": "Biodata",
|
||||
"gender": {
|
||||
"label": "Gender"
|
||||
},
|
||||
"height": {
|
||||
"label": "Height"
|
||||
},
|
||||
"weight": {
|
||||
"label": "Weight"
|
||||
},
|
||||
"age": {
|
||||
"label": "Age"
|
||||
},
|
||||
"hair": {
|
||||
"label": "Hair"
|
||||
},
|
||||
"eyes": {
|
||||
"label": "Eyes"
|
||||
},
|
||||
"home": {
|
||||
"label": "Home"
|
||||
},
|
||||
"birthplace": {
|
||||
"label": "Birthplace"
|
||||
}
|
||||
},
|
||||
"rank": {
|
||||
"label": "Rank",
|
||||
"experienced": {
|
||||
"label": "Experienced"
|
||||
},
|
||||
"expert": {
|
||||
"label": "Expert"
|
||||
},
|
||||
"veteran": {
|
||||
"label": "Veteran"
|
||||
},
|
||||
"elite": {
|
||||
"label": "Elite"
|
||||
},
|
||||
"legend": {
|
||||
"label": "Legend"
|
||||
}
|
||||
},
|
||||
"health": {
|
||||
"staminaValue": {
|
||||
"label": "Current"
|
||||
"label": "Cur."
|
||||
},
|
||||
"staminaMax": {
|
||||
"label": "Max"
|
||||
@@ -222,6 +287,11 @@
|
||||
}
|
||||
},
|
||||
"Label": {
|
||||
"Easy": "Easy (+1D)",
|
||||
"Moderate": "Moderate (+0D)",
|
||||
"Difficult": "Difficult (-1D)",
|
||||
"Formidable": "Formidable (-2D)",
|
||||
"Impossible": "Impossible (-4D)",
|
||||
"combat": "Combat",
|
||||
"physical": "Physical",
|
||||
"social": "Social",
|
||||
@@ -243,7 +313,7 @@
|
||||
"creature": "Creature",
|
||||
"criticalFailure": "Critical Failure",
|
||||
"criticalSuccess": "Critical Success",
|
||||
"current": "Current",
|
||||
"current": "Curr.",
|
||||
"damage": "Damage",
|
||||
"damageShort": "Dmg",
|
||||
"description": "Description",
|
||||
@@ -268,6 +338,7 @@
|
||||
"status": "Status",
|
||||
"success": "Success",
|
||||
"talents": "Talents",
|
||||
"implants": "Implants",
|
||||
"targetScore": "Target Score",
|
||||
"titleSkill": "Skill Roll",
|
||||
"titleWeapon": "Weapon Roll",
|
||||
@@ -299,7 +370,13 @@
|
||||
"skill": "Skill"
|
||||
},
|
||||
"Skill": {
|
||||
"Athletics": "Athletics",
|
||||
"Combat": "Combat",
|
||||
"Knowledge": "Knowledge",
|
||||
"Physical": "Physical",
|
||||
"Social": "Social",
|
||||
"Stealth": "Stealth",
|
||||
"Technology": "Technology",
|
||||
"Vehicles": "Vehicles",
|
||||
"FIELDS": {
|
||||
"base": {
|
||||
"label": "Base"
|
||||
@@ -367,7 +444,18 @@
|
||||
"NoTech": "No Tech"
|
||||
},
|
||||
"ToggleSheet": "Toggle Sheet",
|
||||
"Tooltip": {},
|
||||
"Tooltip": {
|
||||
"addTalent" : "Add Talent",
|
||||
"addSkill" : "Add Skill",
|
||||
"addWeapon" : "Add Weapon",
|
||||
"addArmor" : "Add Armor",
|
||||
"addEquipment" : "Add Equipment",
|
||||
"addImplant" : "Add Implant",
|
||||
"addLanguage" : "Add Language",
|
||||
"addPsionic" : "Add Psionic",
|
||||
"addCreatureAbility" : "Add Creature Ability",
|
||||
"addCreatureTrait" : "Add Creature Trait"
|
||||
},
|
||||
"Vehicle": {
|
||||
"FIELDS": {
|
||||
"airSpeed": {
|
||||
@@ -423,9 +511,12 @@
|
||||
},
|
||||
"Range": {
|
||||
"Handgun": "Handgun",
|
||||
"Assault": "Assault",
|
||||
"LongRange": "Long Range",
|
||||
"Melee": "Melee",
|
||||
"Rifle": "Rifle"
|
||||
"Rifle": "Rifle",
|
||||
"HeavyWeapon": "Heavy Weapon",
|
||||
"ThrownWeapon": "Thrown Weapon"
|
||||
},
|
||||
"Types": {
|
||||
"Energy": "Energy",
|
||||
|
@@ -66,6 +66,7 @@ export default class FTLNomadActorSheet extends HandlebarsApplicationMixin(found
|
||||
actor: this.document,
|
||||
system: this.document.system,
|
||||
source: this.document.toObject(),
|
||||
isEncumbered: this.document.system.isEncumbered(),
|
||||
enrichedDescription: await TextEditor.enrichHTML(this.document.system.description, { async: true }),
|
||||
isEditMode: this.isEditMode,
|
||||
isPlayMode: this.isPlayMode,
|
||||
|
@@ -12,9 +12,14 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
|
||||
contentClasses: ["character-content"],
|
||||
},
|
||||
actions: {
|
||||
createGear: FTLNomadCharacterSheet.#onCreateGear,
|
||||
createEquipment: FTLNomadCharacterSheet.#onCreateEquipment,
|
||||
createArmor: FTLNomadCharacterSheet.#onCreateArmor,
|
||||
createWeapon: FTLNomadCharacterSheet.#onCreateWeapon
|
||||
createWeapon: FTLNomadCharacterSheet.#onCreateWeapon,
|
||||
createTalent: FTLNomadCharacterSheet.#onCreateTalent,
|
||||
createImplant: FTLNomadCharacterSheet.#onCreateImplant,
|
||||
createPsionic: FTLNomadCharacterSheet.#onCreatePsionic,
|
||||
createLanguage: FTLNomadCharacterSheet.#onCreateLanguage
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
@@ -26,6 +31,9 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
|
||||
tabs: {
|
||||
template: "templates/generic/tab-navigation.hbs",
|
||||
},
|
||||
talents: {
|
||||
template: "systems/fvtt-ftl-nomad/templates/character-talents.hbs",
|
||||
},
|
||||
equipment: {
|
||||
template: "systems/fvtt-ftl-nomad/templates/character-equipment.hbs",
|
||||
},
|
||||
@@ -36,7 +44,7 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
|
||||
|
||||
/** @override */
|
||||
tabGroups = {
|
||||
sheet: "main",
|
||||
sheet: "talents",
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -45,6 +53,7 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
|
||||
*/
|
||||
#getTabs() {
|
||||
const tabs = {
|
||||
talents: { id: "talents", group: "sheet", icon: "fa-solid fa-compass", label: "FTLNOMAD.Label.talents" },
|
||||
equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "FTLNOMAD.Label.equipment" },
|
||||
biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "FTLNOMAD.Label.biography" },
|
||||
}
|
||||
@@ -62,7 +71,7 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
|
||||
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true })
|
||||
|
||||
|
||||
return context
|
||||
}
|
||||
|
||||
@@ -72,6 +81,17 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
|
||||
switch (partId) {
|
||||
case "main":
|
||||
break
|
||||
case "talents":
|
||||
context.tab = context.tabs.talents
|
||||
context.talents = doc.itemTypes.talent
|
||||
context.talents.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.implants = doc.itemTypes.implant
|
||||
context.implants.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.psionics = doc.itemTypes.psionic
|
||||
context.psionics.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.languages = doc.itemTypes.language
|
||||
context.languages.sort((a, b) => a.name.localeCompare(b.name))
|
||||
break
|
||||
case "equipment":
|
||||
context.tab = context.tabs.equipment
|
||||
context.weapons = doc.itemTypes.weapon
|
||||
@@ -90,8 +110,8 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
|
||||
return context
|
||||
}
|
||||
|
||||
|
||||
static #onCreateGear(event, target) {
|
||||
|
||||
static #onCreateEquipment(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newGear"), type: "gear" }])
|
||||
}
|
||||
|
||||
@@ -103,6 +123,22 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
|
||||
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.
|
||||
@@ -122,35 +158,16 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
|
||||
const rollType = $(event.currentTarget).data("roll-type")
|
||||
let item
|
||||
let li
|
||||
// Debug : console.log(">>>>", event, target, rollType)
|
||||
// Deprecated : if (this.isEditMode) return
|
||||
switch (rollType) {
|
||||
case "resource":
|
||||
item = foundry.utils.duplicate(this.actor.system.resources)
|
||||
item.name = game.i18n.localize(`FTLNOMAD.Label.Resources`)
|
||||
item.targetScore = item.permanentRating
|
||||
break
|
||||
case "char":
|
||||
let charId = $(event.currentTarget).data("char-id")
|
||||
item = foundry.utils.duplicate(this.actor.system.characteristics[charId])
|
||||
item.name = game.i18n.localize(`FTLNOMAD.Label.${charId}Long`)
|
||||
item.targetScore = item.value * 5
|
||||
break
|
||||
case "skill":
|
||||
li = $(event.currentTarget).parents(".item");
|
||||
item = this.actor.items.get(li.data("item-id"));
|
||||
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"));
|
||||
item.damageBonus = this.actor.system.damageBonus
|
||||
break
|
||||
case "san":
|
||||
item = foundry.utils.duplicate(this.actor.system.san)
|
||||
item.name = game.i18n.localize("FTLNOMAD.Label.SAN")
|
||||
item.targetScore = item.value
|
||||
break;
|
||||
default:
|
||||
throw new Error(`Unknown roll type ${rollType}`)
|
||||
}
|
||||
|
@@ -50,11 +50,26 @@ export const WEAPON_TYPES = {
|
||||
"grenade": { id: "grenade", label: "FTLNOMAD.Weapon.Types.Grenade" },
|
||||
"vehicle": { id: "vehicle", label: "FTLNOMAD.Weapon.Types.Vehicle" }
|
||||
}
|
||||
|
||||
export const WEAPON_RANGE = {
|
||||
"melee": { id: "melee", label: "FTLNOMAD.Weapon.Range.Melee" },
|
||||
"handgun": { id: "handgun", label: "FTLNOMAD.Weapon.Range.Handgun" },
|
||||
"rifle": { id: "rifle", label: "FTLNOMAD.Weapon.Range.Rifle" },
|
||||
"longrange": { id: "longrange", label: "FTLNOMAD.Weapon.Range.LongRange" }
|
||||
"handgun": { id: "handgun", label: "FTLNOMAD.Weapon.Range.Handgun", range: {close: 0, near:0, far:-2} },
|
||||
"assault": { id: "assault", label: "FTLNOMAD.Weapon.Range.Assault", range: {close: -2, near:0, far:-1, distant: -2} },
|
||||
"rifle": { id: "rifle", label: "FTLNOMAD.Weapon.Range.Rifle", range: {close: -3, near:0, far:0, distant: -1} },
|
||||
"melee": { id: "melee", label: "FTLNOMAD.Weapon.Range.Melee", range: {close: 0} },
|
||||
"heavyweapon": { id: "heavyweapon", label: "FTLNOMAD.Weapon.Range.HeavyWeapon", range: {near:-1, far:0, distant: 0} },
|
||||
"thrownweapon": { id: "thrownweapon", label: "FTLNOMAD.Weapon.Range.ThrownWeapon", range: {close: 0, near:-1} }
|
||||
}
|
||||
|
||||
export const ATTACK_MODIFIERS = {
|
||||
"two-attacks": -1,
|
||||
"aiming": 1,
|
||||
"dim": -1,
|
||||
"darkness": -2,
|
||||
"prone": -1,
|
||||
"cover": -2,
|
||||
"recoil-first": -1,
|
||||
"recoil-third": -2,
|
||||
"aware": -1
|
||||
}
|
||||
|
||||
export const TRIAGE_RESULTS = {
|
||||
@@ -98,12 +113,22 @@ export const CREATURE_SIZES = {
|
||||
"titanic": { id: "titanic", label: "FTLNOMAD.Creature.Size.Titanic" }
|
||||
}
|
||||
|
||||
export const MODIFIER_CHOICES = {
|
||||
"easy": { id: "easy", label: "FTLNOMAD.Label.Easy", value :"1" },
|
||||
"moderate": { id: "moderate", label: "FTLNOMAD.Label.Moderate", value: "0" },
|
||||
"difficult": { id: "difficult", label: "FTLNOMAD.Label.Difficult", value: "-1" },
|
||||
"formidable": { id: "formidable", label: "FTLNOMAD.Label.Formidable", value: "-2" },
|
||||
"impossible": { id: "impossible", label: "FTLNOMAD.Label.Impossible", value: "-4" }
|
||||
}
|
||||
|
||||
/**
|
||||
* Include all constant definitions within the SYSTEM global export
|
||||
* @type {Object}
|
||||
*/
|
||||
export const SYSTEM = {
|
||||
id: SYSTEM_ID,
|
||||
MODIFIER_CHOICES,
|
||||
ATTACK_MODIFIERS,
|
||||
TECH_AGES,
|
||||
WEAPON_TYPES,
|
||||
WEAPON_RANGE,
|
||||
|
@@ -40,14 +40,6 @@ export default class FTLNomadRoll extends Roll {
|
||||
return this.options.help
|
||||
}
|
||||
|
||||
get gene() {
|
||||
return this.options.gene
|
||||
}
|
||||
|
||||
get modifier() {
|
||||
return this.options.modifier
|
||||
}
|
||||
|
||||
get resultType() {
|
||||
return this.options.resultType
|
||||
}
|
||||
@@ -68,41 +60,15 @@ export default class FTLNomadRoll extends Roll {
|
||||
return this.options.weapon
|
||||
}
|
||||
|
||||
get isLowWP() {
|
||||
return this.options.isLowWP
|
||||
}
|
||||
|
||||
get isZeroWP() {
|
||||
return this.options.isZeroWP
|
||||
}
|
||||
|
||||
get isExhausted() {
|
||||
return this.options.isExhausted
|
||||
}
|
||||
|
||||
get isNudgedRoll() {
|
||||
return this.options.isNudgedRoll
|
||||
}
|
||||
|
||||
get wpCost() {
|
||||
return this.options.wpCost
|
||||
}
|
||||
|
||||
static updateResourceDialog(options) {
|
||||
let rating = 0
|
||||
if (options.rollItem.enableHand) {
|
||||
rating += options.rollItem.hand
|
||||
static updateFullFormula(options) {
|
||||
let fullFormula
|
||||
if ( options.numericModifier >= 0) {
|
||||
fullFormula = `${options.formula} + ${options.rollItem.value} + ${options.numericModifier}D`
|
||||
} else {
|
||||
fullFormula = `${options.formula} + ${options.rollItem.value} - ${Math.abs(options.numericModifier)}D`
|
||||
}
|
||||
if (options.rollItem.enableStowed) {
|
||||
rating += options.rollItem.stowed
|
||||
}
|
||||
if (options.rollItem.enableStorage) {
|
||||
rating += options.rollItem.storage
|
||||
}
|
||||
let multiplier = Number($(`.roll-skill-multiplier`).val())
|
||||
options.initialScore = rating
|
||||
options.percentScore = rating * multiplier
|
||||
$(".resource-score").text(`${rating} (${options.percentScore}%)`)
|
||||
$('#roll-dialog-full-formula').text(fullFormula)
|
||||
options.fullFormula = fullFormula
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -120,84 +86,25 @@ export default class FTLNomadRoll extends Roll {
|
||||
* @returns {Promise<Object|null>} The roll result or null if the dialog was cancelled.
|
||||
*/
|
||||
static async prompt(options = {}) {
|
||||
let formula = "1d100"
|
||||
let hasModifier = true
|
||||
let hasMultiplier = false
|
||||
options.isNudge = true
|
||||
let formula = "2d6"
|
||||
|
||||
switch (options.rollType) {
|
||||
case "skill":
|
||||
console.log(options.rollItem)
|
||||
options.initialScore = options.rollItem.system.computeScore()
|
||||
break
|
||||
case "san":
|
||||
case "char":
|
||||
options.initialScore = options.rollItem.targetScore
|
||||
options.isNudge = (options.rollType !== "san")
|
||||
break
|
||||
case "resource":
|
||||
hasModifier = false
|
||||
hasMultiplier = true
|
||||
options.initialScore = options.rollItem.targetScore
|
||||
options.totalRating = options.rollItem.targetScore
|
||||
options.percentScore = options.rollItem.targetScore * 5
|
||||
options.rollItem.enableHand = true
|
||||
options.rollItem.enableStowed = true
|
||||
options.rollItem.enableStorage = true
|
||||
options.isNudge = false
|
||||
break
|
||||
case "damage":
|
||||
let formula = options.rollItem.system.damage
|
||||
if ( options.rollItem.system.weaponType === "melee" || options.rollItem.system.weaponType === "unarmed") {
|
||||
formula += ` + ${options.rollItem.damageBonus}`
|
||||
}
|
||||
let damageRoll = new Roll(formula)
|
||||
await damageRoll.evaluate()
|
||||
await damageRoll.toMessage({
|
||||
flavor: `${options.rollItem.name} - Damage Roll`
|
||||
});
|
||||
let isLethal = false
|
||||
options.isNudge = false
|
||||
if (options.rollItem.system.lethality > 0) {
|
||||
let lethalityRoll = new Roll("1d100")
|
||||
await lethalityRoll.evaluate()
|
||||
isLethal = (lethalityRoll.total <= options.rollItem.system.lethality)
|
||||
await lethalityRoll.toMessage({
|
||||
flavor: `${options.rollItem.name} - Lethality Roll : ${lethalityRoll.total} <= ${options.rollItem.system.lethality} => ${isLethal}`
|
||||
});
|
||||
}
|
||||
return
|
||||
case "weapon":
|
||||
let era = game.settings.get("fvtt-ftl-nomad", "settings-era")
|
||||
if (era !== options.rollItem.system.settings) {
|
||||
ui.notifications.error(game.i18n.localize("FTLNOMAD.Notifications.WrongEra"))
|
||||
console.log("WP Wrong Era", era, options.rollItem.system.weaponType)
|
||||
return
|
||||
}
|
||||
if (!SYSTEM.WEAPON_SKILL_MAPPING[era] || !SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType]) {
|
||||
ui.notifications.error(game.i18n.localize("FTLNOMAD.Notifications.NoWeaponType"))
|
||||
console.log("WP Not found", era, options.rollItem.system.weaponType)
|
||||
return
|
||||
}
|
||||
options.weapon = options.rollItem
|
||||
if (options.rollItem.system.hasDirectSkill) {
|
||||
let skillName = options.rollItem.name
|
||||
options.rollItem = {type: "skill", name: skillName, system: {base: 0, bonus: options.weapon.system.directSkillValue} }
|
||||
options.initialScore = options.weapon.system.directSkillValue
|
||||
} else {
|
||||
let skillName = game.i18n.localize(SYSTEM.WEAPON_SKILL_MAPPING[era][options.rollItem.system.weaponType])
|
||||
let actor = game.actors.get(options.actorId)
|
||||
options.rollItem = actor.items.find(i => i.type === "skill" && i.name.toLowerCase() === skillName.toLowerCase())
|
||||
if (!options.rollItem) {
|
||||
ui.notifications.error(game.i18n.localize("FTLNOMAD.Notifications.NoWeaponSkill"))
|
||||
return
|
||||
}
|
||||
options.initialScore = options.rollItem.system.computeScore()
|
||||
console.log("WEAPON", skillName, era, options.rollItem)
|
||||
}
|
||||
let actor = game.actors.get(options.actorId)
|
||||
options.weapon = foundry.utils.duplicate(options.rollItem)
|
||||
options.rollItem = actor.system.skills.combat
|
||||
break
|
||||
default:
|
||||
options.initialScore = 50
|
||||
break
|
||||
}
|
||||
|
||||
@@ -209,37 +116,53 @@ export default class FTLNomadRoll extends Roll {
|
||||
})
|
||||
|
||||
const choiceModifier = SYSTEM.MODIFIER_CHOICES
|
||||
const choiceMultiplier = SYSTEM.MULTIPLIER_CHOICES
|
||||
let choiceRangeModifier = {}
|
||||
let rangeModifier = 0
|
||||
if ( options.weapon) {
|
||||
// Build the range modifiers
|
||||
let range = SYSTEM.WEAPON_RANGE[options.weapon.system.rangeType]
|
||||
for (let [key, value] of Object.entries(range.range)) {
|
||||
choiceRangeModifier[key] = { label: `${key} (${value}D)`, value: value }
|
||||
if (!rangeModifier && value) {
|
||||
rangeModifier = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let modifier = "+0"
|
||||
let multiplier = "5"
|
||||
let modifier = "0"
|
||||
options.numericModifier = rangeModifier
|
||||
let fullFormula = `${formula} + ${options.rollItem.value}`
|
||||
if (options.isEncumbered) {
|
||||
options.numericModifier += -1
|
||||
fullFormula += ` - ${options.numericModifier}D`
|
||||
} else {
|
||||
options.numericModifier += 0
|
||||
fullFormula += ` + ${options.numericModifier}D`
|
||||
}
|
||||
options.fullFormula = fullFormula
|
||||
options.formula = formula
|
||||
|
||||
let dialogContext = {
|
||||
actorId: options.actorId,
|
||||
actorName: options.actorName,
|
||||
rollType: options.rollType,
|
||||
rollItem: foundry.utils.duplicate(options.rollItem), // Object only, no class
|
||||
fullFormula,
|
||||
weapon: options?.weapon,
|
||||
initialScore: options.initialScore,
|
||||
targetScore: options.initialScore,
|
||||
isLowWP: options.isLowWP,
|
||||
isZeroWP: options.isZeroWP,
|
||||
isExhausted: options.isExhausted,
|
||||
enableHand: options.rollItem.enableHand,
|
||||
enableStowed: options.rollItem.enableStowed,
|
||||
enableStorage: options.rollItem.enableStorage,
|
||||
isEncumbered: options.isEncumbered,
|
||||
talents: options.talents,
|
||||
rollModes,
|
||||
fieldRollMode,
|
||||
choiceModifier,
|
||||
choiceMultiplier,
|
||||
choiceRangeModifier,
|
||||
rangeModifier,
|
||||
formula,
|
||||
hasTarget: options.hasTarget,
|
||||
hasModifier,
|
||||
hasMultiplier,
|
||||
modifier,
|
||||
multiplier
|
||||
}
|
||||
const content = await renderTemplate("systems/fvtt-ftl-nomad/templates/roll-dialog.hbs", dialogContext)
|
||||
|
||||
const title = CthulhuEternalRoll.createTitle(options.rollType, options.rollTarget)
|
||||
const title = FTLNomadRoll.createTitle(options.rollType, options.rollTarget)
|
||||
const label = game.i18n.localize("FTLNOMAD.Roll.roll")
|
||||
const rollContext = await foundry.applications.api.DialogV2.wait({
|
||||
window: { title: title },
|
||||
@@ -258,24 +181,27 @@ export default class FTLNomadRoll extends Roll {
|
||||
},
|
||||
],
|
||||
actions: {
|
||||
"selectHand": (event, button, dialog) => {
|
||||
options.rollItem.enableHand = !options.rollItem.enableHand
|
||||
this.updateResourceDialog(options)
|
||||
},
|
||||
"selectStowed": (event, button, dialog) => {
|
||||
options.rollItem.enableStowed = !options.rollItem.enableStowed
|
||||
this.updateResourceDialog(options)
|
||||
},
|
||||
"selectStorage": (event, button, dialog) => {
|
||||
options.rollItem.enableStorage = !options.rollItem.enableStorage
|
||||
this.updateResourceDialog(options)
|
||||
}
|
||||
},
|
||||
rejectClose: false, // Click on Close button will not launch an error
|
||||
render: (event, dialog) => {
|
||||
$(".roll-skill-multiplier").change(event => {
|
||||
options.multiplier = Number(event.target.value)
|
||||
this.updateResourceDialog(options)
|
||||
$(".roll-skill-modifier").change(event => {
|
||||
options.numericModifier += Number(event.target.value)
|
||||
FTLNomadRoll.updateFullFormula(options)
|
||||
})
|
||||
$(".roll-skill-range-modifier").change(event => {
|
||||
options.numericModifier += Number(event.target.value)
|
||||
FTLNomadRoll.updateFullFormula(options)
|
||||
})
|
||||
$(".select-combat-option").change(event => {
|
||||
console.log(event)
|
||||
let field = $(event.target).data("field")
|
||||
let modifier = SYSTEM.ATTACK_MODIFIERS[field]
|
||||
if ( event.target.checked) {
|
||||
options.numericModifier += modifier
|
||||
} else {
|
||||
options.numericModifier -= modifier
|
||||
}
|
||||
FTLNomadRoll.updateFullFormula(options)
|
||||
})
|
||||
}
|
||||
})
|
||||
@@ -285,25 +211,19 @@ export default class FTLNomadRoll extends Roll {
|
||||
|
||||
let rollData = foundry.utils.mergeObject(foundry.utils.duplicate(options), rollContext)
|
||||
rollData.rollMode = rollContext.visibility
|
||||
|
||||
// Update target score
|
||||
console.log("Rolldata", rollData, options)
|
||||
if (options.rollType === "resource") {
|
||||
rollData.targetScore = options.initialScore * Number(rollContext.multiplier)
|
||||
} else {
|
||||
rollData.targetScore = Math.min(Math.max(options.initialScore + Number(rollData.modifier), 0), 100)
|
||||
if (rollData.isLowWP || rollData.isExhausted) {
|
||||
rollData.targetScore -= 20
|
||||
}
|
||||
if (rollData.isZeroWP) {
|
||||
rollData.targetScore = 0
|
||||
}
|
||||
rollData.targetScore = Math.min(Math.max(rollData.targetScore, 0), 100)
|
||||
}
|
||||
rollData.targetScore = 8
|
||||
|
||||
if (Hooks.call("fvtt-ftl-nomad.preRoll", options, rollData) === false) return
|
||||
|
||||
let diceFormula = `${2+Math.abs(options.numericModifier)}D6`
|
||||
if ( options.numericModifier > 0 ) {
|
||||
diceFormula += `kh2 + ${options.rollItem.value}`
|
||||
} else {
|
||||
diceFormula += `kl2 + ${options.rollItem.value}`
|
||||
}
|
||||
|
||||
const roll = new this(formula, options.data, rollData)
|
||||
const roll = new this(diceFormula, options.data, rollData)
|
||||
await roll.evaluate()
|
||||
|
||||
roll.displayRollResult(roll, options, rollData)
|
||||
@@ -317,34 +237,15 @@ export default class FTLNomadRoll extends Roll {
|
||||
|
||||
// Compute the result quality
|
||||
let resultType = "failure"
|
||||
let dec = Math.floor(this.total / 10)
|
||||
let unit = this.total - (dec * 10)
|
||||
if (this.total <= rollData.targetScore) {
|
||||
if (this.total >= 8) {
|
||||
resultType = "success"
|
||||
// Detect if decimal == unit in the dire total result
|
||||
if (dec === unit || this.total === 1) {
|
||||
resultType = "successCritical"
|
||||
}
|
||||
} else {
|
||||
// Detect if decimal == unit in the dire total result
|
||||
if (dec === unit || this.total === 100) {
|
||||
resultType = "failureCritical"
|
||||
}
|
||||
}
|
||||
|
||||
this.options.resultType = resultType
|
||||
if (this.options.isNudgedRoll) {
|
||||
this.options.isSuccess = resultType === "success" || resultType === "successCritical"
|
||||
this.options.isFailure = resultType === "failure" || resultType === "failureCritical"
|
||||
this.options.isCritical = false
|
||||
} else {
|
||||
this.options.isSuccess = resultType === "success" || resultType === "successCritical"
|
||||
this.options.isFailure = resultType === "failure" || resultType === "failureCritical"
|
||||
this.options.isCritical = resultType === "successCritical" || resultType === "failureCritical"
|
||||
}
|
||||
this.options.isLowWP = rollData.isLowWP
|
||||
this.options.isZeroWP = rollData.isZeroWP
|
||||
this.options.isExhausted = rollData.isExhausted
|
||||
this.options.isSuccess = resultType === "success"
|
||||
this.options.isFailure = resultType === "failure"
|
||||
this.options.isEncumbered = rollData.isEncumbered
|
||||
this.options.rollData = foundry.utils.duplicate(rollData)
|
||||
}
|
||||
|
||||
@@ -361,10 +262,6 @@ export default class FTLNomadRoll extends Roll {
|
||||
return `${game.i18n.localize("FTLNOMAD.Label.titleSkill")}`
|
||||
case "weapon":
|
||||
return `${game.i18n.localize("FTLNOMAD.Label.titleWeapon")}`
|
||||
case "char":
|
||||
return `${game.i18n.localize("FTLNOMAD.Label.titleCharacteristic")}`
|
||||
case "san":
|
||||
return `${game.i18n.localize("FTLNOMAD.Label.titleSAN")}`
|
||||
default:
|
||||
return game.i18n.localize("FTLNOMAD.Label.titleStandard")
|
||||
}
|
||||
@@ -407,6 +304,8 @@ export default class FTLNomadRoll extends Roll {
|
||||
cardData.diceTotal = this.dice.reduce((t, d) => t + d.total, 0)
|
||||
cardData.isGM = game.user.isGM
|
||||
cardData.formula = this.formula
|
||||
cardData.fullFormula = this.options.fullFormula
|
||||
cardData.numericModifier = this.options.numericModifier
|
||||
cardData.total = this.total
|
||||
cardData.actorId = this.actorId
|
||||
cardData.actingCharName = this.actorName
|
||||
@@ -418,11 +317,7 @@ export default class FTLNomadRoll extends Roll {
|
||||
cardData.realDamage = this.realDamage
|
||||
cardData.isPrivate = isPrivate
|
||||
cardData.weapon = this.weapon
|
||||
cardData.isLowWP = this.isLowWP
|
||||
cardData.isZeroWP = this.isZeroWP
|
||||
cardData.isExhausted = this.isExhausted
|
||||
cardData.isNudgedRoll = this.isNudgedRoll
|
||||
cardData.wpCost = this.wpCost
|
||||
cardData.isEncumbered = this.isEncumbered
|
||||
|
||||
cardData.cssClass = cardData.css.join(" ")
|
||||
cardData.tooltip = isPrivate ? "" : await this.getTooltip()
|
||||
|
@@ -18,6 +18,7 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
||||
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 })
|
||||
}
|
||||
@@ -43,6 +44,10 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
||||
max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
})
|
||||
|
||||
schema.armor = new fields.SchemaField({
|
||||
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
})
|
||||
|
||||
schema.credits = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
schema.rank = new fields.SchemaField({
|
||||
experienced: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }),
|
||||
@@ -55,6 +60,7 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
||||
schema.biodata = new fields.SchemaField({
|
||||
age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }),
|
||||
height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }),
|
||||
weight: new fields.NumberField({ ...requiredInteger, initial: 70, min: 1 }),
|
||||
gender: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
home: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
birthplace: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
@@ -70,9 +76,33 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
||||
|
||||
prepareDerivedData() {
|
||||
super.prepareDerivedData();
|
||||
|
||||
|
||||
let encMax = 10 + (2*this.skills.physical.value)
|
||||
if (encMax !== this.enc.max) {
|
||||
this.enc.max = encMax
|
||||
}
|
||||
let enc = 0
|
||||
let armor = 0
|
||||
for (let i of this.parent.items) {
|
||||
if (i.system?.enc) {
|
||||
enc += i.system.enc
|
||||
}
|
||||
if ( i.system?.protection) {
|
||||
armor += i.system.protection
|
||||
}
|
||||
}
|
||||
if (enc !== this.enc.value) {
|
||||
this.enc.value = enc
|
||||
}
|
||||
if (armor !== this.armor.value) {
|
||||
this.armor.value = armor
|
||||
}
|
||||
}
|
||||
|
||||
isEncumbered() {
|
||||
return this.enc.value > this.enc.max
|
||||
}
|
||||
|
||||
/** */
|
||||
/**
|
||||
* Rolls a dice for a character.
|
||||
@@ -84,12 +114,14 @@ export default class FTLNomadProtagonist extends foundry.abstract.TypeDataModel
|
||||
let opponentTarget
|
||||
const hasTarget = opponentTarget !== undefined
|
||||
|
||||
let roll = await CthulhuEternalRoll.prompt({
|
||||
let roll = await FTLNomadRoll.prompt({
|
||||
rollType,
|
||||
rollItem,
|
||||
actorId: this.parent.id,
|
||||
actorName: this.parent.name,
|
||||
actorImage: this.parent.img,
|
||||
talents: this.parent.items.filter(i => i.type === "talent" && i.system.isAdvantage),
|
||||
isEncumbered: this.isEncumbered(),
|
||||
hasTarget,
|
||||
target: opponentTarget
|
||||
})
|
||||
|
@@ -39,11 +39,9 @@
|
||||
align-items: center;
|
||||
input {
|
||||
flex: none;
|
||||
width: 2rem;
|
||||
margin-left: 4px;
|
||||
}
|
||||
.damage-bonus {
|
||||
font-size: calc(var(--font-size-standard) * 0.8);
|
||||
width: 2.5rem;
|
||||
margin-left: 2px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.hp-separator {
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
@@ -77,6 +75,19 @@
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
|
||||
.character-spec {
|
||||
label {
|
||||
max-width: 6rem;
|
||||
}
|
||||
.hero-armor {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
input {
|
||||
max-width: 3rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.character-name {
|
||||
display: flex;
|
||||
input {
|
||||
@@ -85,87 +96,6 @@
|
||||
width: 400px;
|
||||
}
|
||||
}
|
||||
.san {
|
||||
align-content: flex-start;
|
||||
input {
|
||||
min-width: 2.2rem;
|
||||
max-width: 2.2rem;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
select {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.button {
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.san-checkbox {
|
||||
min-width: 1rem;
|
||||
max-width: 1rem;
|
||||
}
|
||||
.label-short-field {
|
||||
font-size: 0.9rem;
|
||||
max-width: 3rem;
|
||||
min-width: 3rem;
|
||||
flex-grow: 1;
|
||||
}
|
||||
.label-recovery {
|
||||
margin-left: 4px;
|
||||
}
|
||||
.label-field {
|
||||
font-size: 0.9rem;
|
||||
max-width: 6rem;
|
||||
min-width: 6rem;
|
||||
flex-grow: 1;
|
||||
}
|
||||
.label-bp {
|
||||
flex-grow: 1;
|
||||
max-width: 3rem;
|
||||
min-width: 3rem;
|
||||
margin-left: 4px;
|
||||
}
|
||||
.label-insanity {
|
||||
flex-grow: 1;
|
||||
margin-left: 4px;
|
||||
max-width: 8rem;
|
||||
min-width: 8rem;
|
||||
}
|
||||
.spacing {
|
||||
margin-left: 4px;
|
||||
}
|
||||
.d100 {
|
||||
flex: 0;
|
||||
}
|
||||
}
|
||||
.willpower {
|
||||
input {
|
||||
min-width: 2.4rem;
|
||||
max-width: 2.4rem;
|
||||
}
|
||||
input[type="checkbox"] {
|
||||
min-width: 1rem;
|
||||
max-width: 1rem;
|
||||
}
|
||||
.label-field {
|
||||
flex-grow: 1;
|
||||
margin-left: 4px;
|
||||
max-width: 5rem;
|
||||
min-width: 5rem;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.checkbox {
|
||||
flex-grow: 0;
|
||||
min-width: 1rem;
|
||||
max-width: 1rem;
|
||||
}
|
||||
}
|
||||
label {
|
||||
min-width: 120px;
|
||||
}
|
||||
@@ -190,6 +120,11 @@
|
||||
.character-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);
|
||||
@@ -239,12 +174,24 @@
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.adapted {
|
||||
.rank {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 8px;
|
||||
label {
|
||||
min-width: 6rem;
|
||||
}
|
||||
input {
|
||||
max-width: 4rem;
|
||||
}
|
||||
}
|
||||
|
||||
.biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 8px;
|
||||
label {
|
||||
min-width: 20rem;
|
||||
min-width: 12rem;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -455,6 +402,127 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.character-talents {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
.talents {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.talent {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.languages {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.language {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.psionics {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.psionic {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.tab.character-equipment {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
@@ -465,6 +533,56 @@
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
.encumbrance {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 4px;
|
||||
input {
|
||||
max-width: 4rem;
|
||||
}
|
||||
.encumbered {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.implants {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.implant {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
@@ -500,9 +618,10 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.armors {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.armor {
|
||||
display: flex;
|
||||
@@ -510,23 +629,18 @@
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.protection {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
@@ -536,11 +650,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
.gears {
|
||||
.equipments {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
.gear {
|
||||
.equipment {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
@@ -568,70 +682,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.rituals {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.ritual {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 20rem;
|
||||
max-width: 20rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 17rem;
|
||||
max-width: 17rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tomes {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.tome {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 20rem;
|
||||
max-width: 20rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 17rem;
|
||||
max-width: 17rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
|
@@ -31,7 +31,7 @@
|
||||
border: none;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
color: var(--color-dark-2);
|
||||
width: 4rem;
|
||||
width: 10rem;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
@@ -6,7 +6,7 @@
|
||||
"download": "#{DOWNLOAD}#",
|
||||
"url": "https://www.uberwald.me/gitea/public/fvtt-ftl-nomad",
|
||||
"license": "LICENSE",
|
||||
"version": "12.0.0",
|
||||
"version": "12.0.1",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Uberwald",
|
||||
|
@@ -1,17 +1,24 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "FTLNOMAD.Label.resources"}}</legend>
|
||||
<div class="resources">
|
||||
</div>
|
||||
<fieldset class="rank">
|
||||
<legend>Rank</legend>
|
||||
{{formField systemFields.rank.fields.experienced value=system.rank.experienced type="number" rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.rank.fields.expert value=system.rank.expert type="number" rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.rank.fields.veteran value=system.rank.veteran type="number" rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.rank.fields.elite value=system.rank.elite type="number" rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.rank.fields.legend value=system.rank.legend type="number" rootId=partId disabled=isPlayMode}}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<fieldset class="biodata">
|
||||
<legend>{{localize "FTLNOMAD.Label.biodata"}}</legend>
|
||||
<div class="adapted">
|
||||
</div>
|
||||
<div class="biodata">
|
||||
</div>
|
||||
{{formField systemFields.biodata.fields.gender value=system.biodata.gender rootId=partId disabled=isPlayMode classes="short"}}
|
||||
{{formField systemFields.biodata.fields.age value=system.biodata.age rootId=partId disabled=isPlayMode classes="short"}}
|
||||
{{formField systemFields.biodata.fields.height value=system.biodata.height rootId=partId disabled=isPlayMode classes="short"}}
|
||||
{{formField systemFields.biodata.fields.weight value=system.biodata.weight rootId=partId disabled=isPlayMode classes="short"}}
|
||||
{{formField systemFields.biodata.fields.eyes value=system.biodata.eyes rootId=partId disabled=isPlayMode classes="short"}}
|
||||
{{formField systemFields.biodata.fields.hair value=system.biodata.hair rootId=partId disabled=isPlayMode classes="short"}}
|
||||
{{formField systemFields.biodata.fields.home value=system.biodata.home rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.biodata.fields.birthplace value=system.biodata.birthplace rootId=partId disabled=isPlayMode}}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
|
@@ -1,5 +1,15 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset class="encumbrance">
|
||||
{{#if isEncumbered}}
|
||||
{{formField systemFields.enc.fields.value value=system.enc.value rootId=partId disabled=true classes="encumbered"}}
|
||||
{{else }}
|
||||
{{formField systemFields.enc.fields.value value=system.enc.value rootId=partId disabled=true}}
|
||||
{{/if}}
|
||||
{{formField systemFields.enc.fields.max value=system.enc.max rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.credits value=system.credits rootId=partId }}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "FTLNOMAD.Label.weapons"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize " FTLNOMAD.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
||||
@@ -7,16 +17,15 @@
|
||||
</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}}" />
|
||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||
<i class="fa-regular fa-dice"></i>
|
||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
|
||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||
<i class="fa-regular fa-dice"></i>
|
||||
<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"}} :
|
||||
@@ -39,8 +48,7 @@
|
||||
</legend>
|
||||
<div class="armors">
|
||||
{{#each armors as |item|}}
|
||||
{{!log 'armor' this}}
|
||||
<div class="armor" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||
<div class="armor item" 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}}
|
||||
@@ -57,6 +65,40 @@
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "FTLNOMAD.Label.implants"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize " FTLNOMAD.Tooltip.addTalent"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createImplant"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="implants">
|
||||
{{#each implants as |item|}}
|
||||
{{!log 'weapon' this}}
|
||||
<div class="implant 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}}" />
|
||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||
<div class="name" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
|
||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
||||
data-roll-value="{{item.system.damage}}">
|
||||
{{#if item.system.isAdvantage}}
|
||||
<i data-tooltip="Provides advantage" class="fas fa-circle-chevron-up"></i>
|
||||
{{else}}
|
||||
{{/if}}
|
||||
<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.equipments"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize " FTLNOMAD.Tooltip.addGear"}}" data-tooltip-direction="UP"><i
|
||||
|
@@ -12,11 +12,9 @@
|
||||
<legend>{{localize "FTLNOMAD.Label.Stamina"}}</legend>
|
||||
<div class="flexrow">
|
||||
{{formField systemFields.health.fields.staminaValue value=health.staminaValue}}
|
||||
<span class="hp-separator">/</span>
|
||||
{{formField systemFields.health.fields.staminaMax value=system.health.staminaMax rootId=partId
|
||||
disabled=true}}
|
||||
{{formField systemFields.health.fields.staminaMax value=system.health.staminaMax rootId=partId disabled=true}}
|
||||
</div>
|
||||
<div class="flexrow ">
|
||||
<div class="flexrow">
|
||||
{{formField systemFields.health.fields.wounds value=system.health.wounds }}
|
||||
</div>
|
||||
</fieldset>
|
||||
@@ -30,68 +28,69 @@
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<fieldset class="rank">
|
||||
<fieldset class="character-spec">
|
||||
{{formField systemFields.concept value=system.concept rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.species value=system.species rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.archetype value=system.archetype rootId=partId disabled=isPlayMode}}
|
||||
<div class="hero-armor">
|
||||
{{formField systemFields.heroPoints value=system.heroPoints rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.armor.fields.value value=system.armor.value rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<fieldset class="character-skills character-skills-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<legend>{{localize "FTLNOMAD.Label.skills"}}</legend>
|
||||
<div class="character-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/ui/2d6.svg" class="d6s" />
|
||||
<label class="rollable" data-roll-type="skill" data-char-id="combat">{{localize
|
||||
<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>
|
||||
{{formField systemFields.skills.fields.combat.fields.value value=system.skills.combat.value
|
||||
rootId=partId disabled=isPlayMode }}
|
||||
{{formInput systemFields.skills.fields.combat.fields.value value=system.skills.combat.value rootId=partId disabled=isPlayMode type="number" }}
|
||||
</div>
|
||||
<div class="character-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/ui/2d6.svg" class="d6s" />
|
||||
<label class="rollable" data-roll-type="skill" data-char-id="knowledge">{{localize
|
||||
<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>
|
||||
{{formField systemFields.skills.fields.knowledge.fields.value value=system.skills.knowledge.value
|
||||
rootId=partId disabled=isPlayMode }}
|
||||
{{formInput systemFields.skills.fields.knowledge.fields.value value=system.skills.knowledge.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="character-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/ui/2d6.svg" class="d6s" />
|
||||
<label class="rollable" data-roll-type="skill" data-char-id="social">{{localize
|
||||
<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>
|
||||
{{formField systemFields.skills.fields.social.fields.value value=system.skills.social.value
|
||||
rootId=partId disabled=isPlayMode }}
|
||||
{{formInput systemFields.skills.fields.social.fields.value value=system.skills.social.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="character-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/ui/2d6.svg" class="d6s" />
|
||||
<label class="rollable" data-roll-type="skill" data-char-id="physical">{{localize
|
||||
<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>
|
||||
{{formField systemFields.skills.fields.physical.fields.value value=system.skills.physical.value
|
||||
rootId=partId disabled=isPlayMode }}
|
||||
{{formInput systemFields.skills.fields.physical.fields.value value=system.skills.physical.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="character-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/ui/2d6.svg" class="d6s" />
|
||||
<label class="rollable" data-roll-type="skill" data-char-id="stealth">{{localize
|
||||
<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>
|
||||
{{formField systemFields.skills.fields.stealth.fields.value value=system.skills.stealth.value
|
||||
rootId=partId disabled=isPlayMode }}
|
||||
{{formInput systemFields.skills.fields.stealth.fields.value value=system.skills.stealth.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="character-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/ui/2d6.svg" class="d6s" />
|
||||
<label class="rollable" data-roll-type="skill" data-char-id="vehicles">{{localize
|
||||
<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>
|
||||
{{formField systemFields.skills.fields.vehicles.fields.value value=system.skills.vehicles.value
|
||||
rootId=partId disabled=isPlayMode }}
|
||||
{{formInput systemFields.skills.fields.vehicles.fields.value value=system.skills.vehicles.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="character-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/ui/2d6.svg" class="d6s" />
|
||||
<label class="rollable" data-roll-type="skill" data-char-id="technology">{{localize
|
||||
<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>
|
||||
{{formField systemFields.skills.fields.technology.fields.value value=system.skills.technology.value
|
||||
rootId=partId disabled=isPlayMode }}
|
||||
{{formInput systemFields.skills.fields.technology.fields.value value=system.skills.technology.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
106
templates/character-talents.hbs
Normal file
@@ -0,0 +1,106 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "FTLNOMAD.Label.talents"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize " FTLNOMAD.Tooltip.addTalent"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createTalent"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="talents">
|
||||
{{#each talents as |item|}}
|
||||
{{!log 'weapon' this}}
|
||||
<div class="talent 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}}" />
|
||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||
<div class="name" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
|
||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
||||
data-roll-value="{{item.system.damage}}">
|
||||
{{#if item.system.isAdvantage}}
|
||||
<i data-tooltip="Provides advantage" class="fas fa-circle-chevron-up"></i>
|
||||
{{else}}
|
||||
{{/if}}
|
||||
<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.psionics"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize " FTLNOMAD.Tooltip.addImplant"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createPsionic"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="psionics">
|
||||
{{#each psionics as |item|}}
|
||||
{{!log 'weapon' this}}
|
||||
<div class="psionic 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}}" />
|
||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||
<div class="name" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
|
||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
||||
data-roll-value="{{item.system.damage}}">
|
||||
{{#if item.system.isAdvantage}}
|
||||
<i data-tooltip="Provides advantage" class="fas fa-circle-chevron-up"></i>
|
||||
{{else}}
|
||||
{{/if}}
|
||||
<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.languages"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize " FTLNOMAD.Tooltip.addLanguage"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createLanguage"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="languages">
|
||||
{{#each languages as |item|}}
|
||||
{{!log 'weapon' this}}
|
||||
<div class="language 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}}" />
|
||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||
<div class="name" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
|
||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
||||
data-roll-value="{{item.system.damage}}">
|
||||
{{#if item.system.isAdvantage}}
|
||||
<i data-tooltip="Provides advantage" class="fas fa-circle-chevron-up"></i>
|
||||
{{else}}
|
||||
{{/if}}
|
||||
<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>
|
||||
|
||||
|
||||
</section>
|
@@ -6,74 +6,39 @@
|
||||
</div>
|
||||
<div class="intro-right">
|
||||
<ul>
|
||||
{{#if (eq rollType "char")}}
|
||||
<li><strong>{{localize "FTLNOMAD.Label.charRoll"}}</strong></li>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq rollType "skill")}}
|
||||
<li><strong>{{localize "FTLNOMAD.Label.skillRoll"}}</strong></li>
|
||||
{{/if}}
|
||||
|
||||
{{#if isNudgedRoll}}
|
||||
<li><strong>{{localize "FTLNOMAD.Label.nudgedRoll"}} : {{wpCost}} WP spent</strong></li>
|
||||
{{/if}}
|
||||
|
||||
{{#if weapon}}
|
||||
<li><strong>Weapon : {{weapon.name}}</strong></li>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq rollType "resource")}}
|
||||
<li><strong>{{rollItem.name}} : {{initialScore}}</strong></li>
|
||||
{{else}}
|
||||
<li><strong>{{rollItem.name}} : {{initialScore}}%</strong></li>
|
||||
<li><strong>{{localize rollItem.label}} : {{fullFormula}}</strong></li>
|
||||
|
||||
{{#if isEncumbered}}
|
||||
<li class="red-warning">Encumbered : -1D</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if isZeroWP}}
|
||||
<li class="red-warning">Zero WP : Automatic failure (ie 0%)</li>
|
||||
{{else}}
|
||||
{{#if isLowWP}}
|
||||
<li class="orange-warning">Low WP : -20%</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isExhausted}}
|
||||
<li class="orange-warning">Exhausted : -20%</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq rollType "resource")}}
|
||||
<li>{{localize "FTLNOMAD.Label.multiplier"}} : {{multiplier}}</li>
|
||||
{{else}}
|
||||
<li>{{localize "FTLNOMAD.Label.modifier"}} : {{modifier}}%</li>
|
||||
{{/if}}
|
||||
<li>{{localize "FTLNOMAD.Label.modifier"}} : {{numericModifier}}D</li>
|
||||
|
||||
<li>{{localize "FTLNOMAD.Label.targetScore"}} : {{targetScore}}%</li>
|
||||
{{#if isSuccess}}
|
||||
{{#if isCritical}}
|
||||
<li class="result-critical-success">{{localize "FTLNOMAD.Label.criticalSuccess"}}</li>
|
||||
{{else}}
|
||||
<li class="result-success">
|
||||
{{localize "FTLNOMAD.Label.success"}}
|
||||
{{#if isNudge}}
|
||||
<a class="nudge-roll"><i class="fa-solid fa-circle-sort-down"></i></a>
|
||||
{{/if}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isFailure}}
|
||||
{{#if isCritical}}
|
||||
<li class="result-critical-failure">{{localize "FTLNOMAD.Label.criticalFailure"}}</li>
|
||||
{{else}}
|
||||
<li class="result-failure">
|
||||
{{localize "FTLNOMAD.Label.failure"}}
|
||||
{{#if isNudge}}
|
||||
<a class="nudge-roll"><i class="fa-solid fa-circle-sort-down"></i></a>
|
||||
{{/if}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if isDamage}}
|
||||
<div>
|
||||
{{#if (and isGM hasTarget)}}
|
||||
|
@@ -1,10 +1,12 @@
|
||||
<section class="tab creature-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
|
||||
<fieldset>
|
||||
<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>
|
||||
<legend>{{localize "FTLNOMAD.Label.notes"}}</legend>
|
||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
||||
|
@@ -1,57 +1,53 @@
|
||||
<div class="fvtt-cthulhu-eternal-roll-dialog">
|
||||
<div class="fvtt-ftl-nomad-roll-dialog">
|
||||
|
||||
<fieldSet>
|
||||
|
||||
{{#if (eq rollType "skill")}}
|
||||
<legend>{{localize "FTLNOMAD.Label.skill"}}</legend>
|
||||
{{/if}}
|
||||
{{#if (eq rollType "char")}}
|
||||
<legend>{{localize "FTLNOMAD.Label.characteristic"}}</legend>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq rollType "resource")}}
|
||||
<legend>{{localize "FTLNOMAD.Label.resourceRating"}}</legend>
|
||||
<div class="dialog-skill">{{rollItem.name}} : <span class="resource-score">{{initialScore}} ({{mul initialScore 5}}%)</span></div>
|
||||
<div class="dialog-skill">{{localize "FTLNOMAD.Label.Hand"}} : {{rollItem.hand}} <input type="checkbox" data-action="selectHand" {{checked rollItem.enableHand}}></div>
|
||||
<div class="dialog-skill">{{localize "FTLNOMAD.Label.Stowed"}} : {{rollItem.stowed}} <input type="checkbox" data-action="selectStowed" {{checked rollItem.enableStowed}}></div>
|
||||
<div class="dialog-skill">{{localize "FTLNOMAD.Label.Storage"}} : {{rollItem.storage}} <input type="checkbox" data-action="selectStorage" {{checked rollItem.enableStorage}}></div>
|
||||
{{else}}
|
||||
<div class="dialog-skill">{{rollItem.name}} : {{initialScore}}%</div>
|
||||
{{/if}}
|
||||
<div class="dialog-skill">{{localize rollItem.label}} : 2d6+{{rollItem.value}}</div>
|
||||
|
||||
{{#if weapon}}
|
||||
<div class="dialog-skill">Weapon : {{weapon.name}}</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if isZeroWP}}
|
||||
<div class="dialog-skill red-warning">Zero WP : Automatic failure (ie 0%)</div>
|
||||
{{else}}
|
||||
{{#if isLowWP}}
|
||||
<div class="dialog-skill orange-warning">Low WP : -20%</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isExhausted}}
|
||||
<div class="dialog-skill orange-warning">Exhausted : -20%</div>
|
||||
{{#if isEncumbered}}
|
||||
<div class="dialog-skill red-warning">Encumbered : -1D</div>
|
||||
{{/if}}
|
||||
|
||||
</fieldSet>
|
||||
|
||||
{{#if hasModifier}}
|
||||
<fieldSet class="dialog-modifier">
|
||||
<legend>{{localize "FTLNOMAD.Label.modifier"}}</legend>
|
||||
<select name="modifier" class="roll-skill-modifier">
|
||||
{{selectOptions choiceModifier selected=modifier}}
|
||||
</select>
|
||||
</fieldSet>
|
||||
{{/if}}
|
||||
|
||||
{{#if hasMultiplier}}
|
||||
<fieldSet class="dialog-modifier">
|
||||
<legend>{{localize "FTLNOMAD.Label.multiplier"}}</legend>
|
||||
<select name="multiplier" class="roll-skill-modifier roll-skill-multiplier">
|
||||
{{selectOptions choiceMultiplier selected=multiplier}}
|
||||
<select name="modifier" class="roll-skill-modifier">
|
||||
{{selectOptions choiceModifier selected=modifier localize=true}}
|
||||
</select>
|
||||
|
||||
{{#if weapon}}
|
||||
<select name="range-modifier" class="roll-skill-range-modifier">
|
||||
{{selectOptions choiceRangeModifier selected=rangeModifier}}
|
||||
</select>
|
||||
<ul>
|
||||
<li>Two Attacks : <input type="checkbox" name="isAiming" data-field="two-attacks" class="select-combat-option"></li>
|
||||
<li>Aiming : <input 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}}
|
||||
|
||||
</fieldSet>
|
||||
|
||||
<fieldSet class="dialog-formula">
|
||||
<legend>{{localize "FTLNOMAD.Label.formula"}}</legend>
|
||||
<label name="fullFormula" id="roll-dialog-full-formula" >{{fullFormula}}</label>
|
||||
</fieldSet>
|
||||
{{/if}}
|
||||
|
||||
<fieldSet>
|
||||
<legend>{{localize "FTLNOMAD.Label.rollView"}}</legend>
|
||||
@@ -59,4 +55,5 @@
|
||||
{{selectOptions rollModes selected=visibility}}
|
||||
</select>
|
||||
</fieldSet>
|
||||
|
||||
</div>
|