diff --git a/Stars_Without_Number_Revised/Source/Stars_Without_Number_Revised.scss b/Stars_Without_Number_Revised/Source/Stars_Without_Number_Revised.scss
index f2bf32552c..8d96979b83 100644
--- a/Stars_Without_Number_Revised/Source/Stars_Without_Number_Revised.scss
+++ b/Stars_Without_Number_Revised/Source/Stars_Without_Number_Revised.scss
@@ -459,6 +459,7 @@ input[type=text].sheet-inherit {
.sheet-skills-type[value="neither"] ~ div .sheet-skills-either,
.sheet-skills-type:not([value="first"]) ~ div .sheet-skills-first,
.sheet-skills-type:not([value="revised"]) ~ div .sheet-skills-revised,
+.sheet-skills-type:not([value="wwn"]) ~ div .sheet-skills-wwn,
.sheet-skills-type:not([value="neither"]) ~ div .sheet-skills-neither,
.sheet-super-type:not([value="psionics"]):not([value="both"]) ~ div .sheet-skills-psionics,
.sheet-super-type:not([value="magic"]):not([value="both"]) ~ div .sheet-skills-magic,
diff --git a/Stars_Without_Number_Revised/Source/js/constants.js b/Stars_Without_Number_Revised/Source/js/constants.js
index 9ec95286c9..7ddaafed47 100644
--- a/Stars_Without_Number_Revised/Source/js/constants.js
+++ b/Stars_Without_Number_Revised/Source/js/constants.js
@@ -45,6 +45,8 @@ const skills = {
"vehicle_land", "vehicle_space", "vehicle_water"
],
psionic: ["biopsionics", "metapsionics", "precognition", "telekinesis", "telepathy", "teleportation"],
+ magic: ["know_magic", "use_magic", "sunblade"],
+ wwn: ["administer", "connect", "convince", "craft", "exert", "heal", "know", "lead", "magic", "notice", "perform", "pray", "punch", "ride", "sail", "shoot", "sneak", "stab", "survive", "trade", "work"],
};
const shipStats = ["ship_ac", "ship_armor", "ship_class", "ship_crew_max", "ship_crew_min",
"ship_hardpoints_max", "ship_hp", "ship_hp_max", "ship_mass_max", "ship_power_max", "ship_speed", "ship_hull_price",
diff --git a/Stars_Without_Number_Revised/Source/pug/character.pug b/Stars_Without_Number_Revised/Source/pug/character.pug
index d78512c228..c150698462 100644
--- a/Stars_Without_Number_Revised/Source/pug/character.pug
+++ b/Stars_Without_Number_Revised/Source/pug/character.pug
@@ -21,6 +21,7 @@
"vehicle_land", "vehicle_space", "vehicle_water", "dummy"],
psionic: ["biopsionics", "metapsionics", "precognition", "telekinesis", "telepathy", "teleportation"],
magic: ["know_magic", "use_magic", "sunblade"],
+ wwn: ["administer", "connect", "convince", "craft", "exert", "heal", "know", "lead", "magic", "notice", "perform", "pray", "punch", "ride", "sail", "shoot", "sneak", "stab", "survive", "trade", "work"],
};
//- We have foci in two locations, so they are outsourced to this mixin
@@ -625,6 +626,16 @@ input(type="hidden", name="attr_setting_transhuman_enable", value="").transhuman
.edit.flex-center
span(data-i18n="UNSPENT_SKILL_POINTS").name
input(type="number", min="0", value="0", name="attr_unspent_skill_points").level
+ .skills-wwn.skill-container(data-i18n-list="SKILL_ORDER_WWN")
+ each skill in skills.wwn
+ +makeSkill(skill, !!customSkills[skill], customSkills[skill])
+ .skill.skill-points
+ .display.flex-center
+ span(data-i18n="UNSPENT_SKILL_POINTS").name
+ span(name="attr_unspent_skill_points").level
+ .edit.flex-center
+ span(data-i18n="UNSPENT_SKILL_POINTS").name
+ input(type="number", min="0", value="0", name="attr_unspent_skill_points").level
input(type="hidden", name="attr_homebrew_extra_skills", value="0").hider
.skills-repeating
fieldset.repeating_skills
diff --git a/Stars_Without_Number_Revised/Source/pug/header.pug b/Stars_Without_Number_Revised/Source/pug/header.pug
index f09993a9be..9d826f94d5 100644
--- a/Stars_Without_Number_Revised/Source/pug/header.pug
+++ b/Stars_Without_Number_Revised/Source/pug/header.pug
@@ -29,6 +29,7 @@ input(type="hidden", name="attr_show_settings" value="0").hider
select(name="attr_homebrew_skill_list")
option(selected="", value="revised", data-i18n="REVISED_EDITION")
option(value="first", data-i18n="FIRST_EDITION")
+ option(value="wwn", data-i18n="WORLDS_WITHOUT_NUMBER")
option(value="neither", data-i18n="NEITHER")
span(data-i18n="SKILL_LIST_DESC")
p
diff --git a/Stars_Without_Number_Revised/Stars_Without_Number_Revised.css b/Stars_Without_Number_Revised/Stars_Without_Number_Revised.css
index 3db9dd317c..acb3299746 100644
--- a/Stars_Without_Number_Revised/Stars_Without_Number_Revised.css
+++ b/Stars_Without_Number_Revised/Stars_Without_Number_Revised.css
@@ -1 +1 @@
-.charsheet{background-color:#fff;padding:0 !important;font-size:12px;line-height:18px;min-width:800px;color:#000}div,span,label,textarea,button[type=roll],h1,h2,h3{box-sizing:border-box}label{margin:0;padding:0;color:inherit;font-size:1em;font-weight:normal;width:auto}p{font-size:1em;margin:0 0 5px;line-height:inherit}textarea{resize:vertical;padding:1px 4px;font-size:12px;margin:0;color:#000;display:block}input[type=text],input[type=number]{padding:1px 4px;font-size:12px;height:20px;color:#000}input[type=number][readonly=readonly],input[type=number].sheet-no-spinners{-moz-appearance:textfield}input[type=number][readonly=readonly]::-webkit-inner-spin-button,input[type=number][readonly=readonly]::-webkit-outer-spin-button,input[type=number].sheet-no-spinners::-webkit-inner-spin-button,input[type=number].sheet-no-spinners::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}select{margin:0;color:#000;font-size:12px;padding:1px 2px;line-height:18px;height:22px}button[type=roll].btn{margin:0}button[type=roll].sheet-unstyled-button{text-shadow:none;box-shadow:none;color:inherit;text-align:inherit;padding:0;border:none;border-radius:0;font-size:inherit;background:transparent}button[type=roll].sheet-unstyled-button::before{content:""}button[type=roll].sheet-invisible-button{position:absolute;z-index:1;opacity:0;left:0;width:100%;height:100%;top:0}button[type=roll].sheet-invisible-button:hover~div:not(.sheet-no-highlight){color:#2b3fea;border-color:#2b3fea}.sheet-hider[value="0"]+div,.sheet-hider[value="0"]+label,.sheet-hider[value="0"]+button,.sheet-hider[value="0"]+span{display:none}.sheet-hider[value=""]+button{display:none}.sheet-editmode[value="0"]~.sheet-content .sheet-empty-hider[value=""]+div{display:none}h1{font-family:"Contrail One",sans-serif;background-color:#9b9b9b;padding-left:5px;color:#fff;font-size:1.3em;line-height:22px;font-weight:normal}h1::after{content:"";position:absolute;right:0;background-color:#223297;background-position:center;background-size:100%;width:22px;height:22px}h2{font-family:"Contrail One",sans-serif;padding-left:5px;border:2px solid #000;background-color:#ccc;color:#000;font-size:1.1em;margin:5px 0;width:175px;line-height:18px}h3{font-size:1.2em;font-family:"Contrail One",sans-serif;color:#6b6b6b;line-height:1.5;font-weight:normal}.sheet-npc-input[value="0"]~.sheet-tabs .sheet-npc-tab,.sheet-npc-input[value="1"]~.sheet-tabs .sheet-pc-tab,.sheet-npc-input[value="0"]~.sheet-drones .sheet-npc-show,.sheet-npc-input[value="1"]~.sheet-drones .sheet-pc-show,.sheet-tab-input:not([value=character])~.sheet-character,.sheet-tab-input:not([value=ship])~.sheet-ship,.sheet-tab-input:not([value=drones])~.sheet-drones,.sheet-tab-input:not([value=npc])~.sheet-npc{display:none}.sheet-content{min-width:800px;display:grid;grid-gap:5px}.sheet-editmode[value="0"]~.sheet-content .sheet-edit,.sheet-editmode[value="0"]~.sheet-content .repcontrol,.sheet-editmode[value="1"]~.sheet-content .sheet-display{display:none}.sheet-header{margin-bottom:10px}.sheet-header input{opacity:0;position:absolute}.sheet-header .sheet-logo{width:480px}.sheet-header .sheet-npc-chooser{cursor:pointer;margin-left:auto;color:#fff}.sheet-header .sheet-npc-chooser span{padding:3px 6px}.sheet-header .sheet-npc-chooser input:not(:checked)~.sheet-pc-label,.sheet-header .sheet-npc-chooser input:checked~.sheet-npc-label{background:#11194b}.sheet-header .sheet-npc-chooser input:checked~.sheet-pc-label,.sheet-header .sheet-npc-chooser input:not(:checked)~.sheet-npc-label{background:#223297}.sheet-header .sheet-edit-button{margin:0 5px 0 20px}.sheet-header .sheet-settings-gear,.sheet-header .sheet-edit-button{cursor:pointer;font-size:16px;font-family:pictos}.sheet-header .sheet-settings-gear input:not(:checked)+span,.sheet-header .sheet-edit-button input:not(:checked)+span{color:#888}.sheet-header .sheet-settings-gear input:checked+span,.sheet-header .sheet-edit-button input:checked+span{color:#223297}.sheet-footer{font-size:10px;border-top:1px solid #ccc;margin-top:10px;color:#666}.sheet-footer button[type=roll].btn:hover{color:#223297}.sheet-tabs{margin-bottom:10px;width:100%;position:relative;z-index:2;border-top:1px solid #333;font-family:"Contrail One",sans-serif;flex-flow:row-reverse;justify-content:flex-end}.sheet-tabs input{opacity:0;position:absolute}.sheet-tabs input:checked+span{background:#11194b}.sheet-tabs input:not(:checked)+span{background:#223297}.sheet-tabs span{padding:1px 25px 0}.sheet-tabs label{cursor:pointer;line-height:17px;display:flex;margin:-1px -10px 0 0;color:#fff;clip-path:polygon(0 0, 100% 0, 100% 10px, calc(100% - 10px) 100%, 0 100%)}.sheet-flex{display:flex}.sheet-flex-start{display:flex;align-items:flex-start}.sheet-flex-center{display:flex;align-items:center}.sheet-flex-between{display:flex;align-items:center;justify-content:space-between}.sheet-flex-wrap{display:flex;flex-wrap:wrap;align-content:flex-start;align-items:flex-start}.sheet-grow{flex-grow:1}.sheet-halfgrid{display:grid;grid:auto/1fr 1fr;grid-gap:5px}.sheet-thirdsgrid{display:grid;grid:auto/repeat(3, 1fr);grid-column-gap:1%}.sheet-column>div:not(:first-child){margin-top:5px}.sheet-col-2{grid-column:2}.sheet-col-3{grid-column:3}.sheet-col-4{grid-column:4}.sheet-cols-2{grid-column:span 2}.sheet-cols-3{grid-column:span 3}.sheet-cols-4{grid-column:span 4}.sheet-rows-2{grid-row:span 2}.sheet-col55{width:55%}.sheet-col50{width:50%}.sheet-col40{width:40%}.sheet-colthird{width:calc(100%/3)}.sheet-col25{width:25%}.sheet-col20{width:20%}.sheet-colsixth{width:calc(100%/6)}.sheet-grey-box,.sheet-grey-box-bordered{padding:4px;background:#f0f0f0}.sheet-grey-box-bordered{border:1px solid #aaa}.sheet-core-box{padding:8px;background:#f0f0f0}.sheet-core-box-text{padding:8px 3px 3px 8px;background:#f0f0f0}input[type=text].sheet-inherit{border-radius:0;border:none;background:transparent;box-shadow:none;padding:0;color:inherit;font:inherit}.sheet-inline-input{position:relative;z-index:2;vertical-align:baseline;padding:0 3px}.sheet-text-input{color:#666;padding-right:5px;line-height:1}.sheet-text-input .sheet-label{font-size:.9em;text-align:inherit;line-height:14px;border-top:1px solid #aaa}.sheet-text-input .sheet-label input[type=checkbox]{height:14px;margin:0 3px 0 0}.sheet-text-input input[type=text],.sheet-text-input input[type=number],.sheet-text-input textarea{background:transparent;padding:1px 0;width:100%;border-radius:0;color:#223297;border:none;text-align:inherit;font-weight:inherit;box-shadow:none}.sheet-text-input input[type=text][readonly=readonly],.sheet-text-input input[type=number][readonly=readonly],.sheet-text-input textarea[readonly=readonly]{cursor:default}.sheet-text-input input[type=text],.sheet-text-input input[type=number]{font-size:1.1em}.sheet-text-input textarea{height:20px;min-height:20px}.sheet-text-input>input[type=checkbox]{height:14px;margin:3px 0}.sheet-text-input select{width:100%;height:20px;color:#223297;background:transparent;border:none}.sheet-text-input.sheet-important{font-weight:bold;font-size:1.1em}.sheet-text-input.sheet-center{text-align:center}.sheet-text-input.sheet-duo{display:grid;text-align:center;grid:auto/1fr 5px 1fr;align-items:center;align-content:start;grid-column-gap:4px}.sheet-text-input.sheet-duo>span{font-size:16px;color:#333}.sheet-text-input.sheet-duo .sheet-label{grid-column:1/4}.sheet-text-input button[type=roll].btn{width:100%}.sheet-text-input button[type=roll].btn:hover{color:red}.sheet-table-header{font-size:.9em;color:#666}.sheet-table-header .sheet-center{text-align:center}.sheet-table-header>div{padding-left:2px;border-bottom:1px solid #aaa}.sheet-blue-button{text-align:center;line-height:1.5}.sheet-blue-button button[type=roll].btn{background:#2b3fea;width:35px;height:35px;display:block;margin:0 auto;color:#fff}.sheet-blue-button button[type=roll].btn::before{content:""}.sheet-focusinfo{position:relative}.sheet-focusinfo .sheet-details{position:absolute;z-index:1;opacity:1;width:250px;top:22px;left:calc(50% - 125px);transition:all .3s;background:#fff;border:1px solid #777;border-radius:8px;padding:5px}.sheet-focusinfo input:not(:focus)~.sheet-details{visibility:hidden;opacity:0}.sheet-lower{text-transform:lowercase}.sheet-space-before::before,.sheet-space-after::after{content:" "}.sheet-colon-after::after{content:":"}.sheet-hide-empty[value=""]+span{display:none}.sheet-add-plus:not([value^="-"])+span::before{content:"+"}.sheet-api{font-size:.8em;background:#f0f0f0;border-radius:5px;padding:1px;line-height:1;vertical-align:super}.sheet-simple-repsection .repitem{margin-bottom:3px}.sheet-simple-repsection textarea{margin:3px 0 0;height:50px}.sheet-simple-repsection .sheet-display .sheet-name{font-weight:bold;font-size:1.1em;border-bottom:1px solid #777}.sheet-simple-repsection .sheet-display .sheet-details{line-height:1.4;text-align:justify;white-space:pre-wrap}.sheet-rep-grid{display:grid;align-items:start;grid-column-gap:3px;margin-bottom:3px}.sheet-rep-grid .sheet-text-input{padding:0}.sheet-skills-type[value=neither]~div .sheet-skills-either,.sheet-skills-type:not([value=first])~div .sheet-skills-first,.sheet-skills-type:not([value=revised])~div .sheet-skills-revised,.sheet-skills-type:not([value=neither])~div .sheet-skills-neither,.sheet-super-type:not([value=psionics]):not([value=both])~div .sheet-skills-psionics,.sheet-super-type:not([value=magic]):not([value=both])~div .sheet-skills-magic,.sheet-skills-query:not([value=hover])~div .sheet-skills-query-hover,.sheet-skills-query[value=query]~div .sheet-skills-query-display,.sheet-skills-query[value=query]~div .sheet-skills-query-ask{display:none}.sheet-skills-query-display input:not([value*=str])~.sheet-str,.sheet-skills-query-display input:not([value*=dex])~.sheet-dex,.sheet-skills-query-display input:not([value*=con])~.sheet-con,.sheet-skills-query-display input:not([value*=int])~.sheet-int,.sheet-skills-query-display input:not([value*=wis])~.sheet-wis,.sheet-skills-query-display input:not([value*=cha])~.sheet-cha{display:none}.sheet-skills-query[value=hover]~div .sheet-skill:hover .sheet-skills-query-display,.sheet-skill .sheet-display .sheet-query:focus+.sheet-skills-query-display{display:none}.repcontrol{display:flex;margin-top:4px}.repcontrol button{padding:3px 10px}.repcontrol_edit{order:1;margin-left:auto}.repcontrol button{background:#223297;color:#fff;box-shadow:none;text-shadow:none}.repcontrol_move,.repcontrol_del{padding:1px 10px}.itemcontrol{z-index:100}.sheet-section-toggle-header{position:relative}.sheet-section-toggle-header input{cursor:pointer;position:absolute;width:22px;height:100%;z-index:2;right:0;opacity:0}.sheet-section-toggle-header input+h1::after{background-image:url("https://svgshare.com/i/6Vz.svg")}.sheet-section-toggle-header input:not(:checked)+h1::after{transform:rotate(180deg)}.sheet-section-toggle-header+input+div{margin-top:5px}.sheet-settings label{font-weight:bold}.sheet-settings label span{margin-right:4px}.sheet-settings select{width:120px;display:inline-block}.sheet-settings select.sheet-wide{width:170px}.sheet-generate{margin-bottom:5px}.sheet-generate .sheet-generate-source{height:20px;width:170px}.sheet-generate .sheet-generate-info{margin:0 5px;min-height:20px;flex-grow:1;background:#f0f0f0;border-radius:4px;padding:1px 4px}.sheet-generate .sheet-generate-button{padding:1px 8px;border-radius:4px;cursor:pointer;background:#223297;color:#fff}.sheet-generate .sheet-generate-button input[type=checkbox]{position:absolute;visibility:hidden}.sheet-generate .sheet-generate-button:active{outline:5px auto;outline-offset:-2px}.sheet-core{display:grid;grid-column-gap:5px}.sheet-core.sheet-core-info{grid:auto/2.5fr 1fr .8fr}.sheet-core.sheet-core-info .sheet-info{flex-wrap:wrap;padding-right:3px}.sheet-core.sheet-core-info .sheet-info .sheet-important{width:calc(60% - 22px)}.sheet-core.sheet-core-info .sheet-info .sheet-level{width:44px}.sheet-core.sheet-core-info .sheet-info .sheet-level-rest{width:calc(40% - 22px)}.sheet-core.sheet-core-stats{grid:auto/minmax(310px, 1.2fr) minmax(260px, 1fr) minmax(220px, 0.8fr)}.sheet-core .sheet-main-content{margin-top:3px;display:grid;grid:auto/repeat(3, 1fr);grid-row-gap:3px}.sheet-core .sheet-main-content .sheet-left-margin{margin-left:15px}.sheet-saves .sheet-flex{margin-top:4px}.sheet-menus-content{display:grid;grid:auto/1fr 1fr}.sheet-menus button[type=roll].btn{color:#2b3fea;font-size:1.1em}.sheet-menus button[type=roll].btn:hover{color:red}.sheet-character .sheet-menus button[type=roll].btn{margin-right:auto}.sheet-attributes{font-size:1.1em;line-height:1.2}.sheet-attributes table{width:100%;height:100%}.sheet-attributes td:first-child,.sheet-attributes .sheet-mod{font-weight:bold}.sheet-attributes td:not(:first-child){text-align:center}.sheet-attributes input[type=number]{width:45px}.sheet-attributes td:nth-child(2n+3) input[type=number]{width:37px}.sheet-attributes .sheet-mod{font-size:1.1em}.sheet-editmode[value="0"]~.sheet-content .sheet-resources .repcontainer{grid:auto/1fr 1fr}.sheet-resources .sheet-credits{margin-left:auto}.sheet-resources .repcontainer{display:grid;grid-row-gap:3px;margin-top:3px}.sheet-resources input[type=text]{width:calc(100% - 8em);margin-right:auto}.sheet-resources .sheet-slash{margin:0 2px}.sheet-shells .sheet-shells-grid{grid:auto/40px 35px 35px 35px 45px 1fr}.sheet-transhuman-setting:not([value=transhuman])~.sheet-column .sheet-transhuman-enabled{display:none}.sheet-transhuman-setting[value=transhuman]~.sheet-core .sheet-transhuman-disabled{display:none}.sheet-weapons .sheet-edit{justify-content:space-between;padding-right:1px}.sheet-weapons .sheet-edit .sheet-name{width:138px}.sheet-weapons .sheet-edit .sheet-ab{width:45px}.sheet-weapons .sheet-edit .sheet-weapon-skill{width:80px}.sheet-weapons .sheet-edit .sheet-attribute{width:60px}.sheet-weapons .sheet-edit .sheet-burst{width:65px}.sheet-weapons .sheet-edit .sheet-damage{width:60px}.sheet-weapons .sheet-edit .sheet-shock-damage{width:55px}.sheet-weapons .sheet-edit .sheet-shock-ac{width:55px}.sheet-weapons .sheet-edit .sheet-skill-to-damage{width:30px}.sheet-weapons .sheet-edit .sheet-range{width:60px}.sheet-weapons .sheet-edit .sheet-ammo{width:80px}.sheet-weapons .sheet-edit .sheet-enc{width:40px}.sheet-weapons .sheet-text-input{padding-right:3px}.sheet-weapons .repitem{margin-bottom:3px}.sheet-weapons .sheet-display{font-size:1.1em;border:1px solid #888;text-indent:-10px;padding:2px 4px 2px 14px}.sheet-weapons .sheet-display .sheet-name{font-weight:bold}.sheet-weapons .repitem:nth-child(odd) .sheet-display{background:#d3d3d3}.sheet-skill-container,.sheet-skills-repeating .repcontainer{display:grid;grid:auto/1fr 1fr;grid-gap:4px 1%}.sheet-skill{position:relative}.sheet-skill .sheet-display,.sheet-skill .sheet-edit{border:1px solid #888;padding:2px 4px;height:100%}.sheet-skill .sheet-display{font-weight:bold;font-size:1.1em}.sheet-skill .sheet-display .sheet-dice[value="3d6d1"]+.sheet-name::after{content:"3d6"}.sheet-skill .sheet-display .sheet-dice[value="4d6d2"]+.sheet-name::after{content:"4d6"}.sheet-skill .sheet-display .sheet-name{margin-right:auto}.sheet-skill .sheet-display .sheet-name::after{vertical-align:super;margin-left:2px;font-weight:normal;font-size:.7em}.sheet-skill .sheet-display .sheet-query{width:55px;background:transparent;border-color:transparent;position:relative;height:18px;z-index:2;margin:0 2px;outline:none;color:inherit;flex-shrink:0;line-height:16px;padding:0}.sheet-skill:not(:hover) .sheet-display .sheet-query:not(:focus){display:none}.sheet-skill .sheet-skills-query-display{margin:0 3px;flex-shrink:0;font-weight:normal}.sheet-skill .sheet-edit input[type=text].sheet-name{width:100%;margin-bottom:2px}.sheet-skill .sheet-edit div.sheet-name{flex-grow:1;width:0;padding:1px 2px}.sheet-skill .sheet-edit .sheet-level{margin:0 2px;padding:1px 2px;width:40px}.sheet-skill .sheet-edit .sheet-query{width:50px}.sheet-skill .sheet-edit .sheet-dice{width:35px}.sheet-skill .sheet-edit.sheet-flex-wrap select,.sheet-skill .sheet-edit.sheet-flex-wrap input{flex-grow:1}.sheet-skill.sheet-skill-points .sheet-display{font-size:1.1em;font-weight:bold;width:100%}.sheet-skill.sheet-skill-points .sheet-name{background:#000;color:#fff;flex-grow:0;margin-right:auto;width:auto;padding:0 4px}.sheet-skill.sheet-skill-points .sheet-edit .sheet-level{margin:0}.sheet-skill-container .sheet-skill:nth-of-type(4n+1),.sheet-skill-container .sheet-skill:nth-of-type(4n+2){background:#d3d3d3}.repcontainer[data-groupname=repeating_skills] .repitem:nth-of-type(4n+1) .sheet-skill,.repcontainer[data-groupname=repeating_skills] .repitem:nth-of-type(4n+2) .sheet-skill{background:#d3d3d3}.sheet-skills-type:not([value=neither])~div .sheet-skills-repeating,.sheet-psionics .sheet-skills-repeating,.sheet-magic .sheet-skills-repeating{margin-top:4px}.sheet-skill-blurb{margin-top:3px;font-style:italic;text-align:center}.sheet-details-button{margin-left:auto;font-weight:bold;color:#999;letter-spacing:1px;cursor:pointer;text-transform:uppercase;font-size:10px}.sheet-details-button input{visibility:hidden;position:absolute}.sheet-details-button input:checked+span{color:#333}.sheet-input-details:not([value="1"])~div .sheet-details{display:none}.sheet-input-details:not([value="0"])~div .sheet-notdetails{display:none}.sheet-super-type:not([value=psionics])~div .sheet-super-psionics-only,.sheet-super-type:not([value=magic])~div .sheet-super-magic-only,.sheet-super-type:not([value=both])~div .sheet-super-both,.sheet-super-type[value=magic]~div .sheet-super-psionics,.sheet-super-type[value=psionics]~div .sheet-super-magic,.sheet-super-type[value=neither]~div .sheet-super{display:none}.sheet-tab-input:not([value=psionics])~.sheet-psionics,.sheet-tab-input:not([value=magic])~.sheet-magic{display:none}.sheet-psionics-effort{display:grid;grid:auto/auto 45px 45px 45px 45px 80px;align-items:center;grid-column-gap:4px;margin-top:5px}.sheet-psionics-effort h3{line-height:1}.sheet-techniques{margin-top:5px}.sheet-techniques>.sheet-flex-center{margin-bottom:5px}.sheet-techniques .sheet-display .sheet-discipline{margin-left:auto}.sheet-techniques .sheet-edit .sheet-discipline{margin-left:5px;width:90px}.sheet-magic-effort{display:grid;grid:auto/auto 45px 45px 45px 45px 80px;align-items:center;grid-column-gap:4px;margin-top:5px}.sheet-magic-effort h3{line-height:1}.sheet-spells{margin-top:5px}.sheet-spells>.sheet-flex-center{margin-bottom:5px}.sheet-spells>.sheet-flex{border-bottom:1px solid #666;margin-bottom:3px}.sheet-spells>.sheet-flex :not(:first-child){text-align:center}.sheet-spells .sheet-edit .sheet-name{width:220px;flex-grow:1}.sheet-spells .sheet-edit .sheet-prepared{margin:0 3px}.sheet-spells .sheet-edit .sheet-prepared,.sheet-spells .sheet-edit .sheet-damage{width:60px}.sheet-spells .sheet-display .sheet-name{padding-bottom:1px}.sheet-spells .sheet-display span.sheet-prepared{margin:0 4px 0 auto}.sheet-spells .sheet-display input[type=number].sheet-prepared{padding:0 4px;position:relative;z-index:2}.sheet-spell-slots{display:grid;grid:auto/auto 55px 55px 55px 55px 55px;align-items:center;grid-column-gap:4px;margin-top:5px}.sheet-spell-slots h3{line-height:1}.sheet-magic-type:not([value=adept])~div .sheet-adept,.sheet-magic-type:not([value=magister])~div .sheet-magister,.sheet-magic-type:not([value=arcanist])~div .sheet-arcanist,.sheet-magic-type[value=adept]~div .sheet-spellcaster{display:none}.sheet-ai-processing{display:grid;grid:auto/auto 45px 45px 45px 45px 80px;align-items:center;grid-column-gap:4px}.sheet-ai-processing h3{line-height:1}.sheet-ai-processing-nodes .sheet-nodes-grid{grid:auto/65px 65px 1fr}.sheet-ai-setting:not([value=ai])~.sheet-ai-enabled{display:none}.sheet-ai-setting[value=ai]~.sheet-column .sheet-ai-enabled{display:block}.sheet-ai-setting[value=ai]~.sheet-core .sheet-ai-disabled{display:none}.sheet-foci-loc[value=left]~.sheet-column .sheet-foci-right,.sheet-foci-loc[value=right]~.sheet-column .sheet-foci-left{display:none}.sheet-foci .sheet-details-button{position:relative;z-index:2}.sheet-foci .sheet-class-ability{position:relative}.sheet-foci .sheet-class-ability .sheet-edit .sheet-name{font-weight:bold;font-size:1.1em;border-bottom:1px solid #777}.sheet-foci .sheet-class-ability .sheet-name,.sheet-foci .sheet-class-ability .sheet-edit textarea,.sheet-foci .sheet-class-ability .sheet-display{margin-bottom:3px}.sheet-foci .sheet-edit .sheet-name{flex-grow:1}.sheet-foci .sheet-edit .sheet-level{margin-left:3px;width:60px}.sheet-foci .sheet-display .sheet-level{margin-left:auto}.sheet-armor .sheet-armor-grid{grid:auto/40px 1fr 40px 75px 35px 35px 70px}.sheet-armor .sheet-details div,.sheet-armor .sheet-details label{grid-column:2/8}.sheet-armor .sheet-details .sheet-display{line-height:1.3}.sheet-readied-stowed{display:grid;align-items:center;grid:auto/1fr 60px 60px 80px 80px;grid-column-gap:7px}.sheet-readied-stowed .sheet-input-gear-over[value="1"]+.sheet-text-input input:first-child{color:red}.sheet-cyberware h3{margin:5px 0}.sheet-cyberware .sheet-edit{flex-wrap:wrap}.sheet-cyberware .sheet-edit input[type=text]{width:0;flex-grow:1}.sheet-cyberware .sheet-edit>span{margin:0 3px}.sheet-equipment .repcontainer[data-groupname=repeating_weapons]+.repcontrol{display:none}.sheet-equipment .sheet-gear-grid{grid:auto/35px minmax(130px, 1fr) 2fr 35px 70px 40px}.sheet-equipment .sheet-other h3{margin-bottom:5px}.sheet-equipment .sheet-other-gear{height:100px}.sheet-misc .sheet-text-input input{padding-left:2px}.sheet-misc .repitem{margin-bottom:2px}.sheet-misc .sheet-xp{width:50px}.sheet-notes{margin-top:5px}.sheet-ship-class[value=fighter]~.sheet-section .sheet-generate-source .sheet-frigate,.sheet-ship-class[value=fighter]~.sheet-section .sheet-generate-source .sheet-cruiser,.sheet-ship-class[value=fighter]~.sheet-section .sheet-generate-source .sheet-capital{display:none}.sheet-ship-class[value=frigate]~.sheet-section .sheet-generate-source .sheet-cruiser,.sheet-ship-class[value=frigate]~.sheet-section .sheet-generate-source .sheet-capital{display:none}.sheet-ship-class[value=cruiser]~.sheet-section .sheet-generate-source .sheet-capital{display:none}.sheet-ship{margin-top:-20px;grid:auto/2fr 1fr 1fr}.sheet-ship .sheet-menus h3{line-height:1}.sheet-ship .sheet-menus button[type=roll].btn{line-height:1}.sheet-ship .sheet-type{padding:5px 8px}.sheet-ship .sheet-type h3{line-height:1}.sheet-ship .sheet-type select{height:20px;width:80px;background:transparent}.sheet-ship .sheet-info{flex-wrap:wrap}.sheet-ship .sheet-info .sheet-text-input{margin-bottom:3px}.sheet-ship .sheet-data{display:grid;grid:auto/repeat(3, 1fr)}.sheet-ship .sheet-data .sheet-text-input,.sheet-ship .sheet-data .sheet-text-input input[type=number]{text-align:center}.sheet-ship .sheet-stats{display:grid;grid:auto/1fr 1fr}.sheet-ship .sheet-input-color-negative[value^="-"]+.sheet-text-input input:first-child{color:red}.sheet-ship .repcontainer{display:grid;grid-row-gap:3px}.sheet-ship .repitem,.sheet-ship .repitem .sheet-edit,.sheet-ship .repitem .sheet-display{width:100%}.sheet-ship .sheet-grey-box-bordered{padding-right:0}.sheet-ship .sheet-ship-weapons .sheet-edit .sheet-name{width:calc(100% - 200px)}.sheet-ship .sheet-ship-weapons .sheet-edit .sheet-damage{width:65px}.sheet-ship .sheet-ship-weapons .sheet-edit .sheet-duo{width:80px}.sheet-ship .sheet-ship-weapons .sheet-edit .sheet-qualities{width:calc(100% - 195px)}.sheet-ship .sheet-ship-weapons .sheet-edit .sheet-range{width:70px}.sheet-ship .sheet-ship-weapons .sheet-display{text-indent:-10px;padding-left:14px}.sheet-ship .sheet-ship-defenses .sheet-edit .sheet-name,.sheet-ship .sheet-ship-defenses .sheet-edit .sheet-effect,.sheet-ship .sheet-ship-fitting .sheet-edit .sheet-name,.sheet-ship .sheet-ship-fitting .sheet-edit .sheet-effect{flex:1 1 auto;width:0}.sheet-ship .sheet-ship-defenses .sheet-display,.sheet-ship .sheet-ship-fitting .sheet-display{text-indent:-10px;padding:2px 4px 2px 14px}.sheet-ship .sheet-edit .sheet-broken{width:50px}.sheet-ship .sheet-edit .sheet-number{width:50px}.sheet-ship .sheet-display .sheet-name{font-weight:bold}.sheet-ship .sheet-display .sheet-broken{color:red;text-transform:uppercase}.sheet-ship .sheet-display .sheet-description{font-style:italic}.sheet-ship .sheet-input-type[value=SHIP]~div .sheet-vehicle-type:not(.sheet-vehicle-type-ship),.sheet-ship .sheet-input-type[value=MECH]~div .sheet-vehicle-type:not(.sheet-vehicle-type-mech),.sheet-ship .sheet-input-type[value=VEHICLE]~div .sheet-vehicle-type:not(.sheet-vehicle-type-custom){display:none}.sheet-editmode[value="0"]~.sheet-ship .sheet-ship-defenses,.sheet-editmode[value="0"]~.sheet-ship .sheet-ship-fitting{background:#f0f0f0;padding:3px 0}.sheet-npc{margin-top:-20px;grid:auto/3fr .8fr 2.2fr}.sheet-npc .sheet-input-individual-hide:not([value="1"])~.sheet-rolls .sheet-individual-hide{display:none}.sheet-npc .sheet-menus h3{line-height:1}.sheet-npc .sheet-menus button[type=roll].btn{line-height:1}.sheet-npc .sheet-info{display:grid;grid:auto/repeat(5, 1fr) 1.3fr}.sheet-npc .sheet-npc-hp{display:grid;grid:auto/40px 1fr}.sheet-npc .sheet-individual-hide input[type=checkbox]{margin-right:2px}.sheet-npc .sheet-npc-rep-header{margin:4px}.sheet-npc .sheet-rolls>:first-child{margin-bottom:5px}.sheet-npc .sheet-npc-checkbox{font-size:.9em}.sheet-npc .sheet-npc-checkbox span{vertical-align:middle;margin-right:4px}.sheet-npc .repcontainer{display:grid;grid-gap:3px}.sheet-npc .sheet-full-attacks{margin:0 6px 0 auto}.sheet-npc .sheet-grey-box-bordered{padding-right:1px}.sheet-npc .sheet-text-input{padding-right:3px}.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-name{width:0;flex-grow:1}.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-attacks,.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-ab,.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-range{width:50px}.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-burst,.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-damage{width:60px}.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-shock-damage{width:30px}.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-shock-ac{width:40px}.sheet-npc .sheet-npc-attacks .sheet-display{font-size:1.1em;font-weight:bold;padding:4px 8px}.sheet-npc .sheet-npc-attacks .sheet-display .sheet-range[value="0"]+span{display:none}.sheet-npc .sheet-npc-attacks .sheet-display .sheet-attacks[value="1"]+span{display:none}.sheet-npc .sheet-npc-attacks .sheet-display .sheet-attacks{text-transform:lowercase}.sheet-npc .sheet-npc-abilities .sheet-npc-checkbox{margin-left:auto}.sheet-npc .sheet-npc-abilities .sheet-edit .sheet-name{width:100px}.sheet-npc .sheet-npc-abilities .sheet-edit .sheet-description{width:0;flex-grow:1}.sheet-npc .sheet-npc-abilities .sheet-display{text-indent:-10px;padding:4px 8px 4px 18px}.sheet-npc .sheet-npc-abilities .sheet-display .sheet-name{font-weight:bold}.sheet-npc .sheet-npc-abilities .sheet-display .sheet-description{font-style:italic}.sheet-drone{display:grid;grid:86px 1fr/1fr 1fr;grid-gap:5px;align-items:start;border-top:1px solid #555;padding:5px 0}.sheet-drone .sheet-stats{display:grid;align-content:start;grid:auto/repeat(7, 1fr)}.sheet-drone .sheet-fittings .sheet-name{font-weight:bold}.sheet-drone .sheet-fittings .sheet-name:not(:empty)::after{content:". "}.sheet-drone .sheet-fittings .sheet-desc{font-style:italic}.sheet-drone .sheet-fittings .sheet-display{margin-bottom:3px}.sheet-drone .sheet-fitting-grid{grid:auto/0.8fr 1.2fr}.sheet-drone .sheet-num-fittings[value="1"]~.sheet-fitting-5,.sheet-drone .sheet-num-fittings[value="2"]~.sheet-fitting-5,.sheet-drone .sheet-num-fittings[value="3"]~.sheet-fitting-5,.sheet-drone .sheet-num-fittings[value="4"]~.sheet-fitting-5{display:none}.sheet-drone .sheet-num-fittings[value="1"]~.sheet-fitting-4,.sheet-drone .sheet-num-fittings[value="2"]~.sheet-fitting-4,.sheet-drone .sheet-num-fittings[value="3"]~.sheet-fitting-4{display:none}.sheet-drone .sheet-num-fittings[value="1"]~.sheet-fitting-3,.sheet-drone .sheet-num-fittings[value="2"]~.sheet-fitting-3{display:none}.sheet-drone .sheet-num-fittings[value="1"]~.sheet-fitting-2{display:none}.sheet-drone .sheet-weapon-grid{grid:auto/35px 1fr 50px 60px 35px 70px}.sheet-drone .sheet-weapon{position:relative}.sheet-drone .sheet-weapon .sheet-name{font-weight:bold}.sheet-drone .sheet-weapon .sheet-display{margin-right:4px}.sheet-drone .sheet-weapon .sheet-display div::after{content:","}.sheet-editmode[value="0"]~.sheet-content .sheet-drone .sheet-drone-weapons{display:flex;flex-wrap:wrap}.sheet-rolltemplate-swn-default,.sheet-rolltemplate-swn-attack,.sheet-rolltemplate-swn-skill,.sheet-rolltemplate-swn-save{margin-left:-41px;width:292px;color:#fff;font-family:"Arial",sans-serif}.sheet-rolltemplate-swn-default div,.sheet-rolltemplate-swn-attack div,.sheet-rolltemplate-swn-skill div,.sheet-rolltemplate-swn-save div{box-sizing:border-box}.withoutavatars .sheet-rolltemplate-swn-default,.withoutavatars .sheet-rolltemplate-swn-attack,.withoutavatars .sheet-rolltemplate-swn-skill,.withoutavatars .sheet-rolltemplate-swn-save{margin-left:-11px}.sheet-rolltemplate-swn-default .sheet-container .inlinerollresult,.sheet-rolltemplate-swn-attack .sheet-container .inlinerollresult,.sheet-rolltemplate-swn-skill .sheet-container .inlinerollresult,.sheet-rolltemplate-swn-save .sheet-container .inlinerollresult{padding:0;font-family:inherit;background:transparent;border-color:transparent;border:none}.sheet-rolltemplate-swn-default .sheet-container,.sheet-rolltemplate-swn-attack .sheet-container,.sheet-rolltemplate-swn-skill .sheet-container,.sheet-rolltemplate-swn-save .sheet-container{min-height:175px;position:relative;padding:18px 20px;clip-path:polygon(0 7px, 7px 0, 173px 0, 177px 3px, 281px 3px, 289px 11px, 289px 82px, 100% 87px, 100% calc(100% - 6px), calc(100% - 6px) 100%, 22px 100%, 0 calc(100% - 22px))}.sheet-rolltemplate-swn-default .sheet-header,.sheet-rolltemplate-swn-attack .sheet-header,.sheet-rolltemplate-swn-skill .sheet-header,.sheet-rolltemplate-swn-save .sheet-header{width:198px}.sheet-rolltemplate-swn-default .sheet-header .sheet-name,.sheet-rolltemplate-swn-attack .sheet-header .sheet-name,.sheet-rolltemplate-swn-skill .sheet-header .sheet-name,.sheet-rolltemplate-swn-save .sheet-header .sheet-name{margin-bottom:12px;font-size:13px;line-height:1;height:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:"Times New Roman",serif;font-weight:bold}.sheet-rolltemplate-swn-default .sheet-header .sheet-title,.sheet-rolltemplate-swn-attack .sheet-header .sheet-title,.sheet-rolltemplate-swn-skill .sheet-header .sheet-title,.sheet-rolltemplate-swn-save .sheet-header .sheet-title{font-size:14px;height:32px;line-height:16px;overflow:hidden;font-weight:bold;margin-bottom:24px}.sheet-rolltemplate-swn-default .sheet-content,.sheet-rolltemplate-swn-attack .sheet-content,.sheet-rolltemplate-swn-skill .sheet-content,.sheet-rolltemplate-swn-save .sheet-content{position:relative}.sheet-rolltemplate-swn-default .sheet-rolls .inlinerollresult,.sheet-rolltemplate-swn-attack .sheet-rolls .inlinerollresult,.sheet-rolltemplate-swn-skill .sheet-rolls .inlinerollresult,.sheet-rolltemplate-swn-save .sheet-rolls .inlinerollresult{font-size:36px;font-weight:bold;line-height:29px;white-space:nowrap}.sheet-rolltemplate-swn-default .sheet-rolls,.sheet-rolltemplate-swn-attack .sheet-rolls,.sheet-rolltemplate-swn-skill .sheet-rolls,.sheet-rolltemplate-swn-save .sheet-rolls{height:35px;display:flex;align-items:start}.sheet-rolltemplate-swn-default .sheet-rollname,.sheet-rolltemplate-swn-attack .sheet-rollname,.sheet-rolltemplate-swn-skill .sheet-rollname,.sheet-rolltemplate-swn-save .sheet-rollname{font-size:12px;line-height:1}.sheet-rolltemplate-swn-default a,.sheet-rolltemplate-swn-attack a,.sheet-rolltemplate-swn-skill a,.sheet-rolltemplate-swn-save a{color:inherit}.sheet-rolltemplate-swn-default a:hover,.sheet-rolltemplate-swn-attack a:hover,.sheet-rolltemplate-swn-skill a:hover,.sheet-rolltemplate-swn-save a:hover{color:red}.sheet-rolltemplate-swn-default a[href^="~"],.sheet-rolltemplate-swn-attack a[href^="~"],.sheet-rolltemplate-swn-skill a[href^="~"],.sheet-rolltemplate-swn-save a[href^="~"]{padding:0;background:transparent;border:none;line-height:1.4}.sheet-rolltemplate-swn-default .sheet-container{background:url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-top-black.png") top no-repeat,url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-bottom.png") bottom no-repeat,#0f0f0f}.sheet-rolltemplate-swn-default .sheet-name{color:#bababa}.sheet-rolltemplate-swn-default .sheet-rollname{margin-right:auto}.sheet-rolltemplate-swn-default .sheet-desc,.sheet-rolltemplate-swn-default .sheet-buttons{font-size:12px;line-height:1.4}.sheet-rolltemplate-swn-default .sheet-info{font-style:italic;font-size:10px;line-height:1;margin:-10px 0 5px}.sheet-rolltemplate-swn-default .sheet-info .inlinerollresult{font-size:1em;font-weight:normal}.sheet-rolltemplate-swn-attack .sheet-container{background:url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-top-purple.png") top no-repeat,url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-bottom.png") bottom no-repeat,#0f0f0f}.sheet-rolltemplate-swn-attack .sheet-name{color:#b291ec}.sheet-rolltemplate-swn-attack .sheet-title .inlinerollresult{font-size:1em;pointer-events:none}.sheet-rolltemplate-swn-attack .sheet-damage{margin-left:auto}.sheet-rolltemplate-swn-attack .sheet-roll{margin-left:10px}.sheet-rolltemplate-swn-attack .sheet-rolls:not(:first-of-type){margin-top:5px}.sheet-rolltemplate-swn-attack .sheet-shock{font-style:italic;margin-top:4px;font-size:12px}.sheet-rolltemplate-swn-attack .sheet-info{font-style:italic;font-size:10px}.sheet-rolltemplate-swn-attack .sheet-info>span:first-child{margin-right:10px}.sheet-rolltemplate-swn-attack .sheet-info .inlinerollresult{font-weight:normal;font-size:1em;margin-left:2px}.sheet-rolltemplate-swn-attack .sheet-desc{font-size:12px;line-height:1.4}.sheet-rolltemplate-swn-skill .sheet-container{background:url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-top-blue.png") top no-repeat,url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-bottom.png") bottom no-repeat,#0f0f0f}.sheet-rolltemplate-swn-skill .sheet-name{color:#80b0ff}.sheet-rolltemplate-swn-skill .sheet-title .sheet-italic{font-style:italic}.sheet-rolltemplate-swn-skill .sheet-title .inlinerollresult{font-size:1em;pointer-events:none}.sheet-rolltemplate-swn-skill .sheet-rollname{margin-right:auto}.sheet-rolltemplate-swn-save .sheet-container.sheet-success{background:url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-top-green.png") top no-repeat,url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-bottom.png") bottom no-repeat,#0f0f0f}.sheet-rolltemplate-swn-save .sheet-container.sheet-success .sheet-name{color:#83db53}.sheet-rolltemplate-swn-save .sheet-container.sheet-failure{background:url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-top-red.png") top no-repeat,url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-bottom.png") bottom no-repeat,#0f0f0f}.sheet-rolltemplate-swn-save .sheet-container.sheet-failure .sheet-name{color:#ff8080}.sheet-rolltemplate-swn-save .sheet-vs{margin:0 10px}.sheet-rolltemplate-swn-save .sheet-rollname{margin-right:auto}
+.charsheet{background-color:#fff;padding:0 !important;font-size:12px;line-height:18px;min-width:800px;color:#000}div,span,label,textarea,button[type=roll],h1,h2,h3{box-sizing:border-box}label{margin:0;padding:0;color:inherit;font-size:1em;font-weight:normal;width:auto}p{font-size:1em;margin:0 0 5px;line-height:inherit}textarea{resize:vertical;padding:1px 4px;font-size:12px;margin:0;color:#000;display:block}input[type=text],input[type=number]{padding:1px 4px;font-size:12px;height:20px;color:#000}input[type=number][readonly=readonly],input[type=number].sheet-no-spinners{-moz-appearance:textfield}input[type=number][readonly=readonly]::-webkit-inner-spin-button,input[type=number][readonly=readonly]::-webkit-outer-spin-button,input[type=number].sheet-no-spinners::-webkit-inner-spin-button,input[type=number].sheet-no-spinners::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}select{margin:0;color:#000;font-size:12px;padding:1px 2px;line-height:18px;height:22px}button[type=roll].btn{margin:0}button[type=roll].sheet-unstyled-button{text-shadow:none;box-shadow:none;color:inherit;text-align:inherit;padding:0;border:none;border-radius:0;font-size:inherit;background:transparent}button[type=roll].sheet-unstyled-button::before{content:""}button[type=roll].sheet-invisible-button{position:absolute;z-index:1;opacity:0;left:0;width:100%;height:100%;top:0}button[type=roll].sheet-invisible-button:hover~div:not(.sheet-no-highlight){color:#2b3fea;border-color:#2b3fea}.sheet-hider[value="0"]+div,.sheet-hider[value="0"]+label,.sheet-hider[value="0"]+button,.sheet-hider[value="0"]+span{display:none}.sheet-hider[value=""]+button{display:none}.sheet-editmode[value="0"]~.sheet-content .sheet-empty-hider[value=""]+div{display:none}h1{font-family:"Contrail One",sans-serif;background-color:#9b9b9b;padding-left:5px;color:#fff;font-size:1.3em;line-height:22px;font-weight:normal}h1::after{content:"";position:absolute;right:0;background-color:#223297;background-position:center;background-size:100%;width:22px;height:22px}h2{font-family:"Contrail One",sans-serif;padding-left:5px;border:2px solid #000;background-color:#ccc;color:#000;font-size:1.1em;margin:5px 0;width:175px;line-height:18px}h3{font-size:1.2em;font-family:"Contrail One",sans-serif;color:#6b6b6b;line-height:1.5;font-weight:normal}.sheet-npc-input[value="0"]~.sheet-tabs .sheet-npc-tab,.sheet-npc-input[value="1"]~.sheet-tabs .sheet-pc-tab,.sheet-npc-input[value="0"]~.sheet-drones .sheet-npc-show,.sheet-npc-input[value="1"]~.sheet-drones .sheet-pc-show,.sheet-tab-input:not([value=character])~.sheet-character,.sheet-tab-input:not([value=ship])~.sheet-ship,.sheet-tab-input:not([value=drones])~.sheet-drones,.sheet-tab-input:not([value=npc])~.sheet-npc{display:none}.sheet-content{min-width:800px;display:grid;grid-gap:5px}.sheet-editmode[value="0"]~.sheet-content .sheet-edit,.sheet-editmode[value="0"]~.sheet-content .repcontrol,.sheet-editmode[value="1"]~.sheet-content .sheet-display{display:none}.sheet-header{margin-bottom:10px}.sheet-header input{opacity:0;position:absolute}.sheet-header .sheet-logo{width:480px}.sheet-header .sheet-npc-chooser{cursor:pointer;margin-left:auto;color:#fff}.sheet-header .sheet-npc-chooser span{padding:3px 6px}.sheet-header .sheet-npc-chooser input:not(:checked)~.sheet-pc-label,.sheet-header .sheet-npc-chooser input:checked~.sheet-npc-label{background:#11194b}.sheet-header .sheet-npc-chooser input:checked~.sheet-pc-label,.sheet-header .sheet-npc-chooser input:not(:checked)~.sheet-npc-label{background:#223297}.sheet-header .sheet-edit-button{margin:0 5px 0 20px}.sheet-header .sheet-settings-gear,.sheet-header .sheet-edit-button{cursor:pointer;font-size:16px;font-family:pictos}.sheet-header .sheet-settings-gear input:not(:checked)+span,.sheet-header .sheet-edit-button input:not(:checked)+span{color:#888}.sheet-header .sheet-settings-gear input:checked+span,.sheet-header .sheet-edit-button input:checked+span{color:#223297}.sheet-footer{font-size:10px;border-top:1px solid #ccc;margin-top:10px;color:#666}.sheet-footer button[type=roll].btn:hover{color:#223297}.sheet-tabs{margin-bottom:10px;width:100%;position:relative;z-index:2;border-top:1px solid #333;font-family:"Contrail One",sans-serif;flex-flow:row-reverse;justify-content:flex-end}.sheet-tabs input{opacity:0;position:absolute}.sheet-tabs input:checked+span{background:#11194b}.sheet-tabs input:not(:checked)+span{background:#223297}.sheet-tabs span{padding:1px 25px 0}.sheet-tabs label{cursor:pointer;line-height:17px;display:flex;margin:-1px -10px 0 0;color:#fff;clip-path:polygon(0 0, 100% 0, 100% 10px, calc(100% - 10px) 100%, 0 100%)}.sheet-flex{display:flex}.sheet-flex-start{display:flex;align-items:flex-start}.sheet-flex-center{display:flex;align-items:center}.sheet-flex-between{display:flex;align-items:center;justify-content:space-between}.sheet-flex-wrap{display:flex;flex-wrap:wrap;align-content:flex-start;align-items:flex-start}.sheet-grow{flex-grow:1}.sheet-halfgrid{display:grid;grid:auto/1fr 1fr;grid-gap:5px}.sheet-thirdsgrid{display:grid;grid:auto/repeat(3, 1fr);grid-column-gap:1%}.sheet-column>div:not(:first-child){margin-top:5px}.sheet-col-2{grid-column:2}.sheet-col-3{grid-column:3}.sheet-col-4{grid-column:4}.sheet-cols-2{grid-column:span 2}.sheet-cols-3{grid-column:span 3}.sheet-cols-4{grid-column:span 4}.sheet-rows-2{grid-row:span 2}.sheet-col55{width:55%}.sheet-col50{width:50%}.sheet-col40{width:40%}.sheet-colthird{width:calc(100%/3)}.sheet-col25{width:25%}.sheet-col20{width:20%}.sheet-colsixth{width:calc(100%/6)}.sheet-grey-box,.sheet-grey-box-bordered{padding:4px;background:#f0f0f0}.sheet-grey-box-bordered{border:1px solid #aaa}.sheet-core-box{padding:8px;background:#f0f0f0}.sheet-core-box-text{padding:8px 3px 3px 8px;background:#f0f0f0}input[type=text].sheet-inherit{border-radius:0;border:none;background:transparent;box-shadow:none;padding:0;color:inherit;font:inherit}.sheet-inline-input{position:relative;z-index:2;vertical-align:baseline;padding:0 3px}.sheet-text-input{color:#666;padding-right:5px;line-height:1}.sheet-text-input .sheet-label{font-size:.9em;text-align:inherit;line-height:14px;border-top:1px solid #aaa}.sheet-text-input .sheet-label input[type=checkbox]{height:14px;margin:0 3px 0 0}.sheet-text-input input[type=text],.sheet-text-input input[type=number],.sheet-text-input textarea{background:transparent;padding:1px 0;width:100%;border-radius:0;color:#223297;border:none;text-align:inherit;font-weight:inherit;box-shadow:none}.sheet-text-input input[type=text][readonly=readonly],.sheet-text-input input[type=number][readonly=readonly],.sheet-text-input textarea[readonly=readonly]{cursor:default}.sheet-text-input input[type=text],.sheet-text-input input[type=number]{font-size:1.1em}.sheet-text-input textarea{height:20px;min-height:20px}.sheet-text-input>input[type=checkbox]{height:14px;margin:3px 0}.sheet-text-input select{width:100%;height:20px;color:#223297;background:transparent;border:none}.sheet-text-input.sheet-important{font-weight:bold;font-size:1.1em}.sheet-text-input.sheet-center{text-align:center}.sheet-text-input.sheet-duo{display:grid;text-align:center;grid:auto/1fr 5px 1fr;align-items:center;align-content:start;grid-column-gap:4px}.sheet-text-input.sheet-duo>span{font-size:16px;color:#333}.sheet-text-input.sheet-duo .sheet-label{grid-column:1/4}.sheet-text-input button[type=roll].btn{width:100%}.sheet-text-input button[type=roll].btn:hover{color:red}.sheet-table-header{font-size:.9em;color:#666}.sheet-table-header .sheet-center{text-align:center}.sheet-table-header>div{padding-left:2px;border-bottom:1px solid #aaa}.sheet-blue-button{text-align:center;line-height:1.5}.sheet-blue-button button[type=roll].btn{background:#2b3fea;width:35px;height:35px;display:block;margin:0 auto;color:#fff}.sheet-blue-button button[type=roll].btn::before{content:""}.sheet-focusinfo{position:relative}.sheet-focusinfo .sheet-details{position:absolute;z-index:1;opacity:1;width:250px;top:22px;left:calc(50% - 125px);transition:all .3s;background:#fff;border:1px solid #777;border-radius:8px;padding:5px}.sheet-focusinfo input:not(:focus)~.sheet-details{visibility:hidden;opacity:0}.sheet-lower{text-transform:lowercase}.sheet-space-before::before,.sheet-space-after::after{content:" "}.sheet-colon-after::after{content:":"}.sheet-hide-empty[value=""]+span{display:none}.sheet-add-plus:not([value^="-"])+span::before{content:"+"}.sheet-api{font-size:.8em;background:#f0f0f0;border-radius:5px;padding:1px;line-height:1;vertical-align:super}.sheet-simple-repsection .repitem{margin-bottom:3px}.sheet-simple-repsection textarea{margin:3px 0 0;height:50px}.sheet-simple-repsection .sheet-display .sheet-name{font-weight:bold;font-size:1.1em;border-bottom:1px solid #777}.sheet-simple-repsection .sheet-display .sheet-details{line-height:1.4;text-align:justify;white-space:pre-wrap}.sheet-rep-grid{display:grid;align-items:start;grid-column-gap:3px;margin-bottom:3px}.sheet-rep-grid .sheet-text-input{padding:0}.sheet-skills-type[value=neither]~div .sheet-skills-either,.sheet-skills-type:not([value=first])~div .sheet-skills-first,.sheet-skills-type:not([value=revised])~div .sheet-skills-revised,.sheet-skills-type:not([value=wwn])~div .sheet-skills-wwn,.sheet-skills-type:not([value=neither])~div .sheet-skills-neither,.sheet-super-type:not([value=psionics]):not([value=both])~div .sheet-skills-psionics,.sheet-super-type:not([value=magic]):not([value=both])~div .sheet-skills-magic,.sheet-skills-query:not([value=hover])~div .sheet-skills-query-hover,.sheet-skills-query[value=query]~div .sheet-skills-query-display,.sheet-skills-query[value=query]~div .sheet-skills-query-ask{display:none}.sheet-skills-query-display input:not([value*=str])~.sheet-str,.sheet-skills-query-display input:not([value*=dex])~.sheet-dex,.sheet-skills-query-display input:not([value*=con])~.sheet-con,.sheet-skills-query-display input:not([value*=int])~.sheet-int,.sheet-skills-query-display input:not([value*=wis])~.sheet-wis,.sheet-skills-query-display input:not([value*=cha])~.sheet-cha{display:none}.sheet-skills-query[value=hover]~div .sheet-skill:hover .sheet-skills-query-display,.sheet-skill .sheet-display .sheet-query:focus+.sheet-skills-query-display{display:none}.repcontrol{display:flex;margin-top:4px}.repcontrol button{padding:3px 10px}.repcontrol_edit{order:1;margin-left:auto}.repcontrol button{background:#223297;color:#fff;box-shadow:none;text-shadow:none}.repcontrol_move,.repcontrol_del{padding:1px 10px}.itemcontrol{z-index:100}.sheet-section-toggle-header{position:relative}.sheet-section-toggle-header input{cursor:pointer;position:absolute;width:22px;height:100%;z-index:2;right:0;opacity:0}.sheet-section-toggle-header input+h1::after{background-image:url("https://svgshare.com/i/6Vz.svg")}.sheet-section-toggle-header input:not(:checked)+h1::after{transform:rotate(180deg)}.sheet-section-toggle-header+input+div{margin-top:5px}.sheet-settings label{font-weight:bold}.sheet-settings label span{margin-right:4px}.sheet-settings select{width:120px;display:inline-block}.sheet-settings select.sheet-wide{width:170px}.sheet-generate{margin-bottom:5px}.sheet-generate .sheet-generate-source{height:20px;width:170px}.sheet-generate .sheet-generate-info{margin:0 5px;min-height:20px;flex-grow:1;background:#f0f0f0;border-radius:4px;padding:1px 4px}.sheet-generate .sheet-generate-button{padding:1px 8px;border-radius:4px;cursor:pointer;background:#223297;color:#fff}.sheet-generate .sheet-generate-button input[type=checkbox]{position:absolute;visibility:hidden}.sheet-generate .sheet-generate-button:active{outline:5px auto;outline-offset:-2px}.sheet-core{display:grid;grid-column-gap:5px}.sheet-core.sheet-core-info{grid:auto/2.5fr 1fr .8fr}.sheet-core.sheet-core-info .sheet-info{flex-wrap:wrap;padding-right:3px}.sheet-core.sheet-core-info .sheet-info .sheet-important{width:calc(60% - 22px)}.sheet-core.sheet-core-info .sheet-info .sheet-level{width:44px}.sheet-core.sheet-core-info .sheet-info .sheet-level-rest{width:calc(40% - 22px)}.sheet-core.sheet-core-stats{grid:auto/minmax(310px, 1.2fr) minmax(260px, 1fr) minmax(220px, 0.8fr)}.sheet-core .sheet-main-content{margin-top:3px;display:grid;grid:auto/repeat(3, 1fr);grid-row-gap:3px}.sheet-core .sheet-main-content .sheet-left-margin{margin-left:15px}.sheet-saves .sheet-flex{margin-top:4px}.sheet-menus-content{display:grid;grid:auto/1fr 1fr}.sheet-menus button[type=roll].btn{color:#2b3fea;font-size:1.1em}.sheet-menus button[type=roll].btn:hover{color:red}.sheet-character .sheet-menus button[type=roll].btn{margin-right:auto}.sheet-attributes{font-size:1.1em;line-height:1.2}.sheet-attributes table{width:100%;height:100%}.sheet-attributes td:first-child,.sheet-attributes .sheet-mod{font-weight:bold}.sheet-attributes td:not(:first-child){text-align:center}.sheet-attributes input[type=number]{width:45px}.sheet-attributes td:nth-child(2n+3) input[type=number]{width:37px}.sheet-attributes .sheet-mod{font-size:1.1em}.sheet-editmode[value="0"]~.sheet-content .sheet-resources .repcontainer{grid:auto/1fr 1fr}.sheet-resources .sheet-credits{margin-left:auto}.sheet-resources .repcontainer{display:grid;grid-row-gap:3px;margin-top:3px}.sheet-resources input[type=text]{width:calc(100% - 8em);margin-right:auto}.sheet-resources .sheet-slash{margin:0 2px}.sheet-shells .sheet-shells-grid{grid:auto/40px 35px 35px 35px 45px 1fr}.sheet-transhuman-setting:not([value=transhuman])~.sheet-column .sheet-transhuman-enabled{display:none}.sheet-transhuman-setting[value=transhuman]~.sheet-core .sheet-transhuman-disabled{display:none}.sheet-weapons .sheet-edit{justify-content:space-between;padding-right:1px}.sheet-weapons .sheet-edit .sheet-name{width:138px}.sheet-weapons .sheet-edit .sheet-ab{width:45px}.sheet-weapons .sheet-edit .sheet-weapon-skill{width:80px}.sheet-weapons .sheet-edit .sheet-attribute{width:60px}.sheet-weapons .sheet-edit .sheet-burst{width:65px}.sheet-weapons .sheet-edit .sheet-damage{width:60px}.sheet-weapons .sheet-edit .sheet-shock-damage{width:55px}.sheet-weapons .sheet-edit .sheet-shock-ac{width:55px}.sheet-weapons .sheet-edit .sheet-skill-to-damage{width:30px}.sheet-weapons .sheet-edit .sheet-range{width:60px}.sheet-weapons .sheet-edit .sheet-ammo{width:80px}.sheet-weapons .sheet-edit .sheet-enc{width:40px}.sheet-weapons .sheet-text-input{padding-right:3px}.sheet-weapons .repitem{margin-bottom:3px}.sheet-weapons .sheet-display{font-size:1.1em;border:1px solid #888;text-indent:-10px;padding:2px 4px 2px 14px}.sheet-weapons .sheet-display .sheet-name{font-weight:bold}.sheet-weapons .repitem:nth-child(odd) .sheet-display{background:#d3d3d3}.sheet-skill-container,.sheet-skills-repeating .repcontainer{display:grid;grid:auto/1fr 1fr;grid-gap:4px 1%}.sheet-skill{position:relative}.sheet-skill .sheet-display,.sheet-skill .sheet-edit{border:1px solid #888;padding:2px 4px;height:100%}.sheet-skill .sheet-display{font-weight:bold;font-size:1.1em}.sheet-skill .sheet-display .sheet-dice[value="3d6d1"]+.sheet-name::after{content:"3d6"}.sheet-skill .sheet-display .sheet-dice[value="4d6d2"]+.sheet-name::after{content:"4d6"}.sheet-skill .sheet-display .sheet-name{margin-right:auto}.sheet-skill .sheet-display .sheet-name::after{vertical-align:super;margin-left:2px;font-weight:normal;font-size:.7em}.sheet-skill .sheet-display .sheet-query{width:55px;background:transparent;border-color:transparent;position:relative;height:18px;z-index:2;margin:0 2px;outline:none;color:inherit;flex-shrink:0;line-height:16px;padding:0}.sheet-skill:not(:hover) .sheet-display .sheet-query:not(:focus){display:none}.sheet-skill .sheet-skills-query-display{margin:0 3px;flex-shrink:0;font-weight:normal}.sheet-skill .sheet-edit input[type=text].sheet-name{width:100%;margin-bottom:2px}.sheet-skill .sheet-edit div.sheet-name{flex-grow:1;width:0;padding:1px 2px}.sheet-skill .sheet-edit .sheet-level{margin:0 2px;padding:1px 2px;width:40px}.sheet-skill .sheet-edit .sheet-query{width:50px}.sheet-skill .sheet-edit .sheet-dice{width:35px}.sheet-skill .sheet-edit.sheet-flex-wrap select,.sheet-skill .sheet-edit.sheet-flex-wrap input{flex-grow:1}.sheet-skill.sheet-skill-points .sheet-display{font-size:1.1em;font-weight:bold;width:100%}.sheet-skill.sheet-skill-points .sheet-name{background:#000;color:#fff;flex-grow:0;margin-right:auto;width:auto;padding:0 4px}.sheet-skill.sheet-skill-points .sheet-edit .sheet-level{margin:0}.sheet-skill-container .sheet-skill:nth-of-type(4n+1),.sheet-skill-container .sheet-skill:nth-of-type(4n+2){background:#d3d3d3}.repcontainer[data-groupname=repeating_skills] .repitem:nth-of-type(4n+1) .sheet-skill,.repcontainer[data-groupname=repeating_skills] .repitem:nth-of-type(4n+2) .sheet-skill{background:#d3d3d3}.sheet-skills-type:not([value=neither])~div .sheet-skills-repeating,.sheet-psionics .sheet-skills-repeating,.sheet-magic .sheet-skills-repeating{margin-top:4px}.sheet-skill-blurb{margin-top:3px;font-style:italic;text-align:center}.sheet-details-button{margin-left:auto;font-weight:bold;color:#999;letter-spacing:1px;cursor:pointer;text-transform:uppercase;font-size:10px}.sheet-details-button input{visibility:hidden;position:absolute}.sheet-details-button input:checked+span{color:#333}.sheet-input-details:not([value="1"])~div .sheet-details{display:none}.sheet-input-details:not([value="0"])~div .sheet-notdetails{display:none}.sheet-super-type:not([value=psionics])~div .sheet-super-psionics-only,.sheet-super-type:not([value=magic])~div .sheet-super-magic-only,.sheet-super-type:not([value=both])~div .sheet-super-both,.sheet-super-type[value=magic]~div .sheet-super-psionics,.sheet-super-type[value=psionics]~div .sheet-super-magic,.sheet-super-type[value=neither]~div .sheet-super{display:none}.sheet-tab-input:not([value=psionics])~.sheet-psionics,.sheet-tab-input:not([value=magic])~.sheet-magic{display:none}.sheet-psionics-effort{display:grid;grid:auto/auto 45px 45px 45px 45px 80px;align-items:center;grid-column-gap:4px;margin-top:5px}.sheet-psionics-effort h3{line-height:1}.sheet-techniques{margin-top:5px}.sheet-techniques>.sheet-flex-center{margin-bottom:5px}.sheet-techniques .sheet-display .sheet-discipline{margin-left:auto}.sheet-techniques .sheet-edit .sheet-discipline{margin-left:5px;width:90px}.sheet-magic-effort{display:grid;grid:auto/auto 45px 45px 45px 45px 80px;align-items:center;grid-column-gap:4px;margin-top:5px}.sheet-magic-effort h3{line-height:1}.sheet-spells{margin-top:5px}.sheet-spells>.sheet-flex-center{margin-bottom:5px}.sheet-spells>.sheet-flex{border-bottom:1px solid #666;margin-bottom:3px}.sheet-spells>.sheet-flex :not(:first-child){text-align:center}.sheet-spells .sheet-edit .sheet-name{width:220px;flex-grow:1}.sheet-spells .sheet-edit .sheet-prepared{margin:0 3px}.sheet-spells .sheet-edit .sheet-prepared,.sheet-spells .sheet-edit .sheet-damage{width:60px}.sheet-spells .sheet-display .sheet-name{padding-bottom:1px}.sheet-spells .sheet-display span.sheet-prepared{margin:0 4px 0 auto}.sheet-spells .sheet-display input[type=number].sheet-prepared{padding:0 4px;position:relative;z-index:2}.sheet-spell-slots{display:grid;grid:auto/auto 55px 55px 55px 55px 55px;align-items:center;grid-column-gap:4px;margin-top:5px}.sheet-spell-slots h3{line-height:1}.sheet-magic-type:not([value=adept])~div .sheet-adept,.sheet-magic-type:not([value=magister])~div .sheet-magister,.sheet-magic-type:not([value=arcanist])~div .sheet-arcanist,.sheet-magic-type[value=adept]~div .sheet-spellcaster{display:none}.sheet-ai-processing{display:grid;grid:auto/auto 45px 45px 45px 45px 80px;align-items:center;grid-column-gap:4px}.sheet-ai-processing h3{line-height:1}.sheet-ai-processing-nodes .sheet-nodes-grid{grid:auto/65px 65px 1fr}.sheet-ai-setting:not([value=ai])~.sheet-ai-enabled{display:none}.sheet-ai-setting[value=ai]~.sheet-column .sheet-ai-enabled{display:block}.sheet-ai-setting[value=ai]~.sheet-core .sheet-ai-disabled{display:none}.sheet-foci-loc[value=left]~.sheet-column .sheet-foci-right,.sheet-foci-loc[value=right]~.sheet-column .sheet-foci-left{display:none}.sheet-foci .sheet-details-button{position:relative;z-index:2}.sheet-foci .sheet-class-ability{position:relative}.sheet-foci .sheet-class-ability .sheet-edit .sheet-name{font-weight:bold;font-size:1.1em;border-bottom:1px solid #777}.sheet-foci .sheet-class-ability .sheet-name,.sheet-foci .sheet-class-ability .sheet-edit textarea,.sheet-foci .sheet-class-ability .sheet-display{margin-bottom:3px}.sheet-foci .sheet-edit .sheet-name{flex-grow:1}.sheet-foci .sheet-edit .sheet-level{margin-left:3px;width:60px}.sheet-foci .sheet-display .sheet-level{margin-left:auto}.sheet-armor .sheet-armor-grid{grid:auto/40px 1fr 40px 75px 35px 35px 70px}.sheet-armor .sheet-details div,.sheet-armor .sheet-details label{grid-column:2/8}.sheet-armor .sheet-details .sheet-display{line-height:1.3}.sheet-readied-stowed{display:grid;align-items:center;grid:auto/1fr 60px 60px 80px 80px;grid-column-gap:7px}.sheet-readied-stowed .sheet-input-gear-over[value="1"]+.sheet-text-input input:first-child{color:red}.sheet-cyberware h3{margin:5px 0}.sheet-cyberware .sheet-edit{flex-wrap:wrap}.sheet-cyberware .sheet-edit input[type=text]{width:0;flex-grow:1}.sheet-cyberware .sheet-edit>span{margin:0 3px}.sheet-equipment .repcontainer[data-groupname=repeating_weapons]+.repcontrol{display:none}.sheet-equipment .sheet-gear-grid{grid:auto/35px minmax(130px, 1fr) 2fr 35px 70px 40px}.sheet-equipment .sheet-other h3{margin-bottom:5px}.sheet-equipment .sheet-other-gear{height:100px}.sheet-misc .sheet-text-input input{padding-left:2px}.sheet-misc .repitem{margin-bottom:2px}.sheet-misc .sheet-xp{width:50px}.sheet-notes{margin-top:5px}.sheet-ship-class[value=fighter]~.sheet-section .sheet-generate-source .sheet-frigate,.sheet-ship-class[value=fighter]~.sheet-section .sheet-generate-source .sheet-cruiser,.sheet-ship-class[value=fighter]~.sheet-section .sheet-generate-source .sheet-capital{display:none}.sheet-ship-class[value=frigate]~.sheet-section .sheet-generate-source .sheet-cruiser,.sheet-ship-class[value=frigate]~.sheet-section .sheet-generate-source .sheet-capital{display:none}.sheet-ship-class[value=cruiser]~.sheet-section .sheet-generate-source .sheet-capital{display:none}.sheet-ship{margin-top:-20px;grid:auto/2fr 1fr 1fr}.sheet-ship .sheet-menus h3{line-height:1}.sheet-ship .sheet-menus button[type=roll].btn{line-height:1}.sheet-ship .sheet-type{padding:5px 8px}.sheet-ship .sheet-type h3{line-height:1}.sheet-ship .sheet-type select{height:20px;width:80px;background:transparent}.sheet-ship .sheet-info{flex-wrap:wrap}.sheet-ship .sheet-info .sheet-text-input{margin-bottom:3px}.sheet-ship .sheet-data{display:grid;grid:auto/repeat(3, 1fr)}.sheet-ship .sheet-data .sheet-text-input,.sheet-ship .sheet-data .sheet-text-input input[type=number]{text-align:center}.sheet-ship .sheet-stats{display:grid;grid:auto/1fr 1fr}.sheet-ship .sheet-input-color-negative[value^="-"]+.sheet-text-input input:first-child{color:red}.sheet-ship .repcontainer{display:grid;grid-row-gap:3px}.sheet-ship .repitem,.sheet-ship .repitem .sheet-edit,.sheet-ship .repitem .sheet-display{width:100%}.sheet-ship .sheet-grey-box-bordered{padding-right:0}.sheet-ship .sheet-ship-weapons .sheet-edit .sheet-name{width:calc(100% - 200px)}.sheet-ship .sheet-ship-weapons .sheet-edit .sheet-damage{width:65px}.sheet-ship .sheet-ship-weapons .sheet-edit .sheet-duo{width:80px}.sheet-ship .sheet-ship-weapons .sheet-edit .sheet-qualities{width:calc(100% - 195px)}.sheet-ship .sheet-ship-weapons .sheet-edit .sheet-range{width:70px}.sheet-ship .sheet-ship-weapons .sheet-display{text-indent:-10px;padding-left:14px}.sheet-ship .sheet-ship-defenses .sheet-edit .sheet-name,.sheet-ship .sheet-ship-defenses .sheet-edit .sheet-effect,.sheet-ship .sheet-ship-fitting .sheet-edit .sheet-name,.sheet-ship .sheet-ship-fitting .sheet-edit .sheet-effect{flex:1 1 auto;width:0}.sheet-ship .sheet-ship-defenses .sheet-display,.sheet-ship .sheet-ship-fitting .sheet-display{text-indent:-10px;padding:2px 4px 2px 14px}.sheet-ship .sheet-edit .sheet-broken{width:50px}.sheet-ship .sheet-edit .sheet-number{width:50px}.sheet-ship .sheet-display .sheet-name{font-weight:bold}.sheet-ship .sheet-display .sheet-broken{color:red;text-transform:uppercase}.sheet-ship .sheet-display .sheet-description{font-style:italic}.sheet-ship .sheet-input-type[value=SHIP]~div .sheet-vehicle-type:not(.sheet-vehicle-type-ship),.sheet-ship .sheet-input-type[value=MECH]~div .sheet-vehicle-type:not(.sheet-vehicle-type-mech),.sheet-ship .sheet-input-type[value=VEHICLE]~div .sheet-vehicle-type:not(.sheet-vehicle-type-custom){display:none}.sheet-editmode[value="0"]~.sheet-ship .sheet-ship-defenses,.sheet-editmode[value="0"]~.sheet-ship .sheet-ship-fitting{background:#f0f0f0;padding:3px 0}.sheet-npc{margin-top:-20px;grid:auto/3fr .8fr 2.2fr}.sheet-npc .sheet-input-individual-hide:not([value="1"])~.sheet-rolls .sheet-individual-hide{display:none}.sheet-npc .sheet-menus h3{line-height:1}.sheet-npc .sheet-menus button[type=roll].btn{line-height:1}.sheet-npc .sheet-info{display:grid;grid:auto/repeat(5, 1fr) 1.3fr}.sheet-npc .sheet-npc-hp{display:grid;grid:auto/40px 1fr}.sheet-npc .sheet-individual-hide input[type=checkbox]{margin-right:2px}.sheet-npc .sheet-npc-rep-header{margin:4px}.sheet-npc .sheet-rolls>:first-child{margin-bottom:5px}.sheet-npc .sheet-npc-checkbox{font-size:.9em}.sheet-npc .sheet-npc-checkbox span{vertical-align:middle;margin-right:4px}.sheet-npc .repcontainer{display:grid;grid-gap:3px}.sheet-npc .sheet-full-attacks{margin:0 6px 0 auto}.sheet-npc .sheet-grey-box-bordered{padding-right:1px}.sheet-npc .sheet-text-input{padding-right:3px}.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-name{width:0;flex-grow:1}.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-attacks,.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-ab,.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-range{width:50px}.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-burst,.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-damage{width:60px}.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-shock-damage{width:30px}.sheet-npc .sheet-npc-attacks .sheet-edit .sheet-shock-ac{width:40px}.sheet-npc .sheet-npc-attacks .sheet-display{font-size:1.1em;font-weight:bold;padding:4px 8px}.sheet-npc .sheet-npc-attacks .sheet-display .sheet-range[value="0"]+span{display:none}.sheet-npc .sheet-npc-attacks .sheet-display .sheet-attacks[value="1"]+span{display:none}.sheet-npc .sheet-npc-attacks .sheet-display .sheet-attacks{text-transform:lowercase}.sheet-npc .sheet-npc-abilities .sheet-npc-checkbox{margin-left:auto}.sheet-npc .sheet-npc-abilities .sheet-edit .sheet-name{width:100px}.sheet-npc .sheet-npc-abilities .sheet-edit .sheet-description{width:0;flex-grow:1}.sheet-npc .sheet-npc-abilities .sheet-display{text-indent:-10px;padding:4px 8px 4px 18px}.sheet-npc .sheet-npc-abilities .sheet-display .sheet-name{font-weight:bold}.sheet-npc .sheet-npc-abilities .sheet-display .sheet-description{font-style:italic}.sheet-drone{display:grid;grid:86px 1fr/1fr 1fr;grid-gap:5px;align-items:start;border-top:1px solid #555;padding:5px 0}.sheet-drone .sheet-stats{display:grid;align-content:start;grid:auto/repeat(7, 1fr)}.sheet-drone .sheet-fittings .sheet-name{font-weight:bold}.sheet-drone .sheet-fittings .sheet-name:not(:empty)::after{content:". "}.sheet-drone .sheet-fittings .sheet-desc{font-style:italic}.sheet-drone .sheet-fittings .sheet-display{margin-bottom:3px}.sheet-drone .sheet-fitting-grid{grid:auto/0.8fr 1.2fr}.sheet-drone .sheet-num-fittings[value="1"]~.sheet-fitting-5,.sheet-drone .sheet-num-fittings[value="2"]~.sheet-fitting-5,.sheet-drone .sheet-num-fittings[value="3"]~.sheet-fitting-5,.sheet-drone .sheet-num-fittings[value="4"]~.sheet-fitting-5{display:none}.sheet-drone .sheet-num-fittings[value="1"]~.sheet-fitting-4,.sheet-drone .sheet-num-fittings[value="2"]~.sheet-fitting-4,.sheet-drone .sheet-num-fittings[value="3"]~.sheet-fitting-4{display:none}.sheet-drone .sheet-num-fittings[value="1"]~.sheet-fitting-3,.sheet-drone .sheet-num-fittings[value="2"]~.sheet-fitting-3{display:none}.sheet-drone .sheet-num-fittings[value="1"]~.sheet-fitting-2{display:none}.sheet-drone .sheet-weapon-grid{grid:auto/35px 1fr 50px 60px 35px 70px}.sheet-drone .sheet-weapon{position:relative}.sheet-drone .sheet-weapon .sheet-name{font-weight:bold}.sheet-drone .sheet-weapon .sheet-display{margin-right:4px}.sheet-drone .sheet-weapon .sheet-display div::after{content:","}.sheet-editmode[value="0"]~.sheet-content .sheet-drone .sheet-drone-weapons{display:flex;flex-wrap:wrap}.sheet-rolltemplate-swn-default,.sheet-rolltemplate-swn-attack,.sheet-rolltemplate-swn-skill,.sheet-rolltemplate-swn-save{margin-left:-41px;width:292px;color:#fff;font-family:"Arial",sans-serif}.sheet-rolltemplate-swn-default div,.sheet-rolltemplate-swn-attack div,.sheet-rolltemplate-swn-skill div,.sheet-rolltemplate-swn-save div{box-sizing:border-box}.withoutavatars .sheet-rolltemplate-swn-default,.withoutavatars .sheet-rolltemplate-swn-attack,.withoutavatars .sheet-rolltemplate-swn-skill,.withoutavatars .sheet-rolltemplate-swn-save{margin-left:-11px}.sheet-rolltemplate-swn-default .sheet-container .inlinerollresult,.sheet-rolltemplate-swn-attack .sheet-container .inlinerollresult,.sheet-rolltemplate-swn-skill .sheet-container .inlinerollresult,.sheet-rolltemplate-swn-save .sheet-container .inlinerollresult{padding:0;font-family:inherit;background:transparent;border-color:transparent;border:none}.sheet-rolltemplate-swn-default .sheet-container,.sheet-rolltemplate-swn-attack .sheet-container,.sheet-rolltemplate-swn-skill .sheet-container,.sheet-rolltemplate-swn-save .sheet-container{min-height:175px;position:relative;padding:18px 20px;clip-path:polygon(0 7px, 7px 0, 173px 0, 177px 3px, 281px 3px, 289px 11px, 289px 82px, 100% 87px, 100% calc(100% - 6px), calc(100% - 6px) 100%, 22px 100%, 0 calc(100% - 22px))}.sheet-rolltemplate-swn-default .sheet-header,.sheet-rolltemplate-swn-attack .sheet-header,.sheet-rolltemplate-swn-skill .sheet-header,.sheet-rolltemplate-swn-save .sheet-header{width:198px}.sheet-rolltemplate-swn-default .sheet-header .sheet-name,.sheet-rolltemplate-swn-attack .sheet-header .sheet-name,.sheet-rolltemplate-swn-skill .sheet-header .sheet-name,.sheet-rolltemplate-swn-save .sheet-header .sheet-name{margin-bottom:12px;font-size:13px;line-height:1;height:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:"Times New Roman",serif;font-weight:bold}.sheet-rolltemplate-swn-default .sheet-header .sheet-title,.sheet-rolltemplate-swn-attack .sheet-header .sheet-title,.sheet-rolltemplate-swn-skill .sheet-header .sheet-title,.sheet-rolltemplate-swn-save .sheet-header .sheet-title{font-size:14px;height:32px;line-height:16px;overflow:hidden;font-weight:bold;margin-bottom:24px}.sheet-rolltemplate-swn-default .sheet-content,.sheet-rolltemplate-swn-attack .sheet-content,.sheet-rolltemplate-swn-skill .sheet-content,.sheet-rolltemplate-swn-save .sheet-content{position:relative}.sheet-rolltemplate-swn-default .sheet-rolls .inlinerollresult,.sheet-rolltemplate-swn-attack .sheet-rolls .inlinerollresult,.sheet-rolltemplate-swn-skill .sheet-rolls .inlinerollresult,.sheet-rolltemplate-swn-save .sheet-rolls .inlinerollresult{font-size:36px;font-weight:bold;line-height:29px;white-space:nowrap}.sheet-rolltemplate-swn-default .sheet-rolls,.sheet-rolltemplate-swn-attack .sheet-rolls,.sheet-rolltemplate-swn-skill .sheet-rolls,.sheet-rolltemplate-swn-save .sheet-rolls{height:35px;display:flex;align-items:start}.sheet-rolltemplate-swn-default .sheet-rollname,.sheet-rolltemplate-swn-attack .sheet-rollname,.sheet-rolltemplate-swn-skill .sheet-rollname,.sheet-rolltemplate-swn-save .sheet-rollname{font-size:12px;line-height:1}.sheet-rolltemplate-swn-default a,.sheet-rolltemplate-swn-attack a,.sheet-rolltemplate-swn-skill a,.sheet-rolltemplate-swn-save a{color:inherit}.sheet-rolltemplate-swn-default a:hover,.sheet-rolltemplate-swn-attack a:hover,.sheet-rolltemplate-swn-skill a:hover,.sheet-rolltemplate-swn-save a:hover{color:red}.sheet-rolltemplate-swn-default a[href^="~"],.sheet-rolltemplate-swn-attack a[href^="~"],.sheet-rolltemplate-swn-skill a[href^="~"],.sheet-rolltemplate-swn-save a[href^="~"]{padding:0;background:transparent;border:none;line-height:1.4}.sheet-rolltemplate-swn-default .sheet-container{background:url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-top-black.png") top no-repeat,url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-bottom.png") bottom no-repeat,#0f0f0f}.sheet-rolltemplate-swn-default .sheet-name{color:#bababa}.sheet-rolltemplate-swn-default .sheet-rollname{margin-right:auto}.sheet-rolltemplate-swn-default .sheet-desc,.sheet-rolltemplate-swn-default .sheet-buttons{font-size:12px;line-height:1.4}.sheet-rolltemplate-swn-default .sheet-info{font-style:italic;font-size:10px;line-height:1;margin:-10px 0 5px}.sheet-rolltemplate-swn-default .sheet-info .inlinerollresult{font-size:1em;font-weight:normal}.sheet-rolltemplate-swn-attack .sheet-container{background:url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-top-purple.png") top no-repeat,url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-bottom.png") bottom no-repeat,#0f0f0f}.sheet-rolltemplate-swn-attack .sheet-name{color:#b291ec}.sheet-rolltemplate-swn-attack .sheet-title .inlinerollresult{font-size:1em;pointer-events:none}.sheet-rolltemplate-swn-attack .sheet-damage{margin-left:auto}.sheet-rolltemplate-swn-attack .sheet-roll{margin-left:10px}.sheet-rolltemplate-swn-attack .sheet-rolls:not(:first-of-type){margin-top:5px}.sheet-rolltemplate-swn-attack .sheet-shock{font-style:italic;margin-top:4px;font-size:12px}.sheet-rolltemplate-swn-attack .sheet-info{font-style:italic;font-size:10px}.sheet-rolltemplate-swn-attack .sheet-info>span:first-child{margin-right:10px}.sheet-rolltemplate-swn-attack .sheet-info .inlinerollresult{font-weight:normal;font-size:1em;margin-left:2px}.sheet-rolltemplate-swn-attack .sheet-desc{font-size:12px;line-height:1.4}.sheet-rolltemplate-swn-skill .sheet-container{background:url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-top-blue.png") top no-repeat,url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-bottom.png") bottom no-repeat,#0f0f0f}.sheet-rolltemplate-swn-skill .sheet-name{color:#80b0ff}.sheet-rolltemplate-swn-skill .sheet-title .sheet-italic{font-style:italic}.sheet-rolltemplate-swn-skill .sheet-title .inlinerollresult{font-size:1em;pointer-events:none}.sheet-rolltemplate-swn-skill .sheet-rollname{margin-right:auto}.sheet-rolltemplate-swn-save .sheet-container.sheet-success{background:url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-top-green.png") top no-repeat,url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-bottom.png") bottom no-repeat,#0f0f0f}.sheet-rolltemplate-swn-save .sheet-container.sheet-success .sheet-name{color:#83db53}.sheet-rolltemplate-swn-save .sheet-container.sheet-failure{background:url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-top-red.png") top no-repeat,url("https://raw.githubusercontent.com/roll20/roll20-character-sheets/master/Stars_Without_Number_Revised/Assets/rt-bottom.png") bottom no-repeat,#0f0f0f}.sheet-rolltemplate-swn-save .sheet-container.sheet-failure .sheet-name{color:#ff8080}.sheet-rolltemplate-swn-save .sheet-vs{margin:0 10px}.sheet-rolltemplate-swn-save .sheet-rollname{margin-right:auto}
diff --git a/Stars_Without_Number_Revised/Stars_Without_Number_Revised.html b/Stars_Without_Number_Revised/Stars_Without_Number_Revised.html
index 768b39fdcf..a26aba4139 100644
--- a/Stars_Without_Number_Revised/Stars_Without_Number_Revised.html
+++ b/Stars_Without_Number_Revised/Stars_Without_Number_Revised.html
@@ -1,8 +1,8 @@
-
{{#reaction}}
{{#rollLess() reaction 3}} {{/rollLess() reaction 3}} {{#rollBetween() reaction 3 5}} {{/rollBetween() reaction 3 5}} {{#rollBetween() reaction 6 8}} {{/rollBetween() reaction 6 8}} {{#rollBetween() reaction 9 11}} {{/rollBetween() reaction 9 11}} {{#rollGreater() reaction 11}} {{/rollGreater() reaction 11}}
{{reaction}}
{{/reaction}} {{#info}}
{{info}}
{{/info}} {{#rollGreater() damage 0}}
{{/rollGreater() damage 0}} {{#allprops() charname title damage reaction desc info buttons}}
{{/allprops() charname title damage reaction desc info buttons}}
{{desc}}
{{buttons}}
{{#attack2}}
{{/attack2}}{{#attack3}}
{{/attack3}}{{#attack4}}
{{/attack4}} {{#attack5}}
{{/attack5}} {{#attack6}}
{{/attack6}} {{#attack7}}
{{/attack7}} {{#attack8}}
{{/attack8}} {{#shock}}
{{shock}}
{{/shock}}
{{#range}} {{range}} {{/range}}{{#ammo}} {{ammo}} {{/ammo}}
{{desc}}
{{#save}} {{#^rollLess() dice save}}
{{dice}}
{{save}}{{morale}}
{{/^rollLess() dice save}} {{#rollLess() dice save}}
{{dice}}
{{save}}{{morale}}
{{/rollLess() dice save}} {{/save}} {{#morale}} {{#^rollGreater() dice morale}}
{{dice}}
{{save}}{{morale}}
{{/^rollGreater() dice morale}} {{#rollGreater() dice morale}}
{{dice}}
{{save}}{{morale}}
{{/rollGreater() dice morale}} {{/morale}}
\ No newline at end of file
+ "use strict";const sheetName="Stars Without Number (revised)",sheetVersion="2.5.2",translate=getTranslationByKey,attributes=["strength","dexterity","constitution","intelligence","wisdom","charisma"],effortAttributes=["wisdom_mod","constitution_mod","psionics_extra_effort","skill_biopsionics","skill_precognition","skill_telepathy","skill_teleportation","skill_telekinesis","skill_metapsionics","psionics_committed_effort_current","psionics_committed_effort_scene","psionics_committed_effort_day"],shipStatEvent=[...["hardpoints","power","mass"].map(e=>`change:repeating_ship-weapons:weapon_${e}`),...["power","mass"].map(e=>`change:repeating_ship-defenses:defense_${e}`),...["power","mass"].map(e=>`change:repeating_ship-fittings:fitting_${e}`),"change:ship_power","change:ship_mass","change:ship_hardpoints","remove:repeating_ship-weapons","remove:repeating_ship-defenses","remove:repeating_ship-fittings"].join(" "),weaponSkills=["skill_exert","skill_punch","skill_shoot","skill_stab","skill_combat_energy","skill_combat_gunnery","skill_combat_primitive","skill_combat_projectile","skill_combat_psitech","skill_combat_unarmed","skill_telekinesis"],weaponDisplayEvent=[...["attack","name","skill_bonus","attribute_mod","damage","shock","shock_damage","shock_ac","skill_to_damage"].map(e=>`change:repeating_weapons:weapon_${e}`),"remove:repeating_weapons","change:attack_bonus",...weaponSkills.map(e=>`change:${e}`)].join(" "),skills={revised:["administer","connect","exert","fix","heal","know","lead","notice","perform","pilot","program","punch","shoot","sneak","stab","survive","talk","trade","work"],first:["artist","athletics","bureaucracy","business","combat_energy","combat_gunnery","combat_primitive","combat_projectile","combat_psitech","combat_unarmed","computer","culture_alien","culture_criminal","culture_spacer","culture_traveller","culture_one","culture_two","culture_three","exosuit","gambling","history","instructor","language","leadership","navigation","perception","persuade","profession","religion","science","security","stealth","steward","survival","tactics","tech_astronautic","tech_maltech","tech_medical","tech_postech","tech_pretech","tech_psitech","vehicle_air","vehicle_grav","vehicle_land","vehicle_space","vehicle_water"],psionic:["biopsionics","metapsionics","precognition","telekinesis","telepathy","teleportation"],magic:["know_magic","use_magic","sunblade"],wwn:["administer","connect","convince","craft","exert","heal","know","lead","magic","notice","perform","pray","punch","ride","sail","shoot","sneak","stab","survive","trade","work"]},shipStats=["ship_ac","ship_armor","ship_class","ship_crew_max","ship_crew_min","ship_hardpoints_max","ship_hp","ship_hp_max","ship_mass_max","ship_power_max","ship_speed","ship_hull_price"],reverseHullTypes={[translate("BATTLESHIP").toLowerCase()]:"battleship",[translate("BULK_FREIGHTER").toLowerCase()]:"bulk_freighter",[translate("CARRIER").toLowerCase()]:"carrier",[translate("CORVETTE").toLowerCase()]:"corvette",[translate("FLEET_CRUISER").toLowerCase()]:"fleet_cruiser",[translate("FREE_MERCHANT").toLowerCase()]:"free_merchant",[translate("HEAVY_FRIGATE").toLowerCase()]:"heavy_frigate",[translate("LARGE_STATION").toLowerCase()]:"large_station",[translate("PATROL_BOAT").toLowerCase()]:"patrol_boat",[translate("SMALL_STATION").toLowerCase()]:"small station",[translate("STRIKE_FIGHTER").toLowerCase()]:"strike_fighter",[translate("SHUTTLE").toLowerCase()]:"shuttle"},reverseClasses={[translate("ADVENTURER").toLowerCase()]:"adventurer",[translate("EXPERT").toLowerCase()]:"expert",[translate("PSYCHIC").toLowerCase()]:"psychic",[translate("WARRIOR").toLowerCase()]:"warrior"},autofillSections=["armor","cyberware","foci","gear","ship-defenses","ship-fittings","ship-weapons","techniques","weapons"],autofillData={classes:{adventurer:{class_ability:translate("ADVENTURER_CLASS_ABILITY")},expert:{class_ability:translate("EXPERT_CLASS_ABILITY")},psychic:{class_ability:translate("PSYCHIC_CLASS_ABILITY")},warrior:{attack_bonus:"1",class_ability:translate("WARRIOR_CLASS_ABILITY")}},drones:{alecto:{drone_AC:"18",drone_enc:"4",drone_HP:"30",drone_num_fittings:"4",drone_range:"5000 km",drone_price:"50000"},cuttlefish:{drone_AC:"13",drone_enc:"2",drone_HP:"10",drone_num_fittings:"5",drone_range:"1 km",drone_price:"2000"},ghostwalker:{drone_AC:"15",drone_enc:"3",drone_fitting_1_desc:translate("SENSOR_TRANSPARENCY_DESC"),drone_fitting_1_name:translate("SENSOR_TRANSPARENCY"),drone_HP:"1",drone_num_fittings:"3",drone_range:"5 km",drone_price:"3000"},pax:{drone_AC:"16",drone_enc:"4",drone_HP:"20",drone_num_fittings:"4",drone_range:"100 km",drone_price:"10000"},primitve_drone:{drone_AC:"12",drone_enc:"2",drone_HP:"1",drone_num_fittings:"1",drone_range:"500 m",drone_price:"250"},sleeper:{drone_AC:"12",drone_enc:"2",drone_fitting_1_desc:translate("STATIONKEEPING_DESC"),drone_fitting_1_name:translate("STATIONKEEPING"),drone_HP:"8",drone_num_fittings:"5",drone_range:"100 km",drone_price:"2500"},stalker:{drone_AC:"13",drone_enc:"2",drone_HP:"5",drone_num_fittings:"3",drone_range:"2 km",drone_price:"1000"},void_hawk:{drone_AC:"14",drone_enc:"6",drone_HP:"15",drone_num_fittings:"4",drone_range:"100 km",drone_price:"5000"}},droneFittings:["ammo_unit","bomber","environmental_power","expert_system","extended_flight","grav_muffles","heavy_lift","holoskin","medical_support","observation_suite","racing_gravitics","reinforced_structure","sensor_transparency","stationkeeping","suicide_charge","weapon_fitting"],hulltypes:{battleship:{ship_ac:"16",ship_armor:"20",ship_class:translate("CAPITAL"),ship_crew_max:"1000",ship_crew_min:"200",ship_hardpoints_max:"15",ship_hp:"100",ship_mass_max:"50",ship_power_max:"75",ship_speed:"0",ship_hull_price:"50000000"},bulk_freighter:{ship_ac:"11",ship_armor:"0",ship_class:translate("CRUISER"),ship_crew_max:"40",ship_crew_min:"10",ship_hardpoints_max:"2",ship_hp:"40",ship_mass_max:"25",ship_power_max:"15",ship_speed:"0",ship_hull_price:"5000000"},carrier:{ship_ac:"14",ship_armor:"10",ship_class:translate("CAPITAL"),ship_crew_max:"1500",ship_crew_min:"300",ship_hardpoints_max:"4",ship_hp:"75",ship_mass_max:"100",ship_power_max:"50",ship_speed:"0",ship_hull_price:"60000000"},corvette:{ship_ac:"13",ship_armor:"10",ship_class:translate("FRIGATE"),ship_crew_max:"40",ship_crew_min:"10",ship_hardpoints_max:"6",ship_hp:"40",ship_mass_max:"15",ship_power_max:"15",ship_speed:"2",ship_hull_price:"4000000"},fleet_cruiser:{ship_ac:"14",ship_armor:"15",ship_class:translate("CRUISER"),ship_crew_max:"200",ship_crew_min:"50",ship_hardpoints_max:"10",ship_hp:"60",ship_mass_max:"30",ship_power_max:"50",ship_speed:"1",ship_hull_price:"10000000"},free_merchant:{ship_ac:"14",ship_armor:"2",ship_class:translate("FRIGATE"),ship_crew_max:"6",ship_crew_min:"1",ship_hardpoints_max:"2",ship_hp:"20",ship_mass_max:"15",ship_power_max:"10",ship_speed:"3",ship_hull_price:"500000"},heavy_frigate:{ship_ac:"15",ship_armor:"10",ship_class:translate("FRIGATE"),ship_crew_max:"120",ship_crew_min:"30",ship_hardpoints_max:"8",ship_hp:"50",ship_mass_max:"20",ship_power_max:"25",ship_speed:"1",ship_hull_price:"7000000"},large_station:{ship_ac:"17",ship_armor:"20",ship_class:translate("CAPITAL"),ship_crew_max:"1000",ship_crew_min:"100",ship_hardpoints_max:"30",ship_hp:"120",ship_mass_max:"75",ship_power_max:"125",ship_speed:"",ship_hull_price:"40000000"},patrol_boat:{ship_ac:"14",ship_armor:"5",ship_class:translate("FRIGATE"),ship_crew_max:"20",ship_crew_min:"5",ship_hardpoints_max:"4",ship_hp:"25",ship_mass_max:"10",ship_power_max:"15",ship_speed:"4",ship_hull_price:"2500000"},small_station:{ship_ac:"11",ship_armor:"5",ship_class:translate("CRUISER"),ship_crew_max:"200",ship_crew_min:"20",ship_hardpoints_max:"10",ship_hp:"120",ship_mass_max:"40",ship_power_max:"50",ship_speed:"",ship_hull_price:"5000000"},strike_fighter:{ship_ac:"16",ship_armor:"5",ship_class:translate("FIGHTER"),ship_crew_max:"1",ship_crew_min:"1",ship_hardpoints_max:"1",ship_hp:"8",ship_mass_max:"2",ship_power_max:"5",ship_speed:"5",ship_hull_price:"200000"},shuttle:{ship_ac:"11",ship_armor:"0",ship_class:translate("FIGHTER"),ship_crew_max:"10",ship_crew_min:"1",ship_hardpoints_max:"1",ship_hp:"15",ship_mass_max:"5",ship_power_max:"3",ship_speed:"3",ship_hull_price:"200000"}},statblocks:{barbarian_hero:["6","16","8","Weapon+3","1","10m","11","3","12","PRIMITIVE"],barbarian_tribal:["1","12","2","Weapon","1","10m","8","1","15","PRIMITIVE"],civilian_security_bot:["1","15","1","1d8[Stun]","1","10m","12","1","15"],companion_bot:["1","12","0","1d2[Unarmed]","1","10m","6","1","15"],elite_fighter:["3","16","4","Weapon+1","1","10m","10","2","14","COMBAT"],gang_boss:["3","14","4","Weapon+1","1","10m","9","2","15"],gang_member:["1","12","1","Weapon","1","10m","7","1","15"],geneengineered_killer:["4","16","5","Weapon+1","1","15m","10","2","13"],geneengineered_murder_beast:["10","18","10","1d10","4","20m","12","3","10"],greater_lone_predator:["5","16","6","1d10","2","10m","9","2","12"],heavy_warbot:["6","18","8","2d8[Plasma]","2","15m","10","2","12"],heroic_fighter:["6","16","8","Weapon+3","1","10m","11","3","12","COMBAT"],industrial_work_bot:["2","15","0","1d10[Crush]","1","5","8","1","14"],janitor_bot:["1","14","0","Unarmed","1","5m","8","1","15"],large_aggressive_prey_animal:["5","13","4","1d10","1","15m","8","1","12"],large_pack_hunter:["2","14","2","1d6","1","15m","9","1","14"],legendary_fighter:["10","20","12","Weapon+4","2","10m","12","5","10","POWERED"],lesser_lone_predator:["3","14","4","1d8","2","15m","8","2","14"],martial_human:["1","10","1","Weapon","1","10m","8","1","15"],military_elite:["3","16","4","Weapon+1","1","10m","10","2","14","COMBAT"],military_soldier:["1","16","1","Weapon","1","10m","9","1","15","COMBAT"],normal_human:["1","10","0","Unarmed","1","10m","6","1","15"],peaceful_human:["1","10","0","Unarmed","1","10m","6","1","15"],pirate_king:["7","18","9","Weapon+2","1","10m","11","3","12","POWERED"],police_officer:["1","14","1","Weapon","1","10m","8","1","15"],repair_bot:["1","14","0","1d6[Tool]","1","10m","8","1","15"],serial_killer:["6","12","8","Weapon+3","1","10m","12","3","12"],skilled_professional:["1","10","0","Weapon","1","10m","6","2","15"],small_pack_hunter:["1","13","1","1d4","1","15m","8","1","15"],small_vicious_beast:["1hp","14","1","1d2","1","10m","7","1","15"],soldier_bot:["2","16","1","Weapon","1","10m","10","1","14"],terrifying_apex_predator:["8","16","8","1d10","2","20m","9","2","11"],veteran_fighter:["2","14","2","Weapon+1","1","10m","9","1","14"],warrior_tyrant:["8","20","10","Weapon+3","1","10m","11","3","11","POWERED"]},armor:{armored_undersuit:{armor_ac:"13",armor_encumbrance:"0",armor_type:"STREET",armor_price:"600"},armored_vacc_suit:{armor_ac:"13",armor_encumbrance:"2",armor_type:"STREET",armor_price:"400"},assault_suit:{armor_ac:"18",armor_encumbrance:"2",armor_type:"POWERED",armor_price:"10000"},combat_field_uniform:{armor_ac:"16",armor_encumbrance:"1",armor_type:"COMBAT",armor_price:"1000"},cuirass_brigandine_linothorax_half_plate:{armor_ac:"15",armor_encumbrance:"1",armor_type:"PRIMITIVE",armor_price:"50"},deflector_array:{armor_ac:"18",armor_encumbrance:"0",armor_type:"STREET",armor_price:"30000"},executive_security_suit:{armor_ac:"15",armor_encumbrance:"0",armor_type:"ARTIFACT"},field_emitter_panoply:{armor_ac:"20",armor_encumbrance:"1",armor_encumbrance_bonus:"4",armor_type:"POWERED",armor_price:"40000"},force_pavis:{armor_ac:"15",armor_ac_bonus:"1",armor_encumbrance:"1",armor_type:"SHIELD",armor_price:"10000"},full_plate_layered_mail:{armor_ac:"17",armor_encumbrance:"2",armor_type:"PRIMITIVE",armor_price:"100"},ghost_mantle:{armor_ac:"15",armor_encumbrance:"0",armor_type:"ARTIFACT"},icarus_harness:{armor_ac:"16",armor_encumbrance:"1",armor_type:"COMBAT",armor_price:"8000"},leather_jacks_thick_hides_quilted_armor:{armor_ac:"13",armor_encumbrance:"1",armor_type:"PRIMITIVE",armor_price:"10"},polyplast_carapace:{armor_ac:"18",armor_encumbrance:"1",armor_type:"ARTIFACT"},psitech_combat_suit:{armor_ac:"16",armor_encumbrance:"0",armor_type:"ARTIFACT"},secure_clothing:{armor_ac:"13",armor_encumbrance:"1",armor_type:"STREET",armor_price:"300"},security_armor:{armor_ac:"14",armor_encumbrance:"1",armor_type:"COMBAT",armor_price:"700"},shield:{armor_ac:"13",armor_ac_bonus:"1",armor_encumbrance:"1",armor_type:"SHIELD",armor_price:"10"},storm_armor:{armor_ac:"19",armor_encumbrance:"2",armor_encumbrance_bonus:"4",armor_type:"POWERED",armor_price:"20000"},stutterjump_suit:{armor_ac:"18",armor_encumbrance:"0",armor_type:"ARTIFACT"},tempest_assault_array:{armor_ac:"20",armor_encumbrance:"1",armor_encumbrance_bonus:"4",armor_type:"ARTIFACT"},titan_powered_armor:{armor_ac:"21",armor_encumbrance:"2",armor_encumbrance_bonus:"4",armor_type:"ARTIFACT"},vestimentum:{armor_ac:"18",armor_encumbrance:"0",armor_type:"POWERED",armor_price:"15000"},warpaint:{armor_ac:"12",armor_encumbrance:"0",armor_type:"STREET",armor_price:"300"},woven_body_armor:{armor_ac:"15",armor_encumbrance:"2",armor_type:"COMBAT",armor_price:"400"}},cyberware:{adrenal_suppression_pump:{cyberware_strain:"1",cyberware_price:"30000"},bioadaptation_augments:{cyberware_strain:"1",cyberware_price:"10000"},body_arsenal_array:{cyberware_strain:"1",cyberware_price:"10000"},body_sculpting:{cyberware_strain:"1",cyberware_price:"10000"},dermal_armor:{cyberware_strain:"2",cyberware_price:"20000"},drone_control_link:{cyberware_strain:"1",cyberware_price:"20000"},eelskin_capacitor_mesh:{cyberware_strain:"1",cyberware_price:"25000"},gecko_anchors:{cyberware_strain:"1",cyberware_price:"15000"},ghost_talker_transceiver:{cyberware_strain:"1",cyberware_price:"15000"},holdout_cavity:{cyberware_strain:"1",cyberware_price:"10000"},holoskin_emitter:{cyberware_strain:"1",cyberware_price:"15000"},identity_submersion_trigger:{cyberware_strain:"1",cyberware_price:"25000"},immunofiltration_systems:{cyberware_strain:"2",cyberware_price:"25000"},induced_coma_trigger:{cyberware_strain:"1",cyberware_price:"20000"},neurointruder_alert:{cyberware_strain:"1",cyberware_price:"50000"},panspectral_optics:{cyberware_strain:"1",cyberware_price:"15000"},pressure_sheathing:{cyberware_strain:"1",cyberware_price:"15000"},prosthetic_limb:{cyberware_strain:"1",cyberware_price:"2500"},revenant_wiring:{cyberware_strain:"3",cyberware_price:"50000"},slowtime_window:{cyberware_strain:"2",cyberware_price:"30000"},stabilization_overrides:{cyberware_strain:"2",cyberware_price:"25000"},tagger_nanites:{cyberware_strain:"1",cyberware_price:"15000"},toxin_injector:{cyberware_strain:"2",cyberware_price:"20000"},twitchlock_actuators:{cyberware_strain:"2",cyberware_price:"30000"}},foci:{alert:{},armsman:{},assassin:{},authority:{},close_combatant:{},connected:{},die_hard:{},diplomat:{},gunslinger:{},hacker:{},healer:{},henchkeeper:{},ironhide:{},psychic_training:{},savage_fray:{},shocking_assault:{},sniper:{},specialist:{},star_captain:{},starfarer:{},tinker:{},unarmed_combatant:{},unique_gift:{},wanderer:{},wild_psychic_talent:{}},gear:{ai_companion:{gear_encumbrance:"0"},ammo_20_rounds:{gear_encumbrance:"1#",gear_price:"10"},ammo_missile:{gear_encumbrance:"1",gear_price:"50"},atmofilter:{gear_encumbrance:"1",gear_price:"100"},backpack:{gear_encumbrance:"1",gear_price:"5/50"},bezoar:{gear_encumbrance:"0",gear_price:"200"},binoculars:{gear_encumbrance:"1",gear_price:"20/200"},bioscanner:{gear_encumbrance:"1",gear_price:"300"},black_slab:{gear_encumbrance:"1",gear_price:"10000"},brainwave:{gear_encumbrance:"0",gear_price:"1000"},climbing_harness:{gear_encumbrance:"1",gear_price:"50"},comm_server:{gear_encumbrance:"3",gear_price:"1000"},compad:{gear_encumbrance:"0",gear_price:"100"},data_phase_tab:{gear_encumbrance:"1",gear_price:"5000"},data_protocol:{gear_encumbrance:"0",gear_price:"1000"},dataslab:{gear_encumbrance:"1",gear_price:"300"},field_radio:{gear_encumbrance:"1",gear_price:"200"},glowbug:{gear_encumbrance:"0",gear_price:"5"},grapnel_launcher:{gear_encumbrance:"1",gear_price:"200"},grav_chute:{gear_encumbrance:"1",gear_price:"300/1000"},grav_harness:{gear_encumbrance:"3",gear_price:"5000"},hush:{gear_encumbrance:"0",gear_price:"200"},instapanel:{gear_encumbrance:"1#",gear_price:"50"},integrity_stims:{gear_encumbrance:"0"},juggernaut_stims:{gear_encumbrance:"0"},lazarus_patch:{gear_encumbrance:"1#",gear_price:"30"},lift:{gear_encumbrance:"0",gear_price:"50"},line_shunt:{gear_encumbrance:"0",gear_price:"100"},low_light_goggles:{gear_encumbrance:"1",gear_price:"200"},medkit:{gear_encumbrance:"2",gear_price:"100"},metatool:{gear_encumbrance:"1",gear_price:"200"},micropurgator_stims:{gear_encumbrance:"0"},mindwall_helmet:{gear_encumbrance:"0"},navcomp:{gear_encumbrance:"1",gear_price:"500"},polymorphic_nanites:{gear_encumbrance:"1"},portabox:{gear_encumbrance:"1",gear_price:"50"},pseudonuke:{gear_encumbrance:"1"},power_cell_type_a:{gear_encumbrance:"1#",gear_price:"10"},power_cell_type_b:{gear_encumbrance:"1",gear_price:"100"},pressure_tent:{gear_encumbrance:"4",gear_price:"100"},pretech_cosmetic:{gear_encumbrance:"0",gear_price:"1000"},psych:{gear_encumbrance:"0",gear_price:"25"},rations_1_day:{gear_encumbrance:"1#",gear_price:"5"},redivivus_sheath:{gear_encumbrance:"1"},remote_link_unit:{gear_encumbrance:"1",gear_price:"250"},reverie:{gear_encumbrance:"0",gear_price:"100"},rope_20_meters:{gear_encumbrance:"2/1",gear_price:"4/40"},scout_report:{gear_encumbrance:"0",gear_price:"200"},solar_recharger:{gear_encumbrance:"3",gear_price:"500"},spare_parts:{gear_encumbrance:"1#",gear_price:"50"},squeal:{gear_encumbrance:"0",gear_price:"300"},stiletto_charge:{gear_encumbrance:"1",gear_price:"Priceless"},storage_unit:{gear_encumbrance:"3",gear_price:"500"},survey_scanner:{gear_encumbrance:"1",gear_price:"250"},survival_kit:{gear_encumbrance:"1",gear_price:"60"},system_reset_inductor:{gear_encumbrance:"0"},tailored_antiallergens:{gear_encumbrance:"0",gear_price:"5"},telekinetic_generator:{gear_encumbrance:"2",gear_price:"250"},telescoping_pole:{gear_encumbrance:"0",gear_price:"10"},thermal_flare:{gear_encumbrance:"0",gear_price:"5"},tightbeam_link_unit:{gear_encumbrance:"1",gear_price:"1000"},toolkit_postech:{gear_encumbrance:"3",gear_price:"300"},toolkit_pretech:{gear_encumbrance:"1",gear_price:"1000"},trade_goods:{gear_encumbrance:"1#",gear_price:"50"},trade_metals:{gear_encumbrance:"1#",gear_price:"10"},translator_torc:{gear_encumbrance:"0",gear_price:"200"},tsunami:{gear_encumbrance:"0",gear_price:"50"},vacc_fresher:{gear_encumbrance:"1",gear_price:"400"},vacc_skin:{gear_encumbrance:"1",gear_price:"1000"},vacc_suit:{gear_encumbrance:"2",gear_price:"100"},wideawake_serum:{gear_encumbrance:"0"}},"ship-defenses":{ablative_hull_compartments:{class:"CAPITAL",defense_effect:`+1 ${translate("AC")}, +20 ${translate("MAXIMUM_HIT_POINTS").toLowerCase()}.`,defense_mass:"2#",defense_power:"5",defense_price:"100000*"},augmented_plating:{class:"FIGHTER",defense_effect:`+2 ${translate("AC")}, -1 ${translate("SPEED")}.`,defense_mass:"1#",defense_power:"0",defense_price:"25000*"},boarding_countermeasures:{class:"FRIGATE",defense_effect:translate("BOARDING_COUNTERMEASURES_DESC"),defense_mass:"1#",defense_power:"2",defense_price:"25000*"},burst_ecm_generator:{class:"FRIGATE",defense_effect:translate("BURST_ECM_GENERATOR_DESC"),defense_mass:"1#",defense_power:"2",defense_price:"25000*"},foxer_drones:{class:"CRUISER",defense_effect:translate("FOXER_DRONES_DESC"),defense_mass:"1#",defense_power:"2",defense_price:"10000*"},grav_eddy_displacer:{class:"FRIGATE",defense_effect:translate("GRAV_EDDY_DISPLACER_DESC"),defense_mass:"2#",defense_power:"5",defense_price:"50000*"},hardened_polyceramic_overlay:{class:"FIGHTER",defense_effect:translate("HARDENED_POLYCERAMIC_OVERLAY_DESC"),defense_mass:"1#",defense_power:"0",defense_price:"25000*"},planetary_defense_array:{class:"FRIGATE",defense_effect:translate("PLANETARY_DEFENSE_ARRAY_DESC"),defense_mass:"2#",defense_power:"4",defense_price:"50000*"},point_defense_lasers:{class:"FRIGATE",defense_effect:translate("POINT_DEFENSE_LASERS_DESC"),defense_mass:"2#",defense_power:"3",defense_price:"10000*"}},"ship-fittings":{advanced_lab:{class:"FRIGATE",fitting_mass:"2",fitting_power:"1#",fitting_price:"10000*"},advanced_nav_computer:{class:"FRIGATE",fitting_mass:"0",fitting_power:"1#",fitting_price:"10000*"},amphibious_operation:{class:"FIGHTER",fitting_mass:"1#",fitting_power:"1",fitting_price:"25000*"},armory:{class:"FRIGATE",fitting_mass:"0",fitting_power:"0",fitting_price:"10000*"},atmospheric_configuration:{class:"FIGHTER",fitting_mass:"1#",fitting_power:"0",fitting_price:"5000*"},auto_targeting_system:{class:"FIGHTER",fitting_mass:"0",fitting_power:"1",fitting_price:"50000"},automation_support:{class:"FIGHTER",fitting_mass:"1",fitting_power:"2",fitting_price:"10000*"},boarding_tubes:{class:"FRIGATE",fitting_mass:"1",fitting_power:"0",fitting_price:"5000*"},cargo_lighter:{class:"FRIGATE",fitting_mass:"2",fitting_power:"0",fitting_price:"25000"},cargo_space:{class:"FIGHTER",fitting_mass:"1",fitting_power:"0",fitting_price:""},cold_sleep_pods:{class:"FRIGATE",fitting_mass:"1",fitting_power:"1",fitting_price:"5000*"},colony_core:{class:"FRIGATE",fitting_mass:"2#",fitting_power:"4",fitting_price:"100000*"},drill_course_regulator:{class:"FRIGATE",fitting_mass:"1",fitting_power:"1#",fitting_price:"25000*"},spike_drive_2:{class:"FIGHTER",fitting_mass:"1#",fitting_power:"1#",fitting_price:"10000*"},spike_drive_3:{class:"FIGHTER",fitting_mass:"2#",fitting_power:"2#",fitting_price:"20000*"},spike_drive_4:{class:"FRIGATE",fitting_mass:"3#",fitting_power:"2#",fitting_price:"40000*"},spike_drive_5:{class:"FRIGATE",fitting_mass:"3#",fitting_power:"3#",fitting_price:"100000*"},spike_drive_6:{class:"CRUISER",fitting_mass:"4#",fitting_power:"3#",fitting_price:"500000*"},drop_pod:{class:"FRIGATE",fitting_mass:"2",fitting_power:"0",fitting_price:"300000"},emissions_dampers:{class:"FIGHTER",fitting_mass:"1#",fitting_power:"1#",fitting_price:"25000*"},exodus_bay:{class:"CRUISER",fitting_mass:"2#",fitting_power:"1#",fitting_price:"50000*"},extended_life_support:{class:"FIGHTER",fitting_mass:"1#",fitting_power:"1#",fitting_price:"5000*"},extended_medbay:{class:"FRIGATE",fitting_mass:"1",fitting_power:"1",fitting_price:"5000*"},extended_store:{class:"FIGHTER",fitting_mass:"1#",fitting_power:"0",fitting_price:"2500*"},fuel_bunkers:{class:"FIGHTER",fitting_mass:"1",fitting_power:"0",fitting_price:"2500*"},fuel_scoops:{class:"FRIGATE",fitting_mass:"1#",fitting_power:"2",fitting_price:"5000*"},hydroponic_production:{class:"CRUISER",fitting_mass:"2#",fitting_power:"1#",fitting_price:"10000*"},lifeboats:{class:"FRIGATE",fitting_mass:"1",fitting_power:"0",fitting_price:"2500*"},luxury_cabins:{class:"FRIGATE",fitting_mass:"1#",fitting_power:"1",fitting_price:"10000*"},mobile_extractor:{class:"FRIGATE",fitting_mass:"1",fitting_power:"2",fitting_price:"50000"},mobile_factory:{class:"CRUISER",fitting_mass:"2#",fitting_power:"3",fitting_price:"50000*"},precognitive_nav_chamber:{class:"FRIGATE",fitting_mass:"0",fitting_power:"1",fitting_price:"100000*"},psionic_anchorpoint:{class:"FRIGATE",fitting_mass:"0",fitting_power:"3",fitting_price:"Special"},sensor_mask:{class:"FRIGATE",fitting_mass:"0",fitting_power:"1#",fitting_price:"10000*"},ship_bay_fighter:{class:"CRUISER",fitting_mass:"2",fitting_power:"0",fitting_price:"200000"},ship_bay_frigate:{class:"CAPITAL",fitting_mass:"4",fitting_power:"1",fitting_price:"1000000"},ships_locker:{class:"FRIGATE",fitting_mass:"0",fitting_power:"0",fitting_price:"2000*"},shiptender_mount:{class:"FRIGATE",fitting_mass:"1",fitting_power:"1",fitting_price:"25000*"},smugglers_hold:{class:"FIGHTER",fitting_mass:"1",fitting_power:"0",fitting_price:"2500*"},survey_sensor_array:{class:"FRIGATE",fitting_mass:"1",fitting_power:"2",fitting_price:"5000*"},system_drive:{class:"FIGHTER",fitting_mass:"-2#",fitting_power:"-1#",fitting_price:"Special"},teleportation_pads:{class:"FRIGATE",fitting_mass:"1",fitting_power:"1",fitting_price:"Special"},tractor_beams:{class:"FRIGATE",fitting_mass:"1",fitting_power:"2",fitting_price:"10000*"},vehicle_transport_fittings:{class:"FRIGATE",fitting_mass:"1#",fitting_power:"0",fitting_price:"2500*"},workshop:{class:"FRIGATE",fitting_mass:"0.5#",fitting_power:"1",fitting_price:"500*"}},"ship-weapons":{charged_particle_caster:{class:"FRIGATE",weapon_damage:"3d6",weapon_hardpoints:"2",weapon_mass:"1",weapon_power:"10",weapon_price:"800000",weapon_qualities:`${translate("AP")} 15, ${translate("CLUMSY")}`},flak_emitter_battery:{class:"FRIGATE",weapon_damage:"2d6",weapon_hardpoints:"1",weapon_mass:"3",weapon_power:"5",weapon_price:"500000",weapon_qualities:`${translate("AP")} 10, ${translate("FLAK")}`},fractal_impact_charge:{weapon_ammo:"4",weapon_ammo_price:"500",class:"FIGHTER",weapon_damage:"2d6",weapon_hardpoints:"1",weapon_mass:"1",weapon_power:"5",weapon_price:"200000",weapon_qualities:`${translate("AP")} 15`},gravcannon:{class:"CRUISER",weapon_damage:"4d6",weapon_hardpoints:"3",weapon_mass:"4",weapon_power:"15",weapon_price:"2000000",weapon_qualities:`${translate("AP")} 20`},lightning_charge_mantle:{class:"CAPITAL",weapon_damage:"1d20",weapon_hardpoints:"2",weapon_mass:"5",weapon_power:"15",weapon_price:"4000000",weapon_qualities:`${translate("AP")} 5, ${translate("CLOUD")}`},mag_spike_array:{weapon_ammo:"5",weapon_ammo_price:"5000",class:"FRIGATE",weapon_damage:"2d6+2",weapon_hardpoints:"2",weapon_mass:"2",weapon_power:"5",weapon_price:"1000000",weapon_qualities:`${translate("AP")} 10, ${translate("FLAK")}`},mass_cannon:{weapon_ammo:"4",weapon_ammo_price:"50000",class:"CAPITAL",weapon_damage:"2d20",weapon_hardpoints:"4",weapon_mass:"5",weapon_power:"10",weapon_price:"5000000",weapon_qualities:`${translate("AP")} 20`},multifocal_laser:{class:"FIGHTER",weapon_damage:"1d4",weapon_hardpoints:"1",weapon_mass:"1",weapon_power:"5",weapon_price:"100000",weapon_qualities:`${translate("AP")} 20`},nuclear_missiles:{weapon_ammo:"5",weapon_ammo_price:"5000",class:"FRIGATE",weapon_damage:"",weapon_hardpoints:"2",weapon_mass:"1",weapon_power:"5",weapon_price:"50000",weapon_qualities:""},plasma_beam:{class:"FRIGATE",weapon_damage:"3d6",weapon_hardpoints:"2",weapon_mass:"2",weapon_power:"5",weapon_price:"700000",weapon_qualities:`${translate("AP")} 10`},polyspectral_mes_beam:{class:"FIGHTER",weapon_damage:"2d4",weapon_hardpoints:"1",weapon_mass:"1",weapon_power:"5",weapon_price:"2000000",weapon_qualities:`${translate("AP")} 25`},reaper_battery:{class:"FIGHTER",weapon_damage:"3d4",weapon_hardpoints:"1",weapon_mass:"1",weapon_power:"4",weapon_price:"100000",weapon_qualities:translate("CLUMSY")},sandthrower:{class:"FIGHTER",weapon_damage:"2d4",weapon_hardpoints:"1",weapon_mass:"1",weapon_power:"3",weapon_price:"50000",weapon_qualities:translate("FLAK")},singularity_gun:{class:"CAPITAL",weapon_damage:"5d20",weapon_hardpoints:"5",weapon_mass:"10",weapon_power:"25",weapon_price:"20000000",weapon_qualities:`${translate("AP")} 25`},smart_cloud:{class:"CRUISER",weapon_damage:"3d10",weapon_hardpoints:"2",weapon_mass:"5",weapon_power:"10",weapon_price:"2000000",weapon_qualities:`${translate("CLOUD")}, ${translate("CLUMSY")}`},spike_inversion_projector:{class:"CRUISER",weapon_damage:"3d8",weapon_hardpoints:"3",weapon_mass:"3",weapon_power:"10",weapon_price:"2500000",weapon_qualities:`${translate("AP")} 15`},spinal_beam_cannon:{class:"CRUISER",weapon_damage:"3d10",weapon_hardpoints:"3",weapon_mass:"5",weapon_power:"10",weapon_price:"1500000",weapon_qualities:`${translate("AP")} 15, ${translate("CLUMSY")}`},torpedo_launcher:{weapon_ammo:"4",weapon_ammo_price:"2500",class:"FRIGATE",weapon_damage:"3d8",weapon_hardpoints:"1",weapon_mass:"3",weapon_power:"10",weapon_price:"500000",weapon_qualities:`${translate("AP")} 20`},vortex_tunnel_inductor:{class:"CAPITAL",weapon_damage:"3d20",weapon_hardpoints:"4",weapon_mass:"10",weapon_power:"20",weapon_price:"5000000",weapon_qualities:`${translate("AP")} 20, ${translate("CLUMSY")}`}},techniques:{accelerated_succor:{level:"3",technique_discipline:translate("BIOPSIONICS")},alternate_outcome:{level:"2",technique_discipline:translate("PRECOGNITION")},anguished_vision:{level:"3",technique_discipline:translate("PRECOGNITION")},burdened_apportation:{level:"2",technique_discipline:translate("TELEPORTATION")},cloak_powers:{level:"1",technique_discipline:translate("METAPSIONICS")},concert_of_minds:{level:"3",technique_discipline:translate("METAPSIONICS")},cursed_luck:{level:"3",technique_discipline:translate("PRECOGNITION")},deep_intrusion:{level:"4",technique_discipline:translate("TELEPORTATION")},destinys_shield:{level:"2",technique_discipline:translate("PRECOGNITION")},effortless_apportation:{level:"3",technique_discipline:translate("TELEPORTATION")},facile_mind:{level:"1",technique_discipline:translate("TELEPATHY")},far_thought:{level:"2",technique_discipline:translate("TELEPATHY")},flawless_mastery:{level:"4",technique_discipline:translate("METAPSIONICS")},force_puppetry:{level:"4",technique_discipline:translate("TELEKINESIS")},forced_outcome:{level:"3",technique_discipline:translate("PRECOGNITION")},holistic_optimization_patterning:{level:"4",technique_discipline:translate("BIOPSIONICS")},impact_sump:{level:"2",technique_discipline:translate("TELEKINESIS")},impervious_pavis_of_will:{level:"4",technique_discipline:translate("METAPSIONICS")},intuitive_response:{level:"1",technique_discipline:translate("PRECOGNITION")},invincible_stand:{level:"2",technique_discipline:translate("BIOPSIONICS")},kinetic_transversal:{level:"1",technique_discipline:translate("TELEKINESIS")},major_organ_restoration:{level:"2",technique_discipline:translate("BIOPSIONICS")},mastered_succor:{level:"1",technique_discipline:translate("BIOPSIONICS")},memory_editing:{level:"4",technique_discipline:translate("TELEPATHY")},metadimensional_friction:{level:"3",technique_discipline:translate("METAPSIONICS")},metamorph:{level:"3",technique_discipline:translate("BIOPSIONICS")},mindtracing:{level:"1",technique_discipline:translate("METAPSIONICS")},neural_trap:{level:"2",technique_discipline:translate("METAPSIONICS")},not_my_time:{level:"4",technique_discipline:translate("PRECOGNITION")},offensive_apportation:{level:"4",technique_discipline:translate("TELEPORTATION")},oracle:{level:"0",technique_discipline:translate("PRECOGNITION")},organic_purification_protocols:{level:"1",technique_discipline:translate("BIOPSIONICS")},perceptive_dislocation:{level:"2",technique_discipline:translate("TELEPORTATION")},personal_apportation:{level:"0",technique_discipline:translate("TELEPORTATION")},pressure_field:{level:"1",technique_discipline:translate("TELEKINESIS")},proficient_apportation:{level:"1",technique_discipline:translate("TELEPORTATION")},prophecy:{level:"4",technique_discipline:translate("PRECOGNITION")},psychic_refinement:{level:"0",technique_discipline:translate("METAPSIONICS")},psychic_static:{level:"2",technique_discipline:translate("METAPSIONICS")},psychic_succor:{level:"0",technique_discipline:translate("BIOPSIONICS")},psychic_tutelage:{level:"3",technique_discipline:translate("METAPSIONICS")},quintessential_reconstruction:{level:"4",technique_discipline:translate("BIOPSIONICS")},reactive_telekinesis:{level:"3",technique_discipline:translate("TELEKINESIS")},reflex_response:{level:"3",technique_discipline:translate("TELEPATHY")},remote_repair:{level:"1",technique_discipline:translate("BIOPSIONICS")},rift_reduplication:{level:"3",technique_discipline:translate("TELEPORTATION")},sense_the_need:{level:"1",technique_discipline:translate("PRECOGNITION")},slip_field:{level:"2",technique_discipline:translate("TELEKINESIS")},spatial_awareness:{level:"1",technique_discipline:translate("TELEPORTATION")},spatial_synchrony_mandala:{level:"2",technique_discipline:translate("TELEPORTATION")},stutterjump:{level:"3",technique_discipline:translate("TELEPORTATION")},suppress_cognition:{level:"2",technique_discipline:translate("TELEPATHY")},surge_momentum:{level:"3",technique_discipline:translate("METAPSIONICS")},suspended_manifestation:{level:"2",technique_discipline:translate("METAPSIONICS")},synthetic_adaptation:{level:"1",technique_discipline:translate("METAPSIONICS")},tangible_force_construct:{level:"3",technique_discipline:translate("TELEKINESIS")},telekinetic_armory:{level:"1",technique_discipline:translate("TELEKINESIS")},telekinetic_expertise:{level:"2",technique_discipline:translate("TELEKINESIS")},telekinetic_flight:{level:"4",technique_discipline:translate("TELEKINESIS")},telekinetic_manipulation:{level:"0",technique_discipline:translate("TELEKINESIS")},telekinetic_ram:{level:"3",technique_discipline:translate("TELEKINESIS")},telepathic_assault:{level:"3",technique_discipline:translate("TELEPATHY")},telepathic_contact:{level:"0",technique_discipline:translate("TELEPATHY")},teratic_overload:{level:"3",technique_discipline:translate("BIOPSIONICS")},terminal_reflection:{level:"1",technique_discipline:translate("PRECOGNITION")},thermokinesis:{level:"2",technique_discipline:translate("TELEKINESIS")},tissue_integrity_field:{level:"2",technique_discipline:translate("BIOPSIONICS")},transmit_thought:{level:"1",technique_discipline:translate("TELEPATHY")},unity_of_thought:{level:"4",technique_discipline:translate("TELEPATHY")}},weapons:{advanced_bow:{weapon_ammo:"1",weapon_damage:"1d6",weapon_encumbrance:"2",weapon_range:"100/150",weapon_price:"50"},anti_vehicle_laser:{weapon_ammo:"15",weapon_damage:"3d10",weapon_range:"2000/4000",weapon_price:"10000"},combat_rifle:{weapon_ammo:"30",weapon_burst:!0,weapon_damage:"1d12",weapon_encumbrance:"2",weapon_range:"100/300",weapon_price:"300"},combat_shotgun:{weapon_ammo:"12",weapon_burst:!0,weapon_damage:"3d4",weapon_encumbrance:"2",weapon_range:"10/30",weapon_price:"300"},conversion_bow:{weapon_ammo:"1",weapon_damage:"1d8",weapon_encumbrance:"2",weapon_range:"150/300",weapon_price:"500"},crude_pistol:{weapon_ammo:"1",weapon_damage:"1d6",weapon_encumbrance:"1",weapon_range:"5/15",weapon_price:"20"},demo_charge:{weapon_damage:"3d10",weapon_encumbrance:"1",weapon_range:"20/40",weapon_price:"250"},distortion_cannon:{weapon_attack:"1",weapon_ammo:"6",weapon_damage:"2d12",weapon_encumbrance:"2",weapon_range:"100/300",weapon_price:"1250"},grenade:{weapon_damage:"2d6",weapon_encumbrance:"1",weapon_range:"10/30",weapon_price:"25"},heavy_machine_gun:{weapon_ammo:"10",weapon_damage:"3d6",weapon_encumbrance:"3",weapon_range:"500/2000",weapon_price:"5000"},hydra_array:{weapon_ammo:"10",weapon_damage:"3d6",weapon_range:"4000/8000",weapon_price:"20000"},large_advanced_weapon:{weapon_attribute_mod:"@{strength_mod}",weapon_damage:"1d10+1",weapon_encumbrance:"2",weapon_shock_ac:"15",weapon_shock_damage:"2",weapon_skill_bonus:"@{skill_stab}",weapon_price:"80"},large_primitive_weapon:{weapon_attribute_mod:"@{strength_mod}",weapon_damage:"1d8+1",weapon_encumbrance:"2",weapon_shock_ac:"15",weapon_shock_damage:"2",weapon_skill_bonus:"@{skill_stab}",weapon_price:"30"},laser_pistol:{weapon_attack:"1",weapon_ammo:"10",weapon_damage:"1d6",weapon_encumbrance:"1",weapon_range:"100/300",weapon_price:"200"},laser_rifle:{weapon_attack:"1",weapon_ammo:"20",weapon_burst:!0,weapon_damage:"1d10",weapon_encumbrance:"2",weapon_range:"300/500",weapon_price:"300"},mag_pistol:{weapon_ammo:"6",weapon_damage:"2d6+2",weapon_encumbrance:"1",weapon_range:"100/300",weapon_price:"400"},mag_rifle:{weapon_ammo:"10",weapon_damage:"2d8+2",weapon_encumbrance:"2",weapon_range:"300/600",weapon_price:"500"},medium_advanced_weapon:{weapon_attribute_mod:"@{str_dex_mod}",weapon_damage:"1d8+1",weapon_encumbrance:"1",weapon_shock_ac:"13",weapon_shock_damage:"2",weapon_skill_bonus:"@{skill_stab}",weapon_price:"60"},medium_primitive_weapon:{weapon_attribute_mod:"@{str_dex_mod}",weapon_damage:"1d6+1",weapon_encumbrance:"1",weapon_shock_ac:"13",weapon_shock_damage:"2",weapon_skill_bonus:"@{skill_stab}",weapon_price:"20"},musket:{weapon_ammo:"1",weapon_damage:"1d12",weapon_encumbrance:"2",weapon_range:"25/50",weapon_price:"30"},plasma_projector:{weapon_attack:"1",weapon_ammo:"6",weapon_damage:"2d8",weapon_encumbrance:"2",weapon_range:"50/100",weapon_price:"400"},primitive_bow:{weapon_ammo:"1",weapon_damage:"1d6",weapon_encumbrance:"2",weapon_range:"50/75",weapon_price:"15"},punch:{weapon_attribute_mod:"@{str_dex_mod}",weapon_damage:"1d2",weapon_skill_bonus:"@{skill_punch}"},railgun:{weapon_ammo:"20",weapon_damage:"3d8",weapon_range:"4000/8000",weapon_price:"8000"},revolver:{weapon_ammo:"6",weapon_damage:"1d8",weapon_encumbrance:"1",weapon_range:"30/100",weapon_price:"50"},rifle:{weapon_ammo:"6",weapon_damage:"1d10+2",weapon_encumbrance:"2",weapon_range:"200/400",weapon_price:"75"},rocket_launcher:{weapon_ammo:"1",weapon_damage:"3d10",weapon_encumbrance:"2",weapon_range:"2000/4000",weapon_price:"4000"},semi_auto_pistol:{weapon_ammo:"12",weapon_damage:"1d6+1",weapon_encumbrance:"1",weapon_range:"30/100",weapon_price:"75"},shear_rifle:{weapon_attack:"1",weapon_ammo:"10",weapon_burst:!0,weapon_damage:"2d8",weapon_encumbrance:"2",weapon_range:"100/300",weapon_price:"600"},shotgun:{weapon_ammo:"2",weapon_damage:"3d4",weapon_encumbrance:"2",weapon_range:"10/30",weapon_price:"50"},small_advanced_weapon:{weapon_attribute_mod:"@{str_dex_mod}",weapon_damage:"1d6",weapon_encumbrance:"1",weapon_shock_ac:"15",weapon_shock_damage:"1",weapon_skill_bonus:"@{skill_stab}",weapon_price:"40"},small_primitive_weapon:{weapon_attribute_mod:"@{str_dex_mod}",weapon_damage:"1d4",weapon_encumbrance:"1",weapon_shock_ac:"15",weapon_shock_damage:"1",weapon_skill_bonus:"@{skill_stab}"},sniper_rifle:{weapon_ammo:"1",weapon_damage:"2d8",weapon_encumbrance:"2",weapon_range:"1000/2000",weapon_price:"400"},spike_thrower:{weapon_ammo:"15",weapon_burst:!0,weapon_damage:"3d8",weapon_encumbrance:"2",weapon_range:"20/40",weapon_price:"600"},stun_baton:{weapon_attribute_mod:"@{str_dex_mod}",weapon_damage:"1d8",weapon_encumbrance:"1",weapon_shock_ac:"15",weapon_shock_damage:"1",weapon_skill_bonus:"@{skill_stab}",weapon_price:"75"},submachine_gun:{weapon_ammo:"20",weapon_burst:!0,weapon_damage:"1d8",weapon_encumbrance:"1",weapon_range:"30/100",weapon_price:"200"},suit_ripper:{weapon_attribute_mod:"@{str_dex_mod}",weapon_damage:"1d6",weapon_encumbrance:"1",weapon_skill_bonus:"@{skill_stab}",weapon_price:"75"},thermal_pistol:{weapon_attack:"1",weapon_ammo:"5",weapon_damage:"2d6",weapon_encumbrance:"1",weapon_range:"25/50",weapon_price:"300"},thunder_gun:{weapon_attack:"1",weapon_ammo:"6",weapon_damage:"2d10",weapon_encumbrance:"2",weapon_range:"100/300",weapon_price:"1000"},void_carbine:{weapon_ammo:"10",weapon_damage:"2d6",weapon_encumbrance:"2",weapon_range:"100/300",weapon_price:"400"},vortex_cannon:{weapon_ammo:"5",weapon_damage:"5d12",weapon_range:"1000/2000",weapon_price:"75000"},wheatcutter_belt:{weapon_ammo:"5",weapon_damage:"2d12",weapon_range:"10/20",weapon_price:"1000"}}};const sign=e=>{const t=parseInt(e)||0;return t>=0?`+${t}`:`${t}`},sum=e=>e.reduce((e,t)=>e+(parseInt(t)||0),0),buildLink=(e,t,r)=>`[${e}${r?"":","}](~${t})`,mySetAttrs=(e,t,...r)=>{Object.keys(e).forEach(r=>{`${t[r]}`===`${e[r]}`&&delete e[r]}),setAttrs(e,...r)},fillRepeatingSectionFromData=(e,t,r)=>{r=r||(()=>{});const s=[],n=(Array.isArray(t)?t:[t]).map(t=>{const r=(()=>{for(;;){let e=generateRowID();if(!s.includes(e))return s.push(e),e}})();return Object.entries(t).reduce((t,[s,n])=>(t[`repeating_${e}_${r}_${s}`]=`${n}`,t),{})}).reduce((e,t)=>Object.assign(e,t),{});setAttrs(n,{},r)};const calculateSaves=()=>{getAttrs([...attributes.map(e=>`${e}_mod`),"level","homebrew_luck_save","save_physical","save_mental","save_evasion","save_luck"],e=>{const a=16-(parseInt(e.level)||1),t={save_physical:a-(Math.max(parseInt(e.strength_mod),parseInt(e.constitution_mod))||0),save_mental:a-(Math.max(parseInt(e.charisma_mod),parseInt(e.wisdom_mod))||0),save_evasion:a-(Math.max(parseInt(e.intelligence_mod),parseInt(e.dexterity_mod))||0)};"1"===e.homebrew_luck_save&&(t.save_luck=a),mySetAttrs(t,e)})},calculateEffort=()=>{getSectionIDs("repeating_psychic-skills",e=>{getAttrs([...effortAttributes,"psionics_total_effort",...e.map(e=>`repeating_psychic-skills_${e}_skill`)],a=>{const t=Math.max(parseInt(a.wisdom_mod),parseInt(a.constitution_mod))||0,_=Math.max(...skills.psionic.map(e=>parseInt(a[`skill_${e}`])||0),...e.map(e=>parseInt(a[`repeating_psychic-skills_${e}_skill`])||0)),r=Math.max(1+t+_,1)+parseInt(a.psionics_extra_effort)-parseInt(a.psionics_committed_effort_current)-parseInt(a.psionics_committed_effort_scene)-parseInt(a.psionics_committed_effort_day)||0;mySetAttrs({psionics_total_effort:r},a)})})},calculateMagicEffort=()=>{getAttrs(["magic_total_effort","magic_committed_effort_current","magic_committed_effort_scene","magic_committed_effort_day","magic_uncommitted_effort"],e=>{const a=parseInt(e.magic_total_effort)-(parseInt(e.magic_committed_effort_current)+parseInt(e.magic_committed_effort_scene)+parseInt(e.magic_committed_effort_day))||0;mySetAttrs({magic_uncommitted_effort:a},e)})},calculateProcessing=()=>{getSectionIDs("repeating_processing-nodes",e=>{const a=[...e.map(e=>`repeating_processing-nodes_${e}_node_value`),...e.map(e=>`repeating_processing-nodes_${e}_node_connected`),"wisdom_mod","intelligence_mod","ai_extra_processing","ai_committed_processing_current","ai_committed_processing_scene","ai_committed_processing_day","ai_total_processing"];getAttrs(a,a=>{const t=(1+Math.max(parseInt(a.wisdom_mod),parseInt(a.intelligence_mod))||0)+Math.max(...e.filter(e=>"1"===a[`repeating_processing-nodes_${e}_node_connected`]).map(e=>parseInt(a[`repeating_processing-nodes_${e}_node_value`])||0),0)+parseInt(a.ai_extra_processing)-parseInt(a.ai_committed_processing_current)-parseInt(a.ai_committed_processing_scene)-parseInt(a.ai_committed_processing_day)||0;mySetAttrs({ai_total_processing:t},a)})})},calculateAC=()=>{getSectionIDs("repeating_armor",e=>{const a=[...e.map(e=>`repeating_armor_${e}_armor_ac`),...e.map(e=>`repeating_armor_${e}_armor_active`),...e.map(e=>`repeating_armor_${e}_armor_type`),"npc","AC","innate_ac","dexterity_mod"];getAttrs(a,a=>{if("1"===a.npc)return;const t=Math.max(parseInt(a.innate_ac)||0,...e.filter(e=>"1"===a[`repeating_armor_${e}_armor_active`]).filter(e=>"SHIELD"!==a[`repeating_armor_${e}_armor_type`]).map(e=>parseInt(a[`repeating_armor_${e}_armor_ac`])||0)),_=Math.max(0,...e.filter(e=>"1"===a[`repeating_armor_${e}_armor_active`]).filter(e=>"SHIELD"===a[`repeating_armor_${e}_armor_type`]).map(e=>parseInt(a[`repeating_armor_${e}_armor_ac`])||0)),r=(_>0?_<=t?t+1:_:t)+(parseInt(a.dexterity_mod)||0);mySetAttrs({AC:r},a)})})},calculateMaxStrain=()=>{getAttrs(["constitution","strain_max"],e=>{mySetAttrs({strain_max:parseInt(e.constitution)||0},e)})},calculatePermanentStrain=()=>{getAttrs(["cyberware_strain_total","strain_permanent_extra","strain_permanent"],e=>{const a=parseInt(e.cyberware_strain_total)+parseInt(e.strain_permanent_extra)||0;mySetAttrs({strain_permanent:a},e)})},calculateCyberwareStrain=()=>{getSectionIDs("repeating_cyberware",e=>{const a=[...e.map(e=>`repeating_cyberware_${e}_cyberware_strain`),"cyberware_strain_total"];getAttrs(a,a=>{const t=e.reduce((e,t)=>e+=parseInt(a[`repeating_cyberware_${t}_cyberware_strain`])||0,0);mySetAttrs({cyberware_strain_total:t},a)})})},calculateAttr=e=>{getAttrs([e,`${e}_base`,`${e}_boosts`],a=>{const t={[`${e}`]:`${(parseInt(a[`${e}_base`])||10)+(parseInt(a[`${e}_boosts`])||0)}`};mySetAttrs(t,a,null,()=>{calculateMod(e)})})},calculateMod=e=>{getAttrs([e,`${e}_bonus`,`${e}_mod`],a=>{const t=(e=>e>=18?2:e>=14?1:e>=8?0:e>=4?-1:-2)(parseInt(a[e])||10),_={[`${e}_mod`]:`${t+(parseInt(a[`${e}_bonus`])||0)}`};mySetAttrs(_,a,null,()=>{getAttrs([...attributes.map(e=>`${e}_mod`),"level","homebrew_luck_save","save_physical","save_mental","save_evasion","save_luck"],e=>{const a=16-(parseInt(e.level)||1),t={save_physical:a-(Math.max(parseInt(e.strength_mod),parseInt(e.constitution_mod))||0),save_mental:a-(Math.max(parseInt(e.charisma_mod),parseInt(e.wisdom_mod))||0),save_evasion:a-(Math.max(parseInt(e.intelligence_mod),parseInt(e.dexterity_mod))||0)};"1"===e.homebrew_luck_save&&(t.save_luck=a),mySetAttrs(t,e)}),generateWeaponDisplay(),calculateStrDexMod(),"dexterity"===e&&getSectionIDs("repeating_armor",e=>{const a=[...e.map(e=>`repeating_armor_${e}_armor_ac`),...e.map(e=>`repeating_armor_${e}_armor_active`),...e.map(e=>`repeating_armor_${e}_armor_type`),"npc","AC","innate_ac","dexterity_mod"];getAttrs(a,a=>{if("1"===a.npc)return;const t=Math.max(parseInt(a.innate_ac)||0,...e.filter(e=>"1"===a[`repeating_armor_${e}_armor_active`]).filter(e=>"SHIELD"!==a[`repeating_armor_${e}_armor_type`]).map(e=>parseInt(a[`repeating_armor_${e}_armor_ac`])||0)),_=Math.max(0,...e.filter(e=>"1"===a[`repeating_armor_${e}_armor_active`]).filter(e=>"SHIELD"===a[`repeating_armor_${e}_armor_type`]).map(e=>parseInt(a[`repeating_armor_${e}_armor_ac`])||0)),r=(_>0?_<=t?t+1:_:t)+(parseInt(a.dexterity_mod)||0);mySetAttrs({AC:r},a)})})})})},calculateStrDexMod=()=>{getAttrs(["str_dex_mod","strength_mod","dexterity_mod"],e=>{const a=Math.max(parseInt(e.strength_mod),parseInt(e.dexterity_mod))||0;mySetAttrs({str_dex_mod:a},e)})},calculateShellAttrs=()=>{const e=["strength","dexterity","constitution"];getSectionIDs("repeating_shells",a=>{const t=[...a.map(e=>`repeating_shells_${e}_shell_active`),...a.map(e=>`repeating_shells_${e}_shell_strength`),...a.map(e=>`repeating_shells_${e}_shell_dexterity`),...a.map(e=>`repeating_shells_${e}_shell_constitution`),...e,"setting_transhuman_enable","setting_ai_enable"];getAttrs(t,t=>{if("transhuman"===t.setting_transhuman_enable||"ai"===t.setting_ai_enable){let _={};e.forEach(e=>_[e]=a.filter(e=>"1"===t[`repeating_shells_${e}_shell_active`]).map(a=>t[`repeating_shells_${a}_shell_${e}`])[0]||"None"),mySetAttrs(_,t,null,()=>{e.filter(e=>"None"!==_[e]).forEach(e=>calculateMod(e))})}else e.forEach(e=>calculateAttr(e))})})},calculateNextLevelXP=()=>{const e=[0,3,6,12,18,27,39,54,72,93];getAttrs(["level","setting_xp_scheme"],a=>{"xp"===a.setting_xp_scheme?a.level<10?setAttrs({xp_next:e[a.level]}):setAttrs({xp_next:93+24*(a.level-9)}):"money"===a.setting_xp_scheme&&setAttrs({xp_next:2*a.level*2500})})},calculateGearReadiedStowed=()=>{getSectionIDs("repeating_gear",e=>{getSectionIDs("repeating_weapons",a=>{getSectionIDs("repeating_armor",t=>((e,a,t)=>{const _=[...e.map(e=>`repeating_gear_${e}_gear_amount`),...e.map(e=>`repeating_gear_${e}_gear_encumbrance`),...e.map(e=>`repeating_gear_${e}_gear_status`),...e.map(e=>`repeating_gear_${e}_gear_bundled`),...t.map(e=>`repeating_armor_${e}_armor_encumbrance`),...t.map(e=>`repeating_armor_${e}_armor_encumbrance_bonus`),...t.map(e=>`repeating_armor_${e}_armor_status`),...a.map(e=>`repeating_weapons_${e}_weapon_encumbrance`),...a.map(e=>`repeating_weapons_${e}_weapon_status`),"gear_readied","gear_stowed","strength","gear_readied_max","gear_readied_over","gear_stowed_over","gear_stowed_max"];getAttrs(_,_=>{const[r,n]=t.reduce((e,a)=>("READIED"===_[`repeating_armor_${a}_armor_status`]?e[0]+=parseInt(_[`repeating_armor_${a}_armor_encumbrance`])||0:"STOWED"===_[`repeating_armor_${a}_armor_status`]&&(e[1]+=parseInt(_[`repeating_armor_${a}_armor_encumbrance`])||0),e),a.reduce((e,a)=>("READIED"===_[`repeating_weapons_${a}_weapon_status`]?e[0]+=parseInt(_[`repeating_weapons_${a}_weapon_encumbrance`])||0:"STOWED"===_[`repeating_weapons_${a}_weapon_status`]&&(e[1]+=parseInt(_[`repeating_weapons_${a}_weapon_encumbrance`])||0),e),e.reduce((e,a)=>{const t=parseInt(_[`repeating_gear_${a}_gear_amount`])||0;let r=1;return"on"===_[`repeating_gear_${a}_gear_bundled`]&&(r=3),"READIED"===_[`repeating_gear_${a}_gear_status`]?e[0]+=Math.ceil(t*parseFloat(_[`repeating_gear_${a}_gear_encumbrance`])/r)||0:"STOWED"===_[`repeating_gear_${a}_gear_status`]&&(e[1]+=Math.ceil(t*parseFloat(_[`repeating_gear_${a}_gear_encumbrance`])/r)||0),e},[0,0]))),s=Math.max(0,...t.filter(e=>"READIED"===_[`repeating_armor_${e}_armor_status`]).map(e=>parseInt(_[`repeating_armor_${e}_armor_encumbrance_bonus`])||0)),o=parseInt(_.strength)+s||0,i=Math.floor(o/2),p={gear_readied:r,gear_stowed:n,gear_readied_max:i,gear_stowed_max:o,gear_readied_over:parseInt(_.gear_readied)>i?"1":"0",gear_stowed_over:parseInt(_.gear_stowed)>o?"1":"0"};mySetAttrs(p,_,{silent:!0})})})(e,a,t))})})},generateWeaponDisplay=()=>{getSectionIDs("repeating_weapons",e=>{const a=e.map(e=>`repeating_weapons_${e}`),t=[...a.map(e=>`${e}_weapon_attack`),...a.map(e=>`${e}_weapon_name`),...a.map(e=>`${e}_weapon_skill_bonus`),...a.map(e=>`${e}_weapon_attribute_mod`),...a.map(e=>`${e}_weapon_damage`),...a.map(e=>`${e}_weapon_shock`),...a.map(e=>`${e}_weapon_shock_damage`),...a.map(e=>`${e}_weapon_shock_ac`),...a.map(e=>`${e}_weapon_skill_to_damage`),...a.map(e=>`${e}_weapon_attack_display`),...a.map(e=>`${e}_weapon_damage_display`),...attributes.map(e=>`${e}_mod`),...weaponSkills,"attack_bonus","str_dex_mod","macro_weapons"];getAttrs(t,e=>{const t={},_=parseInt(e.attack_bonus)||0;a.forEach(a=>{const r=parseInt(e[(e[`${a}_weapon_attribute_mod`]||"").slice(2,-1)])||0,n=parseInt(e[(e[`${a}_weapon_skill_bonus`]||"").slice(2,-1)])||parseInt(e[`${a}_weapon_skill_bonus`])||0,s=r+("@{weapon_skill_bonus}"===e[`${a}_weapon_skill_to_damage`]?n:0),o="0"===e[`${a}_weapon_damage`]?"":e[`${a}_weapon_damage`],i="0"!==e[`${a}_weapon_shock`]?`, ${(parseInt(e[`${a}_weapon_shock_damage`])||0)+s} ${translate("SHOCK").toLowerCase()}${e[`${a}_weapon_shock_ac`]?` ${translate("VS_AC_LEQ")} ${e[`${a}_weapon_shock_ac`]}`:""}`:"",p=_+(parseInt(e[`${a}_weapon_attack`])||0)+(-1===n?-2:n)+r,m=o+(o?0===s?"":s>0?` + ${s}`:` - ${-s}`:s);t[`${a}_weapon_attack_display`]=p>=0?`+${p}`:p,t[`${a}_weapon_damage_display`]=`${m||0} ${translate("DAMAGE").toLowerCase()}${i}`}),t.macro_weapons=a.map((_,r)=>{const n=`${e[`${_}_weapon_name`]} (${t[`${_}_weapon_attack_display`]})`;return buildLink(n,`${_}_attack`,r===a.length-1)}).join(" "),mySetAttrs(t,e,{silent:!0})})})},handleAmmoAPI=e=>{const a="weapons"===e?"[[-1 - @{weapon_burst}]]":"-1";getSectionIDs(`repeating_${e}`,t=>{getAttrs(["setting_use_ammo",...t.map(a=>`repeating_${e}_${a}_weapon_use_ammo`),...t.map(a=>`repeating_${e}_${a}_weapon_api`)],_=>{const r=t.reduce((t,r)=>(t[`repeating_${e}_${r}_weapon_api`]="1"===_.setting_use_ammo&&"0"!==_[`repeating_${e}_${r}_weapon_use_ammo`]?`\n!modattr --mute --charid @{character_id} --repeating_${e}_${r}_weapon_ammo|${a}`:"",t),{});mySetAttrs(r,_,{silent:!0})})})};const validateTab=()=>{getAttrs(["tab","npc"],t=>{"character"===t.tab&&"1"===t.npc&&setAttrs({tab:"npc"}),"npc"===t.tab&&"0"===t.npc&&setAttrs({tab:"character"})})},validateSuperTab=()=>{getAttrs(["setting_super_type","tab_super"],t=>{const e={};"magic"===t.setting_super_type&&(e.tab_super="magic"),"psionics"===t.setting_super_type&&(e.tab_super="psionics"),mySetAttrs(e,t)})},validateStrain=()=>{getAttrs(["strain","strain_permanent","strain_max"],t=>{const e=parseInt(t.strain)||0,s=parseInt(t.strain_permanent)||0,l=Math.min(parseInt(t.strain_max),Math.max(e,s))||0;l!==e&&setAttrs({strain:l})})},validateWeaponSkills=t=>{const e=t&&t.map(t=>`repeating_weapons_${t}`)||["repeating_weapons"];getAttrs(["homebrew_skill_list",...e.map(t=>`${t}_weapon_skill_bonus`)],t=>{const s=["@{skill_exert}","@{skill_punch}","@{skill_shoot}","@{skill_stab}","@{skill_telekinesis}","0"],l=["@{skill_combat_energy}","@{skill_combat_gunnery}","@{skill_combat_primitive}","@{skill_combat_projectile}","@{skill_combat_psitech}","@{skill_combat_unarmed}","@{skill_telekinesis}","0"],i=t.homebrew_skill_list,a={};e.forEach(e=>{"revised"!==i||s.includes(t[`${e}_weapon_skill_bonus`])||(a[`${e}_weapon_skill_bonus`]="@{skill_shoot}"),"first"!==i||l.includes(t[`${e}_weapon_skill_bonus`])||(a[`${e}_weapon_skill_bonus`]="@{skill_combat_energy}")}),setAttrs(a)})},validateShells=t=>{console.log(t.sourceAttribute),console.log(t.sourceAttribute.slice(17,-13)),console.log(t.sourceAttribute.slice(-6)),"active"===t.sourceAttribute.slice(-6)?(console.log("Changing"),getSectionIDs("repeating_shells",e=>{const s={};(e=e.filter(e=>e!==t.sourceAttribute.slice(17,-13))).forEach(t=>s[`repeating_shells_${t}_shell_active`]="0"),setAttrs(s,()=>{calculateShellAttrs()})})):(console.log("No change needed"),calculateShellAttrs())};const fillNPC=()=>{getAttrs(["npc_stat_block"],t=>{if(t.npc_stat_block&&autofillData.statblocks[t.npc_stat_block]){const[a,c,_,e,n,s,p,r,k,l]=autofillData.statblocks[t.npc_stat_block],o={AC:c,npc_attack_bonus:_,npc_move:s,npc_morale:p,npc_skills:r,npc_saves:k};if(l&&(o.npc_armor_type=l),a.includes("hp")?o.HP=a.replace("hp",""):o.npc_hd=a,setAttrs(o),"Unarmed"!==e){const t={attack_ab:_,attack_damage:e,attack_name:translate("ATTACK"),attack_number:n};fillRepeatingSectionFromData("npc-attacks",t)}}})},addNPCAttackBonus=()=>{getAttrs(["repeating_npc-attacks_attack_ab","npc_attack_bonus"],t=>{"0"===`${t["repeating_npc-attacks_attack_ab"]}`&&setAttrs({"repeating_npc-attacks_attack_ab":t.npc_attack_bonus})})},setNPCMultiAttacks=()=>{getSectionIDs("repeating_npc-attacks",t=>{const a=[...t.map(t=>`repeating_npc-attacks_${t}_attack_number`),"npc_roll_full_attack"];getAttrs(a,a=>{const c=t.reduce((t,c)=>{if("1"===a.npc_roll_full_attack){const _=parseInt(a[`repeating_npc-attacks_${c}_attack_number`])||1;t[`repeating_npc-attacks_${c}_attack_extra_macro`]=[2,3,4,5,6,7,8].map(t=>t<=_?`{{attack${t}=[[1d20 + @{attack_ab} @{attack_burst} @{modifier_query}]]}} `+`{{damage${t}=[[@{attack_damage} @{attack_burst}]]}} `:"").join("")}else t[`repeating_npc-attacks_${c}_attack_extra_macro`]="";return t},{});setAttrs(c)})})},handleNPCRollHide=()=>{const t=["hp","initiative","save","skill","morale","reaction"];getAttrs(["npc_rolls_hidden",...t.map(t=>`npc_${t}_hidden`)],a=>{const c=t.reduce((t,c)=>(t[`npc_${c}_hidden`]=a.npc_rolls_hidden,t),{});mySetAttrs(c,a)})};const skillToMacro=i=>e=>{return["culture_one","culture_two","culture_three","culture_alien","profession","magic2"].includes(e)?[`@{skill_${e}_name} (${sign(i[`skill_${e}`])})`,`skill_${e}`]:[`^{${e.toUpperCase()}} (${sign(i[`skill_${e}`])})`,`skill_${e}`]},idToSkillMacro=(i,e)=>t=>{const s=`repeating_${e}_${t}_skill`;return[`${i[`${s}_name`]} (${sign(i[s])})`,s]},buildSkillMacro=([i,e],t,s)=>buildLink(i,e,t+1===s.length),buildSaveMenu=()=>{getAttrs(["homebrew_luck_save","macro_saves"],i=>{const e=buildLink("^{PHYSICAL} (v@{save_physical})","save_physical")+" "+buildLink("^{MENTAL} (v@{save_mental})","save_mental")+" "+buildLink("^{EVASION} (v@{save_evasion})","save_evasion","1"!==i.homebrew_luck_save)+("1"===i.homebrew_luck_save?" "+buildLink("^{LUCK} (v@{save_luck})","save_luck",!0):"");mySetAttrs({macro_saves:e},i)})},buildSkillMenu=()=>{getSectionIDs("repeating_skills",i=>{const e=[...skills.revised.map(i=>`skill_${i}`),...skills.first.map(i=>`skill_${i}`),"homebrew_skill_list","setting_show_untrained_skills","macro_skills",...i.map(i=>`repeating_skills_${i}_skill_name`),...i.map(i=>`repeating_skills_${i}_skill`)];getAttrs(e,e=>{const t=skills[e.homebrew_skill_list]||[],s=t.filter(i=>"-1"!==e[`skill_${i}`]).length||i.filter(i=>"-1"!==e[`repeating_skills_${i}_skill`]).length,a=`${[...t.filter(i=>"-1"!==e[`skill_${i}`]).map(skillToMacro(e)),...i.filter(i=>"-1"!==e[`repeating_skills_${i}_skill`]).map(idToSkillMacro(e,"skills"))].map(buildSkillMacro).join(" ")}${"1"===e.setting_show_untrained_skills?`${s?"\n\n**^{UNTRAINED}**\n":""}${[...t.filter(i=>"-1"===e[`skill_${i}`]).map(skillToMacro(e)),...i.filter(i=>"-1"===e[`repeating_skills_${i}_skill`]).map(idToSkillMacro(e,"skills"))].map(buildSkillMacro).join(" ")}`:""}`;mySetAttrs({macro_skills:a},e)})})},buildPsionicsMenu=()=>{getSectionIDs("repeating_techniques",i=>{getSectionIDs("repeating_psychic-skills",e=>{const t=[...skills.psionic.map(i=>`skill_${i}`),"setting_super_type","macro_psionics",...e.map(i=>`repeating_psychic-skills_${i}_skill_name`),...e.map(i=>`repeating_psychic-skills_${i}_skill`),...i.map(i=>`repeating_techniques_${i}_technique_name`)];getAttrs(t,t=>{if("magic"===t.setting_super_type||"neither"===t.setting_super_type)return;const s=`${[...skills.psionic.filter(i=>"-1"!==t[`skill_${i}`]).map(skillToMacro(t)),...e.filter(i=>"-1"!==t[`repeating_psychic-skills_${i}_skill`]).map(idToSkillMacro(t,"psychic-skills"))].map(buildSkillMacro).join(" ")}${i.length?"\n\n":""}${i.map((i,e,s)=>buildLink(t[`repeating_techniques_${i}_technique_name`],`repeating_techniques_${i}_technique`,e+1===s.length)).join(" ")}`;mySetAttrs({macro_psionics:s},t)})})})},buildMagicMenu=()=>{getSectionIDs("repeating_spells",i=>{getSectionIDs("repeating_magic-skills",e=>{const t=["skill_magic","skill_magic2","skill_magic2_name","setting_super_type","macro_magic",...e.map(i=>`repeating_magic-skills_${i}_skill_name`),...e.map(i=>`repeating_magic-skills_${i}_skill`),...i.map(i=>`repeating_spells_${i}_spell_name`)];getAttrs(t,t=>{if("psionics"===t.setting_super_type||"neither"===t.setting_super_type)return;const s=`${[...(t.skill_magic2_name?["magic","magic2"]:["magic"]).map(skillToMacro(t)),...e.map(idToSkillMacro(t,"magic-skills"))].map(buildSkillMacro).join(" ")}${i.length?"\n\n":""}${i.map(i=>buildLink(t[`repeating_spells_${i}_spell_name`],`repeating_spells_${i}_spell`)).join(" ")}`;mySetAttrs({macro_magic:s},t)})})})},buildShipWeaponsMenu=()=>{getSectionIDs("repeating_ship-weapons",i=>{const e=[...i.map(i=>`repeating_ship-weapons_${i}_weapon_name`),...i.map(i=>`repeating_ship-weapons_${i}_weapon_attack_bonus`),"macro_ship_weapons"];getAttrs(e,e=>{const t=i.map((t,s)=>{const a=e[`repeating_ship-weapons_${t}_weapon_name`]+` ${sign(e[`repeating_ship-weapons_${t}_weapon_attack_bonus`])}`;return buildLink(a,`repeating_ship-weapons_${t}_attack`,s+1===i.length)}).join(" ");mySetAttrs({macro_ship_weapons:t},e)})})},buildAttacksMenu=()=>{getSectionIDs("repeating_npc-attacks",i=>{const e=[...i.map(i=>`repeating_npc-attacks_${i}_attack_name`),...i.map(i=>`repeating_npc-attacks_${i}_attack_ab`),...i.map(i=>`repeating_npc-attacks_${i}_attack_number`),"macro_npc_attacks"];getAttrs(e,e=>{const t=i.map((t,s)=>{const a=e[`repeating_npc-attacks_${t}_attack_name`]+` ${sign(e[`repeating_npc-attacks_${t}_attack_ab`])}`+("1"!==e[`repeating_npc-attacks_${t}_attack_number`]?` (${e[`repeating_npc-attacks_${t}_attack_number`]} attacks)`:"");return buildLink(a,`repeating_npc-attacks_${t}_attack`,s+1===i.length)}).join(" ");mySetAttrs({macro_npc_attacks:t},e)})})},buildAbilitiesMenu=()=>{getSectionIDs("repeating_npc-abilities",i=>{const e=[...i.map(i=>`repeating_npc-abilities_${i}_ability_name`),"macro_npc_abilities"];getAttrs(e,e=>{const t=i.map((t,s)=>buildLink(e[`repeating_npc-abilities_${t}_ability_name`],`repeating_npc-abilities_${t}_ability`,s+1===i.length)).join(" ");mySetAttrs({macro_npc_abilities:t},e)})})},buildStatblock=()=>{getAttrs(["npc","macro_npc_abilities","macro_npc_attacks","macro_statblock"],i=>{if("1"!==i.npc)return;const e=["[**^{SAVES}** v@{npc_saves},](~npc_save) [**^{SKILLS}** +@{npc_skills},](~npc_skill) ","[**^{MORALE}** v@{npc_morale}](~npc_morale)\n","[**^{INITIATIVE_FIXED}** d8,](~npc_initiative) [**^{REACTION}** 2d6,](~npc_reaction) ","**Move** @{npc_move}\n"];i.macro_npc_attacks&&e.push("\n**Attacks:** @{macro_npc_attacks}"),i.macro_npc_abilities&&e.push("\n**Abilities:** @{macro_npc_abilities}"),mySetAttrs({macro_statblock:e.join("")},i)})};const fillClassStats=()=>{getAttrs(["class","class_ability","attack_bonus"],e=>{const a=e.class&&reverseClasses[e.class.toLowerCase()];if(a&&autofillData.classes.hasOwnProperty(a)){const t=Object.assign({},autofillData.classes[a]);Object.keys(t).forEach(a=>{["","0"].includes(`${e[a]}`)||delete t[a]}),mySetAttrs(t,e)}})},getShipMultiplier=e=>"frigate"===(e||"").toLowerCase()?2:"cruiser"===(e||"").toLowerCase()?3:"capital"===(e||"").toLowerCase()?4:1,getShipPriceMultiplier=e=>"frigate"===(e||"").toLowerCase()?10:"cruiser"===(e||"").toLowerCase()?25:"capital"===(e||"").toLowerCase()?100:1,getAutofillData=(e,a,t,s)=>{const r=Object.assign({},t);return"ship-defenses"===e&&(s&&(r.defense_name=translate(s.toUpperCase())),r.defense_mass.includes("#")&&(r.defense_mass=`${parseInt(r.defense_mass)*a.ship_multiplier}`),r.defense_price.includes("*")&&(r.defense_price=`${parseInt(r.defense_price)*a.ship_price_multiplier}`)),"ship-fittings"===e&&(s&&(r.fitting_name=translate(s.toUpperCase()),r.fitting_effect=translate(`${s.toUpperCase()}_DESC`)),r.fitting_mass.includes("#")&&(r.fitting_mass=`${Math.round(parseFloat(r.fitting_mass)*a.ship_multiplier)}`),r.fitting_power.includes("#")&&(r.fitting_power=`${parseInt(r.fitting_power)*a.ship_multiplier}`),r.fitting_price.includes("*")&&(r.fitting_price=`${parseInt(r.fitting_price)*a.ship_price_multiplier}`)),"ship-weapons"===e&&(s&&(r.weapon_name=translate(s.toUpperCase())),r.weapon_ammo&&(r.weapon_ammo_max=r.weapon_ammo,r.weapon_use_ammo="{{ammo=[[@{weapon_ammo} - 1]] / @{weapon_ammo_max}}}")),"weapons"===e&&(s&&(r.weapon_name=translate(s.toUpperCase()),r.weapon_description=translate(`${s.toUpperCase()}_DESC`)),r.weapon_ammo&&(r.weapon_ammo_max=r.weapon_ammo,r.weapon_use_ammo="{{ammo=[[0@{weapon_ammo} - (1 @{weapon_burst})]] / @{weapon_ammo|max}}}"),r.weapon_shock_damage&&(r.weapon_shock="{{shock=[[@{weapon_shock_damage} + @{weapon_attribute_mod}[Attribute] + @{weapon_skill_to_damage}[Skill]]] ^{SHOCK_DAMAGE_AGAINST_AC_LEQ} @{weapon_shock_ac}!}}"),r.weapon_burst&&(r.weapon_burst="@{burst_query}"),r.weapon_attribute_mod||(r.weapon_attribute_mod="@{dexterity_mod}")),"armor"===e&&s&&(r.armor_name=translate(s.toUpperCase()),r.armor_description=translate(`${s.toUpperCase()}_DESC`)||""),"cyberware"===e&&s&&(r.cyberware_name=translate(s.toUpperCase()),r.cyberware_description=translate(`${s.toUpperCase()}_DESC`)),"foci"===e&&s&&(r.focus_name=translate(s.toUpperCase()),r.focus_level="1",r.focus_description=translate(`${s.toUpperCase()}_DESC`)),"techniques"===e&&s&&(r.technique_name=translate(s.toUpperCase()),r.technique_description=translate(`${s.toUpperCase()}_DESC`)),"gear"===e&&(s&&(r.gear_name=translate(s.toUpperCase()),r.gear_description=translate(`${s.toUpperCase()}_DESC`)),"1#"===r.gear_encumbrance&&(r.gear_encumbrance="1",r.gear_bundled="on")),r},getAutofillInfo=(e,a,t,s)=>{const r=getAutofillData(e,a,t,s),n=new Intl.NumberFormat;if("ship-defenses"===e)return`${translate(r.class)}+. ${translate("POWER_INIT")}: ${r.defense_power}, ${translate("MASS_INIT")}: ${r.defense_mass}, ${translate("CREDITS")}: ${n.format(r.defense_price)}. ${r.defense_effect}`;if("ship-fittings"===e)return`${translate(r.class)}+. ${translate("POWER_INIT")}: ${r.fitting_power}, ${translate("MASS_INIT")}: ${r.fitting_mass}, ${translate("CREDITS")}: ${n.format(r.fitting_price)} ${r.fitting_effect}`;if("ship-weapons"===e)return`${translate(r.class)}+. ${translate("POWER_INIT")}: ${r.weapon_power}, ${translate("MASS_INIT")}: ${r.weapon_mass}, ${translate("HARDPOINTS_INIT")}: ${r.weapon_hardpoints}, ${translate("CREDITS")}: ${n.format(r.weapon_price)}. ${translate("DAMAGE_SHORT")} ${r.weapon_damage}. ${r.weapon_qualities}${r.weapon_ammo?`, ${translate("AMMO")}: ${r.weapon_ammo}`:""}.`;if("weapons"===e){const e=e=>"@{dexterity_mod}"===e?translate("DEXTERITY_SHORT"):"@{strength_mod}"===e?translate("STRENGTH_SHORT"):"@{str_dex_mod}"===e?translate("STR_DEX"):void 0;return`${translate("DAMAGE_SHORT")} ${r.weapon_damage}${r.weapon_burst?` (${translate("BURST")})`:""}${r.weapon_ab?`, ${translate("ATTACK_BONUS_SHORT")} +${r.weapon_ab}`:""}${r.weapon_range?`, ${translate("RANGE")} ${r.weapon_range}`:""}${r.weapon_ammo?`, ${translate("AMMO")} ${r.weapon_ammo}`:""}${r.weapon_shock?`, ${r.weapon_shock_damage} ${translate("SHOCK_DAMAGE_AGAINST_AC_LEQ")} ${r.weapon_shock_ac}`:""}, +${e(r.weapon_attribute_mod)}${r.weapon_encumbrance?`, ${translate("ENCUMBRANCE_SHORT")} ${r.weapon_encumbrance}`:""}${r.weapon_price?`, ${translate("CREDITS")}: ${n.format(r.weapon_price)}`:""}.`}return"armor"===e?`${translate("AC")} ${r.armor_ac}, ${translate(r.armor_type)}, ${translate("ENCUMBRANCE_SHORT")} ${r.armor_encumbrance}, ${translate("CREDITS")}: ${n.format(r.armor_price)}.`:"cyberware"===e?`${translate("STRAIN")}: ${r.cyberware_strain}, ${translate("CREDITS")}: ${n.format(r.cyberware_price)}.`:"techniques"===e?"0"===r.level?`${translate("CORE_TECHNIQUE")}.`:`${translate("LEVEL")}-${r.level}.`:"gear"===e?`${translate("ENCUMBRANCE_SHORT")} ${r.gear_encumbrance}${"on"===r.gear_bundled?"#":""}${r.gear_price?`, ${translate("CREDITS")}: ${n.format(r.gear_price)}`:""}.`:""},generateAutofillRow=e=>{getAttrs([`generate_${e}_source`,"ship_class"],a=>{const t=a[`generate_${e}_source`];if(a.ship_multiplier=getShipMultiplier(a.ship_class),a.ship_price_multiplier=getShipPriceMultiplier(a.ship_class),t&&autofillData[e].hasOwnProperty(t)){const s=getAutofillData(e,a,autofillData[e][t],t);delete s.class,delete s.level,fillRepeatingSectionFromData(e,s)}})},generateAutofillInfo=e=>{getAttrs([`generate_${e}_source`,"ship_class"],a=>{const t=a[`generate_${e}_source`];if(a.ship_multiplier=getShipMultiplier(a.ship_class),a.ship_price_multiplier=getShipPriceMultiplier(a.ship_class),t&&autofillData[e].hasOwnProperty(t)){const s=getAutofillInfo(e,a,autofillData[e][t],t);s&&setAttrs({[`generate_${e}_info`]:s})}else setAttrs({[`generate_${e}_info`]:" "})})};const setTranslatedDefaults=()=>{const t={skill_culture_alien_name:{trans:`${translate("CULTURE_ALIEN")}/`,default:"Culture/Alien/"},skill_culture_one_name:{trans:`${translate("CULTURE")}/`,default:"Culture/"},skill_culture_two_name:{trans:`${translate("CULTURE")}/`,default:"Culture/"},skill_culture_three_name:{trans:`${translate("CULTURE")}/`,default:"Culture/"},skill_profession_name:{trans:`${translate("PROFESSION")}/`,default:"Profession/"}};getAttrs([...Object.keys(t),"homebrew_skill_list","innate_ac_name"],e=>{const r={};"first"===e.homebrew_skill_list&&Object.entries(t).forEach(([t,a])=>{e[t]===a.default&&e[t]!==a.trans&&(r[t]=a.trans)}),r.innate_ac_name=translate("INNATE_AC"),mySetAttrs(r,e)})},handleAttributeQueries=()=>{const t=attributes.map(t=>{const e=translate(t.toUpperCase());return`${e},+ @{${t}_mod}[${e}]]]}} `+`{{attribute= + ${translate(`${t.toUpperCase()}_SHORT`)}}}`});getAttrs(["attribute_query","setting_skill_query",...attributes.map(t=>`attribute_query_${t.slice(0,3)}`)],e=>{"hover"===e.setting_skill_query||"hide"===e.setting_skill_query?mySetAttrs({attribute_query:`?{${translate("ATTRIBUTE")}|${[t[0],...t.slice(1)].join("|")}}`,attribute_query_str:`+ @{strength_mod}[${translate("STRENGTH")}]]]}} {{attribute= + ${translate("STRENGTH_SHORT")}}}`,attribute_query_dex:`+ @{dexterity_mod}[${translate("DEXTERITY")}]]]}} {{attribute= + ${translate("DEXTERITY_SHORT")}}}`,attribute_query_con:`+ @{constitution_mod}[${translate("CONSTITUTION")}]]]}} {{attribute= + ${translate("CONSTITUTION_SHORT")}}}`,attribute_query_int:`+ @{intelligence_mod}[${translate("INTELLIGENCE")}]]]}} {{attribute= + ${translate("INTELLIGENCE_SHORT")}}}`,attribute_query_wis:`+ @{wisdom_mod}[${translate("WISDOM")}]]]}} {{attribute= + ${translate("WISDOM_SHORT")}}}`,attribute_query_cha:`+ @{charisma_mod}[${translate("CHARISMA")}]]]}} {{attribute= + ${translate("CHARISMA_SHORT")}}}`},e):"query"===e.setting_skill_query&&mySetAttrs({attribute_query:`?{${translate("ATTRIBUTE")}|${[t[0],...t.slice(1)].join("|")}}`,attribute_query_str:`?{${translate("ATTRIBUTE")}|${[t[0],...t.slice(1)].join("|")}}`,attribute_query_dex:`?{${translate("ATTRIBUTE")}|${[t[1],t[0],...t.slice(2)].join("|")}}`,attribute_query_con:`?{${translate("ATTRIBUTE")}|${[t[2],...t.slice(0,2),...t.slice(3)].join("|")}}`,attribute_query_int:`?{${translate("ATTRIBUTE")}|${[t[3],...t.slice(0,3),...t.slice(4)].join("|")}}`,attribute_query_wis:`?{${translate("ATTRIBUTE")}|${[t[4],...t.slice(0,4),...t.slice(5)].join("|")}}`,attribute_query_cha:`?{${translate("ATTRIBUTE")}|${[t[5],...t.slice(0,5)].join("|")}}`},e)})},handleModifierQuery=()=>{getAttrs(["modifier_query","setting_modifier_query"],t=>{"1"===`${t.setting_modifier_query}`?mySetAttrs({modifier_query:`+ ?{${translate("MODIFIER")}|0}[${translate("MODIFIER_SHORT")}]`},t):mySetAttrs({modifier_query:" "},t)})},setTranslatedQueries=()=>{getAttrs(["burst_query","extra_hp_query","translation_numdice","proficient_query","skill_name_query"],t=>{const e={burst_query:`?{${translate("BURST")}|${translate("YES")},+ 2[${translate("BURST")}]|${translate("NO")},&`+"#32;}",extra_hp_query:`?{${translate("EXTRA_HP_QUERY")}|0}[${translate("BONUS")}]`,proficient_query:`?{${translate("PROFICIENT")}|${translate("YES")}, @{npc_skills}|${translate("NO")}, 0}[${translate("SKILL")}]`,skill_name_query:`?{${translate("SKILL_NAME")}|${translate("SKILL")}}`,translation_numdice:translate("NUMBER_OF_DICE")};mySetAttrs(e,t)})};const fillShipStats=()=>{getAttrs(["ship_hulltype",...shipStats],s=>{const e=s.ship_hulltype&&reverseHullTypes[s.ship_hulltype.toLowerCase()];if(e&&autofillData.hulltypes.hasOwnProperty(e)){const p=Object.assign({},autofillData.hulltypes[e]);p.ship_hp_max=p.ship_hp,Object.keys(p).forEach(e=>{!["",0,"0"].includes(s[e])&&s.hasOwnProperty(e)&&delete p[e]}),mySetAttrs(p,s),calculateShipStats()}})},setShipClass=()=>{getAttrs(["ship_class","ship_class_normalised"],s=>{["fighter",translate("FIGHTER").toLowerCase()].includes(s.ship_class.toLowerCase())?setAttrs({ship_class_normalised:"fighter"}):["frigate",translate("FRIGATE").toLowerCase()].includes(s.ship_class.toLowerCase())?setAttrs({ship_class_normalised:"frigate"}):["cruiser",translate("CRUISER").toLowerCase()].includes(s.ship_class.toLowerCase())?setAttrs({ship_class_normalised:"cruiser"}):mySetAttrs({ship_class_normalised:""},s)})},calculateShipStats=()=>{getSectionIDs("repeating_ship-weapons",s=>getSectionIDs("repeating_ship-fittings",e=>{getSectionIDs("repeating_ship-defenses",p=>((s,e,p)=>{const i=[...s.map(s=>`repeating_ship-weapons_${s}_weapon_power`),...s.map(s=>`repeating_ship-weapons_${s}_weapon_mass`),...s.map(s=>`repeating_ship-weapons_${s}_weapon_hardpoints`),...s.map(s=>`repeating_ship-weapons_${s}_weapon_price`),...e.map(s=>`repeating_ship-fittings_${s}_fitting_power`),...e.map(s=>`repeating_ship-fittings_${s}_fitting_mass`),...e.map(s=>`repeating_ship-fittings_${s}_fitting_price`),...p.map(s=>`repeating_ship-defenses_${s}_defense_power`),...p.map(s=>`repeating_ship-defenses_${s}_defense_mass`),...p.map(s=>`repeating_ship-defenses_${s}_defense_price`),"ship_power_max","ship_mass_max","ship_hardpoints_max","ship_power","ship_mass","ship_hardpoints","ship_price","ship_hull_price","ship_calculate_price"];getAttrs(i,i=>{const t={ship_power:i.ship_power_max-sum([...s.map(s=>`repeating_ship-weapons_${s}_weapon_power`),...e.map(s=>`repeating_ship-fittings_${s}_fitting_power`),...p.map(s=>`repeating_ship-defenses_${s}_defense_power`)].map(s=>i[s])),ship_mass:i.ship_mass_max-sum([...s.map(s=>`repeating_ship-weapons_${s}_weapon_mass`),...e.map(s=>`repeating_ship-fittings_${s}_fitting_mass`),...p.map(s=>`repeating_ship-defenses_${s}_defense_mass`)].map(s=>i[s])),ship_hardpoints:i.ship_hardpoints_max-sum(s.map(s=>i[`repeating_ship-weapons_${s}_weapon_hardpoints`]))};"1"===i.ship_calculate_price&&(t.ship_price=(new Intl.NumberFormat).format(parseInt(i.ship_hull_price)+sum([...s.map(s=>`repeating_ship-weapons_${s}_weapon_price`),...e.map(s=>`repeating_ship-fittings_${s}_fitting_price`),...p.map(s=>`repeating_ship-defenses_${s}_defense_price`)].map(s=>i[s])))),console.log(t),mySetAttrs(t,i,{silent:!0})})})(s,e,p))}))};const fillDroneStats=()=>{getAttrs(["repeating_drones_drone_model"],e=>{const t=(e.repeating_drones_drone_model||"").toLowerCase().trim().replace(/ /g,"_");if(autofillData.drones.hasOwnProperty(t)){const e=Object.entries(autofillData.drones[t]).reduce((e,[t,n])=>(e[`repeating_drones_${t}`]=n,e),{});e.repeating_drones_drone_HP_max=e.repeating_drones_drone_HP,setAttrs(e)}})},fillDroneFitting=e=>{const t=`repeating_drones_drone_fitting_${e}`;getAttrs([`${t}_desc`,`${t}_name`],e=>{const n=(e[`${t}_name`]||"").toLowerCase().trim().replace(/ /g,"_");""===e[`${t}_desc`]&&autofillData.droneFittings.includes(n)&&setAttrs({[`${t}_desc`]:translate(`${n.toUpperCase()}_DESC`)})})},calculateDroneAttack=(e,t)=>{const n=e.reduce((e,t)=>e.concat([`${t}_drone_weapon1_ab`,`${t}_drone_weapon1_active`,`${t}_drone_weapon1_attack`,`${t}_drone_weapon1_skill`,`${t}_drone_weapon2_ab`,`${t}_drone_weapon2_active`,`${t}_drone_weapon2_attack`,`${t}_drone_weapon2_skill`,`${t}_drone_weapon3_ab`,`${t}_drone_weapon3_active`,`${t}_drone_weapon3_attack`,`${t}_drone_weapon3_skill`]),["attack_bonus","intelligence_mod","skill_pilot","skill_program","npc","npc_attack_bonus"]);getAttrs(n,n=>{let _,a,o;"1"!==n.npc?(_=Math.max(parseInt(n.skill_pilot),parseInt(n.skill_program))||0,a=parseInt(n.intelligence_mod)||0,o=parseInt(n.attack_bonus)||0):(_=0,a=0,o=parseInt(n.npc_attack_bonus)||0);const r=e.reduce((e,t)=>([1,2,3].filter(e=>"1"===n[`${t}_drone_weapon${e}_active`]).forEach(r=>{e[`${t}_drone_weapon${r}_attack`]=a+o+(-1===_?-2:_)+parseInt(n[[`${t}_drone_weapon${r}_ab`]]||0),e[`${t}_drone_weapon${r}_skill`]=-1===_?-2:_}),e),{});mySetAttrs(r,n,t)})};const handleUpgrade=()=>{getAttrs(["character_sheet"],e=>{e.character_sheet&&0===e.character_sheet.indexOf(sheetName)?e.character_sheet.slice(32)!==sheetVersion&&upgradeSheet(e.character_sheet.slice(32),!0):upgradeFrom162()})},upgradeSheet=(e,a=!1,t=!1)=>{const s=e=>{const[a,t,s]=e.split(".").map(e=>parseInt(e));if(console.log(`Upgrading from version ${e}.`),2===a&&t<1){const e=_.after(4,()=>{buildShipWeaponsMenu(),buildAttacksMenu(),buildMagicMenu(),generateWeaponDisplay(),attributes.forEach(calculateMod),upgradeSheet("2.1.0")});getSectionIDs("repeating_weapons",_=>{const a=[..._.map(e=>`repeating_weapons_${e}_weapon_burst`),..._.map(e=>`repeating_weapons_${e}_weapon_shock_damage`),..._.map(e=>`repeating_weapons_${e}_weapon_ammo`)];getAttrs(a,a=>{const t=_.reduce((e,_)=>("0"===a[`repeating_weapons_${_}_weapon_burst`]?e[`repeating_weapons_${_}_weapon_burst`]="":"2"===a[`repeating_weapons_${_}_weapon_burst`]&&(e[`repeating_weapons_${_}_weapon_burst`]="+ 2[Burst]"),"0"!==a[`repeating_weapons_${_}_weapon_shock_damage`]&&(e[`repeating_weapons_${_}_weapon_shock`]="{{shock=[[@{weapon_shock_damage} + @{weapon_attribute_mod}[Attribute] + @{weapon_skill_to_damage}[Skill]]] ^{SHOCK_DAMAGE_AGAINST_AC_LEQ} @{weapon_shock_ac}!}}"),a[`repeating_weapons_${_}_weapon_ammo`]&&"0"!==a[`repeating_weapons_${_}_weapon_ammo`]&&(e[`repeating_weapons_${_}_weapon_use_ammo`]="{{ammo=[[0@{weapon_ammo} - (1 @{weapon_burst})]] / @{weapon_ammo|max}}}"),e),{});setAttrs(t,{},e)})}),getSectionIDs("repeating_ship-weapons",_=>{getAttrs(_.map(e=>`repeating_ship-weapons_${e}_weapon_ammo_max`),a=>{const t=_.reduce((e,_)=>(a[`repeating_ship-weapons_${_}_weapon_ammo_max`]&&"0"!==a[`repeating_ship-weapons_${_}_weapon_ammo_max`]&&(e[`repeating_ship-weapons_${_}_weapon_use_ammo`]="{{ammo=[[@{weapon_ammo} - 1]] / @{weapon_ammo_max}}}"),e),{});setAttrs(t,{},e)})}),getSectionIDs("repeating_npc-attacks",_=>{getAttrs(_.map(e=>`repeating_npc-attacks_${e}_attack_burst`),a=>{const t=_.reduce((e,_)=>("0"===a[`repeating_npc-attacks_${_}_attack_burst`]?e[`repeating_npc-attacks_${_}_attack_burst`]="":"2"===a[`repeating_npc-attacks_${_}_attack_burst`]&&(e[`repeating_npc-attacks_${_}_attack_burst`]="+ 2[Burst]"),e),{});setAttrs(t,{},e)})}),getSectionIDs("repeating_gear",_=>{getAttrs(_.map(e=>`repeating_gear_${e}_gear_status`),a=>{const t=_.reduce((e,_)=>(e[`repeating_gear_${_}_gear_status`]=(a[`repeating_gear_${_}_gear_status`]||"").toUpperCase(),e),{});mySetAttrs(t,a,{},e)})})}else if(2===a&&t<2){const e=_.after(2,()=>{calculateStrDexMod(),calculateEffort(),buildPsionicsMenu(),buildSkillMenu(),upgradeSheet("2.2.0")});getAttrs(["armor_name","armor_ac","armor_encumbrance","armor_type","setting_ship_tab_name"],_=>{if(_.armor_ac){const a={armor_active:"1",armor_ac:_.armor_ac,armor_encumbrance:_.armor_encumbrance||"0",armor_name:_.armor_name||"",armor_status:"READIED",armor_type:(_.armor_type||"").toUpperCase()};fillRepeatingSectionFromData("armor",a,e)}else e();"MECH"===_.setting_ship_tab_name&&setAttrs({ship_vehicle_type:"MECH"})}),getSectionIDs("repeating_skills",_=>getSectionIDs("repeating_magic-skills",a=>{getSectionIDs("repeating_psychic-skills",t=>{const s=[..._.map(e=>`repeating_skills_${e}_skill_query`),...a.map(e=>`repeating_magic-skills_${e}_skill_query`),...t.map(e=>`repeating_psychic-skills_${e}_skill_query`),...skills.revised.map(e=>`skill_${e}_query`),...skills.first.map(e=>`skill_${e}_query`),...skills.psionic.map(e=>`skill_${e}_query`),"skill_magic_query","skill_magic2_query"];getAttrs(s,_=>{const a=s.reduce((e,a)=>("@{attribute_query_none}"===_[a]&&(e[a]="@{attribute_query}"),e),{});mySetAttrs(a,_,{},e)})})}))}else if(2===a&&(t<3||3===t&&0===s)){const e=_.after(1,()=>{upgradeSheet("2.3.1")});generateWeaponDisplay(),getSectionIDs("repeating_drones",_=>{calculateDroneAttack(_.map(e=>`repeating_drones_${e}`),e)})}else 2===a&&(t<4||4===t&&s<3)?(calculateCyberwareStrain(),upgradeSheet("2.4.3")):2===a&&4===t&&s<7?(attributes.forEach(e=>{getAttrs([e,`${e}_base`],_=>{mySetAttrs({[`${e}_base`]:parseInt(_[`${e}`]||10)},_,null,()=>{calculateAttr(e)})})}),upgradeSheet("2.4.7")):2===a&&4===t&&s<12?(getSectionIDs("repeating_drones",e=>{calculateDroneAttack(e.map(e=>`repeating_drones_${e}`))}),upgradeSheet("2.4.12")):upgradeSheet(sheetVersion,!1,!0)};a?s(e):setAttrs({character_sheet:`${sheetName} v${e}`},{},()=>{t||s(e)})},upgradeFrom162=()=>{console.log("Upgrading from versionless sheet (assumed to be fresh or v1.6.2).");const e=_.after(13,()=>{upgradeSheet("2.0.1")});getAttrs([1,2,3,4,5,6,7,8].map(e=>`psionics_mastered_${e}`),e=>{const _={};for(let a=1;a<9;a++){const t=e[`psionics_mastered_${a}`];if(t){_[`repeating_techniques_${generateRowID()}_technique_name`]=t}}setAttrs(_)}),getAttrs([1,2,3,4].map(e=>`cyberware_${e}`),e=>{const _={};for(let a=1;a<5;a++){const t=e[`cyberware_${a}`];if(t){_[`repeating_cyberware_${generateRowID()}_cyberware_name`]=t}}setAttrs(_)}),getAttrs(["languages"],e=>{if(e.languages){const _={};e.languages.split(/\r?\n/).filter(e=>!!e).forEach(e=>{const a=generateRowID();_[`repeating_languages_${a}_language`]=e}),setAttrs(_)}});const a={armor_enc:"armor_encumbrance",cha:"charisma",cha_misc:"charisma_bonus",con:"constitution",con_misc:"constitution_bonus",dex:"dexterity",dex_misc:"dexterity_bonus",gender:"species_gender",hd:"npc_hd",int:"intelligence",int_misc:"intelligence_bonus",morale:"npc_morale",move:"npc_move",name:"npc_name",notes:"npc_notes",npc_ac:"AC",saves:"npc_saves",ship_hp_min:"ship_hp",ship_current_crew:"ship_crew",ship_last_maintenance_cost:"ship_last_maintenance",skills:"npc_skills",skill_biopsion:"skill_biopsionics",skill_metapsion:"skill_metapsionics",skill_points:"unspent_skill_points",str:"strength",strain_perm:"strain_permanent",str_misc:"strength_bonus",wis:"wisdom",wis_misc:"wisdom_bonus"},t=["homebrew_luck_save","homebrew_extra_skills","setting_heroic_enable"],s=["damage","homebrew_psionics_disable","npc_attacks","npc_attack_bonus","setting_space_magic_enable","ship_other_notes","ship_free_hardpoints","ship_free_mass","ship_free_power","skill_culture_alien_type","skill_culture_one_value","skill_culture_two_value","skill_culture_three_value","profession_type","tab",...[1,2,3,4].map(e=>`homebrew_custom_counter_${e}_name`),...[1,2,3,4].map(e=>`homebrew_custom_counter_${e}_counter`)];getAttrs([...Object.keys(a),...Object.values(a),...t,...s],_=>{const s=Object.entries(a).reduce((e,[a,t])=>(_[a]&&""!==_[a]&&`${_[t]}`!==`${_[a]}`&&(e[t]=_[a]),e),{});t.forEach(e=>{"on"===_[e]&&(s[e]="1")}),["one","two","three"].forEach(e=>{_[`skill_culture_${e}_value`]&&(s[`skill_culture_${e}_name`]=`Culture/${_[`skill_culture_${e}_value`]}`)}),_.profession_type&&(s.skill_profession_name=`Profession/${_.profession_type}`),_.skill_culture_alien_type&&(s.skill_culture_alien_name=`Culture/Alien/${_.skill_culture_alien_type}`),(_.ship_free_hardpoints||_.ship_free_mass||_.ship_free_power)&&(s.ship_other_notes=`\nLegacy attributes${_.ship_free_power?`\nFree Power: ${_.ship_free_power}`:""}${_.ship_free_mass?`\nFree Mass: ${_.ship_free_mass}`:""}${_.ship_free_hardpoints?`\nFree Hardpoints: ${_.ship_free_hardpoints}`:""}\n\t\t\t\t\t${_.ship_other_notes||""}`);const n=[1,2,3,4].reduce((e,a)=>(_[`homebrew_custom_counter_${a}_name`]&&e.push({resource_name:_[`homebrew_custom_counter_${a}_name`],resource_count:_[`homebrew_custom_counter_${a}_counter`]||0}),e),[]);if(fillRepeatingSectionFromData("resources",n,e),"1"!==`${_.tab}`&&"4"!==`${_.tab}`||(s.tab="character"),"2"===`${_.tab}`&&(s.tab="ship"),"3"===`${_.tab}`&&(s.tab="character",s.npc="1"),_.damage){const a={attack_damage:_.damage,attack_name:translate("ATTACK"),attack_number:_.npc_attacks||"1"};fillRepeatingSectionFromData("npc-attacks",a,e)}else e();"on"===_.setting_space_magic_enable&&"on"!==_.homebrew_psionics_disable?s.setting_super_type="both":"on"===_.setting_space_magic_enable?s.setting_super_type="magic":"on"===_.homebrew_psionics_disable&&(s.setting_super_type="neither"),setAttrs(s,{},e)}),getSectionIDs("repeating_weapons",_=>{const a=[..._.map(e=>`repeating_weapons_${e}_attribute_mod`),..._.map(e=>`repeating_weapons_${e}_add_skill`),..._.map(e=>`repeating_weapons_${e}_weapon_shock`),..._.map(e=>`repeating_weapons_${e}_ship_weapon_name`),..._.map(e=>`repeating_weapons_${e}_ship_weapon_power`),..._.map(e=>`repeating_weapons_${e}_ship_weapon_ab`),..._.map(e=>`repeating_weapons_${e}_ship_weapon_damage`),..._.map(e=>`repeating_weapons_${e}_ship_weapon_ammo`),..._.map(e=>`repeating_weapons_${e}_ship_weapon_special_effects`),..._.map(e=>`repeating_weapons_${e}_ship_weapon_broken`)];getAttrs(a,a=>{const t=_.reduce((e,_)=>{switch("@{weapon_skill_bonus}"===a[`repeating_weapons_${_}_add_skill`]&&(e[`repeating_weapons_${_}_weapon_skill_to_damage`]="@{weapon_skill_bonus}"),a[`repeating_weapons_${_}_weapon_shock`]&&(e[`repeating_weapons_${_}_weapon_shock_damage`]=a[`repeating_weapons_${_}_weapon_shock`]),a[`repeating_weapons_${_}_attribute_mod`]){case"@{dex_bonus}":e[`repeating_weapons_${_}_weapon_attribute_mod`]="@{dexterity_mod}";break;case"@{con_bonus}":e[`repeating_weapons_${_}_weapon_attribute_mod`]="@{constitution_mod}";break;case"@{int_bonus}":e[`repeating_weapons_${_}_weapon_attribute_mod`]="@{intelligence_mod}";break;case"@{wis_bonus}":e[`repeating_weapons_${_}_weapon_attribute_mod`]="@{wisdom_mod}";break;case"@{cha_bonus}":e[`repeating_weapons_${_}_weapon_attribute_mod`]="@{charisma_mod}";break;default:e[`repeating_weapons_${_}_weapon_attribute_mod`]="@{strength_mod}"}return e},{}),s=_.filter(e=>a[`repeating_weapons_${e}_ship_weapon_name`]).map(e=>{const _={};return _.weapon_name=a[`repeating_weapons_${e}_ship_weapon_name`],a[`repeating_weapons_${e}_ship_weapon_power`]&&(_.weapon_power=a[`repeating_weapons_${e}_ship_weapon_power`]),a[`repeating_weapons_${e}_ship_weapon_ab`]&&(_.weapon_attack_bonus=a[`repeating_weapons_${e}_ship_weapon_ab`]),a[`repeating_weapons_${e}_ship_weapon_damage`]&&(_.weapon_damage=a[`repeating_weapons_${e}_ship_weapon_damage`]),a[`repeating_weapons_${e}_ship_weapon_ammo`]&&(_.weapon_ammo=a[`repeating_weapons_${e}_ship_weapon_ammo`]),a[`repeating_weapons_${e}_ship_weapon_special_effects`]&&(_.weapon_qualities=a[`repeating_weapons_${e}_ship_weapon_special_effects`]),"on"===a[`repeating_weapons_${e}_ship_weapon_broken`]&&(_.weapon_broken="1"),_});fillRepeatingSectionFromData("ship-weapons",s,e),setAttrs(t,null,e)})}),getSectionIDs("repeating_skills",_=>{const a=[..._.map(e=>`repeating_skills_${e}_custom_skill_1_name`),..._.map(e=>`repeating_skills_${e}_custom_skill_2_name`),..._.map(e=>`repeating_skills_${e}_custom_skill_1_level`),..._.map(e=>`repeating_skills_${e}_custom_skill_2_level`),..._.map(e=>`repeating_skills_${e}_custom_skill_1_specialist`),..._.map(e=>`repeating_skills_${e}_custom_skill_2_specialist`)];getAttrs(a,a=>{const t=_.reduce((e,_)=>([1,2].forEach(t=>{if(a[`repeating_skills_${_}_custom_skill_${t}_name`]){const s=void 0===a[`repeating_skills_${_}_custom_skill_${t}_level`]?"-1":a[`repeating_skills_${_}_custom_skill_${t}_level`];e.push({skill_name:a[`repeating_skills_${_}_custom_skill_${t}_name`],skill:s,skill_specialist:a[`repeating_skills_${_}_custom_skill_${t}_specialist`]||"2d6"})}}),e),[]);_.forEach(e=>removeRepeatingRow(`repeating_skills_${e}`)),fillRepeatingSectionFromData("skills",t,e)})}),getSectionIDs("repeating_technique",_=>{const a=[..._.map(e=>`repeating_technique_${e}_technique`),..._.map(e=>`repeating_technique_${e}_technique_description`)];getAttrs(a,a=>{const t=_.reduce((e,_)=>(a[`repeating_technique_${_}_technique`]&&e.push({technique_name:a[`repeating_technique_${_}_technique`],technique_description:a[`repeating_technique_${_}_technique_description`]||""}),e),[]);fillRepeatingSectionFromData("techniques",t,e),_.forEach(e=>removeRepeatingRow(`repeating_technique_${e}`))})}),getSectionIDs("repeating_cyberware",_=>{getAttrs(_.map(e=>`repeating_cyberware_${e}_cyberware`),a=>{const t=_.reduce((e,_)=>(a[`repeating_cyberware_${_}_cyberware`]&&(e[`repeating_cyberware_${_}_cyberware_name`]=a[`repeating_cyberware_${_}_cyberware`]),e),{});setAttrs(t,null,e)})}),getSectionIDs("repeating_goals",_=>{const a=[..._.map(e=>`repeating_goals_${e}_misc_goal`),..._.map(e=>`repeating_goals_${e}_misc_goal_xp`)];getAttrs(a,a=>{const t=_.reduce((e,_)=>(a[`repeating_goals_${_}_misc_goal`]&&(e[`repeating_goals_${_}_goal_name`]=a[`repeating_goals_${_}_misc_goal`]),a[`repeating_goals_${_}_misc_goal_xp`]&&(e[`repeating_goals_${_}_goal_xp`]=a[`repeating_goals_${_}_misc_goal_xp`]),e),{});setAttrs(t,null,e)})}),getSectionIDs("repeating_languages",_=>{getAttrs(_.map(e=>`repeating_languages_${e}_languages`),a=>{const t=_.reduce((e,_)=>(a[`repeating_languages_${_}_languages`]&&(e[`repeating_languages_${_}_language`]=a[`repeating_languages_${_}_languages`]),e),{});setAttrs(t,null,e)})}),getSectionIDs("repeating_gear",_=>{getAttrs(_.map(e=>`repeating_gear_${e}_gear_readied`),a=>{const t=_.reduce((e,_)=>("1"===`${a[`repeating_gear_${_}_gear_readied`]}`?e[`repeating_gear_${_}_gear_status`]="readied":"2"===`${a[`repeating_gear_${_}_gear_readied`]}`&&(e[`repeating_gear_${_}_gear_status`]="stowed"),e),{});setAttrs(t,null,e)})}),getSectionIDs("repeating_defenses",_=>{const a=[..._.map(e=>`repeating_defenses_${e}_ship_defense_name`),..._.map(e=>`repeating_defenses_${e}_ship_defense_special_effects`),..._.map(e=>`repeating_defenses_${e}_ship_defense_broken`)];getAttrs(a,a=>{const t=_.map(e=>{const _={};return a[`repeating_defenses_${e}_ship_defense_name`]&&(_.defense_name=a[`repeating_defenses_${e}_ship_defense_name`]),a[`repeating_defenses_${e}_ship_defense_special_effects`]&&(_.defense_effect=a[`repeating_defenses_${e}_ship_defense_special_effects`]),a[`repeating_defenses_${e}_ship_defense_broken`]&&(_.defense_broken="1"),_});fillRepeatingSectionFromData("ship-defenses",t,e)})}),getSectionIDs("repeating_fittings",_=>{const a=[..._.map(e=>`repeating_fittings_${e}_ship_fitting_name`),..._.map(e=>`repeating_fittings_${e}_ship_fitting_special_effects`),..._.map(e=>`repeating_fittings_${e}_ship_fitting_broken`)];getAttrs(a,a=>{const t=_.map(e=>{const _={};return a[`repeating_fittings_${e}_ship_fitting_name`]&&(_.fitting_name=a[`repeating_fittings_${e}_ship_fitting_name`]),a[`repeating_fittings_${e}_ship_fitting_special_effects`]&&(_.fitting_effect=a[`repeating_fittings_${e}_ship_fitting_special_effects`]),a[`repeating_fittings_${e}_ship_fitting_broken`]&&(_.fitting_broken="1"),_});fillRepeatingSectionFromData("ship-fittings",t,e)})})};on("sheet:opened",handleUpgrade),on("sheet:opened change:npc",validateTab),on("sheet:opened",setTranslatedQueries),on("sheet:opened change:setting_skill_query",handleAttributeQueries),on("sheet:opened change:setting_modifier_query",handleModifierQuery),on("change:homebrew_skill_list",setTranslatedDefaults),["weapons","ship-weapons"].forEach(e=>{on(`change:repeating_${e}:weapon_use_ammo`,()=>handleAmmoAPI(e))}),on("change:setting_use_ammo",()=>{handleAmmoAPI("weapons"),handleAmmoAPI("ship-weapons")}),on("change:class",fillClassStats),attributes.forEach(e=>on(`change:${e}_base change:${e}_boosts`,()=>calculateAttr(e))),attributes.forEach(e=>on(`change:${e} change:${e}_bonus`,()=>calculateMod(e))),on("change:repeating_shells",function(e){"player"===e.sourceType&&validateShells(e)}),on("change:setting_transhuman_enable change:setting_ai_enable",calculateShellAttrs),on(weaponDisplayEvent,generateWeaponDisplay),on("change:repeating_weapons:weapon_name",()=>validateWeaponSkills()),on("change:homebrew_skill_list",()=>getSectionIDs("repeating_weapons",validateWeaponSkills)),on("change:strain change:strain_permanent",validateStrain),on("change:constitution",calculateMaxStrain),on("change:repeating_cyberware",calculateCyberwareStrain),on("change:strain_permanent_extra change:cyberware_strain_total",calculatePermanentStrain),on("change:level",calculateSaves),on([...effortAttributes,"repeating_psychic-skills:skill"].map(e=>`change:${e}`).join(" "),calculateEffort),on("change:magic_committed_effort_current change:magic_committed_effort_scene change:magic_committed_effort_day change:magic_total_effort",calculateMagicEffort),on("change:ai_committed_processing_current change:ai_committed_processing_scene change:ai_committed_processing_day change:ai_extra_processing change:repeating_processing-nodes",calculateProcessing),on("change:repeating_armor change:innate_ac remove:repeating_armor",calculateAC),on("change:strength change:repeating_gear remove:repeating_gear change:repeating_weapons remove:repeating_weapons change:repeating_armor remove:repeating_armor",calculateGearReadiedStowed),on("change:level change:setting_xp_scheme",calculateNextLevelXP),on("change:setting_super_type",validateSuperTab),on("change:homebrew_luck_save",buildSaveMenu),on([...skills.revised.map(e=>`change:skill_${e}`),...skills.first.map(e=>`change:skill_${e}`),"change:homebrew_skill_list","change:repeating_skills","change:setting_show_untrained_skills","remove:repeating_skills"].join(" "),buildSkillMenu),on([...skills.psionic.map(e=>`change:skill_${e}`),"change:setting_super_type change:repeating_techniques remove:repeating_techniques","change:repeating_psychic-skills remove:repeating_psychic-skills"].join(" "),buildPsionicsMenu),on("change:setting_super_type change:repeating_spells remove:repeating_spells change:repeating_magic-skills remove:repeating_magic-skills change:skill_magic change:skill_magic2_name change:skill_magic2",buildMagicMenu),autofillSections.forEach(e=>{on(`change:generate_${e}_source`,()=>generateAutofillInfo(e)),on(`change:generate_${e}_button`,()=>generateAutofillRow(e))}),on("change:ship_hulltype",fillShipStats),on("change:ship_calculate_price",calculateShipStats),on("change:ship_class",()=>{setShipClass(),["ship-fittings","ship-defenses"].forEach(e=>generateAutofillInfo(e))}),on(shipStatEvent,calculateShipStats),on("change:repeating_ship-weapons:weapon_name change:repeating_ship-weapons:weapon_attack_bonus remove:repeating_ship-weapons",buildShipWeaponsMenu),[1,2,3,4,5].forEach(e=>{on(`change:repeating_drones:drone_fitting_${e}_name`,()=>fillDroneFitting(e))}),on("change:repeating_drones:drone_model",fillDroneStats),on("change:attack_bonus change:intelligence_mod change:skill_pilot change:skill_program change:npc",()=>getSectionIDs("repeating_drones",e=>{calculateDroneAttack(e.map(e=>`repeating_drones_${e}`))})),on([...[1,2,3].map(e=>`change:repeating_drones:drone_weapon${e}_ab`),...[1,2,3].map(e=>`change:repeating_drones:drone_weapon${e}_active`)].join(" "),()=>calculateDroneAttack(["repeating_drones"])),on("change:npc_stat_block",fillNPC),on("change:npc_rolls_hidden",handleNPCRollHide),on("change:repeating_npc-attacks:attack_name",addNPCAttackBonus),on("change:npc_roll_full_attack change:repeating_npc-attacks:attack_number",setNPCMultiAttacks),on("change:repeating_npc-abilities:ability_name remove:repeating_npc-abilities",buildAbilitiesMenu),on("change:repeating_npc-attacks:attack_name change:repeating_npc-attacks:attack_ab change:repeating_npc-attacks:attack_number remove:repeating_npc-attacks",buildAttacksMenu),on("change:npc change:npc_armor_type change:macro_npc_attacks change:macro_npc_abilities",buildStatblock); })();
\ No newline at end of file
diff --git a/Stars_Without_Number_Revised/translation.json b/Stars_Without_Number_Revised/translation.json
index ba0ba7a6d5..9206e010fc 100644
--- a/Stars_Without_Number_Revised/translation.json
+++ b/Stars_Without_Number_Revised/translation.json
@@ -839,8 +839,10 @@
"SKILL_LIST_DESC": "Chose whether to change to the skill list from First Edition SWN, or use neither (in which case you should probably enable custom skills).",
"SKILL_NAME": "Skill name",
"SKILL_ORDER_FIRST": "artist,navigation,athletics,perception,bureaucracy,persuade,business,profession,combat_energy,religion,combat_gunnery,science,combat_primitive,security,combat_projectile,stealth,combat_psitech,steward,combat_unarmed,survival,computer,tactics,culture_alien,tech_astronautic,culture_criminal,tech_maltech,culture_spacer,tech_medical,culture_traveller,tech_postech,culture_one,tech_pretech,culture_two,tech_psitech,culture_three,vehicle_air,exosuit,vehicle_grav,gambling,vehicle_land,history,vehicle_space,instructor,vehicle_water,language,dummy,leadership",
+ "SKILL_ORDER_MAGIC": "know_magic,use_magic,sunblade",
"SKILL_ORDER_PSIONIC": "biopsionics,telekinesis,metapsionics,telepathy,precognition,teleportation",
"SKILL_ORDER_REVISED": "administer,program,connect,punch,exert,shoot,fix,sneak,heal,stab,know,survive,lead,talk,notice,trade,perform,work,pilot",
+ "SKILL_ORDER_WWN": "administer,connect,convince, craft,exert,heal,know,lead,magic,notice,perform,pray,punch,ride,sail,shoot,sneak,stab,survive,trade,work",
"SLEEPER": "Sleeper",
"SLIP_FIELD": "Slip Field",
"SLIP_FIELD_DESC": "As a Main Action, the psychic Commits Effort for the scene and decreases the friction at a point in sight. Up to ten meters in diameter is affected, making it difficult for enemies to move from their current position. All chosen targets must make an Evasion saving throw or fall prone, becoming unable to stand up or move more than a meter per Move action taken. If used against a ground vehicle, the driver must make a Dex/Pilot skill check at a difficulty of 8 plus the adept’s Telekinesis skill or go out of control, driving directly forward for a round and crashing into any obstacles. Targets who save are immune to this technique for the scene.",