diff --git a/ShadowbaneInquisition/README.md b/ShadowbaneInquisition/README.md index 5b09b6c941..b2d918e09a 100644 --- a/ShadowbaneInquisition/README.md +++ b/ShadowbaneInquisition/README.md @@ -1,11 +1,13 @@ # Shadowbane Inquisition Character Sheet -head over to our [Discord](https://discord.gg/rc9Fwgp9qv) to learn more. + +Head over to our [Discord](https://discord.gg/rc9Fwgp9qv) to learn more. + ## Change log -#### TO DO: +### 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 buff menu (temp stats changes & fatigue ignore) + make a changelog page @@ -13,11 +15,17 @@ head over to our [Discord](https://discord.gg/rc9Fwgp9qv) to learn more. + weapons qualities and traits + any chance you could update the Sustain rules on Psykana to be fixed? It only recognises 1 power and uses the wrong numbers - #📜︱imperial-rules-bulletin Psyker Rules has the new stuff for it + [#📜︱imperial-rules-bulletin](https://discord.com/channels/773033855481020456/829276251453128735/834380047372648488) Psyker Rules has the new stuff for it basically, -10 per Power on Focus and +10 per Power on Phenomena Hmm, actually, it changes around a bit based on rank... +#### v 0.1.5 Bug Fix + ++ added inventory sorting (look into the Pathfinder Community Sheet) ++ weapon names will be shortened if they are too long + #### v 0.1.4 Inventory update + + fixed accurate damage + changed 1 letter + added a stat modifier table @@ -26,9 +34,10 @@ head over to our [Discord](https://discord.gg/rc9Fwgp9qv) to learn more. + added a carry option for weapons #### v 0.1.3 The weapon update + + added limiter on roll targets + Added multi hits location -- reverted DoF Math to previous version ++ reverted DoF Math to previous version + finished Proven/Primitive/Vengeful weapon qualities + added ranged weapon setting (overload/charge, maximal) + fixed psyniscience in psykana @@ -36,10 +45,11 @@ head over to our [Discord](https://discord.gg/rc9Fwgp9qv) to learn more. + fixed a bug in repeating skills that caused to roll a 0 instead of the characteristic + change Scatter to 1d5 + 1 every odd DoF and 1d10 + 1 every odd DoF + reworked weapons design -- Fixed Unbound Psykers Unfettered adding unrequired Psychic Phenomena ++ Fixed Unbound Psykers Unfettered adding unrequired Psychic Phenomena + The button to rearrange items should know its place now #### v 0.1.2 + + Degrees of Failure have learned the correct Math + Psykana Powers now have damages options in a list + Psykana Powers now have a choice to roll hit location diff --git a/ShadowbaneInquisition/Shadowbane.css b/ShadowbaneInquisition/Shadowbane.css index 7ea8a6cd40..027a7101e0 100644 --- a/ShadowbaneInquisition/Shadowbane.css +++ b/ShadowbaneInquisition/Shadowbane.css @@ -6,31 +6,25 @@ /* Background, font information, and overall things that affect the sheet as a whole */ .charsheet { - background-image: url(https://raw.githubusercontent.com/ChtiKenny/roll20-character-sheets/ShadowbaneInauisition/ShadowbaneInquisition/images/assets/background.gif); + background-image: url(https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ShadowbaneInquisition/images/assets/background.gif); font-family: Cambria, "Hoefler Text", "Liberation Serif", Times, "Times New Roman", serif; font-size: 14px; box-shadow: - /* The top layer shadow */ 0 -1px 1px rgba(0, 0, 0, 0.15), - /* The second layer */ 0 -10px 0 -5px #eee, - /* The second layer shadow */ 0 -10px 1px -4px rgba(0, 0, 0, 0.15), - /* The third layer */ 0 -20px 0 -10px #eee, - /* The third layer shadow */ 0 -20px 1px -9px rgba(0, 0, 0, 0.15); - /* Padding for demo purposes */ padding: 30px; border-radius: 25px; } /* All input elements that are of type number or type text */ -select, -input[type='number'], -input[type='text'], -button[type='action'] { +.charsheet select, +.charsheet input[type='number'], +.charsheet input[type='text'], +.charsheet button[type='action'] { background: #d5d4cd; box-shadow: inset 0px 0px 6px 1px black; font-family: inherit; @@ -42,27 +36,26 @@ button[type='action'] { margin: 0px; } -/* All input elements of type number */ -input[type="number"] { +.charsheet input[type="number"] { -moz-appearance: textfield; } /* Prevent disabled inputs from consuming mouse clicks */ -input[disabled] { +.charsheet .charsheet input[disabled] { pointer-events: none; } /* All horizontal rule elements receive the following CSS property. */ -hr { +.charsheet hr { border-top: 1px dotted black; } /* All button elements of type roll */ -button:focus { +.charsheet button:focus { outline: none; } -button[type='roll'] { +.charsheet button[type='roll'] { background: black; color: white; font-family: inherit; @@ -71,23 +64,23 @@ button[type='roll'] { } /* clear buttons with the clear class */ -button[type="roll"].sheet-clear::before { +.charsheet button[type="roll"].sheet-clear::before { content: ""; display: none; } /* All button elements of type roll when hovered over: */ -button[type='roll']:hover { +.charsheet button[type='roll']:hover { background: rgb(200, 0, 0) !important; } -label:hover { +.charsheet label:hover { cursor: pointer; } /* Both header elements 2 and 3 receive the following CSS properties. */ -h2, -h3 { +.charsheet h2, +.charsheet h3 { color: #4d4d4d; font-family: inherit; letter-spacing: 0px; @@ -95,28 +88,28 @@ h3 { } /* Only type-2 headers receive the following CSS properties. */ -h2 { +.charsheet h2 { text-decoration: underline; } /* Only type-3 headers receive the following CSS properties. */ -h3 { +.charsheet h3 { background: rgba(0, 0, 0, 0.25); box-shadow: 0px 2px 5px black; } /* All normal text receives the following CSS properties. */ -p { +.charsheet p { font-family: inherit; } /* All instances of the placeholder attribute across all elements */ -::placeholder { +.charsheet ::placeholder { opacity: 0.7; } /* All textarea elements (keep width for textarea to prevent stretching off of sheet) */ -textarea { +.charsheet textarea { background: rgba(0, 0, 0, 0.25); font-family: inherit; font-size: 14px; @@ -130,122 +123,122 @@ ______________________________ start of multipurpose or special-use classes such -.sheet-background_radius { +.charsheet .sheet-background_radius { border: 2px solid black; border-radius: 11px; } -.sheet-full_width_49px { +.charsheet .sheet-full_width_49px { width: calc(100% - 49px); } -.sheet-full_width_30px { +.charsheet .sheet-full_width_30px { width: calc(100% - 30px); } -.sheet-margin_adjust { +.charsheet .sheet-margin_adjust { margin-top: -23px; margin-bottom: 4px; text-align: right; } -.sheet-margin_adjust2 { +.charsheet .sheet-margin_adjust2 { margin-top: -22px; margin-bottom: 4px; margin-left: -25px; text-align: right; } -.sheet-margin_adjust_wep { +.charsheet .sheet-margin_adjust_wep { margin-top: -19px; margin-bottom: 2px; margin-left: 3px; text-align: right; } -.sheet-margin_adjust_wep2 { +.charsheet .sheet-margin_adjust_wep2 { margin-top: -20px; margin-bottom: 2px; margin-left: -22px; text-align: right; } -.sheet-margin_adjust_wep3 { +.charsheet .sheet-margin_adjust_wep3 { margin-top: -15px; margin-bottom: 2px; margin-left: 40px; } -.sheet-margin_adjust_wep4 { +.charsheet .sheet-margin_adjust_wep4 { margin-top: -20px; margin-bottom: 2px; } -.sheet-radius_border_right { +.charsheet .sheet-radius_border_right { border-bottom-right-radius: 7px !important; } -.sheet-radius_border_right_wep { +.charsheet .sheet-radius_border_right_wep { border-bottom-right-radius: 10px !important; } -.sheet-radius_border_left_wep { +.charsheet .sheet-radius_border_left_wep { border-bottom-left-radius: 10px !important; } -.sheet-collapsible_entity_toggle { +.charsheet .sheet-collapsible_entity_toggle { display: block; } -.sheet-collapsible_entity_block { +.charsheet .sheet-collapsible_entity_block { display: none; } -.sheet-collapsible_entity_switch:checked~.sheet-collapsible_entity_block { +.charsheet .sheet-collapsible_entity_switch:checked~.sheet-collapsible_entity_block { display: block; } -.sheet-collapsible_entity_switch:checked~.sheet-collapsible_entity_toggle { +.charsheet .sheet-collapsible_entity_switch:checked~.sheet-collapsible_entity_toggle { display: none; } -.sheet-collapsible_entity_toggle_half { +.charsheet .sheet-collapsible_entity_toggle_half { display: block; } -.sheet-collapsible_entity_block_half { +.charsheet .sheet-collapsible_entity_block_half { display: none; } -.sheet-collapsible_entity_switch_half:checked~.sheet-collapsible_entity_block_half { +.charsheet .sheet-collapsible_entity_switch_half:checked~.sheet-collapsible_entity_block_half { display: block; } -.sheet-collapsible_entity_switch_half:checked~.sheet-collapsible_entity_toggle_half { +.charsheet .sheet-collapsible_entity_switch_half:checked~.sheet-collapsible_entity_toggle_half { display: none; } -.sheet-collapsible_entity_toggle_min { +.charsheet .sheet-collapsible_entity_toggle_min { display: block; } -.sheet-collapsible_entity_block_min { +.charsheet .sheet-collapsible_entity_block_min { display: none; } -.sheet-collapsible_entity_switch_min:checked~.sheet-collapsible_entity_block_min { +.charsheet .sheet-collapsible_entity_switch_min:checked~.sheet-collapsible_entity_block_min { display: block; } -.sheet-collapsible_entity_switch_min:checked~.sheet-collapsible_entity_toggle_min { +.charsheet .sheet-collapsible_entity_switch_min:checked~.sheet-collapsible_entity_toggle_min { display: none; } -.sheet-hidden { +.charsheet .sheet-hidden { display: none; } -.sheet-input_background { +.charsheet .sheet-input_background { background: transparent; border-color: transparent; color: white; @@ -257,20 +250,20 @@ ______________________________ start of multipurpose or special-use classes such width: 35px; } -.sheet-input_char_background { +.charsheet .sheet-input_char_background { margin-top: -4px !important; margin-bottom: -2px !important; width: 50px; margin-left: -12px !important; } -.sheet-input_init_background { +.charsheet .sheet-input_init_background { margin-top: -3px !important; margin-bottom: -2px !important; width: 35px; } -.sheet-box { +.charsheet .sheet-box { background-image: url(https://raw.githubusercontent.com/johnmoney-code/roll20-character-sheets/Only-War-Enhanced/Only-War-Enhanced/images/assets/background.gif); border-color: black; border-style: solid; @@ -278,101 +271,101 @@ ______________________________ start of multipurpose or special-use classes such color: #4d4d4d; } -.sheet-table { +.charsheet .sheet-table { font-family: inherit; } -.sheet-numerical_field { +.charsheet .sheet-numerical_field { margin-right: 20px; width: 80px !important; } -.sheet-end_field { +.charsheet .sheet-end_field { margin-right: 0px; } -.sheet-edge_padding { +.charsheet .sheet-edge_padding { padding: 2px; } /* full height of containing block */ -.sheet-full_height { +.charsheet .sheet-full_height { height: 100%; } /* 40% width of containing block */ -.sheet-40width { +.charsheet .sheet-40width { width: 40%; } /* half width of containing block */ -.sheet-half_width { +.charsheet .sheet-half_width { width: 50%; } /* 90% width of containing block */ -.sheet-90width { +.charsheet .sheet-90width { width: 90%; } /* full width of containing block */ -.sheet-full_width { +.charsheet .sheet-full_width { width: 100%; } -.sheet-bold_text { +.charsheet .sheet-bold_text { font-weight: bold; } -.sheet-border_none { +.charsheet .sheet-border_none { border: none !important; } -.sheet-auto_margin { +.charsheet .sheet-auto_margin { margin: auto; } -.sheet-huge_text { +.charsheet .sheet-huge_text { font-size: 36px; } -.sheet-text_centered { +.charsheet .sheet-text_centered { text-align: center; } -.sheet-ssc { +.charsheet .sheet-ssc { font-family: inherit; } -.sheet-bttn_top_padding { +.charsheet .sheet-button_top_padding { padding-top: 5px; } -.sheet-radius_border { +.charsheet .sheet-radius_border { border-radius: 10px; } -.sheet-radius_border_top { +.charsheet .sheet-radius_border_top { border-top-left-radius: 10px; border-top-right-radius: 10px; } -.sheet-radius_border_bottom { +.charsheet .sheet-radius_border_bottom { border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; } -.sheet-radius_border_heading { +.charsheet .sheet-radius_border_heading { border-top-left-radius: 9px; border-top-right-radius: 9px; } -.sheet-radius_border_box { +.charsheet .sheet-radius_border_box { border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; } -.sheet-description_rounded_margin { +.charsheet .sheet-description_rounded_margin { margin-bottom: 0px; border-radius: 0px 0px 8px 8px; } @@ -382,155 +375,155 @@ ______________________________ start of multipurpose or special-use classes such ______________________________ start of grid structure for character information ______________________________ */ -.sheet-gs1 { +.charsheet .sheet-gs1 { grid-area: ah1; margin-top: 5px; font-size: 15px; padding-left: 2px; } -.sheet-gs2 { +.charsheet .sheet-gs2 { grid-area: ah2; margin-top: 5px; font-size: 15px; } -.sheet-gs3 { +.charsheet .sheet-gs3 { grid-area: ah3; margin-top: 5px; font-size: 15px; } -.sheet-gs4 { +.charsheet .sheet-gs4 { grid-area: ah4; margin-top: 5px; font-size: 15px; } -.sheet-gs5 { +.charsheet .sheet-gs5 { grid-area: ah5; margin-top: 5px; font-size: 15px; } -.sheet-gs6 { +.charsheet .sheet-gs6 { grid-area: ah6; margin-top: 5px; font-size: 15px; } -.sheet-gs7 { +.charsheet .sheet-gs7 { grid-area: ah7; width: calc(100% + 20px); margin-left: -20px; text-align: right !important; } -.sheet-gs8 { +.charsheet .sheet-gs8 { grid-area: ah8; width: calc(100% + 20px); margin-left: -20px; text-align: right !important; } -.sheet-gs9 { +.charsheet .sheet-gs9 { grid-area: ah9; width: calc(100% + 20px); margin-left: -20px; text-align: right !important; } -.sheet-gs10 { +.charsheet .sheet-gs10 { grid-area: ah10; width: calc(100% + 20px); margin-left: -20px; text-align: right !important; } -.sheet-gs11 { +.charsheet .sheet-gs11 { grid-area: ah11; width: calc(100% + 20px); margin-left: -20px; text-align: right !important; } -.sheet-gs12 { +.charsheet .sheet-gs12 { grid-area: ah12; width: calc(100% + 20px); margin-left: -20px; text-align: right !important; } -.sheet-gs13 { +.charsheet .sheet-gs13 { grid-area: ah13; margin: 0px 5px; } -.sheet-gs14 { +.charsheet .sheet-gs14 { grid-area: ah14; width: calc(100% + 20px); text-align: left !important; } -.sheet-gs15 { +.charsheet .sheet-gs15 { grid-area: ah15; width: calc(100% + 20px); text-align: left !important; } -.sheet-gs16 { +.charsheet .sheet-gs16 { grid-area: ah16; width: calc(100% - 125px); text-align: left !important; } -.sheet-gs17 { +.charsheet .sheet-gs17 { grid-area: ah17; width: calc(100% + 20px); text-align: left !important; } -.sheet-gs18 { +.charsheet .sheet-gs18 { grid-area: ah18; width: calc(100% + 20px); text-align: left !important; } -.sheet-gs19 { +.charsheet .sheet-gs19 { grid-area: ah19; width: calc(100% + 20px); text-align: left !important; } -.sheet-gs20 { +.charsheet .sheet-gs20 { grid-area: ah20; margin-top: 5px; font-size: 15px; text-align: right } -.sheet-gs21 { +.charsheet .sheet-gs21 { grid-area: ah21; margin-top: 5px; font-size: 15px; text-align: right } -.sheet-gs22 { +.charsheet .sheet-gs22 { grid-area: ah22; margin-top: 5px; font-size: 15px; text-align: right } -.sheet-gs23 { +.charsheet .sheet-gs23 { grid-area: ah23; margin-top: 5px; font-size: 15px; text-align: right } -.sheet-gs24 { +.charsheet .sheet-gs24 { grid-area: ah24; margin-top: 5px; font-size: 15px; @@ -538,7 +531,7 @@ ______________________________ start of grid structure for character information } -.sheet-header_logo { +.charsheet .sheet-header_logo { font-family: inherit; letter-spacing: 0px; display: grid; @@ -546,7 +539,7 @@ ______________________________ start of grid structure for character information grid-template-rows: 28px 28px 28px 28px 28px 28px; grid-template-areas: - 'ah1 ah7 ah13 ah14 ah20' + 'ah1 ah7 ah13 ah14 ah20' 'ah2 ah8 ah13 ah15 ah21' 'ah3 ah9 ah13 ah16 ah16' 'ah4 ah10 ah13 ah17 ah22' @@ -560,37 +553,37 @@ ______________________________ start of structure for characteristics __________ -.sheet-characteristics_background { +.charsheet .sheet-characteristics_background { /* background: black; */ box-shadow: inset 0px 0px 20px 5px black; padding: 3px 0px 6px 3px; } -.sheet-characteristics_main { +.charsheet .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 { +.charsheet .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 { +.charsheet .sheet-char_more { display: block; text-align: center; } -.sheet-characteristics_button { +.charsheet .sheet-characteristics_button { margin-left: -0.1% !important; width: calc(100% - 8px); } -.sheet-characteristics_input { +.charsheet .sheet-characteristics_input { font-size: 30px; } @@ -600,12 +593,12 @@ ______________________________ start of structure for characteristics __________ _____________ start of grid structure for unnatural characteristics, size dropdown, movement, and carryweight ______________________________ */ -.sheet-unnat_centering { +.charsheet .sheet-unnat_centering { grid-area: e1; /*margin-left: 50px;*/ } -.sheet-unnat_centering_container { +.charsheet .sheet-unnat_centering_container { display: grid; justify-items: center; grid-template-columns: 1fr 1fr 1fr; @@ -613,11 +606,11 @@ _____________ start of grid structure for unnatural characteristics, size dropdo '. e1 .'; } -.sheet-unnatgs_width { +.charsheet .sheet-unnatgs_width { width: 40px; } -.sheet-unnatgs1 { +.charsheet .sheet-unnatgs1 { grid-area: amy1; font-size: 15px; font-family: inherit; @@ -625,126 +618,126 @@ _____________ start of grid structure for unnatural characteristics, size dropdo text-align: center; } -.sheet-unnatgs2 { +.charsheet .sheet-unnatgs2 { grid-area: amy2; } -.sheet-unnatgs3 { +.charsheet .sheet-unnatgs3 { grid-area: amy3; } -.sheet-unnatgs4 { +.charsheet .sheet-unnatgs4 { grid-area: amy4; } -.sheet-unnatgs5 { +.charsheet .sheet-unnatgs5 { grid-area: amy5; } -.sheet-unnatgs6 { +.charsheet .sheet-unnatgs6 { grid-area: amy6; } -.sheet-unnatgs7 { +.charsheet .sheet-unnatgs7 { grid-area: amy7; } -.sheet-unnatgs8 { +.charsheet .sheet-unnatgs8 { grid-area: amy8; } -.sheet-unnatgs9 { +.charsheet .sheet-unnatgs9 { grid-area: amy9; } -.sheet-unnatgs10 { +.charsheet .sheet-unnatgs10 { grid-area: amy10; } -.sheet-unnatgs11 { +.charsheet .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 { +.charsheet .sheet-unnatgs12, +.charsheet .sheet-unnatgs13, +.charsheet .sheet-unnatgs14, +.charsheet .sheet-unnatgs15, +.charsheet .sheet-unnatgs16, +.charsheet .sheet-unnatgs17, +.charsheet .sheet-unnatgs18, +.charsheet .sheet-unnatgs19, +.charsheet .sheet-unnatgs20, +.charsheet .sheet-unnatgs21 { font-size: 14px; } -.sheet-unnatgs12 { +.charsheet .sheet-unnatgs12 { grid-area: amy12; } -.sheet-unnatgs13 { +.charsheet .sheet-unnatgs13 { grid-area: amy13; } -.sheet-unnatgs14 { +.charsheet .sheet-unnatgs14 { grid-area: amy14; } -.sheet-unnatgs15 { +.charsheet .sheet-unnatgs15 { grid-area: amy15; } -.sheet-unnatgs16 { +.charsheet .sheet-unnatgs16 { grid-area: amy16; } -.sheet-unnatgs17 { +.charsheet .sheet-unnatgs17 { grid-area: amy17; } -.sheet-unnatgs18 { +.charsheet .sheet-unnatgs18 { grid-area: amy18; } -.sheet-unnatgs19 { +.charsheet .sheet-unnatgs19 { grid-area: amy19; } -.sheet-unnatgs20 { +.charsheet .sheet-unnatgs20 { grid-area: amy20; } -.sheet-unnatgs21 { +.charsheet .sheet-unnatgs21 { grid-area: amy21; } -.sheet-characteristics_unnat { +.charsheet .sheet-characteristics_unnat { display: grid; justify-items: center; grid-template-columns: 50px 50px 50px 50px 50px 50px 50px 50px 50px 50px; grid-template-areas: - 'amy1 amy1 amy1 amy1 amy1 amy1 amy1 amy1 amy1 amy1 ' - 'amy2 amy3 amy4 amy5 amy6 amy7 amy8 amy9 amy10 amy11' + 'amy1 amy1 amy1 amy1 amy1 amy1 amy1 amy1 amy1 amy1 ' + 'amy2 amy3 amy4 amy5 amy6 amy7 amy8 amy9 amy10 amy11' 'amy12 amy13 amy14 amy15 amy16 amy17 amy18 amy19 amy20 amy21'; } -.sheet-characteristics_size_movement_carry { +.charsheet .sheet-characteristics_size_movement_carry { display: grid; grid-template-columns: 10% 80% 10%; } -.sheet-sizegs1 { +.charsheet .sheet-sizegs1 { grid-area: ams1; font-size: 15px; font-family: inherit; letter-spacing: 0px; } -.sheet-sizegs2 { +.charsheet .sheet-sizegs2 { grid-area: ams2; } -.sheet-characteristics2_size { +.charsheet .sheet-characteristics2_size { position: relative; left: 20px; justify-content: center; @@ -757,64 +750,64 @@ _____________ start of grid structure for unnatural characteristics, size dropdo 'ams2'; } -.sheet-movementgs1 { +.charsheet .sheet-movementgs1 { grid-area: amm1; font-size: 15px; font-family: inherit; letter-spacing: 0px; } -.sheet-movementgs2 { +.charsheet .sheet-movementgs2 { grid-area: amm2; } -.sheet-movementgs3 { +.charsheet .sheet-movementgs3 { grid-area: amm3; } -.sheet-movementgs4 { +.charsheet .sheet-movementgs4 { grid-area: amm4; } -.sheet-movementgs5 { +.charsheet .sheet-movementgs5 { grid-area: amm5; } -.sheet-movementgs0 { +.charsheet .sheet-movementgs0 { grid-area: amm0; } -.sheet-movementgs6 { +.charsheet .sheet-movementgs6 { grid-area: amm6; font-size: 14px; font-family: inherit; } -.sheet-movementgs7 { +.charsheet .sheet-movementgs7 { grid-area: amm7; font-size: 14px; font-family: inherit; } -.sheet-movementgs8 { +.charsheet .sheet-movementgs8 { grid-area: amm8; font-size: 14px; font-family: inherit; } -.sheet-movementgs9 { +.charsheet .sheet-movementgs9 { grid-area: amm9; font-size: 14px; font-family: inherit; } -.sheet-movementgs10 { +.charsheet .sheet-movementgs10 { grid-area: amm10; font-size: 14px; font-family: inherit; } -.sheet-characteristics2_movement { +.charsheet .sheet-characteristics2_movement { justify-content: center; text-align: center; display: grid; @@ -826,47 +819,47 @@ _____________ start of grid structure for unnatural characteristics, size dropdo 'amm6 amm7 amm8 amm9 amm10'; } -.sheet-carrygs1 { +.charsheet .sheet-carrygs1 { grid-area: ac1; font-size: 15px; font-family: inherit; letter-spacing: 0px; } -.sheet-carrygs2 { +.charsheet .sheet-carrygs2 { grid-area: ac2; width: 50px; } -.sheet-carrygs3 { +.charsheet .sheet-carrygs3 { grid-area: ac3; width: 50px; } -.sheet-carrygs4 { +.charsheet .sheet-carrygs4 { grid-area: ac4; width: 50px; } -.sheet-carrygs5 { +.charsheet .sheet-carrygs5 { grid-area: ac5; font-size: 14px; font-family: inherit; } -.sheet-carrygs6 { +.charsheet .sheet-carrygs6 { grid-area: ac6; font-size: 14px; font-family: inherit; } -.sheet-carrygs7 { +.charsheet .sheet-carrygs7 { grid-area: ac7; font-size: 14px; font-family: inherit; } -.sheet-characteristics2_carry { +.charsheet .sheet-characteristics2_carry { justify-content: right; text-align: center; display: grid; @@ -885,36 +878,36 @@ ______________________________ start of grid structure for initiative and sheet -.sheet-tabs_main { +.charsheet .sheet-tabs_main { display: grid; grid-template-columns: 50% 50%; } -.sheet-initiative_container { +.charsheet .sheet-initiative_container { display: grid; grid-template-columns: 110px 90px 18px 50px 18px 90px 95px; } -.sheet-init_field { +.charsheet .sheet-init_field { height: 100%; margin-right: -60px; width: 85px; } -.sheet-init_plus { +.charsheet .sheet-init_plus { font-size: 24px; font-weight: bold; padding-top: 12px; } -.sheet-sheet_tabs { +.charsheet .sheet-sheet_tabs { justify-content: right; margin-right: 30px; display: grid; grid-template-columns: 45px 80px 105px 60px 60px 65px 45px 10px; } -.sheet-sheet_tabs>button { +.charsheet .sheet-sheet_tabs>button { box-shadow: inset 0px 0px 20px 10px black; text-shadow: -1px -1px 5px black, 1px 1px 5px black; border-top-left-radius: 15px; @@ -930,13 +923,13 @@ ______________________________ start of tab buttons toggles ____________________ -.sheet-tab_core, -.sheet-tab_equipment, -.sheet-tab_advancements, -.sheet-tab_journal, -.sheet-tab_vehicle, -.sheet-tab_psykana, -.sheet-tab_settings { +.charsheet .sheet-tab_core, +.charsheet .sheet-tab_equipment, +.charsheet .sheet-tab_advancements, +.charsheet .sheet-tab_journal, +.charsheet .sheet-tab_vehicle, +.charsheet .sheet-tab_psykana, +.charsheet .sheet-tab_settings { display: none; box-shadow: /* The top layer shadow */ @@ -956,17 +949,17 @@ ______________________________ start of tab buttons toggles ____________________ /* show the selected tab */ -.sheet-tabstoggle[value='core']~div.sheet-tab_core, -.sheet-tabstoggle[value='equipment']~div.sheet-tab_equipment, -.sheet-tabstoggle[value='advancements']~div.sheet-tab_advancements, -.sheet-tabstoggle[value='journal']~div.sheet-tab_journal, -.sheet-tabstoggle[value='vehicle']~div.sheet-tab_vehicle, -.sheet-tabstoggle[value='psykana']~div.sheet-tab_psykana, -.sheet-tabstoggle[value='settings']~div.sheet-tab_settings { +.charsheet .sheet-tabstoggle[value='core']~div.sheet-tab_core, +.charsheet .sheet-tabstoggle[value='equipment']~div.sheet-tab_equipment, +.charsheet .sheet-tabstoggle[value='advancements']~div.sheet-tab_advancements, +.charsheet .sheet-tabstoggle[value='journal']~div.sheet-tab_journal, +.charsheet .sheet-tabstoggle[value='vehicle']~div.sheet-tab_vehicle, +.charsheet .sheet-tabstoggle[value='psykana']~div.sheet-tab_psykana, +.charsheet .sheet-tabstoggle[value='settings']~div.sheet-tab_settings { display: block } -.sheet-core_bttn:checked+button { +.charsheet .sheet-core_button:checked+button { color: #4d4d4d; box-shadow: inset 0px 0px 6px 1px black; text-shadow: none; @@ -982,56 +975,56 @@ ______________________________ start of minimisable infographic ________________ -.sheet-select_text { +.charsheet .sheet-select_text { box-shadow: inset 0px 0px 10px 5px black; border: 1px solid white; border-radius: 4px; padding: 4px 5px 4px 5px; } -.sheet-select_button:checked~.sheet-select_text { +.charsheet .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; } -.sheet-minimisable_infographic_main { +.charsheet .sheet-minimisable_infographic_main { margin-left: 5px; } -.sheet-minimisable_infographic_override { +.charsheet .sheet-minimisable_infographic_override { margin-top: -4px !important; height: 20px; font-weight: bold; } -.sheet-minimisable_infographic_toggles { +.charsheet .sheet-minimisable_infographic_toggles { /* This is the spacing of the whisper buttons, scatter button, etc */ display: grid; grid-column-gap: 10px; grid-template-columns: 100px 65px 100px 70px 100px 80px 80px 150px auto; } -.sheet-minimisable_infographic_grid { +.charsheet .sheet-minimisable_infographic_grid { font-weight: bold; display: grid; grid-template-columns: 150px 150px 103px 215px auto; grid-template-rows: 80px; grid-template-areas: 'm1 m2 m3 m4 m5' - 'm6 m6 . . m5'; + 'm6 m6 . . m5'; } -.sheet-minimisable_infographic>h3 { +.charsheet .sheet-minimisable_infographic>h3 { text-align: left; padding-left: 40px; } -.sheet-minimisable_infographic { +.charsheet .sheet-minimisable_infographic { grid-area: m5; margin-right: 10px; } -.sheet-minimisable_infographic_g1 { +.charsheet .sheet-minimisable_infographic_g1 { grid-area: mi1; background: #52682d38 !important; box-shadow: inset 0px 0px 10px black; @@ -1042,33 +1035,33 @@ ______________________________ start of minimisable infographic ________________ width: calc(100% - 6px); } -.sheet-minimisable_infographic_g2 { +.charsheet .sheet-minimisable_infographic_g2 { grid-area: mi2; justify-self: right; margin-top: 3px; margin-right: 3px; } -.sheet-minimisable_infographic_g3 { +.charsheet .sheet-minimisable_infographic_g3 { grid-area: mi3; border-right: 1px solid #52682d38; } -.sheet-minimisable_infographic_g4 { +.charsheet .sheet-minimisable_infographic_g4 { grid-area: mi4; justify-self: right; margin-top: 3px; margin-right: 3px; } -.sheet-minimisable_infographic_g5 { +.charsheet .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 { +.charsheet .sheet-minimisable_infographic_field2x3 { height: fit-content; background: rgba(0, 0, 0, 0.25); margin-right: 10px; @@ -1081,7 +1074,7 @@ ______________________________ start of minimisable infographic ________________ 'mi4 mi5'; } -.sheet-minimisable_infographic_g6 { +.charsheet .sheet-minimisable_infographic_g6 { grid-area: mi6; font-family: inherit; justify-self: right; @@ -1089,11 +1082,11 @@ ______________________________ start of minimisable infographic ________________ margin-right: 3px; } -.sheet-minimisable_infographic_g7 { +.charsheet .sheet-minimisable_infographic_g7 { grid-area: mi7; } -.sheet-minimisable_infographic_field4x3a { +.charsheet .sheet-minimisable_infographic_field4x3a { height: fit-content; background: rgba(0, 0, 0, 0.25); margin-right: 10px; @@ -1106,7 +1099,7 @@ ______________________________ start of minimisable infographic ________________ 'mi4 mi4 mi4 mi5'; } -.sheet-minimisable_infographic_field4x4 { +.charsheet .sheet-minimisable_infographic_field4x4 { height: fit-content; background: rgba(0, 0, 0, 0.25); margin-right: 10px; @@ -1119,7 +1112,7 @@ ______________________________ start of minimisable infographic ________________ 'mi2 mi3 mi4 mi5'; } -.sheet-minimisable_critical_g0 { +.charsheet .sheet-minimisable_critical_g0 { grid-area: mc0; background: #52682d38 !important; box-shadow: inset 0px 0px 10px black; @@ -1130,14 +1123,14 @@ ______________________________ start of minimisable infographic ________________ width: calc(100% - 6px); } -.sheet-minimisable_critical_g12 { +.charsheet .sheet-minimisable_critical_g12 { grid-area: mc12; border-right: 1px solid #52682d38; border-bottom: 1px solid #52682d38; border-bottom-right-radius: 10px; } -.sheet-minimisable_infographic_field4x3c { +.charsheet .sheet-minimisable_infographic_field4x3c { grid-area: m6; height: fit-content; background: rgba(0, 0, 0, 0.25); @@ -1152,7 +1145,7 @@ ______________________________ start of minimisable infographic ________________ 'mi8 mi8 mi8 mc12'; } -.sheet-minimisable_infographic_g8 { +.charsheet .sheet-minimisable_infographic_g8 { grid-area: mi8; font-family: inherit; justify-self: right; @@ -1160,12 +1153,12 @@ ______________________________ start of minimisable infographic ________________ margin-right: 3px; } -.sheet-minimisable_infographic_g9 { +.charsheet .sheet-minimisable_infographic_g9 { grid-area: mi9; border-bottom: 1px solid #52682d38; } -.sheet-minimisable_infographic_field4x3b { +.charsheet .sheet-minimisable_infographic_field4x3b { height: fit-content; background: rgba(0, 0, 0, 0.25); margin-right: 10px; @@ -1183,40 +1176,40 @@ ______________________________ start of core tab ______________________________ -.sheet-core_lists1 { +.charsheet .sheet-core_lists1 { grid-area: cl1; margin-right: 10px; } -.sheet-core_lists2 { +.charsheet .sheet-core_lists2 { grid-area: cl2; margin-bottom: 5px; } -.sheet-core_lists3 { +.charsheet .sheet-core_lists3 { grid-area: cl3; margin-top: 5px; margin-bottom: 5px; } -.sheet-core_lists4 { +.charsheet .sheet-core_lists4 { grid-area: cl4; margin-top: 5px; margin-bottom: 5px; } -.sheet-core_lists5 { +.charsheet .sheet-core_lists5 { grid-area: cl5; margin-top: 5px; margin-bottom: 5px; } -.sheet-core_lists6 { +.charsheet .sheet-core_lists6 { grid-area: cl6; margin-top: 5px; } -.sheet-core_lists { +.charsheet .sheet-core_lists { display: grid; grid-template-columns: minmax(400px, 50%) auto; grid-template-areas: @@ -1227,25 +1220,25 @@ ______________________________ start of core tab ______________________________ 'cl1 cl6'; } -.sheet-skills_item { +.charsheet .sheet-skills_item { margin: 7px 5px; } -.sheet-skills_text { +.charsheet .sheet-skills_text { margin: 4px 0px; } -.sheet-skills_diff { +.charsheet .sheet-skills_diff { margin-left: 8px; } -.sheet-text_left { +.charsheet .sheet-text_left { text-align: left !important; } /* Lores, linguistics, trade, etc have the same processing as a normal skill check */ -.sheet-skill_header, -.sheet-education_header { +.charsheet .sheet-skill_header, +.charsheet .sheet-education_header { border-bottom: 2px solid darkgrey; margin-top: 7px; display: grid; @@ -1253,8 +1246,8 @@ ______________________________ start of core tab ______________________________ grid-template-rows: 23px; } -.sheet-skill_grid, -.sheet-education_grid { +.charsheet .sheet-skill_grid, +.charsheet .sheet-education_grid { border-bottom: 2px solid darkgrey; padding-top: 1.5px; padding-bottom: 1.5px; @@ -1265,14 +1258,14 @@ ______________________________ start of core tab ______________________________ } -.sheet-abilities_checkbox_pointer { +.charsheet .sheet-abilities_checkbox_pointer { margin-top: -21px; margin-right: 9px; text-align: right; } -.sheet-traits_checkbox_pointer { +.charsheet .sheet-traits_checkbox_pointer { margin-top: -21px; margin-right: 9px; text-align: right; @@ -1283,7 +1276,7 @@ ______________________________ start of core tab ______________________________ /* ______________________________ end of core tab ______________________________ ______________________________ start of equipment tab ______________________________ */ -.sheet-equipment_divider { +.charsheet .sheet-equipment_divider { display: grid; grid-template-columns: 49.5% 1% 49.5%; grid-template-areas: @@ -1291,27 +1284,27 @@ ______________________________ start of equipment tab __________________________ 'e3 e3 e3'; } -.sheet-equipment_ranged_weapons { +.charsheet .sheet-equipment_ranged_weapons { grid-area: e1; /*background:rgba(0,0,0,0.25);*/ border-radius: 10px; padding: 2px; } -.sheet-equipment_melee_weapons { +.charsheet .sheet-equipment_melee_weapons { grid-area: e2; /*background:rgba(0,0,0,0.25);*/ border-radius: 10px; padding: 2px; } -.sheet-equipment_numerics { +.charsheet .sheet-equipment_numerics { grid-area: e3; margin-top: 10px; } -.sheet-equipment_ranged_weapons_rep, -.sheet-equipment_melee_weapons_rep { +.charsheet .sheet-equipment_ranged_weapons_rep, +.charsheet .sheet-equipment_melee_weapons_rep { /*background:#6E8B3D50; */ /* border:1px solid white; */ box-shadow: 0px 2px 5px black; @@ -1320,7 +1313,7 @@ ______________________________ start of equipment tab __________________________ } -.sheet-equipment_weapon_rep_head { +.charsheet .sheet-equipment_weapon_rep_head { /* h1-5, minimize, name, HIT, DMG */ display: grid; grid-template-columns: 70px auto 75px 65px; @@ -1333,7 +1326,7 @@ ______________________________ start of equipment tab __________________________ margin-top: 10px; } -.sheet-equipment_weapon_rep_h1 { +.charsheet .sheet-equipment_weapon_rep_h1 { grid-area: wh1; align-items: center; grid-template-columns: 20px 20px 20px; @@ -1341,191 +1334,194 @@ ______________________________ start of equipment tab __________________________ display: grid; } -.sheet-equipment_weapon_rep_h2 { +.charsheet .sheet-equipment_weapon_rep_h2 { grid-area: wh2; text-align: left; background: transparent; box-shadow: none; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } -.sheet-equipment_weapon_rep_h3 { +.charsheet .sheet-equipment_weapon_rep_h3 { grid-area: wh3; width: 60px !important; } -.sheet-equipment_weapon_rep_h3_psy { +.charsheet .sheet-equipment_weapon_rep_h3_psy { grid-area: wh3; width: 70px !important; } -.sheet-equipment_weapon_rep_h4 { +.charsheet .sheet-equipment_weapon_rep_h4 { grid-area: wh4; width: 50px !important; } -.sheet-wb1 { +.charsheet .sheet-wb1 { grid-area: wb1; margin-bottom: 0px; font-size: 0.8em; } -.sheet-wb2 { +.charsheet .sheet-wb2 { grid-area: wb2; margin-bottom: 0px; font-size: 0.8em; } -.sheet-wb3 { +.charsheet .sheet-wb3 { grid-area: wb3; margin-bottom: 0px; font-size: 0.8em; } -.sheet-equipment_ranged_weapons_gs01 { +.charsheet .sheet-equipment_ranged_weapons_gs01 { grid-area: rw01; border-top-left-radius: 15px; } -.sheet-equipment_ranged_weapons_gs02 { +.charsheet .sheet-equipment_ranged_weapons_gs02 { grid-area: rw02; border-top-left-radius: 15px; } -.sheet-equipment_ranged_weapons_gs03 { +.charsheet .sheet-equipment_ranged_weapons_gs03 { grid-area: rw03; border-top-left-radius: 15px; } -.sheet-equipment_ranged_weapons_gs04 { +.charsheet .sheet-equipment_ranged_weapons_gs04 { grid-area: rw04; border-top-left-radius: 15px; } -/* .sheet-equipment_ranged_weapons_gs05 {} -.sheet-equipment_ranged_weapons_gs05 {} */ +/*.charsheet .sheet-equipment_ranged_weapons_gs05 {} +.charsheet .sheet-equipment_ranged_weapons_gs05 {} */ -.sheet-equipment_ranged_weapons_gs1 { +.charsheet .sheet-equipment_ranged_weapons_gs1 { grid-area: rw1; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs2 { +.charsheet .sheet-equipment_ranged_weapons_gs2 { grid-area: rw2; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs3 { +.charsheet .sheet-equipment_ranged_weapons_gs3 { grid-area: rw3; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs4 { +.charsheet .sheet-equipment_ranged_weapons_gs4 { grid-area: rw4; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs5 { +.charsheet .sheet-equipment_ranged_weapons_gs5 { grid-area: rw5; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs6 { +.charsheet .sheet-equipment_ranged_weapons_gs6 { grid-area: rw6; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs7 { +.charsheet .sheet-equipment_ranged_weapons_gs7 { grid-area: rw7; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs8 { +.charsheet .sheet-equipment_ranged_weapons_gs8 { grid-area: rw8; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs9 { +.charsheet .sheet-equipment_ranged_weapons_gs9 { grid-area: rw9; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs10 { +.charsheet .sheet-equipment_ranged_weapons_gs10 { grid-area: rw10; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs11 { +.charsheet .sheet-equipment_ranged_weapons_gs11 { grid-area: rw11; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs12 { +.charsheet .sheet-equipment_ranged_weapons_gs12 { grid-area: rw12; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs06 { +.charsheet .sheet-equipment_ranged_weapons_gs06 { grid-area: rw05; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs07 { +.charsheet .sheet-equipment_ranged_weapons_gs07 { grid-area: rw06; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs08 { +.charsheet .sheet-equipment_ranged_weapons_gs08 { grid-area: rw07; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs09 { +.charsheet .sheet-equipment_ranged_weapons_gs09 { grid-area: rw08; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs010 { +.charsheet .sheet-equipment_ranged_weapons_gs010 { grid-area: rw09; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs011 { +.charsheet .sheet-equipment_ranged_weapons_gs011 { grid-area: rw010; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs012 { +.charsheet .sheet-equipment_ranged_weapons_gs012 { grid-area: rw011; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs013 { +.charsheet .sheet-equipment_ranged_weapons_gs013 { grid-area: rw012; } -.sheet-equipment_ranged_weapons_gs13 { +.charsheet .sheet-equipment_ranged_weapons_gs13 { grid-area: rw13; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs14 { +.charsheet .sheet-equipment_ranged_weapons_gs14 { grid-area: rw14; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs15 { +.charsheet .sheet-equipment_ranged_weapons_gs15 { grid-area: rw15; font-size: 30px; margin-top: -27px; @@ -1533,12 +1529,12 @@ ______________________________ start of equipment tab __________________________ height: 15px; } -.sheet-equipment_ranged_weapons_gs16 { +.charsheet .sheet-equipment_ranged_weapons_gs16 { grid-area: rw16; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs17 { +.charsheet .sheet-equipment_ranged_weapons_gs17 { grid-area: rw17; font-size: 30px; margin-top: -27px; @@ -1546,23 +1542,23 @@ ______________________________ start of equipment tab __________________________ height: 15px; } -.sheet-equipment_ranged_weapons_gs18 { +.charsheet .sheet-equipment_ranged_weapons_gs18 { grid-area: rw18; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs19 { +.charsheet .sheet-equipment_ranged_weapons_gs19 { grid-area: rw19; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs20 { +.charsheet .sheet-equipment_ranged_weapons_gs20 { grid-area: rw20; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs21 { +.charsheet .sheet-equipment_ranged_weapons_gs21 { grid-area: rw21; font-size: 30px; margin-top: -27px; @@ -1570,104 +1566,104 @@ ______________________________ start of equipment tab __________________________ height: 15px; } -.sheet-equipment_ranged_weapons_gs22 { +.charsheet .sheet-equipment_ranged_weapons_gs22 { grid-area: rw22; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs23 { +.charsheet .sheet-equipment_ranged_weapons_gs23 { grid-area: rw23; font-size: 12px; width: 60px !important; } -.sheet-equipment_ranged_weapons_gs24 { +.charsheet .sheet-equipment_ranged_weapons_gs24 { grid-area: rw24; font-size: 12px; width: 50px !important; } -.sheet-equipment_ranged_weapons_gs25 { +.charsheet .sheet-equipment_ranged_weapons_gs25 { grid-area: rw25; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs26 { +.charsheet .sheet-equipment_ranged_weapons_gs26 { grid-area: rw26; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs27 { +.charsheet .sheet-equipment_ranged_weapons_gs27 { grid-area: rw27; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs28 { +.charsheet .sheet-equipment_ranged_weapons_gs28 { grid-area: rw28; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs29 { +.charsheet .sheet-equipment_ranged_weapons_gs29 { grid-area: rw29; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs30 { +.charsheet .sheet-equipment_ranged_weapons_gs30 { grid-area: rw30; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs31 { +.charsheet .sheet-equipment_ranged_weapons_gs31 { grid-area: rw31; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs32 { +.charsheet .sheet-equipment_ranged_weapons_gs32 { grid-area: rw32; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs33 { +.charsheet .sheet-equipment_ranged_weapons_gs33 { grid-area: rw33; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs34 { +.charsheet .sheet-equipment_ranged_weapons_gs34 { grid-area: rw34; font-size: 12px; } -.sheet-equipment_ranged_weapons_gs35 { +.charsheet .sheet-equipment_ranged_weapons_gs35 { grid-area: rw35; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs36 { +.charsheet .sheet-equipment_ranged_weapons_gs36 { grid-area: rw36; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs37 { +.charsheet .sheet-equipment_ranged_weapons_gs37 { grid-area: rw37; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_gs38 { +.charsheet .sheet-equipment_ranged_weapons_gs38 { grid-area: rw38; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_ranged_weapons_grid0 { +.charsheet .sheet-equipment_ranged_weapons_grid0 { /* gs01-05, roll modifiers, hit, DMG */ align-items: center; display: grid; @@ -1676,7 +1672,7 @@ ______________________________ start of equipment tab __________________________ 'rw01 rw02 rw03 rw04 rw05 rw06'; } -.sheet-equipment_ranged_weapons_grid1 { +.charsheet .sheet-equipment_ranged_weapons_grid1 { /* gs1-4, Name, Class */ align-items: center; display: grid; @@ -1685,7 +1681,7 @@ ______________________________ start of equipment tab __________________________ 'rw1 rw2 rw2 rw2 rw2 rw2 rw3 rw4 rw4 rw4'; } -.sheet-equipment_ranged_weapons_grid2 { +.charsheet .sheet-equipment_ranged_weapons_grid2 { /* gs5-12, Range, Dmg, Pen, Type */ align-items: center; display: grid; @@ -1694,7 +1690,7 @@ ______________________________ start of equipment tab __________________________ 'rw5 rw6 rw7 rw8 rw8 rw9 rw10 rw11 rw12 rw12'; } -.sheet-equipment_ranged_weapons_grid2a { +.charsheet .sheet-equipment_ranged_weapons_grid2a { /* gs06-013, primitive, proven, vengeful */ align-items: center; display: grid; @@ -1703,7 +1699,7 @@ ______________________________ start of equipment tab __________________________ 'rw05 rw06 rw07 rw08 rw09 rw010 rw011 rw012 . .'; } -.sheet-equipment_ranged_weapons_grid3 { +.charsheet .sheet-equipment_ranged_weapons_grid3 { /* gs13-22 RoF, Magazine */ align-items: center; display: grid; @@ -1712,7 +1708,7 @@ ______________________________ start of equipment tab __________________________ } -.sheet-equipment_ranged_weapons_grid4 { +.charsheet .sheet-equipment_ranged_weapons_grid4 { /* gs25-32 Trained?, HitMod, Reload, Weight */ align-items: center; display: grid; @@ -1722,7 +1718,7 @@ ______________________________ start of equipment tab __________________________ 'rw25 rw26 rw27 rw28 rw29 rw30 rw30 rw31 rw32'; } -.sheet-equipment_ranged_weapons_grid5 { +.charsheet .sheet-equipment_ranged_weapons_grid5 { /* gs33-38 Domain, Mishap chance, Spray */ align-items: center; display: grid; @@ -1731,186 +1727,186 @@ ______________________________ start of equipment tab __________________________ 'rw33 rw34 rw34 rw35 rw35 rw36 rw36 rw36 rw37 rw38'; } -.sheet-equipment_melee_weapons_gs01 { +.charsheet .sheet-equipment_melee_weapons_gs01 { grid-area: mw01; border-top-left-radius: 15px; } -.sheet-equipment_melee_weapons_gs02 { +.charsheet .sheet-equipment_melee_weapons_gs02 { grid-area: mw02; border-top-left-radius: 15px; } -.sheet-equipment_melee_weapons_gs03 { +.charsheet .sheet-equipment_melee_weapons_gs03 { grid-area: mw03; border-top-left-radius: 15px; } -.sheet-equipment_melee_weapons_gs04 { +.charsheet .sheet-equipment_melee_weapons_gs04 { grid-area: mw04; width: 60px !important; } -.sheet-equipment_melee_weapons_gs05 { +.charsheet .sheet-equipment_melee_weapons_gs05 { grid-area: mw05; width: 50px !important; } -.sheet-equipment_melee_weapons_gs1 { +.charsheet .sheet-equipment_melee_weapons_gs1 { grid-area: mw1; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs2 { +.charsheet .sheet-equipment_melee_weapons_gs2 { grid-area: mw2; font-size: 12px; } -.sheet-equipment_melee_weapons_gs3 { +.charsheet .sheet-equipment_melee_weapons_gs3 { grid-area: mw3; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs4 { +.charsheet .sheet-equipment_melee_weapons_gs4 { grid-area: mw4; font-size: 12px; } -.sheet-equipment_melee_weapons_gs5 { +.charsheet .sheet-equipment_melee_weapons_gs5 { grid-area: mw5; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs6 { +.charsheet .sheet-equipment_melee_weapons_gs6 { grid-area: mw6; font-size: 12px; } -.sheet-equipment_melee_weapons_gs7 { +.charsheet .sheet-equipment_melee_weapons_gs7 { grid-area: mw7; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs8 { +.charsheet .sheet-equipment_melee_weapons_gs8 { grid-area: mw8; font-size: 12px; } -.sheet-equipment_melee_weapons_gs9 { +.charsheet .sheet-equipment_melee_weapons_gs9 { grid-area: mw9; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs10 { +.charsheet .sheet-equipment_melee_weapons_gs10 { grid-area: mw10; font-size: 12px; } -.sheet-equipment_melee_weapons_gs11 { +.charsheet .sheet-equipment_melee_weapons_gs11 { grid-area: mw11; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs12 { +.charsheet .sheet-equipment_melee_weapons_gs12 { grid-area: mw12; font-size: 12px; } -.sheet-equipment_melee_weapons_gs06 { +.charsheet .sheet-equipment_melee_weapons_gs06 { grid-area: mw05; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs07 { +.charsheet .sheet-equipment_melee_weapons_gs07 { grid-area: mw06; font-size: 12px; } -.sheet-equipment_melee_weapons_gs08 { +.charsheet .sheet-equipment_melee_weapons_gs08 { grid-area: mw07; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs09 { +.charsheet .sheet-equipment_melee_weapons_gs09 { grid-area: mw08; font-size: 12px; } -.sheet-equipment_melee_weapons_gs010 { +.charsheet .sheet-equipment_melee_weapons_gs010 { grid-area: mw09; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs011 { +.charsheet .sheet-equipment_melee_weapons_gs011 { grid-area: mw010; font-size: 12px; } -.sheet-equipment_melee_weapons_gs012 { +.charsheet .sheet-equipment_melee_weapons_gs012 { grid-area: mw011; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs013 { +.charsheet .sheet-equipment_melee_weapons_gs013 { grid-area: mw012; font-size: 12px; } -.sheet-equipment_melee_weapons_gs13 { +.charsheet .sheet-equipment_melee_weapons_gs13 { grid-area: mw13; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs14 { +.charsheet .sheet-equipment_melee_weapons_gs14 { grid-area: mw14; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs15 { +.charsheet .sheet-equipment_melee_weapons_gs15 { grid-area: mw15; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs16 { +.charsheet .sheet-equipment_melee_weapons_gs16 { grid-area: mw16; font-size: 12px; } -.sheet-equipment_melee_weapons_gs17 { +.charsheet .sheet-equipment_melee_weapons_gs17 { grid-area: mw17; font-size: 12px; padding: 0px 2px; } -.sheet-equipment_melee_weapons_gs18 { +.charsheet .sheet-equipment_melee_weapons_gs18 { grid-area: mw18; font-size: 12px; } -.sheet-equipment_melee_weapons_gs19 { +.charsheet .sheet-equipment_melee_weapons_gs19 { grid-area: mw19; font-size: 12px; } -.sheet-equipment_melee_weapons_gs20 { +.charsheet .sheet-equipment_melee_weapons_gs20 { grid-area: mw20; font-size: 12px; } -.sheet-equipment_melee_weapons_grid0 { +.charsheet .sheet-equipment_melee_weapons_grid0 { /* gs01-05 aim, type, multi, hit, dmg */ align-items: center; display: grid; @@ -1919,7 +1915,7 @@ ______________________________ start of equipment tab __________________________ 'mw01 mw02 mw03 . mw04 mw05'; } -.sheet-equipment_melee_weapons_grid1 { +.charsheet .sheet-equipment_melee_weapons_grid1 { /* gs1-4 name, class */ align-items: center; display: grid; @@ -1928,7 +1924,7 @@ ______________________________ start of equipment tab __________________________ 'mw1 mw2 mw2 mw2 mw2 mw2 mw2 mw3 mw4 mw4'; } -.sheet-equipment_melee_weapons_grid2 { +.charsheet .sheet-equipment_melee_weapons_grid2 { /* gs5-12 reach, damage, pen, type */ align-items: center; display: grid; @@ -1937,7 +1933,7 @@ ______________________________ start of equipment tab __________________________ 'mw5 mw6 mw7 mw8 mw8 mw9 mw10 mw11 mw12 mw12'; } -.sheet-equipment_melee_weapons_grid2a { +.charsheet .sheet-equipment_melee_weapons_grid2a { /* gs06-013, primitive, proven, vengeful */ align-items: center; display: grid; @@ -1946,7 +1942,7 @@ ______________________________ start of equipment tab __________________________ 'mw05 mw06 mw07 mw08 mw09 mw010 . . . .'; } -.sheet-equipment_melee_weapons_grid3 { +.charsheet .sheet-equipment_melee_weapons_grid3 { /* gs13-20 trained?, hitmod, weight, domain */ align-items: center; display: grid; @@ -1955,108 +1951,108 @@ ______________________________ start of equipment tab __________________________ 'mw13 mw14 mw15 mw16 mw16 mw17 mw18 mw18 mw19 mw20'; } -.repcontainer[data-groupname=repeating_gear] .repitem .sheet-equipment_gear { +.charsheet .repcontainer[data-groupname=repeating_gear] .repitem .sheet-equipment_gear { display: none; } -.sheet-sortInventory[value=all]~.repcontainer[data-groupname=repeating_gear] .repitem .sheet-equipment_gear { +.charsheet .sheet-sortInventory[value=all]~.repcontainer[data-groupname=repeating_gear] .repitem .sheet-equipment_gear { display: grid; } -.sheet-sortInventory[value=weapon]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=weapon]~.sheet-equipment_gear { +.charsheet .sheet-sortInventory[value=weapon]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=weapon]~.sheet-equipment_gear { display: grid; } -.sheet-sortInventory[value=armour]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=armour]~.sheet-equipment_gear { +.charsheet .sheet-sortInventory[value=armour]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=armour]~.sheet-equipment_gear { display: grid; } -.sheet-sortInventory[value=gear]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=gear]~.sheet-equipment_gear { +.charsheet .sheet-sortInventory[value=gear]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=gear]~.sheet-equipment_gear { display: grid; } -.sheet-sortInventory[value=tool]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=tool]~.sheet-equipment_gear { +.charsheet .sheet-sortInventory[value=tool]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=tool]~.sheet-equipment_gear { display: grid; } -.sheet-sortInventory[value=consumables]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=consumables]~.sheet-equipment_gear { +.charsheet .sheet-sortInventory[value=consumables]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=consumables]~.sheet-equipment_gear { display: grid; } -.sheet-sortInventory[value=ammo]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=ammo]~.sheet-equipment_gear { +.charsheet .sheet-sortInventory[value=ammo]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=ammo]~.sheet-equipment_gear { display: grid; } -.sheet-sortInventory[value=cybernetic]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=cybernetic]~.sheet-equipment_gear { +.charsheet .sheet-sortInventory[value=cybernetic]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=cybernetic]~.sheet-equipment_gear { display: grid; } -.sheet-sortInventory[value=other]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=other]~.sheet-equipment_gear { +.charsheet .sheet-sortInventory[value=other]~.repcontainer[data-groupname=repeating_gear] .repitem input[value=other]~.sheet-equipment_gear { display: grid; } -.sheet-equipment_gear_gs0 { +.charsheet .sheet-equipment_gear_gs0 { grid-area: eg0; width: 100%; text-align: center; align-self: center; } -.sheet-equipment_gear_gs1 { +.charsheet .sheet-equipment_gear_gs1 { grid-area: eg1; width: 100%; text-align: center; align-self: center; } -.sheet-equipment_gear_gs2 { +.charsheet .sheet-equipment_gear_gs2 { grid-area: eg2; width: 100%; text-align: center; align-self: center; } -.sheet-equipment_gear_gs3 { +.charsheet .sheet-equipment_gear_gs3 { grid-area: eg3; width: 100%; text-align: center; align-self: center; } -.sheet-equipment_gear_gs4 { +.charsheet .sheet-equipment_gear_gs4 { grid-area: eg4; width: 100%; text-align: center; align-self: center; } -.sheet-equipment_gear_gs5 { +.charsheet .sheet-equipment_gear_gs5 { grid-area: eg5; width: 100%; text-align: center; align-self: center; } -.sheet-equipment_gear_gs6 { +.charsheet .sheet-equipment_gear_gs6 { grid-area: eg6; width: 100%; text-align: center; align-self: center; } -.sheet-equipment_gear_gs7 { +.charsheet .sheet-equipment_gear_gs7 { grid-area: eg7; margin-top: 5px !important; } -.sheet-equipment_gear { +.charsheet .sheet-equipment_gear { display: grid; grid-template-columns: 50px auto 100px 60px 100px 80px 60px 25px; grid-template-areas: 'eg0 eg1 eg2 eg3 eg4 eg5 eg6 eg7'; } -.sheet-equipment_header { +.charsheet .sheet-equipment_header { background: rgba(0, 0, 0, 0.25); box-shadow: 0px 5px 9px black; border: 2px solid #6e8b3d38; @@ -2068,35 +2064,35 @@ ______________________________ start of equipment tab __________________________ letter-spacing: 0px; } -.sheet-equipment_titles { +.charsheet .sheet-equipment_titles { font-size: 14px; text-align: center; height: 20px; } -.sheet-equipment_armor_gs1 { +.charsheet .sheet-equipment_armor_gs1 { background: rgba(0, 0, 0, 0.25); padding: 2px; } -.sheet-equipment_armor_gs2 { +.charsheet .sheet-equipment_armor_gs2 { /*background: rgba(0,0,0,0.25);*/ padding: 2px; } -.sheet-equipment_armor_grid { +.charsheet .sheet-equipment_armor_grid { display: grid; grid-gap: 10px; grid-template-columns: 300px auto; } -.sheet-armor_border { +.charsheet .sheet-armor_border { border: 1px solid #FFFFFF; border-radius: 5px 5px 5px 5px; padding: 3px; } -.sheet-equipment_armor_input { +.charsheet .sheet-equipment_armor_input { text-align: center; font-size: 14pt; margin: auto auto auto auto; @@ -2104,27 +2100,27 @@ ______________________________ start of equipment tab __________________________ display: inline-block; } -.sheet-armor_display_gs0 { +.charsheet .sheet-armor_display_gs0 { grid-area: ad0; } -.sheet-armor_display_gs1 { +.charsheet .sheet-armor_display_gs1 { grid-area: ad1; } -.sheet-armor_display_gs2 { +.charsheet .sheet-armor_display_gs2 { grid-area: ad2; } -.sheet-armor_display_gs3 { +.charsheet .sheet-armor_display_gs3 { grid-area: ad3; } -.sheet-armor_display_gs4 { +.charsheet .sheet-armor_display_gs4 { grid-area: ad4; } -.sheet-armor_display_grid1 { +.charsheet .sheet-armor_display_grid1 { display: grid; justify-items: center; align-content: space-around; @@ -2136,15 +2132,15 @@ ______________________________ start of equipment tab __________________________ 'ad2 ad3 ad4'; } -.sheet-armor_display_gs5 { +.charsheet .sheet-armor_display_gs5 { grid-area: ad5; } -.sheet-armor_display_gs6 { +.charsheet .sheet-armor_display_gs6 { grid-area: ad6; } -.sheet-armor_display_grid2 { +.charsheet .sheet-armor_display_grid2 { display: grid; justify-items: center; grid-template-columns: 1fr 2fr 2fr 1fr; @@ -2153,7 +2149,7 @@ ______________________________ start of equipment tab __________________________ '. ad5 ad6 .'; } -.sheet-equipment_cybernetics_grid { +.charsheet .sheet-equipment_cybernetics_grid { margin: 0px 50.5px 0.6px 0px; position: relative; z-index: 0; @@ -2167,81 +2163,58 @@ ______________________________ start of equipment tab __________________________ /* ______________________________ end of equipment tab ______________________________ ______________________________ start of advancements tab ______________________________ */ - -.sheet-aptitudes_grid_gs1 { - grid-area: ap1; - align-self: center; - text-align: center; - width: 100%; -} - -.sheet-aptitudes_grid_gs2 { - grid-area: ap2; - align-self: center; - text-align: center; - width: 100%; -} - -.sheet-aptitudes_grid_gs3 { - grid-area: ap3; - align-self: center; - text-align: center; - width: 100%; -} - -.sheet-aptitudes_grid { +.charsheet .sheet-aptitudes_grid { box-shadow: 0px 5px 9px black; justify-content: center; display: grid; grid-template-columns: auto auto auto; - grid-gap: 5%; grid-template-areas: 'ap1 ap2 ap3'; } -.sheet-advancements_grid_gs1 { +.charsheet .sheet-advancements_grid_gs1 { grid-area: e1; align-self: center; text-align: center; width: 100%; } -.sheet-advancements_grid_gs2 { +.charsheet .sheet-advancements_grid_gs2 { grid-area: e2; align-self: center; text-align: center; width: 100% !important; } -.sheet-advancements_grid_gs3 { +.charsheet .sheet-advancements_grid_gs3 { grid-area: e3; align-self: center; text-align: center; width: 100% !important; } -.sheet-advancements_grid_gs4 { +.charsheet .sheet-advancements_grid_gs4 { grid-area: e4; align-self: center; text-align: center; width: 100%; } -.sheet-advancements_grid_gs5 { +.charsheet .sheet-advancements_grid_gs5 { grid-area: e5; align-self: center; text-align: center; width: 100% !important; } -.sheet-advancements_grid_gs6 { +.charsheet .sheet-advancements_grid_gs6 { grid-area: e6; align-self: center; text-align: center; width: 100% !important; } -.sheet-advancements_grid_gs7 { +.charsheet .sheet-advancements_grid_gs7 { grid-area: e7; align-self: center; text-align: center; @@ -2249,7 +2222,7 @@ ______________________________ start of advancements tab _______________________ margin: 1px 0px 0px 1px; } -.sheet-advancements_grid { +.charsheet .sheet-advancements_grid { justify-content: center; display: grid; grid-template-columns: 29% 9% 9% 1% 29% 9% 9% 4%; @@ -2257,16 +2230,16 @@ ______________________________ start of advancements tab _______________________ 'e1 e2 e3 e0 e4 e5 e6 e7'; } -.repcontainer { +.charsheet .repcontainer { box-shadow: 0px 5px 9px black; } -.sheet-weapon_training { +.charsheet .sheet-weapon_training { padding: 2px; background: rgba(0, 0, 0, 0.25); } -.sheet-weapon_training_grid { +.charsheet .sheet-weapon_training_grid { padding: 2px 0px 2px 40px; background: rgba(0, 0, 0, 0.25); box-shadow: 0px 5px 9px black; @@ -2283,21 +2256,21 @@ ______________________________ start of advancements tab _______________________ ______________________________ start of Journal tab ___________________________________________________________ */ /* Journal sections didn't need their own CSS; this covers only the insanity/corruption portion of the page */ -.sheet-insanity_side { +.charsheet .sheet-insanity_side { grid-area: e1; /*background:rgba(0,0,0,0.25);*/ border-radius: 10px; padding: 2px; } -.sheet-corruption_side { +.charsheet .sheet-corruption_side { grid-area: e2; /*background:rgba(0,0,0,0.25);*/ border-radius: 10px; padding: 2px; } -.sheet-insanity_corruption_divider { +.charsheet .sheet-insanity_corruption_divider { display: grid; grid-template-columns: 49.5% 1% 49.5%; grid-template-areas: @@ -2305,45 +2278,45 @@ ______________________________ start of Journal tab ____________________________ } -.sheet-insanity_gs1 { +.charsheet .sheet-insanity_gs1 { grid-area: in1; margin-top: 5px; font-size: 16px; margin-top: 2px; } -.sheet-insanity_gs2 { +.charsheet .sheet-insanity_gs2 { grid-area: in2; margin-top: 5px; font-size: 14px; } -.sheet-insanity_gs3 { +.charsheet .sheet-insanity_gs3 { grid-area: in3; margin-top: 5px; font-size: 14px; text-align: center; } -.sheet-insanity_gs4 { +.charsheet .sheet-insanity_gs4 { grid-area: in4; margin-top: 5px; font-size: 14px; } -.sheet-insanity_gs5 { +.charsheet .sheet-insanity_gs5 { grid-area: in5; margin-top: 5px; font-size: 14px; } -.sheet-insanity_gs6 { +.charsheet .sheet-insanity_gs6 { grid-area: in6; margin-top: 5px; font-size: 14px; } -.sheet-insanity_info { +.charsheet .sheet-insanity_info { font-family: inherit; letter-spacing: 0px; display: grid; @@ -2354,39 +2327,39 @@ ______________________________ start of Journal tab ____________________________ 'in3 in3'; } -.sheet-corruption_gs1 { +.charsheet .sheet-corruption_gs1 { grid-area: co1; margin-top: 5px; font-size: 16px; margin-top: 2px; } -.sheet-corruption_gs2 { +.charsheet .sheet-corruption_gs2 { grid-area: co2; margin-top: 5px; font-size: 14px; } -.sheet-corruption_gs3 { +.charsheet .sheet-corruption_gs3 { grid-area: co3; margin-top: 5px; font-size: 15px; text-align: center; } -.sheet-corruption_gs4 { +.charsheet .sheet-corruption_gs4 { grid-area: co4; margin-top: 5px; font-size: 15px; } -.sheet-corruption_gs5 { +.charsheet .sheet-corruption_gs5 { grid-area: co5; margin-top: 5px; font-size: 15px; } -.sheet-corruption_info { +.charsheet .sheet-corruption_info { font-family: inherit; letter-spacing: 0px; display: grid; @@ -2403,7 +2376,7 @@ ______________________________ start of Journal tab ____________________________ /* ______________________________ end of Journal tab ______________________________ ______________________________ start of Psykana tab ___________________________________________________________ */ -.sheet-psykana_divider { +.charsheet .sheet-psykana_divider { display: grid; grid-template-columns: 39% 1% 60%; grid-template-areas: @@ -2412,7 +2385,7 @@ ______________________________ start of Psykana tab ____________________________ 'e4 . e3'; } -.sheet-psykana_info { +.charsheet .sheet-psykana_info { grid-area: e1; /*background:rgba(0,0,0,0.25);*/ border-radius: 10px; @@ -2420,7 +2393,7 @@ ______________________________ start of Psykana tab ____________________________ margin-bottom: 5px; } -.sheet-psykana_minor { +.charsheet .sheet-psykana_minor { grid-area: e2; /*background:rgba(0,0,0,0.25);*/ border-radius: 10px; @@ -2428,7 +2401,7 @@ ______________________________ start of Psykana tab ____________________________ margin-top: 5px; } -.sheet-psykana_notes { +.charsheet .sheet-psykana_notes { grid-area: e4; /*background:rgba(0,0,0,0.25);*/ border-radius: 10px; @@ -2436,287 +2409,287 @@ ______________________________ start of Psykana tab ____________________________ margin-top: 5px; } -.sheet-psykana_ability { +.charsheet .sheet-psykana_ability { grid-area: e3; /*background:rgba(0,0,0,0.25);*/ border-radius: 10px; padding: 2px; } -.sheet-minormanifestation_rep, -.sheet-psykana_ability_rep { +.charsheet .sheet-minormanifestation_rep, +.charsheet .sheet-psykana_ability_rep { /*background:rgba(0,0,0,0.25);*/ border: 1px solid white; border-radius: 10px; padding: 2px; } -.sheet-psykana_info_gs1 { +.charsheet .sheet-psykana_info_gs1 { grid-area: pi1; font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs2 { +.charsheet .sheet-psykana_info_gs2 { grid-area: pi2; font-size: 14px; margin-top: 5px; } -.sheet-psykana_info_gs3 { +.charsheet .sheet-psykana_info_gs3 { grid-area: pi3; font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs4 { +.charsheet .sheet-psykana_info_gs4 { grid-area: pi4; font-size: 14px; margin-top: 5px; } -.sheet-psykana_info_gs5 { +.charsheet .sheet-psykana_info_gs5 { grid-area: pi5; font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs6 { +.charsheet .sheet-psykana_info_gs6 { grid-area: pi6; font-size: 14px; } -.sheet-psykana_info_gs7 { +.charsheet .sheet-psykana_info_gs7 { grid-area: pi7; font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs8 { +.charsheet .sheet-psykana_info_gs8 { grid-area: pi8; font-size: 14px; } -.sheet-psykana_info_gs9 { +.charsheet .sheet-psykana_info_gs9 { grid-area: pi9; font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs10 { +.charsheet .sheet-psykana_info_gs10 { grid-area: pi10; font-size: 14px; } -.sheet-psykana_info_gs11 { +.charsheet .sheet-psykana_info_gs11 { grid-area: pi11; font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs12 { +.charsheet .sheet-psykana_info_gs12 { grid-area: pi12; font-size: 14px; } -.sheet-psykana_info_gs13 { +.charsheet .sheet-psykana_info_gs13 { grid-area: pi13; font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs14 { +.charsheet .sheet-psykana_info_gs14 { grid-area: pi14; font-size: 14px; } -.sheet-psykana_info_gs15 { +.charsheet .sheet-psykana_info_gs15 { grid-area: pi15; font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs16 { +.charsheet .sheet-psykana_info_gs16 { grid-area: pi16; font-size: 14px; } -.sheet-psykana_info_gs17 { +.charsheet .sheet-psykana_info_gs17 { grid-area: pi17; font-size: 14px; width: 130px !important; } -.sheet-psykana_info_gs18 { +.charsheet .sheet-psykana_info_gs18 { grid-area: pi18; font-size: 14px; width: 100px !important; } -.sheet-psykana_info_gs19 { +.charsheet .sheet-psykana_info_gs19 { grid-area: pi19; font-size: 14px; padding: 0px 2px; } -.sheet-psykana_info_gs20 { +.charsheet .sheet-psykana_info_gs20 { grid-area: pi20; font-size: 14px; } -.sheet-psykana_info_grid { +.charsheet .sheet-psykana_info_grid { font-weight: bold; align-items: center; display: grid; grid-template-columns: 30% auto auto auto; grid-template-rows: 40px 40px 40px 40px 40px 40px; grid-template-areas: - 'pi1 pi2 pi2 pi2' - 'pi3 pi4 pi4 pi4' - 'pi5 pi6 pi7 pi8' - 'pi9 pi10 pi11 pi12' + 'pi1 pi2 pi2 pi2' + 'pi3 pi4 pi4 pi4' + 'pi5 pi6 pi7 pi8' + 'pi9 pi10 pi11 pi12' 'pi13 pi14 pi15 pi16' 'pi19 pi20 . .' 'pi17 pi17 pi18 pi18'; } -.sheet-psykana_ability_gs1 { +.charsheet .sheet-psykana_ability_gs1 { grid-area: pa1; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs2 { +.charsheet .sheet-psykana_ability_gs2 { grid-area: pa2; font-size: 12px; } -.sheet-psykana_ability_gs3 { +.charsheet .sheet-psykana_ability_gs3 { grid-area: pa3; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs4 { +.charsheet .sheet-psykana_ability_gs4 { grid-area: pa4; font-size: 12px; border-top-right-radius: 10px; } -.sheet-psykana_ability_gs5 { +.charsheet .sheet-psykana_ability_gs5 { grid-area: pa5; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs6 { +.charsheet .sheet-psykana_ability_gs6 { grid-area: pa6; font-size: 12px; } -.sheet-psykana_ability_gs7 { +.charsheet .sheet-psykana_ability_gs7 { grid-area: pa7; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs8 { +.charsheet .sheet-psykana_ability_gs8 { grid-area: pa8; font-size: 12px; } -.sheet-psykana_ability_gs9 { +.charsheet .sheet-psykana_ability_gs9 { grid-area: pa9; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs10 { +.charsheet .sheet-psykana_ability_gs10 { grid-area: pa10; font-size: 12px; } -.sheet-psykana_ability_gs11 { +.charsheet .sheet-psykana_ability_gs11 { grid-area: pa11; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs12 { +.charsheet .sheet-psykana_ability_gs12 { grid-area: pa12; font-size: 12px; } -.sheet-psykana_ability_gs13 { +.charsheet .sheet-psykana_ability_gs13 { grid-area: pa13; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs14 { +.charsheet .sheet-psykana_ability_gs14 { grid-area: pa14; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs15 { +.charsheet .sheet-psykana_ability_gs15 { grid-area: pa15; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs16 { +.charsheet .sheet-psykana_ability_gs16 { grid-area: pa16; font-size: 12px; } -.sheet-psykana_ability_gs17 { +.charsheet .sheet-psykana_ability_gs17 { grid-area: pa17; font-size: 12px; width: 70px !important; } -.sheet-psykana_ability_gs18 { +.charsheet .sheet-psykana_ability_gs18 { grid-area: pa18; font-size: 12px; width: 50px !important; } -.sheet-psykana_ability_gs19 { +.charsheet .sheet-psykana_ability_gs19 { grid-area: pa19; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs20 { +.charsheet .sheet-psykana_ability_gs20 { grid-area: pa20; font-size: 12px; } -.sheet-psykana_ability_gs21 { +.charsheet .sheet-psykana_ability_gs21 { grid-area: pa21; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs22 { +.charsheet .sheet-psykana_ability_gs22 { grid-area: pa22; font-size: 12px; } -.sheet-psykana_ability_gs23 { +.charsheet .sheet-psykana_ability_gs23 { grid-area: pa23; font-size: 12px; padding: 0px 2px; } -.sheet-psykana_ability_gs24 { +.charsheet .sheet-psykana_ability_gs24 { grid-area: pa24; font-size: 12px; } -.sheet-psykana_ability_grid1 { +.charsheet .sheet-psykana_ability_grid1 { /* gs1-4, Name, Subtype */ align-items: center; display: grid; @@ -2725,7 +2698,7 @@ ______________________________ start of Psykana tab ____________________________ 'pa1 pa2 pa2 pa2 pa2 pa3 pa4 pa4 pa4 pa4'; } -.sheet-psykana_ability_grid2 { +.charsheet .sheet-psykana_ability_grid2 { /* gs5-12, Range, Dmg, Type, Pen */ align-items: center; display: grid; @@ -2734,7 +2707,7 @@ ______________________________ start of Psykana tab ____________________________ 'pa5 pa6 pa6 pa7 pa8 pa8 pa9 pa10 pa10 pa10 pa11 pa12'; } -.sheet-psykana_ability_grid3 { +.charsheet .sheet-psykana_ability_grid3 { /* gs13-18 Focus Power, Hit Mod, Hit/Dmg buttons */ align-items: center; display: grid; @@ -2743,7 +2716,7 @@ ______________________________ start of Psykana tab ____________________________ 'pa13 pa14 pa14 pa14 pa14 pa15 pa16 pa16 pa17 pa18'; } -.sheet-psykana_ability_grid4 { +.charsheet .sheet-psykana_ability_grid4 { /* gs19-22 Actions to cast, Actions to sustain */ align-items: center; display: grid; @@ -2758,7 +2731,7 @@ ______________________________ start of vehicles page __________________________ -.sheet-vehicles_grid1 { +.charsheet .sheet-vehicles_grid1 { margin-right: 10px; background: rgba(0, 0, 0, 0.25); border-top: 2px solid #6e8b3d38; @@ -2769,7 +2742,7 @@ ______________________________ start of vehicles page __________________________ font-family: inherit; } -.sheet-vehicles_grid2 { +.charsheet .sheet-vehicles_grid2 { margin-right: 10px; background: rgba(0, 0, 0, 0.25); border-left: 2px solid #6e8b3d38; @@ -2777,11 +2750,11 @@ ______________________________ start of vehicles page __________________________ font-family: inherit; } -.sheet-vehicle_weapons { +.charsheet .sheet-vehicle_weapons { grid-area: vgw; } -.sheet-vehicles_divider { +.charsheet .sheet-vehicles_divider { display: grid; grid-template-columns: 50% 50%; grid-template-areas: @@ -2789,7 +2762,7 @@ ______________________________ start of vehicles page __________________________ 'vg2 vgw'; } -.sheet-vehicles_Gn { +.charsheet .sheet-vehicles_Gn { grid-area: vn; background: rgba(0, 0, 0, 0.25); border: none; @@ -2800,7 +2773,7 @@ ______________________________ start of vehicles page __________________________ font-size: 15px; } -.sheet-vehicles_Gs { +.charsheet .sheet-vehicles_Gs { grid-area: vs; height: 28.5px; margin-bottom: -8px; @@ -2808,7 +2781,7 @@ ______________________________ start of vehicles page __________________________ border-top: 1px solid white; } -.sheet-vehicles_Gt { +.charsheet .sheet-vehicles_Gt { grid-area: vt; height: 28.5px; margin-bottom: -8px; @@ -2816,137 +2789,137 @@ ______________________________ start of vehicles page __________________________ border-top: 1px solid white; } -.sheet-vehicles_G1 { +.charsheet .sheet-vehicles_G1 { grid-area: v1 } -.sheet-vehicles_G2 { +.charsheet .sheet-vehicles_G2 { grid-area: v2 } -.sheet-vehicles_G3 { +.charsheet .sheet-vehicles_G3 { grid-area: v3; text-align: center } -.sheet-vehicles_G4 { +.charsheet .sheet-vehicles_G4 { grid-area: v4; text-align: center } -.sheet-vehicles_G5 { +.charsheet .sheet-vehicles_G5 { grid-area: v5; text-align: center } -.sheet-vehicles_G6 { +.charsheet .sheet-vehicles_G6 { grid-area: v6; text-align: center } -.sheet-vehicles_G7 { +.charsheet .sheet-vehicles_G7 { grid-area: v7 } -.sheet-vehicles_G8 { +.charsheet .sheet-vehicles_G8 { grid-area: v8 } -.sheet-vehicles_G9 { +.charsheet .sheet-vehicles_G9 { grid-area: v9 } -.sheet-vehicles_G10 { +.charsheet .sheet-vehicles_G10 { grid-area: v10 } -.sheet-vehicles_G11 { +.charsheet .sheet-vehicles_G11 { grid-area: v11; } -.sheet-vehicles_G12 { +.charsheet .sheet-vehicles_G12 { grid-area: v12; text-align: center } -.sheet-vehicles_G13 { +.charsheet .sheet-vehicles_G13 { grid-area: v13; text-align: center } -.sheet-vehicles_G14 { +.charsheet .sheet-vehicles_G14 { grid-area: v14 } -.sheet-vehicles_G15 { +.charsheet .sheet-vehicles_G15 { grid-area: v15 } -.sheet-vehicles_grid1 { +.charsheet .sheet-vehicles_grid1 { display: grid; grid-template-columns: 25% 25% 25% 25%; grid-template-areas: - 'vn vn vn vn' - 'vs v1 v1 vt' - 'v2 v2 v2 v2' - 'v3 v4 v5 v6' - 'v7 v8 v9 v10' + 'vn vn vn vn' + 'vs v1 v1 vt' + 'v2 v2 v2 v2' + 'v3 v4 v5 v6' + 'v7 v8 v9 v10' 'v11 v11 v11 v11' 'v12 v12 v13 v13' 'v14 v14 v15 v15'; } -.sheet-vehicles_G16 { +.charsheet .sheet-vehicles_G16 { grid-area: v16 } -.sheet-vehicles_G17 { +.charsheet .sheet-vehicles_G17 { grid-area: v17; text-align: center } -.sheet-vehicles_G18 { +.charsheet .sheet-vehicles_G18 { grid-area: v18; text-align: center } -.sheet-vehicles_G19 { +.charsheet .sheet-vehicles_G19 { grid-area: v19; text-align: center } -.sheet-vehicles_G20 { +.charsheet .sheet-vehicles_G20 { grid-area: v20; text-align: center } -.sheet-vehicles_G21 { +.charsheet .sheet-vehicles_G21 { grid-area: v21 } -.sheet-vehicles_G22 { +.charsheet .sheet-vehicles_G22 { grid-area: v22 } -.sheet-vehicles_G23 { +.charsheet .sheet-vehicles_G23 { grid-area: v23 } -.sheet-vehicles_G24 { +.charsheet .sheet-vehicles_G24 { grid-area: v24 } -.sheet-vehicles_G25 { +.charsheet .sheet-vehicles_G25 { grid-area: v25 } -.sheet-vehicles_G26 { +.charsheet .sheet-vehicles_G26 { grid-area: v26; margin-top: 3px; padding-bottom: 2px; } -.sheet-vehicles_grid2 { +.charsheet .sheet-vehicles_grid2 { display: grid; grid-template-columns: 14% 14% 24% 24% 24%; grid-template-areas: @@ -2956,33 +2929,33 @@ ______________________________ start of vehicles page __________________________ 'v26 v26 v26 v26 v26'; } -.sheet-vehicles_descriptor { +.charsheet .sheet-vehicles_descriptor { border-bottom-left-radius: 8px; } /* These hider checkboxes have names which match the select element on a 1-2-3; the appropriate Operate check is displayed, on an invalid selection there is no Operate check */ -.sheet-hider:not(:checked)+div { +.charsheet .sheet-hider:not(:checked)+div { display: none } -.sheet-hider:not(:checked)+input { +.charsheet .sheet-hider:not(:checked)+input { display: none } -.sheet-hider:not(:checked)+button { +.charsheet .sheet-hider:not(:checked)+button { display: none } -.sheet-hidernot:checked+div { +.charsheet .sheet-hidernot:checked+div { display: none } -.sheet-hidernot:checked+input { +.charsheet .sheet-hidernot:checked+input { display: none } -.sheet-hidernot:checked+button { +.charsheet .sheet-hidernot:checked+button { display: none } @@ -2990,28 +2963,28 @@ the appropriate Operate check is displayed, on an invalid selection there is no /* ______________________________ end of vehicles page ______________________________ ______________________________ start of json ___________________________________________________________ */ -.sheet-json_skill { +.charsheet .sheet-json_skill { display: none } -input[type="checkbox"]:not(:checked)~.sheet-json_skill { +.charsheet input[type="checkbox"]:not(:checked)~.sheet-json_skill { display: inline; } -.sheet-json_container span .repcontrol { +.charsheet .sheet-json_container span .repcontrol { display: none; } -.sheet-json_container span .repcontainer { +.charsheet .sheet-json_container span .repcontainer { display: inline; box-shadow: none; } -.sheet-json_container span .repcontainer .repitem { +.charsheet .sheet-json_container span .repcontainer .repitem { display: inline; } -.sheet-json_container { +.charsheet .sheet-json_container { border: solid black 3px; padding: 5px; word-break: break-all; @@ -3181,6 +3154,6 @@ ______________________________ start of rolltemplate ___________________________ border: none; } -.itemcontrol { +.charsheet .itemcontrol { z-index: 1; } diff --git a/ShadowbaneInquisition/Shadowbane.html b/ShadowbaneInquisition/Shadowbane.html index 0ecc02ec9e..bff6a9bd6f 100644 --- a/ShadowbaneInquisition/Shadowbane.html +++ b/ShadowbaneInquisition/Shadowbane.html @@ -1,10 +1,6 @@ - +
@@ -1013,7 +1009,7 @@ + class='sheet-hidden sheet-core_button' /> + class='sheet-hidden sheet-core_button' /> + class='sheet-hidden sheet-core_button' /> + class='sheet-hidden sheet-core_button' /> + class='sheet-hidden sheet-core_button' /> + class='sheet-hidden sheet-core_button' />
@@ -2008,22 +2003,6 @@

