Initial commit
1
rmss/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
node_modules/
|
14
rmss/.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
// Less configuration
|
||||
{
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Less Compile",
|
||||
"type": "shell",
|
||||
"command": "lessc less/rmss.less rmss.css",
|
||||
"group": "build"
|
||||
}
|
||||
]
|
||||
}
|
1
rmss/assets/default/armor.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><g class="" transform="translate(0,0)" style=""><path d="M156.7 25.83L89 39.38c-.1 58.57-1.74 119.32-43.49 167.22C104.4 246.5 189 260.7 247 248.8v-99L108.3 88.22l7.4-16.44L256 134.2l140.3-62.42 7.4 16.44L265 149.8v99c58 11.9 142.6-2.3 201.5-42.2-41.8-47.9-43.4-108.65-43.5-167.22l-67.7-13.55c-12.9 13.88-20.6 28.15-32.9 40.53C308.9 79.78 289.5 89 256 89c-33.5 0-52.9-9.22-66.4-22.64-12.3-12.38-20-26.65-32.9-40.53zM53.88 232.9C75.96 281 96.07 336.6 102.7 392.8l65 22.8c4.2-52.7 28.2-104 63.7-146.1-55.1 6.3-122.7-5.8-177.52-36.6zm404.22 0c-54.8 30.8-122.4 42.9-177.5 36.6 35.5 42.1 59.5 93.4 63.7 146.1l65.2-22.9c6.6-56.8 26.6-111.8 48.6-159.8zM256 269c-40.5 43.1-67.7 97.9-70.7 152.7l61.7 21.6V336h18v107.3l61.7-21.6c-3.1-54.8-30.2-109.6-70.7-152.7zm151.7 143.4L297 451.1v18.8l110.2-44.1c.1-4.5.3-8.9.5-13.4zm-303.3.1c.3 4.5.4 8.9.5 13.4l110.1 44v-18.7l-110.6-38.7zM279 457.4l-23 8.1-23-8v19.6l23 9.2 23-9.2v-19.7z" fill="#fff" fill-opacity="1"></path></g></svg>
|
After Width: | Height: | Size: 1.0 KiB |
1
rmss/assets/default/herb_or_poison.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><g class="" transform="translate(0,0)" style=""><path d="M181.78 33v51.53h149.407V33H181.78zm14.19 70.22c-.66 2.9-1.554 5.263-2.75 6.936-2.684 3.75-7.033 6.594-19.5 6.594-21.54 0-40.804 5.862-55.157 16.094-14.353 10.232-23.907 25.398-23.907 42.5V426.75c0 32.34 26.255 58.625 58.594 58.625h213.47c32.338 0 58.592-26.286 58.592-58.625V175.344c0-17.102-9.527-32.2-23.593-42.438-14.067-10.237-32.83-16.156-53.44-16.156-16.69 0-23.62-3.488-26.874-7.188-1.41-1.604-2.43-3.698-3.156-6.343h-19.125c1.073 6.658 3.37 13.137 8.25 18.686 8.11 9.223 21.523 13.53 40.906 13.53 16.978 0 32.056 5.008 42.44 12.564 10.38 7.556 15.905 17.1 15.905 27.344V426.75c0 22.355-17.55 39.938-39.906 39.938H153.25c-22.355 0-39.906-17.583-39.906-39.938V175.344c0-10.245 5.455-19.72 16.062-27.28 10.607-7.563 26.22-12.626 44.313-12.626 15.962 0 28.056-5.142 34.686-14.407 3.904-5.455 5.733-11.545 6.625-17.81h-19.06zm66.093 45.405c-30.545 0-50.062 12.865-63.282 32.313-12.295 18.09-18.387 42.315-19.186 66.062 25.033 12.795 39.555 27.632 43.844 44.97.734 2.967 1.173 5.942 1.312 8.905 9.01 5.134 23.22 8.44 37.813 8.438 12.935-.002 26.08-2.538 36.093-6.875.152-3.325.617-6.662 1.47-10 4.486-17.583 19.028-33.2 44.405-45.563-.838-22.46-6.793-46.595-19-64.938-13.2-19.84-32.745-33.312-63.467-33.312zM232.188 223.5c9.157 0 16.593 7.405 16.593 16.563 0 9.157-7.435 16.593-16.593 16.593-9.157 0-16.562-7.436-16.562-16.594 0-9.157 7.405-16.562 16.563-16.562zm55.437 0c9.158 0 16.594 7.405 16.594 16.563 0 9.157-7.438 16.593-16.595 16.593-9.158 0-16.563-7.436-16.563-16.594 0-9.157 7.405-16.562 16.563-16.562zm-28.844 33.594c6.275 13.248 11.25 26.503 13.72 39.75-9.148-3.022-18.29-3.426-27.438 0 3.34-13.25 7.352-26.504 13.72-39.75zm-37.03 63.47c-2.136 6.42-5.285 12.778-9.188 19.03 11.93 7.99 31.58 12.81 50.875 12.594 18.97-.214 36.878-5.57 46.22-12.407-3.55-5.764-6.412-11.8-8.344-18-11.947 4.416-25.424 6.375-38.75 6.376-14.447.002-28.77-2.222-40.813-7.594zm-70.656 17.06c-8.9 11.268-12.694 22.493-10.03 36.313 68.925 5.54 164.194 31.92 226.686 60.75 9.16-11.166 12.518-22.67 9.97-36.78-67.77-6.867-164.135-28.736-226.626-60.282zm216.594 0c-20.79 10.496-45.326 19.907-71.313 28.063 20.298 4.434 40.253 8.04 58.72 10.688 7.782-1.026 15.357-1.853 22.624-2.438 2.66-13.82-1.133-25.045-10.033-36.312zm-203.75 57.532c-7.904 1.084-15.56 2.01-22.875 2.75-2.55 14.11.81 25.615 9.968 36.78 21.375-9.86 46.575-19.447 73.25-27.998-20.87-4.912-41.385-8.868-60.343-11.532z" fill="#fff" fill-opacity="1"></path></g></svg>
|
After Width: | Height: | Size: 2.5 KiB |
1
rmss/assets/default/skill.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><g class="" transform="translate(0,0)" style=""><path d="M119.1 25v.1c-25 3.2-47.1 32-47.1 68.8 0 20.4 7.1 38.4 17.5 50.9L99.7 157 84 159.9c-13.7 2.6-23.8 9.9-32.2 21.5-8.5 11.5-14.9 27.5-19.4 45.8-8.2 33.6-9.9 74.7-10.1 110.5h44l11.9 158.4h96.3L185 337.7h41.9c0-36.2-.3-77.8-7.8-111.7-4-18.5-10.2-34.4-18.7-45.9-8.6-11.4-19.2-18.7-34.5-21l-16-2.5L160 144c10-12.5 16.7-30.2 16.7-50.1 0-39.2-24.8-68.8-52.4-68.8-2.9 0-4.7-.1-5.2-.1zM440 33c-17.2 0-31 13.77-31 31s13.8 31 31 31 31-13.77 31-31-13.8-31-31-31zM311 55v48H208v18h103v158h-55v18h55v110H208v18h103v32h80.8c-.5-2.9-.8-5.9-.8-9 0-3.1.3-6.1.8-9H329V297h62.8c-.5-2.9-.8-5.9-.8-9 0-3.1.3-6.1.8-9H329V73h62.8c-.5-2.92-.8-5.93-.8-9 0-3.07.3-6.08.8-9H311zm129 202c-17.2 0-31 13.8-31 31s13.8 31 31 31 31-13.8 31-31-13.8-31-31-31zm0 160c-17.2 0-31 13.8-31 31s13.8 31 31 31 31-13.8 31-31-13.8-31-31-31z" fill="#fff" fill-opacity="1"></path></g></svg>
|
After Width: | Height: | Size: 996 B |
1
rmss/assets/default/skill_category.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><g class="" transform="translate(0,0)" style=""><path d="M311.9 47.95c-17.6 0-34.6.7-50.7 2.43L244.6 93.5l-4.9-40.04c-2.5.46-5 .94-7.5 1.47-9.1 1.94-15.1 7.22-20.3 14.87-5.2 7.65-8.9 17.5-12.1 26.6C191 121.5 184 148 178.4 175c6 5.1 12 10.3 17.9 15.4l30.7-17.6 33.8 26.1 51.9-19.7 61 24.5-6.8 16.7-54.4-21.8-54.7 20.7-32.2-24.9-14.9 8.5c19.6 17.3 38.6 34.4 56.5 51.2l14-6.4 33.9 16.1 31.2-13.1 24.2 23.3-12.4 13-15.8-15.1-27.6 11.7-33-15.8c6.9 6.7 13.6 13.2 20.1 19.7l1.7 1.8 19.5 76.3-7.8-5.7-53 .4-38.1-17.8-42.4 14.6-5.8-17 49.2-17 41.1 19.2 24.7-.2-70.7-51.7c-19.7 4.6-39.4 2.8-58.1-3.7-4.2 44.4-5.9 85.7-7 118.7-.4 10.7 2.7 23 7.5 32.5 4.9 9.5 11.7 15.4 15 16.1 5.2 1.2 19 3.2 37.7 5.1l12.4-39 19.1 41.7c16.7 1.2 35 2 53.5 2.2 28.2.3 57.1-.9 82-4.7 15.8-2.3 29.6-6 40.7-10.4-11.8-5.1-21.6-10.6-29.1-16.6-11.1-8.9-18.2-19.3-17.3-30.9v.2c5.4-96.4 10.8-188.8 30.3-286l.1-.4.1-.4c5.3-17.9 17.9-39.86 36.1-55.83-13.9-2.06-28.6-4-43.7-5.66l-22.3 25.3-2.2-27.7c-19-1.64-38.4-2.71-57.4-2.92h-5.7zm148.5 20.44c-4.7 3.69-9.2 8.03-13.3 12.73 12.1 8.18 21.4 23.38 21.8 36.98.3 7.8-1.9 14.9-7.7 21.4-5.8 6.4-15.6 12.4-31.6 15.8l3.8 17.6c18.6-4 32.3-11.5 41.2-21.4 9-9.9 12.7-22.2 12.3-34-.6-19.3-11.1-37.59-26.5-49.11zM25.44 71.91c-.24 1.61-.38 3.43-.38 5.62.1 7.69 2.03 18.17 5.83 30.17 3.41 10.7 8.27 22.5 14.35 34.8 10.63-5.3 20.59-11 28.41-18.1-4.42 12.5-10.15 24.7-18.6 36.5 4.14 7.2 8.63 14.4 13.45 21.5 10.64-5.3 20.72-13 29.52-26.1-3.3 16-8.47 30.6-18.27 41.8 6.53 8.5 13.5 16.8 20.75 24.5 8.7-9.3 15.6-21 20.7-34.9 3.8 18.5 2.6 35.3-5.7 49.4 8 7.2 16.3 13.7 24.8 19.1 6.1-14 8.9-30.6 8.5-49.7 9.2 23.7 11.3 42.9 9.6 59.5 20.2 9.2 40.8 12 61.3 6.1l4.2-1.3 69.3 50.6-5.9-22.8c-73-72.8-175.4-156.7-261.86-226.69zM312.8 123.9l33.2 13.8 31.3-9.9 5.4 17.2-37.5 11.9-33.6-14-28.8 8.1-4.8-17.4zm107.3 236.2c-.7 0-1.3.1-2 .1-3.5.1-7.2.5-11.1 1.3l3.4 17.6c12.2-2.3 20-.4 24.5 2.5 4.4 2.9 6.3 6.8 6.4 12.5.1 9.3-7 23-23.3 32.5 5.4 2.9 11.9 5.9 19.3 8.7 14.4-11.6 22.1-26.8 22-41.4-.1-10.7-5.2-21.2-14.6-27.4-6.7-4.3-15-6.5-24.6-6.4z" fill="#fff" fill-opacity="1"></path></g></svg>
|
After Width: | Height: | Size: 2.1 KiB |
1
rmss/assets/default/spell.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><g class="" transform="translate(0,0)" style=""><path d="M319.61 20.654c13.145 33.114 13.144 33.115-5.46 63.5 33.114-13.145 33.116-13.146 63.5 5.457-13.145-33.114-13.146-33.113 5.457-63.498-33.114 13.146-33.113 13.145-63.498-5.459zM113.024 38.021c-11.808 21.04-11.808 21.04-35.724 24.217 21.04 11.809 21.04 11.808 24.217 35.725 11.808-21.04 11.808-21.04 35.724-24.217-21.04-11.808-21.04-11.808-24.217-35.725zm76.55 56.184c-.952 50.588-.95 50.588-41.991 80.18 50.587.95 50.588.95 80.18 41.99.95-50.588.95-50.588 41.99-80.18-50.588-.95-50.588-.95-80.18-41.99zm191.177 55.885c-.046 24.127-.048 24.125-19.377 38.564 24.127.047 24.127.046 38.566 19.375.047-24.126.046-24.125 19.375-38.564-24.126-.047-24.125-.046-38.564-19.375zm-184.086 83.88c-1.191.024-2.36.07-3.492.134-18.591 1.064-41.868 8.416-77.445 22.556L76.012 433.582c78.487-20.734 132.97-21.909 170.99-4.615V247.71c-18.076-8.813-31.79-13.399-46.707-13.737a91.166 91.166 0 0 0-3.629-.002zm122.686 11.42c-2.916-.026-5.81.011-8.514.098-12.81.417-27.638 2.215-45.84 4.522V427.145c43.565-7.825 106.85-4.2 171.244 7.566l-39.78-177.197c-35.904-8.37-56.589-11.91-77.11-12.123zm2.289 16.95c18.889.204 36.852 2.768 53.707 5.02l4.437 16.523c-23.78-3.75-65.966-4.906-92.467-.98l-.636-17.805c11.959-2.154 23.625-2.88 34.959-2.758zm-250.483 4.658l-10.617 46.004h24.094l10.326-46.004H71.158zm345.881 0l39.742 177.031 2.239 9.973 22.591-.152-40.855-186.852h-23.717zm-78.857 57.82c16.993.026 33.67.791 49.146 2.223l3.524 17.174c-32.645-3.08-72.58-2.889-102.995 0l-.709-17.174c16.733-1.533 34.04-2.248 51.034-2.223zm-281.793 6.18l-6.924 30.004h24.394l6.735-30.004H56.389zm274.418 27.244c4.656.021 9.487.085 14.716.203l2.555 17.498c-19.97-.471-47.115.56-59.728 1.05l-.7-17.985c16.803-.493 29.189-.828 43.157-.766zm41.476.447c8.268.042 16.697.334 24.121.069l2.58 17.74c-8.653-.312-24.87-.83-32.064-.502l-2.807-17.234a257.25 257.25 0 0 1 8.17-.073zm-326.97 20.309l-17.985 77.928 25.035-.17 17.455-77.758H45.313zm303.164 11.848c19.608-.01 38.66.774 56.449 2.572l2.996 20.787c-34.305-4.244-85.755-7.697-119.1-3.244l-.14-17.922c20.02-1.379 40.186-2.183 59.795-2.193zm-166.606 44.05c-30.112.09-67.916 6.25-115.408 19.76l-7.22 2.053 187.759-1.27v-6.347c-16.236-9.206-37.42-14.278-65.13-14.196zm134.41 6.174c-19.63.067-37.112 1.439-51.283 4.182v10.064l177.594-1.203c-44.322-8.634-89.137-13.17-126.31-13.043zM26 475v18h460v-18H26z" fill="#fff" fill-opacity="1"></path></g></svg>
|
After Width: | Height: | Size: 2.4 KiB |
1
rmss/assets/default/transport.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><g class="" transform="translate(0,0)" style=""><path d="M400 16c-21.335 9.73-58.244 17.34-73.086 48.232-22.36 1.948-72.753 10.673-122.22 40.25-58.098 34.74-116.017 97.417-131.776 213.702l-.48 3.537-2.774 2.25c-30.87 25.002-40.657 38.937-44.416 61.153-3.536 20.9-.72 51.46-.363 101.877H328.36c3.455-16.892 10.44-29.245 12.472-41.568 2.337-14.176.19-29.938-20.812-58.547-43.078-58.683-46.853-129.458-12.916-171.28-8.654-2.765-15.09-6.887-19.458-12.546-6.115-7.924-7.4-17.006-8.57-25.884l17.848-2.352c1.112 8.446 2.38 13.88 4.97 17.237 2.59 3.356 7.31 6.472 19.55 8.46l-.022.128.172-.17 5.998 9.424c19.957 31.358 42.84 51.292 73.332 54.44l6.51.672 1.367 6.4c2.74 12.828 8.626 19.095 15.116 22.238 6.49 3.143 14.225 2.944 20.47.205 9.316-4.086 14.518-11.35 16.7-22.712 2.122-11.05.546-25.834-5.137-42.106-33.538-38.248-44.475-87.277-63.903-128.772-6.055-9.947-12.448-18.518-20.385-24.856C376.808 55.126 386.456 34.852 400 16zM214.068 34.97C179.55 35.06 146.075 43.06 96 58.58c31.146 9.92 70.397 18.9 86.037 39.01 4.463-3.017 8.94-5.88 13.418-8.56 40.51-24.22 80.387-35.286 108.23-40.04-35.854-9.477-63.047-14.094-89.617-14.023zM157.16 96.712c-1.13-.01-2.265-.01-3.402.004-30.353.37-63.1 9.745-96.647 31.283 27.186 3.672 54.67 3.724 72.58 15.398 15.9-17.92 33.144-32.634 50.677-44.668-7.548-1.244-15.292-1.938-23.207-2.017zM368 128a13.214 13.215 0 0 1 13.213 13.215A13.214 13.215 0 0 1 368 154.432a13.214 13.215 0 0 1-13.213-13.217A13.214 13.215 0 0 1 368 128zm-238.906 16.068c-36.395 1.495-68.903 6.53-104.76 24.766 33.236 7.095 50.913 13.507 65.025 33.83 11.522-22.53 25.045-41.93 39.734-58.596zM74.518 201.46C53.53 201.65 36.614 213.14 16 224c27.854 0 46.067 3.862 58.71 12.055 4.33-11.652 9.16-22.615 14.41-32.924-5.12-1.19-9.963-1.71-14.602-1.67zm-.623 36.82c-17.933 5.845-35.452 7.15-54.23 22.284 17.62 4.638 34.79 9.596 41.398 22.034 3.496-15.77 7.814-30.523 12.832-44.32zm370.142 8.57c1.617-.035 3.222.044 4.783.187l-1.64 17.926c-3.928-.36-5.513.416-5.57.465-.058.048-1.035.656-.635 5.886l-17.95 1.372c-.638-8.35 1.297-16.207 6.955-20.997 4.245-3.593 9.206-4.735 14.057-4.84zM52.215 290.723c-10.352.13-23.76 5.646-34.656 12.334 12.173 6.83 12.357 23.472 8.938 37.668 7.3-9.105 16.855-18.323 29.158-28.48 1.016-7.043 2.19-13.9 3.506-20.585-2.082-.67-4.42-.97-6.947-.937z" fill="#fff" fill-opacity="1"></path></g></svg>
|
After Width: | Height: | Size: 2.4 KiB |
1
rmss/assets/default/weapon.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><g class="" transform="translate(0,0)" style=""><path d="M43.53 15.75c-15.73 0-28.31 12.583-28.31 28.313 0 14.086 10.092 25.644 23.5 27.906L42.687 68 68.81 41.906l2.626-2.625C69.188 25.86 57.63 15.75 43.53 15.75zm33.72 44.125l-17 17c15.885 39.37 43.45 66.684 78.75 87.406 8.167-8.585 16.65-16.898 25.438-24.936-22.488-35.103-51.535-62.294-87.188-79.47zM322.594 79.03l-51.25 4.314c-79.356 48.134-143.878 108.1-186.72 186.53l-4.31 51.47 44.155-18.656-2.94-34.094-.25-3.063 1.626-2.624c35.94-58.47 79.93-109.41 141.5-141.25l2.406-1.25 2.688.25 34.125 2.906 18.97-44.53zm-62.438 66.376c-10.008 5.886-19.5 12.338-28.562 19.313 46.688 47.93 87.208 108.588 114.72 166.5l11.248 23.717-23.718-11.28c-57.995-27.554-117.918-67.57-165.688-113.907-7.155 9.404-14.028 19.174-20.625 29.28 101.918 94.91 227.05 177.304 347.845 234.69-57.063-120.125-140.038-246.18-235.22-348.314zm-43.03 31.22c-13.37 11.703-25.72 24.58-37.282 38.436 39.36 38.452 88.085 72.83 136.687 98.844-26.054-48.633-60.754-97.847-99.405-137.28z" fill="#fff" fill-opacity="1"></path></g></svg>
|
After Width: | Height: | Size: 1.1 KiB |
18
rmss/gulpfile.js
Normal file
@ -0,0 +1,18 @@
|
||||
var gulp = require('gulp');
|
||||
var less = require('gulp.less');
|
||||
|
||||
gulp.task('less', function (cb) {
|
||||
gulp
|
||||
.src('less/rmss.less')
|
||||
.pipe(less())
|
||||
.pipe(gulp.dest("./"));
|
||||
cb();
|
||||
});
|
||||
|
||||
gulp.task(
|
||||
'default',
|
||||
gulp.series('less', function(cb) {
|
||||
gulp.watch('less/*.less', gulp.series('less'));
|
||||
cb();
|
||||
})
|
||||
);
|
235
rmss/lang/en.json
Normal file
@ -0,0 +1,235 @@
|
||||
{
|
||||
"rmss": {
|
||||
"player_character": {
|
||||
"name": "Name:",
|
||||
"level": "Level:",
|
||||
"experience": "XP:",
|
||||
"resources": {
|
||||
"hits": "Hits",
|
||||
"exhaustion_points": "Exhaustion Points",
|
||||
"power_points": "Power Points"
|
||||
},
|
||||
"attribute_headers": {
|
||||
"stat": "Stat",
|
||||
"temp": "Temp",
|
||||
"pot": "Potential",
|
||||
"basic_bonus": "Basic Bonus",
|
||||
"racial_bonus": "Racial Bonus",
|
||||
"special_bonus": "Special Bonus",
|
||||
"stat_bonus": "Stat Bonus"
|
||||
},
|
||||
"attribute": {
|
||||
"agility": "Agility",
|
||||
"agility_short": "Ag",
|
||||
"constitution": "Constitution",
|
||||
"memory": "Memory",
|
||||
"reasoning": "Reasoning",
|
||||
"self_discipline": "Self Discipline",
|
||||
"empathy": "Empathy",
|
||||
"intuition": "Intuition",
|
||||
"presence": "Presence",
|
||||
"quickness": "Quickness",
|
||||
"strength": "Strength",
|
||||
"stat_total": "Total"
|
||||
}
|
||||
},
|
||||
"pc_sheet_tabs": {
|
||||
"record": "Record",
|
||||
"skill_categories": "Skill Categories",
|
||||
"skills": "Skills",
|
||||
"equipment": "Equipment",
|
||||
"status_record": "Status Record",
|
||||
"experience_points": "Experience Points"
|
||||
},
|
||||
"pc_sheet_fixed_info": {
|
||||
"race": "Race:",
|
||||
"profession": "Profession:",
|
||||
"training_packages": "Training Packages:",
|
||||
"realm": "Realm:"
|
||||
},
|
||||
"pc_sheet_armor_info": {
|
||||
"armor_type": "Armor Type:",
|
||||
"mmp": "MMP:",
|
||||
"weight_penalty": "Weight Penalty:",
|
||||
"missile_penalty": "Missile Penalty:",
|
||||
"quickness_penalty": "Quickness Penalty:",
|
||||
"quickness_bonus": "Quickness Bonus:",
|
||||
"adrenal_defense": "Adrenal Defence:",
|
||||
"shield_bonus": "Shield Bonus:",
|
||||
"magic": "Magic (Spells, Items, etc.):",
|
||||
"total_db": "Total DB:"
|
||||
},
|
||||
"pc_sheet_resistances": {
|
||||
"channeling": "Channeling",
|
||||
"essence": "Essence",
|
||||
"mentalism": "Mentalism",
|
||||
"chann_ess": "Chann/Ess",
|
||||
"chann_ment": "Chann/Ment",
|
||||
"ess_ment": "Ess/Ment",
|
||||
"arcane": "Arcane",
|
||||
"poison_disease": "Poison/Disease",
|
||||
"fear": "Fear"
|
||||
},
|
||||
"pc_sheet_race_stat_fixed_info": {
|
||||
"soul_departure": "Soul Departs in X Rounds:",
|
||||
"recovery_multiplier": "Recovery Multiplier:",
|
||||
"body_dev_progression": "Body Development Progression:",
|
||||
"pp_dev_progression": "PP Development Progression:",
|
||||
"recover_hits_per_hour": "Recover X hits/hour resting:",
|
||||
"recover_hits_per_sleep_cycle": "Recover X hits/sleep cycle:",
|
||||
"recover_pp_per_hour": "Recover X PP/hour resting:",
|
||||
"recover_pp_per_sleep_cycle": "Recover X PP/sleep cycle:"
|
||||
},
|
||||
"pc_sheet_role_traits": {
|
||||
"appearance": "Appearance:",
|
||||
"sex": "Sex:",
|
||||
"skin": "Skin:",
|
||||
"apparent_age": "Apparent Age:",
|
||||
"actual_age": "Actual Age:",
|
||||
"height": "Height:",
|
||||
"weight": "Weight:",
|
||||
"hair": "Hair:",
|
||||
"eyes": "Eyes:",
|
||||
"personality": "Personality:",
|
||||
"motivations": "Motivations:",
|
||||
"alignment": "Alignment:"
|
||||
},
|
||||
"pc_sheet_background_info": {
|
||||
"nationality": "Nationality:",
|
||||
"home_town": "Home Town:",
|
||||
"deity": "Deity:",
|
||||
"patron": "Patron:",
|
||||
"parents": "Parents:",
|
||||
"spouse": "Spouse",
|
||||
"children": "Children:",
|
||||
"other": "Other:"
|
||||
},
|
||||
"pc_sheet_skills": {
|
||||
"favorite": "Favorite?",
|
||||
"skill_name": "Skill Name",
|
||||
"ranks": "# Ranks",
|
||||
"new_ranks": "New Ranks",
|
||||
"rank_bonus": "Rank Bonus",
|
||||
"category_bonus": "Category Bonus",
|
||||
"item_bonus": "Item Bonus",
|
||||
"special_bonus": "Special Bonus",
|
||||
"total_bonus": "Total Bonus",
|
||||
"add_skill": "Add Skill"
|
||||
},
|
||||
"pc_sheet_skill_categories": {
|
||||
"skillcat_name": "Skill Category Name",
|
||||
"applicable_stats": "Applicable Stats",
|
||||
"dev_cost": "Dev Cost",
|
||||
"ranks": "# Ranks",
|
||||
"new_ranks": "New Ranks",
|
||||
"rank_bonus": "Rank Bonus",
|
||||
"stat_bonus": "Stat Bonus",
|
||||
"prof_bonus": "Prof Bonus",
|
||||
"special_bonus": "Special Bonus",
|
||||
"total_bonus": "Total Bonus",
|
||||
"add_skillcat": "Add Skill Category"
|
||||
},
|
||||
"pc_sheet_items": {
|
||||
"favorite": "Favorite",
|
||||
"quantity": "Quantity",
|
||||
"item_name": "Item Name",
|
||||
"weight": "Weight",
|
||||
"cost": "Cost",
|
||||
"add_item": "Add Item"
|
||||
},
|
||||
"entity_sheet": {
|
||||
"spell": "RMSS Spell",
|
||||
"weapon": "RMSS Weapon",
|
||||
"item": "RMSS Armor",
|
||||
"armor": "RMSS Item",
|
||||
"herb_or_poison": "RMSS Herb or Poison",
|
||||
"transport": "RMSS Transport",
|
||||
"skill": "RMSS Skill",
|
||||
"skill_category": "RMSS Skill Category",
|
||||
"player_characrer": "RMSS Player Character",
|
||||
"npc": "RMSS NPC",
|
||||
"creature": "RMSS Creature"
|
||||
},
|
||||
"currency_type": {
|
||||
"mp": "Mithril Pieces",
|
||||
"pp": "Platinum Pieces",
|
||||
"gp": "Gold Pieces",
|
||||
"sp": "Silver Pieces",
|
||||
"bp": "Bronze Pieces",
|
||||
"cp": "Copper Pieces"
|
||||
},
|
||||
"item": {
|
||||
"description": "Other Notes",
|
||||
"quantity": "Quantity",
|
||||
"weight": "Weight",
|
||||
"cost": "Cost",
|
||||
"prod_time": "Production Time"
|
||||
},
|
||||
"armor": {
|
||||
"at": "AT",
|
||||
"weight": "Weight",
|
||||
"cost": "Cost",
|
||||
"prod_time": "Production Time"
|
||||
},
|
||||
"weapon": {
|
||||
"cost": "Cost",
|
||||
"type": "Type",
|
||||
"prod_time": "Production Time",
|
||||
"weight": "Weight",
|
||||
"breakage_range": "B#s",
|
||||
"strength": "Str",
|
||||
"fumble_range": "Fumble"
|
||||
},
|
||||
"herb_or_poison": {
|
||||
"codes": "Codes",
|
||||
"weight": "Weight",
|
||||
"form_and_prep": "Form/Prep",
|
||||
"cost": "Cost",
|
||||
"af": "AF"
|
||||
},
|
||||
"transport": {
|
||||
"cost": "Cost",
|
||||
"feet_per_round": "ft/rnd",
|
||||
"miles_per_hour": "mi/hr",
|
||||
"maneuver": "Man",
|
||||
"height": "Height",
|
||||
"weight": "Weight",
|
||||
"capacity": "Capacity",
|
||||
"offensive_bonus": "OB"
|
||||
},
|
||||
"spell": {
|
||||
"spell_list": "Spell List",
|
||||
"level": "Level",
|
||||
"area_of_effect": "Area of Effect",
|
||||
"duration": "Duration",
|
||||
"range": "Range",
|
||||
"type": "Type",
|
||||
"description": "Description"
|
||||
},
|
||||
"skill_category": {
|
||||
"applicable_stats": "Applicable Stats:",
|
||||
"development_cost" : "Development Cost:",
|
||||
"ranks": "Ranks:",
|
||||
"new_ranks": "New Ranks:",
|
||||
"rank_bonus": "Rank Bonus:",
|
||||
"stat_bonus": "Stat Bonus:",
|
||||
"prof_bonus": "Prof Bonus:",
|
||||
"special_bonus_1": "Special Bonus 1:",
|
||||
"special_bonus_2": "Special Bonus 2:",
|
||||
"total_bonus": "Total Bonus:",
|
||||
"description": "Description:"
|
||||
},
|
||||
"skill": {
|
||||
"favorite": "Favorite?",
|
||||
"ranks": "Ranks:",
|
||||
"new_ranks": "New Ranks:",
|
||||
"rank_bonus": "Rank Bonus:",
|
||||
"category_bonus": "Category Bonus:",
|
||||
"item_bonus": "Item Bonus:",
|
||||
"special_bonus_1": "Special Bonus 1:",
|
||||
"special_bonus_2": "Special Bonus 2:",
|
||||
"total_bonus": "Total Bonus:",
|
||||
"description": "Description:"
|
||||
}
|
||||
}
|
||||
}
|
153
rmss/less/actor-sheet.less
Normal file
@ -0,0 +1,153 @@
|
||||
// General Elements
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
// Header CSS
|
||||
|
||||
.actor-icon {
|
||||
flex-shrink: 1;
|
||||
}
|
||||
|
||||
|
||||
.header-container {
|
||||
flex-grow: 2;
|
||||
outline: 1px solid; /* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.header-text {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
// Resource Elements in Headers
|
||||
|
||||
.resource-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-grow: 3;
|
||||
text-align: -webkit-center;
|
||||
}
|
||||
|
||||
.resource-container > * {
|
||||
flex: 1 1 0;
|
||||
}
|
||||
|
||||
.resource-entry {
|
||||
outline: 1px solid; /* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.resource-entry input{
|
||||
width: 50px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.stat-container {
|
||||
flex-direction: column;
|
||||
flex-shrink: 1;
|
||||
}
|
||||
|
||||
.equipment-container {
|
||||
flex-direction: column;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.stat-block {
|
||||
outline: 1px solid; /* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.stat-name, .money-name {
|
||||
width: 75px;
|
||||
border: none;
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.stat-name input {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.stat-header {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
// Fixed Info CSS
|
||||
|
||||
.fixed-info-container {
|
||||
flex-grow: 3;
|
||||
flex-direction: row;
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.fixed-info-section {
|
||||
outline: 1px solid; /* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.armor-block {
|
||||
outline: 1px solid; /* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.race-stat-fixed-info-block {
|
||||
outline: 1px solid; /* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.role-traits-block {
|
||||
outline: 1px solid; /* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.background-info-block {
|
||||
outline: 1px solid; /* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.resistance-block {
|
||||
outline: 1px solid; /* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
// Debugging
|
||||
|
||||
.red {
|
||||
background-color: orangered;
|
||||
}
|
||||
|
||||
.blue {
|
||||
background-color: lightblue;
|
||||
}
|
||||
|
||||
.grey {
|
||||
background-color: lightgrey;
|
||||
}
|
||||
|
||||
.green {
|
||||
background-color: lightseagreen;
|
||||
}
|
118
rmss/less/grid.less
Normal file
@ -0,0 +1,118 @@
|
||||
.skillcat-grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: [skill-category-name] 10% [applicable-stats] 10% [dev-cost] 8% [num-ranks] 8% [new-ranks] 8% [rank-bonus] 8% [stat-bonus] 8% [prof-bonus] 8% [special-bonus-1] 8% [special-bonus-2] 8% [total-bonus] 8% [controls] 8%;
|
||||
}
|
||||
|
||||
.skillcat-grid-container > div {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.skillcat-grid-container > div:nth-child(24n+1),
|
||||
.skillcat-grid-container > div:nth-child(24n+2),
|
||||
.skillcat-grid-container > div:nth-child(24n+3),
|
||||
.skillcat-grid-container > div:nth-child(24n+4),
|
||||
.skillcat-grid-container > div:nth-child(24n+5),
|
||||
.skillcat-grid-container > div:nth-child(24n+6),
|
||||
.skillcat-grid-container > div:nth-child(24n+7),
|
||||
.skillcat-grid-container > div:nth-child(24n+8),
|
||||
.skillcat-grid-container > div:nth-child(24n+9),
|
||||
.skillcat-grid-container > div:nth-child(24n+10),
|
||||
.skillcat-grid-container > div:nth-child(24n+11),
|
||||
.skillcat-grid-container > div:nth-child(24n+12)
|
||||
{
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0 0);
|
||||
}
|
||||
|
||||
.skillcat-grid-heading {
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid;
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
.skills-grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: [favorite] 9% [skill-name] 11% [num-ranks] 9% [new-ranks] 9% [rank-bonus] 9% [category-bonus] 9% [item-bonus] 9% [special-bonus-1] 9% [special-bonus-2] 9% [total-bonus] 9% [controls] 8%;
|
||||
}
|
||||
|
||||
.skills-grid-container > div {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.skills-grid-container > div:nth-child(22n+1),
|
||||
.skills-grid-container > div:nth-child(22n+2),
|
||||
.skills-grid-container > div:nth-child(22n+3),
|
||||
.skills-grid-container > div:nth-child(22n+4),
|
||||
.skills-grid-container > div:nth-child(22n+5),
|
||||
.skills-grid-container > div:nth-child(22n+6),
|
||||
.skills-grid-container > div:nth-child(22n+7),
|
||||
.skills-grid-container > div:nth-child(22n+8),
|
||||
.skills-grid-container > div:nth-child(22n+9),
|
||||
.skills-grid-container > div:nth-child(22n+10),
|
||||
.skills-grid-container > div:nth-child(22n+11)
|
||||
{
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0 0);
|
||||
}
|
||||
|
||||
.skills-grid-heading {
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid;
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0 0);
|
||||
}
|
||||
|
||||
.applicable-stats-grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: [app-stat-1] 33% [app-stat-2] 33% [dapp-stat-3] 33%;
|
||||
}
|
||||
|
||||
.applicable-stats-grid-container > div {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
14
rmss/less/item-sheet.less
Normal file
@ -0,0 +1,14 @@
|
||||
.sheet {
|
||||
form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.sheet-content {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.editor {
|
||||
height: 100%
|
||||
}
|
||||
}
|
||||
}
|
8
rmss/less/money-sheet.less
Normal file
@ -0,0 +1,8 @@
|
||||
.money-column {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.money-container {
|
||||
flex-direction: column;
|
||||
flex-shrink: 1;
|
||||
}
|
6
rmss/less/rmss.less
Normal file
@ -0,0 +1,6 @@
|
||||
@import "./item-sheet.less";
|
||||
@import "./actor-sheet.less";
|
||||
@import "./skillcat-sheet.less";
|
||||
@import "./money-sheet.less";
|
||||
@import "./table.less";
|
||||
@import "./grid.less";
|
23
rmss/less/skillcat-sheet.less
Normal file
@ -0,0 +1,23 @@
|
||||
.skillcat-name, .skill-name, .item-name {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.skillcat-entry, .skill-entry, .item-entry {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.skillcat-headeritem, .skill-headeritem, .item-headeritem {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.skillcat-controls, .skill-controls, .item-controls {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
19
rmss/less/table.less
Normal file
@ -0,0 +1,19 @@
|
||||
.table-font {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.table-bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.table-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.table-controls {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
55
rmss/module/config.js
Normal file
@ -0,0 +1,55 @@
|
||||
export const rmss = {};
|
||||
|
||||
rmss.curreny_type = {
|
||||
mp: "rmss.curreny_type.mp",
|
||||
pp: "rmss.curreny_type.pp",
|
||||
gp: "rmss.curreny_type.gp",
|
||||
sp: "rmss.curreny_type.sp",
|
||||
bp: "rmss.curreny_type.bp",
|
||||
cp: "rmss.curreny_type.cp"
|
||||
};
|
||||
|
||||
rmss.stats = {
|
||||
agility: {
|
||||
fullname: "Agility",
|
||||
shortname: "Ag"
|
||||
},
|
||||
constitution: {
|
||||
fullname: "Constitution",
|
||||
shortname: "Co"
|
||||
},
|
||||
memory: {
|
||||
fullname: "Memory",
|
||||
shortname: "Me"
|
||||
},
|
||||
reasoning: {
|
||||
fullname: "Reasoning",
|
||||
shortname: "Re"
|
||||
},
|
||||
self_discipline: {
|
||||
fullname: "Self Discipline",
|
||||
shortname: "SD"
|
||||
},
|
||||
empathy: {
|
||||
fullname: "Empathy",
|
||||
shortname: "Em"
|
||||
},
|
||||
intuition: {
|
||||
fullname: "Intuition",
|
||||
shortname: "In"
|
||||
},
|
||||
presence: {
|
||||
fullname: "Presence",
|
||||
shortname: "Pr"
|
||||
},
|
||||
quickness: {
|
||||
fullname: "Quickness",
|
||||
shortname: "Qu"
|
||||
},
|
||||
strength: {
|
||||
fullname: "Strength",
|
||||
shortname: "St"
|
||||
}
|
||||
|
||||
|
||||
}
|
144
rmss/module/documents/actor.js
Normal file
@ -0,0 +1,144 @@
|
||||
export class RMSSActor extends Actor {
|
||||
|
||||
/** @override */
|
||||
prepareData() {
|
||||
// Prepare data for the actor. Calling the super version of this executes
|
||||
// the following, in order: data reset (to clear active effects),
|
||||
// prepareBaseData(), prepareEmbeddedDocuments() (including active effects),
|
||||
// prepareDerivedData().
|
||||
super.prepareData();
|
||||
}
|
||||
|
||||
prepareDerivedData() {
|
||||
const actorData = this.data;
|
||||
const data = actorData.data;
|
||||
const flags = actorData.flags.rmss || {};
|
||||
|
||||
// Make separate methods for each Actor type (character, npc, etc.) to keep
|
||||
// things organized.
|
||||
this._prepareCharacterData(actorData);
|
||||
this._prepareNpcData(actorData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare Character type specific data
|
||||
*/
|
||||
_prepareCharacterData(actorData) {
|
||||
if (actorData.type !== 'character') return;
|
||||
|
||||
// Calculate Stat Bonuses in Actor
|
||||
this.prepareStatBonuses(actorData)
|
||||
|
||||
// Calculate Resistance Rolls in Actor
|
||||
this.prepareResistanceRolls(actorData);
|
||||
|
||||
// Iterate through and apply Stat bonuses for Skill Category Items
|
||||
this.prepareSkillCatStatBonuses();
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare NPC type specific data.
|
||||
*/
|
||||
_prepareNpcData(actorData) {
|
||||
if (actorData.type !== 'npc') return;
|
||||
|
||||
// Make modifications to data here. For example:
|
||||
const data = actorData.data;
|
||||
data.xp = (data.cr * data.cr) * 100;
|
||||
}
|
||||
|
||||
prepareStatBonuses(actorData) {
|
||||
|
||||
const data = actorData.data;
|
||||
|
||||
actorData.data.stats.agility.stat_bonus = Number(data.stats.agility.racial_bonus)+Number(data.stats.agility.special_bonus)+Number(data.stats.agility.basic_bonus);
|
||||
actorData.data.stats.constitution.stat_bonus = Number(data.stats.constitution.racial_bonus)+Number(data.stats.constitution.special_bonus)+Number(data.stats.constitution.basic_bonus);
|
||||
actorData.data.stats.memory.stat_bonus = Number(data.stats.memory.racial_bonus)+Number(data.stats.memory.special_bonus)+Number(data.stats.memory.basic_bonus);
|
||||
actorData.data.stats.reasoning.stat_bonus = Number(data.stats.reasoning.racial_bonus)+Number(data.stats.reasoning.special_bonus)+Number(data.stats.reasoning.basic_bonus);
|
||||
actorData.data.stats.self_discipline.stat_bonus = Number(data.stats.self_discipline.racial_bonus)+Number(data.stats.self_discipline.special_bonus)+Number(data.stats.self_discipline.basic_bonus);
|
||||
actorData.data.stats.empathy.stat_bonus = Number(data.stats.empathy.racial_bonus)+Number(data.stats.empathy.special_bonus)+Number(data.stats.empathy.basic_bonus);
|
||||
actorData.data.stats.intuition.stat_bonus = Number(data.stats.intuition.racial_bonus)+Number(data.stats.intuition.special_bonus)+Number(data.stats.intuition.basic_bonus);
|
||||
actorData.data.stats.presence.stat_bonus = Number(data.stats.presence.racial_bonus)+Number(data.stats.presence.special_bonus)+Number(data.stats.presence.basic_bonus);
|
||||
actorData.data.stats.quickness.stat_bonus = Number(data.stats.quickness.racial_bonus)+Number(data.stats.quickness.special_bonus)+Number(data.stats.quickness.basic_bonus);
|
||||
actorData.data.stats.strength.stat_bonus = Number(data.stats.strength.racial_bonus)+Number(data.stats.strength.special_bonus)+Number(data.stats.strength.basic_bonus);
|
||||
|
||||
}
|
||||
|
||||
prepareResistanceRolls(actorData) {
|
||||
|
||||
const data = actorData.data;
|
||||
|
||||
actorData.data.resistance_rolls.essence = Number(actorData.data.stats.empathy.stat_bonus * 3)
|
||||
actorData.data.resistance_rolls.channeling = Number(actorData.data.stats.intuition.stat_bonus * 3)
|
||||
actorData.data.resistance_rolls.mentalism = Number(actorData.data.stats.presence.stat_bonus * 3)
|
||||
actorData.data.resistance_rolls.fear = Number(actorData.data.stats.self_discipline.stat_bonus * 3)
|
||||
actorData.data.resistance_rolls.poison_disease = Number(actorData.data.stats.constitution.stat_bonus * 3)
|
||||
actorData.data.resistance_rolls.chann_ess = Number(actorData.data.stats.intuition.stat_bonus) + Number(actorData.data.stats.empathy.stat_bonus)
|
||||
actorData.data.resistance_rolls.chann_ment = Number(actorData.data.stats.intuition.stat_bonus) + Number(actorData.data.stats.presence.stat_bonus)
|
||||
actorData.data.resistance_rolls.ess_ment = Number(actorData.data.stats.empathy.stat_bonus) + Number(actorData.data.stats.presence.stat_bonus)
|
||||
actorData.data.resistance_rolls.arcane = Number(actorData.data.stats.empathy.stat_bonus) + Number(actorData.data.stats.intuition.stat_bonus) + Number(actorData.data.stats.presence.stat_bonus)
|
||||
}
|
||||
|
||||
prepareSkillCatStatBonuses() {
|
||||
console.log("Getting Items");
|
||||
for (const item of this.items) {
|
||||
if (item.type === "skill_category") {
|
||||
|
||||
// Get all the applicable stats for this skill category
|
||||
var app_stat_1 = item.data.data.app_stat_1;
|
||||
var app_stat_2 = item.data.data.app_stat_2;
|
||||
var app_stat_3 = item.data.data.app_stat_3;
|
||||
console.log(item.name + " " + app_stat_1 + " " + app_stat_2 + " " + app_stat_3);
|
||||
|
||||
// If the first one is None we don't need to do anything further
|
||||
if (app_stat_1 === "None") {
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
var applicable_stat_bonus = 0;
|
||||
|
||||
var app_stat_1_found = false;
|
||||
var app_stat_2_found = false;
|
||||
var app_stat_3_found = false;
|
||||
|
||||
// Iterate through the applicable stats and find their full names
|
||||
for (const stat in CONFIG.rmss.stats) {
|
||||
// If the configured App Stat matches the one of the stats in config
|
||||
if (app_stat_1 === CONFIG.rmss.stats[stat].shortname) {
|
||||
console.log("Found first stat: " + stat);
|
||||
app_stat_1_found = true;
|
||||
// Get the Stat Bonus
|
||||
console.log(this.data.data.stats[stat].stat_bonus);
|
||||
applicable_stat_bonus = applicable_stat_bonus + this.data.data.stats[stat].stat_bonus
|
||||
//console.log("New Applicable Stat Bonus: " + applicable_stat_bonus)
|
||||
}
|
||||
if (app_stat_2 === CONFIG.rmss.stats[stat].shortname) {
|
||||
console.log("Found second stat: " + stat);
|
||||
app_stat_2_found = true;
|
||||
console.log(this.data.data.stats[stat].stat_bonus);
|
||||
applicable_stat_bonus = applicable_stat_bonus + this.data.data.stats[stat].stat_bonus
|
||||
//console.log("New Applicable Stat Bonus: " + applicable_stat_bonus)
|
||||
}
|
||||
if (app_stat_3 === CONFIG.rmss.stats[stat].shortname) {
|
||||
console.log("Found third stat: " + stat);
|
||||
app_stat_3_found = true;
|
||||
console.log(this.data.data.stats[stat].stat_bonus);
|
||||
applicable_stat_bonus = applicable_stat_bonus + this.data.data.stats[stat].stat_bonus
|
||||
//console.log("New Applicable Stat Bonus: " + applicable_stat_bonus)
|
||||
}
|
||||
}
|
||||
console.log("Applicable Stat Bonus: " + applicable_stat_bonus)
|
||||
if (app_stat_1_found === true && app_stat_2_found === true && app_stat_3_found === true) {
|
||||
// Apply the update if we found stat bonuses for every applicable stat
|
||||
item.data.data.stat_bonus = applicable_stat_bonus;
|
||||
|
||||
// Update the total in the Item
|
||||
item.calculateSkillCatTotalBonus(item.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
77
rmss/module/documents/item.js
Normal file
@ -0,0 +1,77 @@
|
||||
export class RMSSItem extends Item {
|
||||
|
||||
/** @override */
|
||||
prepareData() {
|
||||
// Prepare data for the item. Calling the super version of this executes
|
||||
// the following, in order: data reset (to clear active effects),
|
||||
// prepareBaseData(), prepareEmbeddedDocuments() (including active effects),
|
||||
// prepareDerivedData().
|
||||
super.prepareData();
|
||||
}
|
||||
|
||||
// Set the images for newly created images (need to fix for copied images).
|
||||
async _preCreate(data, options, userId) {
|
||||
await super._preCreate(data, options, userId);
|
||||
if (!data.img) {
|
||||
if (this.data.type == "armor") {
|
||||
await this.data.update({img: "systems/rmss/assets/default/armor.svg"});
|
||||
}
|
||||
else if (this.data.type == "weapon") {
|
||||
await this.data.update({img: "systems/rmss/assets/default/weapon.svg"});
|
||||
}
|
||||
else if (this.data.type == "skill") {
|
||||
await this.data.update({img: "systems/rmss/assets/default/skill.svg"});
|
||||
}
|
||||
else if (this.data.type == "skill_category") {
|
||||
await this.data.update({img: "systems/rmss/assets/default/skill_category.svg"});
|
||||
}
|
||||
else if (this.data.type == "spell") {
|
||||
await this.data.update({img: "systems/rmss/assets/default/spell.svg"});
|
||||
}
|
||||
else if (this.data.type == "herb_or_poison") {
|
||||
await this.data.update({img: "systems/rmss/assets/default/herb_or_poison.svg"});
|
||||
}
|
||||
else if (this.data.type == "transport") {
|
||||
await this.data.update({img: "systems/rmss/assets/default/transport.svg"});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
calculateSkillCatTotalBonus(itemData) {
|
||||
// Calculate Stat Bonuses
|
||||
|
||||
const data = itemData.data;
|
||||
|
||||
itemData.data.total_bonus = Number(data.rank_bonus)+Number(data.stat_bonus)+Number(data.prof_bonus)+Number(data.special_bonus_1)+Number(data.special_bonus_2);
|
||||
}
|
||||
|
||||
prepareDerivedData() {
|
||||
const itemData = this.data;
|
||||
const data = itemData.data;
|
||||
const flags = itemData.flags.rmss || {};
|
||||
|
||||
// Make separate methods for each item type to keep things organized.
|
||||
this._prepareSkillCategoryData(itemData);
|
||||
this._prepareSkillData(itemData);
|
||||
}
|
||||
|
||||
_prepareSkillCategoryData(itemData) {
|
||||
if (itemData.type !== 'skill_category') return;
|
||||
|
||||
// Make modifications to data here. For example:
|
||||
//const data = itemData.data;
|
||||
|
||||
// Calculate Stat Bonuses
|
||||
this.calculateSkillCatTotalBonus(itemData);
|
||||
}
|
||||
|
||||
_prepareSkillData(itemData) {
|
||||
if (itemData.type !== 'skill') return;
|
||||
|
||||
// Make modifications to data here. For example:
|
||||
const data = itemData.data;
|
||||
|
||||
// Calculate Stat Bonuses
|
||||
itemData.data.total_bonus = Number(data.rank_bonus)+Number(data.category_bonus)+Number(data.item_bonus)+Number(data.special_bonus_1)+Number(data.special_bonus_2);
|
||||
}
|
||||
}
|
139
rmss/module/sheets/actors/rmss_player_sheet.js
Normal file
@ -0,0 +1,139 @@
|
||||
export default class RMSSPlayerSheet extends ActorSheet {
|
||||
|
||||
// Override Default Options, Set CSS Classes, Set Default Sheet, Set up Sheet Tabs
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
template: "systems/rmss/templates/sheets/actors/rmss-character-sheet.html",
|
||||
classes: ["rmss", "sheet", "actor"],
|
||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "features" }]
|
||||
});
|
||||
}
|
||||
|
||||
// Make the data available to the sheet template
|
||||
getData() {
|
||||
const context = super.getData();
|
||||
|
||||
// Use a safe clone of the actor data for further operations.
|
||||
const actorData = this.actor.data.toObject(false);
|
||||
|
||||
// Add the actor's data to context.data for easier access, as well as flags.
|
||||
context.data = actorData.data;
|
||||
context.flags = actorData.flags;
|
||||
|
||||
// Prepare character data and items.
|
||||
if (actorData.type == 'character') {
|
||||
this._prepareItems(context);
|
||||
this._prepareCharacterData(context);
|
||||
}
|
||||
|
||||
// Prepare NPC data and items.
|
||||
if (actorData.type == 'npc') {
|
||||
this._prepareItems(context);
|
||||
}
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
_prepareCharacterData(context) {
|
||||
}
|
||||
|
||||
_prepareItems(context) {
|
||||
// Initialize containers.
|
||||
const gear = [];
|
||||
const playerskill= [];
|
||||
const skillcat = [];
|
||||
|
||||
// Iterate through items, allocating to containers
|
||||
for (let i of context.items) {
|
||||
i.img = i.img || DEFAULT_TOKEN;
|
||||
// Append to gear.
|
||||
if (i.type === 'item' || i.type === 'armor' || i.type === 'weapon' || i.type === 'herb_or_poison') {
|
||||
gear.push(i);
|
||||
}
|
||||
// Append to skill categories.
|
||||
else if (i.type === 'skill_category') {
|
||||
skillcat.push(i);
|
||||
}
|
||||
// Append to playerskill
|
||||
else if (i.type === 'skill') {
|
||||
playerskill.push(i);
|
||||
}
|
||||
}
|
||||
|
||||
// Sort Skill/Skillcat Arrays
|
||||
skillcat.sort(function (a, b){
|
||||
if (a.name < b.name) {
|
||||
return -1;
|
||||
}
|
||||
if (a.name > b.name) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
playerskill.sort(function (a, b){
|
||||
if (a.name < b.name) {
|
||||
return -1;
|
||||
}
|
||||
if (a.name > b.name) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
|
||||
// Assign and return
|
||||
context.gear = gear;
|
||||
context.skillcat = skillcat;
|
||||
context.playerskill = playerskill;
|
||||
}
|
||||
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
// NOTE: Can you do skill/item favorites this way?
|
||||
|
||||
// Render the item sheet for viewing/editing prior to the editable check.
|
||||
html.find('.item-edit').click(ev => {
|
||||
const item = this.actor.items.get(ev.currentTarget.getAttribute("data-item-id"));
|
||||
console.log(this);
|
||||
item.sheet.render(true);
|
||||
});
|
||||
|
||||
// -------------------------------------------------------------
|
||||
// Everything below here is only needed if the sheet is editable
|
||||
if (!this.isEditable) return;
|
||||
|
||||
// Add Item
|
||||
html.find('.item-create').click(this._onItemCreate.bind(this));
|
||||
|
||||
// Delete Item
|
||||
html.find('.item-delete').click(ev => {
|
||||
const item = this.actor.items.get(ev.currentTarget.getAttribute("data-item-id"));
|
||||
console.log(ev.currentTarget.getAttribute("data-item-id"));
|
||||
item.delete();
|
||||
});
|
||||
}
|
||||
|
||||
async _onItemCreate(event) {
|
||||
event.preventDefault();
|
||||
const header = event.currentTarget;
|
||||
// Get the type of item to create.
|
||||
const type = header.dataset.type;
|
||||
// Grab any data associated with this control.
|
||||
const data = duplicate(header.dataset);
|
||||
// Initialize a default name.
|
||||
const name = `New ${type.capitalize()}`;
|
||||
// Prepare the item object.
|
||||
const itemData = {
|
||||
name: name,
|
||||
type: type,
|
||||
data: data
|
||||
};
|
||||
// Remove the type from the dataset since it's in the itemData.type prop.
|
||||
delete itemData.data["type"];
|
||||
|
||||
// Finally, create the item!
|
||||
return await Item.create(itemData, {parent: this.actor});
|
||||
}
|
||||
}
|
33
rmss/module/sheets/items/rmss_armor_sheet.js
Normal file
@ -0,0 +1,33 @@
|
||||
// Our Item Sheet extends the default
|
||||
export default class RMSSArmorSheet extends ItemSheet {
|
||||
|
||||
// Set the height and width
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
width: 530,
|
||||
height: 440,
|
||||
template: "systems/rmss/templates/sheets/items/rmss-armor-sheet.html",
|
||||
classes: ["rmss", "sheet", "item"]
|
||||
});
|
||||
}
|
||||
|
||||
// If our sheet is called here it is.
|
||||
get template() {
|
||||
return `systems/rmss/templates/sheets/items/rmss-armor-sheet.html`;
|
||||
}
|
||||
|
||||
// Make the data available to the sheet template
|
||||
getData() {
|
||||
const baseData = super.getData();
|
||||
|
||||
let sheetData = {
|
||||
owner: this.item.isOwner,
|
||||
editable :this.isEditable,
|
||||
item: baseData.item,
|
||||
data: baseData.item.data.data,
|
||||
config: CONFIG.rmss
|
||||
};
|
||||
|
||||
return sheetData;
|
||||
}
|
||||
}
|
33
rmss/module/sheets/items/rmss_herb_or_poison_sheet.js
Normal file
@ -0,0 +1,33 @@
|
||||
// Our Item Sheet extends the default
|
||||
export default class RMSSHerbAndPoisonSheet extends ItemSheet {
|
||||
|
||||
// Set the height and width
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
width: 530,
|
||||
height: 440,
|
||||
template: "systems/rmss/templates/sheets/items/rmss-herb-or-poison-sheet.html",
|
||||
classes: ["rmss", "sheet", "item"]
|
||||
});
|
||||
}
|
||||
|
||||
// If our sheet is called here it is.
|
||||
get template() {
|
||||
return `systems/rmss/templates/sheets/items/rmss-herb-or-poison-sheet.html`;
|
||||
}
|
||||
|
||||
// Make the data available to the sheet template
|
||||
getData() {
|
||||
const baseData = super.getData();
|
||||
|
||||
let sheetData = {
|
||||
owner: this.item.isOwner,
|
||||
editable :this.isEditable,
|
||||
item: baseData.item,
|
||||
data: baseData.item.data.data,
|
||||
config: CONFIG.rmss
|
||||
};
|
||||
|
||||
return sheetData;
|
||||
}
|
||||
}
|
33
rmss/module/sheets/items/rmss_item_sheet.js
Normal file
@ -0,0 +1,33 @@
|
||||
// Our Item Sheet extends the default
|
||||
export default class RMSSItemSheet extends ItemSheet {
|
||||
|
||||
// Set the height and width
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
width: 530,
|
||||
height: 440,
|
||||
template: "systems/rmss/templates/sheets/items/rmss-item-sheet.html",
|
||||
classes: ["rmss", "sheet", "item"]
|
||||
});
|
||||
}
|
||||
|
||||
// If our sheet is called here it is.
|
||||
get template() {
|
||||
return `systems/rmss/templates/sheets/items/rmss-item-sheet.html`;
|
||||
}
|
||||
|
||||
// Make the data available to the sheet template
|
||||
getData() {
|
||||
const baseData = super.getData();
|
||||
|
||||
let sheetData = {
|
||||
owner: this.item.isOwner,
|
||||
editable :this.isEditable,
|
||||
item: baseData.item,
|
||||
data: baseData.item.data.data,
|
||||
config: CONFIG.rmss
|
||||
};
|
||||
|
||||
return sheetData;
|
||||
}
|
||||
}
|
33
rmss/module/sheets/items/rmss_transport_sheet.js
Normal file
@ -0,0 +1,33 @@
|
||||
// Our Item Sheet extends the default
|
||||
export default class RMSSTransportSheet extends ItemSheet {
|
||||
|
||||
// Set the height and width
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
width: 530,
|
||||
height: 440,
|
||||
template: "systems/rmss/templates/sheets/items/rmss-transport-sheet.html",
|
||||
classes: ["rmss", "sheet", "item"]
|
||||
});
|
||||
}
|
||||
|
||||
// If our sheet is called here it is.
|
||||
get template() {
|
||||
return `systems/rmss/templates/sheets/items/rmss-transport-sheet.html`;
|
||||
}
|
||||
|
||||
// Make the data available to the sheet template
|
||||
getData() {
|
||||
const baseData = super.getData();
|
||||
|
||||
let sheetData = {
|
||||
owner: this.item.isOwner,
|
||||
editable :this.isEditable,
|
||||
item: baseData.item,
|
||||
data: baseData.item.data.data,
|
||||
config: CONFIG.rmss
|
||||
};
|
||||
|
||||
return sheetData;
|
||||
}
|
||||
}
|
33
rmss/module/sheets/items/rmss_weapon_sheet.js
Normal file
@ -0,0 +1,33 @@
|
||||
// Our Item Sheet extends the default
|
||||
export default class RMSSWeaponSheet extends ItemSheet {
|
||||
|
||||
// Set the height and width
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
width: 530,
|
||||
height: 440,
|
||||
template: "systems/rmss/templates/sheets/items/rmss-weapon-sheet.html",
|
||||
classes: ["rmss", "sheet", "item"]
|
||||
});
|
||||
}
|
||||
|
||||
// If our sheet is called here it is.
|
||||
get template() {
|
||||
return `systems/rmss/templates/sheets/items/rmss-weapon-sheet.html`;
|
||||
}
|
||||
|
||||
// Make the data available to the sheet template
|
||||
getData() {
|
||||
const baseData = super.getData();
|
||||
|
||||
let sheetData = {
|
||||
owner: this.item.isOwner,
|
||||
editable :this.isEditable,
|
||||
item: baseData.item,
|
||||
data: baseData.item.data.data,
|
||||
config: CONFIG.rmss
|
||||
};
|
||||
|
||||
return sheetData;
|
||||
}
|
||||
}
|
111
rmss/module/sheets/skills/rmss_skill_category_sheet.js
Normal file
@ -0,0 +1,111 @@
|
||||
// Our Item Sheet extends the default
|
||||
export default class RMSSSkillCategorySheet extends ItemSheet {
|
||||
|
||||
// Set the height and width
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
width: 530,
|
||||
height: 440,
|
||||
template: "systems/rmss/templates/sheets/skills/rmss-skill-category-sheet.html",
|
||||
classes: ["rmss", "sheet", "item"]
|
||||
});
|
||||
}
|
||||
|
||||
// If our sheet is called here it is.
|
||||
get template() {
|
||||
return `systems/rmss/templates/sheets/skills/rmss-skill-category-sheet.html`;
|
||||
}
|
||||
|
||||
// Make the data available to the sheet template
|
||||
getData() {
|
||||
const baseData = super.getData();
|
||||
|
||||
// Get a list of stats that can be used as applicable stats
|
||||
var applicable_stat_list = this.prepareApplicableStatValues(CONFIG);
|
||||
|
||||
//Get the currently selected value for all three applicable stats
|
||||
var applicable_stat_1_selected = this.prepareApplicableSelectedStat("app_stat_1");
|
||||
var applicable_stat_2_selected = this.prepareApplicableSelectedStat("app_stat_2");
|
||||
var applicable_stat_3_selected = this.prepareApplicableSelectedStat("app_stat_3");
|
||||
|
||||
// Build the string for Applicable Stats
|
||||
var applicable_stat_text = this.buildApplicableStatsText(applicable_stat_1_selected, applicable_stat_2_selected, applicable_stat_3_selected)
|
||||
baseData.item.data.data['applicable_stats'] = applicable_stat_text
|
||||
|
||||
|
||||
let sheetData = {
|
||||
owner: this.item.isOwner,
|
||||
editable :this.isEditable,
|
||||
item: baseData.item,
|
||||
data: baseData.item.data.data,
|
||||
config: CONFIG.rmss,
|
||||
applicable_stat_list: applicable_stat_list,
|
||||
applicable_stat_1_selected: applicable_stat_1_selected,
|
||||
applicable_stat_2_selected: applicable_stat_2_selected,
|
||||
applicable_stat_3_selected: applicable_stat_3_selected
|
||||
};
|
||||
|
||||
console.log(this.item)
|
||||
|
||||
return sheetData;
|
||||
}
|
||||
|
||||
async _setApplicableStat(item, ev) {
|
||||
// Build a JSON Object from the select tag value and select name (item data attribute key)
|
||||
var update_key = ev.currentTarget.getAttribute("name");
|
||||
var update_data = ev.target.value;
|
||||
|
||||
// Update Item Data
|
||||
await item.update({[update_key]: update_data});
|
||||
}
|
||||
|
||||
prepareApplicableStatValues(CONFIG) {
|
||||
var applicable_stat_1_list = {None: "None"}
|
||||
|
||||
// Get a list of stat shortnames from the config
|
||||
for (const item in CONFIG.rmss.stats) {
|
||||
applicable_stat_1_list[CONFIG.rmss.stats[item]['shortname']] = CONFIG.rmss.stats[item]['shortname'];
|
||||
}
|
||||
return applicable_stat_1_list;
|
||||
}
|
||||
|
||||
// Determine which Stat is selected for applicable stats
|
||||
prepareApplicableSelectedStat(app_stat) {
|
||||
var applicable_stat_selected = "";
|
||||
applicable_stat_selected = this.item.data.data[app_stat];
|
||||
return applicable_stat_selected;
|
||||
}
|
||||
|
||||
// Build the text that is displayed in the Applicable Stats field
|
||||
buildApplicableStatsText(app_stat_1, app_stat_2, app_stat_3) {
|
||||
|
||||
if (app_stat_1 === "None") {
|
||||
return("None")
|
||||
}
|
||||
else if (app_stat_1 !== "None" && app_stat_2 === "None") {
|
||||
return(app_stat_1)
|
||||
}
|
||||
else if (app_stat_1 !== "None" && app_stat_2 !== "None" && app_stat_3 === "None" ) {
|
||||
return(app_stat_1 + "/" + app_stat_2 )
|
||||
}
|
||||
else if (app_stat_1 !== "None" && app_stat_2 !== "None" && app_stat_3 !== "None" ) {
|
||||
return(app_stat_1 + "/" + app_stat_2 + "/" + app_stat_3 )
|
||||
}
|
||||
else {
|
||||
return("None")
|
||||
}
|
||||
}
|
||||
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
// -------------------------------------------------------------
|
||||
// Everything below here is only needed if the sheet is editable
|
||||
if (!this.isEditable) return;
|
||||
|
||||
// Update Applicable Stats for Skill Categories
|
||||
html.find('.stat-selector').change(ev => {
|
||||
this._setApplicableStat(this.item, ev);
|
||||
});
|
||||
}
|
||||
}
|
33
rmss/module/sheets/skills/rmss_skill_sheet.js
Normal file
@ -0,0 +1,33 @@
|
||||
// Our Item Sheet extends the default
|
||||
export default class RMSSSkillSheet extends ItemSheet {
|
||||
|
||||
// Set the height and width
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
width: 530,
|
||||
height: 440,
|
||||
template: "systems/rmss/templates/sheets/skills/rmss-skill-sheet.html",
|
||||
classes: ["rmss", "sheet", "item"]
|
||||
});
|
||||
}
|
||||
|
||||
// If our sheet is called here it is.
|
||||
get template() {
|
||||
return `systems/rmss/templates/sheets/skills/rmss-skill-sheet.html`;
|
||||
}
|
||||
|
||||
// Make the data available to the sheet template
|
||||
getData() {
|
||||
const baseData = super.getData();
|
||||
|
||||
let sheetData = {
|
||||
owner: this.item.isOwner,
|
||||
editable :this.isEditable,
|
||||
item: baseData.item,
|
||||
data: baseData.item.data.data,
|
||||
config: CONFIG.rmss
|
||||
};
|
||||
|
||||
return sheetData;
|
||||
}
|
||||
}
|
32
rmss/module/sheets/spells/rmss_spell_sheet.js
Normal file
@ -0,0 +1,32 @@
|
||||
// Our Item Sheet extends the default
|
||||
export default class RMSSSpellSheet extends ItemSheet {
|
||||
|
||||
// Set the height and width
|
||||
static get defaultOptions() {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
width: 530,
|
||||
height: 440,
|
||||
classes: ["rmss", "sheet", "item"]
|
||||
});
|
||||
}
|
||||
|
||||
// If our sheet is called here it is.
|
||||
get template() {
|
||||
return `systems/rmss/templates/sheets/spells/rmss-spell-sheet.html`;
|
||||
}
|
||||
|
||||
// Make the data available to the sheet template
|
||||
getData() {
|
||||
const baseData = super.getData();
|
||||
|
||||
let sheetData = {
|
||||
owner: this.item.isOwner,
|
||||
editable :this.isEditable,
|
||||
item: baseData.item,
|
||||
data: baseData.item.data.data,
|
||||
config: CONFIG.rmss
|
||||
};
|
||||
|
||||
return sheetData;
|
||||
}
|
||||
}
|
55
rmss/packs/skill_categories.db
Normal file
@ -0,0 +1,55 @@
|
||||
{"_id":"0d3EfynJXdtM5Dzm","name":"Armor • Light","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Ag/St/Ag","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"0w6sahjMDlHYSN8V","name":"Lore • Obscure","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Me/Re/Me","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"1G2k2fwahmEzCOFU","name":"Technical/Trade • Vocational","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Me/In/Re","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"4BM6WowdqAcmqKqQ","name":"Lore • Technical","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Me/Re/Me","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"4rr30P65Yc43Ncjh","name":"Science/Analytic • Specialized","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Re/Me/Re","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Body Development","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Co/SD/Co","development_cost":"","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.HfkzoDVADnq2dYJ7"}},"_id":"5QRIgoZ6jew76BgE"}
|
||||
{"_id":"8TZWjsbDPWi4xLNt","name":"Weapon • Thrown","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Ag/St/Ag","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"91zRgmv9jirmpA3u","name":"Subterfuge • Attack","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Ag/SD/In","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Influence","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Pr/Em/In","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.elWpmeBUSeX7AdrX"}},"_id":"96thkRaRd0KvdiIY"}
|
||||
{"name":"Self Control","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"SD/Pr/SD","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.rbe2UnhjpflyUZSE"}},"_id":"B1dbjqpZq0srb9tg"}
|
||||
{"_id":"CegELmkfwbiBjnRk","name":"Athletic • Gymanstics","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Ag/Qu/Ag","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Power Awareness","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Em/In/Pr","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.MddRxrypkR5XmFaA"}},"_id":"DowJf31x9cOtxFHF"}
|
||||
{"_id":"FFdtMkQ6yupVjPeS","name":"Spells • Arcane Open Lists","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"Fcj10XbsHSUR5phg","name":"Subterfuge • Mechanics","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"In/Ag/Re","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"G6EOQxjgxzXF178q","name":"Spells • Own Realm Other Base Lists","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Special Defenses","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"none","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.jCqolNb9eySmsuMB"}},"_id":"GLunI5fshwER51fi"}
|
||||
{"_id":"Gtr6mVQnCpNtHViI","name":"Weapon • Missile","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Ag/St/Ag","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"HMWeRbDDZtl0tXEh","name":"Spells • Other Realm Base Lists","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"HpgMGMSEQ8Ts7YbG","name":"Armor • Medium","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"St/Ag/St","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"IXcTjepLPq31vxVT","name":"Artistic • Active","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Em/In/Pr","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"Ip7mrF0VZ1ExBksX","name":"Outdoor • Animal","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Em/Ag/Em","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"Jnd5pdtnTal5h06A","name":"Science/Analytic • Basic","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Re/Me/Re","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"KnUkHQavTshrTjkg","name":"Awareness • Perceptions","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"In/Sd/In","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"N42RNwyuUGHRjodJ","name":"Spells • Own Realm Closed Lists","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"OyH3yI187GiJcIc4","name":"Lore • Magical","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Me/Re/Me","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"Q4i7dMnuPsVqZHYw","name":"Artistic • Passive","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Em/In/Pr","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"QTDmhJB09fDe8iQv","name":"Martial Arts • Striking","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"St/Ag/St","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Power Point Development","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.2C7f9nvf1kuK8rXY"}},"_id":"QtaTRdx4XPibLhdr"}
|
||||
{"_id":"Rl6sVmW7tYsp7AwE","name":"Weapon • Pole Arms","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"St/Ag/St","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Power Manipulation","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Em/In/Pr","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.qDbLIKRv8Q2Ciw74"}},"_id":"TW4y2IyruLOgQakC"}
|
||||
{"_id":"Ta85zeG0pUbHtNBr","name":"Spells • Other Realm Open Lists","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Communications","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Re/Me/Em","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.2JoQYKw8w0Hlpq4A"}},"_id":"UCh0IobVLOUEK6av"}
|
||||
{"_id":"V8KDQbEuZHFyAVmr","name":"Awareness • Searching","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"In/Re/SD","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"Vr9W9tfAwSitbMET","name":"Outdoor • Environmental","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"SD/In/Me","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"YEEf2L6g7ZMzTcbF","name":"Technical/Trade • General","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Re/Me/SD","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"YmhpyPfe6QnhPvQt","name":"Armor • Heavy","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"St/Ag/St","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"Yv6KAUTUixKBs2Wg","name":"Weapon • Missile Artillery","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"In/Ag/Re","development_cost":"","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"aJG4v8JkqUiXORVC","name":"Athletic • Endurance","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Co/Ag/St","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"aMAh2dm9dNpXc594","name":"Technical/Trade • Professional","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Re/Me/In","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"apah6xF0sZmT2wbe","name":"Spells • Own Realm Open Lists","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"bBFVMX3i9ytyGBjc","name":"Combat Maneuvers","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Ag/Qu/SD","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.tnvG5xaEcQocDS0w"}}}
|
||||
{"_id":"bWXkqTxusDg3LD3p","name":"Lore • General","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Me/Re/Me","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Urban","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"In/Pr/Re","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.1ctWjqn6zIq1Ecah"}},"_id":"eGjI9piHe9tafzBC"}
|
||||
{"_id":"eJ8HV5AYy1zzYrEL","name":"Weapon • 1-H Concussion","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"St/Ag/St","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"fiTen0GICCayYkzd","name":"Athletic • Brawn","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"St/Co/Ag","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"jOlyQllB1OMurWft","name":"Martial Arts • Sweeps","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Ag/St/Ag","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Special Attacks","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"St/Ag/St","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.DGkoTXdfa07tJWMt"}},"_id":"k5ybPxU5ZKdege0Q"}
|
||||
{"_id":"m8dtArvtmCzVC1mA","name":"Subterfuge • Stealth","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Ag/SD/In","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Directed Spells","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Ag/SD/Ag","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.OY1iAvwGdsBA3oi9"}},"_id":"pwCwq6GP5Kra9zKv"}
|
||||
{"_id":"r9z7zKuzfWlORaes","name":"Spells • Own Realm Own Base Lists","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"th7zQOOVjKY0B1j1","name":"Weapon • 2-Handed","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"St/Ag/St","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"name":"Crafts","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"Ag/Me/SD","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{"core":{"sourceId":"Item.EtAtBWxG9aujAxKn"}},"_id":"vcDgHmO9EhyzmTRj"}
|
||||
{"_id":"wK30vs0JNMznlzWU","name":"Spells • Other Realm Closed List","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"y0bshWPNyGl1THYy","name":"Awareness • Senses","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"In/SD/In","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
||||
{"_id":"zyMFRGhlL3fuRjab","name":"Weapon • 1-H Edged","type":"skill_category","img":"systems/rmss/assets/default/skill_category.svg","data":{"description":"Description here.","applicable_stats":"St/Ag/St","development_cost":"0","ranks":0,"new_ranks":0,"rank_bonus":0,"stat_bonus":0,"prof_bonus":0,"special_bonus_1":0,"special_bonus_2":0,"total_bonus":0,"favorite":false},"effects":[],"folder":null,"sort":0,"permission":{"default":0,"jFAyH93PxEe1ncxK":3},"flags":{}}
|
296
rmss/rmss.css
Normal file
@ -0,0 +1,296 @@
|
||||
.sheet form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.sheet .sheet-content {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.sheet .sheet-content .editor {
|
||||
height: 100%;
|
||||
}
|
||||
.container {
|
||||
display: flex;
|
||||
}
|
||||
.actor-icon {
|
||||
flex-shrink: 1;
|
||||
}
|
||||
.header-container {
|
||||
flex-grow: 2;
|
||||
outline: 1px solid;
|
||||
/* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
.header-text {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
}
|
||||
.resource-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-grow: 3;
|
||||
text-align: -webkit-center;
|
||||
}
|
||||
.resource-container > * {
|
||||
flex: 1 1 0;
|
||||
}
|
||||
.resource-entry {
|
||||
outline: 1px solid;
|
||||
/* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
.resource-entry input {
|
||||
width: 50px;
|
||||
border: none;
|
||||
}
|
||||
.stat-container {
|
||||
flex-direction: column;
|
||||
flex-shrink: 1;
|
||||
}
|
||||
.equipment-container {
|
||||
flex-direction: column;
|
||||
flex-grow: 1;
|
||||
}
|
||||
.stat-block {
|
||||
outline: 1px solid;
|
||||
/* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
.stat-name,
|
||||
.money-name {
|
||||
width: 75px;
|
||||
border: none;
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
.stat-name input {
|
||||
border: none;
|
||||
}
|
||||
.stat-header {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
.fixed-info-container {
|
||||
flex-grow: 3;
|
||||
flex-direction: row;
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
.fixed-info-section {
|
||||
outline: 1px solid;
|
||||
/* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
.armor-block {
|
||||
outline: 1px solid;
|
||||
/* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
.race-stat-fixed-info-block {
|
||||
outline: 1px solid;
|
||||
/* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
.role-traits-block {
|
||||
outline: 1px solid;
|
||||
/* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
.background-info-block {
|
||||
outline: 1px solid;
|
||||
/* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
.resistance-block {
|
||||
outline: 1px solid;
|
||||
/* use instead of border */
|
||||
margin-top: 1px;
|
||||
margin-left: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
.red {
|
||||
background-color: orangered;
|
||||
}
|
||||
.blue {
|
||||
background-color: lightblue;
|
||||
}
|
||||
.grey {
|
||||
background-color: lightgrey;
|
||||
}
|
||||
.green {
|
||||
background-color: lightseagreen;
|
||||
}
|
||||
.skillcat-name,
|
||||
.skill-name,
|
||||
.item-name {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
.skillcat-entry,
|
||||
.skill-entry,
|
||||
.item-entry {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
.skillcat-headeritem,
|
||||
.skill-headeritem,
|
||||
.item-headeritem {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
.skillcat-controls,
|
||||
.skill-controls,
|
||||
.item-controls {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
.money-column {
|
||||
flex-direction: column;
|
||||
}
|
||||
.money-container {
|
||||
flex-direction: column;
|
||||
flex-shrink: 1;
|
||||
}
|
||||
.table-font {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
.table-bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
.table-center {
|
||||
text-align: center;
|
||||
}
|
||||
.table-controls {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
.skillcat-grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: [skill-category-name] 10% [applicable-stats] 10% [dev-cost] 8% [num-ranks] 8% [new-ranks] 8% [rank-bonus] 8% [stat-bonus] 8% [prof-bonus] 8% [special-bonus-1] 8% [special-bonus-2] 8% [total-bonus] 8% [controls] 8%;
|
||||
}
|
||||
.skillcat-grid-container > div {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
.skillcat-grid-container > div:nth-child(24n+1),
|
||||
.skillcat-grid-container > div:nth-child(24n+2),
|
||||
.skillcat-grid-container > div:nth-child(24n+3),
|
||||
.skillcat-grid-container > div:nth-child(24n+4),
|
||||
.skillcat-grid-container > div:nth-child(24n+5),
|
||||
.skillcat-grid-container > div:nth-child(24n+6),
|
||||
.skillcat-grid-container > div:nth-child(24n+7),
|
||||
.skillcat-grid-container > div:nth-child(24n+8),
|
||||
.skillcat-grid-container > div:nth-child(24n+9),
|
||||
.skillcat-grid-container > div:nth-child(24n+10),
|
||||
.skillcat-grid-container > div:nth-child(24n+11),
|
||||
.skillcat-grid-container > div:nth-child(24n+12) {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0 0);
|
||||
}
|
||||
.skillcat-grid-heading {
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid;
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0 0);
|
||||
}
|
||||
.skills-grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: [favorite] 9% [skill-name] 11% [num-ranks] 9% [new-ranks] 9% [rank-bonus] 9% [category-bonus] 9% [item-bonus] 9% [special-bonus-1] 9% [special-bonus-2] 9% [total-bonus] 9% [controls] 8%;
|
||||
}
|
||||
.skills-grid-container > div {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
.skills-grid-container > div:nth-child(22n+1),
|
||||
.skills-grid-container > div:nth-child(22n+2),
|
||||
.skills-grid-container > div:nth-child(22n+3),
|
||||
.skills-grid-container > div:nth-child(22n+4),
|
||||
.skills-grid-container > div:nth-child(22n+5),
|
||||
.skills-grid-container > div:nth-child(22n+6),
|
||||
.skills-grid-container > div:nth-child(22n+7),
|
||||
.skills-grid-container > div:nth-child(22n+8),
|
||||
.skills-grid-container > div:nth-child(22n+9),
|
||||
.skills-grid-container > div:nth-child(22n+10),
|
||||
.skills-grid-container > div:nth-child(22n+11) {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0 0);
|
||||
}
|
||||
.skills-grid-heading {
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid;
|
||||
background-image: linear-gradient(rgba(0, 0, 0, 0.1) 0 0);
|
||||
}
|
||||
.applicable-stats-grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: [app-stat-1] 33% [app-stat-2] 33% [dapp-stat-3] 33%;
|
||||
}
|
||||
.applicable-stats-grid-container > div {
|
||||
font-family: Signika, sans-serif;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
91
rmss/rmss.js
Normal file
@ -0,0 +1,91 @@
|
||||
// Import Configuration Object
|
||||
console.log("rmss | Importing configuration javascript");
|
||||
import {rmss} from "./module/config.js";
|
||||
|
||||
// Import document classes.
|
||||
console.log("rmss | Importing document classes");
|
||||
import { RMSSActor } from "./module/documents/actor.js";
|
||||
import { RMSSItem } from "./module/documents/item.js";
|
||||
|
||||
// Import Sheets
|
||||
console.log("rmss | Importing actor and item sheet");
|
||||
import RMSSItemSheet from "./module/sheets/items/rmss_item_sheet.js";
|
||||
import RMSSArmorSheet from "./module/sheets/items/rmss_armor_sheet.js";
|
||||
import RMSSTransportSheet from "./module/sheets/items/rmss_transport_sheet.js";
|
||||
import RMSSWeaponSheet from "./module/sheets/items/rmss_weapon_sheet.js";
|
||||
import RMSSHerbOrPoisonSheet from "./module/sheets/items/rmss_herb_or_poison_sheet.js";
|
||||
import RMSSSpellSheet from "./module/sheets/spells/rmss_spell_sheet.js";
|
||||
import RMSSSkillCategorySheet from "./module/sheets/skills/rmss_skill_category_sheet.js"
|
||||
import RMSSSkillSheet from "./module/sheets/skills/rmss_skill_sheet.js"
|
||||
|
||||
import RMSSPlayerSheet from "./module/sheets/actors/rmss_player_sheet.js";
|
||||
|
||||
// Preload handlebars templates for character sheets
|
||||
async function preloadHandlebarsTemplates() {
|
||||
const templatePaths = [
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-stats.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-fixed-info.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-armor-info.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-resistance.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-race-stat-fixed-info.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-role-traits.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-background-info.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-skill-categories.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-skills.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-fav-skills.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-items.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-money.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-skill-categories-grid.html",
|
||||
"systems/rmss/templates/sheets/actors/parts/actor-skills-grid.html"
|
||||
]
|
||||
return loadTemplates(templatePaths);
|
||||
}
|
||||
|
||||
// Hook the init function and set up our system
|
||||
Hooks.once("init", function () {
|
||||
console.log("rmss | Initialising Rolemaster Standard System");
|
||||
|
||||
// Load our custom actor and item classes
|
||||
console.log("rmss | Loading Rolemaster Actor and Item classes");
|
||||
game.rmss = {
|
||||
RMSSActor,
|
||||
RMSSItem
|
||||
};
|
||||
|
||||
// Define custom Document classes
|
||||
CONFIG.Actor.documentClass = RMSSActor;
|
||||
CONFIG.Item.documentClass = RMSSItem;
|
||||
|
||||
// Make Config Data Available
|
||||
CONFIG.rmss = rmss;
|
||||
|
||||
// Unregister Default Sheets
|
||||
console.log("rmss | Unregistering core sheets");
|
||||
|
||||
Items.unregisterSheet("core", ItemSheet);
|
||||
Actors.unregisterSheet("core", ActorSheet);
|
||||
|
||||
// Register RMSS Sheets
|
||||
console.log("rmss | Registering RMSS sheets");
|
||||
|
||||
// Items
|
||||
Items.registerSheet("rmss", RMSSItemSheet, {makeDefault: true, label: "rmss.entity_sheet.item", types: ['item']});
|
||||
Items.registerSheet("rmss", RMSSArmorSheet, {makeDefault: true, label: "rmss.entity_sheet.armor", types: ['armor']});
|
||||
Items.registerSheet("rmss", RMSSTransportSheet, {makeDefault: true, label: "rmss.entity_sheet.transport", types: ['transport']});
|
||||
Items.registerSheet("rmss", RMSSWeaponSheet, {makeDefault: true, label: "rmss.entity_sheet.weapon", types: ['weapon']});
|
||||
Items.registerSheet("rmss", RMSSHerbOrPoisonSheet, {makeDefault: true, label: "rmss.entity_sheet.herb_or_poison", types: ['herb_or_poison']});
|
||||
|
||||
// Spells
|
||||
Items.registerSheet("rmss", RMSSSpellSheet, {makeDefault: true, label: "rmss.entity_sheet.spell", types: ['spell']});
|
||||
|
||||
// Skills
|
||||
Items.registerSheet("rmss", RMSSSkillCategorySheet, {makeDefault: true, label: "rmss.entity_sheet.skill_category", types: ['skill_category']});
|
||||
Items.registerSheet("rmss", RMSSSkillSheet, {makeDefault: true, label: "rmss.entity_sheet.skill", types: ['skill']});
|
||||
|
||||
// Actors
|
||||
Actors.registerSheet("rmss", RMSSPlayerSheet, {makeDefault: true, label: "rmss.entity_sheet.player_characrer", types: ['character']});
|
||||
|
||||
// Preload Handlebars Templates
|
||||
console.log("rmss | Preloading Handlebars Templates");
|
||||
preloadHandlebarsTemplates();
|
||||
});
|
31
rmss/system.json
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "rmss",
|
||||
"title": "Rolemaster Standard System",
|
||||
"description": "The Rolemaster Standard System system for FoundryVTT.",
|
||||
"author": "Cynicide",
|
||||
"version": "0.0.1",
|
||||
"minimumCoreVersion": "0.8.6",
|
||||
"compatibleCoreVersion": "9",
|
||||
"esmodules":[
|
||||
"rmss.js"
|
||||
],
|
||||
"styles": ["rmss.css"],
|
||||
"packs": [ {
|
||||
"name": "skill_categories",
|
||||
"label": "Skill Categories",
|
||||
"system": "rmss",
|
||||
"path": "./packs/skill_categories.db",
|
||||
"type": "Item"
|
||||
}
|
||||
],
|
||||
"languages": [
|
||||
{
|
||||
"lang": "en",
|
||||
"name": "English",
|
||||
"path": "lang/en.json"
|
||||
}
|
||||
],
|
||||
"gridDistance": 5,
|
||||
"gridUnits": "ft",
|
||||
"license": "LICENSE.txt"
|
||||
}
|
304
rmss/template.json
Normal file
@ -0,0 +1,304 @@
|
||||
{
|
||||
"Actor": {
|
||||
"types": ["character", "npc"],
|
||||
"templates": {
|
||||
"role_traits": {
|
||||
"role_traits": {
|
||||
"appearance": 10,
|
||||
"sex": "mysex",
|
||||
"skin": "myskin",
|
||||
"apparent_age": 30,
|
||||
"actual_age": 35,
|
||||
"height": "myheight",
|
||||
"weight": "myweight",
|
||||
"hair": "myhair",
|
||||
"eyes": "myeyes",
|
||||
"personality": "mypersonality",
|
||||
"motivations": "mymotivations",
|
||||
"alignment": "myalignment"
|
||||
}
|
||||
},
|
||||
"race_stat_fixed_info": {
|
||||
"race_stat_fixed_info" : {
|
||||
"soul_departure_rounds": 5,
|
||||
"recovery_multiplier": 7,
|
||||
"body_development_progression": "research",
|
||||
"pp_development_progression": "research",
|
||||
"recover_hits_per_hour_resting": 6,
|
||||
"recover_hits_per_sleep_cycle": 7,
|
||||
"recover_pp_per_hour_resting": 8,
|
||||
"recover_pp_per_sleep_cycle": 9
|
||||
}
|
||||
},
|
||||
"armor_info": {
|
||||
"armor_info": {
|
||||
"armor_type": 7,
|
||||
"mmp": -10,
|
||||
"weight_penalty": -5,
|
||||
"missile_penalty": 30,
|
||||
"quickness_penalty": 40,
|
||||
"quickness_bonus": 60,
|
||||
"adrenal_defense": 50,
|
||||
"shield_bonus": 20,
|
||||
"magic": "research",
|
||||
"total_db": 102
|
||||
}
|
||||
},
|
||||
"fixed_info": {
|
||||
"fixed_info": {
|
||||
"race": "myrace",
|
||||
"profession": "myprofession",
|
||||
"training_packages": "mytrainingpackages",
|
||||
"realm": "myrealm"
|
||||
}
|
||||
},
|
||||
"resistance_rolls": {
|
||||
"resistance_rolls": {
|
||||
"channeling": 0,
|
||||
"essence": 0,
|
||||
"mentalism": 0,
|
||||
"chann_ess": 0,
|
||||
"chann_ment": 0,
|
||||
"ess_ment": 0,
|
||||
"arcane": 0,
|
||||
"poison_disease": 0,
|
||||
"fear": 0
|
||||
}
|
||||
},
|
||||
"background": {
|
||||
"background": {
|
||||
"nationality": "mynationality",
|
||||
"home_town": "myhometown",
|
||||
"deity": "mydeity",
|
||||
"patron": "mypatron",
|
||||
"parents": "myparents",
|
||||
"spouse": "myspouse",
|
||||
"children": "mychildren",
|
||||
"other": "myother"
|
||||
}
|
||||
},
|
||||
"stats": {
|
||||
"stats": {
|
||||
"agility": {
|
||||
"shortname": "Ag",
|
||||
"temp": 1,
|
||||
"potential": 2,
|
||||
"basic_bonus": 3,
|
||||
"racial_bonus": 4,
|
||||
"special_bonus": 5,
|
||||
"stat_bonus": 0
|
||||
},
|
||||
"constitution": {
|
||||
"shortname": "Co",
|
||||
"temp": 6,
|
||||
"potential": 7,
|
||||
"basic_bonus": 8,
|
||||
"racial_bonus": 9,
|
||||
"special_bonus": 10,
|
||||
"stat_bonus": 0
|
||||
},
|
||||
"memory": {
|
||||
"shortname": "Me",
|
||||
"temp": 11,
|
||||
"potential": 12,
|
||||
"basic_bonus": 13,
|
||||
"racial_bonus": 14,
|
||||
"special_bonus": 15,
|
||||
"stat_bonus": 0
|
||||
},
|
||||
"reasoning": {
|
||||
"shortname": "Re",
|
||||
"temp": 16,
|
||||
"potential": 17,
|
||||
"basic_bonus": 18,
|
||||
"racial_bonus": 19,
|
||||
"special_bonus": 20,
|
||||
"stat_bonus": 0
|
||||
},
|
||||
"self_discipline": {
|
||||
"shortname": "SD",
|
||||
"temp": 21,
|
||||
"potential": 22,
|
||||
"basic_bonus": 23,
|
||||
"racial_bonus": 24,
|
||||
"special_bonus": 25,
|
||||
"stat_bonus": 0
|
||||
},
|
||||
"empathy": {
|
||||
"shortname": "Em",
|
||||
"temp": 26,
|
||||
"potential": 27,
|
||||
"basic_bonus": 28,
|
||||
"racial_bonus": 29,
|
||||
"special_bonus": 30,
|
||||
"stat_bonus": 0
|
||||
},
|
||||
"intuition": {
|
||||
"shortname": "In",
|
||||
"temp": 31,
|
||||
"potential": 32,
|
||||
"basic_bonus": 33,
|
||||
"racial_bonus": 34,
|
||||
"special_bonus": 35,
|
||||
"stat_bonus": 0
|
||||
},
|
||||
"presence": {
|
||||
"shortname": "Pr",
|
||||
"temp": 36,
|
||||
"potential": 37,
|
||||
"basic_bonus": 38,
|
||||
"racial_bonus": 39,
|
||||
"special_bonus": 40,
|
||||
"stat_bonus": 0
|
||||
},
|
||||
"quickness": {
|
||||
"shortname": "Qu",
|
||||
"temp": 41,
|
||||
"potential": 42,
|
||||
"basic_bonus": 43,
|
||||
"racial_bonus": 44,
|
||||
"special_bonus": 45,
|
||||
"stat_bonus": 0
|
||||
},
|
||||
"strength": {
|
||||
"shortname": "St",
|
||||
"temp": 46,
|
||||
"potential": 47,
|
||||
"basic_bonus": 48,
|
||||
"racial_bonus": 49,
|
||||
"special_bonus": 50,
|
||||
"stat_bonus": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"money": {
|
||||
"mithril": 1,
|
||||
"platinum": 2,
|
||||
"gold": 3,
|
||||
"silver": 4,
|
||||
"bronze": 5,
|
||||
"copper": 6,
|
||||
"tin": 7,
|
||||
"iron": 8
|
||||
}
|
||||
},
|
||||
|
||||
"character": {
|
||||
"templates": ["background", "stats", "resistance_rolls", "armor_info", "fixed_info", "race_stat_fixed_info", "role_traits", "money"],
|
||||
"attributes": {
|
||||
"level": {
|
||||
"value": 1
|
||||
},
|
||||
"hits": {
|
||||
"current": 1,
|
||||
"max": 1
|
||||
},
|
||||
"exhaustion_points": {
|
||||
"current": 2,
|
||||
"max": 2
|
||||
},
|
||||
"power_points": {
|
||||
"current": 3,
|
||||
"max": 3
|
||||
},
|
||||
"experience_points": {
|
||||
"value": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Item": {
|
||||
"types": ["item", "skill_category", "skill", "armor", "weapon", "transport", "herb_or_poison", "spell"],
|
||||
"templates": {
|
||||
"base": {
|
||||
"description": "Description here."
|
||||
}
|
||||
},
|
||||
"item": {
|
||||
"templates": ["base"],
|
||||
"quantity": 1,
|
||||
"weight": 0,
|
||||
"cost": 0,
|
||||
"prod_time": 0
|
||||
},
|
||||
"transport": {
|
||||
"templates": ["base"],
|
||||
"feet_per_round": 1,
|
||||
"miles_per_hour": 0,
|
||||
"cost": 0,
|
||||
"maneuver": 0,
|
||||
"height": 0,
|
||||
"weight": 0,
|
||||
"capacity": 0,
|
||||
"offensive_bonus": 0
|
||||
},
|
||||
"armor": {
|
||||
"templates": ["base"],
|
||||
"quantity": 1,
|
||||
"weight": 0,
|
||||
"cost": 0,
|
||||
"prod_time": 0,
|
||||
"at": 0
|
||||
},
|
||||
"weapon": {
|
||||
"templates": ["base"],
|
||||
"quantity": 1,
|
||||
"cost": 0,
|
||||
"weight": 0,
|
||||
"type" : "nothing",
|
||||
"prod_time": 0,
|
||||
"at": 0,
|
||||
"breakage_range": "nothing",
|
||||
"strength": "nothing",
|
||||
"fumble_range": "nothing"
|
||||
},
|
||||
"herb_or_poison": {
|
||||
"templates": ["base"],
|
||||
"quantity": 1,
|
||||
"weight": 0,
|
||||
"codes": "nothing",
|
||||
"form_and_prep" : "nothing",
|
||||
"cost": 0,
|
||||
"af": 0
|
||||
},
|
||||
"skill": {
|
||||
"templates": ["base"],
|
||||
"category" : "",
|
||||
"ranks": 0,
|
||||
"new_ranks": 0,
|
||||
"rank_bonus": 0,
|
||||
"category_bonus": 0,
|
||||
"item_bonus": 0,
|
||||
"special_bonus_1": 0,
|
||||
"special_bonus_2": 0,
|
||||
"total_bonus": 0,
|
||||
"favorite": false
|
||||
},
|
||||
"skill_category": {
|
||||
"templates": ["base"],
|
||||
"applicable_stats": "St/Ag/St",
|
||||
"app_stat_1": "None",
|
||||
"app_stat_2": "None",
|
||||
"app_stat_3": "None",
|
||||
"development_cost": "0",
|
||||
"ranks": 0,
|
||||
"new_ranks": 0,
|
||||
"rank_bonus": 0,
|
||||
"stat_bonus": 0,
|
||||
"prof_bonus": 0,
|
||||
"special_bonus_1": 0,
|
||||
"special_bonus_2": 0,
|
||||
"total_bonus": 0,
|
||||
"favorite": false
|
||||
},
|
||||
"spell": {
|
||||
"spell_list": "Open Channeling",
|
||||
"level": 1,
|
||||
"area_of_effect": "10 x 10 x 1",
|
||||
"duration": "C",
|
||||
"range": 50,
|
||||
"type": "E",
|
||||
"description": "My New Spell!"
|
||||
}
|
||||
}
|
||||
}
|
62
rmss/templates/sheets/actors/parts/actor-armor-info.html
Normal file
@ -0,0 +1,62 @@
|
||||
<section class="armor-block">
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_armor_info.armor_type" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.armor_info.armor_type" value="{{data.armor_info.armor_type}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_armor_info.mmp" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.armor_info.mmp" value="{{data.armor_info.mmp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_armor_info.weight_penalty" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.armor_info.weight_penalty" value="{{data.armor_info.weight_penalty}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_armor_info.missile_penalty" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.armor_info.missile_penalty" value="{{data.armor_info.missile_penalty}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_armor_info.quickness_penalty" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.armor_info.quickness_penalty" value="{{data.armor_info.quickness_penalty}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_armor_info.quickness_bonus" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.armor_info.quickness_bonus" value="{{data.armor_info.quickness_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_armor_info.adrenal_defense" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.armor_info.adrenal_defense" value="{{data.armor_info.adrenal_defense}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_armor_info.shield_bonus" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.armor_info.shield_bonus" value="{{data.armor_info.shield_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_armor_info.magic" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.armor_info.magic" value="{{data.armor_info.magic}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_armor_info.total_db" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.armor_info.total_db" value="{{data.armor_info.total_db}}" data-dtype="Number"/>
|
||||
</div>
|
||||
</section>
|
@ -0,0 +1,50 @@
|
||||
<section class="background-info-block">
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_background_info.nationality" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.background.nationality" value="{{data.background.nationality}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_background_info.home_town" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.background.home_town" value="{{data.background.home_town}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_background_info.deity" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.background.deity" value="{{data.background.deity}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_background_info.patron" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.background.patron" value="{{data.background.patron}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_background_info.parents" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.background.parents" value="{{data.background.parents}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_background_info.spouse" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.background.spouse" value="{{data.background.spouse}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_background_info.children" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.background.children" value="{{data.background.children}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_background_info.other" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.background.other" value="{{data.background.other}}" data-dtype="String"/>
|
||||
</div>
|
||||
</section>
|
16
rmss/templates/sheets/actors/parts/actor-fav-skills.html
Normal file
@ -0,0 +1,16 @@
|
||||
<table>
|
||||
<th><div class="skill-name skill-headeritem">{{ localize "rmss.pc_sheet_skills.skill_name" }}</div></th>
|
||||
<th><div class="skill-entry skill-headeritem">{{ localize "rmss.pc_sheet_skills.ranks" }}</div></th>
|
||||
<th><div class="skill-entry skill-headeritem">{{ localize "rmss.pc_sheet_skills.total_bonus" }}</div></th>
|
||||
{{#each playerskill as |skill id|}}
|
||||
{{#if skill.data.favorite}}
|
||||
<tr class="item" data-item-id="{{skill._id}}">
|
||||
<td><div class="skill-name">
|
||||
<h4>{{skill.name}}</h4>
|
||||
</div></td>
|
||||
<td><div class="skill-entry item-prop">{{skill.data.ranks}}</div></td>
|
||||
<td><div class="skill-entry item-prop">{{skill.data.total_bonus}}</div></td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</table>
|
26
rmss/templates/sheets/actors/parts/actor-fixed-info.html
Normal file
@ -0,0 +1,26 @@
|
||||
<section class="fixed-info-section">
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_fixed_info.race" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.fixed_info.race" value="{{data.fixed_info.race}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_fixed_info.profession" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.fixed_info.profession" value="{{data.fixed_info.profession}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_fixed_info.training_packages" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.fixed_info.training_packages" value="{{data.fixed_info.training_packages}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_fixed_info.realm" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.fixed_info.realm" value="{{data.fixed_info.realm}}" data-dtype="String"/>
|
||||
</div>
|
||||
</section>
|
28
rmss/templates/sheets/actors/parts/actor-items.html
Normal file
@ -0,0 +1,28 @@
|
||||
<table>
|
||||
|
||||
<!-- LOCALIZE THE LAST STRINGS IN THIS PAGE. ALSO SKILLS AND SKILL CATEGORIES-->
|
||||
|
||||
<th><div class="item-name item-headeritem">{{ localize "rmss.pc_sheet_items.favorite" }}</div></th>
|
||||
<th><div class="item-entry item-headeritem">{{ localize "rmss.pc_sheet_items.quantity" }}</div></th>
|
||||
<th><div class="item-name item-headeritem">{{ localize "rmss.pc_sheet_items.item_name" }}</div></th>
|
||||
<th><div class="item-entry item-headeritem">{{ localize "rmss.pc_sheet_items.weight" }}</div></th>
|
||||
<th><div class="item-entry item-headeritem">{{ localize "rmss.pc_sheet_items.cost" }}</div></th>
|
||||
<th><div class="item-controls">
|
||||
<a class="item-control item-create" title="Create Item" data-type="item"><i class="fas fa-plus"></i>{{ localize "rmss.pc_sheet_items.add_item" }}</a>
|
||||
</div></th>
|
||||
{{#each gear as |item id|}}
|
||||
<tr class="item" data-item-id="{{item._id}}">
|
||||
<td><div class="item-entry item-prop"><input type="checkbox" name="data.favorite" {{checked item.data.favorite}}/></div></td>
|
||||
<td><div class="item-entry item-prop">{{item.data.quantity}}</div></td>
|
||||
<td><div class="item-name">
|
||||
<h4>{{item.name}}</h4>
|
||||
</div></td>
|
||||
<td><div class="item-entry item-prop">{{item.data.weight}}</div></td>
|
||||
<td><div class="item-entry item-prop">{{item.data.cost}}</div></td>
|
||||
<td><div class="item-controls">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div></td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</table>
|
14
rmss/templates/sheets/actors/parts/actor-money.html
Normal file
@ -0,0 +1,14 @@
|
||||
<section class="container">
|
||||
<div class="money-column">
|
||||
<div class="money-name">Mithril: <input type="text" name="data.money.mithril" value="{{data.money.mithril}}" data-dtype="Number"/></div>
|
||||
<div class="money-name">Platinum: <input type="text" name="data.money.platinum" value="{{data.money.platinum}}" data-dtype="Number"/></div>
|
||||
<div class="money-name">Gold: <input type="text" name="data.money.gold" value="{{data.money.gold}}" data-dtype="Number"/></div>
|
||||
<div class="money-name">Silver: <input type="text" name="data.money.silver" value="{{data.money.silver}}" data-dtype="Number"/></div>
|
||||
</div>
|
||||
<div class="money-column">
|
||||
<div class="money-name">Bronze: <input type="text" name="data.money.bronze" value="{{data.money.bronze}}" data-dtype="Number"/></div>
|
||||
<div class="money-name">Copper:<input type="text" name="data.money.copper" value="{{data.money.copper}}" data-dtype="Number"/></div>
|
||||
<div class="money-name">Tin: <input type="text" name="data.money.tin" value="{{data.money.tin}}" data-dtype="Number"/></div>
|
||||
<div class="money-name">Iron: <input type="text" name="data.money.iron" value="{{data.money.iron}}" data-dtype="Number"/></div>
|
||||
</div>
|
||||
</section>
|
@ -0,0 +1,50 @@
|
||||
<section class="race-stat-fixed-info-block">
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_race_stat_fixed_info.soul_departure" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.race_stat_fixed_info.soul_departure_rounds" value="{{data.race_stat_fixed_info.soul_departure_rounds}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_race_stat_fixed_info.recovery_multiplier" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.race_stat_fixed_info.recovery_multiplier" value="{{data.race_stat_fixed_info.recovery_multiplier}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_race_stat_fixed_info.body_dev_progression" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.race_stat_fixed_info.body_development_progression" value="{{data.race_stat_fixed_info.body_development_progression}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_race_stat_fixed_info.pp_dev_progression" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.race_stat_fixed_info.pp_development_progression" value="{{data.race_stat_fixed_info.pp_development_progression}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_race_stat_fixed_info.recover_hits_per_hour" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.race_stat_fixed_info.recover_hits_per_hour_resting" value="{{data.race_stat_fixed_info.recover_hits_per_hour_resting}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_race_stat_fixed_info.recover_hits_per_sleep_cycle" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.race_stat_fixed_info.recover_hits_per_sleep_cycle" value="{{data.race_stat_fixed_info.recover_hits_per_sleep_cycle}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_race_stat_fixed_info.recover_pp_per_hour" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.race_stat_fixed_info.recover_pp_per_hour_resting" value="{{data.race_stat_fixed_info.recover_pp_per_hour_resting}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_race_stat_fixed_info.recover_pp_per_sleep_cycle" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.race_stat_fixed_info.recover_pp_per_sleep_cycle" value="{{data.race_stat_fixed_info.recover_pp_per_sleep_cycle}}" data-dtype="Number"/>
|
||||
</div>
|
||||
</section>
|
84
rmss/templates/sheets/actors/parts/actor-resistance.html
Normal file
@ -0,0 +1,84 @@
|
||||
<section class="resistance-block">
|
||||
<ol class="labels-list">
|
||||
<li class="stat flexrow" >
|
||||
<div class="label-name">
|
||||
<h4>{{ localize "rmss.pc_sheet_resistances.channeling" }}</h4>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<h4>{{data.resistance_rolls.channeling}}</h4>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="stat flexrow" >
|
||||
<div class="label-name">
|
||||
<h4>{{ localize "rmss.pc_sheet_resistances.essence" }}</h4>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<h4>{{data.resistance_rolls.essence}}</h4>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="stat flexrow" >
|
||||
<div class="label-name">
|
||||
<h4>{{ localize "rmss.pc_sheet_resistances.mentalism" }}</h4>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<h4>{{data.resistance_rolls.mentalism}}</h4>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="stat flexrow" >
|
||||
<div class="label-name">
|
||||
<h4>{{ localize "rmss.pc_sheet_resistances.chann_ess" }}</h4>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<h4>{{data.resistance_rolls.chann_ess}}</h4>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="stat flexrow" >
|
||||
<div class="label-name">
|
||||
<h4>{{ localize "rmss.pc_sheet_resistances.chann_ment" }}</h4>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<h4>{{data.resistance_rolls.chann_ment}}</h4>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="stat flexrow" >
|
||||
<div class="label-name">
|
||||
<h4>{{ localize "rmss.pc_sheet_resistances.ess_ment" }}</h4>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<h4>{{data.resistance_rolls.ess_ment}}</h4>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="stat flexrow" >
|
||||
<div class="label-name">
|
||||
<h4>{{ localize "rmss.pc_sheet_resistances.arcane" }}</h4>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<h4>{{data.resistance_rolls.arcane}}</h4>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="stat flexrow" >
|
||||
<div class="label-name">
|
||||
<h4>{{ localize "rmss.pc_sheet_resistances.poison_disease" }}</h4>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<h4>{{data.resistance_rolls.poison_disease}}</h4>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="stat flexrow" >
|
||||
<div class="label-name">
|
||||
<h4>Fear</h4>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<h4>{{data.resistance_rolls.fear}}</h4>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
74
rmss/templates/sheets/actors/parts/actor-role-traits.html
Normal file
@ -0,0 +1,74 @@
|
||||
<section class="role-traits-block">
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.appearance" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.appearance" value="{{data.role_traits.appearance}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.sex" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.sex" value="{{data.role_traits.sex}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.skin" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.skin" value="{{data.role_traits.skin}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.apparent_age" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.apparent_age" value="{{data.role_traits.apparent_age}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.actual_age" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.actual_age" value="{{data.role_traits.actual_age}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.height" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.height" value="{{data.role_traits.height}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.weight" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.weight" value="{{data.role_traits.weight}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.hair" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.hair" value="{{data.role_traits.hair}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.eyes" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.eyes" value="{{data.role_traits.eyes}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.personality" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.personality" value="{{data.role_traits.personality}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.motivations" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.motivations" value="{{data.role_traits.motivations}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="label-name">
|
||||
{{ localize "rmss.pc_sheet_role_traits.alignment" }}
|
||||
</div>
|
||||
<div class="label-name">
|
||||
<input type="text" name="data.role_traits.alignment" value="{{data.role_traits.alignment}}" data-dtype="String"/>
|
||||
</div>
|
||||
</section>
|
@ -0,0 +1,33 @@
|
||||
<div class="skillcat-grid-container">
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.skillcat_name" }}</div>
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.applicable_stats" }}</div>
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.dev_cost" }}</div>
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.ranks" }}</div>
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.new_ranks" }}</div>
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.rank_bonus" }}</div>
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.stat_bonus" }}</div>
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.prof_bonus" }}</div>
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.special_bonus" }}</div>
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.special_bonus" }}</div>
|
||||
<div class="skillcat-grid-heading">{{ localize "rmss.pc_sheet_skill_categories.total_bonus" }}</div>
|
||||
<div class="skillcat-grid-heading">
|
||||
<a class="item-create" title="Create Skill Category" data-type="skill_category"><i class="fas fa-plus"></i>{{ localize "rmss.pc_sheet_skill_categories.add_skillcat" }}</a>
|
||||
</div>
|
||||
{{#each skillcat as |skill_category id|}}
|
||||
<div>{{skill_category.name}}</div>
|
||||
<div>{{skill_category.data.applicable_stats}}</div>
|
||||
<div>{{skill_category.data.development_cost}}</div>
|
||||
<div>{{skill_category.data.ranks}}</div>
|
||||
<div>{{skill_category.data.new_ranks}}</div>
|
||||
<div>{{skill_category.data.rank_bonus}}</div>
|
||||
<div>{{skill_category.data.stat_bonus}}</div>
|
||||
<div>{{skill_category.data.prof_bonus}}</div>
|
||||
<div>{{skill_category.data.special_bonus_1}}</div>
|
||||
<div>{{skill_category.data.special_bonus_2}}</div>
|
||||
<div>{{skill_category.data.total_bonus}}</div>
|
||||
<div>
|
||||
<a class="item-edit" title="Edit Category" data-item-id="{{skill_category._id}}"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete item" title="Delete Category" data-item-id="{{skill_category._id}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
@ -0,0 +1,35 @@
|
||||
<table>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.skillcat_name" }}</div></th>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.applicable_stats" }}</div></th>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.dev_cost" }}</div></th>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.ranks" }}</div></th>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.new_ranks" }}</div></th>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.rank_bonus" }}</div></th>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.stat_bonus" }}</div></th>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.prof_bonus" }}</div></th>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.special_bonus" }}</div></th>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.special_bonus" }}</div></th>
|
||||
<th><div class="table-font table-bold table-center">{{ localize "rmss.pc_sheet_skill_categories.total_bonus" }}</div></th>
|
||||
<th><div class="table-controls">
|
||||
<a class="item-create" title="Create Skill Category" data-type="skill_category"><i class="fas fa-plus"></i>{{ localize "rmss.pc_sheet_skill_categories.add_skillcat" }}</a>
|
||||
</div></th>
|
||||
{{#each skillcat as |skill_category id|}}
|
||||
<tr class="item" data-item-id="{{skill_category._id}}">
|
||||
<td><div class="table-font table-bold">{{skill_category.name}}</div></td>
|
||||
<td><div class="table-font">{{skill_category.data.applicable_stats}}</div></td>
|
||||
<td><div class="table-font">{{skill_category.data.development_cost}}</div></td>
|
||||
<td><div class="table-font">{{skill_category.data.ranks}}</div></td>
|
||||
<td><div class="table-font">{{skill_category.data.new_ranks}}</div></td>
|
||||
<td><div class="table-font">{{skill_category.data.rank_bonus}}</div></td>
|
||||
<td><div class="table-font">{{skill_category.data.stat_bonus}}</div></td>
|
||||
<td><div class="table-font">{{skill_category.data.prof_bonus}}</div></td>
|
||||
<td><div class="table-font">{{skill_category.data.special_bonus_1}}</div></td>
|
||||
<td><div class="table-font">{{skill_category.data.special_bonus_2}}</div></td>
|
||||
<td><div class="table-font">{{skill_category.data.total_bonus}}</div></td>
|
||||
<td><div class="table-controls">
|
||||
<a class="item-edit" title="Edit Category"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Delete Category"><i class="fas fa-trash"></i></a>
|
||||
</div></td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</table>
|
31
rmss/templates/sheets/actors/parts/actor-skills-grid.html
Normal file
@ -0,0 +1,31 @@
|
||||
<div class="skills-grid-container">
|
||||
<div class="skills-grid-heading">{{ localize "rmss.pc_sheet_skills.favorite" }}</div>
|
||||
<div class="skills-grid-heading">{{ localize "rmss.pc_sheet_skills.skill_name" }}</div>
|
||||
<div class="skills-grid-heading">{{ localize "rmss.pc_sheet_skills.ranks" }}</div>
|
||||
<div class="skills-grid-heading">{{ localize "rmss.pc_sheet_skills.new_ranks" }}</div>
|
||||
<div class="skills-grid-heading">{{ localize "rmss.pc_sheet_skills.rank_bonus" }}</div>
|
||||
<div class="skills-grid-heading">{{ localize "rmss.pc_sheet_skills.category_bonus" }}</div>
|
||||
<div class="skills-grid-heading">{{ localize "rmss.pc_sheet_skills.item_bonus" }}</div>
|
||||
<div class="skills-grid-heading">{{ localize "rmss.pc_sheet_skills.special_bonus" }}</div>
|
||||
<div class="skills-grid-heading">{{ localize "rmss.pc_sheet_skills.special_bonus" }}</div>
|
||||
<div class="skills-grid-heading">{{ localize "rmss.pc_sheet_skills.total_bonus" }}</div>
|
||||
<div class="skills-grid-heading">
|
||||
<a class="item-create" title="Create Skill" data-type="skill"><i class="fas fa-plus"></i>{{ localize "rmss.pc_sheet_skills.add_skill" }}</a>
|
||||
</div>
|
||||
{{#each playerskill as |skill id|}}
|
||||
<div><input type="checkbox" name="data.favorite" {{checked skill.data.favorite}}/></div>
|
||||
<div>{{skill.name}}</div>
|
||||
<div>{{skill.data.ranks}}</div>
|
||||
<div>{{skill.data.new_ranks}}</div>
|
||||
<div>{{skill.data.rank_bonus}}</div>
|
||||
<div>{{skill.data.category_bonus}}</div>
|
||||
<div>{{skill.data.item_bonus}}</div>
|
||||
<div>{{skill.data.special_bonus_1}}</div>
|
||||
<div>{{skill.data.special_bonus_2}}</div>
|
||||
<div>{{skill.data.total_bonus}}</div>
|
||||
<div>
|
||||
<a class="item-edit" title="Edit Skill" data-item-id="{{skill._id}}"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Delete Skill" data-item-id="{{skill._id}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
35
rmss/templates/sheets/actors/parts/actor-skills.html
Normal file
@ -0,0 +1,35 @@
|
||||
<table>
|
||||
<th><div class="skill-name skill-headeritem">{{ localize "rmss.pc_sheet_skills.favorite" }}</div></th>
|
||||
<th><div class="skill-name skill-headeritem">{{ localize "rmss.pc_sheet_skills.skill_name" }}</div></th>
|
||||
<th><div class="skill-entry skill-headeritem">{{ localize "rmss.pc_sheet_skills.ranks" }}</div></th>
|
||||
<th><div class="skill-entry skill-headeritem">{{ localize "rmss.pc_sheet_skills.new_ranks" }}</div></th>
|
||||
<th><div class="skill-entry skill-headeritem">{{ localize "rmss.pc_sheet_skills.rank_bonus" }}</div></th>
|
||||
<th><div class="skill-entry skill-headeritem">{{ localize "rmss.pc_sheet_skills.category_bonus" }}</div></th>
|
||||
<th><div class="skill-entry skill-headeritem">{{ localize "rmss.pc_sheet_skills.item_bonus" }}</div></th>
|
||||
<th><div class="skill-entry skill-headeritem">{{ localize "rmss.pc_sheet_skills.special_bonus" }}</div></th>
|
||||
<th><div class="skill-entry skill-headeritem">{{ localize "rmss.pc_sheet_skills.special_bonus" }}</div></th>
|
||||
<th><div class="skill-entry skill-headeritem">{{ localize "rmss.pc_sheet_skills.total_bonus" }}</div></th>
|
||||
<th><div class="skill-controls">
|
||||
<a class="skill-control item-create" title="Create Skill" data-type="skill"><i class="fas fa-plus"></i>{{ localize "rmss.pc_sheet_skills.add_skill" }}</a>
|
||||
</div></th>
|
||||
{{#each playerskill as |skill id|}}
|
||||
<tr class="item" data-item-id="{{skill._id}}">
|
||||
<td><div class="skill-entry item-prop"><input type="checkbox" name="data.favorite" {{checked skill.data.favorite}}/></div></td>
|
||||
<td><div class="skill-name">
|
||||
<h4>{{skill.name}}</h4>
|
||||
</div></td>
|
||||
<td><div class="skill-entry item-prop">{{skill.data.ranks}}</div></td>
|
||||
<td><div class="skill-entry item-prop">{{skill.data.new_ranks}}</div></td>
|
||||
<td><div class="skill-entry item-prop">{{skill.data.rank_bonus}}</div></td>
|
||||
<td><div class="skill-entry item-prop">{{skill.data.category_bonus}}</div></td>
|
||||
<td><div class="skill-entry item-prop">{{skill.data.item_bonus}}</div></td>
|
||||
<td><div class="skill-entry item-prop">{{skill.data.special_bonus_1}}</div></td>
|
||||
<td><div class="skill-entry item-prop">{{skill.data.special_bonus_2}}</div></td>
|
||||
<td><div class="skill-entry item-prop">{{skill.data.total_bonus}}</div></td>
|
||||
<td><div class="skill-controls">
|
||||
<a class="skill-control item-edit" title="Edit Skill"><i class="fas fa-edit"></i></a>
|
||||
<a class="skill-control item-delete" title="Delete Skill"><i class="fas fa-trash"></i></a>
|
||||
</div></td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</table>
|
313
rmss/templates/sheets/actors/parts/actor-stats.html
Normal file
@ -0,0 +1,313 @@
|
||||
<section class="stat-block">
|
||||
<ol>
|
||||
<li class="flexrow">
|
||||
<div class="stat-header">{{ localize "rmss.player_character.attribute_headers.stat" }}</div>
|
||||
<div class="stat-header">{{ localize "rmss.player_character.attribute_headers.temp" }}</div>
|
||||
<div class="stat-header">{{ localize "rmss.player_character.attribute_headers.pot" }}</div>
|
||||
<div class="stat-header">{{ localize "rmss.player_character.attribute_headers.basic_bonus" }}</div>
|
||||
<div class="stat-header">{{ localize "rmss.player_character.attribute_headers.racial_bonus" }}</div>
|
||||
<div class="stat-header">{{ localize "rmss.player_character.attribute_headers.special_bonus" }}</div>
|
||||
<div class="stat-header">{{ localize "rmss.player_character.attribute_headers.stat_bonus" }}</div>
|
||||
</li>
|
||||
|
||||
<li class="flexrow">
|
||||
<div class="stat-name">
|
||||
{{ localize "rmss.player_character.attribute.agility" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.agility.temp" value="{{data.stats.agility.temp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.agility.potential" value="{{data.stats.agility.potential}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.agility.basic_bonus" value="{{data.stats.agility.basic_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.agility.racial_bonus" value="{{data.stats.agility.racial_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.agility.special_bonus" value="{{data.stats.agility.special_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
{{data.stats.agility.stat_bonus}}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="flexrow">
|
||||
<div class="stat-name">
|
||||
{{ localize "rmss.player_character.attribute.constitution" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.constitution.temp" value="{{data.stats.constitution.temp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.constitution.potential" value="{{data.stats.constitution.potential}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.constitution.basic_bonus" value="{{data.stats.constitution.basic_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.constitution.racial_bonus" value="{{data.stats.constitution.racial_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.constitution.special_bonus" value="{{data.stats.constitution.special_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
{{data.stats.constitution.stat_bonus}}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="flexrow">
|
||||
<div class="stat-name">
|
||||
{{ localize "rmss.player_character.attribute.memory" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.memory.temp" value="{{data.stats.memory.temp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.memory.potential" value="{{data.stats.memory.potential}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.memory.basic_bonus" value="{{data.stats.memory.basic_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.memory.racial_bonus" value="{{data.stats.memory.racial_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.memory.special_bonus" value="{{data.stats.memory.special_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
{{data.stats.memory.stat_bonus}}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="flexrow">
|
||||
<div class="stat-name">
|
||||
{{ localize "rmss.player_character.attribute.reasoning" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.reasoning.temp" value="{{data.stats.reasoning.temp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.reasoning.potential" value="{{data.stats.reasoning.potential}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.reasoning.basic_bonus" value="{{data.stats.reasoning.basic_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.reasoning.racial_bonus" value="{{data.stats.reasoning.racial_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.reasoning.special_bonus" value="{{data.stats.reasoning.special_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
{{data.stats.reasoning.stat_bonus}}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="flexrow">
|
||||
<div class="stat-name">
|
||||
{{ localize "rmss.player_character.attribute.self_discipline" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.self_discipline.temp" value="{{data.stats.self_discipline.temp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.self_discipline.potential" value="{{data.stats.self_discipline.potential}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.self_discipline.basic_bonus" value="{{data.stats.self_discipline.basic_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.self_discipline.racial_bonus" value="{{data.stats.self_discipline.racial_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.self_discipline.special_bonus" value="{{data.stats.self_discipline.special_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
{{data.stats.self_discipline.stat_bonus}}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="flexrow">
|
||||
<div class="stat-name">
|
||||
{{ localize "rmss.player_character.attribute.empathy" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.empathy.temp" value="{{data.stats.empathy.temp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.empathy.potential" value="{{data.stats.empathy.potential}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.empathy.basic_bonus" value="{{data.stats.empathy.basic_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.empathy.racial_bonus" value="{{data.stats.empathy.racial_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.empathy.special_bonus" value="{{data.stats.empathy.special_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
{{data.stats.empathy.stat_bonus}}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="flexrow">
|
||||
<div class="stat-name">
|
||||
{{ localize "rmss.player_character.attribute.intuition" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.intuition.temp" value="{{data.stats.intuition.temp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.intuition.potential" value="{{data.stats.intuition.potential}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.intuition.basic_bonus" value="{{data.stats.intuition.basic_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.intuition.racial_bonus" value="{{data.stats.intuition.racial_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.intuition.special_bonus" value="{{data.stats.intuition.special_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
{{data.stats.intuition.stat_bonus}}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="flexrow">
|
||||
<div class="stat-name">
|
||||
{{ localize "rmss.player_character.attribute.presence" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.presence.temp" value="{{data.stats.presence.temp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.presence.potential" value="{{data.stats.presence.potential}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.presence.basic_bonus" value="{{data.stats.presence.basic_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.presence.racial_bonus" value="{{data.stats.presence.racial_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.presence.special_bonus" value="{{data.stats.presence.special_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
{{data.stats.presence.stat_bonus}}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="flexrow">
|
||||
<div class="stat-name">
|
||||
{{ localize "rmss.player_character.attribute.quickness" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.quickness.temp" value="{{data.stats.quickness.temp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.quickness.potential" value="{{data.stats.quickness.potential}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.quickness.basic_bonus" value="{{data.stats.quickness.basic_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.quickness.racial_bonus" value="{{data.stats.quickness.racial_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.quickness.special_bonus" value="{{data.stats.quickness.special_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
{{data.stats.quickness.stat_bonus}}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="flexrow">
|
||||
<div class="stat-name">
|
||||
{{ localize "rmss.player_character.attribute.strength" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.strength.temp" value="{{data.stats.strength.temp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.strength.potential" value="{{data.stats.strength.potential}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.strength.basic_bonus" value="{{data.stats.strength.basic_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.strength.racial_bonus" value="{{data.stats.strength.racial_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
<input type="text" name="data.stats.strength.special_bonus" value="{{data.stats.strength.special_bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
<div class="stat-name">
|
||||
{{data.stats.strength.stat_bonus}}
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
108
rmss/templates/sheets/actors/rmss-character-sheet.html
Normal file
@ -0,0 +1,108 @@
|
||||
<form class="actor-sheet {{cssClass}}" autocomplete="off">
|
||||
<!-- Header Section-->
|
||||
|
||||
<header class="sheet-header">
|
||||
|
||||
<div class="container">
|
||||
|
||||
<!-- Actor Icon Section-->
|
||||
|
||||
<div class="actor-icon">
|
||||
<img src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="64" width="64"/>
|
||||
</div>
|
||||
|
||||
<!-- Resource Boxes Section-->
|
||||
|
||||
<div class="resource-container">
|
||||
|
||||
<div class="resource-entry">
|
||||
{{ localize "rmss.player_character.resources.hits" }}
|
||||
<h4><input name="data.attributes.hits.current" type="text" value="{{data.attributes.hits.current}}"/>/<input name="data.attributes.hits.max" type="text" value="{{data.attributes.hits.max}}"/></h4>
|
||||
</div>
|
||||
|
||||
<div class="resource-entry">
|
||||
{{ localize "rmss.player_character.resources.exhaustion_points" }}
|
||||
<h4><input name="data.attributes.exhaustion_points.current" type="text" value="{{data.attributes.exhaustion_points.current}}"/>/<input name="data.attributes.exhaustion_points.max" type="text" value="{{data.attributes.exhaustion_points.max}}"/></h4>
|
||||
</div>
|
||||
|
||||
<div class="resource-entry">
|
||||
{{ localize "rmss.player_character.resources.power_points" }}
|
||||
<h4><input name="data.attributes.power_points.current" type="text" value="{{data.attributes.power_points.current}}"/>/<input name="data.attributes.power_points.max" type="text" value="{{data.attributes.power_points.max}}"/></h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Name, XP and Level Section-->
|
||||
|
||||
<div class="header-container">
|
||||
<div class="header-text">
|
||||
<label for="name">{{ localize "rmss.player_character.name" }}</label>
|
||||
<input name="name" type="text" value="{{actor.name}}" placeholder="{{ localize Name }}"/>
|
||||
</div>
|
||||
|
||||
<div class="header-text flexrow">
|
||||
<label for="level">{{ localize "rmss.player_character.level" }}</label>
|
||||
<input name="level" type="text" value="{{data.attributes.level.value}}"/>
|
||||
</div>
|
||||
|
||||
<div class="header-text flexrow">
|
||||
<label for="experience">{{ localize "rmss.player_character.experience" }}</label>
|
||||
<input name="experience" type="text" value="{{data.attributes.experience_points.value}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Page Selector -->
|
||||
{{!-- Sheet Tab Navigation --}}
|
||||
<nav class="sheet-tabs tabs" data-group="primary">
|
||||
{{!-- Default tab is specified in actor-sheet.mjs --}}
|
||||
<a class="item" data-tab="Record">{{ localize "rmss.pc_sheet_tabs.record" }}</a>
|
||||
<a class="item" data-tab="SkillCategory">{{ localize "rmss.pc_sheet_tabs.skill_categories" }}</a>
|
||||
<a class="item" data-tab="Skills">{{ localize "rmss.pc_sheet_tabs.skills" }}</a>
|
||||
<a class="item" data-tab="Equipment">{{ localize "rmss.pc_sheet_tabs.equipment" }}</a>
|
||||
<a class="item" data-tab="StatusRecord">{{ localize "rmss.pc_sheet_tabs.status_record" }}</a>
|
||||
<a class="item" data-tab="ExperiencePoints">{{ localize "rmss.pc_sheet_tabs.experience_points" }}</a>
|
||||
</nav>
|
||||
<!-- Body Section-->
|
||||
<section class="sheet-body">
|
||||
<div class="tab record" data-group="primary" data-tab="Record">
|
||||
<div class="container">
|
||||
<div class="fixed-info-container">
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-fixed-info.html" }}
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-armor-info.html" }}
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-resistance.html" }}
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-race-stat-fixed-info.html" }}
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-role-traits.html" }}
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-background-info.html" }}
|
||||
</div>
|
||||
|
||||
<div class="stat-container">
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-stats.html" }}
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-fav-skills.html" }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab skill_categories" data-group="primary" data-tab="SkillCategory">
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-skill-categories-grid.html" }}
|
||||
</div>
|
||||
|
||||
<div class="tab skills" data-group="primary" data-tab="Skills">
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-skills-grid.html" }}
|
||||
</div>
|
||||
|
||||
<div class="tab equipment" data-group="primary" data-tab="Equipment">
|
||||
<div class="container">
|
||||
<div class="equipment-container">
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-items.html" }}
|
||||
</div>
|
||||
<div class="money-container">
|
||||
{{> "systems/rmss/templates/sheets/actors/parts/actor-money.html" }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
|
36
rmss/templates/sheets/items/rmss-armor-sheet.html
Normal file
@ -0,0 +1,36 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img src="{{item.img}}" data-edit="img" title="{{item.name}}" height="64" width="64"/>
|
||||
<h1><input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'Name' }}"/></h1>
|
||||
</header>
|
||||
<div class="sheet-content">
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{localize "rmss.item.quantity"}}</th>
|
||||
<th>{{localize "rmss.armor.weight"}}</th>
|
||||
<th>{{localize "rmss.armor.cost"}}</th>
|
||||
<th>{{localize "rmss.armor.prod_time"}}</th>
|
||||
<th>{{localize "rmss.armor.at"}}</th>
|
||||
</tr>
|
||||
<td>
|
||||
<input name="data.quantity" type="text" value="{{data.quantity}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.weight" type="text" value="{{data.weight}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.cost" type="text" value="{{data.cost}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.prod_time" type="text" value="{{data.prod_time}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.at" type="text" value="{{data.at}}" data-dtype="Number"/>
|
||||
</td>
|
||||
</table>
|
||||
{{localize "rmss.item.description"}}
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
40
rmss/templates/sheets/items/rmss-herb-or-poison-sheet.html
Normal file
@ -0,0 +1,40 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img src="{{item.img}}" data-edit="img" title="{{item.name}}" height="64" width="64"/>
|
||||
<h1><input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'Name' }}"/></h1>
|
||||
</header>
|
||||
<div class="sheet-content">
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{localize "rmss.item.quantity"}}</th>
|
||||
<th>{{localize "rmss.herb_or_poison.weight"}}</th>
|
||||
<th>{{localize "rmss.herb_or_poison.codes"}}</th>
|
||||
<th>{{localize "rmss.herb_or_poison.form_and_prep"}}</th>
|
||||
<th>{{localize "rmss.herb_or_poison.cost"}}</th>
|
||||
<th>{{localize "rmss.herb_or_poison.af"}}</th>
|
||||
</tr>
|
||||
<td>
|
||||
<input name="data.quantity" type="text" value="{{data.quantity}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.weight" type="text" value="{{data.weight}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.codes" type="text" value="{{data.codes}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.form_and_prep" type="text" value="{{data.form_and_prep}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.cost" type="text" value="{{data.cost}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.af" type="text" value="{{data.af}}" data-dtype="Number"/>
|
||||
</td>
|
||||
</table>
|
||||
{{localize "rmss.item.description"}}
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
32
rmss/templates/sheets/items/rmss-item-sheet.html
Normal file
@ -0,0 +1,32 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img src="{{item.img}}" data-edit="img" title="{{item.name}}" height="64" width="64"/>
|
||||
<h1><input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'Name' }}"/></h1>
|
||||
</header>
|
||||
<div class="sheet-content">
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{localize "rmss.item.quantity"}}</th>
|
||||
<th>{{localize "rmss.item.weight"}}</th>
|
||||
<th>{{localize "rmss.item.cost"}}</th>
|
||||
<th>{{localize "rmss.item.prod_time"}}</th>
|
||||
</tr>
|
||||
<td>
|
||||
<input name="data.quantity" type="text" value="{{data.quantity}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.weight" type="text" value="{{data.weight}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.cost" type="text" value="{{data.cost}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.prod_time" type="text" value="{{data.prod_time}}" data-dtype="String"/>
|
||||
</td>
|
||||
</table>
|
||||
{{localize "rmss.item.description"}}
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
50
rmss/templates/sheets/items/rmss-transport-sheet.html
Normal file
@ -0,0 +1,50 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img src="{{item.img}}" data-edit="img" title="{{item.name}}" height="64" width="64"/>
|
||||
<h1><input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'Name' }}"/></h1>
|
||||
</header>
|
||||
<div class="sheet-content">
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{localize "rmss.transport.cost"}}</th>
|
||||
<th>{{localize "rmss.transport.feet_per_round"}}</th>
|
||||
<th>{{localize "rmss.transport.miles_per_hour"}}</th>
|
||||
<th>{{localize "rmss.transport.maneuver"}}</th>
|
||||
<th>{{localize "rmss.transport.height"}}</th>
|
||||
<th>{{localize "rmss.transport.weight"}}</th>
|
||||
<th>{{localize "rmss.transport.capacity"}}</th>
|
||||
<th>{{localize "rmss.transport.offensive_bonus"}}</th>
|
||||
</tr>
|
||||
<td>
|
||||
<input name="data.cost" type="text" value="{{data.cost}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.feet_per_round" type="text" value="{{data.feet_per_round}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.miles_per_hour" type="text" value="{{data.miles_per_hour}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.maneuver" type="text" value="{{data.maneuver}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.height" type="text" value="{{data.height}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.weight" type="text" value="{{data.weight}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.capacity" type="text" value="{{data.capacity}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.offensive_bonus" type="text" value="{{data.offensive_bonus}}" data-dtype="Number"/>
|
||||
</td>
|
||||
|
||||
|
||||
</table>
|
||||
{{localize "rmss.item.description"}}
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
50
rmss/templates/sheets/items/rmss-weapon-sheet.html
Normal file
@ -0,0 +1,50 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img src="{{item.img}}" data-edit="img" title="{{item.name}}" height="64" width="64"/>
|
||||
<h1><input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'Name' }}"/></h1>
|
||||
</header>
|
||||
<div class="sheet-content">
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{localize "rmss.item.quantity"}}</th>
|
||||
<th>{{localize "rmss.weapon.cost"}}</th>
|
||||
<th>{{localize "rmss.weapon.type"}}</th>
|
||||
<th>{{localize "rmss.weapon.prod_time"}}</th>
|
||||
<th>{{localize "rmss.weapon.weight"}}</th>
|
||||
<th>{{localize "rmss.weapon.breakage_range"}}</th>
|
||||
<th>{{localize "rmss.weapon.strength"}}</th>
|
||||
<th>{{localize "rmss.weapon.fumble_range"}}</th>
|
||||
|
||||
</tr>
|
||||
<td>
|
||||
<input name="data.quantity" type="text" value="{{data.quantity}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.cost" type="text" value="{{data.cost}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.type" type="text" value="{{data.type}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.prod_time" type="text" value="{{data.prod_time}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.weight" type="text" value="{{data.weight}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.breakage_range" type="text" value="{{data.breakage_range}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.strength" type="text" value="{{data.strength}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.fumble_range" type="text" value="{{data.fumble_range}}" data-dtype="Number"/>
|
||||
</td>
|
||||
|
||||
</table>
|
||||
{{localize "rmss.item.description"}}
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
76
rmss/templates/sheets/skills/rmss-skill-category-sheet.html
Normal file
@ -0,0 +1,76 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img src="{{item.img}}" data-edit="img" title="{{item.name}}" height="64" width="64"/>
|
||||
<h1><input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'Name' }}"/></h1>
|
||||
</header>
|
||||
<div class="sheet-content">
|
||||
<div class="applicable-stats-grid-container">
|
||||
<div>
|
||||
Applicable Stat 1
|
||||
<select name="data.app_stat_1" class="app-stat-selector" value="{{data.app_stat_1}}" itemid="{{ item._id }}">
|
||||
{{selectOptions applicable_stat_list selected=applicable_stat_1_selected }}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
Applicable Stat 2
|
||||
<select name="data.app_stat_2" class="app-stat-selector" value="{{data.app_stat_2}}" itemid="{{ item._id }}">
|
||||
{{selectOptions applicable_stat_list selected=applicable_stat_2_selected }}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
Applicable Stat 2
|
||||
<select name="data.app_stat_3" class="app-stat-selector" value="{{data.app_stat_3}}" itemid="{{ item._id }}">
|
||||
{{selectOptions applicable_stat_list selected=applicable_stat_3_selected }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{localize "rmss.skill_category.applicable_stats"}}</th>
|
||||
<th>{{localize "rmss.skill_category.development_cost"}}</th>
|
||||
<th>{{localize "rmss.skill_category.ranks"}}</th>
|
||||
<th>{{localize "rmss.skill_category.new_ranks"}}</th>
|
||||
<th>{{localize "rmss.skill_category.rank_bonus"}}</th>
|
||||
<th>{{localize "rmss.skill_category.stat_bonus"}}</th>
|
||||
<th>{{localize "rmss.skill_category.prof_bonus"}}</th>
|
||||
<th>{{localize "rmss.skill_category.special_bonus_1"}}</th>
|
||||
<th>{{localize "rmss.skill_category.special_bonus_2"}}</th>
|
||||
<th>{{localize "rmss.skill_category.total_bonus"}}</th>
|
||||
</tr>
|
||||
<td>
|
||||
<input name="data.applicable_stats" type="text" value="{{data.applicable_stats}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.development_cost" type="text" value="{{data.development_cost}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.ranks" type="text" value="{{data.ranks}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.new_ranks" type="text" value="{{data.new_ranks}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.rank_bonus" type="text" value="{{data.rank_bonus}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.stat_bonus" type="text" value="{{data.stat_bonus}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.prof_bonus" type="text" value="{{data.prof_bonus}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.special_bonus_1" type="text" value="{{data.special_bonus_1}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.special_bonus_2" type="text" value="{{data.special_bonus_2}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.total_bonus" type="text" value="{{data.total_bonus}}" data-dtype="Number"/>
|
||||
</td>
|
||||
</table>
|
||||
{{localize "rmss.skill_category.description"}}
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
52
rmss/templates/sheets/skills/rmss-skill-sheet.html
Normal file
@ -0,0 +1,52 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img src="{{item.img}}" data-edit="img" title="{{item.name}}" height="64" width="64"/>
|
||||
<h1><input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'Name' }}"/></h1>
|
||||
</header>
|
||||
<div class="sheet-content">
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{localize "rmss.skill.favorite"}}</th>
|
||||
<th>{{localize "rmss.skill.ranks"}}</th>
|
||||
<th>{{localize "rmss.skill.new_ranks"}}</th>
|
||||
<th>{{localize "rmss.skill.rank_bonus"}}</th>
|
||||
<th>{{localize "rmss.skill.category_bonus"}}</th>
|
||||
<th>{{localize "rmss.skill.item_bonus"}}</th>
|
||||
<th>{{localize "rmss.skill.special_bonus_1"}}</th>
|
||||
<th>{{localize "rmss.skill.special_bonus_2"}}</th>
|
||||
<th>{{localize "rmss.skill.total_bonus"}}</th>
|
||||
</tr>
|
||||
<td>
|
||||
<input type="checkbox" name="data.favorite" {{checked data.favorite}}/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.ranks" type="text" value="{{data.ranks}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.new_ranks" type="text" value="{{data.new_ranks}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.rank_bonus" type="text" value="{{data.rank_bonus}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.category_bonus" type="text" value="{{data.category_bonus}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.item_bonus" type="text" value="{{data.item_bonus}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.special_bonus_1" type="text" value="{{data.special_bonus_1}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.special_bonus_2" type="text" value="{{data.special_bonus_2}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.total_bonus" type="text" value="{{data.total_bonus}}" data-dtype="Number"/>
|
||||
</td>
|
||||
</table>
|
||||
{{localize "rmss.skill.description"}}
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
42
rmss/templates/sheets/spells/rmss-spell-sheet.html
Normal file
@ -0,0 +1,42 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img src="{{item.img}}" data-edit="img" title="{{item.name}}" height="64" width="64"/>
|
||||
<h1><input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'Name' }}"/></h1>
|
||||
</header>
|
||||
<div class="sheet-content">
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{localize "rmss.spell.spell_list"}}</th>
|
||||
<th>{{localize "rmss.spell.level"}}</th>
|
||||
<th>{{localize "rmss.spell.area_of_effect"}}</th>
|
||||
<th>{{localize "rmss.spell.duration"}}</th>
|
||||
<th>{{localize "rmss.spell.range"}}</th>
|
||||
<th>{{localize "rmss.spell.type"}}</th>
|
||||
|
||||
</tr>
|
||||
<td>
|
||||
<input name="data.spell_list" type="text" value="{{data.spell_list}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.level" type="text" value="{{data.level}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.area_of_effect" type="text" value="{{data.area_of_effect}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.duration" type="text" value="{{data.duration}}" data-dtype="String"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.range" type="text" value="{{data.range}}" data-dtype="Number"/>
|
||||
</td>
|
||||
<td>
|
||||
<input name="data.type" type="text" value="{{data.type}}" data-dtype="String"/>
|
||||
</td>
|
||||
|
||||
</table>
|
||||
{{localize "rmss.spell.description"}}
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|