From 592efda77b011d28558962784ee8be68801f1fa6 Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Tue, 9 Mar 2021 14:45:24 +0100 Subject: [PATCH 01/14] some minor changes --- ShadowbaneInquisition/Shadowbane.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index 2ddcfaafc1..7611e45142 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -321,7 +321,7 @@

Current

-

Critical Damage

+

Non-Lethal Dmg

Max

@@ -3015,7 +3015,7 @@ NOTE: replace worker by javascript for IDE functionality * @param {string} source row id of the weapon */ const calcDmg = function (sources, fields) { - var redice = /^(\d+)?(d\d+)((?:kh?\d+)?(?:kl\d+)?(?:dl?\d+)?(?:dh\d+)?(?:[\+|-]\d+)?)?/; + var redice = /^(\d+)?(d\d+)\s?((?:kh?\d+)?(?:kl\d+)?(?:dl?\d+)?(?:dh\d+)?\s?(?:[\+|-]\d+)?)?/; getAttrs(fields, v => { let attr = {}; From 4c462a8428274d8eb7b1de6a0a6fdd516169b9b6 Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Tue, 16 Mar 2021 14:11:52 +0100 Subject: [PATCH 02/14] syntax changes --- ShadowbaneInquisition/Shadowbane.css | 289 ++++++++-------- ShadowbaneInquisition/Shadowbane.html | 465 ++++++++++++++------------ 2 files changed, 386 insertions(+), 368 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.css b/ShadowbaneInquisition/Shadowbane.css index 030979d515..7ab4e34fc2 100644 --- a/ShadowbaneInquisition/Shadowbane.css +++ b/ShadowbaneInquisition/Shadowbane.css @@ -33,7 +33,6 @@ input[type='text'], button[type='action'] { background: #d5d4cd; box-shadow: inset 0px 0px 6px 1px black; -/* color: white; */ font-family: inherit; text-align: center; } @@ -79,7 +78,6 @@ label:hover { cursor: pointer; } /* Both header elements 2 and 3 receive the following CSS properties. */ h2, h3 { -/* color: white; */ color: #4d4d4d; font-family: inherit; letter-spacing: 0px; @@ -102,14 +100,12 @@ p { /* All instances of the placeholder attribute across all elements */ ::placeholder { - /*color: white;*/ opacity: 0.7; } /* All textarea elements (keep width for textarea to prevent stretching off of sheet) */ textarea { background: rgba(0,0,0,0.25); - /*color: white;*/ font-family: inherit; font-size: 14px; resize: vertical; @@ -190,7 +186,6 @@ ______________________________ start of multipurpose or special-use classes such .sheet-box { background-image: url(https://raw.githubusercontent.com/johnmoney-code/roll20-character-sheets/Only-War-Enhanced/Only-War-Enhanced/images/assets/background.gif); -/* background: #4d4d4d; */ border-color: black; border-style: solid; border-width: 1px; @@ -198,8 +193,6 @@ ______________________________ start of multipurpose or special-use classes such } .sheet-table { - /*background: rgba(0,0,0,0.25);*/ - /* color: white; */ font-family: inherit; } @@ -300,12 +293,6 @@ ______________________________ start of grid structure for character information 'ah6 ah12 ah13 ah19 ah24'; } -.sheet-logo, -.sheet-kartus { display: none } - -.sheet-logotoggle[value='logo'] ~ div.sheet-logo, -.sheet-logotoggle[value='kartus'] ~ div.sheet-kartus { display: block } - /* ______________________________ end of grid structure for character information ______________________________ ______________________________ start of structure for characteristics ______________________________ */ @@ -316,12 +303,26 @@ ______________________________ start of structure for characteristics __________ /* background: black; */ box-shadow: inset 0px 0px 20px 5px black; padding: 3px 0px 6px 3px; +} + +.sheet-characteristics_main, { display: grid; grid-column-gap: 0.5%; grid-template-columns: 9.5% 9.5% 9.5% 9.5% 9.5% 9.5% 9.5% 9.5% 9.5% 9.5%; grid-template-rows: 26px 40px 26px; } +.sheet-characteristics_mods { + display: grid; + grid-column-gap: 0.5%; + grid-template-columns: 9.5% 9.5% 9.5% 9.5% 9.5% 9.5% 9.5% 9.5% 9.5% 9.5%; + grid-template-rows: 26px; +} +.sheet-char_more { + display: block; + text-align: center; +} + .sheet-characteristics_button { margin-left: -0.1%!important; width: calc(100% - 8px); @@ -541,17 +542,14 @@ ______________________________ start of minimisable infographic ________________ .sheet-select_text { - /* background: rgba(0,0,0,0.25); */ box-shadow: inset 0px 0px 10px 5px black; border: 1px solid white; border-radius: 4px; - /* color: white; font-family: inherit; */ padding: 4px 5px 4px 5px; } .sheet-select_button:checked ~ .sheet-select_text { text-shadow: -1px -1px 5px white, 1px 1px 5px white; box-shadow: inset 0px 0px 5px 1px black; -/*background: rgb(200, 0, 0); */ } .sheet-minimisable_infographic_main { margin-left: 5px; } @@ -584,9 +582,9 @@ ______________________________ start of minimisable infographic ________________ } .sheet-minimisable_infographic_g1 { grid-area: mi1; background: #52682d38 !important; box-shadow: inset 0px 0px 10px black; border: 0px solid transparent; font-family: inherit !important; letter-spacing: 0px; justify-self: center; width: calc(100% - 6px); } -.sheet-minimisable_infographic_g2 { grid-area: mi2; /*color: white;*/ justify-self: right; margin-top: 3px; margin-right: 3px; } +.sheet-minimisable_infographic_g2 { grid-area: mi2; justify-self: right; margin-top: 3px; margin-right: 3px; } .sheet-minimisable_infographic_g3 { grid-area: mi3; border-right: 1px solid #52682d38; } -.sheet-minimisable_infographic_g4 { grid-area: mi4; /*color: white;*/ justify-self: right; margin-top: 3px; margin-right: 3px; } +.sheet-minimisable_infographic_g4 { grid-area: mi4; justify-self: right; margin-top: 3px; margin-right: 3px; } .sheet-minimisable_infographic_g5 { grid-area: mi5; border-right: 1px solid #52682d38; border-bottom: 1px solid #52682d38; border-bottom-right-radius: 10px; } .sheet-minimisable_infographic_field2x3 { height: fit-content; @@ -601,7 +599,7 @@ ______________________________ start of minimisable infographic ________________ 'mi4 mi5'; } -.sheet-minimisable_infographic_g6 { grid-area: mi6; /*color: white;*/ font-family: inherit; justify-self: right; margin-top: 3px; margin-right: 3px; } +.sheet-minimisable_infographic_g6 { grid-area: mi6; font-family: inherit; justify-self: right; margin-top: 3px; margin-right: 3px; } .sheet-minimisable_infographic_g7 { grid-area: mi7; } .sheet-minimisable_infographic_field4x3a { @@ -647,7 +645,7 @@ ______________________________ start of minimisable infographic ________________ 'mi8 mi8 mi8 mc12'; } -.sheet-minimisable_infographic_g8 { grid-area: mi8; /*color: white;*/ font-family: inherit; justify-self: right; margin-top: 3px; margin-right: 3px; } +.sheet-minimisable_infographic_g8 { grid-area: mi8; font-family: inherit; justify-self: right; margin-top: 3px; margin-right: 3px; } .sheet-minimisable_infographic_g9 { grid-area: mi9; border-bottom: 1px solid #52682d38; } .sheet-minimisable_infographic_field4x3b { height: fit-content; @@ -776,57 +774,57 @@ ______________________________ start of equipment tab __________________________ .sheet-equipment_ranged_weapons_gs05 {} .sheet-equipment_ranged_weapons_gs05 {} -.sheet-equipment_ranged_weapons_gs1 { grid-area: rw1; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs2 { grid-area: rw2; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs3 { grid-area: rw3; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs4 { grid-area: rw4; /*color: white;*/ font-size: 12px; } +.sheet-equipment_ranged_weapons_gs1 { grid-area: rw1; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs2 { grid-area: rw2; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs3 { grid-area: rw3; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs4 { grid-area: rw4; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs5 { grid-area: rw5; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs6 { grid-area: rw6; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs7 { grid-area: rw7; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs8 { grid-area: rw8; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs9 { grid-area: rw9; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs10 { grid-area: rw10; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs11 { grid-area: rw11; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs12 { grid-area: rw12; /*color: white;*/ font-size: 12px; } +.sheet-equipment_ranged_weapons_gs5 { grid-area: rw5; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs6 { grid-area: rw6; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs7 { grid-area: rw7; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs8 { grid-area: rw8; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs9 { grid-area: rw9; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs10 { grid-area: rw10; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs11 { grid-area: rw11; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs12 { grid-area: rw12; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs06 { grid-area: rw05; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs07 { grid-area: rw06; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs08 { grid-area: rw07; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs09 { grid-area: rw08; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs010 { grid-area: rw09; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs011 { grid-area: rw010; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs012 { grid-area: rw011; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs013 { grid-area: rw012; /*color: white; font-size: 12px;*/ } +.sheet-equipment_ranged_weapons_gs06 { grid-area: rw05; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs07 { grid-area: rw06; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs08 { grid-area: rw07; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs09 { grid-area: rw08; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs010 { grid-area: rw09; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs011 { grid-area: rw010; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs012 { grid-area: rw011; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs013 { grid-area: rw012; } -.sheet-equipment_ranged_weapons_gs13 { grid-area: rw13; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs14 { grid-area: rw14; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs15 { grid-area: rw15; /*color: white;*/ font-size: 30px; margin-top: -27px; text-align: center; height: 15px; } -.sheet-equipment_ranged_weapons_gs16 { grid-area: rw16; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs17 { grid-area: rw17; /*color: white;*/ font-size: 30px; margin-top: -27px; text-align: center; height: 15px; } -.sheet-equipment_ranged_weapons_gs18 { grid-area: rw18; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs19 { grid-area: rw19; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs20 { grid-area: rw20; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs21 { grid-area: rw21; /*color: white;*/ font-size: 30px; margin-top: -27px; text-align: center; height: 15px; } -.sheet-equipment_ranged_weapons_gs22 { grid-area: rw22; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs23 { grid-area: rw23; /*color: white;*/ font-size: 12px; width: 60px!important;} -.sheet-equipment_ranged_weapons_gs24 { grid-area: rw24; /*color: white;*/ font-size: 12px; width: 50px!important;} +.sheet-equipment_ranged_weapons_gs13 { grid-area: rw13; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs14 { grid-area: rw14; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs15 { grid-area: rw15; font-size: 30px; margin-top: -27px; text-align: center; height: 15px; } +.sheet-equipment_ranged_weapons_gs16 { grid-area: rw16; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs17 { grid-area: rw17; font-size: 30px; margin-top: -27px; text-align: center; height: 15px; } +.sheet-equipment_ranged_weapons_gs18 { grid-area: rw18; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs19 { grid-area: rw19; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs20 { grid-area: rw20; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs21 { grid-area: rw21; font-size: 30px; margin-top: -27px; text-align: center; height: 15px; } +.sheet-equipment_ranged_weapons_gs22 { grid-area: rw22; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs23 { grid-area: rw23; font-size: 12px; width: 60px!important;} +.sheet-equipment_ranged_weapons_gs24 { grid-area: rw24; font-size: 12px; width: 50px!important;} -.sheet-equipment_ranged_weapons_gs25 { grid-area: rw25; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs26 { grid-area: rw26; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs27 { grid-area: rw27; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs28 { grid-area: rw28; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs29 { grid-area: rw29; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs30 { grid-area: rw30; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs31 { grid-area: rw31; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs32 { grid-area: rw32; /*color: white;*/ font-size: 12px; } +.sheet-equipment_ranged_weapons_gs25 { grid-area: rw25; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs26 { grid-area: rw26; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs27 { grid-area: rw27; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs28 { grid-area: rw28; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs29 { grid-area: rw29; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs30 { grid-area: rw30; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs31 { grid-area: rw31; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs32 { grid-area: rw32; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs33 { grid-area: rw33; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs34 { grid-area: rw34; /*color: white;*/ font-size: 12px; } -.sheet-equipment_ranged_weapons_gs35 { grid-area: rw35; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs36 { grid-area: rw36; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs37 { grid-area: rw37; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs38 { grid-area: rw38; /*color: white;*/ font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs33 { grid-area: rw33; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs34 { grid-area: rw34; font-size: 12px; } +.sheet-equipment_ranged_weapons_gs35 { grid-area: rw35; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs36 { grid-area: rw36; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs37 { grid-area: rw37; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_ranged_weapons_gs38 { grid-area: rw38; font-size: 12px; padding: 0px 2px; } .sheet-equipment_ranged_weapons_grid0 { /* gs01-05, roll modifiers, hit, DMG */ align-items: center; @@ -890,37 +888,37 @@ ______________________________ start of equipment tab __________________________ .sheet-equipment_melee_weapons_gs04 { grid-area: mw04; width: 60px!important;} .sheet-equipment_melee_weapons_gs05 { grid-area: mw05; width: 50px!important;} -.sheet-equipment_melee_weapons_gs1 { grid-area: mw1; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs2 { grid-area: mw2; /*color: white;*/ font-size: 12px; } -.sheet-equipment_melee_weapons_gs3 { grid-area: mw3; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs4 { grid-area: mw4; /*color: white;*/ font-size: 12px; } +.sheet-equipment_melee_weapons_gs1 { grid-area: mw1; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs2 { grid-area: mw2; font-size: 12px; } +.sheet-equipment_melee_weapons_gs3 { grid-area: mw3; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs4 { grid-area: mw4; font-size: 12px; } -.sheet-equipment_melee_weapons_gs5 { grid-area: mw5; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs6 { grid-area: mw6; /*color: white;*/ font-size: 12px; } -.sheet-equipment_melee_weapons_gs7 { grid-area: mw7; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs8 { grid-area: mw8; /*color: white;*/ font-size: 12px; } -.sheet-equipment_melee_weapons_gs9 { grid-area: mw9; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs10 { grid-area: mw10; /*color: white;*/ font-size: 12px; } -.sheet-equipment_melee_weapons_gs11 { grid-area: mw11; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs12 { grid-area: mw12; /*color: white;*/ font-size: 12px; } +.sheet-equipment_melee_weapons_gs5 { grid-area: mw5; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs6 { grid-area: mw6; font-size: 12px; } +.sheet-equipment_melee_weapons_gs7 { grid-area: mw7; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs8 { grid-area: mw8; font-size: 12px; } +.sheet-equipment_melee_weapons_gs9 { grid-area: mw9; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs10 { grid-area: mw10; font-size: 12px; } +.sheet-equipment_melee_weapons_gs11 { grid-area: mw11; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs12 { grid-area: mw12; font-size: 12px; } -.sheet-equipment_melee_weapons_gs06 { grid-area: mw05; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs07 { grid-area: mw06; /*color: white;*/ font-size: 12px; } -.sheet-equipment_melee_weapons_gs08 { grid-area: mw07; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs09 { grid-area: mw08; /*color: white;*/ font-size: 12px; } -.sheet-equipment_melee_weapons_gs010 { grid-area: mw09; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs011 { grid-area: mw010; /*color: white;*/ font-size: 12px; } -.sheet-equipment_melee_weapons_gs012 { grid-area: mw011; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs013 { grid-area: mw012; /*color: white;*/ font-size: 12px; } +.sheet-equipment_melee_weapons_gs06 { grid-area: mw05; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs07 { grid-area: mw06; font-size: 12px; } +.sheet-equipment_melee_weapons_gs08 { grid-area: mw07; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs09 { grid-area: mw08; font-size: 12px; } +.sheet-equipment_melee_weapons_gs010 { grid-area: mw09; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs011 { grid-area: mw010; font-size: 12px; } +.sheet-equipment_melee_weapons_gs012 { grid-area: mw011; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs013 { grid-area: mw012; font-size: 12px; } -.sheet-equipment_melee_weapons_gs13 { grid-area: mw13; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs14 { grid-area: mw14; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs15 { grid-area: mw15; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs16 { grid-area: mw16; /*color: white;*/ font-size: 12px; } -.sheet-equipment_melee_weapons_gs17 { grid-area: mw17; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs18 { grid-area: mw18; /*color: white;*/ font-size: 12px; } -.sheet-equipment_melee_weapons_gs19 { grid-area: mw19; /*color: white;*/ font-size: 12px; } -.sheet-equipment_melee_weapons_gs20 { grid-area: mw20; /*color: white;*/ font-size: 12px; } +.sheet-equipment_melee_weapons_gs13 { grid-area: mw13; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs14 { grid-area: mw14; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs15 { grid-area: mw15; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs16 { grid-area: mw16; font-size: 12px; } +.sheet-equipment_melee_weapons_gs17 { grid-area: mw17; font-size: 12px; padding: 0px 2px; } +.sheet-equipment_melee_weapons_gs18 { grid-area: mw18; font-size: 12px; } +.sheet-equipment_melee_weapons_gs19 { grid-area: mw19; font-size: 12px; } +.sheet-equipment_melee_weapons_gs20 { grid-area: mw20; font-size: 12px; } .sheet-equipment_melee_weapons_grid0 { /* gs01-05 aim, type, multi, hit, dmg */ align-items: center; @@ -1119,8 +1117,8 @@ ______________________________ start of Journal tab ____________________________ } -.sheet-insanity_gs1 { grid-area: in1; margin-top: 5px; /*color: white;*/ font-size: 16px; margin-top: 2px; } -.sheet-insanity_gs2 { grid-area: in2; margin-top: 5px; /*color: white;*/ font-size: 14px; } +.sheet-insanity_gs1 { grid-area: in1; margin-top: 5px; font-size: 16px; margin-top: 2px; } +.sheet-insanity_gs2 { grid-area: in2; margin-top: 5px; font-size: 14px; } .sheet-insanity_gs3 { grid-area: in3; margin-top: 5px; font-size: 14px; text-align: center; } .sheet-insanity_gs4 { grid-area: in4; margin-top: 5px; font-size: 14px; } .sheet-insanity_gs5 { grid-area: in5; margin-top: 5px; font-size: 14px; } @@ -1136,8 +1134,8 @@ ______________________________ start of Journal tab ____________________________ 'in3 in3'; } -.sheet-corruption_gs1 { grid-area: co1; margin-top: 5px; /*color: white;*/ font-size: 16px; margin-top: 2px; } -.sheet-corruption_gs2 { grid-area: co2; margin-top: 5px; /*color: white;*/ font-size: 14px; } +.sheet-corruption_gs1 { grid-area: co1; margin-top: 5px; font-size: 16px; margin-top: 2px; } +.sheet-corruption_gs2 { grid-area: co2; margin-top: 5px; font-size: 14px; } .sheet-corruption_gs3 { grid-area: co3; margin-top: 5px; font-size: 15px; text-align: center; } .sheet-corruption_gs4 { grid-area: co4; margin-top: 5px; font-size: 15px; } .sheet-corruption_gs5 { grid-area: co5; margin-top: 5px; font-size: 15px; } @@ -1174,28 +1172,28 @@ ______________________________ start of Psykana tab ____________________________ .sheet-minormanifestation_rep, .sheet-psykana_ability_rep { /*background:rgba(0,0,0,0.25);*/ border:1px solid white; border-radius: 10px; padding: 2px; } -.sheet-psykana_info_gs1 { grid-area: pi1; /*color: white;*/ font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs2 { grid-area: pi2; /*color: white;*/ font-size: 14px; margin-top: 5px; } -.sheet-psykana_info_gs3 { grid-area: pi3; /*color: white;*/ font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs4 { grid-area: pi4; /*color: white;*/ font-size: 14px; margin-top: 5px; } -.sheet-psykana_info_gs5 { grid-area: pi5; /*color: white;*/ font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs6 { grid-area: pi6; /*color: white;*/ font-size: 14px; } -.sheet-psykana_info_gs7 { grid-area: pi7; /*color: white;*/ font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs8 { grid-area: pi8; /*color: white;*/ font-size: 14px; } +.sheet-psykana_info_gs1 { grid-area: pi1; font-size: 14px; padding: 0px 2px; } +.sheet-psykana_info_gs2 { grid-area: pi2; font-size: 14px; margin-top: 5px; } +.sheet-psykana_info_gs3 { grid-area: pi3; font-size: 14px; padding: 0px 2px; } +.sheet-psykana_info_gs4 { grid-area: pi4; font-size: 14px; margin-top: 5px; } +.sheet-psykana_info_gs5 { grid-area: pi5; font-size: 14px; padding: 0px 2px; } +.sheet-psykana_info_gs6 { grid-area: pi6; font-size: 14px; } +.sheet-psykana_info_gs7 { grid-area: pi7; font-size: 14px; padding: 0px 2px; } +.sheet-psykana_info_gs8 { grid-area: pi8; font-size: 14px; } -.sheet-psykana_info_gs9 { grid-area: pi9; /*color: white;*/ font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs10 { grid-area: pi10; /*color: white;*/ font-size: 14px; } -.sheet-psykana_info_gs11 { grid-area: pi11; /*color: white;*/ font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs12 { grid-area: pi12; /*color: white;*/ font-size: 14px; } +.sheet-psykana_info_gs9 { grid-area: pi9; font-size: 14px; padding: 0px 2px; } +.sheet-psykana_info_gs10 { grid-area: pi10; font-size: 14px; } +.sheet-psykana_info_gs11 { grid-area: pi11; font-size: 14px; padding: 0px 2px; } +.sheet-psykana_info_gs12 { grid-area: pi12; font-size: 14px; } -.sheet-psykana_info_gs13 { grid-area: pi13; /*color: white;*/ font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs14 { grid-area: pi14; /*color: white;*/ font-size: 14px; } -.sheet-psykana_info_gs15 { grid-area: pi15; /*color: white;*/ font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs16 { grid-area: pi16; /*color: white;*/ font-size: 14px; } -.sheet-psykana_info_gs17 { grid-area: pi17; /*color: white;*/ font-size: 14px; width: 130px!important;} -.sheet-psykana_info_gs18 { grid-area: pi18; /*color: white;*/ font-size: 14px; width: 100px!important;} -.sheet-psykana_info_gs19 { grid-area: pi19; /*color: white;*/ font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs20 { grid-area: pi20; /*color: white;*/ font-size: 14px; } +.sheet-psykana_info_gs13 { grid-area: pi13; font-size: 14px; padding: 0px 2px; } +.sheet-psykana_info_gs14 { grid-area: pi14; font-size: 14px; } +.sheet-psykana_info_gs15 { grid-area: pi15; font-size: 14px; padding: 0px 2px; } +.sheet-psykana_info_gs16 { grid-area: pi16; font-size: 14px; } +.sheet-psykana_info_gs17 { grid-area: pi17; font-size: 14px; width: 130px!important;} +.sheet-psykana_info_gs18 { grid-area: pi18; font-size: 14px; width: 100px!important;} +.sheet-psykana_info_gs19 { grid-area: pi19; font-size: 14px; padding: 0px 2px; } +.sheet-psykana_info_gs20 { grid-area: pi20; font-size: 14px; } .sheet-psykana_info_grid { font-weight: bold; @@ -1214,33 +1212,33 @@ ______________________________ start of Psykana tab ____________________________ } -.sheet-psykana_ability_gs1 { grid-area: pa1; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs2 { grid-area: pa2; /*color: white;*/ font-size: 12px; } -.sheet-psykana_ability_gs3 { grid-area: pa3; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs4 { grid-area: pa4; /*color: white;*/ font-size: 12px; border-top-right-radius: 10px; } +.sheet-psykana_ability_gs1 { grid-area: pa1; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs2 { grid-area: pa2; font-size: 12px; } +.sheet-psykana_ability_gs3 { grid-area: pa3; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs4 { grid-area: pa4; font-size: 12px; border-top-right-radius: 10px; } -.sheet-psykana_ability_gs5 { grid-area: pa5; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs6 { grid-area: pa6; /*color: white;*/ font-size: 12px; } -.sheet-psykana_ability_gs7 { grid-area: pa7; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs8 { grid-area: pa8; /*color: white;*/ font-size: 12px; } -.sheet-psykana_ability_gs9 { grid-area: pa9; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs10 { grid-area: pa10; /*color: white;*/ font-size: 12px; } -.sheet-psykana_ability_gs11 { grid-area: pa11; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs12 { grid-area: pa12; /*color: white;*/ font-size: 12px; } +.sheet-psykana_ability_gs5 { grid-area: pa5; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs6 { grid-area: pa6; font-size: 12px; } +.sheet-psykana_ability_gs7 { grid-area: pa7; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs8 { grid-area: pa8; font-size: 12px; } +.sheet-psykana_ability_gs9 { grid-area: pa9; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs10 { grid-area: pa10; font-size: 12px; } +.sheet-psykana_ability_gs11 { grid-area: pa11; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs12 { grid-area: pa12; font-size: 12px; } -.sheet-psykana_ability_gs13 { grid-area: pa13; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs14 { grid-area: pa14; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs15 { grid-area: pa15; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs16 { grid-area: pa16; /*color: white;*/ font-size: 12px; } -.sheet-psykana_ability_gs17 { grid-area: pa17; /*color: white;*/ font-size: 12px; width: 70px!important;} -.sheet-psykana_ability_gs18 { grid-area: pa18; /*color: white;*/ font-size: 12px; width: 50px!important;} +.sheet-psykana_ability_gs13 { grid-area: pa13; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs14 { grid-area: pa14; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs15 { grid-area: pa15; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs16 { grid-area: pa16; font-size: 12px; } +.sheet-psykana_ability_gs17 { grid-area: pa17; font-size: 12px; width: 70px!important;} +.sheet-psykana_ability_gs18 { grid-area: pa18; font-size: 12px; width: 50px!important;} -.sheet-psykana_ability_gs19 { grid-area: pa19; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs20 { grid-area: pa20; /*color: white;*/ font-size: 12px; } -.sheet-psykana_ability_gs21 { grid-area: pa21; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs22 { grid-area: pa22; /*color: white;*/ font-size: 12px; } -.sheet-psykana_ability_gs23 { grid-area: pa23; /*color: white;*/ font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs24 { grid-area: pa24; /*color: white;*/ font-size: 12px; } +.sheet-psykana_ability_gs19 { grid-area: pa19; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs20 { grid-area: pa20; font-size: 12px; } +.sheet-psykana_ability_gs21 { grid-area: pa21; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs22 { grid-area: pa22; font-size: 12px; } +.sheet-psykana_ability_gs23 { grid-area: pa23; font-size: 12px; padding: 0px 2px; } +.sheet-psykana_ability_gs24 { grid-area: pa24; font-size: 12px; } .sheet-psykana_ability_grid1 { /* gs1-4, Name, Subtype */ align-items: center; @@ -1280,8 +1278,8 @@ ______________________________ start of vehicles page __________________________ -.sheet-vehicles_grid1 { margin-right: 10px; background: rgba(0,0,0,0.25); border-top: 2px solid #6e8b3d38; border-left: 2px solid #6e8b3d38; border-right: 2px solid #6e8b3d38; border-top-left-radius: 10px; border-top-right-radius: 10px; /*color: white;*/ font-family: inherit; } -.sheet-vehicles_grid2 { margin-right: 10px; background: rgba(0,0,0,0.25); border-left: 2px solid #6e8b3d38; border-right: 2px solid #6e8b3d38; /*color: white;*/ font-family: inherit; } +.sheet-vehicles_grid1 { margin-right: 10px; background: rgba(0,0,0,0.25); border-top: 2px solid #6e8b3d38; border-left: 2px solid #6e8b3d38; border-right: 2px solid #6e8b3d38; border-top-left-radius: 10px; border-top-right-radius: 10px; font-family: inherit; } +.sheet-vehicles_grid2 { margin-right: 10px; background: rgba(0,0,0,0.25); border-left: 2px solid #6e8b3d38; border-right: 2px solid #6e8b3d38; font-family: inherit; } .sheet-vehicle_weapons { grid-area: vgw; } .sheet-vehicles_divider { display: grid; @@ -1290,7 +1288,7 @@ ______________________________ start of vehicles page __________________________ 'vg1 vgw' 'vg2 vgw'; } -.sheet-vehicles_Gn { grid-area: vn; background: rgba(0,0,0,0.25); border: none; border-bottom: 1px solid white; border-radius: 9px 9px 0px 0px; /*color: white;*/ font-family: inherit; text-align: center; font-size: 15px; } +.sheet-vehicles_Gn { grid-area: vn; background: rgba(0,0,0,0.25); border: none; border-bottom: 1px solid white; border-radius: 9px 9px 0px 0px; font-family: inherit; text-align: center; font-size: 15px; } .sheet-vehicles_Gs { grid-area: vs; height: 28.5px; margin-bottom: -8px; margin-top: -1px; border-top: 1px solid white; } .sheet-vehicles_Gt { grid-area: vt; height: 28.5px; margin-bottom: -8px; margin-top: -1px; border-top: 1px solid white; } .sheet-vehicles_G1 { grid-area: v1 } @@ -1387,7 +1385,6 @@ ______________________________ start of rolltemplate ___________________________ .sheet-rolltemplate-mythic .sheet-template-header, .sheet-rolltemplate-mythic .sheet-template-row { - /*color: white;*/ line-height: 1.6em; font-size: 1.1em; font-family: inherit; diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index 7611e45142..8ed7403285 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -25,9 +25,7 @@
- - -
+
@@ -53,140 +51,159 @@
+
+ + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + +
+ +
+

Characteristics Modifiers

+
+ + + + + + + + + + +
+

@@ -458,7 +475,7 @@ -
@@ -474,7 +491,7 @@ -
@@ -491,7 +508,7 @@ -
@@ -507,7 +524,7 @@ -
@@ -525,7 +542,7 @@ -
@@ -541,7 +558,7 @@ -
@@ -557,7 +574,7 @@ -
@@ -572,7 +589,7 @@ -
@@ -589,7 +606,7 @@ -
@@ -605,7 +622,7 @@ -
@@ -621,7 +638,7 @@ -
@@ -637,7 +654,7 @@ -
@@ -654,7 +671,7 @@ -
@@ -670,7 +687,7 @@ -
@@ -686,7 +703,7 @@ -
@@ -702,7 +719,7 @@ -
@@ -718,7 +735,7 @@ -
@@ -734,7 +751,7 @@ -
@@ -750,7 +767,7 @@ -
@@ -765,7 +782,7 @@ -
@@ -781,7 +798,7 @@ -
@@ -797,7 +814,7 @@ -
@@ -813,7 +830,7 @@ -
@@ -829,7 +846,7 @@ -
@@ -845,7 +862,7 @@ -
@@ -862,7 +879,7 @@ -
@@ -878,7 +895,7 @@ -
@@ -902,7 +919,7 @@ -
@@ -933,7 +950,7 @@ -
@@ -950,7 +967,7 @@ -
@@ -981,7 +998,7 @@ -
@@ -998,7 +1015,7 @@ -
@@ -1029,7 +1046,7 @@ -
@@ -1046,7 +1063,7 @@ -
@@ -1077,7 +1094,7 @@ -
@@ -1094,7 +1111,7 @@ -
@@ -1126,7 +1143,7 @@ -
@@ -1144,7 +1161,7 @@ -
@@ -1215,7 +1232,7 @@

- @@ -1378,7 +1395,7 @@

- @@ -1826,27 +1843,27 @@ - - - - - - -
@@ -1916,7 +1933,7 @@

- @@ -1941,7 +1958,7 @@ - @@ -2078,7 +2095,7 @@

- @@ -2270,7 +2287,7 @@

- @@ -2395,23 +2412,6 @@ NOTE: replace worker by javascript for IDE functionality --> From 6be0c596cfa8da06b7a2a8faf029cd32f4b6c336 Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Thu, 18 Mar 2021 17:03:00 +0100 Subject: [PATCH 03/14] added multi hits to Psykana powers --- ShadowbaneInquisition/Shadowbane.css | 45 +++--- ShadowbaneInquisition/Shadowbane.html | 200 ++++++++++++++++++-------- 2 files changed, 167 insertions(+), 78 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.css b/ShadowbaneInquisition/Shadowbane.css index 7ab4e34fc2..9434e942f4 100644 --- a/ShadowbaneInquisition/Shadowbane.css +++ b/ShadowbaneInquisition/Shadowbane.css @@ -346,26 +346,31 @@ _____________ start of grid structure for unnatural characteristics, size dropdo .sheet-unnatgs_width { width: 40px; } .sheet-unnatgs1 { grid-area: amy1; font-size: 15px; font-family: inherit; letter-spacing: 0px; text-align: center; } -.sheet-unnatgs2 { grid-area: amy2; z-index: 1; position: relative; } -.sheet-unnatgs3 { grid-area: amy3; z-index: 1; position: relative; } -.sheet-unnatgs4 { grid-area: amy4; z-index: 1; position: relative; } -.sheet-unnatgs5 { grid-area: amy5; z-index: 1; position: relative; } -.sheet-unnatgs6 { grid-area: amy6; z-index: 1; position: relative; } -.sheet-unnatgs7 { grid-area: amy7; z-index: 1; position: relative; } -.sheet-unnatgs8 { grid-area: amy8; z-index: 1; position: relative; } -.sheet-unnatgs9 { grid-area: amy9; z-index: 1; position: relative; } -.sheet-unnatgs10 { grid-area: amy10; z-index: 1; position: relative; } -.sheet-unnatgs11 { grid-area: amy11; z-index: 1; position: relative; } -.sheet-unnatgs12 { grid-area: amy12; font-family: inherit; font-size: 14px; text-align: center; } -.sheet-unnatgs13 { grid-area: amy13; font-family: inherit; font-size: 14px; text-align: center; } -.sheet-unnatgs14 { grid-area: amy14; font-family: inherit; font-size: 14px; text-align: center; } -.sheet-unnatgs15 { grid-area: amy15; font-family: inherit; font-size: 14px; text-align: center; } -.sheet-unnatgs16 { grid-area: amy16; font-family: inherit; font-size: 14px; text-align: center; } -.sheet-unnatgs17 { grid-area: amy17; font-family: inherit; font-size: 14px; text-align: center; } -.sheet-unnatgs18 { grid-area: amy18; font-family: inherit; font-size: 14px; text-align: center; } -.sheet-unnatgs19 { grid-area: amy19; font-family: inherit; font-size: 14px; text-align: center; } -.sheet-unnatgs20 { grid-area: amy20; font-family: inherit; font-size: 14px; text-align: center; } -.sheet-unnatgs21 { grid-area: amy21; font-family: inherit; font-size: 14px; text-align: center; } +.sheet-unnatgs2 { grid-area: amy2; } +.sheet-unnatgs3 { grid-area: amy3; } +.sheet-unnatgs4 { grid-area: amy4; } +.sheet-unnatgs5 { grid-area: amy5; } +.sheet-unnatgs6 { grid-area: amy6; } +.sheet-unnatgs7 { grid-area: amy7; } +.sheet-unnatgs8 { grid-area: amy8; } +.sheet-unnatgs9 { grid-area: amy9; } +.sheet-unnatgs10 { grid-area: amy10; } +.sheet-unnatgs11 { grid-area: amy11; } + +.sheet-unnatgs12, .sheet-unnatgs13, .sheet-unnatgs14, .sheet-unnatgs15, .sheet-unnatgs16, +.sheet-unnatgs17, .sheet-unnatgs18, .sheet-unnatgs19, .sheet-unnatgs20, .sheet-unnatgs21 { + font-size: 14px; +} +.sheet-unnatgs12 { grid-area: amy12; } +.sheet-unnatgs13 { grid-area: amy13; } +.sheet-unnatgs14 { grid-area: amy14; } +.sheet-unnatgs15 { grid-area: amy15; } +.sheet-unnatgs16 { grid-area: amy16; } +.sheet-unnatgs17 { grid-area: amy17; } +.sheet-unnatgs18 { grid-area: amy18; } +.sheet-unnatgs19 { grid-area: amy19; } +.sheet-unnatgs20 { grid-area: amy20; } +.sheet-unnatgs21 { grid-area: amy21; } .sheet-characteristics_unnat { display: grid; diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index 8ed7403285..08b9ee229e 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -71,6 +71,7 @@ + @@ -90,8 +91,8 @@ | - + @@ -201,7 +202,7 @@ - + @@ -238,6 +239,33 @@ +
+
+
+

Characteristics Bonus

+ + + + + + + + + + +

WS

+

BS

+

STR

+

TOU

+

AGI

+

INT

+

PER

+

WP

+

FEL

+

INF

+
+
+

@@ -1395,7 +1423,7 @@

- @@ -2095,7 +2123,7 @@

- @@ -2212,6 +2240,7 @@
Class
🗖

- -
+
Name
Subtype
@@ -2336,6 +2365,13 @@
Power Mod
+
Type
+
Action
@@ -2353,7 +2389,6 @@
-
@@ -2529,128 +2564,141 @@ NOTE: replace worker by javascript for IDE functionality 'per', 'per_unnat', 'per_advancement', 'per_mod', 'wp', 'wp_unnat', 'wp_advancement', 'wp_mod', 'fel', 'fel_unnat', 'fel_advancement', 'fel_mod', + 'inf', 'inf_unnat', 'agi', 'agi_unnat', 'agi_advancement', 'agi_mod', 'agi_mov_mod', 'armor_agi', 'armor_limit', - 'frenzy' + 'fatigue_ignore', 'psykana_class' ]; on('sheet:opened ' + fieldsMWF.map(field => 'change:' + field).join(' '), function() { getAttrs(fieldsMWF, function(values) { console.log(values); - // FRENZY - var frenzy = parseInt(values['size'], 10) || 0; // SIZE var size = parseInt(values['size'], 10) || 0; // FATIGUE var fatigue = parseInt(values['fatigue'], 10) || 0; + var fatigueIgnore = parseInt(values['fatigue_ignore'], 10) || 0; + if (fatigueIgnore) fatigue = 0; // CARRY var carry = parseInt(values['carry'], 10) || 0; var weight_total = parseInt(values['weight_total'], 10) || 0; // WS var ws = parseInt(values['ws'], 10) || 0, ws_unnat = parseInt(values['ws_unnat'], 10) || 0, - ws_modifier = parseInt(values['ws_mod'], 10) || 0, + ws_mod = parseInt(values['ws_mod'], 10) || 0, ws_advancement = parseInt(values['ws_advancement'], 10) || 0; - var wsTotal = ws + ws_advancement + ws_modifier; - var ws_mod = Math.floor(wsTotal / 10 + ws_unnat); - if (ws_mod < fatigue) { + var wsTotal = ws + ws_advancement + ws_mod; + var ws_bonus = Math.floor(wsTotal / 10 + ws_unnat); + if (ws_bonus < fatigue) { wsTotal = Math.ceil(wsTotal / 2); - ws_mod = Math.floor(wsTotal / 10 + ws_unnat); + ws_bonus = Math.floor(wsTotal / 10 + ws_unnat); } // BS var bs = parseInt(values['bs'], 10) || 0, bs_unnat = parseInt(values['bs_unnat'], 10) || 0, - bs_modifier = parseInt(values['bs_mod'], 10) || 0, + bs_mod = parseInt(values['bs_mod'], 10) || 0, bs_advancement = parseInt(values['bs_advancement'], 10) || 0; - var bsTotal = bs + bs_advancement + bs_modifier; - var bs_mod = Math.floor(bsTotal / 10 + bs_unnat); - if (bs_mod < fatigue) { + var bsTotal = bs + bs_advancement + bs_mod; + var bs_bonus = Math.floor(bsTotal / 10 + bs_unnat); + if (bs_bonus < fatigue) { bsTotal = Math.ceil(bsTotal / 2); - bs_mod = Math.floor(bsTotal / 10 + bs_unnat); + bs_bonus = Math.floor(bsTotal / 10 + bs_unnat); } // STR var str = parseInt(values['str'], 10) || 0, str_unnat = parseInt(values['str_unnat'], 10) || 0, - str_modifier = parseInt(values['str_mod'], 10) || 0, + str_mod = parseInt(values['str_mod'], 10) || 0, str_advancement = parseInt(values['str_advancement'], 10) || 0; - var strTotal = str + str_advancement + str_modifier; - var str_mod = Math.floor(strTotal / 10 + str_unnat); - if (str_mod < fatigue) { + var strTotal = str + str_advancement + str_mod; + var str_bonus = Math.floor(strTotal / 10 + str_unnat); + if (str_bonus < fatigue) { strTotal = Math.ceil(strTotal / 2); - str_mod = Math.floor(strTotal / 10 + str_unnat); + str_bonus = Math.floor(strTotal / 10 + str_unnat); } // TOU var tou = parseInt(values['tou'], 10) || 0, tou_unnat = parseInt(values['tou_unnat'], 10) || 0, - tou_modifier = parseInt(values['tou_mod'], 10) || 0, + tou_mod = parseInt(values['tou_mod'], 10) || 0, tou_advancement = parseInt(values['tou_advancement'], 10) || 0; - var touTotal = tou + tou_advancement + tou_modifier; - var tou_mod = Math.floor(touTotal / 10 + tou_unnat); - if (tou_mod < fatigue) { + var touTotal = tou + tou_advancement + tou_mod; + var tou_bonus = Math.floor(touTotal / 10 + tou_unnat); + if (tou_bonus < fatigue) { touTotal = Math.ceil(touTotal / 2); - tou_mod = Math.floor(touTotal / 10 + tou_unnat); + tou_bonus = Math.floor(touTotal / 10 + tou_unnat); } // AGI var agi = parseInt(values['agi'], 10) || 0, agi_unnat = parseInt(values['agi_unnat'], 10) || 0, - agi_modifier = parseInt(values['agi_mod'], 10) || 0, + agi_mod = parseInt(values['agi_mod'], 10) || 0, agi_advancement = parseInt(values['agi_advancement'], 10) || 0, agi_mov_mod = parseInt(values['agi_mov_mod'], 10) || 0, armor_agi = parseInt(values['armor_agi'], 10) || 0, armor_limit = parseInt(values['armor_limit'], 10) || 0; - var agiTotal = agi + agi_advancement + agi_modifier; + var agiTotal = agi + agi_advancement + agi_mod; if (weight_total > carry) { agiTotal -= 10; } if (armor_limit) {agiTotal = (agiTotal > armor_agi ) ? armor_agi : agiTotal; } - var agi_mod = Math.floor(agiTotal / 10 + agi_unnat); - if (agi_mod < fatigue) { + var agi_bonus = Math.floor(agiTotal / 10 + agi_unnat); + if (agi_bonus < fatigue) { agiTotal = Math.ceil(agiTotal / 2); - agi_mod = Math.floor(agiTotal / 10 + agi_unnat); + agi_bonus = Math.floor(agiTotal / 10 + agi_unnat); } // INT var int = parseInt(values['int'], 10) || 0, int_unnat = parseInt(values['int_unnat'], 10) || 0, - int_modifier = parseInt(values['int_mod'], 10) || 0, + int_mod = parseInt(values['int_mod'], 10) || 0, int_advancement = parseInt(values['int_advancement'], 10) || 0; - var intTotal = int + int_advancement + int_modifier; - var int_mod = Math.floor(intTotal / 10 + int_unnat); - if (int_mod < fatigue) { + var intTotal = int + int_advancement + int_mod; + var int_bonus = Math.floor(intTotal / 10 + int_unnat); + if (int_bonus < fatigue) { intTotal = Math.ceil(intTotal / 2); - int_mod = Math.floor(intTotal / 10 + int_unnat); + int_bonus = Math.floor(intTotal / 10 + int_unnat); } // PER var per = parseInt(values['per'], 10) || 0, per_unnat = parseInt(values['per_unnat'], 10) || 0, - per_modifier = parseInt(values['per_mod'], 10) || 0, + per_mod = parseInt(values['per_mod'], 10) || 0, per_advancement = parseInt(values['per_advancement'], 10) || 0; - var perTotal = per + per_advancement + per_modifier; - var per_mod = Math.floor(perTotal / 10 + per_unnat); - if (per_mod < fatigue) { + var perTotal = per + per_advancement + per_mod; + var per_bonus = Math.floor(perTotal / 10 + per_unnat); + if (per_bonus < fatigue) { perTotal = Math.ceil(perTotal / 2); - per_mod = Math.floor(perTotal / 10 + per_unnat); + per_bonus = Math.floor(perTotal / 10 + per_unnat); } // WP var wp = parseInt(values['wp'], 10) || 0, wp_unnat = parseInt(values['wp_unnat'], 10) || 0, - wp_modifier = parseInt(values['wp_mod'], 10) || 0, + wp_mod = parseInt(values['wp_mod'], 10) || 0, wp_advancement = parseInt(values['wp_advancement'], 10) || 0; - var wpTotal = wp + wp_advancement + wp_modifier; - var wp_mod = Math.floor(wpTotal / 10 + wp_unnat); - if (wp_mod < fatigue) { + var wpTotal = wp + wp_advancement + wp_mod; + var wp_bonus = Math.floor(wpTotal / 10 + wp_unnat); + if (wp_bonus < fatigue) { wpTotal = Math.ceil(wpTotal / 2); - wp_mod = Math.floor(wpTotal / 10 + wp_unnat); + wp_bonus = Math.floor(wpTotal / 10 + wp_unnat); } // FEL var fel = parseInt(values['fel'], 10) || 0, fel_unnat = parseInt(values['fel_unnat'], 10) || 0, - fel_modifier = parseInt(values['fel_mod'], 10) || 0, + fel_mod = parseInt(values['fel_mod'], 10) || 0, fel_advancement = parseInt(values['fel_advancement'], 10) || 0; - var felTotal = fel + fel_advancement + fel_modifier; - var fel_mod = Math.floor(felTotal / 10 + fel_unnat); - if (fel_mod < fatigue) { + var felTotal = fel + fel_advancement + fel_mod; + var fel_bonus = Math.floor(felTotal / 10 + fel_unnat); + // Blank FEL halfing + var blank = values['psykana_class'] + if (blank === '-1') felTotal = Math.ceil(felTotal / 2); + if (fel_bonus < fatigue) { felTotal = Math.ceil(felTotal / 2); - fel_mod = Math.floor(felTotal / 10 + fel_unnat); + fel_bonus = Math.floor(felTotal / 10 + fel_unnat); + } + // INF + var inf = parseInt(values['inf'], 10) || 0, + inf_unnat = parseInt(values['inf_unnat'], 10) || 0; + var infTotal = inf; + var inf_bonus = Math.floor(infTotal / 10 + inf_unnat); + if (inf_bonus < fatigue) { + infTotal = Math.ceil(infTotal / 2); + inf_bonus = Math.floor(infTotal / 10 + inf_unnat); } - var move_mod = agi_mod + size + agi_mov_mod; - var carry_mod = str_mod + tou_mod; + var move_mod = agi_bonus + size + agi_mov_mod; + var carry_mod = str_bonus + tou_bonus; var carry_calc; // 40k system does their carryweight off a table _______________________ @@ -2688,14 +2736,25 @@ NOTE: replace worker by javascript for IDE functionality lift: (carry_calc * 2), push: (carry_calc * 4), bsTotal: (bsTotal), + bsB: (bs_bonus), wsTotal: (wsTotal), + wsB: (ws_bonus), strTotal: (strTotal), + strB: (str_bonus), touTotal: (touTotal), + touB: (tou_bonus), agiTotal: (agiTotal), + agiB: (agi_bonus), intTotal: (intTotal), + intB: (int_bonus), perTotal: (perTotal), + perB: (per_bonus), wpTotal: (wpTotal), + wpB: (wp_bonus), felTotal: (felTotal), + felB: (fel_bonus), + infTotal: (infTotal), + infB: (inf_bonus), }); // 0 mod movement override _______________________________________________ @@ -3480,6 +3539,31 @@ NOTE: replace worker by javascript for IDE functionality / Max: {{WS_bonus}} {{/rollTotal() multi -20}} {{/M_type}} + {{#P_multi}} + {{#rollTotal() P_multi 1}} + spacer +
Psychic Barrage: + {{#rollBetween() dos 1 2}}1 Hit {{/rollBetween() dos 1 2}} + {{#rollBetween() dos 3 4}}2 Hits {{/rollBetween() dos 3 4}} + {{#rollBetween() dos 5 6}}3 Hits {{/rollBetween() dos 5 6}} + {{#rollBetween() dos 7 8}}4 Hits {{/rollBetween() dos 7 8}} + {{#rollBetween() dos 9 10}}5 Hits {{/rollBetween() dos 9 10}} + {{#rollBetween() dos 11 12}}6 Hits {{/rollBetween() dos 11 12}} + {{#rollBetween() dos 13 14}}7 Hits {{/rollBetween() dos 13 14}} + {{#rollBetween() dos 15 16}}8 Hits {{/rollBetween() dos 15 16}} + {{#rollBetween() dos 17 18}}9 Hits {{/rollBetween() dos 17 18}} + {{#rollBetween() dos 19 20}}10 Hits {{/rollBetween() dos 19 20}} + {{#rollGreater() dos 20}}10+ Hits {{/rollGreater() dos 20}} + / Max: {{epr}}
+ {{/rollTotal() P_multi 1}} + {{#rollTotal() P_multi 2}} + spacer +
Psychic Storm: + {{#rollTotal() dos 1}}1 Hit {{/rollTotal() dos 1}} + {{#^rollTotal() dos 1}}{{dos}} Hits {{/^rollTotal() dos 1}} + / Max: {{epr}}
+ {{/rollTotal() P_multi 2}} + {{/P_multi}} {{/^rollGreater() roll target }} {{#rollGreater() roll target }}
From 443ab56e209d435d6870417a4afaa9d2353ced8d Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Mon, 22 Mar 2021 23:18:31 +0100 Subject: [PATCH 04/14] started buff menu --- ShadowbaneInquisition/Shadowbane.html | 36 +++++++++++++++++++-------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index 08b9ee229e..eec32b4b53 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -191,19 +191,35 @@
+

Characteristics Modifiers

- - - - - - - - - - + + + + + + + + + +
+

From 4334d64c4698e67b0e5f4102729764863ef9898c Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Mon, 22 Mar 2021 23:18:56 +0100 Subject: [PATCH 05/14] started export/import function --- ShadowbaneInquisition/Shadowbane.html | 253 ++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index eec32b4b53..9766c5f419 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -2452,6 +2452,259 @@
+
+ { + "name": "", + "homeworld": "", + "background": "", + "role": "", + "eliteAdvances": "", + "notes": "", + "player":"", + "appearance":" ", + "quirks":"", + "divination":"", + "superstition":"", + "size":"", + "movementModifier": "", + "weaponSkill": {"base": , "advancement": , "modifier": , "unnatural": }, + "ballisticSkill": {"base": , "advancement": , "modifier": , "unnatural": }, + "strenght": {"base": , "advancement": , "modifier": , "unnatural": }, + "toughness": {"base": , "advancement": , "modifier": , "unnatural": }, + "agility": {"base": , "advancement": , "modifier": , "unnatural": }, + "intelligence": {"base": , "advancement": , "modifier": , "unnatural": }, + "perception": {"base": , "advancement": , "modifier": , "unnatural": }, + "willpower": {"base": , "advancement": , "modifier": , "unnatural": }, + "fellowship": {"base": , "advancement": , "modifier": , "unnatural": }, + "influence": {"base": , "advancement": , "modifier": , "unnatural": }, + "wounds": {"current": , "max": , "criticals": {"head": "","body": "","arm_left": "","arm_right": "","leg_left": "","leg_right": ""}}, + "fate": {"current": , "max": , "setting": ""}, + "fatigue": {"current": , "modifier": }, + "forcefield": {"name": "", "protection": "", "overload": ""}, + "skills": [ + + + {"name": "acrobatics", "modifier": , "level": }, + + + + {"name": "athletics", "modifier": , "level": }, + + + + {"name": "awareness", "modifier": , "level": }, + + + + {"name": "charm", "modifier": , "level": }, + + + + {"name": "command", "modifier": , "level": }, + + + + {"name": "commerce", "modifier": , "level": }, + + + + {"name": "deceive", "modifier": , "level": }, + + + + {"name": "dodge", "modifier": , "level": }, + + + + {"name": "inquiry", "modifier": , "level": }, + + + + {"name": "interrogation", "modifier": , "level": }, + + + + {"name": "intimidate", "modifier": , "level": }, + + + + {"name": "logic", "modifier": , "level": }, + + + + {"name": "medicae", "modifier": , "level": }, + + + + {"name": "nav_surface", "modifier": , "level": }, + + + + {"name": "nav_stellar", "modifier": , "level": }, + + + + {"name": "nav_warp", "modifier": , "level": }, + + + + {"name": "op_aero", "modifier": , "level": }, + + + + {"name": "op_surface", "modifier": , "level": }, + + + + {"name": "op_void", "modifier": , "level": }, + + + + {"name": "parry", "modifier": , "level": }, + + + + {"name": "psyniscience", "modifier": , "level": }, + + + + {"name": "scrutiny", "modifier": , "level": }, + + + + {"name": "security", "modifier": , "level": }, + + + + {"name": "sleight", "modifier": , "level": }, + + + + {"name": "stealth", "modifier": , "level": }, + + + + {"name": "survival", "modifier": , "level": }, + + + + {"name": "tech_use", "modifier": , "level": }, + + null + ], + "lores": { + "common": [ + + + {"name": "common-lore", "modifier": , "level": }, + + ], + "scholastic": [ + + + {"name": "scholastic-lore", "modifier": , "level": }, + + ], + "forbidden": [ + + + {"name": "forbidden-lore", "modifier": , "level": }, + + ], + }, + "linguistics": [ + + + {"name": "linguistics", "modifier": , "level": }, + + ], + "trades": [ + + + {"name": "trade", "modifier": , "level": }, + + ], + "conditions": [ +
+ {"name": "", "description":""}, +
+ null +
], + "abilities": [ + {"name": "", "description":""}, +
+ {"name": "", "description":""}, +
+ null +
], + "traits": [ + {"name": "", "description":""}, +
+ {"name": "", "description":""}, +
+ null +
], + "inventory": { + "weapons": { + "ranged": [ +
{ + "name": "", + "class":"", + "range":"", + "damage":"", + "pen":"", + "type":"", + "max":"", + "min":"", + "vengeful":"", + "accurate":"", + "burst":"", + "auto":"", + "mag":"", + "mag_max":"", + "trained":"", + "mod1":"", + "reload":"", + "weight":"", + "domain":"", + "mishap_chance":"", + "carry":"", + "special":"", + "description":"" + },
+ null +
], + "melee": [ +
{ + "name": "", + "class":"Melee", + "reach":"", + "damage":"", + "pen":"", + "type":"", + "max":"", + "min":"", + "vengeful":"", + "trained":"", + "mod1":"", + "weight":"", + "domain":"", + "carry":"", + "special":"", + "description":"" + },
+ null +
] + }, + "gears": [], + "tools": [], + "consumables": [], + "armors": [], + "cybernetics": [], + } + } +
+ From 58030e9ea4f976cf1ceb95e995e47a87d5e8bcba Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Mon, 22 Mar 2021 23:19:41 +0100 Subject: [PATCH 06/14] added carry to weapons --- ShadowbaneInquisition/Shadowbane.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index 9766c5f419..020aebaec6 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -1411,8 +1411,8 @@ -
Spray?
- +
Carry?
+
@@ -1531,6 +1531,8 @@ +
Carry?
+
From 7350be21709d76e90fe6ed0e19a3419e0f7ff2ca Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Mon, 22 Mar 2021 23:19:59 +0100 Subject: [PATCH 07/14] removed console log --- ShadowbaneInquisition/Shadowbane.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index 020aebaec6..b85de93068 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -2839,9 +2839,9 @@ NOTE: replace worker by javascript for IDE functionality 'agi', 'agi_unnat', 'agi_advancement', 'agi_mod', 'agi_mov_mod', 'armor_agi', 'armor_limit', 'fatigue_ignore', 'psykana_class' ]; - on('sheet:opened ' + fieldsMWF.map(field => 'change:' + field).join(' '), function() { + on('sheet:opened ' + fieldsMWF.map(field => 'change:' + field).join(' '), function(e) { + console.log(e); getAttrs(fieldsMWF, function(values) { - console.log(values); // SIZE var size = parseInt(values['size'], 10) || 0; // FATIGUE From 6d10ecae07eb0b0d5a39636e82062c8be5de3b36 Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Mon, 22 Mar 2021 23:21:01 +0100 Subject: [PATCH 08/14] created custom get repeating objects function --- ShadowbaneInquisition/Shadowbane.css | 8 ++++++ ShadowbaneInquisition/Shadowbane.html | 39 ++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.css b/ShadowbaneInquisition/Shadowbane.css index 9434e942f4..95db928b35 100644 --- a/ShadowbaneInquisition/Shadowbane.css +++ b/ShadowbaneInquisition/Shadowbane.css @@ -1361,6 +1361,14 @@ the appropriate Operate check is displayed, on an invalid selection there is no /* ______________________________ end of vehicles page ______________________________ +______________________________ start of json ___________________________________________________________ */ +.sheet-json_skill {display: none} +input[type="checkbox"]:not(:checked) ~ .sheet-json_skill {display: inline;} + +.sheet-json_container span .repcontrol {display: none;} +.sheet-json_container span .repcontainer {display: inline; box-shadow: none; } +.sheet-json_container span .repcontainer .repitem {display: inline;} +/* ______________________________ end of json ______________________________ ______________________________ start of rolltemplate ___________________________________________________________ */ diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index b85de93068..4aba083218 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -3480,13 +3480,46 @@ NOTE: replace worker by javascript for IDE functionality }); // ___________________________________________________________________________ - // _________________________ weapon damage primitive _________________________ + // __________________________ get repeating objects __________________________ // ___________________________________________________________________________ - const toJson = function () { - /**/ + /** + * get the attributes from a repeating section and pass them in an array of objects + * @param {String} section - name of the repeating section + * @param {Array} fields - list of the attributes + * @param {Function} callback - function to pass the array of objects + */ + const getSectionObjects = function (section, fields, callback) { + if (!Array.isArray(fields)) fields = [fields]; + getSectionIDs(`repeating_${section}`, idArray => { + const attrArray = idArray.reduce( (m,id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${(!Array.isArray(field)) ? field : field[1]}`))],[]); + getAttrs(attrArray, v => { + const objects = []; + idArray.forEach(id => { + let obj = { _id : id }; + fields.forEach( field => { + if (!Array.isArray(field)) field = [field, field] + let [key, name] = field; + obj[`${key}`] = v[`repeating_${section}_${id}_${name}`]; + }); + objects.push(obj) + }); + callback(objects); + }); + }); } + const GEAR = [ + ['carry','gear_carry_r'], + ['name','gear_name_r'], + ['craftsmanship','gear_crafts_r'], + ['quantity','gear_quantity_r'], + ['availability','gear_avail_r'], + ['weight','gear_weight_r'] + ] + + on('sheet:opened', () => {getSectionObjects('gear', GEAR, values => {console.log(values)})}); + From c98943ebad44fbd1c08fe216c06e38907c0fbbcb Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Wed, 24 Mar 2021 20:09:49 +0100 Subject: [PATCH 09/14] finished export started import function --- ShadowbaneInquisition/Shadowbane.css | 5 + ShadowbaneInquisition/Shadowbane.html | 509 ++++++++++++++++++++++---- 2 files changed, 443 insertions(+), 71 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.css b/ShadowbaneInquisition/Shadowbane.css index 95db928b35..367ecc701c 100644 --- a/ShadowbaneInquisition/Shadowbane.css +++ b/ShadowbaneInquisition/Shadowbane.css @@ -1368,6 +1368,11 @@ input[type="checkbox"]:not(:checked) ~ .sheet-json_skill {display: inline;} .sheet-json_container span .repcontrol {display: none;} .sheet-json_container span .repcontainer {display: inline; box-shadow: none; } .sheet-json_container span .repcontainer .repitem {display: inline;} +.sheet-json_container { + border: solid black 3px; + padding: 5px; + word-break: break-all; +} /* ______________________________ end of json ______________________________ ______________________________ start of rolltemplate ___________________________________________________________ */ diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index 4aba083218..b0c908dd12 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -2114,8 +2114,6 @@ -
Spray?
-
@@ -2454,35 +2452,46 @@
-
+ + + +
{ "name": "", "homeworld": "", "background": "", "role": "", "eliteAdvances": "", - "notes": "", + "note": "", "player":"", "appearance":" ", "quirks":"", "divination":"", "superstition":"", "size":"", + "xp": "", "movementModifier": "", "weaponSkill": {"base": , "advancement": , "modifier": , "unnatural": }, "ballisticSkill": {"base": , "advancement": , "modifier": , "unnatural": }, "strenght": {"base": , "advancement": , "modifier": , "unnatural": }, - "toughness": {"base": , "advancement": , "modifier": , "unnatural": }, - "agility": {"base": , "advancement": , "modifier": , "unnatural": }, - "intelligence": {"base": , "advancement": , "modifier": , "unnatural": }, - "perception": {"base": , "advancement": , "modifier": , "unnatural": }, - "willpower": {"base": , "advancement": , "modifier": , "unnatural": }, - "fellowship": {"base": , "advancement": , "modifier": , "unnatural": }, - "influence": {"base": , "advancement": , "modifier": , "unnatural": }, + "toughness": {"base": , "advancement": , "modifier": , "unnatural": }, + "agility": {"base": , "advancement": , "modifier": , "unnatural": }, + "intelligence": {"base": , "advancement": , "modifier": , "unnatural": }, + "perception": {"base": , "advancement": , "modifier": , "unnatural": }, + "willpower": {"base": , "advancement": , "modifier": , "unnatural": }, + "fellowship": {"base": , "advancement": , "modifier": , "unnatural": }, + "influence": {"base": , "advancement": , "modifier": , "unnatural": }, + "buffs": [], "wounds": {"current": , "max": , "criticals": {"head": "","body": "","arm_left": "","arm_right": "","leg_left": "","leg_right": ""}}, "fate": {"current": , "max": , "setting": ""}, "fatigue": {"current": , "modifier": }, "forcefield": {"name": "", "protection": "", "overload": ""}, + "conditions": [ +
+ {"name": "", "description":""}, +
+ null +
], "skills": [ @@ -2592,43 +2601,57 @@ {"name": "tech_use", "modifier": , "level": }, + + + {"name": "forbidden-lore", "modifier": , "level": }, + + + + {"name": "scholastic-lore", "modifier": , "level": }, + + + + {"name": "common-lore", "modifier": , "level": }, + + + + {"name": "trade", "modifier": , "level": }, + + + + {"name": "linguistics", "modifier": , "level": }, + null ], "lores": { "common": [ - - - {"name": "common-lore", "modifier": , "level": }, - - ], +
+ {"name" : "", "modifier": , "level": }, +
+ null +
], "scholastic": [ - - - {"name": "scholastic-lore", "modifier": , "level": }, - +
+ {"name" : "", "modifier": , "level": }, +
+ null
], "forbidden": [ - - - {"name": "forbidden-lore", "modifier": , "level": }, - - ], +
+ {"name" : "", "modifier": , "level": }, +
+ null + ] }, "linguistics": [ - - - {"name": "linguistics", "modifier": , "level": }, - +
+ {"name" : "", "modifier": , "level": }, +
+ null
], "trades": [ - - - {"name": "trade", "modifier": , "level": }, - - ], - "conditions": [ -
- {"name": "", "description":""}, +
+ {"name" : "", "modifier": , "level": },
null ], @@ -2698,14 +2721,189 @@ null ] }, - "gears": [], + "gears": [ + {"carry":"", "name":"", "craftsmanship":"", "quantity":"", "availability":"", "weight":"", "description":""}, +
{ + "carry":"", + "name":"", + "craftsmanship":"", + "quantity":"", + "availability":"", + "weight":"", + "description":""}, +
+ null +
], "tools": [], "consumables": [], + "armor": {"maxAgi": "","limit": "","head": "","body": "","arm_right": "","arm_left": "","leg_right": "","leg_left": "", "description": ""}, "armors": [], - "cybernetics": [], + "cybernetics": [ + {"name":"","location":"","description":""}, +
{ + "name":"", + "location":"", + "description":""}, +
+ null +
] + }, + "advancements": { + "aptitudes": [ + "","","", +
+ "","","", +
+ null +
], + "advances": [ + {"name":"","cost":""}, + {"name":"","cost":""}, +
+ {"name":"","cost":""}, + {"name":"","cost":""}, +
+ null +
], + "training":{ + "bolt": "", + "chain": "", + "flame": "", + "las": "", + "launcher": "", + "melta": "", + "plasma": "", + "power": "", + "low": "", + "shock": "", + "solid": "", + "heavy": "" + } + }, + "insanity": { + "points": "", + "disorders": [ +
+ {"name": "", "description": ""}, +
+ null +
] + }, + "corruption": { + "points": "", + "mutations": [ +
+ {"name": "", "description": ""}, +
+ null +
] + }, + "objectives": [ +
+ {"name":"","complete":""}, +
+ null +
], + "notes": [ +
+ "", +
+ null +
], + "vehicles": { + "list": [ +
+ {"name": "", "size": "","world":"","type":"","tactical":"","cruising":"","maneuver":"", "crew":"", "compliment":"", "integrity":"", "integrity_max":"", "armor-front":"", "armor-side":"", "armor-rear":"", "armaments":"", "armaments_desc":"", "traits":"", "traits_desc":"", "modifications":"", "modifications_desc":""}, +
+ null +
], + "weapons": { + "ranged": [ +
{ + "name": "", + "class":"", + "range":"", + "damage":"", + "pen":"", + "type":"", + "max":"", + "min":"", + "vengeful":"", + "accurate":"", + "burst":"", + "auto":"", + "mag":"", + "mag_max":"", + "trained":"", + "mod1":"", + "reload":"", + "weight":"", + "domain":"", + "mishap_chance":"", + "special":"", + "description":"" + },
+ null +
], + "melee": [ +
{ + "name": "", + "class":"Melee", + "reach":"", + "damage":"", + "pen":"", + "type":"", + "max":"", + "min":"", + "vengeful":"", + "trained":"", + "mod1":"", + "weight":"", + "domain":"", + "carry":"", + "special":"", + "description":"" + },
+ null +
] + } + }, + "psykana":{ + "class":"", + "limit":"", + "rating":"", + "push":"", + "sustain":"", + "focus_mod":"", + "sustain_count":"", + "minor":[ +
+ {"name":"","description":""}, +
+ null +
], + "notes":[ +
+ {"name":"","description":""}, +
+ null +
], + "powers":[ +
+ {"name":"","subtype":"","range":"","damage":"","type":"","pen":"","focus":"","mod":"","multi":"","action":"","sustained":"","hitloc":"","ability":"","desc":""}, +
+ null +
] } }
+ + +
+ + + +
@@ -2717,6 +2915,30 @@ NOTE: replace worker by javascript for IDE functionality don't forget to put worker back for published version --> From 82895e083ccbf9119df0f17e34726114150d39e3 Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Sat, 27 Mar 2021 11:15:21 +0100 Subject: [PATCH 10/14] progressed on the import function --- ShadowbaneInquisition/Shadowbane.html | 167 +++++++++++++++++++++++++- 1 file changed, 163 insertions(+), 4 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index b0c908dd12..b71f097d7c 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -2738,6 +2738,7 @@ "consumables": [], "armor": {"maxAgi": "","limit": "","head": "","body": "","arm_right": "","arm_left": "","leg_right": "","leg_left": "", "description": ""}, "armors": [], + "ammo": [], "cybernetics": [ {"name":"","location":"","description":""},
{ @@ -2774,9 +2775,9 @@ "melta": "", "plasma": "", "power": "", - "low": "", + "low-tech": "", "shock": "", - "solid": "", + "solid-projectile": "", "heavy": "" } }, @@ -3809,7 +3810,7 @@ NOTE: replace worker by javascript for IDE functionality attr[`repeating_${section}_${id}_condition_r`] = condition.name || ''; attr[`repeating_${section}_${id}_condition_desc_r`] = condition.description || ''; return attr; - } + }; const mapSkill = (skill) => { if (!skill) return ; let attr = {} @@ -3825,6 +3826,90 @@ NOTE: replace worker by javascript for IDE functionality attr[`repeating_${section}_${id}_${section}_r_mod2`] = skill.modifier || ''; attr[`repeating_${section}_${id}_${section}_r_mod3`] = skill.level || ''; return attr; + }; + const mapAbility = (ablility) => { + if (!ability) return ; + let attr = {}, + section = 'abilities', + id = generateRowID(); + attr[`repeating_${section}_${id}_ability_r`] = ability.name || ''; + attr[`repeating_${section}_${id}_ability_desc_r`] = ability.description || ''; + return attr; + }; + const mapTrait = (trait) => { + if (!trait) return ; + let attr = {}, + section = 'traits', + id = generateRowID(); + attr[`repeating_${section}_${id}_trait_r`] = trait.name || ''; + attr[`repeating_${section}_${id}_trait_desc_r`] = trait.description || ''; + return attr; + } + const mapAptitudes = (aptitudes) => { + var attr = {}; + var section = 'aptitudes'; + for (var i = 0; i < aptitudes?.length; i =+3) { + let id = generateRowID(); + attr[`repeating_${section}_${id}_aptitude_nameL_r`] = aptitudes[i] || ''; + attr[`repeating_${section}_${id}_aptitude_nameM_r`] = aptitudes[i+1] || ''; + attr[`repeating_${section}_${id}_aptitude_nameR_r`] = aptitudes[i+2] || ''; + } + return attr; + }; + const mapRangedWeapon = (weapon, vehicle) => { + if (!weapon) return ; + let attr = {}, + section = (vehicle) ? 'vehiclerangedweapons' : 'rangedweapons', + id = generateRowID(); + if (vehicle) id += '_V'; + attr[`repeating_${section}_${id}_R_weapon_name`] = weapon.name || ''; + attr[`repeating_${section}_${id}_R_weapon_class`] = weapon.class || ''; + attr[`repeating_${section}_${id}_R_weapon_range`] = weapon.range || ''; + attr[`repeating_${section}_${id}_R_weapon_dam-roll`] = weapon.damage || ''; + attr[`repeating_${section}_${id}_R_weapon_pen`] = weapon.pen || ''; + attr[`repeating_${section}_${id}_R_weapon_type`] = weapon.type || ''; + attr[`repeating_${section}_${id}_R_weapon_max`] = weapon.max || ''; + attr[`repeating_${section}_${id}_R_weapon_min`] = weapon.min || ''; + attr[`repeating_${section}_${id}_R_weapon_vengeful`] = weapon.vengeful || ''; + attr[`repeating_${section}_${id}_R_weapon_accurate`] = weapon.accurate || ''; + attr[`repeating_${section}_${id}_R_weapon_burst`] = weapon.burst || ''; + attr[`repeating_${section}_${id}_R_weapon_auto`] = weapon.auto || ''; + attr[`repeating_${section}_${id}_R_weapon_mag`] = weapon.mag || ''; + attr[`repeating_${section}_${id}_R_weapon_mag_max`] = weapon.mag_max || ''; + attr[`repeating_${section}_${id}_R_weapon_trained`] = weapon.trained || ''; + attr[`repeating_${section}_${id}_R_weapon_mod1`] = weapon.mod1 || ''; + attr[`repeating_${section}_${id}_R_weapon_reload`] = weapon.reload || ''; + attr[`repeating_${section}_${id}_R_weapon_weight`] = weapon.weight || ''; + attr[`repeating_${section}_${id}_R_weapon_domain`] = weapon.domain || ''; + attr[`repeating_${section}_${id}_R_weapon_mishap_chance`] = weapon.mishap_chance || ''; + attr[`repeating_${section}_${id}_R_weapon_carry`] = weapon.carry || ''; + attr[`repeating_${section}_${id}_R_weapon_ability_r`] = weapon.special || ''; + attr[`repeating_${section}_${id}_R_weapon_ability_desc_r`] = weapon.description || ''; + return attr; + } + const mapMeleeWeapon = (weapon, vehicle) => { + if (!weapon) return ; + let attr = {}, + section = (vehicle) ? 'vehiclemeleeweapons' : 'meleeweapons', + id = generateRowID(); + if (vehicle) id += '_V'; + attr[`repeating_${section}_${id}_M_weapon_name`] = weapon.name || ''; + attr[`repeating_${section}_${id}_M_weapon_class`] = weapon.class || ''; + attr[`repeating_${section}_${id}_M_weapon_reach`] = weapon.reach || ''; + attr[`repeating_${section}_${id}_M_weapon_dam-roll`] = weapon.damage || ''; + attr[`repeating_${section}_${id}_M_weapon_pen`] = weapon.pen || ''; + attr[`repeating_${section}_${id}_M_weapon_type`] = weapon.type || ''; + attr[`repeating_${section}_${id}_M_weapon_max`] = weapon.max || ''; + attr[`repeating_${section}_${id}_M_weapon_min`] = weapon.min || ''; + attr[`repeating_${section}_${id}_M_weapon_vengeful`] = weapon.vengeful || ''; + attr[`repeating_${section}_${id}_M_weapon_trained`] = weapon.trained || ''; + attr[`repeating_${section}_${id}_M_weapon_mod1`] = weapon.mod1 || ''; + attr[`repeating_${section}_${id}_M_weapon_weight`] = weapon.weight || ''; + attr[`repeating_${section}_${id}_M_weapon_domain`] = weapon.domain || ''; + attr[`repeating_${section}_${id}_M_weapon_carry`] = weapon.carry || ''; + attr[`repeating_${section}_${id}_M_weapon_ability_r`] = weapon.special || ''; + attr[`repeating_${section}_${id}_M_weapon_ability_desc_r`] = weapon.description || ''; + return attr; } // const mapCondition = (condition) => { // if (!condition) return ; @@ -3881,9 +3966,83 @@ NOTE: replace worker by javascript for IDE functionality attributes = {...attributes, ...mapRepeatingSkill(skill, 'trades')}; }); + // TALENTS, TRAITS + data?.abilities?.forEach(ability => { + attributes = {...attributes, ...mapAbilities(ability, 'abilities')}; + }); + data?.traits?.forEach(trait => { + attributes = {...attributes, ...mapTraits(trait)}; + }); + + // INVENTORY + data?.inventory?.weapons?.ranged?.forEach( weapon => { + attributes = {...attributes, ...mapRangedWeapon(weapon)}; + }); + data?.inventory?.weapons?.melee?.forEach( weapon => { + attributes = {...attributes, ...mapMeleeWeapon(weapon)}; + }); + data?.inventory?.gears?.forEach( gear => { + attributes = {...attributes, ...mapGear(gear)}; + }); + data?.inventory?.tools?.forEach( tool => { + attributes = {...attributes, ...mapTool(tool)}; + }); + data?.inventory?.consumables?.forEach( drug => { + attributes = {...attributes, ...mapDrug(drug)}; + }); + attributes = {...attributes, ...mapOldArmor(data?.inventory?.armor)}; + data?.inventory?.armors?.forEach( armor => { + attributes = {...attributes, ...mapArmor(armor)}; + }); + data?.inventory?.ammos?.forEach( ammo => { + attributes = {...attributes, ...mapAmmo(ammo)}; + }); + data?.inventory?.cybernetics?.forEach( cybernetic => { + attributes = {...attributes, ...mapCybernetic(cybernetic)}; + }); + + // ADVANCEMENTS + attributes = {...attributes, ...mapAptitudes(data?.advancements?.aptitudes)}; + data?.advancements?.advances?.forEach( advance => { + attributes = {...attributes, ...mapAdvance(advance)}; + }); + for (var training in data?.advancements?.training) { + attributes[`weapons_training_${training}`] = data?.advancements?.training[training]; + } + + // INSANITY, CORRUPTION + attributes[`insanity_pts`] = data?.insanity?.points; + data?.insanity?.disorders?.forEach( disorder => { + attributes = {...attributes, ...mapDisorder(disorder)}; + }) + attributes[`corruption_pts`] = data?.corruption?.points; + data?.corruption?.mutations?.forEach( mutation => { + attributes = {...attributes, ...mapMutation(mutation)}; + }) + + // OBJECTIVES, NOTES + data?.objectives?.forEach( objective => { + attributes = {...attributes, ...mapObjective(objective)}; + }); + data?.notes?.forEach( note => { + attributes = {...attributes, ...mapNote(note)}; + }); + + // VEHICLES + data?.vehicles?.list?.forEach( vehicle => { + attributes = {...attributes, ...mapVehicle(vehicle)}; + }); + data?.vehicles?.weapons?.ranged?.forEach( weapon => { + attributes = {...attributes, ...mapRangedWeapon(weapon, true)}; + }); + data?.vehicles?.weapons?.melee?.forEach( weapon => { + attributes = {...attributes, ...mapMeleeWeapon(weapon, true)}; + }); + + // PSYKANA + attributes = {...attributes, ...mapPsykana(data?.psykana)}; console.log(attributes); - }) }) From 16276e3a9d4c4b046eebab9c0f4dba5fde01f39d Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Sun, 28 Mar 2021 12:21:47 +0200 Subject: [PATCH 11/14] Import function is done --- ShadowbaneInquisition/Shadowbane.html | 211 ++++++++++++++++++++++---- 1 file changed, 181 insertions(+), 30 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index b71f097d7c..9c6e29a78b 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -2806,7 +2806,7 @@ null ], "notes": [ -
+
"",
null @@ -3063,7 +3063,7 @@ NOTE: replace worker by javascript for IDE functionality 'fatigue_ignore', 'psykana_class' ]; on('sheet:opened ' + fieldsMWF.map(field => 'change:' + field).join(' '), function(e) { - console.log(e); + // console.log(e); getAttrs(fieldsMWF, function(values) { // SIZE var size = parseInt(values['size'], 10) || 0; @@ -3827,7 +3827,7 @@ NOTE: replace worker by javascript for IDE functionality attr[`repeating_${section}_${id}_${section}_r_mod3`] = skill.level || ''; return attr; }; - const mapAbility = (ablility) => { + const mapAbility = (ability) => { if (!ability) return ; let attr = {}, section = 'abilities', @@ -3848,7 +3848,7 @@ NOTE: replace worker by javascript for IDE functionality const mapAptitudes = (aptitudes) => { var attr = {}; var section = 'aptitudes'; - for (var i = 0; i < aptitudes?.length; i =+3) { + for (var i = 0; i < aptitudes?.length; i += 3) { let id = generateRowID(); attr[`repeating_${section}_${id}_aptitude_nameL_r`] = aptitudes[i] || ''; attr[`repeating_${section}_${id}_aptitude_nameM_r`] = aptitudes[i+1] || ''; @@ -3911,14 +3911,165 @@ NOTE: replace worker by javascript for IDE functionality attr[`repeating_${section}_${id}_M_weapon_ability_desc_r`] = weapon.description || ''; return attr; } - // const mapCondition = (condition) => { - // if (!condition) return ; - // let attr = {}, - // section = '', - // id = generateRowID(); - // attr[`repeating_${section}_${id}_`] = ; - // return attr; - // } + const mapGear = (gear) => { + if (!gear) return ; + let attr = {}, + section = 'gear', + id = generateRowID(); + attr[`repeating_${section}_${id}_carry_r`] = gear.carry || ''; + attr[`repeating_${section}_${id}_name_r`] = gear.name || ''; + attr[`repeating_${section}_${id}_crafts_r`] = gear.craftsmanship || ''; + attr[`repeating_${section}_${id}_quantity_r`] = gear.quantity || ''; + attr[`repeating_${section}_${id}_avail_r`] = gear.availability || ''; + attr[`repeating_${section}_${id}_weight_r`] = gear.weight || ''; + attr[`repeating_${section}_${id}_ability_desc_r`] = gear.description || ''; + return attr; + } + const mapCybernetic = (cybernetic) => { + if (!cybernetic) return ; + let attr = {}, + section = 'cybernetics', + id = generateRowID(); + attr[`repeating_${section}_${id}_cybernetic_name_r`] = cybernetic.name || ''; + attr[`repeating_${section}_${id}_cybernetic_location_r`] = cybernetic.location || ''; + attr[`repeating_${section}_${id}_cybernetic_desc_r`] = cybernetic.description || ''; + return attr; + } + const mapOldArmor = (armor) => { + let attr = {}; + attr.armor_AGI = armor.maxAgi || ''; + attr.armor_limit = armor.limit || ''; + attr.armor_head = armor.head || ''; + attr.armor_body = armor.body || ''; + attr.armor_arm_right = armor.arm_right || ''; + attr.armor_arm_left = armor.arm_left || ''; + attr.armor_leg_right = armor.leg_right || ''; + attr.armor_leg_left = armor.leg_left || ''; + attr.armor_name = armor.description || ''; + return attr; + } + const mapAdvance = (advance) => { + var attr = {}; + var section = 'advance'; + for (var i = 0; i < advance?.length; i += 2) { + let id = generateRowID(); + attr[`repeating_${section}_${id}_advancement_nameL_r`] = advance[i]?.name || ''; + attr[`repeating_${section}_${id}_advancement_costL_r`] = advance[i]?.cost || ''; + attr[`repeating_${section}_${id}_advancement_nameR_r`] = advance[i+1]?.name || ''; + attr[`repeating_${section}_${id}_advancement_costR_r`] = advance[i+1]?.cost || ''; + } + return attr; + }; + const mapDisorder = (disorder) => { + if (!disorder) return; + let attr = {}, + section = 'disorders', + id = generateRowID(); + attr[`repeating_${section}_${id}_disorder_r`] = disorder.name || ''; + attr[`repeating_${section}_${id}_disorder_desc_r`] = disorder.description || ''; + return attr; + } + const mapMutation = (mutation) => { + if (!mutation) return; + let attr = {}, + section = 'mutations', + id = generateRowID(); + attr[`repeating_${section}_${id}_mutation_r`] = mutation.name || ''; + attr[`repeating_${section}_${id}_mutation_desc_r`] = mutation.description || ''; + return attr; + } + const mapObjective = (objective) => { + if (!objective) return; + let attr = {}, + section = 'objectives', + id = generateRowID(); + attr[`repeating_${section}_${id}_objective_r`] = objective.name || ''; + attr[`repeating_${section}_${id}_objective_completed`] = objective.complete || ''; + return attr; + } + const mapNote = (note) => { + if (!note) return; + let attr = {}, + section = 'notes', + id = generateRowID(); + attr[`repeating_${section}_${id}_notes`] = note.name || ''; + return attr; + } + const mapVehicle = (vehicle) => { + if (!vehicle) return; + let attr = {}, + section = 'vehicles-R', + id = generateRowID(); + attr[`repeating_${section}_${id}_vehicle-name`] = vehicle.name || ''; + attr[`repeating_${section}_${id}_vehicle-size`] = vehicle.size || ''; + attr[`repeating_${section}_${id}_vehicle-world`] = vehicle.world || ''; + attr[`repeating_${section}_${id}_vehicle-type`] = vehicle.type || ''; + attr[`repeating_${section}_${id}_vehicle-tactical`] = vehicle.tactical || ''; + attr[`repeating_${section}_${id}_vehicle-cruising`] = vehicle.cruising || ''; + attr[`repeating_${section}_${id}_vehicle-maneuver`] = vehicle.maneuver || ''; + attr[`repeating_${section}_${id}_vehicle-crew`] = vehicle.crew || ''; + attr[`repeating_${section}_${id}_vehicle-compliment`] = vehicle.compliment || ''; + attr[`repeating_${section}_${id}_vehicle-integrity`] = vehicle.integrity || ''; + attr[`repeating_${section}_${id}_vehicle-integrity_max`] = vehicle.integrity_max || ''; + attr[`repeating_${section}_${id}_vehicle-armor-front`] = vehicle['armor-front'] || ''; + attr[`repeating_${section}_${id}_vehicle-armor-side`] = vehicle['armor-side'] || ''; + attr[`repeating_${section}_${id}_vehicle-armor-rear`] = vehicle['armor-rear'] || ''; + attr[`repeating_${section}_${id}_armaments`] = vehicle.armaments || ''; + attr[`repeating_${section}_${id}_armaments_desc`] = vehicle.armaments_desc || ''; + attr[`repeating_${section}_${id}_vehicle_traits`] = vehicle.traits || ''; + attr[`repeating_${section}_${id}_vehicle_traits_desc`] = vehicle.traits_desc || ''; + attr[`repeating_${section}_${id}_modifications`] = vehicle.modifications || ''; + attr[`repeating_${section}_${id}_modifications_desc`] = vehicle.modifications_desc || ''; + return attr; + } + const mapPsykana = (psykana) => { + let attr = {}; + attr[`psykana_class`] = psykana.class || ''; + attr[`psykana_limit`] = psykana.limit || ''; + attr[`psy_rating`] = psykana.rating || ''; + attr[`psy_push`] = psykana.push || ''; + attr[`psykana_sustain`] = psykana.sustain || ''; + attr[`focus_mod`] = psykana.focus_mod || ''; + attr[`psykana_sustain_count`] = psykana.sustain_count || ''; + return attr; + }; + const mapPsyMinor = (minor) => { + if (!minor) return + let attr = {}, + section = 'minormanifestation'; + attr[`repeating_${section}_${id}_P_minor_r`] = minor.name || ''; + attr[`repeating_${section}_${id}_P_minor_desc_r`] = minor.description || ''; + return attr; + } + const mapPsyNote = (note) => { + if (!note) return + let attr = {}, + section = 'psynotes'; + attr[`repeating_${section}_${id}_P_note_r`] = note.name || ''; + attr[`repeating_${section}_${id}_P_note_desc_r`] = note.description || ''; + return attr; + } + const mapPsyPower = (power) => { + if (!power) return; + let attr = {}, + section = 'psychicabilities', + id = generateRowID(); + attr[`repeating_${section}_${id}_P_name`] = power.name || ''; + attr[`repeating_${section}_${id}_P_subtype`] = power.subtype || ''; + attr[`repeating_${section}_${id}_P_range`] = power.range || ''; + attr[`repeating_${section}_${id}_P_dam-roll`] = power.damage || ''; + attr[`repeating_${section}_${id}_P_type`] = power.type || ''; + attr[`repeating_${section}_${id}_P_pen`] = power.pen || ''; + attr[`repeating_${section}_${id}_P_focus`] = power.focus || ''; + attr[`repeating_${section}_${id}_P_mod1`] = power.mod || ''; + attr[`repeating_${section}_${id}_P_multi`] = power.multi || ''; + attr[`repeating_${section}_${id}_P_action`] = power.action || ''; + attr[`repeating_${section}_${id}_P_sustained`] = power.sustained || ''; + attr[`repeating_${section}_${id}_P_hitloc`] = power.hitloc || ''; + attr[`repeating_${section}_${id}_P_ability_r`] = power.ability || ''; + attr[`repeating_${section}_${id}_P_desc_r`] = power.desc || ''; + return attr; + } // info Block attributes = {...attributes, ...mapInfo(data)} @@ -3968,10 +4119,10 @@ NOTE: replace worker by javascript for IDE functionality // TALENTS, TRAITS data?.abilities?.forEach(ability => { - attributes = {...attributes, ...mapAbilities(ability, 'abilities')}; + attributes = {...attributes, ...mapAbility(ability, 'abilities')}; }); data?.traits?.forEach(trait => { - attributes = {...attributes, ...mapTraits(trait)}; + attributes = {...attributes, ...mapTrait(trait)}; }); // INVENTORY @@ -3984,28 +4135,26 @@ NOTE: replace worker by javascript for IDE functionality data?.inventory?.gears?.forEach( gear => { attributes = {...attributes, ...mapGear(gear)}; }); - data?.inventory?.tools?.forEach( tool => { - attributes = {...attributes, ...mapTool(tool)}; - }); - data?.inventory?.consumables?.forEach( drug => { - attributes = {...attributes, ...mapDrug(drug)}; - }); + // data?.inventory?.tools?.forEach( tool => { + // attributes = {...attributes, ...mapTool(tool)}; + // }); + // data?.inventory?.consumables?.forEach( drug => { + // attributes = {...attributes, ...mapDrug(drug)}; + // }); attributes = {...attributes, ...mapOldArmor(data?.inventory?.armor)}; - data?.inventory?.armors?.forEach( armor => { - attributes = {...attributes, ...mapArmor(armor)}; - }); - data?.inventory?.ammos?.forEach( ammo => { - attributes = {...attributes, ...mapAmmo(ammo)}; - }); + // data?.inventory?.armors?.forEach( armor => { + // attributes = {...attributes, ...mapArmor(armor)}; + // }); + // data?.inventory?.ammos?.forEach( ammo => { + // attributes = {...attributes, ...mapAmmo(ammo)}; + // }); data?.inventory?.cybernetics?.forEach( cybernetic => { attributes = {...attributes, ...mapCybernetic(cybernetic)}; }); // ADVANCEMENTS attributes = {...attributes, ...mapAptitudes(data?.advancements?.aptitudes)}; - data?.advancements?.advances?.forEach( advance => { - attributes = {...attributes, ...mapAdvance(advance)}; - }); + attributes = {...attributes, ...mapAdvance(data?.advancements?.advances)}; for (var training in data?.advancements?.training) { attributes[`weapons_training_${training}`] = data?.advancements?.training[training]; } @@ -4042,7 +4191,9 @@ NOTE: replace worker by javascript for IDE functionality // PSYKANA attributes = {...attributes, ...mapPsykana(data?.psykana)}; - console.log(attributes); + console.log('setting attributes'); + attributes.import_value = 'Success: Character Imported Successfully\n\nRemember to add the token manually'; + setAttrs(attributes, true); }) }) From 8a889f57dbbe88c5c29fe2fcf171bc8cd95a18ac Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Thu, 1 Apr 2021 16:20:38 +0200 Subject: [PATCH 12/14] syntax changes --- ShadowbaneInquisition/Shadowbane.html | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index 9c6e29a78b..d9131efe3f 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -963,7 +963,7 @@ -
@@ -994,7 +994,7 @@ -
@@ -1011,7 +1011,7 @@ -
@@ -1042,7 +1042,7 @@ -
@@ -1059,7 +1059,7 @@ -
@@ -1090,7 +1090,7 @@ -
@@ -1107,7 +1107,7 @@ -
@@ -1138,7 +1138,7 @@ -
@@ -1155,7 +1155,7 @@ -
@@ -1187,7 +1187,7 @@ -
@@ -1205,7 +1205,7 @@ -
From 7d5f7c20866e0c2bd0fc1f5f9cb7708a6540ecff Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Thu, 1 Apr 2021 16:21:33 +0200 Subject: [PATCH 13/14] fixed import/export bugs --- ShadowbaneInquisition/Shadowbane.html | 57 +++++++++++++-------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index d9131efe3f..d309a1a4db 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -2603,40 +2603,26 @@ - {"name": "forbidden-lore", "modifier": , "level": }, - - - - {"name": "scholastic-lore", "modifier": , "level": }, - - - - {"name": "common-lore", "modifier": , "level": }, - - - - {"name": "trade", "modifier": , "level": }, - - - - {"name": "linguistics", "modifier": , "level": }, null ], "lores": { "common": [ + {"name": "", "modifier": , "level": },
{"name" : "", "modifier": , "level": },
null
], "scholastic": [ + {"name": "", "modifier": , "level": },
{"name" : "", "modifier": , "level": },
null
], "forbidden": [ + {"name": "", "modifier": , "level": },
{"name" : "", "modifier": , "level": },
@@ -2644,26 +2630,28 @@
] }, "linguistics": [ + {"name": "", "modifier": , "level": },
{"name" : "", "modifier": , "level": },
null
], "trades": [ + {"name": "", "modifier": , "level": },
{"name" : "", "modifier": , "level": },
null
], "abilities": [ - {"name": "", "description":""}, + {"name": "", "description":""},
{"name": "", "description":""},
null
], "traits": [ - {"name": "", "description":""}, + {"name": "", "description":""},
{"name": "", "description":""},
@@ -3003,8 +2991,8 @@ NOTE: replace worker by javascript for IDE functionality // ___________________________________________________________________________ /** * skillRoll description - * @param {string} skill name of the skill - * @param {string} focus short name of the characteristic + * @param {string} skill - name of the skill + * @param {string} focus - short name of the characteristic */ const skillRoll = (skill, focus) => { let attr = {}; @@ -3916,12 +3904,12 @@ NOTE: replace worker by javascript for IDE functionality let attr = {}, section = 'gear', id = generateRowID(); - attr[`repeating_${section}_${id}_carry_r`] = gear.carry || ''; - attr[`repeating_${section}_${id}_name_r`] = gear.name || ''; - attr[`repeating_${section}_${id}_crafts_r`] = gear.craftsmanship || ''; - attr[`repeating_${section}_${id}_quantity_r`] = gear.quantity || ''; - attr[`repeating_${section}_${id}_avail_r`] = gear.availability || ''; - attr[`repeating_${section}_${id}_weight_r`] = gear.weight || ''; + attr[`repeating_${section}_${id}_gear_carry`] = gear.carry || ''; + attr[`repeating_${section}_${id}_gear_name_r`] = gear.name || ''; + attr[`repeating_${section}_${id}_gear_crafts_r`] = gear.craftsmanship || ''; + attr[`repeating_${section}_${id}_gear_quantity_r`] = gear.quantity || ''; + attr[`repeating_${section}_${id}_gear_avail_r`] = gear.availability || ''; + attr[`repeating_${section}_${id}_gear_weight_r`] = gear.weight || ''; attr[`repeating_${section}_${id}_ability_desc_r`] = gear.description || ''; return attr; } @@ -3950,7 +3938,7 @@ NOTE: replace worker by javascript for IDE functionality } const mapAdvance = (advance) => { var attr = {}; - var section = 'advance'; + var section = 'advancements'; for (var i = 0; i < advance?.length; i += 2) { let id = generateRowID(); attr[`repeating_${section}_${id}_advancement_nameL_r`] = advance[i]?.name || ''; @@ -3998,7 +3986,7 @@ NOTE: replace worker by javascript for IDE functionality const mapVehicle = (vehicle) => { if (!vehicle) return; let attr = {}, - section = 'vehicles-R', + section = 'vehicles', id = generateRowID(); attr[`repeating_${section}_${id}_vehicle-name`] = vehicle.name || ''; attr[`repeating_${section}_${id}_vehicle-size`] = vehicle.size || ''; @@ -4114,7 +4102,7 @@ NOTE: replace worker by javascript for IDE functionality attributes = {...attributes, ...mapRepeatingSkill(skill, 'linguistics')}; }); data?.trades?.forEach(skill => { - attributes = {...attributes, ...mapRepeatingSkill(skill, 'trades')}; + attributes = {...attributes, ...mapRepeatingSkill(skill, 'trade')}; }); // TALENTS, TRAITS @@ -4190,6 +4178,15 @@ NOTE: replace worker by javascript for IDE functionality // PSYKANA attributes = {...attributes, ...mapPsykana(data?.psykana)}; + data?.psykana?.minor?.forEach( minor => { + attributes = {...attributes, ...mapPsyMinor(minor)} + }) + data?.psykana?.notes?.forEach( note => { + attributes = {...attributes, ...mapPsyNote(note)} + }) + data?.psykana?.powers?.forEach( power => { + attributes = {...attributes, ...mapPsyPower(power)} + }) console.log('setting attributes'); attributes.import_value = 'Success: Character Imported Successfully\n\nRemember to add the token manually'; From e0bfdf06800aeb997296d17b4ba873b65468e938 Mon Sep 17 00:00:00 2001 From: ChtiKenny Date: Thu, 1 Apr 2021 16:23:01 +0200 Subject: [PATCH 14/14] updated to do list --- ShadowbaneInquisition/README.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ShadowbaneInquisition/README.md b/ShadowbaneInquisition/README.md index 19876783f1..e61fe2db50 100644 --- a/ShadowbaneInquisition/README.md +++ b/ShadowbaneInquisition/README.md @@ -3,17 +3,22 @@ head over to our [Discord](https://discord.gg/rc9Fwgp9qv) to learn more. ## Change log #### TO DO: ++ add curency field + add a value field to inventory + add inventory sorting (look into the Pathfinder Community Sheet) + add Characteristics Bonus selector to weap dmg same with psykana -+ add a stat modifier table + add a buff menu (temp stats changes & fatigue ignore) + make a changelog page + add a crit table (reuse the righteous fury) -+ add a carry option for weapons -+ A button in the Psykana section for being a blank -+ need a button to swap between Psychic Bolt, Barrage, and Storm ++ weapons qualities and traits +#### v 0.1.4 Inventory update ++ fixed accurate damage ++ changed 1 letter ++ added a stat modifier table ++ added an option to swap between Psychic Bolt, Barrage, and Storm ++ added an option in the Psykana section for being a blank ++ added a carry option for weapons #### v 0.1.3 The weapon update + added limiter on roll targets