+30

Roll

-
- - - - - - - - - - -
@@ -2056,22 +2035,6 @@

+30

Roll

-
- - - - - - - - - - -
@@ -2104,22 +2067,6 @@

+30

Roll

-
- - - - - - - - - - -
@@ -2152,22 +2099,6 @@

+30

Roll

-
- - - - - - - - - - -
@@ -2200,23 +2131,6 @@

+30

Roll

-
- - - - - - - - - - -
@@ -2247,11 +2161,6 @@

Special Abilities / Talents

Expand ⯆

- - - - -
@@ -2264,11 +2173,6 @@

Traits

Expand ⯆

- - - - -
@@ -2584,23 +2488,23 @@
- + - + - + - + - + - + - + - + - +
@@ -2613,18 +2517,6 @@
Weight
Type
-
- - - - - - - - -
- -
@@ -2771,22 +2663,341 @@ XP Total:

+ +

Aptitudes

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

+ +
Name
XP Cost
@@ -2796,23 +3007,12 @@
Page #
-
- - - - - - - -
- -
- + - + @@ -3953,8 +4153,8 @@
- - + +
@@ -3968,1310 +4168,1628 @@ NOTE: replace worker by javascript for IDE functionality --> @@ -5841,7 +6359,7 @@ NOTE: replace worker by javascript for IDE functionality
{{/damage}} {{#spray}} -
Spray weapons jam on any Damage die roll of 9.
+
Spray weapons jam on any Damage die roll of 7.
{{/spray}} {{#description}} {{#name}} diff --git a/ShadowbaneInquisition/SheetWorker.js b/ShadowbaneInquisition/SheetWorker.js new file mode 100644 index 0000000000..36fdc181b7 --- /dev/null +++ b/ShadowbaneInquisition/SheetWorker.js @@ -0,0 +1,1271 @@ + // repeating sections data array + const BUFF = { + active: 'active_r', + ws: 'WS_mod_r', + bs: 'BS_mod_r', + str: 'STR_mod_r', + tou: 'TOU_mod_r', + agi: 'AGI_mod_r', + int: 'INT_mod_r', + per: 'PER_mod_r', + wp: 'WP_mod_r', + fel: 'FEL_mod_r', + inf: 'INF_mod_r' + }, + 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' + }, + R_WEAPON = { + name : 'R_weapon_name', + class : 'R_weapon_class', + range : 'R_weapon_range', + damage : 'R_weapon_dam-roll', + pen : 'R_weapon_pen', + type : 'R_weapon_type', + max : 'R_weapon_max', + min : 'R_weapon_min', + vengeful : 'R_weapon_vengeful', + accurate : 'R_weapon_accurate', + burst : 'R_weapon_burst', + auto : 'R_weapon_auto', + mag : 'R_weapon_mag', + mag_max : 'R_weapon_mag_max', + trained : 'R_weapon_trained', + mod1 : 'R_weapon_mod1', + reload : 'R_weapon_reload', + weight : 'R_weapon_weight', + domain : 'R_weapon_domain' + } + + + // ___________________________________________________________________________ + // __________________________Script for Ammo API______________________________ + // ___________________________________________________________________________ + on("sheet:opened change:repeating_rangedweapons:r_weapon_attack change:repeating_rangedweapons:r_weapon_burst change:repeating_rangedweapons:r_weapon_auto remove:repeating_rangedweapons change:repeating_vehiclerangedweapons:v_r_weapon_attack change:repeating_vehiclerangedweapons:v_r_weapon_burst change:repeating_vehiclerangedweapons:v_r_weapon_auto remove:repeating_vehiclerangedweapons", function() { + getSectionIDs("rangedweapons", function(idarray) { + // first get the attribute names for all rows in put in one array + const fieldnames = []; + idarray.forEach(id => fieldnames.push( + `repeating_rangedweapons_${id}_R_weapon_attack`, + `repeating_rangedweapons_${id}_R_weapon_burst`, + `repeating_rangedweapons_${id}_R_weapon_auto` + )); + getAttrs(fieldnames, values => { + // create a variable to hold all the attribute values you re going to create. + const attr = {}; + // now loop through the rows again + idarray.forEach(id => { + let row = 'repeating_rangedweapons_' + id; + let attack = +values[`${row}_R_weapon_attack`] || 0, + burst = +values[`${row}_R_weapon_burst`] || 0, + auto = +values[`${row}_R_weapon_auto`] || 0; + + let ammo = attack === -10 ? -auto : (attack === 0 ? -burst : -1); + + attr[`${row}_id`] = id; // id of the repeating element + attr[`${row}_ammo`] = ammo; // number of ammo to use + }); + setAttrs(attr); + }); + }); + getSectionIDs("vehiclerangedweapons", function(idarray) { + // first get the attribute names for all rows in put in one array + const fieldnames = []; + idarray.forEach(id => fieldnames.push( + `repeating_vehiclerangedweapons_${id}_V_R_weapon_attack`, + `repeating_vehiclerangedweapons_${id}_V_R_weapon_burst`, + `repeating_vehiclerangedweapons_${id}_V_R_weapon_auto` + )); + getAttrs(fieldnames, values => { + // create a variable to hold all the attribute values you re going to create. + const attr = {}; + // now loop through the rows again + idarray.forEach(id => { + let row = 'repeating_vehiclerangedweapons_' + id; + let attack = +values[`${row}_V_R_weapon_attack`] || 0, + burst = +values[`${row}_V_R_weapon_burst`] || 0, + auto = +values[`${row}_V_R_weapon_auto`] || 0; + + let ammo = attack === -10 ? -auto : (attack === 0 ? -burst : -1); + + attr[`${row}_id`] = id; // id of the repeating element + attr[`${row}_ammo`] = ammo; // number of ammo to use + }); + setAttrs(attr); + }); + }); + }); + + // ___________________________________________________________________________ + // __________________Skills unnatural bonus sheet worker______________________ + // ___________________________________________________________________________ + /** + * skillRoll description + * @param {string} skill - name of the skill + * @param {string} focus - short name of the characteristic + */ + const skillRoll = (skill, focus) => { + let attr = {}; + attr[`${skill}_focus`] = `@{${focus}Total}`; + attr[`${skill}_unnat`]=`@{${focus.toUpperCase()}_unnat}`; + return attr; + }; + let skills = [ + 'acrobatics','athletics','awareness','charm','command','commerce','deceive','dodge','inquiry', + 'interrogation','intimidate','logic','medicae','nav_surface','nav_stellar','nav_warp','op_aero','op_surface','op_void', + 'parry','psyniscience','scrutiny','security','sleight','stealth','survival','tech_use', + 'linguistics','common-lore','scholastic-lore','forbidden-lore','trade' + ]; + let repeatingSkills = ['skill','linguistics','common-lore','scholastic-lore','forbidden-lore','trade']; + on('sheet:opened ' + skills.map(skill => `change:${skill}_char change:${skill}_name`).join(' ') + repeatingSkills.map(skill => `change:repeating_${skill}:${skill}_r_char change:repeating_${skill}:${skill}_name`).join(' '), function () { + console.log('== UPDATING SKILLS =='); + getAttrs(skills.map( skill => `${skill}_char`), (values) => { + let attr = {}; + for (var [skill, focus] of Object.entries(values)) { + attr = {...attr, ...skillRoll(skill.replace('_char', ''), focus)}; + } + setAttrs(attr); + }); + repeatingSkills.forEach(field => { + var repSkills = []; + getSectionIDs(field, ids => { + ids.forEach( id => { + repSkills.push(`repeating_${field}_${id}_${field}_r_char`); + }); + getAttrs(repSkills, (values) => { + let attr = {}; + for (var [skill, focus] of Object.entries(values)) { + attr = {...attr, ...skillRoll(skill.replace('_char', ''), focus)}; + } + if (attr) setAttrs(attr); + console.table(values) + console.table(attr) + }); + }); + }); + console.log('== SKILLS UPDATED =='); + }); + + + // ___________________________________________________________________________ + // ____________________Movement and Weight sheet worker_______________________ + // ___________________________and Fatigue Pts_________________________________ + let fieldsMWF = [ + 'size', 'fatigue', 'carry', 'weight_total', + 'ws', 'ws_unnat', 'ws_advancement', 'ws_mod', + 'bs', 'bs_unnat', 'bs_advancement', 'bs_mod', + 'str', 'str_unnat', 'str_advancement', 'str_mod', + 'tou', 'tou_unnat', 'tou_advancement', 'tou_mod', + 'int', 'int_unnat', 'int_advancement', 'int_mod', + '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', + 'fatigue_ignore', 'psykana_class' + ]; + on('sheet:opened ' + fieldsMWF.map(field => 'change:' + field).join(' '), function(e) { + // console.log(e); + getAttrs(fieldsMWF, function(values) { + // 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; + // STATS + function Stat(stat) { + this.base = parseInt(values[`${stat}`], 10) || 0 + this.modifier = parseInt(values[`${stat}_mod`], 10) || 0 + this.advancement = parseInt(values[`${stat}_advancement`], 10) || 0 + this.unnat = parseInt(values[`${stat}_unnat`], 10) || 0 + this.total = this.base + this.modifier + this.advancement + this.bonus = () => Math.floor(this.total / 10 + this.unnat) + } + // WS + var ws = new Stat('ws') + if (ws.bonus() < fatigue) ws.total = Math.ceil(ws.total / 2) + // BS + var bs = new Stat('bs') + if (bs.bonus() < fatigue) bs.total = Math.ceil(bs.total / 2) + // STR + var str = new Stat('str') + if (str.bonus() < fatigue) str.total = Math.ceil(str.total / 2) + // TOU + var tou = new Stat('tou') + if (tou.bonus() < fatigue) tou.total = Math.ceil(tou.total / 2) + // AGI + var agi = new Stat('agi') + 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; + if (weight_total > carry) agi.total -= 10 + if (armor_limit) agi.total = (agi.total > armor_agi ) ? armor_agi : agi.total + if (agi.bonus() < fatigue) agi.total = Math.ceil(agi.total / 2) + // INT + var int = new Stat('int') + if (int.bonus() < fatigue) int.total = Math.ceil(int.total / 2) + // PER + var per = new Stat('per') + if (per.bonus() < fatigue) per.total = Math.ceil(per.total / 2) + // WP + var wp = new Stat('wp') + if (wp.bonus() < fatigue) wp.total = Math.ceil(wp.total / 2) + // FEL + var fel = new Stat('fel') + // Blank FEL halfing + var blank = values['psykana_class'] + if (blank === '-1') fel.total = Math.ceil(fel.total / 2); + if (fel.bonus() < fatigue) fel.total = Math.ceil(fel.total / 2) + // INF + var inf = new Stat('inf') + if (inf.bonus() < fatigue) inf.total = Math.ceil(inf.total / 2) + + var move_mod = agi.bonus() + size + agi_mov_mod; + var carry_mod = str.bonus() + tou.bonus(); + var carry_calc; + + // 40k system does their carry weight off a sheet-table + + switch (carry_mod) { + case 1: carry_calc = 2.25; break; + case 2: carry_calc = 4.5; break; + case 3: carry_calc = 9; break; + case 4: carry_calc = 18; break; + case 5: carry_calc = 27; break; + case 6: carry_calc = 36; break; + case 7: carry_calc = 45; break; + case 8: carry_calc = 56; break; + case 9: carry_calc = 67; break; + case 10: carry_calc = 78; break; + case 11: carry_calc = 90; break; + case 12: carry_calc = 112; break; + case 13: carry_calc = 225; break; + case 14: carry_calc = 337; break; + case 15: carry_calc = 450; break; + case 16: carry_calc = 675; break; + case 17: carry_calc = 900; break; + case 18: carry_calc = 1350; break; + case 19: carry_calc = 1800; break; + case 20: carry_calc = 2250; break; + } + + // normal, no unnatural + setAttrs({ + half_move: (move_mod), + full_move: (move_mod * 2), + charge_move: (move_mod * 3), + run_move: (move_mod * 6), + carry: (carry_calc * 1), //taking out the * 1 seems to cause attr_carry to freeze when carry_mod is set to 1 or 0 + lift: (carry_calc * 2), + push: (carry_calc * 4), + bsTotal: (bs.total), + bsB: (bs.bonus()), + wsTotal: (ws.total), + wsB: (ws.bonus()), + strTotal: (str.total), + strB: (str.bonus()), + touTotal: (tou.total), + touB: (tou.bonus()), + agiTotal: (agi.total), + agiB: (agi.bonus()), + intTotal: (int.total), + intB: (int.bonus()), + perTotal: (per.total), + perB: (per.bonus()), + wpTotal: (wp.total), + wpB: (wp.bonus()), + felTotal: (fel.total), + felB: (fel.bonus()), + infTotal: (inf.total), + infB: (inf.bonus()), + }); + + // 0 mod movement override + if (move_mod <= 0) { + setAttrs({ + half_move: (0.5), + full_move: (1), + charge_move: (2), + run_move: (3) + }); + } + + // 0 mod carry override + if (carry_mod <=0) { + setAttrs({ + carry: (0.9), + lift: (2.25), + push: (4.5) + }); + } + + }); + }); + + + + // ___________________________________________________________________________ + // ________________________Fatigue and Armor sheet worker_____________________ + // ___________________________________________________________________________ + let fieldsFA = [ + 'fatigue_mod', + 'tou', 'tou_unnat', 'tou_advancement', 'tou_mod', + 'wp', 'wp_unnat', 'wp_advancement', + 'armor_head', 'armor_arm_right', 'armor_body', 'armor_arm_left', 'armor_leg_right', 'armor_leg_left' + ]; + on('sheet:opened ' + fieldsFA.map(field => 'change:' + field).join(' '), function() { + getAttrs(fieldsFA, function(values) { + var fatigue_mod = parseInt(values['fatigue_mod'], 10) || 0; + + var toughness = parseInt(values['tou'], 10) || 0; + var toughness_unnat = parseInt(values['tou_unnat'], 10) || 0; + var toughness_advancement = parseInt(values['tou_advancement'], 10) || 0; + var toughness_modifier = parseInt(values['tou_mod'], 10) || 0; + var toughness_bonus = Math.floor((toughness + toughness_advancement + toughness_modifier) / 10 + toughness_unnat); + var toughness_mod = Math.floor((toughness + toughness_advancement) / 10 + toughness_unnat); + + var willpower = parseInt(values['wp'], 10) || 0; + var willpower_unnat = parseInt(values['wp_unnat'], 10) || 0; + var willpower_advancement = parseInt(values['wp_advancement'], 10) || 0; + var willpower_mod = Math.floor((willpower + willpower_advancement) / 10 + willpower_unnat); + + var armor_head = parseInt(values['armor_head'], 10) || 0; + var armor_arm_right = parseInt(values['armor_arm_right'], 10) || 0; + var armor_body = parseInt(values['armor_body'], 10) || 0; + var armor_arm_left = parseInt(values['armor_arm_left'], 10) || 0; + var armor_leg_right = parseInt(values['armor_leg_right'], 10) || 0; + var armor_leg_left = parseInt(values['armor_leg_left'], 10) || 0; + + // normal, no modifiers ___________________________________________________ + setAttrs({ + soak_head: (armor_head + toughness_bonus), + soak_arm_right: (armor_arm_right + toughness_bonus), + soak_body: (armor_body + toughness_bonus), + soak_arm_left: (armor_arm_left + toughness_bonus), + soak_leg_right: (armor_leg_right + toughness_bonus), + soak_leg_left: (armor_leg_left + toughness_bonus), + fatigue_max: (toughness_mod + willpower_mod + fatigue_mod) + }); + + }); + }); + + + + // ___________________________________________________________________________ + // ____________________Tabs sheet worker______________________________________ + // ___________________________________________________________________________ + const buttonlist = ['core','equipment','advancements','journal','vehicle','psykana','settings']; + buttonlist.forEach(button => { + on(`clicked:${button}`, function() { + setAttrs({ + sheetTab: button + }); + }); + }); + + // ___________________________________________________________________________ + // ____________________Inventory Tabs sheet worker____________________________ + // ___________________________________________________________________________ + const buttonListIventory = ['all', 'weapon', 'armour', 'gear', 'tool', 'consumables', 'ammo', 'cyberntic', 'other']; + buttonListIventory.forEach(button => { + on(`clicked:inv_${button}`, function() { + setAttrs({ + equipmentTab: button + }); + }); + }); + + + // ___________________________________________________________________________ + // ____________________insanity/corruption sheet worker_______________________ + // ___________________________________________________________________________ + on('sheet:opened change:insanity_pts change:corruption_pts', function() { + getAttrs(['insanity_pts', 'corruption_pts'], function(values) { + var insanity_pts = parseInt(values['insanity_pts'], 0) || 0; + var corruption_pts = parseInt(values['corruption_pts'], 10) || 0; + + function insanity (points) { + if (points <= 9) return ('Stable') + if (points <= 39) return ('Unsettled') + if (points <= 59) return ('Disturbed') + if (points <= 79) return ('Unhinged') + if (points <= 99) return ('Deranged') + return ('Terminally Insane') + } + + function corruption (points) { + if (points <= 9) return ('Pure') + if (points <= 39) return ('Tainted') + if (points <= 59) return ('Soiled') + if (points <= 79) return ('Debased') + if (points <= 99) return ('Profane') + return ('Damned') + } + setAttrs({ + insanity_degree: (insanity(insanity_pts)), + corruption_degree: (corruption(corruption_pts)) + }) + + }); + }); + + + + // ___________________________________________________________________________ + // _______________________psychic info sheet worker___________________________ + // ___________________________________________________________________________ + + const PSY_RANK = {} + + let fieldsPsy = ['psykana_class', 'psykana_limit', 'psy_push', 'psy_rating','psykana_sustain','psykana_sustain_count']; + on('sheet:opened ' + fieldsPsy.map(field => 'change:' + field).join(' '), function() { + getAttrs(fieldsPsy, function(values) { + var psykana_class = parseInt(values['psykana_class'])||0; + var psykana_limit = parseInt(values['psykana_limit'])||0; + var psy_push = parseInt(values['psy_push'])||0; + var psy_rating = parseInt(values['psy_rating'], 10) || 0; + var psykana_sustain = parseInt(values['psykana_sustain'], 10) || 0; + var psykana_sustain_count = parseInt(values['psykana_sustain_count'], 10) || 0; + var psykana_limit_factor = 0; + var push_addend_epr = 0; + var sustain_count_addend = 0; + var unfettered_addend = 0; + var push_addend_pp = 0; + var sustain_addend = 0; + + // psy rating calc + switch (psykana_limit) { + case 0: + psykana_limit_factor = 0.5; + setAttrs({ + psy_roll: ('cf>96') + }); + break; + case 1: + psykana_limit_factor = 1; + setAttrs({ + psy_roll: ('cf11cf22cf33cf44cf55cf66cf77cf88cf99cf100') + }); + break; + case 2: + psykana_limit_factor = 1; + push_addend_epr = psy_push; + if (psykana_class == 0) { + setAttrs({ + psy_roll: ('cs1cs11cs22cs33cs44cs55cs66cs77cs88cs99cs100cf>0') + //psy_roll: ('cf>0') + }); + } else { + setAttrs({ + psy_roll: ('cf>0') + }); + } + break; + } + + if (psykana_sustain == -5) { + sustain_count_addend = psykana_sustain_count; + } + var epr = Math.ceil(psy_rating * psykana_limit_factor) + push_addend_epr; + + // phenomena calc + if (psykana_class == 2 && psykana_limit == 1) { + unfettered_addend = 10; + } + if (psykana_class == 0 && psykana_limit == 2) { + push_addend_pp = 10; + } + if (psykana_class == 1 && psykana_limit == 2) { + push_addend_pp = 5 * psy_push; + } + if (psykana_class == 2 && psykana_limit == 2) { + push_addend_pp = 10 * psy_push; + } + if (psykana_sustain == -5) { + sustain_addend = 5 * sustain_count_addend; + } + var pp = unfettered_addend + push_addend_pp + sustain_addend; + + //output + setAttrs({ + effective_psy_rating: epr, + psykana_phenomena: pp + }); + }); + }); + + + + // ___________________________________________________________________________ + // ____________________gear cost/weight sheet worker__________________________ + // ___________________________________________________________________________ + on('change:repeating_rangedweapons remove:repeating_rangedweapons change:repeating_meleeweapons remove:repeating_meleeweapons', function() { + repeatingWeight("R_weapon_weight_t","rangedweapons",[['weight',"R_weapon_weight"],['carry',"R_weapon_carry"]]), + repeatingWeight("M_weapon_weight_t","meleeweapons",[['weight',"M_weapon_weight"],['carry',"M_weapon_carry"]]); + }); + + on('change:M_weapon_weight_t change:R_weapon_weight_t change:gear_carry change:gear_weight change:gear_quantity change:repeating_gear remove:repeating_gear', () => { + getSectionIDs(`repeating_gear`, idArray => { + const fieldset_weight = []; + const fieldset_quantity = []; + const fieldset_carry = []; + idArray.forEach(id => fieldset_weight.push (`repeating_gear_${id}_gear_weight_r`)); + idArray.forEach(id => fieldset_quantity.push (`repeating_gear_${id}_gear_quantity_r`)); + idArray.forEach(id => fieldset_carry.push (`repeating_gear_${id}_gear_carry_r`)); + getAttrs(['M_weapon_weight_t','R_weapon_weight_t','weight_total', 'gear_carry', 'gear_weight', 'gear_quantity', ...fieldset_weight, ...fieldset_quantity, ...fieldset_carry], v => { + const getValue = (id, field) => parseFloat(v[`repeating_gear_${id}_${field}`]) || 0 + const weight_base = parseFloat(v.gear_weight) * parseFloat(v.gear_quantity) * parseFloat(v.gear_carry) + const weight_repeating = idArray.reduce((total, id) => total + (getValue(id, 'gear_weight_r') * getValue(id, 'gear_quantity_r') * getValue(id, 'gear_carry_r')), 0) + const weapon_weight = parseFloat(v.M_weapon_weight_t) + parseFloat(v.R_weapon_weight_t) + setAttrs({ + weight_total: weight_base + weight_repeating + weapon_weight, + }); + }); + }); + }); + + // ___________________________________________________________________________ + // ____________________Advancement XP sheet worker_______________________________ + // ___________________________________________________________________________ + on('change:xp_total change:advancement_costL change:advancement_costR change:repeating_advancements remove:repeating_advancements', () => { + // get section IDs because of operation both inside and outside of fieldset + getSectionIDs(`repeating_advancements`, idArray => { + const fieldnames = []; + idArray.forEach(id => fieldnames.push ( + `repeating_advancements_${id}_advancement_costL_r`, + `repeating_advancements_${id}_advancement_costR_r` + )); + // spread operator to get every array value + getAttrs(['xp_total', 'advancement_costL', 'advancement_costR', ...fieldnames], v => { + const getValue = (id, field) => parseFloat(v[`repeating_advancements_${id}_${field}`]) || 0 + const cost = parseFloat(v.gear_cost) || 0 + const left = parseFloat(v.advancement_costL) || 0 + const right = parseFloat(v.advancement_costR) || 0 + const left_r = idArray.reduce((total, id) => total + getValue(id,'advancement_costL_r'),0) + const right_r = idArray.reduce((total, id) => total + getValue(id,'advancement_costR_r'),0) + const spent = left + right + left_r + right_r + const total = parseFloat(v.xp_total) || 0 + setAttrs({ + xp_spent: spent, + xp_current: total - spent + }); + }); + }); + }); + + + + // ___________________________________________________________________________ + // __________________________General sum sheet worker_________________________ + // ___________________________________________________________________________ + /** + * [repeatingWeight description] + * @param {[type]} destination [description] + * @param {[type]} section [description] + * @param {[type]} fields [description] + */ + const repeatingWeight = (destination, section, fields) => { + getSectionObjects(section, fields, items => { + const sumTotal = items.filter(item => item.carry !== '0').reduce((total, item) => total + parseFloat(item.weight),0); + setAttrs({[destination]: sumTotal}); + }) + } + + // ___________________________________________________________________________ + // _________________________ weapon damage primitive _________________________ + // ___________________________________________________________________________ + /** + * calculate real damage roll + * @param {string} source row id of the weapon + */ + const calcDmg = function (sources, fields) { + var redice = /^(\d+)?(d\d+)(.*)?/; + + getAttrs(fields, v => { + let attr = {}; + sources.forEach( source => { + // to avoid retyping long strings because i'm lazy + var dam = source + 'weapon_dam-roll', + ven = source + 'weapon_vengeful', // crit + min = source + 'weapon_min', // proven + max = source + 'weapon_max', // primitive + set = source + 'weapon_setting'; // overcharge/load / maximal + + let dmg = redice.exec(v[dam]); + ven = parseInt(v[ven], 10) || 0, + min = parseInt(v[min], 10) || 0, + max = parseInt(v[max], 10) || 0, + set = parseInt(v[set], 10) || 0; + + if (!dmg) { + console.log('no damage found'); + attr[`${source}weapon_real_dmg`] = v[dam]; + } else { + let dicenum = parseInt(dmg[1], 10) || 1, + dicetype = dmg[2], + mod = dmg[3]; + + let damTotal = '{'; + if (set === 3) dicenum ++; + + for (var i = 0; i < dicenum; i++) { + if (i) damTotal += ', ' + if (min > 0) damTotal += '{'; + if (max > 0) damTotal += '{'; + damTotal += (dicetype == 'd5') ? 'ceil(1d10/2)' : '1d10'; + if (ven > 0) damTotal += 'cs>' + ven; + if (min > 0) damTotal += ', {' + min + '}}kh1'; + if (max > 0) damTotal += ', {' + max + '}}kl1'; + } + damTotal += '}'; + if (mod) damTotal += mod; + if (set === 2) damTotal += '+1'; + if (set === 4) { + damTotal += '+2'; + attr[`${source}weapon_pen2`] = 2; + } else { + attr[`${source}weapon_pen2`] = 0; + } + attr[`${source}weapon_real_dmg`] = damTotal; + } + }); + setAttrs(attr); + }); + }; + + let fieldsDMG = [ + 'vehiclerangedweapons:V_R_weapon_dam-roll', 'vehiclerangedweapons:V_R_weapon_vengeful', 'vehiclerangedweapons:V_R_weapon_min', 'vehiclerangedweapons:V_R_weapon_max', 'vehiclerangedweapons:V_R_weapon_setting', + 'rangedweapons:R_weapon_dam-roll', 'rangedweapons:R_weapon_vengeful', 'rangedweapons:R_weapon_min', 'rangedweapons:R_weapon_max', 'rangedweapons:R_weapon_setting', + 'vehiclemeleeweapons:V_M_weapon_dam-roll', 'vehiclemeleeweapons:V_M_weapon_vengeful', 'vehiclemeleeweapons:V_M_weapon_min', 'vehiclemeleeweapons:V_M_weapon_max', + 'meleeweapons:M_weapon_dam-roll', 'meleeweapons:M_weapon_vengeful', 'meleeweapons:M_weapon_min', 'meleeweapons:M_weapon_max', + ]; + on('sheet:opened ' + fieldsDMG.map(field => 'change:repeating_' + field).join(' '), () => { + getSectionIDs('rangedweapons', (idArray) => { + let sources = []; + let fieldnames = []; + idArray.forEach( id => { + sources.push(`repeating_rangedweapons_${id}_R_`); + fieldnames.push( + `repeating_rangedweapons_${id}_R_weapon_dam-roll`, + `repeating_rangedweapons_${id}_R_weapon_vengeful`, + `repeating_rangedweapons_${id}_R_weapon_min`, + `repeating_rangedweapons_${id}_R_weapon_max`, + `repeating_rangedweapons_${id}_R_weapon_setting` + ); + }); + calcDmg(sources, fieldnames); + }); + getSectionIDs('meleeweapons', (idArray) => { + let sources = []; + let fieldnames = []; + idArray.forEach( id => { + sources.push(`repeating_meleeweapons_${id}_M_`); + fieldnames.push( + `repeating_meleeweapons_${id}_M_weapon_dam-roll`, + `repeating_meleeweapons_${id}_M_weapon_vengeful`, + `repeating_meleeweapons_${id}_M_weapon_min`, + `repeating_meleeweapons_${id}_M_weapon_max` + ); + }); + calcDmg(sources, fieldnames); + }); + getSectionIDs('vehiclerangedweapons', (idArray) => { + let sources = []; + let fieldnames = []; + idArray.forEach( id => { + sources.push(`repeating_vehiclerangedweapons_${id}_V_R_`); + fieldnames.push( + `repeating_vehiclerangedweapons_${id}_V_R_weapon_dam-roll`, + `repeating_vehiclerangedweapons_${id}_V_R_weapon_vengeful`, + `repeating_vehiclerangedweapons_${id}_V_R_weapon_min`, + `repeating_vehiclerangedweapons_${id}_V_R_weapon_max`, + `repeating_vehiclerangedweapons_${id}_V_R_weapon_setting` + ); + }); + calcDmg(sources, fieldnames); + }); + getSectionIDs('vehiclemeleeweapons', (idArray) => { + let sources = []; + let fieldnames = []; + idArray.forEach( id => { + sources.push(`repeating_vehiclemeleeweapons_${id}_V_M_`); + fieldnames.push( + `repeating_vehiclemeleeweapons_${id}_V_M_weapon_dam-roll`, + `repeating_vehiclemeleeweapons_${id}_V_M_weapon_vengeful`, + `repeating_vehiclemeleeweapons_${id}_V_M_weapon_min`, + `repeating_vehiclemeleeweapons_${id}_V_M_weapon_max` + ); + }); + calcDmg(sources, fieldnames); + }); + console.log('DAMAGES UPDATED'); + }); + + // ___________________________________________________________________________ + // __________________________ get repeating objects __________________________ + // ___________________________________________________________________________ + // TODO: add class suport + /** + * 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, ...(Object.values(fields).map(field => `repeating_${section}_${id}_${field}`))],[]); + getAttrs(attrArray, v => { + const objects = []; + idArray.forEach(id => { + let obj = { _id : id, _source: `repeating_${section}_${id}` }; + for (var property in fields) { + obj[property] = v[`repeating_${section}_${id}_${fields[property]}`] + } + objects.push(obj) + }); + callback(objects); + }); + }); + } + + // ___________________________________________________________________________ + // ________________________________ Importer _________________________________ + // ___________________________________________________________________________ + on('clicked:import_clear', () => { + setAttrs({ + import_value: '' + }); + }); + on('clicked:import', () => { + getAttrs(['import_value'], (v) => { + try { + var data = JSON.parse(v.import_value); + } catch(e) { + setAttrs({import_value: 'ERROR: verify if you have copied the totality of the Export'}); return console.log(e); + } + console.log('Importing Character'); + var attributes = {} + + // emptying the repeating sections + const sectionList = [ + 'conditions', + 'skill', + 'linguistics', + 'common-lore', + 'scholastic-lore', + 'forbidden-lore', + 'trade', + 'abilities', + 'traits', + 'rangedweapons', + 'meleeweapons', + 'gear', + 'cybernetics', + 'aptitudes', + 'advancements', + 'disorders', + 'mutations', + 'objectives', + 'notes', + 'vehicles', + 'vehiclerangedweapons', + 'vehiclemeleeweapons', + 'minormanifestation', + 'psynotes', + 'psychicabilities' + ]; + sectionList.forEach( section => { + getSectionIDs(`repeating_${section}`, idArray => { + idArray.forEach(id => removeRepeatingRow(`repeating_${section}_${id}`)) + }) + }) + + // info Block + attributes = {...attributes, ...mapInfo(data)} + + // STATS + attributes = {...attributes, ...mapStat('WS', data?.weaponSkill)}; + attributes = {...attributes, ...mapStat('BS', data?.ballisticSkill)}; + attributes = {...attributes, ...mapStat('STR', data?.strenght)}; + attributes = {...attributes, ...mapStat('TOU', data?.toughness)}; + attributes = {...attributes, ...mapStat('AGI', data?.agility)}; + attributes = {...attributes, ...mapStat('INT', data?.intelligence)}; + attributes = {...attributes, ...mapStat('PER', data?.perception)}; + attributes = {...attributes, ...mapStat('WP', data?.willpower)}; + attributes = {...attributes, ...mapStat('FEL', data?.fellowship)}; + attributes = {...attributes, ...mapStat('INF', data?.influence)}; + + // WOUNDS, FATE, FATIGUE, FORCEFIELD + attributes = {...attributes, ...mapWounds(data?.wounds)}; + attributes = {...attributes, ...mapFate(data?.fate)}; + attributes = {...attributes, ...mapFatigue(data?.fatigue)}; + attributes = {...attributes, ...mapForceField(data?.forcefield)}; + + // CONDITIONS + data?.conditions?.forEach((condition) => { + attributes = {...attributes, ...mapCondition(condition)}; + }); + + // SKILLS, REPEATING SKILLS + data?.skills?.forEach(skill => { + attributes = {...attributes, ...mapSkill(skill)}; + }); + data?.lores?.common?.forEach(skill => { + attributes = {...attributes, ...mapRepeatingSkill(skill, 'common-lore')}; + }); + data?.lores?.scholastic?.forEach(skill => { + attributes = {...attributes, ...mapRepeatingSkill(skill, 'scholastic-lore')}; + }); + data?.lores?.forbidden?.forEach(skill => { + attributes = {...attributes, ...mapRepeatingSkill(skill, 'forbidden-lore')}; + }); + data?.linguistics?.forEach(skill => { + attributes = {...attributes, ...mapRepeatingSkill(skill, 'linguistics')}; + }); + data?.trades?.forEach(skill => { + attributes = {...attributes, ...mapRepeatingSkill(skill, 'trade')}; + }); + + // TALENTS, TRAITS + data?.abilities?.forEach(ability => { + attributes = {...attributes, ...mapAbility(ability, 'abilities')}; + }); + data?.traits?.forEach(trait => { + attributes = {...attributes, ...mapTrait(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)}; + attributes = {...attributes, ...mapAdvance(data?.advancements?.advances)}; + 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)}; + 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'; + setAttrs(attributes, true); + }) + }) + + // Update to new version + let oldVariables = [ + 'gear_carry','gear_name','gear_crafts', 'gear_quantity','gear_avail','gear_weight','gear_pg#','gear_desc' + ] + on('sheet:opened', () => { + getAttrs(oldVariables, values => { + var attributes = {} + let gear = {carry: values['gear_carry'], name: values['gear_name'], craft: values['gear_crafts'], quantity: values['gear_quantity'], avail: values['gear_avail'], weight: values['gear_weight'], desc: values['gear_desc']} + if (!gear.name == '') attributes = {...attributes, ...mapGear(gear)} + console.table(gear) + console.log(attributes) + }) + }) + + // functions + const mapInfo = (data) => { + let attr = {}; + attr['character_name'] = data.name || ''; + attr['Homeworld'] = data.homeworld || ''; + attr['Background'] = data.background || ''; + attr['Role'] = data.role || ''; + attr['EliteAdvances'] = data.eliteAdvances || ''; + attr['Notes'] = data.note || ''; + attr['Player'] = data.player || ''; + attr['appearance'] = data.appearance || ''; + attr['Quirks'] = data.quirks || ''; + attr['Divination'] = data.divination || ''; + attr['Superstition'] = data.superstition || ''; + attr['size'] = data.size || ''; + attr['xp_total'] = data.xp || ''; + attr['agi_mov_mod'] = data.movementModifier || ''; + return attr; + }; + const mapStat = (statName, stat) => { + let attr = {}; + attr[`${statName}`] = stat.base || 0; + attr[`${statName}_advancement`] = stat.advancement || 0; + attr[`${statName}_mod`] = stat.modifier || 0; + attr[`${statName}_unnat`] = stat.unnatural || 0; + return attr; + }; + const mapWounds = (wounds) => { + let attr = {}; + attr['wounds'] = wounds.current || ''; + attr['wounds_max'] = wounds.max || ''; + attr['head'] = wounds.critical?.head || ''; + attr['body'] = wounds.critical?.body || ''; + attr['arm_left'] = wounds.critical?.arm_left || ''; + attr['arm_right'] = wounds.critical?.arm_right || ''; + attr['leg_left'] = wounds.critical?.leg_left || ''; + attr['leg_right'] = wounds.critical?.leg_right || ''; + return attr; + }; + const mapFate = (fate) => { + let attr = {}; + attr['fate'] = fate.current || ''; + attr['fate_max'] = fate.max || ''; + attr['settings_fate'] = fate.setting || ''; + return attr; + }; + const mapFatigue = (fatigue) => { + let attr = {}; + attr['fatigue'] = fatigue.current || ''; + attr['fatigue_mod'] = fatigue.modifier || ''; + return attr; + }; + const mapForceField = (forcefield) => { + let attr = {}; + attr['forcefield_name'] = forcefield.name || ''; + attr['forcefield_protection'] = forcefield.protection || ''; + attr['forcefield_overload'] = forcefield.overload || ''; + return attr; + }; + const mapCondition = (condition) => { + if (!condition) return ; + let attr = {}, + section = 'condition', + id = generateRowID(); + 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 = {} + attr[`mod2_${skill.name}`] = skill.modifier || 0; + attr[`mod3_${skill.name}`] = skill.level || 0; + return attr; + }; + const mapRepeatingSkill = (skill, section) => { + if (!skill) return ; + let attr = {}, + id = generateRowID(); + attr[`repeating_${section}_${id}_${section}_name`] = skill.name || ''; + attr[`repeating_${section}_${id}_${section}_r_mod2`] = skill.modifier || ''; + attr[`repeating_${section}_${id}_${section}_r_mod3`] = skill.level || ''; + return attr; + }; + const mapAbility = (ability) => { + 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 mapGear = (gear) => { + if (!gear) return ; + let attr = {}, + section = 'gear', + id = generateRowID(); + 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; + } + 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 = 'advancements'; + 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', + 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', + id = generateRowID(); + 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', + id = generateRowID(); + 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; + } \ No newline at end of file diff --git a/ShadowbaneInquisition/sheet.json b/ShadowbaneInquisition/sheet.json index 1c09f0172e..457f702919 100644 --- a/ShadowbaneInquisition/sheet.json +++ b/ShadowbaneInquisition/sheet.json @@ -52,5 +52,5 @@ "description": "Select the Weapon Special Effects setting to use on the character sheet." } ], - "legacy": true + "legacy": false }